diff options
| author | Jung-uk Kim <jkim@FreeBSD.org> | 2007-03-19 23:17:39 +0000 |
|---|---|---|
| committer | Jung-uk Kim <jkim@FreeBSD.org> | 2007-03-19 23:17:39 +0000 |
| commit | 9239bab2fe997237304f8b04476a165276571595 (patch) | |
| tree | f571bbb770a31a35f9db4c54cd332187eaf7d638 /sys/dev/mii | |
| parent | 6c655efcaf972e4a7db71d46f60bda706e134bc9 (diff) | |
Notes
Diffstat (limited to 'sys/dev/mii')
| -rw-r--r-- | sys/dev/mii/brgphy.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/sys/dev/mii/brgphy.c b/sys/dev/mii/brgphy.c index 06a3d6fdd687..55eb0d29b417 100644 --- a/sys/dev/mii/brgphy.c +++ b/sys/dev/mii/brgphy.c @@ -311,7 +311,7 @@ brgphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) * Check to see if we have link. If we do, we don't * need to restart the autonegotiation process. */ - if (PHY_READ(sc, BRGPHY_MII_BMSR) & BRGPHY_BMSR_LINK) { + if (PHY_READ(sc, BRGPHY_MII_AUXSTS) & BRGPHY_AUXSTS_LINK) { sc->mii_ticks = 0; /* Reset autoneg timer. */ break; } @@ -416,32 +416,30 @@ static void brgphy_status(struct mii_softc *sc) { struct mii_data *mii = sc->mii_pdata; - struct ifmedia_entry *ife = mii->mii_media.ifm_cur; - int bmcr, bmsr; + int aux, bmcr, bmsr; mii->mii_media_status = IFM_AVALID; mii->mii_media_active = IFM_ETHER; + aux = PHY_READ(sc, BRGPHY_MII_AUXSTS); bmcr = PHY_READ(sc, BRGPHY_MII_BMCR); bmsr = PHY_READ(sc, BRGPHY_MII_BMSR); - if (bmsr & BRGPHY_BMSR_LINK) + if (aux & BRGPHY_AUXSTS_LINK) mii->mii_media_status |= IFM_ACTIVE; if (bmcr & BRGPHY_BMCR_LOOP) mii->mii_media_active |= IFM_LOOP; - if (bmcr & BRGPHY_BMCR_AUTOEN) { - if ((bmsr & BRGPHY_BMSR_ACOMP) == 0) { - /* Erg, still trying, I guess... */ - mii->mii_media_active |= IFM_NONE; - return; - } + if ((bmcr & BRGPHY_BMCR_AUTOEN) && + (bmsr & BRGPHY_BMSR_ACOMP) == 0) { + /* Erg, still trying, I guess... */ + mii->mii_media_active |= IFM_NONE; + return; } - if (bmsr & BRGPHY_BMSR_LINK) { - switch (PHY_READ(sc, BRGPHY_MII_AUXSTS) & - BRGPHY_AUXSTS_AN_RES) { + if (aux & BRGPHY_AUXSTS_LINK) { + switch (aux & BRGPHY_AUXSTS_AN_RES) { case BRGPHY_RES_1000FD: mii->mii_media_active |= IFM_1000_T | IFM_FDX; break; @@ -468,7 +466,7 @@ brgphy_status(struct mii_softc *sc) break; } } else - mii->mii_media_active = ife->ifm_media; + mii->mii_media_active |= IFM_NONE; } static int |
