diff options
author | yongari <yongari@FreeBSD.org> | 2009-12-14 20:17:53 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2009-12-14 20:17:53 +0000 |
commit | 97ba1f5c729e33e1d22a6f92bcdf781fc71f527b (patch) | |
tree | a4ec106f2789dce41e6f735d11afb95634a0e274 /sys/dev/vge/if_vge.c | |
parent | 003a092f8a52d96e983d96137cddf46e616ebf20 (diff) | |
download | FreeBSD-src-97ba1f5c729e33e1d22a6f92bcdf781fc71f527b.zip FreeBSD-src-97ba1f5c729e33e1d22a6f92bcdf781fc71f527b.tar.gz |
Introduce vge_flags member in softc. The vge_flags member will
record device specific bits. Remove vge_link and use vge_flags.
While here, move clearing link state before mii_mediachg() as
mii_mediachg() may affect link state.
Diffstat (limited to 'sys/dev/vge/if_vge.c')
-rw-r--r-- | sys/dev/vge/if_vge.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/sys/dev/vge/if_vge.c b/sys/dev/vge/if_vge.c index a8d2bc3..46b4130 100644 --- a/sys/dev/vge/if_vge.c +++ b/sys/dev/vge/if_vge.c @@ -1577,16 +1577,16 @@ vge_tick(void *xsc) mii = device_get_softc(sc->vge_miibus); mii_tick(mii); - if (sc->vge_link) { + if ((sc->vge_flags & VGE_FLAG_LINK) != 0) { if (!(mii->mii_media_status & IFM_ACTIVE)) { - sc->vge_link = 0; + sc->vge_flags &= ~VGE_FLAG_LINK; if_link_state_change(sc->vge_ifp, LINK_STATE_DOWN); } } else { if (mii->mii_media_status & IFM_ACTIVE && IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) { - sc->vge_link = 1; + sc->vge_flags |= VGE_FLAG_LINK; if_link_state_change(sc->vge_ifp, LINK_STATE_UP); if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) @@ -1868,7 +1868,7 @@ vge_start_locked(struct ifnet *ifp) VGE_LOCK_ASSERT(sc); - if (sc->vge_link == 0 || + if ((sc->vge_flags & VGE_FLAG_LINK) == 0 || (ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) return; @@ -2107,13 +2107,12 @@ vge_init_locked(struct vge_softc *sc) CSR_WRITE_1(sc, VGE_CRS3, VGE_CR3_INT_GMSK); } + sc->vge_flags &= ~VGE_FLAG_LINK; mii_mediachg(mii); ifp->if_drv_flags |= IFF_DRV_RUNNING; ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; callout_reset(&sc->vge_watchdog, hz, vge_watchdog, sc); - - sc->vge_link = 0; } /* |