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>
This commit is contained in:
Amit Kumar Salecha 2009-12-08 20:40:55 +00:00 committed by David S. Miller
parent bc86fcbac0
commit 6a808c6c02
2 changed files with 6 additions and 1 deletions

View File

@ -778,6 +778,9 @@ netxen_need_fw_reset(struct netxen_adapter *adapter)
if (NX_IS_REVISION_P2(adapter->ahw.revision_id))
return 1;
if (adapter->need_fw_reset)
return 1;
/* last attempt had failed */
if (NXRD32(adapter, CRB_CMDPEG_STATE) == PHAN_INITIALIZE_FAILED)
return 1;

View File

@ -2284,8 +2284,10 @@ netxen_check_health(struct netxen_adapter *adapter)
}
state = NXRD32(adapter, NX_CRB_DEV_STATE);
if (state == NX_DEV_NEED_RESET)
if (state == NX_DEV_NEED_RESET) {
adapter->need_fw_reset = 1;
goto detach;
}
if (NX_IS_REVISION_P2(adapter->ahw.revision_id))
return 0;