summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2012-10-05 03:35:38 +0000
committeryongari <yongari@FreeBSD.org>2012-10-05 03:35:38 +0000
commitf70671c7a8c40470149a8ca63ccf135cdf385ad5 (patch)
tree4130163e445b67e69fbc25fd51e0122c879c1a9b
parent38242b55020b9f492856f4b2557adaee74914ac2 (diff)
downloadFreeBSD-src-f70671c7a8c40470149a8ca63ccf135cdf385ad5.zip
FreeBSD-src-f70671c7a8c40470149a8ca63ccf135cdf385ad5.tar.gz
Don't touch EMAC Mode and TX/RX MAC Mode register when driver is
not running.
-rw-r--r--sys/dev/bge/if_bge.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c
index 4ddcd8c..8cfe51e 100644
--- a/sys/dev/bge/if_bge.c
+++ b/sys/dev/bge/if_bge.c
@@ -896,7 +896,10 @@ bge_miibus_statchg(device_t dev)
{
struct bge_softc *sc;
struct mii_data *mii;
+
sc = device_get_softc(dev);
+ if ((sc->bge_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ return;
mii = device_get_softc(sc->bge_miibus);
if ((mii->mii_media_status & (IFM_ACTIVE | IFM_AVALID)) ==
@@ -5054,11 +5057,11 @@ bge_init_locked(struct bge_softc *sc)
bge_writembx(sc, BGE_MBX_IRQ0_LO, 0);
}
- bge_ifmedia_upd_locked(ifp);
-
ifp->if_drv_flags |= IFF_DRV_RUNNING;
ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ bge_ifmedia_upd_locked(ifp);
+
callout_reset(&sc->bge_stat_ch, hz, bge_tick, sc);
}
OpenPOWER on IntegriCloud