aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/mii
diff options
context:
space:
mode:
authorMarius Strobl <marius@FreeBSD.org>2011-01-14 19:33:58 +0000
committerMarius Strobl <marius@FreeBSD.org>2011-01-14 19:33:58 +0000
commit5c39059aaf4169505b7a8ac7e54e2a8e9dd56a47 (patch)
tree41c98a71c4eecd19048536f1914a42fd163a5659 /sys/dev/mii
parent87a303dc63455d4c98f8b3baefe0cb55557200b1 (diff)
downloadsrc-5c39059aaf4169505b7a8ac7e54e2a8e9dd56a47.tar.gz
src-5c39059aaf4169505b7a8ac7e54e2a8e9dd56a47.zip
- 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
Notes
Notes: svn path=/head/; revision=217414
Diffstat (limited to 'sys/dev/mii')
-rw-r--r--sys/dev/mii/jmphy.c6
-rw-r--r--sys/dev/mii/mii_physubr.c8
2 files changed, 8 insertions, 6 deletions
diff --git a/sys/dev/mii/jmphy.c b/sys/dev/mii/jmphy.c
index 3347a2904ebd..565921953912 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 b888937474a4..84de34629b79 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) &&