summaryrefslogtreecommitdiffstats
path: root/sys/dev/mii
diff options
context:
space:
mode:
authormarius <marius@FreeBSD.org>2010-11-22 21:24:29 +0000
committermarius <marius@FreeBSD.org>2010-11-22 21:24:29 +0000
commit769a0530db2555510f31ce423c36f12e90133eac (patch)
tree54ef15c58042b03cbb73f55a87794aa0a9a3f708 /sys/dev/mii
parent21423fafa1358a2a95acebce88a346050821d69e (diff)
downloadFreeBSD-src-769a0530db2555510f31ce423c36f12e90133eac.zip
FreeBSD-src-769a0530db2555510f31ce423c36f12e90133eac.tar.gz
Add support for flow control.
Obtained from: NetBSD (partially)
Diffstat (limited to 'sys/dev/mii')
-rw-r--r--sys/dev/mii/bmtphy.c5
-rw-r--r--sys/dev/mii/inphy.c5
-rw-r--r--sys/dev/mii/nsphyter.c6
3 files changed, 10 insertions, 6 deletions
diff --git a/sys/dev/mii/bmtphy.c b/sys/dev/mii/bmtphy.c
index 63d1df1..9d1225a 100644
--- a/sys/dev/mii/bmtphy.c
+++ b/sys/dev/mii/bmtphy.c
@@ -153,6 +153,8 @@ bmtphy_attach(device_t dev)
sc->mii_service = bmtphy_service;
sc->mii_pdata = mii;
+ sc->mii_flags |= MIIF_NOMANPAUSE;
+
mii_phy_reset(sc);
sc->mii_capabilities = PHY_READ(sc, MII_BMSR) & ma->mii_capmask;
@@ -243,7 +245,8 @@ bmtphy_status(struct mii_softc *sc)
else
mii->mii_media_active |= IFM_10_T;
if (aux_csr & AUX_CSR_FDX)
- mii->mii_media_active |= IFM_FDX;
+ mii->mii_media_active |=
+ IFM_FDX | mii_phy_flowstatus(sc);
else
mii->mii_media_active |= IFM_HDX;
} else
diff --git a/sys/dev/mii/inphy.c b/sys/dev/mii/inphy.c
index 6830b5a..1293641 100644
--- a/sys/dev/mii/inphy.c
+++ b/sys/dev/mii/inphy.c
@@ -113,6 +113,8 @@ inphy_attach(device_t dev)
sc->mii_service = inphy_service;
sc->mii_pdata = mii;
+ sc->mii_flags |= MIIF_NOMANPAUSE;
+
ifmedia_add(&mii->mii_media,
IFM_MAKEWORD(IFM_ETHER, IFM_100_TX, IFM_LOOP, sc->mii_inst),
MII_MEDIA_100_TX, NULL);
@@ -197,7 +199,8 @@ inphy_status(struct mii_softc *sc)
else
mii->mii_media_active |= IFM_10_T;
if (scr & SCR_FDX)
- mii->mii_media_active |= IFM_FDX;
+ mii->mii_media_active |=
+ IFM_FDX | mii_phy_flowstatus(sc);
else
mii->mii_media_active |= IFM_HDX;
} else
diff --git a/sys/dev/mii/nsphyter.c b/sys/dev/mii/nsphyter.c
index 5489504..c302181 100644
--- a/sys/dev/mii/nsphyter.c
+++ b/sys/dev/mii/nsphyter.c
@@ -143,6 +143,8 @@ nsphyter_attach(device_t dev)
sc->mii_service = nsphyter_service;
sc->mii_pdata = mii;
+ sc->mii_flags |= MIIF_NOMANPAUSE;
+
#if 1
#define ADD(m, c) ifmedia_add(&mii->mii_media, (m), (c), NULL)
@@ -242,12 +244,8 @@ nsphyter_status(struct mii_softc *sc)
else
mii->mii_media_active |= IFM_100_TX;
if ((physts & PHYSTS_DUPLEX) != 0)
-#ifdef notyet
mii->mii_media_active |=
IFM_FDX | mii_phy_flowstatus(sc);
-#else
- mii->mii_media_active |= IFM_FDX;
-#endif
else
mii->mii_media_active |= IFM_HDX;
} else
OpenPOWER on IntegriCloud