Hi Zoltan, > -----Original Message----- > From: Zoltan Kiss [mailto:zoltan.kiss at linaro.org] > Sent: Monday, July 27, 2015 12:38 PM > To: Ananyev, Konstantin; Richardson, Bruce; dev at dpdk.org > Subject: Re: [dpdk-dev] ixgbe vPMD RX functions and buffer number minimum > requirement > > 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.
Yes, that seems pretty trivial modification. Don't know any good reason why it wasn't done that way. > 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. I think, if the performance wouldn't be affected, that will be really useful change. So it is definitely worth to try. Probably even _recv_raw_pkts_vec() for first nb_pkts & ~(RTE_IXGBE_VPMD_RX_BURST - 1), and then sort of scalar analog for the remainder. Konstantin > > 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