]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
bnxt_en: Reserve rings after PCIe AER recovery if NIC interface is down
authorSaravanan Vajravel <saravanan.vajravel@broadcom.com>
Fri, 22 Nov 2024 22:45:41 +0000 (14:45 -0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 26 Nov 2024 14:29:31 +0000 (15:29 +0100)
After successful PCIe AER recovery, FW will reset all resource
reservations.  If it is IF_UP, the driver will call bnxt_open() and
all resources will be reserved again.  It it is IF_DOWN, we should
call bnxt_reserve_rings() so that we can reserve resources including
RoCE resources to allow RoCE to resume after AER.  Without this
patch, RoCE fails to resume in this IF_DOWN scenario.

Later, if it becomes IF_UP, bnxt_open() will see that resources have
been reserved and will not reserve again.

Fixes: fb1e6e562b37 ("bnxt_en: Fix AER recovery.")
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Reviewed-by: Kashyap Desai <kashyap.desai@broadcom.com>
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index 5f7bdafcf05def5c57cb77077adef2cbeff733b3..3eeaceb3ff383d6bbd4e194c6b4f5aac63a95487 100644 (file)
@@ -16478,8 +16478,12 @@ static void bnxt_io_resume(struct pci_dev *pdev)
        rtnl_lock();
 
        err = bnxt_hwrm_func_qcaps(bp);
-       if (!err && netif_running(netdev))
-               err = bnxt_open(netdev);
+       if (!err) {
+               if (netif_running(netdev))
+                       err = bnxt_open(netdev);
+               else
+                       err = bnxt_reserve_rings(bp, true);
+       }
 
        if (!err)
                netif_device_attach(netdev);