[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250320045522.57892-1-sankararaman.jayaraman@broadcom.com>
Date: Thu, 20 Mar 2025 10:25:22 +0530
From: Sankararaman Jayaraman <sankararaman.jayaraman@...adcom.com>
To: netdev@...r.kernel.org
Cc: sankararaman.jayaraman@...adcom.com,
ronak.doshi@...adcom.com,
bcm-kernel-feedback-list@...adcom.com,
andrew+netdev@...n.ch,
davem@...emloft.net,
u9012063@...il.com,
kuba@...nel.org,
edumazet@...gle.com,
pabeni@...hat.com,
ast@...nel.org,
alexandr.lobakin@...el.com,
alexanderduyck@...com,
bpf@...r.kernel.org,
daniel@...earbox.net,
hawk@...nel.org,
john.fastabend@...il.com
Subject: [PATCH net] vmxnet3: unregister xdp rxq info in the reset path
vmxnet3 does not unregister xdp rxq info in the
vmxnet3_reset_work() code path as vmxnet3_rq_destroy()
is not invoked in this code path. So, we get below message with a
backtrace.
Missing unregister, handled but fix driver
WARNING: CPU:48 PID: 500 at net/core/xdp.c:182
__xdp_rxq_info_reg+0x93/0xf0
This patch fixes the problem by moving the unregister
code of XDP from vmxnet3_rq_destroy() to vmxnet3_rq_cleanup().
Fixes: 54f00cce1178 ("vmxnet3: Add XDP support.")
Signed-off-by: Sankararaman Jayaraman <sankararaman.jayaraman@...adcom.com>
Signed-off-by: Ronak Doshi <ronak.doshi@...adcom.com>
---
drivers/net/vmxnet3/vmxnet3_drv.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
index 6793fa09f9d1..3df6aabc7e33 100644
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
@@ -2033,6 +2033,11 @@ vmxnet3_rq_cleanup(struct vmxnet3_rx_queue *rq,
rq->comp_ring.gen = VMXNET3_INIT_GEN;
rq->comp_ring.next2proc = 0;
+
+ if (xdp_rxq_info_is_reg(&rq->xdp_rxq))
+ xdp_rxq_info_unreg(&rq->xdp_rxq);
+ page_pool_destroy(rq->page_pool);
+ rq->page_pool = NULL;
}
@@ -2073,11 +2078,6 @@ static void vmxnet3_rq_destroy(struct vmxnet3_rx_queue *rq,
}
}
- if (xdp_rxq_info_is_reg(&rq->xdp_rxq))
- xdp_rxq_info_unreg(&rq->xdp_rxq);
- page_pool_destroy(rq->page_pool);
- rq->page_pool = NULL;
-
if (rq->data_ring.base) {
dma_free_coherent(&adapter->pdev->dev,
rq->rx_ring[0].size * rq->data_ring.desc_size,
--
2.25.1
Powered by blists - more mailing lists