From: Maciej Fijalkowski Date: Tue, 31 Jan 2023 20:45:01 +0000 (+0100) Subject: ice: Do not call ice_finalize_xdp_rx() unnecessarily X-Git-Tag: v6.6.7~3490^2~92^2~38^2~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9070fe3da0b126044c3cffd169d5fb2565365a0e;p=platform%2Fkernel%2Flinux-starfive.git ice: Do not call ice_finalize_xdp_rx() unnecessarily Currently ice_finalize_xdp_rx() is called only when xdp_prog is present on VSI, which is a good thing. However, this optimization can be enhanced and check only if any of the XDP_TX/XDP_REDIRECT took place in current Rx processing. Non-zero value of @xdp_xmit indicates that xdp_prog is present on VSI. This way XDP_DROP-based workloads will not suffer from unnecessary calls to external function. Signed-off-by: Maciej Fijalkowski Signed-off-by: Daniel Borkmann Reviewed-by: Alexander Lobakin Link: https://lore.kernel.org/bpf/20230131204506.219292-9-maciej.fijalkowski@intel.com --- diff --git a/drivers/net/ethernet/intel/ice/ice_txrx.c b/drivers/net/ethernet/intel/ice/ice_txrx.c index dd4ed93..b406e8c 100644 --- a/drivers/net/ethernet/intel/ice/ice_txrx.c +++ b/drivers/net/ethernet/intel/ice/ice_txrx.c @@ -1252,7 +1252,7 @@ construct_skb: /* return up to cleaned_count buffers to hardware */ failure = ice_alloc_rx_bufs(rx_ring, cleaned_count); - if (xdp_prog) + if (xdp_xmit) ice_finalize_xdp_rx(xdp_ring, xdp_xmit); rx_ring->skb = skb;