Intel i40e rx burst API non-conformance?

Morten Brørup mb at smartsharesystems.com
Wed Jul 9 16:59:51 CEST 2025


Looking at the i40e driver source code, I think it doesn't conform to the API when requesting small bursts.

Let's say the hardware has received 31 packets.
rte_eth_rx_burst(...,16) will return 16 packets and leave 15 in the driver's staging buffer (which has capacity for 32 packets).

Time passes, and more packets are received.

Now, rte_eth_rx_burst(...,16) will only return the 15 packets from the staging buffer, and not proceed to check for more [1].
It thereby (according to my interpretation of the API description) informs the application that no more packets are ready to be received, which is incorrect.

[1]: https://elixir.bootlin.com/dpdk/v25.07-rc2/source/drivers/net/intel/i40e/i40e_rxtx.c#L640

PS: I stumbled across this while reviewing how the very old 32 packet limit bugs (where it truncated large rx/tx requests to 32 packets) had been fixed.



More information about the dev mailing list