Index: sys/dev/gem/if_gem.c =================================================================== --- sys/dev/gem/if_gem.c (revision 222469) +++ sys/dev/gem/if_gem.c (working copy) @@ -2004,21 +2004,25 @@ device_printf(sc->sc_dev, "%s: status change\n", __func__); #endif - if ((sc->sc_mii->mii_media_status & IFM_ACTIVE) != 0 && - IFM_SUBTYPE(sc->sc_mii->mii_media_active) != IFM_NONE) - sc->sc_flags |= GEM_LINK; - else - sc->sc_flags &= ~GEM_LINK; - - switch (IFM_SUBTYPE(sc->sc_mii->mii_media_active)) { - case IFM_1000_SX: - case IFM_1000_LX: - case IFM_1000_CX: - case IFM_1000_T: - gigabit = 1; - break; - default: - gigabit = 0; + gigabit = 0; + sc->sc_flags &= ~GEM_LINK; + if ((sc->sc_mii->mii_media_status & (IFM_ACTIVE | IFM_AVALID)) == + (IFM_ACTIVE | IFM_AVALID)) { + switch (IFM_SUBTYPE(sc->sc_mii->mii_media_active)) { + case IFM_10_T: + case IFM_100_TX: + sc->sc_flags |= GEM_LINK; + break; + case IFM_1000_SX: + case IFM_1000_LX: + case IFM_1000_CX: + case IFM_1000_T: + sc->sc_flags |= GEM_LINK; + gigabit = 1; + break; + default: + break; + } } /*