Wei, Jeff, For the ixgbe driver using vector functions, i.e. ixgbe_recv_pkts_vec(), calling rte_eth_rx_burst() with nb_pkts > RTE_IXGBE_MAX_RX_BURST only returns RTE_IXGBE_MAX_RX_BURST packets. E.g. calling rte_eth_rx_burst() with nb_pkts=64 only returns 32 packets.
The API description of rte_eth_rx_burst() says: <quote> The rte_eth_rx_burst() function returns the number of packets actually retrieved, which is the number of rte_mbuf data structures effectively supplied into the rx_pkts array. A return value equal to nb_pkts indicates that the RX queue contained at least rx_pkts packets, and this is likely to signify that other received packets remain in the input queue. Applications implementing a "retrieve as much received packets as possible" policy can check this specific case and keep invoking the rte_eth_rx_burst() function until a value less than nb_pkts is returned. </quote> The driver implementation does not conform to the documented behavior for "retrieve as much received packets as possible" applications. Med venlig hilsen / kind regards - Morten Brørup