Thread (7 messages) 7 messages, 3 authors, 2015-07-29

Re: ixgbe vPMD RX functions and buffer number minimum requirement

flat view

From: Ananyev, Konstantin <hidden>
Date: 2015-07-28 00:10:07

Hi Zoltan,
-----Original Message-----
From: Zoltan Kiss [mailto:zoltan.kiss@linaro.org]
Sent: Monday, July 27, 2015 12:38 PM
To: Ananyev, Konstantin; Richardson, Bruce; dev@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:
quoted
Hi Zoltan,
quoted
-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Zoltan Kiss
Sent: Friday, July 24, 2015 4:00 PM
To: Richardson, Bruce; dev@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
quoted
Regards,

Zoltan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help