From: Maciej Fijalkowski <maciej.fijalkowski@xxxxxxxxx> Date: Tue, 5 Apr 2022 13:06:24 +0200 > Correlate -ENOBUFS that was returned from xdp_do_redirect() with a XSK > Rx queue being full. In such case, terminate the softirq processing and > let the user space to consume descriptors from XSK Rx queue so that > there is room that driver can use later on. > > Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@xxxxxxxxx> > --- > drivers/net/ethernet/intel/ice/ice_txrx.h | 1 + > drivers/net/ethernet/intel/ice/ice_xsk.c | 25 +++++++++++++++-------- > 2 files changed, 17 insertions(+), 9 deletions(-) --- 8< --- > @@ -551,15 +552,15 @@ ice_run_xdp_zc(struct ice_rx_ring *rx_ring, struct xdp_buff *xdp, > if (result == ICE_XDP_CONSUMED) > goto out_failure; > break; > + case XDP_DROP: > + result = ICE_XDP_CONSUMED; > + break; > default: > bpf_warn_invalid_xdp_action(rx_ring->netdev, xdp_prog, act); > fallthrough; > case XDP_ABORTED: > out_failure: > trace_xdp_exception(rx_ring->netdev, xdp_prog, act); > - fallthrough; > - case XDP_DROP: > - result = ICE_XDP_CONSUMED; > break; So the result for %XDP_ABORTED will be %ICE_XDP_PASS now? Or I'm missing something :s > } > > @@ -628,10 +629,16 @@ int ice_clean_rx_irq_zc(struct ice_rx_ring *rx_ring, int budget) --- 8< --- > -- > 2.33.1 Thanks, Al