]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[PATCH] forcedeth: Initialize link settings in every nv_open()
authorManfred Spraul <manfred@colorfullife.com>
Sun, 11 Sep 2005 20:33:28 +0000 (21:33 +0100)
committerChris Wright <chrisw@osdl.org>
Sat, 17 Sep 2005 01:01:56 +0000 (18:01 -0700)
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>
drivers/net/forcedeth.c

index 64f0f697c958ad399317fe7cc628bf93d9f73018..96ee37bb9399f566367801b81c59000fe4b6200e 100644 (file)
@@ -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);