bnxt_en: Log FW health status info, if reset is aborted.
authorMichael Chan <michael.chan@broadcom.com>
Sun, 4 Oct 2020 19:22:55 +0000 (15:22 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sun, 4 Oct 2020 21:41:05 +0000 (14:41 -0700)
If firmware does not come out of reset, log FW health status info
to provide more information on firmware status.

Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index afa425375cd0d176d51fb07c2b3e26a7ca31236e..27fbe0cef2a98d6a03613815f35d6574dc88871d 100644 (file)
@@ -11365,7 +11365,7 @@ static void bnxt_fw_reset_task(struct work_struct *work)
                        if (time_after(jiffies, bp->fw_reset_timestamp +
                                       (bp->fw_reset_max_dsecs * HZ / 10))) {
                                netdev_err(bp->dev, "Firmware reset aborted\n");
-                               goto fw_reset_abort;
+                               goto fw_reset_abort_status;
                        }
                        bnxt_queue_fw_reset_work(bp, HZ / 5);
                        return;
@@ -11399,6 +11399,13 @@ static void bnxt_fw_reset_task(struct work_struct *work)
        }
        return;
 
+fw_reset_abort_status:
+       if (bp->fw_health->status_reliable ||
+           (bp->fw_cap & BNXT_FW_CAP_ERROR_RECOVERY)) {
+               u32 sts = bnxt_fw_health_readl(bp, BNXT_FW_HEALTH_REG);
+
+               netdev_err(bp->dev, "fw_health_status 0x%x\n", sts);
+       }
 fw_reset_abort:
        clear_bit(BNXT_STATE_IN_FW_RESET, &bp->state);
        if (bp->fw_reset_state != BNXT_FW_RESET_STATE_POLL_VF)