linux/drivers/net
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
..
appletalk net: Use PTR_RET rather than if(IS_ERR(.. [1] 2012-08-06 13:30:02 -07:00
arcnet
bonding bonding: support for IPv6 transmit hashing 2012-08-22 22:49:30 -07:00
caif caif: fix NULL pointer check 2012-07-24 13:54:16 -07:00
can net/c_can: remove conditional compilation of clk code 2012-07-30 17:25:12 -07:00
cris cris: fix eth_v10.c build error 2012-08-03 20:32:31 -07:00
dsa
ethernet forcedeth: prevent TX timeouts after reboot 2012-08-30 13:04:57 -04:00
fddi drivers: net: Remove casts to same type 2012-06-06 09:31:33 -07:00
hamradio drivers: net: Remove casts to same type 2012-06-06 09:31:33 -07:00
hippi
hyperv net: move and rename netif_notify_peers() 2012-08-14 14:28:23 -07:00
irda drivers/net/irda: fix error return code 2012-08-20 02:33:21 -07:00
phy netdev/phy: add MDIO bus multiplexer driven by a memory-mapped device 2012-08-30 12:54:48 -04:00
plip
ppp Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-08-22 14:21:38 -07:00
slip drivers: net: Remove casts to same type 2012-06-06 09:31:33 -07:00
team team: do not allow to add VLAN challenged port when vlan is used 2012-08-24 13:46:40 -04:00
usb net: qmi_wwan: new devices: UML290 and K5006-Z 2012-08-20 02:17:41 -07:00
vmxnet3 vmxnet3: Fix race between dev_open() and register_netdev() 2012-08-15 15:10:42 -07:00
wan drivers/net/wan/dscc4.c: fix error return code 2012-08-20 02:33:21 -07:00
wimax wimax/i2400m: use is_zero_ether_addr() instead of memcmp() 2012-08-24 13:30:26 -04:00
wireless Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2012-08-24 18:54:37 -04:00
xen-netback xen/netback: only non-freed SKB is queued into tx_queue 2012-06-29 00:50:20 -07:00
dummy.c net: fix race condition in several drivers when reading stats 2012-07-22 12:12:32 -07:00
eql.c
ifb.c
Kconfig tokenring: delete all remaining driver support 2012-05-15 20:23:16 -04:00
LICENSE.SRC
loopback.c net: Loopback ifindex is constant now 2012-08-09 16:18:07 -07:00
macvlan.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-05-16 22:17:37 -04:00
macvtap.c macvtap: rcu_dereference outside read-lock section 2012-08-12 13:40:48 -07:00
Makefile tokenring: delete all remaining driver support 2012-05-15 20:23:16 -04:00
mdio.c
mii.c
netconsole.c netconsole: remove a redundant netconsole_target_put() 2012-08-20 02:59:49 -07:00
rionet.c
sb1000.c
Space.c drivers/net: delete all code/drivers depending on CONFIG_MCA 2012-05-17 16:37:41 -04:00
sungem_phy.c
tun.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2012-08-24 18:54:37 -04:00
veth.c veth: Allow to create peer link with given ifindex 2012-08-09 16:18:07 -07:00
virtio_net.c net: move and rename netif_notify_peers() 2012-08-14 14:28:23 -07:00
xen-netfront.c net: move and rename netif_notify_peers() 2012-08-14 14:28:23 -07:00