• Anton Vorontsov's avatar
    ucc_geth: Fix netdev watchdog triggering on suspend · 29fb00e0
    Anton Vorontsov authored
    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: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    29fb00e0
ucc_geth.c 119 KB