summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/mii/mii_physubr.c12
-rw-r--r--sys/dev/mii/miivar.h5
2 files changed, 14 insertions, 3 deletions
diff --git a/sys/dev/mii/mii_physubr.c b/sys/dev/mii/mii_physubr.c
index fdeddab..3d71061 100644
--- a/sys/dev/mii/mii_physubr.c
+++ b/sys/dev/mii/mii_physubr.c
@@ -530,13 +530,21 @@ mii_phy_detach(device_t dev)
}
const struct mii_phydesc *
-mii_phy_match(const struct mii_attach_args *ma, const struct mii_phydesc *mpd)
+mii_phy_match_gen(const struct mii_attach_args *ma,
+ const struct mii_phydesc *mpd, size_t len)
{
- for (; mpd->mpd_name != NULL; mpd++) {
+ for (; mpd->mpd_name != NULL;
+ mpd = (const struct mii_phydesc *) ((const char *) mpd + len)) {
if (MII_OUI(ma->mii_id1, ma->mii_id2) == mpd->mpd_oui &&
MII_MODEL(ma->mii_id2) == mpd->mpd_model)
return (mpd);
}
return (NULL);
}
+
+const struct mii_phydesc *
+mii_phy_match(const struct mii_attach_args *ma, const struct mii_phydesc *mpd)
+{
+ return (mii_phy_match_gen(ma, mpd, sizeof(struct mii_phydesc)));
+}
diff --git a/sys/dev/mii/miivar.h b/sys/dev/mii/miivar.h
index f1d16f7..a1017a0 100644
--- a/sys/dev/mii/miivar.h
+++ b/sys/dev/mii/miivar.h
@@ -220,7 +220,10 @@ void mii_phy_setmedia(struct mii_softc *sc);
void mii_phy_update(struct mii_softc *, int);
int mii_phy_tick(struct mii_softc *);
-const struct mii_phydesc * mii_phy_match(const struct mii_attach_args *ma, const struct mii_phydesc *mpd);
+const struct mii_phydesc * mii_phy_match(const struct mii_attach_args *ma,
+ const struct mii_phydesc *mpd);
+const struct mii_phydesc * mii_phy_match_gen(const struct mii_attach_args *ma,
+ const struct mii_phydesc *mpd, size_t endlen);
void ukphy_status(struct mii_softc *);
#endif /* _KERNEL */
OpenPOWER on IntegriCloud