From e09c5145431a7769c75f7652ee525b370ab153a1 Mon Sep 17 00:00:00 2001 From: yongari Date: Thu, 23 Feb 2012 06:35:18 +0000 Subject: With r232015, sf(4) gets correct speed/duplex of established link. Add more strict speed check in sf_miibus_statchg() and do not touch MAC config registers when driver lost a link. --- sys/dev/sf/if_sf.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'sys/dev/sf') diff --git a/sys/dev/sf/if_sf.c b/sys/dev/sf/if_sf.c index abea0bc..4174886 100644 --- a/sys/dev/sf/if_sf.c +++ b/sys/dev/sf/if_sf.c @@ -403,11 +403,19 @@ sf_miibus_statchg(device_t dev) (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) return; - if (mii->mii_media_status & IFM_ACTIVE) { - if (IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) + sc->sf_link = 0; + if ((mii->mii_media_status & (IFM_ACTIVE | IFM_AVALID)) == + (IFM_ACTIVE | IFM_AVALID)) { + switch (IFM_SUBTYPE(mii->mii_media_active)) { + case IFM_10_T: + case IFM_100_TX: + case IFM_100_FX: sc->sf_link = 1; - } else - sc->sf_link = 0; + break; + } + } + if (sc->sf_link == 0) + return; val = csr_read_4(sc, SF_MACCFG_1); val &= ~SF_MACCFG1_FULLDUPLEX; -- cgit v1.1