diff options
-rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c index 501e16b9c2ab..445956e2d045 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | |||
@@ -3087,7 +3087,7 @@ static int | |||
3087 | qlcnic_check_health(struct qlcnic_adapter *adapter) | 3087 | qlcnic_check_health(struct qlcnic_adapter *adapter) |
3088 | { | 3088 | { |
3089 | u32 state = 0, heartbeat; | 3089 | u32 state = 0, heartbeat; |
3090 | struct net_device *netdev = adapter->netdev; | 3090 | u32 peg_status; |
3091 | 3091 | ||
3092 | if (qlcnic_check_temp(adapter)) | 3092 | if (qlcnic_check_temp(adapter)) |
3093 | goto detach; | 3093 | goto detach; |
@@ -3127,8 +3127,8 @@ qlcnic_check_health(struct qlcnic_adapter *adapter) | |||
3127 | if (auto_fw_reset) | 3127 | if (auto_fw_reset) |
3128 | clear_bit(__QLCNIC_FW_ATTACHED, &adapter->state); | 3128 | clear_bit(__QLCNIC_FW_ATTACHED, &adapter->state); |
3129 | 3129 | ||
3130 | dev_info(&netdev->dev, "firmware hang detected\n"); | 3130 | dev_err(&adapter->pdev->dev, "firmware hang detected\n"); |
3131 | dev_info(&adapter->pdev->dev, "Dumping hw/fw registers\n" | 3131 | dev_err(&adapter->pdev->dev, "Dumping hw/fw registers\n" |
3132 | "PEG_HALT_STATUS1: 0x%x, PEG_HALT_STATUS2: 0x%x,\n" | 3132 | "PEG_HALT_STATUS1: 0x%x, PEG_HALT_STATUS2: 0x%x,\n" |
3133 | "PEG_NET_0_PC: 0x%x, PEG_NET_1_PC: 0x%x,\n" | 3133 | "PEG_NET_0_PC: 0x%x, PEG_NET_1_PC: 0x%x,\n" |
3134 | "PEG_NET_2_PC: 0x%x, PEG_NET_3_PC: 0x%x,\n" | 3134 | "PEG_NET_2_PC: 0x%x, PEG_NET_3_PC: 0x%x,\n" |
@@ -3140,6 +3140,11 @@ qlcnic_check_health(struct qlcnic_adapter *adapter) | |||
3140 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_2 + 0x3c), | 3140 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_2 + 0x3c), |
3141 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_3 + 0x3c), | 3141 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_3 + 0x3c), |
3142 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_4 + 0x3c)); | 3142 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_4 + 0x3c)); |
3143 | peg_status = QLCRD32(adapter, QLCNIC_PEG_HALT_STATUS1); | ||
3144 | if (LSW(MSB(peg_status)) == 0x67) | ||
3145 | dev_err(&adapter->pdev->dev, | ||
3146 | "Firmware aborted with error code 0x00006700. " | ||
3147 | "Device is being reset.\n"); | ||
3143 | detach: | 3148 | detach: |
3144 | adapter->dev_state = (state == QLCNIC_DEV_NEED_QUISCENT) ? state : | 3149 | adapter->dev_state = (state == QLCNIC_DEV_NEED_QUISCENT) ? state : |
3145 | QLCNIC_DEV_NEED_RESET; | 3150 | QLCNIC_DEV_NEED_RESET; |