Skip to content

Commit

Permalink
ice: Fix ice_xdp_xmit() when XDP TX queue number is not sufficient
Browse files Browse the repository at this point in the history
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.

Fixes: 22bf877 ("ice: introduce XDP_TX fallback path")
Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
Reviewed-by: Alexander Lobakin <alexandr.lobakin@intel.com>
Link: https://lore.kernel.org/r/20220919134346.25030-1-larysa.zaremba@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  • Loading branch information
Larysa Zaremba authored and Jakub Kicinski committed Sep 22, 2022
1 parent f64780e commit 114f398
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion drivers/net/ethernet/intel/ice/ice_txrx.c
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand All @@ -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];
}

Expand Down

0 comments on commit 114f398

Please sign in to comment.