Message ID | 20220919134346.25030-1-larysa.zaremba@intel.com |
---|---|
State | Awaiting Upstream |
Headers | show |
Series | [net] ice: Fix ice_xdp_xmit() when XDP TX queue number is not sufficient | expand |
Hello: This patch was applied to netdev/net.git (master) by Jakub Kicinski <kuba@kernel.org>: On Mon, 19 Sep 2022 15:43:46 +0200 you wrote: > The original patch added the static branch to handle the situation, > when assigning an XDP TX queue to every CPU is not possible, > so they have to be shared. > > However, in the XDP transmit handler ice_xdp_xmit(), an error was > returned in such cases even before static condition was checked, > thus making queue sharing still impossible. > > [...] Here is the summary with links: - [net] ice: Fix ice_xdp_xmit() when XDP TX queue number is not sufficient https://git.kernel.org/netdev/net/c/114f398d48c5 You are awesome, thank you!
diff --git a/drivers/net/ethernet/intel/ice/ice_txrx.c b/drivers/net/ethernet/intel/ice/ice_txrx.c index 42b42f4b21ef..a5a0c9706b5a 100644 --- a/drivers/net/ethernet/intel/ice/ice_txrx.c +++ b/drivers/net/ethernet/intel/ice/ice_txrx.c @@ -610,7 +610,7 @@ ice_xdp_xmit(struct net_device *dev, int n, struct xdp_frame **frames, if (test_bit(ICE_VSI_DOWN, vsi->state)) return -ENETDOWN; - if (!ice_is_xdp_ena_vsi(vsi) || queue_index >= vsi->num_xdp_txq) + if (!ice_is_xdp_ena_vsi(vsi)) return -ENXIO; if (unlikely(flags & ~XDP_XMIT_FLAGS_MASK)) @@ -621,6 +621,9 @@ ice_xdp_xmit(struct net_device *dev, int n, struct xdp_frame **frames, xdp_ring = vsi->xdp_rings[queue_index]; spin_lock(&xdp_ring->tx_lock); } else { + /* Generally, should not happen */ + if (unlikely(queue_index >= vsi->num_xdp_txq)) + return -ENXIO; xdp_ring = vsi->xdp_rings[queue_index]; }