<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
From: Matt Porter &lt;mporter@kernel.crashing.org&gt;

Fix aneg result parsing in ibm_emac driver.

Signed-off-by: Eugene Surovegin &lt;ebs@ebshome.net&gt;
Signed-off-by: Matt Porter &lt;mporter@kernel.crashing.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
---

 25-akpm/drivers/net/ibm_emac/ibm_emac_phy.c |   19 ++++++++++---------
 1 files changed, 10 insertions(+), 9 deletions(-)

diff -puN drivers/net/ibm_emac/ibm_emac_phy.c~fix-ibm_emac-autonegotiation-result-parsing drivers/net/ibm_emac/ibm_emac_phy.c
--- 25/drivers/net/ibm_emac/ibm_emac_phy.c~fix-ibm_emac-autonegotiation-result-parsing	2005-01-04 21:57:36.578573496 -0800
+++ 25-akpm/drivers/net/ibm_emac/ibm_emac_phy.c	2005-01-04 21:57:36.581573040 -0800
@@ -191,17 +191,18 @@ static int genmii_read_link(struct mii_p
 	u16 lpa;
 
 	if (phy-&gt;autoneg) {
-		lpa = phy_read(phy, MII_LPA);
+		lpa = phy_read(phy, MII_LPA) &amp; phy_read(phy, MII_ADVERTISE);
 
-		if (lpa &amp; (LPA_10FULL | LPA_100FULL))
-			phy-&gt;duplex = DUPLEX_FULL;
-		else
-			phy-&gt;duplex = DUPLEX_HALF;
-		if (lpa &amp; (LPA_100FULL | LPA_100HALF))
-			phy-&gt;speed = SPEED_100;
-		else
-			phy-&gt;speed = SPEED_10;
+		phy-&gt;speed = SPEED_10;
+		phy-&gt;duplex = DUPLEX_HALF;
 		phy-&gt;pause = 0;
+
+		if (lpa &amp; (LPA_100FULL | LPA_100HALF)) {
+			phy-&gt;speed = SPEED_100;
+			if (lpa &amp; LPA_100FULL)
+				phy-&gt;duplex = DUPLEX_FULL;
+		} else if (lpa &amp; LPA_10FULL)
+			phy-&gt;duplex = DUPLEX_FULL;
 	}
 	/* On non-aneg, we assume what we put in BMCR is the speed,
 	 * though magic-aneg shouldn't prevent this case from occurring
_
</pre></body></html>