summaryrefslogtreecommitdiffstats
path: root/sys/dev/vge/if_vge.c
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2009-12-14 20:17:53 +0000
committeryongari <yongari@FreeBSD.org>2009-12-14 20:17:53 +0000
commit97ba1f5c729e33e1d22a6f92bcdf781fc71f527b (patch)
treea4ec106f2789dce41e6f735d11afb95634a0e274 /sys/dev/vge/if_vge.c
parent003a092f8a52d96e983d96137cddf46e616ebf20 (diff)
downloadFreeBSD-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.c11
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;
}
/*
OpenPOWER on IntegriCloud