ucc_geth: Fix netdev watchdog triggering on suspend
authorAnton Vorontsov <avorontsov@ru.mvista.com>
Wed, 30 Dec 2009 08:23:32 +0000 (08:23 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 31 Dec 2009 06:03:43 +0000 (22:03 -0800)
commit29fb00e047eae927a3f1a0367c0cfed7ad5228ef
treed438872b3e386ddd37daaa79bd3b3f4c62b43d36
parent2f5cb43406d0b29b96248f5328a14a6f6abf8ae6
ucc_geth: Fix netdev watchdog triggering on suspend

Sometimes ucc_geth fails to suspend with the following trace:

 ucc_geth e0103000.ucc: suspend
 ucc_geth e0102000.ucc: suspend
 NETDEV WATCHDOG: eth0 (ucc_geth): transmit queue 0 timed out
 ------------[ cut here ]------------
 Badness at net/sched/sch_generic.c:255
 NIP: c021cb5c LR: c021cb5c CTR: c01ab4b4
 [...]
 NIP [c021cb5c] dev_watchdog+0x298/0x2a8
 LR [c021cb5c] dev_watchdog+0x298/0x2a8
 Call Trace:
 [c0389da0] [c021cb5c] dev_watchdog+0x298/0x2a8 (unreliable)
 [c0389e00] [c0031ed8] run_timer_softirq+0x16c/0x1dc
 [c0389e50] [c002c638] __do_softirq+0xa4/0x11c
 [...]

This patch fixes the issue by properly detaching the device on
suspend, and attaching it back on resume.

Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ucc_geth.c