drivers/net/ethernet/meta/fbnic/fbnic_txrx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
The driver calls netif_napi_set_irq() and then calls netif_napi_add(),
which calls netif_napi_add_weight(). At the end of
netif_napi_add_weight() is a call to netif_napi_set_irq(napi, -1), which
clears the previously set napi->irq value. Fix this by calling
netif_napi_set_irq() after calling netif_napi_add().
This was found when reviewing another patch and I have no way to test
this, but the fix seemed relatively straight forward.
Cc: stable@vger.kernel.org
Fixes: bc6107771bb4 ("eth: fbnic: Allocate a netdevice and napi vectors with queues")
Signed-off-by: Brett Creeley <brett.creeley@amd.com>
---
drivers/net/ethernet/meta/fbnic/fbnic_txrx.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_txrx.c b/drivers/net/ethernet/meta/fbnic/fbnic_txrx.c
index 0ed4c9fff5d8..72f88ae7815f 100644
--- a/drivers/net/ethernet/meta/fbnic/fbnic_txrx.c
+++ b/drivers/net/ethernet/meta/fbnic/fbnic_txrx.c
@@ -1012,14 +1012,14 @@ static int fbnic_alloc_napi_vector(struct fbnic_dev *fbd, struct fbnic_net *fbn,
nv->fbd = fbd;
nv->v_idx = v_idx;
- /* Record IRQ to NAPI struct */
- netif_napi_set_irq(&nv->napi,
- pci_irq_vector(to_pci_dev(fbd->dev), nv->v_idx));
-
/* Tie napi to netdev */
list_add(&nv->napis, &fbn->napis);
netif_napi_add(fbn->netdev, &nv->napi, fbnic_poll);
+ /* Record IRQ to NAPI struct */
+ netif_napi_set_irq(&nv->napi,
+ pci_irq_vector(to_pci_dev(fbd->dev), nv->v_idx));
+
/* Tie nv back to PCIe dev */
nv->dev = fbd->dev;
--
2.17.1
On 12/09/2024 18:49, Brett Creeley wrote: > The driver calls netif_napi_set_irq() and then calls netif_napi_add(), > which calls netif_napi_add_weight(). At the end of > netif_napi_add_weight() is a call to netif_napi_set_irq(napi, -1), which > clears the previously set napi->irq value. Fix this by calling > netif_napi_set_irq() after calling netif_napi_add(). > > This was found when reviewing another patch and I have no way to test > this, but the fix seemed relatively straight forward. > Cc: stable@vger.kernel.org > Fixes: bc6107771bb4 ("eth: fbnic: Allocate a netdevice and napi vectors with queues") > Signed-off-by: Brett Creeley <brett.creeley@amd.com> I agree that irq vector is lost without this patch. Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
On Thu, Sep 12, 2024 at 10:49:22AM -0700, Brett Creeley wrote: > The driver calls netif_napi_set_irq() and then calls netif_napi_add(), > which calls netif_napi_add_weight(). At the end of > netif_napi_add_weight() is a call to netif_napi_set_irq(napi, -1), which > clears the previously set napi->irq value. Fix this by calling > netif_napi_set_irq() after calling netif_napi_add(). > > This was found when reviewing another patch and I have no way to test > this, but the fix seemed relatively straight forward. > > Cc: stable@vger.kernel.org > Fixes: bc6107771bb4 ("eth: fbnic: Allocate a netdevice and napi vectors with queues") > Signed-off-by: Brett Creeley <brett.creeley@amd.com> I agree with your analysis, but I'm not sure if this needs to be backported to other kernels because: - It is not a device that is easily available (currently), - The bug is relatively minor I'm not a maintainer so I'll let those folks decide if this should be a net-next thing to reduce load on the stable folks. In any case: Reviewed-by: Joe Damato <jdamato@fastly.com>
© 2016 - 2024 Red Hat, Inc.