diff options
author | Amit Kumar Salecha <amit.salecha@qlogic.com> | 2009-12-08 15:40:55 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-12-23 17:13:26 -0500 |
commit | 6a808c6c02fb9f0ffa24ac7cca6cfc323cf98b21 (patch) | |
tree | 8a9a6b881912a55568cc3b6839ee9a42449d0a23 /drivers/net/netxen | |
parent | bc86fcbac0a86a93ee65cc31769c4e83e6ff2295 (diff) |
netxen: fix tx timeout recovery
o In case of tx timeout, firmare may be healthy, but some pci-func may
see no response from it. Force firmware reset, if some pci-func
explicitly requests so.
Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/netxen')
-rw-r--r-- | drivers/net/netxen/netxen_nic_init.c | 3 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_main.c | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c index 02f8d4b4db63..ba62411f3532 100644 --- a/drivers/net/netxen/netxen_nic_init.c +++ b/drivers/net/netxen/netxen_nic_init.c | |||
@@ -778,6 +778,9 @@ netxen_need_fw_reset(struct netxen_adapter *adapter) | |||
778 | if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) | 778 | if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) |
779 | return 1; | 779 | return 1; |
780 | 780 | ||
781 | if (adapter->need_fw_reset) | ||
782 | return 1; | ||
783 | |||
781 | /* last attempt had failed */ | 784 | /* last attempt had failed */ |
782 | if (NXRD32(adapter, CRB_CMDPEG_STATE) == PHAN_INITIALIZE_FAILED) | 785 | if (NXRD32(adapter, CRB_CMDPEG_STATE) == PHAN_INITIALIZE_FAILED) |
783 | return 1; | 786 | return 1; |
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c index 41cb0af4b556..1aca6260909a 100644 --- a/drivers/net/netxen/netxen_nic_main.c +++ b/drivers/net/netxen/netxen_nic_main.c | |||
@@ -2284,8 +2284,10 @@ netxen_check_health(struct netxen_adapter *adapter) | |||
2284 | } | 2284 | } |
2285 | 2285 | ||
2286 | state = NXRD32(adapter, NX_CRB_DEV_STATE); | 2286 | state = NXRD32(adapter, NX_CRB_DEV_STATE); |
2287 | if (state == NX_DEV_NEED_RESET) | 2287 | if (state == NX_DEV_NEED_RESET) { |
2288 | adapter->need_fw_reset = 1; | ||
2288 | goto detach; | 2289 | goto detach; |
2290 | } | ||
2289 | 2291 | ||
2290 | if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) | 2292 | if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) |
2291 | return 0; | 2293 | return 0; |