summaryrefslogtreecommitdiffstats
path: root/sys/dev/mii/pnaphy.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/mii/pnaphy.c')
-rw-r--r--sys/dev/mii/pnaphy.c33
1 files changed, 3 insertions, 30 deletions
diff --git a/sys/dev/mii/pnaphy.c b/sys/dev/mii/pnaphy.c
index bb9e006..46e2eae 100644
--- a/sys/dev/mii/pnaphy.c
+++ b/sys/dev/mii/pnaphy.c
@@ -110,13 +110,11 @@ pnaphy_attach(device_t dev)
mii = ma->mii_data;
LIST_INSERT_HEAD(&mii->mii_phys, sc, mii_list);
- sc->mii_inst = mii->mii_instance;
+ sc->mii_inst = mii->mii_instance++;
sc->mii_phy = ma->mii_phyno;
sc->mii_service = pnaphy_service;
sc->mii_pdata = mii;
- mii->mii_instance++;
-
sc->mii_flags |= MIIF_NOISOLATE;
#define ADD(m, c) ifmedia_add(&mii->mii_media, (m), (c), NULL)
@@ -124,8 +122,7 @@ pnaphy_attach(device_t dev)
mii_phy_reset(sc);
- sc->mii_capabilities =
- PHY_READ(sc, MII_BMSR) & ma->mii_capmask;
+ sc->mii_capabilities = PHY_READ(sc, MII_BMSR) & ma->mii_capmask;
device_printf(dev, " ");
if ((sc->mii_capabilities & BMSR_MEDIAMASK) == 0)
printf("no media present");
@@ -133,8 +130,6 @@ pnaphy_attach(device_t dev)
ADD(IFM_MAKEWORD(IFM_ETHER, IFM_HPNA_1, 0, sc->mii_inst), 0);
PRINT("HomePNA");
}
- ADD(IFM_MAKEWORD(IFM_ETHER, IFM_NONE, 0, sc->mii_inst),
- BMCR_ISO);
printf("\n");
@@ -150,29 +145,13 @@ static int
pnaphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd)
{
struct ifmedia_entry *ife = mii->mii_media.ifm_cur;
- int reg;
switch (cmd) {
case MII_POLLSTAT:
- /*
- * If we're not polling our PHY instance, just return.
- */
- if (IFM_INST(ife->ifm_media) != sc->mii_inst)
- return (0);
break;
case MII_MEDIACHG:
/*
- * If the media indicates a different PHY instance,
- * isolate ourselves.
- */
- if (IFM_INST(ife->ifm_media) != sc->mii_inst) {
- reg = PHY_READ(sc, MII_BMCR);
- PHY_WRITE(sc, MII_BMCR, reg | BMCR_ISO);
- return (0);
- }
-
- /*
* If the interface is not up, don't do anything.
*/
if ((mii->mii_ifp->if_flags & IFF_UP) == 0)
@@ -188,18 +167,12 @@ pnaphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd)
/*
* BMCR data is stored in the ifmedia entry.
*/
- PHY_WRITE(sc, MII_ANAR,
- mii_anar(ife->ifm_media));
+ PHY_WRITE(sc, MII_ANAR, mii_anar(ife->ifm_media));
PHY_WRITE(sc, MII_BMCR, ife->ifm_data);
}
break;
case MII_TICK:
- /*
- * If we're not currently selected, just return.
- */
- if (IFM_INST(ife->ifm_media) != sc->mii_inst)
- return (0);
if (mii_phy_tick(sc) == EJUSTRETURN)
return (0);
break;
OpenPOWER on IntegriCloud