david decotigny 3f0a1b58ae forcedeth: prevent TX timeouts after reboot
This complements patch "net-forcedeth: fix TX timeout caused by TX
pause on down link" which ensures that a lock-up sequence is not sent
to the NIC. Present patch ensures that if a NIC is already locked-up,
the driver will recover from it when initializing the device.

It does the equivalent of the following recovery sequence:
 - write NVREG_TX_PAUSEFRAME_ENABLE_V1 to eth1's register
   NvRegTxPauseFrame
 - write NVREG_XMITCTL_START to eth1's register
   NvRegTransmitterControl
 - write 0 to eth1's register NvRegTransmitterControl
(this is at the heart of the "unbricking" sequence mentioned in patch
 "net-forcedeth: fix TX timeout caused by TX pause on down link")

Tested:
 - hardware is MCP55 device id 10de:0373 (rev a3), dual-port
 - reboot a kernel without any of patches mentioned
 - freeze the NIC (details on description for commit "net-forcedeth:
   fix TX timeout caused by TX pause on down link")
 - wait 5mn until ping hangs & TX timeout in dmesg
 - reboot on kernel with present patch
 - host is immediatly operational, no TX timeout

Signed-off-by: David Decotigny <decot@googlers.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-08-30 13:04:57 -04:00
..
2012-06-06 09:31:33 -07:00
2012-08-12 13:42:18 -07:00
2012-06-06 09:31:33 -07:00
2012-06-06 09:31:33 -07:00
2012-07-16 22:38:27 -07:00
2012-08-08 16:07:51 -07:00
2012-07-26 14:30:23 -07:00
2012-05-02 20:52:48 -04:00
2012-07-09 14:42:30 -07:00
2012-08-24 20:10:24 +01:00
2012-06-06 09:31:33 -07:00
2012-07-16 22:38:27 -07:00
2012-06-06 09:31:33 -07:00
2012-07-16 22:38:27 -07:00
2012-07-16 22:38:27 -07:00
2012-07-18 09:40:54 -07:00
2012-02-22 14:44:41 -05:00
2012-07-16 22:38:27 -07:00