Thanks a lot. So I assume the only way to see if there are more than 256 packets in the queue is to count them using rte_eth_rx_count On Aug 28, 2015 8:32 PM, "Gaohaifeng (A)" <gaohaifeng.gao at huawei.com> wrote:
> Please see _rece_raw_pkts_vec function. > > Here is part of its comments may explain this question > /* > * vPMD receive routine, now only accept (nb_pkts == > RTE_IXGBE_VPMD_RX_BURST) > * in one loop > * > * Notice: > * - nb_pkts < RTE_IXGBE_VPMD_RX_BURST, just return no packet > * - nb_pkts > RTE_IXGBE_VPMD_RX_BURST, only scan RTE_IXGBE_VPMD_RX_BURST > * numbers of DD bit > */ > > > > Hi, > > The documentation of this method says: Applications implementing a > "retrieve as much received packets as possible" policy can check this > specific case and keep invoking the rte_eth_rx_burst() < > http://dpdk.org/doc/api/rte__ethdev_8h.html#aee7daffe261e67355a78b106627c4c45 > >function > until a value less than nb_pkts is returned. > > But the function returns at most 32 packets regardless of the burst size > parameter (nb_pkts). For example when I set the burst size to 256, it only > returns 32 packets even though the queue has more packets. This means that > I cannot rely on the returned value to know if there are > > 256 packets in the queue or not. > > Where this number 32 comes from? Is it because "PMD: > ixgbe_set_rx_function(): Vector rx enabled, please make sure RX burst size > no less than 32." ? > > I use DPDK 2.0.0 and Intel 82599 10 G NIC. > > Thanks >