Files
kernel-tenderloin-3.0/drivers
Anton Vorontsov 864fdf884e ucc_geth: Fix hangs after switching from full to half duplex
MPC8360 QE UCC ethernet controllers hang when changing link duplex
under a load (a bit of NFS activity is enough).

  PHY: mdio@e0102120:00 - Link is Up - 1000/Full
  sh-3.00# ethtool -s eth0 speed 100 duplex half autoneg off
  PHY: mdio@e0102120:00 - Link is Down
  PHY: mdio@e0102120:00 - Link is Up - 100/Half
  NETDEV WATCHDOG: eth0 (ucc_geth): transmit queue 0 timed out
  ------------[ cut here ]------------
  Badness at c01fcbd0 [verbose debug info unavailable]
  NIP: c01fcbd0 LR: c01fcbd0 CTR: c0194e44
  ...

The cure is to disable the controller before changing speed/duplex
and enable it afterwards.

Though, disabling the controller might take quite a while, so we
better not grab any spinlocks in adjust_link(). Instead, we quiesce
the driver's activity, and only then disable the controller.

Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-09-11 12:54:45 -07:00
..
2009-07-28 21:07:09 -04:00
2009-08-02 12:54:22 -07:00
2009-09-01 01:13:31 -07:00
2009-07-12 12:22:34 -07:00
2009-08-09 12:25:29 +10:00
2009-09-01 01:13:16 -07:00
2009-07-03 15:45:29 +01:00
2009-08-04 20:31:32 +02:00
2009-07-29 19:10:35 -07:00
2009-09-09 11:19:00 -04:00
2009-07-12 12:22:34 -07:00
2009-09-01 01:13:44 -07:00
2009-07-30 16:03:45 +09:30
2009-07-01 11:19:47 +02:00