summaryrefslogtreecommitdiffstats
path: root/sys/dev/mii
diff options
context:
space:
mode:
authormarius <marius@FreeBSD.org>2010-10-03 17:00:57 +0000
committermarius <marius@FreeBSD.org>2010-10-03 17:00:57 +0000
commitd0f9146ceecb9f4cddb582a45af08a5d84271fb6 (patch)
tree0b038b8f75b103c62cca82c7f5f5ed8385e5ad37 /sys/dev/mii
parent91a938a7c56ab798b0e49b73d0efc3791f267969 (diff)
downloadFreeBSD-src-d0f9146ceecb9f4cddb582a45af08a5d84271fb6.zip
FreeBSD-src-d0f9146ceecb9f4cddb582a45af08a5d84271fb6.tar.gz
Consistently always explicitly set IFM_HDX for half-duplex.
Obtained from: OpenBSD (mostly)
Diffstat (limited to 'sys/dev/mii')
-rw-r--r--sys/dev/mii/acphy.c2
-rw-r--r--sys/dev/mii/amphy.c10
-rw-r--r--sys/dev/mii/axphy.c2
-rw-r--r--sys/dev/mii/bmtphy.c2
-rw-r--r--sys/dev/mii/gentbi.c3
-rw-r--r--sys/dev/mii/inphy.c2
-rw-r--r--sys/dev/mii/lxtphy.c2
-rw-r--r--sys/dev/mii/nsphy.c11
-rw-r--r--sys/dev/mii/qsphy.c6
-rw-r--r--sys/dev/mii/rlphy.c7
-rw-r--r--sys/dev/mii/ruephy.c2
-rw-r--r--sys/dev/mii/tdkphy.c10
-rw-r--r--sys/dev/mii/tlphy.c2
-rw-r--r--sys/dev/mii/ukphy_subr.c8
14 files changed, 42 insertions, 27 deletions
diff --git a/sys/dev/mii/acphy.c b/sys/dev/mii/acphy.c
index 082346f..661bc91 100644
--- a/sys/dev/mii/acphy.c
+++ b/sys/dev/mii/acphy.c
@@ -245,6 +245,8 @@ acphy_status(struct mii_softc *sc)
if (diag & AC_DIAG_DUPLEX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/amphy.c b/sys/dev/mii/amphy.c
index 67bad46..a67c66c 100644
--- a/sys/dev/mii/amphy.c
+++ b/sys/dev/mii/amphy.c
@@ -206,13 +206,13 @@ amphy_status(struct mii_softc *sc)
if (anlpar & ANLPAR_TX_FD)
mii->mii_media_active |= IFM_100_TX|IFM_FDX;
else if (anlpar & ANLPAR_T4)
- mii->mii_media_active |= IFM_100_T4;
+ mii->mii_media_active |= IFM_100_T4|IFM_HDX;
else if (anlpar & ANLPAR_TX)
- mii->mii_media_active |= IFM_100_TX;
+ mii->mii_media_active |= IFM_100_TX|IFM_HDX;
else if (anlpar & ANLPAR_10_FD)
mii->mii_media_active |= IFM_10_T|IFM_FDX;
else if (anlpar & ANLPAR_10)
- mii->mii_media_active |= IFM_10_T;
+ mii->mii_media_active |= IFM_10_T|IFM_HDX;
else
mii->mii_media_active |= IFM_NONE;
return;
@@ -225,11 +225,11 @@ amphy_status(struct mii_softc *sc)
if (par & DSCSR_100FDX)
mii->mii_media_active |= IFM_100_TX|IFM_FDX;
else if (par & DSCSR_100HDX)
- mii->mii_media_active |= IFM_100_TX;
+ mii->mii_media_active |= IFM_100_TX|IFM_HDX;
else if (par & DSCSR_10FDX)
mii->mii_media_active |= IFM_10_T|IFM_HDX;
else if (par & DSCSR_10HDX)
- mii->mii_media_active |= IFM_10_T;
+ mii->mii_media_active |= IFM_10_T|IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/axphy.c b/sys/dev/mii/axphy.c
index d776d35..52ebcaa 100644
--- a/sys/dev/mii/axphy.c
+++ b/sys/dev/mii/axphy.c
@@ -189,6 +189,8 @@ axphy_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_10_T;
if (scr & SCR_FDX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
#endif
} else
mii->mii_media_active = ife->ifm_media;
diff --git a/sys/dev/mii/bmtphy.c b/sys/dev/mii/bmtphy.c
index 396cb76..af1fe11 100644
--- a/sys/dev/mii/bmtphy.c
+++ b/sys/dev/mii/bmtphy.c
@@ -243,6 +243,8 @@ bmtphy_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_10_T;
if (aux_csr & AUX_CSR_FDX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/gentbi.c b/sys/dev/mii/gentbi.c
index 05dc3a3..49cfc67 100644
--- a/sys/dev/mii/gentbi.c
+++ b/sys/dev/mii/gentbi.c
@@ -263,11 +263,12 @@ gentbi_status(struct mii_softc *sc)
* see if we're doing full-duplex.
*/
mii->mii_media_active |= IFM_1000_SX;
-
anlpar = PHY_READ(sc, MII_ANLPAR);
if ((sc->mii_extcapabilities & EXTSR_1000XFDX) != 0 &&
(anlpar & ANLPAR_X_FD) != 0)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/inphy.c b/sys/dev/mii/inphy.c
index d8ff819..f6418f7 100644
--- a/sys/dev/mii/inphy.c
+++ b/sys/dev/mii/inphy.c
@@ -197,6 +197,8 @@ inphy_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_10_T;
if (scr & SCR_FDX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/lxtphy.c b/sys/dev/mii/lxtphy.c
index 50abe7b..fc12ee6 100644
--- a/sys/dev/mii/lxtphy.c
+++ b/sys/dev/mii/lxtphy.c
@@ -250,6 +250,8 @@ lxtphy_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_10_T;
if (csr & CSR_DUPLEX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/nsphy.c b/sys/dev/mii/nsphy.c
index 2193980..21681f2 100644
--- a/sys/dev/mii/nsphy.c
+++ b/sys/dev/mii/nsphy.c
@@ -298,13 +298,13 @@ nsphy_status(struct mii_softc *sc)
if (anlpar & ANLPAR_TX_FD)
mii->mii_media_active |= IFM_100_TX|IFM_FDX;
else if (anlpar & ANLPAR_T4)
- mii->mii_media_active |= IFM_100_T4;
+ mii->mii_media_active |= IFM_100_T4|IFM_HDX;
else if (anlpar & ANLPAR_TX)
- mii->mii_media_active |= IFM_100_TX;
+ mii->mii_media_active |= IFM_100_TX|IFM_HDX;
else if (anlpar & ANLPAR_10_FD)
mii->mii_media_active |= IFM_10_T|IFM_FDX;
else if (anlpar & ANLPAR_10)
- mii->mii_media_active |= IFM_10_T;
+ mii->mii_media_active |= IFM_10_T|IFM_HDX;
else
mii->mii_media_active |= IFM_NONE;
return;
@@ -320,10 +320,7 @@ nsphy_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_10_T;
else
mii->mii_media_active |= IFM_100_TX;
-#if 0
- if (par & PAR_FDX)
- mii->mii_media_active |= IFM_FDX;
-#endif
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/qsphy.c b/sys/dev/mii/qsphy.c
index 55d7943..f6cdd45 100644
--- a/sys/dev/mii/qsphy.c
+++ b/sys/dev/mii/qsphy.c
@@ -215,19 +215,19 @@ qsphy_status(struct mii_softc *sc)
pctl = PHY_READ(sc, MII_QSPHY_PCTL);
switch (pctl & PCTL_OPMASK) {
case PCTL_10_T:
- mii->mii_media_active |= IFM_10_T;
+ mii->mii_media_active |= IFM_10_T|IFM_HDX;
break;
case PCTL_10_T_FDX:
mii->mii_media_active |= IFM_10_T|IFM_FDX;
break;
case PCTL_100_TX:
- mii->mii_media_active |= IFM_100_TX;
+ mii->mii_media_active |= IFM_100_TX|IFM_HDX;
break;
case PCTL_100_TX_FDX:
mii->mii_media_active |= IFM_100_TX|IFM_FDX;
break;
case PCTL_100_T4:
- mii->mii_media_active |= IFM_100_T4;
+ mii->mii_media_active |= IFM_100_T4|IFM_HDX;
break;
case PCTL_AN:
mii->mii_media_active |= IFM_NONE;
diff --git a/sys/dev/mii/rlphy.c b/sys/dev/mii/rlphy.c
index 21cce93..368b6ca 100644
--- a/sys/dev/mii/rlphy.c
+++ b/sys/dev/mii/rlphy.c
@@ -249,13 +249,13 @@ rlphy_status(struct mii_softc *phy)
if (anlpar & ANLPAR_TX_FD)
mii->mii_media_active |= IFM_100_TX|IFM_FDX;
else if (anlpar & ANLPAR_T4)
- mii->mii_media_active |= IFM_100_T4;
+ mii->mii_media_active |= IFM_100_T4|IFM_HDX;
else if (anlpar & ANLPAR_TX)
- mii->mii_media_active |= IFM_100_TX;
+ mii->mii_media_active |= IFM_100_TX|IFM_HDX;
else if (anlpar & ANLPAR_10_FD)
mii->mii_media_active |= IFM_10_T|IFM_FDX;
else if (anlpar & ANLPAR_10)
- mii->mii_media_active |= IFM_10_T;
+ mii->mii_media_active |= IFM_10_T|IFM_HDX;
else
mii->mii_media_active |= IFM_NONE;
return;
@@ -299,6 +299,7 @@ rlphy_status(struct mii_softc *phy)
else
mii->mii_media_active |= IFM_100_TX;
}
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/ruephy.c b/sys/dev/mii/ruephy.c
index c1e2741..f793c61 100644
--- a/sys/dev/mii/ruephy.c
+++ b/sys/dev/mii/ruephy.c
@@ -244,6 +244,8 @@ ruephy_status(struct mii_softc *phy)
if (msr & RUEPHY_MSR_DUPLEX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/tdkphy.c b/sys/dev/mii/tdkphy.c
index cf03ba6..dc0feca 100644
--- a/sys/dev/mii/tdkphy.c
+++ b/sys/dev/mii/tdkphy.c
@@ -217,13 +217,13 @@ tdkphy_status(struct mii_softc *phy)
if (anlpar & ANLPAR_TX_FD)
mii->mii_media_active |= IFM_100_TX|IFM_FDX;
else if (anlpar & ANLPAR_T4)
- mii->mii_media_active |= IFM_100_T4;
+ mii->mii_media_active |= IFM_100_T4|IFM_HDX;
else if (anlpar & ANLPAR_TX)
- mii->mii_media_active |= IFM_100_TX;
+ mii->mii_media_active |= IFM_100_TX|IFM_HDX;
else if (anlpar & ANLPAR_10_FD)
mii->mii_media_active |= IFM_10_T|IFM_FDX;
else if (anlpar & ANLPAR_10)
- mii->mii_media_active |= IFM_10_T;
+ mii->mii_media_active |= IFM_10_T|IFM_HDX;
else {
/*
* ANLPAR isn't set, which leaves two possibilities:
@@ -234,10 +234,12 @@ tdkphy_status(struct mii_softc *phy)
*/
diag = PHY_READ(phy, MII_DIAG);
if (diag & DIAG_NEGFAIL) /* assume 10baseT if no neg */
- mii->mii_media_active |= IFM_10_T;
+ mii->mii_media_active |= IFM_10_T|IFM_HDX;
else {
if (diag & DIAG_DUPLEX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
if (diag & DIAG_RATE_100)
mii->mii_media_active |= IFM_100_TX;
else
diff --git a/sys/dev/mii/tlphy.c b/sys/dev/mii/tlphy.c
index bf4f219..b425c76 100644
--- a/sys/dev/mii/tlphy.c
+++ b/sys/dev/mii/tlphy.c
@@ -333,6 +333,8 @@ tlphy_status(struct tlphy_softc *sc)
*/
if (bmcr & BMCR_FDX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
mii->mii_media_active |= IFM_10_T;
}
diff --git a/sys/dev/mii/ukphy_subr.c b/sys/dev/mii/ukphy_subr.c
index 3c25de8..9decd36 100644
--- a/sys/dev/mii/ukphy_subr.c
+++ b/sys/dev/mii/ukphy_subr.c
@@ -104,17 +104,17 @@ ukphy_status(struct mii_softc *phy)
mii->mii_media_active |= IFM_1000_T|IFM_FDX;
else if ((gtcr & GTCR_ADV_1000THDX) &&
(gtsr & GTSR_LP_1000THDX))
- mii->mii_media_active |= IFM_1000_T;
+ mii->mii_media_active |= IFM_1000_T|IFM_HDX;
else if (anlpar & ANLPAR_TX_FD)
mii->mii_media_active |= IFM_100_TX|IFM_FDX;
else if (anlpar & ANLPAR_T4)
- mii->mii_media_active |= IFM_100_T4;
+ mii->mii_media_active |= IFM_100_T4|IFM_HDX;
else if (anlpar & ANLPAR_TX)
- mii->mii_media_active |= IFM_100_TX;
+ mii->mii_media_active |= IFM_100_TX|IFM_HDX;
else if (anlpar & ANLPAR_10_FD)
mii->mii_media_active |= IFM_10_T|IFM_FDX;
else if (anlpar & ANLPAR_10)
- mii->mii_media_active |= IFM_10_T;
+ mii->mii_media_active |= IFM_10_T|IFM_HDX;
else
mii->mii_media_active |= IFM_NONE;
} else
OpenPOWER on IntegriCloud