]> www.infradead.org Git - users/dwmw2/linux.git/commit
ice: put Rx buffers after being done with current frame
authorMaciej Fijalkowski <maciej.fijalkowski@intel.com>
Thu, 23 Jan 2025 15:01:16 +0000 (16:01 +0100)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Fri, 31 Jan 2025 17:51:47 +0000 (09:51 -0800)
commit743bbd93cf29f653fae0e1416a31f03231689911
tree8322a05a64e152ece5ca5afa9b6a1c2ca04dd310
parentc2933b2befe25309f4c5cfbea0ca80909735fd76
ice: put Rx buffers after being done with current frame

Introduce a new helper ice_put_rx_mbuf() that will go through gathered
frags from current frame and will call ice_put_rx_buf() on them. Current
logic that was supposed to simplify and optimize the driver where we go
through a batch of all buffers processed in current NAPI instance turned
out to be broken for jumbo frames and very heavy load that was coming
from both multi-thread iperf and nginx/wrk pair between server and
client. The delay introduced by approach that we are dropping is simply
too big and we need to take the decision regarding page
recycling/releasing as quick as we can.

While at it, address an error path of ice_add_xdp_frag() - we were
missing buffer putting from day 1 there.

As a nice side effect we get rid of annoying and repetitive three-liner:

xdp->data = NULL;
rx_ring->first_desc = ntc;
rx_ring->nr_frags = 0;

by embedding it within introduced routine.

Fixes: 1dc1a7e7f410 ("ice: Centrallize Rx buffer recycling")
Reported-and-tested-by: Xu Du <xudu@redhat.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Co-developed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ice/ice_txrx.c