diff options
author | Ameen Rahman <ameen.rahman@qlogic.com> | 2011-09-13 04:06:17 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-09-23 14:23:59 -0400 |
commit | 853d4bcaeb31905b85ba9f65f46cfaf9c41d1915 (patch) | |
tree | c763a87086b0c593d5472534fd9891c87b194b69 /drivers/net/ethernet/qlogic | |
parent | fb7a6d4e7da219f895d156cad00e2b6373e2494f (diff) |
qlcnic: Added error logging for firmware abort
Signed-off-by: Ameen Rahman <ameen.rahman@qlogic.com>
Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/qlogic')
-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; |