]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
fbnic: Set napi irq value after calling netif_napi_add
authorBrett Creeley <brett.creeley@amd.com>
Thu, 12 Sep 2024 17:49:22 +0000 (10:49 -0700)
committerJakub Kicinski <kuba@kernel.org>
Sat, 14 Sep 2024 03:00:27 +0000 (20:00 -0700)
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.

Fixes: bc6107771bb4 ("eth: fbnic: Allocate a netdevice and napi vectors with queues")
Signed-off-by: Brett Creeley <brett.creeley@amd.com>
Reviewed-by: Joe Damato <jdamato@fastly.com>
Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Link: https://patch.msgid.link/20240912174922.10550-1-brett.creeley@amd.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/meta/fbnic/fbnic_txrx.c

index 0ed4c9fff5d807da95c282576393db18cc884039..72f88ae7815f442f4310e96aa20202f63e2c5505 100644 (file)
@@ -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;