> -----Original Message----- > From: dev <dev-boun...@dpdk.org> On Behalf Of Prashant Upadhyaya > Sent: Sunday, May 10, 2020 22:06 > To: dev@dpdk.org > Subject: [dpdk-dev] Regarding rte_eth_rx_burst > > Hi, > > I recently started using X722 NIC which uses i40 PMD of DPDK. > I am on DPDK 20.02. > I am seeing that when I call the rte_eth_rx_burst with last argument > as 1 (polling for 1 mbuf), then I am not receiving data via repeated > calls.
I saw this kind of issue many times. ;-) This is *burst* for vector mode: drivers/net/i40e/i40e_rxtx_vec_sse.c static inline uint16_t _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts, uint8_t *split_packet) { .... /* nb_pkts shall be less equal than RTE_I40E_MAX_RX_BURST */ nb_pkts = RTE_MIN(nb_pkts, RTE_I40E_MAX_RX_BURST); /* nb_pkts has to be floor-aligned to RTE_I40E_DESCS_PER_LOOP */ nb_pkts = RTE_ALIGN_FLOOR(nb_pkts, RTE_I40E_DESCS_PER_LOOP); <--- nb_pkts = 0, if you passed 1. > When I go for calls to rte_eth_rx_burst with last argument as 32, the > function does return the mbuf's as received data. > > Is this expected ? Or this is a bug in the i40 driver handling this NIC ? > > The polls to rte_eth_rx_burst with last argument as 1 works well for > the ixgbe PMD for sure since I have been using X520 successfully with > last argument as 1. > > Regards > -Prashant