summaryrefslogtreecommitdiffstats
path: root/sys/dev/mii/mlphy.c
diff options
context:
space:
mode:
authorjlemon <jlemon@FreeBSD.org>2001-09-29 19:18:52 +0000
committerjlemon <jlemon@FreeBSD.org>2001-09-29 19:18:52 +0000
commit6689cad44720247770c3439271c41126ceb5476e (patch)
treee747bfa7e8d363f3c895759cfbfa10fc7ec0841e /sys/dev/mii/mlphy.c
parent8bad7ad549c81c7741eb484b254cbe6200cba4c3 (diff)
downloadFreeBSD-src-6689cad44720247770c3439271c41126ceb5476e.zip
FreeBSD-src-6689cad44720247770c3439271c41126ceb5476e.tar.gz
Cleanup pass for mii drivers.
. Make internal service routines static. . Use a consistent ordering of checks in MII_TICK. Do the work in the mii_phy_tick() subroutine if appropriate. . Call mii_phy_update() to trigger the callbacks.
Diffstat (limited to 'sys/dev/mii/mlphy.c')
-rw-r--r--sys/dev/mii/mlphy.c31
1 files changed, 13 insertions, 18 deletions
diff --git a/sys/dev/mii/mlphy.c b/sys/dev/mii/mlphy.c
index decb391..d39362a 100644
--- a/sys/dev/mii/mlphy.c
+++ b/sys/dev/mii/mlphy.c
@@ -315,24 +315,16 @@ mlphy_service(xsc, mii, cmd)
return (0);
/*
- * Only used for autonegotiation.
- */
- if (IFM_SUBTYPE(ife->ifm_media) != IFM_AUTO)
- return (0);
-
- /*
* Is the interface even up?
*/
if ((mii->mii_ifp->if_flags & IFF_UP) == 0)
return (0);
/*
- * Only retry autonegotiation every 5 seconds.
+ * Only used for autonegotiation.
*/
- if (++sc->mii_ticks != 5)
- return (0);
-
- sc->mii_ticks = 0;
+ if (IFM_SUBTYPE(ife->ifm_media) != IFM_AUTO)
+ break;
/*
* Check to see if we have link. If we do, we don't
@@ -355,11 +347,17 @@ mlphy_service(xsc, mii, cmd)
if (!msc->ml_linked) {
msc->ml_linked = 1;
mlphy_status(sc);
- break;
}
- return(0);
+ break;
}
+ /*
+ * Only retry autonegotiation every 5 seconds.
+ */
+ if (++sc->mii_ticks != 5)
+ return (0);
+
+ sc->mii_ticks = 0;
msc->ml_linked = 0;
mii->mii_media_active = IFM_NONE;
mii_phy_reset(sc);
@@ -382,15 +380,12 @@ mlphy_service(xsc, mii, cmd)
(void) (*other->mii_service)(other, mii, MII_POLLSTAT);
other->mii_inst = other_inst;
sc->mii_active = other->mii_active;
+ sc->mii_status = other->mii_status;
} else
ukphy_status(sc);
/* Callback if something changed. */
- if (sc->mii_active != mii->mii_media_active || cmd == MII_MEDIACHG) {
- MIIBUS_STATCHG(sc->mii_dev);
- sc->mii_active = mii->mii_media_active;
- }
-
+ mii_phy_update(sc, cmd);
return (0);
}
OpenPOWER on IntegriCloud