Hi Joe,
On 2025-03-05 19:09, Joe Damato wrote:
In commit b65969856d4f ("igc: Link queues to NAPI instances"), the XSK queues were incorrectly unmapped from their NAPI instances. After discussion on the mailing list and the introduction of a test to codify the expected behavior, we can see that the unmapping causes the check_xsk test to fail:
NETIF=enp86s0 ./tools/testing/selftests/drivers/net/queues.py
[...] # Check| ksft_eq(q.get('xsk', None), {}, # Check failed None != {} xsk attr on queue we configured not ok 4 queues.check_xsk
After this commit, the test passes:
ok 4 queues.check_xsk
Note that the test itself is only in net-next, so I tested this change by applying it to my local net-next tree, booting, and running the test.
Cc: stable@vger.kernel.org Fixes: b65969856d4f ("igc: Link queues to NAPI instances") Signed-off-by: Joe Damato jdamato@fastly.com
drivers/net/ethernet/intel/igc/igc_xdp.c | 2 -- 1 file changed, 2 deletions(-)
diff --git a/drivers/net/ethernet/intel/igc/igc_xdp.c b/drivers/net/ethernet/intel/igc/igc_xdp.c index 13bbd3346e01..869815f48ac1 100644 --- a/drivers/net/ethernet/intel/igc/igc_xdp.c +++ b/drivers/net/ethernet/intel/igc/igc_xdp.c @@ -86,7 +86,6 @@ static int igc_xdp_enable_pool(struct igc_adapter *adapter, napi_disable(napi); }
- igc_set_queue_napi(adapter, queue_id, NULL); set_bit(IGC_RING_FLAG_AF_XDP_ZC, &rx_ring->flags); set_bit(IGC_RING_FLAG_AF_XDP_ZC, &tx_ring->flags);
@@ -136,7 +135,6 @@ static int igc_xdp_disable_pool(struct igc_adapter *adapter, u16 queue_id) xsk_pool_dma_unmap(pool, IGC_RX_DMA_ATTR); clear_bit(IGC_RING_FLAG_AF_XDP_ZC, &rx_ring->flags); clear_bit(IGC_RING_FLAG_AF_XDP_ZC, &tx_ring->flags);
igc_set_queue_napi(adapter, queue_id, napi);
if (needs_reset) { napi_enable(napi);
That doesn't look correct to me. You removed both invocations of igc_set_queue_napi() from igc_xdp.c. Where is the napi mapping now done (in case XDP is enabled)?
To me it seems flipped. igc_xdp_enable_pool() should do the mapping (previously did the unmapping) and igc_xdp_disable_pool() should do the unmapping (previously did the mapping). No?
Btw: I got this patch via stable. It doesn't make sense to send it to stable where this patch does not apply.
base-commit: 3c9231ea6497dfc50ac0ef69fff484da27d0df66