From 1d904643a88e5b29ae3dd041eb90996b410a0821 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Thu, 3 May 2007 14:09:22 +0000 Subject: [PATCH] Restore part of old behaviour of bge_tick() -- if link is up, then don't call mii_tick(). Mii_tick() will read and write various PHY registers. For bge(4), PHY accessing registers normally involves flipping AUTOPOLL bit of BGE_MI_MODE, which trigers interrupts about link state changing. # This changing restores netperf UDP_RR --- sys/dev/netif/bge/if_bge.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sys/dev/netif/bge/if_bge.c b/sys/dev/netif/bge/if_bge.c index 0988eb5548..04facfb383 100644 --- a/sys/dev/netif/bge/if_bge.c +++ b/sys/dev/netif/bge/if_bge.c @@ -31,7 +31,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/dev/bge/if_bge.c,v 1.3.2.39 2005/07/03 03:41:18 silby Exp $ - * $DragonFly: src/sys/dev/netif/bge/if_bge.c,v 1.73 2007/05/02 14:34:10 sephe Exp $ + * $DragonFly: src/sys/dev/netif/bge/if_bge.c,v 1.74 2007/05/03 14:09:22 sephe Exp $ * */ @@ -2213,7 +2213,7 @@ bge_tick(void *xsc) */ sc->bge_link_evt++; BGE_SETBIT(sc, BGE_MISC_LOCAL_CTL, BGE_MLC_INTR_SET); - } else { + } else if (!sc->bge_link) { mii_tick(device_get_softc(sc->bge_miibus)); } @@ -2669,6 +2669,7 @@ bge_ifmedia_upd(struct ifnet *ifp) struct mii_data *mii = device_get_softc(sc->bge_miibus); sc->bge_link_evt++; + sc->bge_link = 0; if (mii->mii_instance) { struct mii_softc *miisc; -- 2.11.4.GIT