fix ibm_emac autonegotiation result parsing
PATCH 1/1 fix ibm_emac autonegotiation result parsing
Fix aneg result parsing in ibm_emac driver.
Signed-off-by Eugene Surovegin <[email protected]>
Signed-off-by Matt Porter <[email protected]>
===== drivers/net/ibm_emac/ibm_emac_phy.c 1.1 vs edited =====
drivers/net/ibm_emac/ibm_emac_phy.c +10 -9
@@ -191,17 +191,18 @@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