From 5352e81642c158bd69f379cc5fc8ec19b0927963 Mon Sep 17 00:00:00 2001 From: Chris Wright Date: Mon, 12 Sep 2005 11:38:20 -0700 Subject: [PATCH] Forcedeth fix from Manfred, fwd from Daniel Drake. --- ...cedeth-init-link-settings-in-nv_open.patch | 41 +++++++++++++++++++ queue/series | 1 + 2 files changed, 42 insertions(+) create mode 100644 queue/forcedeth-init-link-settings-in-nv_open.patch create mode 100644 queue/series diff --git a/queue/forcedeth-init-link-settings-in-nv_open.patch b/queue/forcedeth-init-link-settings-in-nv_open.patch new file mode 100644 index 00000000000..94c39e31c80 --- /dev/null +++ b/queue/forcedeth-init-link-settings-in-nv_open.patch @@ -0,0 +1,41 @@ +From stable-bounces@linux.kernel.org Sun Sep 11 13:33:43 2005 +Date: Sun, 11 Sep 2005 21:33:28 +0100 +From: Daniel Drake +To: stable@kernel.org +Cc: manfred@colorfullife.com +Subject: [PATCH] forcedeth: Initialize link settings in every nv_open() + +From: Manfred Spraul + +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 +Signed-off-by: Jeff Garzik +Signed-off-by: Chris Wright +--- + drivers/net/forcedeth.c | 3 +++ + 1 files changed, 3 insertions(+) + +Index: linux-2.6.13.y/drivers/net/forcedeth.c +=================================================================== +--- linux-2.6.13.y.orig/drivers/net/forcedeth.c ++++ linux-2.6.13.y/drivers/net/forcedeth.c +@@ -1888,6 +1888,9 @@ static int nv_open(struct net_device *de + 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); diff --git a/queue/series b/queue/series new file mode 100644 index 00000000000..68c8918e9ae --- /dev/null +++ b/queue/series @@ -0,0 +1 @@ +forcedeth-init-link-settings-in-nv_open.patch -- 2.47.3