Hi Konstantin, Thanks! Another question I would have: why does _recv_raw_pkts_vec() insist on (nb_pkts > RTE_IXGBE_VPMD_RX_BURST)? Looking at the code it should be able to return packets when nb_pkts >= RTE_IXGBE_DESCS_PER_LOOP. The split_flags check in ixgbe_recv_scattered_pkts_vec() would be a bit more complicated, and therefore maybe would have a tiny performance overhead as well, but I don't it would be anything serious.
Regards, Zoltan On 24/07/15 17:43, Ananyev, Konstantin wrote: > Hi Zoltan, > >> -----Original Message----- >> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Zoltan Kiss >> Sent: Friday, July 24, 2015 4:00 PM >> To: Richardson, Bruce; dev at dpdk.org >> Subject: [dpdk-dev] ixgbe vPMD RX functions and buffer number minimum >> requirement >> >> Hi, >> >> I was thinking how to handle the situation when you call >> rte_eth_rx_burst with less than RTE_IXGBE_VPMD_RX_BURST buffers. In >> ODP-DPDK unfortunately we can't force this requirement onto the calling >> application. >> One idea I had to check in ixgbe_recv_pkts_vec() if nb_pkts < >> RTE_IXGBE_VPMD_RX_BURST, and call ixgbe_recv_pkts_bulk_alloc in that >> case. Accordingly, in ixgbe_recv_scattered_pkts_vec() we could call >> ixgbe_recv_scattered_pkts() in this case. A branch predictor can easily >> eliminate the performance penalty of this, and applications can use >> whatever burst size feasible for them. >> The obvious problem could be whether you can mix the receive functions >> this way. I have a feeling it wouldn't fly, but I wanted to ask first >> before spending time investigate this option further. > > No, it is not possible to mix different RX functions, they setup/use > ixgbe_rx_queue > fields in a different manner. > Konstantin > >> >> Regards, >> >> Zoltan