netxen: firmware hang detection
commit6a581e93981e8838c85e407303186faf937830d3
authorDhananjay Phadke <dhananjay@netxen.com>
Sat, 5 Sep 2009 17:43:08 +0000 (5 17:43 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 7 Sep 2009 08:53:06 +0000 (7 01:53 -0700)
tree3e2f083971fc33d4a3e88e7cc37e346f775d7168
parentdb4cfd8a6149e778befb2ff6e6f91cdc6394cbe6
netxen: firmware hang detection

Implement state machine to detect firmware hung state
and recover. Since firmware will be shared by all PCI
functions that have different class drivers (NIC or
FCOE or iSCSI), explicit hardware based serialization
is required for initializing firmware.

o Used global scratchpad register to maintain device
  reference count. Every probed pci function adds to
  ref count.

o Implement timer (delayed work) for each pci func
  that checks firmware heartbit every 5 sec and detaches
  itself if firmware is dead. Last detaching function
  reloads firmware. Other functions wait for firmware
  init, and re-attach themselves.

Heartbit is not supported by NX2031 firmware.

Signed-off-by: Amit Kumar Salecha <amit@netxen.com>
Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/netxen/netxen_nic.h
drivers/net/netxen/netxen_nic_ctx.c
drivers/net/netxen/netxen_nic_hdr.h
drivers/net/netxen/netxen_nic_main.c