summaryrefslogtreecommitdiff
path: root/drivers/net/ibm_emac/ibm_emac_phy.c
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2005-01-06 11:59:14 -0500
committerJeff Garzik <jgarzik@pobox.com>2005-01-06 11:59:14 -0500
commit0bcafc42c6ffcba384c3d7acf6837a79806257f4 (patch)
tree19f1017c80acf95ca9af915b954cde899d68ce69 /drivers/net/ibm_emac/ibm_emac_phy.c
parent87475e1fe3a2a3f1643f3e60716e1d7bcf4ccd50 (diff)
[PATCH] EMAC: fix ibm_emac autonegotiation result parsing
From: Matt Porter <mporter@kernel.crashing.org> Fix aneg result parsing in ibm_emac driver. Signed-off-by: Eugene Surovegin <ebs@ebshome.net> Signed-off-by: Matt Porter <mporter@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/ibm_emac/ibm_emac_phy.c')
-rw-r--r--drivers/net/ibm_emac/ibm_emac_phy.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/net/ibm_emac/ibm_emac_phy.c b/drivers/net/ibm_emac/ibm_emac_phy.c
index b439087df8ec..14213f090e91 100644
--- a/drivers/net/ibm_emac/ibm_emac_phy.c
+++ b/drivers/net/ibm_emac/ibm_emac_phy.c
@@ -191,17 +191,18 @@ static int genmii_read_link(struct mii_phy *phy)
u16 lpa;
if (phy->autoneg) {
- lpa = phy_read(phy, MII_LPA);
+ lpa = phy_read(phy, MII_LPA) & phy_read(phy, MII_ADVERTISE);
- if (lpa & (LPA_10FULL | LPA_100FULL))
- phy->duplex = DUPLEX_FULL;
- else
- phy->duplex = DUPLEX_HALF;
- if (lpa & (LPA_100FULL | LPA_100HALF))
- phy->speed = SPEED_100;
- else
- phy->speed = SPEED_10;
+ phy->speed = SPEED_10;
+ phy->duplex = DUPLEX_HALF;
phy->pause = 0;
+
+ if (lpa & (LPA_100FULL | LPA_100HALF)) {
+ phy->speed = SPEED_100;
+ if (lpa & LPA_100FULL)
+ phy->duplex = DUPLEX_FULL;
+ } else if (lpa & LPA_10FULL)
+ phy->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