diff options
author | yongari <yongari@FreeBSD.org> | 2007-11-16 10:25:36 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2007-11-16 10:25:36 +0000 |
commit | 21faca2ee7f073e31d345fd7f2af8494d7060517 (patch) | |
tree | 6a96fff67828f66a4043afba1a520e87965e3db4 /sys/dev/mii | |
parent | 6a78af898e9fd65c9dd5465d3915905b53846273 (diff) | |
download | FreeBSD-src-21faca2ee7f073e31d345fd7f2af8494d7060517.zip FreeBSD-src-21faca2ee7f073e31d345fd7f2af8494d7060517.tar.gz |
IEEE 802.3 Annex 28B.3 explicitly specifies the following relative
priorities of the technologies supported by 802.3 Selector Field
value.
1000BASE-T full duplex
1000BASE-T
100BASE-T2 full duplex
100BASE-TX full duplex
100BASE-T2
100BASE-T4
100BASE-TX
10BASE-T full duplex
10BAST-T
However PHY drivers didn't honor the order such that 100BASE-T4 had
higher priority than 100BASE-TX full duplex. Fix that long standing
bugs such that have PHY drivers choose the highest common denominator
ability.
Fix a bug in dcphy which inadvertently aceepts 100BASE-T4.
PR: 92599
Diffstat (limited to 'sys/dev/mii')
-rw-r--r-- | sys/dev/mii/amphy.c | 6 | ||||
-rw-r--r-- | sys/dev/mii/nsphy.c | 6 | ||||
-rw-r--r-- | sys/dev/mii/rlphy.c | 6 | ||||
-rw-r--r-- | sys/dev/mii/tdkphy.c | 6 | ||||
-rw-r--r-- | sys/dev/mii/ukphy_subr.c | 4 |
5 files changed, 14 insertions, 14 deletions
diff --git a/sys/dev/mii/amphy.c b/sys/dev/mii/amphy.c index 2b9ec72d..f4a9ec6 100644 --- a/sys/dev/mii/amphy.c +++ b/sys/dev/mii/amphy.c @@ -228,10 +228,10 @@ amphy_status(struct mii_softc *sc) if (PHY_READ(sc, MII_ANER) & ANER_LPAN) { anlpar = PHY_READ(sc, MII_ANAR) & PHY_READ(sc, MII_ANLPAR); - if (anlpar & ANLPAR_T4) - mii->mii_media_active |= IFM_100_T4; - else if (anlpar & ANLPAR_TX_FD) + 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; else if (anlpar & ANLPAR_TX) mii->mii_media_active |= IFM_100_TX; else if (anlpar & ANLPAR_10_FD) diff --git a/sys/dev/mii/nsphy.c b/sys/dev/mii/nsphy.c index 01429ab..88f0daf 100644 --- a/sys/dev/mii/nsphy.c +++ b/sys/dev/mii/nsphy.c @@ -331,10 +331,10 @@ nsphy_status(struct mii_softc *sc) if (PHY_READ(sc, MII_ANER) & ANER_LPAN) { anlpar = PHY_READ(sc, MII_ANAR) & PHY_READ(sc, MII_ANLPAR); - if (anlpar & ANLPAR_T4) - mii->mii_media_active |= IFM_100_T4; - else if (anlpar & ANLPAR_TX_FD) + 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; else if (anlpar & ANLPAR_TX) mii->mii_media_active |= IFM_100_TX; else if (anlpar & ANLPAR_10_FD) diff --git a/sys/dev/mii/rlphy.c b/sys/dev/mii/rlphy.c index aa9ff76..fbbdfd0 100644 --- a/sys/dev/mii/rlphy.c +++ b/sys/dev/mii/rlphy.c @@ -261,10 +261,10 @@ rlphy_status(struct mii_softc *phy) if ((anlpar = PHY_READ(phy, MII_ANAR) & PHY_READ(phy, MII_ANLPAR))) { - if (anlpar & ANLPAR_T4) - mii->mii_media_active |= IFM_100_T4; - else if (anlpar & ANLPAR_TX_FD) + 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; else if (anlpar & ANLPAR_TX) mii->mii_media_active |= IFM_100_TX; else if (anlpar & ANLPAR_10_FD) diff --git a/sys/dev/mii/tdkphy.c b/sys/dev/mii/tdkphy.c index 1b31ee2..83a394a 100644 --- a/sys/dev/mii/tdkphy.c +++ b/sys/dev/mii/tdkphy.c @@ -239,10 +239,10 @@ tdkphy_status(struct mii_softc *phy) * ANLPAR doesn't get set on my card, but we check it anyway, * since it is mentioned in the 78Q2120 specs. */ - if (anlpar & ANLPAR_T4) - mii->mii_media_active |= IFM_100_T4; - else if (anlpar & ANLPAR_TX_FD) + 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; else if (anlpar & ANLPAR_TX) mii->mii_media_active |= IFM_100_TX; else if (anlpar & ANLPAR_10_FD) diff --git a/sys/dev/mii/ukphy_subr.c b/sys/dev/mii/ukphy_subr.c index 9d7df3d..fdfc972 100644 --- a/sys/dev/mii/ukphy_subr.c +++ b/sys/dev/mii/ukphy_subr.c @@ -112,10 +112,10 @@ ukphy_status(struct mii_softc *phy) else if ((gtcr & GTCR_ADV_1000THDX) && (gtsr & GTSR_LP_1000THDX)) mii->mii_media_active |= IFM_1000_T; - else if (anlpar & ANLPAR_T4) - mii->mii_media_active |= IFM_100_T4; 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; else if (anlpar & ANLPAR_TX) mii->mii_media_active |= IFM_100_TX; else if (anlpar & ANLPAR_10_FD) |