diff options
author | Manfred Spraul <manfred@colorfullife.com> | 2005-09-11 21:33:28 +0100 |
---|---|---|
committer | Chris Wright <chrisw@osdl.org> | 2005-09-16 18:01:56 -0700 |
commit | 2498037d5a6668b733acc712a3106ffd4e1ef735 (patch) | |
tree | 4977bb8c81c3b8f7e8ed81da348ee440fc5448e4 | |
parent | 98debffa9114b60138b3dbd4d02ce13f01a07ab4 (diff) |
[PATCH] forcedeth: Initialize link settings in every nv_open()
R�diger found a bug in nv_open that explains some of the reports
with duplex mismatches:
nv_open calls nv_update_link_speed for initializing the hardware link speed
registers. If current link setting matches the values in np->linkspeed and
np->duplex, then the function does nothing.
Usually, doing nothing is the right thing, but not in nv_open: During
nv_open, the registers must be initialized because the nic was reset.
The attached patch fixes that by setting np->linkspeed to an invalid value
before calling nv_update_link_speed from nv_open.
Signed-Off-By: Manfred Spraul <manfred@colorfullife.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Chris Wright <chrisw@osdl.org>
-rw-r--r-- | drivers/net/forcedeth.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c index 64f0f697c95..96ee37bb939 100644 --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c @@ -1888,6 +1888,9 @@ static int nv_open(struct net_device *dev) writel(NVREG_MIISTAT_MASK, base + NvRegMIIStatus); dprintk(KERN_INFO "startup: got 0x%08x.\n", miistat); } + /* set linkspeed to invalid value, thus force nv_update_linkspeed + * to init hw */ + np->linkspeed = 0; ret = nv_update_linkspeed(dev); nv_start_rx(dev); nv_start_tx(dev); |