]> www.infradead.org Git - nvme.git/commitdiff
bnxt_en: Wait for FLR to complete during probe
authorMichael Chan <michael.chan@broadcom.com>
Wed, 17 Jan 2024 23:45:11 +0000 (15:45 -0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 20 Jan 2024 05:15:12 +0000 (21:15 -0800)
The first message to firmware may fail if the device is undergoing FLR.
The driver has some recovery logic for this failure scenario but we must
wait 100 msec for FLR to complete before proceeding.  Otherwise the
recovery will always fail.

Fixes: ba02629ff6cb ("bnxt_en: log firmware status on firmware init failure")
Reviewed-by: Damodharam Ammepalli <damodharam.ammepalli@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Link: https://lore.kernel.org/r/20240117234515.226944-2-michael.chan@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index 0aacd3c6ed5c0bbf2e02f1ddddc5dc292ae84a07..0866aba35d9b38b3bc5f6f9a51fe90698561d0a0 100644 (file)
@@ -13232,6 +13232,11 @@ static int bnxt_fw_init_one_p1(struct bnxt *bp)
 
        bp->fw_cap = 0;
        rc = bnxt_hwrm_ver_get(bp);
+       /* FW may be unresponsive after FLR. FLR must complete within 100 msec
+        * so wait before continuing with recovery.
+        */
+       if (rc)
+               msleep(100);
        bnxt_try_map_fw_health_reg(bp);
        if (rc) {
                rc = bnxt_try_recover_fw(bp);