From 08bec554c23a918066f62aaf3f61269f2146968d Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Thu, 30 Nov 2006 01:38:54 +0000 Subject: [PATCH] Properly set ifmedia_entry.ifm_data when nge(4) tries to camouflage an isolation media entry, and restore it once media isolation is done. Reported-by: Steve O'Hara-Smith Tested-by: Steve O'Hara-Smith Reviewed-by: dillon@ --- sys/dev/netif/nge/if_nge.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/sys/dev/netif/nge/if_nge.c b/sys/dev/netif/nge/if_nge.c index 2a9867dd0f..66642bef62 100644 --- a/sys/dev/netif/nge/if_nge.c +++ b/sys/dev/netif/nge/if_nge.c @@ -31,7 +31,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/dev/nge/if_nge.c,v 1.13.2.13 2003/02/05 22:03:57 mbr Exp $ - * $DragonFly: src/sys/dev/netif/nge/if_nge.c,v 1.39 2006/10/25 20:55:58 dillon Exp $ + * $DragonFly: src/sys/dev/netif/nge/if_nge.c,v 1.40 2006/11/30 01:38:54 sephe Exp $ */ /* @@ -2025,7 +2025,7 @@ nge_stop(struct nge_softc *sc) struct ifnet *ifp = &sc->arpcom.ac_if; struct ifmedia_entry *ifm; struct mii_data *mii; - int i, itmp, mtmp; + int i, itmp, mtmp, dtmp; ifp->if_timer = 0; if (sc->nge_tbi) @@ -2053,13 +2053,16 @@ nge_stop(struct nge_softc *sc) ifm = sc->nge_ifmedia.ifm_cur; else ifm = mii->mii_media.ifm_cur; - + mtmp = ifm->ifm_media; + dtmp = ifm->ifm_data; ifm->ifm_media = IFM_ETHER|IFM_NONE; - + ifm->ifm_data = MII_MEDIA_NONE; + if (!sc->nge_tbi) mii_mediachg(mii); ifm->ifm_media = mtmp; + ifm->ifm_data = dtmp; ifp->if_flags = itmp; sc->nge_link = 0; -- 2.41.0