Thread (4 messages) 4 messages, 3 authors, 2015-08-29

Re: rte_eth_rx_burst only returns up to 32 packets

From: Masood Moshref Javadi <hidden>
Date: 2015-08-29 13:55:20

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)" [off-list ref] 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
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help