diff options
author | Martin Langer <martin-langer@gmx.de> | 2008-10-13 21:49:38 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-10-13 21:49:38 -0400 |
commit | bc0da3fcec1cec11dc451b8fcb9c9ad7e4ca6e12 (patch) | |
tree | 00aa6f51673afe88d316041e562fe7e2cf414e6a /drivers/net/tulip/de2104x.c | |
parent | ebe05d06a5051e7ddc07d76eab541a1d6b6eafcd (diff) |
de2104x: wrong MAC address fix
The de2104x returns sometimes a wrong MAC address. The wrong one is
like the original one, but it comes with an one byte shift. I found
this bug on an older alpha ev5 cpu. More details are available in Gentoo
bugreport #240718.
It seems the hardware is sometimes a little bit too slow for an
immediate access. This patch solves the problem by introducing a small
udelay.
Signed-off-by: Martin Langer <martin-langer@gmx.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/tulip/de2104x.c')
-rw-r--r-- | drivers/net/tulip/de2104x.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c index f54c45049d50..124d5d690dde 100644 --- a/drivers/net/tulip/de2104x.c +++ b/drivers/net/tulip/de2104x.c | |||
@@ -1688,6 +1688,7 @@ static void __devinit de21040_get_mac_address (struct de_private *de) | |||
1688 | unsigned i; | 1688 | unsigned i; |
1689 | 1689 | ||
1690 | dw32 (ROMCmd, 0); /* Reset the pointer with a dummy write. */ | 1690 | dw32 (ROMCmd, 0); /* Reset the pointer with a dummy write. */ |
1691 | udelay(5); | ||
1691 | 1692 | ||
1692 | for (i = 0; i < 6; i++) { | 1693 | for (i = 0; i < 6; i++) { |
1693 | int value, boguscnt = 100000; | 1694 | int value, boguscnt = 100000; |