From c8848b2ca6e6620b56afafba7dd4367e98b049c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= Date: Fri, 30 Oct 2026 15:14:50 +0100 Subject: [PATCH] eth: fbnic: Report the logical RX queue to XDP MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fbnic reports queue 0 to XDP on all RX queues. The XDP RX queue is registered with the header buffer queue index, which is always 0, instead of the completion queue index, which is the netdev queue id. Any XDP program that reads rx_queue_index gets 0 on every queue, so a program that uses the queue id uses the wrong queue. AF_XDP has the same problem: XSKMAP finds the wrong socket, and redirect to a socket on another queue fails. Triggered on fbnic hardware (50G, firmware 25.08.05-004) with AF_XDP zero-copy: sockets on queues other than 0 got no packets. With this fix, a socket on queue 43, and sockets on four queues at once, get their packets. On the QEMU model with two queues, a kprobe shows 0 and 0 before the fix, and 0 and 1 after it. Fixes: 894d4a4ea6cb ("eth: fbnic: move xdp_rxq_info_reg() to resource alloc") Signed-off-by: Björn Töpel Reviewed-by: Simon Horman Link: https://patch.msgid.link/20261030141452.1173282-1-bjorn@kernel.org Signed-off-by: Paolo Abeni --- drivers/net/ethernet/meta/fbnic/fbnic_txrx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_txrx.c b/drivers/net/ethernet/meta/fbnic/fbnic_txrx.c index c572a0062e77..0bcee152d47c 100644 --- a/drivers/net/ethernet/meta/fbnic/fbnic_txrx.c +++ b/drivers/net/ethernet/meta/fbnic/fbnic_txrx.c @@ -2072,7 +2072,7 @@ static int fbnic_alloc_rx_qt_resources(struct fbnic_net *fbn, fbnic_bdq_set_page_size(&qt->sub1, rx_page_size); - err = xdp_rxq_info_reg(&qt->xdp_rxq, fbn->netdev, qt->sub0.q_idx, + err = xdp_rxq_info_reg(&qt->xdp_rxq, fbn->netdev, qt->cmpl.q_idx, nv->napi.napi_id); if (err) goto free_page_pools;