diff options
author | marius <marius@FreeBSD.org> | 2011-01-14 19:33:58 +0000 |
---|---|---|
committer | marius <marius@FreeBSD.org> | 2011-01-14 19:33:58 +0000 |
commit | 4b3b68234e589acbe91046a87453185b1b32b155 (patch) | |
tree | 41c98a71c4eecd19048536f1914a42fd163a5659 /sys/dev/mii | |
parent | cfca51bb67689eaf0c3b6b31501c6dd28ac3f1b0 (diff) | |
download | FreeBSD-src-4b3b68234e589acbe91046a87453185b1b32b155.zip FreeBSD-src-4b3b68234e589acbe91046a87453185b1b32b155.tar.gz |
- Don't announce PAUSE support for half-duplex when MIIF_FORCEPAUSE is
set.
- Let mii_phy_auto() also announce PAUSE support for 10baseT-FDX.
MFC after: 1 week
Diffstat (limited to 'sys/dev/mii')
-rw-r--r-- | sys/dev/mii/jmphy.c | 6 | ||||
-rw-r--r-- | sys/dev/mii/mii_physubr.c | 8 |
2 files changed, 8 insertions, 6 deletions
diff --git a/sys/dev/mii/jmphy.c b/sys/dev/mii/jmphy.c index 3347a29..5659219 100644 --- a/sys/dev/mii/jmphy.c +++ b/sys/dev/mii/jmphy.c @@ -373,10 +373,10 @@ jmphy_setmedia(struct mii_softc *sc, struct ifmedia_entry *ife) bmcr |= BMCR_LOOP; anar = jmphy_anar(ife); - if (((IFM_SUBTYPE(ife->ifm_media) == IFM_AUTO || + if ((IFM_SUBTYPE(ife->ifm_media) == IFM_AUTO || (ife->ifm_media & IFM_FDX) != 0) && - (ife->ifm_media & IFM_FLOW) != 0) || - (sc->mii_flags & MIIF_FORCEPAUSE) != 0) + ((ife->ifm_media & IFM_FLOW) != 0 || + (sc->mii_flags & MIIF_FORCEPAUSE) != 0)) anar |= ANAR_PAUSE_TOWARDS; if ((sc->mii_flags & MIIF_HAVE_GTCR) != 0) { diff --git a/sys/dev/mii/mii_physubr.c b/sys/dev/mii/mii_physubr.c index b888937..84de346 100644 --- a/sys/dev/mii/mii_physubr.c +++ b/sys/dev/mii/mii_physubr.c @@ -135,8 +135,9 @@ mii_phy_setmedia(struct mii_softc *sc) gtcr |= GTCR_ADV_MS; } - if ((ife->ifm_media & IFM_GMASK) == (IFM_FDX | IFM_FLOW) || - (sc->mii_flags & MIIF_FORCEPAUSE) != 0) { + if ((ife->ifm_media & IFM_FDX) != 0 && + ((ife->ifm_media & IFM_FLOW) != 0 || + (sc->mii_flags & MIIF_FORCEPAUSE) != 0)) { if ((sc->mii_flags & MIIF_IS_1000X) != 0) anar |= ANAR_X_PAUSE_TOWARDS; else { @@ -184,7 +185,8 @@ mii_phy_auto(struct mii_softc *sc) ANAR_CSMA; if ((ife->ifm_media & IFM_FLOW) != 0 || (sc->mii_flags & MIIF_FORCEPAUSE) != 0) { - if ((sc->mii_capabilities & BMSR_100TXFDX) != 0) + if ((sc->mii_capabilities & + (BMSR_10TFDX | BMSR_100TXFDX)) != 0) anar |= ANAR_FC; /* XXX Only 1000BASE-T has PAUSE_ASYM? */ if (((sc->mii_flags & MIIF_HAVE_GTCR) != 0) && |