Re: [PATCH bpf-next 03/10] ice: xsk: terminate NAPI when XSK Rx queue gets full

Alexander Lobakin
2022-04-05T14:24:56Z

From: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
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@intel.com>
> ---
> 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