aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
diff options
context:
space:
mode:
authorSritej Velaga <sritej.velaga@qlogic.com>2012-02-03 06:35:13 -0500
committerDavid S. Miller <davem@davemloft.net>2012-02-04 15:59:29 -0500
commit5471aed0259298e4e258b8a9e403ebdf88ebcd56 (patch)
treed7b7559d82c60373e95bcd8f685f87b0a111ecd9 /drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
parentdb608c129b5258dbdff9c221857a95bc2dc1128e (diff)
netxen_nic: Error logging on firmware hang
Log states of essential registers on firmware hang detection. Signed-off-by: Sritej Velaga <sritej.velaga@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c')
-rw-r--r--drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
index f67655f3462c..f517c16bfa3f 100644
--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
+++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
@@ -2596,6 +2596,7 @@ static int
2596netxen_check_health(struct netxen_adapter *adapter) 2596netxen_check_health(struct netxen_adapter *adapter)
2597{ 2597{
2598 u32 state, heartbit; 2598 u32 state, heartbit;
2599 u32 peg_status;
2599 struct net_device *netdev = adapter->netdev; 2600 struct net_device *netdev = adapter->netdev;
2600 2601
2601 state = NXRD32(adapter, NX_CRB_DEV_STATE); 2602 state = NXRD32(adapter, NX_CRB_DEV_STATE);
@@ -2642,8 +2643,24 @@ netxen_check_health(struct netxen_adapter *adapter)
2642 2643
2643 clear_bit(__NX_FW_ATTACHED, &adapter->state); 2644 clear_bit(__NX_FW_ATTACHED, &adapter->state);
2644 2645
2645 dev_info(&netdev->dev, "firmware hang detected\n"); 2646 dev_err(&netdev->dev, "firmware hang detected\n");
2646 2647 peg_status = NXRD32(adapter, NETXEN_PEG_HALT_STATUS1);
2648 dev_err(&adapter->pdev->dev, "Dumping hw/fw registers\n"
2649 "PEG_HALT_STATUS1: 0x%x, PEG_HALT_STATUS2: 0x%x,\n"
2650 "PEG_NET_0_PC: 0x%x, PEG_NET_1_PC: 0x%x,\n"
2651 "PEG_NET_2_PC: 0x%x, PEG_NET_3_PC: 0x%x,\n"
2652 "PEG_NET_4_PC: 0x%x\n",
2653 peg_status,
2654 NXRD32(adapter, NETXEN_PEG_HALT_STATUS2),
2655 NXRD32(adapter, NETXEN_CRB_PEG_NET_0 + 0x3c),
2656 NXRD32(adapter, NETXEN_CRB_PEG_NET_1 + 0x3c),
2657 NXRD32(adapter, NETXEN_CRB_PEG_NET_2 + 0x3c),
2658 NXRD32(adapter, NETXEN_CRB_PEG_NET_3 + 0x3c),
2659 NXRD32(adapter, NETXEN_CRB_PEG_NET_4 + 0x3c));
2660 if (NX_FWERROR_PEGSTAT1(peg_status) == 0x67)
2661 dev_err(&adapter->pdev->dev,
2662 "Firmware aborted with error code 0x00006700. "
2663 "Device is being reset.\n");
2647detach: 2664detach:
2648 if ((auto_fw_reset == AUTO_FW_RESET_ENABLED) && 2665 if ((auto_fw_reset == AUTO_FW_RESET_ENABLED) &&
2649 !test_and_set_bit(__NX_RESETTING, &adapter->state)) 2666 !test_and_set_bit(__NX_RESETTING, &adapter->state))