diff options
| author | Andrew Morton <akpm@osdl.org> | 2005-01-06 11:59:14 -0500 | 
|---|---|---|
| committer | Jeff Garzik <jgarzik@pobox.com> | 2005-01-06 11:59:14 -0500 | 
| commit | 0bcafc42c6ffcba384c3d7acf6837a79806257f4 (patch) | |
| tree | 19f1017c80acf95ca9af915b954cde899d68ce69 /drivers/net/ibm_emac/ibm_emac_phy.c | |
| parent | 87475e1fe3a2a3f1643f3e60716e1d7bcf4ccd50 (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.c | 19 | 
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  | 
