diff options
author | jlemon <jlemon@FreeBSD.org> | 2001-09-29 19:28:31 +0000 |
---|---|---|
committer | jlemon <jlemon@FreeBSD.org> | 2001-09-29 19:28:31 +0000 |
commit | 7265fc9a25abf1e7ce5c2f861868d50ff0cb7ac7 (patch) | |
tree | 059d83b39e680ff22f9e9aee5eb54410ca5ecbe3 | |
parent | 7ec889372d0e5b4a87c80ff2e066f5c6419b2b28 (diff) | |
download | FreeBSD-src-7265fc9a25abf1e7ce5c2f861868d50ff0cb7ac7.zip FreeBSD-src-7265fc9a25abf1e7ce5c2f861868d50ff0cb7ac7.tar.gz |
Do not call mii_pollstat() from within device tick routines; the status
information is updated by mii_tick().
Pointed out by: wpaul (a while back)
-rw-r--r-- | sys/dev/dc/if_dc.c | 13 | ||||
-rw-r--r-- | sys/dev/sf/if_sf.c | 13 | ||||
-rw-r--r-- | sys/dev/sk/if_sk.c | 2 | ||||
-rw-r--r-- | sys/pci/if_dc.c | 13 | ||||
-rw-r--r-- | sys/pci/if_pcn.c | 14 | ||||
-rw-r--r-- | sys/pci/if_sf.c | 13 | ||||
-rw-r--r-- | sys/pci/if_sis.c | 12 | ||||
-rw-r--r-- | sys/pci/if_sk.c | 2 | ||||
-rw-r--r-- | sys/pci/if_ste.c | 12 |
9 files changed, 39 insertions, 55 deletions
diff --git a/sys/dev/dc/if_dc.c b/sys/dev/dc/if_dc.c index 8cf4276..0d22729 100644 --- a/sys/dev/dc/if_dc.c +++ b/sys/dev/dc/if_dc.c @@ -2708,14 +2708,11 @@ static void dc_tick(xsc) * that time, packets will stay in the send queue, and once the * link comes up, they will be flushed out to the wire. */ - if (!sc->dc_link) { - mii_pollstat(mii); - if (mii->mii_media_status & IFM_ACTIVE && - IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) { - sc->dc_link++; - if (ifp->if_snd.ifq_head != NULL) - dc_start(ifp); - } + if (!sc->dc_link && mii->mii_media_status & IFM_ACTIVE && + IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) { + sc->dc_link++; + if (ifp->if_snd.ifq_head != NULL) + dc_start(ifp); } if (sc->dc_flags & DC_21143_NWAY && !sc->dc_link) diff --git a/sys/dev/sf/if_sf.c b/sys/dev/sf/if_sf.c index c0c05d5..487b48f 100644 --- a/sys/dev/sf/if_sf.c +++ b/sys/dev/sf/if_sf.c @@ -1489,13 +1489,12 @@ static void sf_stats_update(xsc) stats.sf_tx_multi_colls + stats.sf_tx_excess_colls; mii_tick(mii); - if (!sc->sf_link) { - mii_pollstat(mii); - if (mii->mii_media_status & IFM_ACTIVE && - IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) - sc->sf_link++; - if (ifp->if_snd.ifq_head != NULL) - sf_start(ifp); + + if (!sc->sf_link && mii->mii_media_status & IFM_ACTIVE && + IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) { + sc->sf_link++; + if (ifp->if_snd.ifq_head != NULL) + sf_start(ifp); } sc->sf_stat_ch = timeout(sf_stats_update, sc, hz); diff --git a/sys/dev/sk/if_sk.c b/sys/dev/sk/if_sk.c index 9c842d5..8604209 100644 --- a/sys/dev/sk/if_sk.c +++ b/sys/dev/sk/if_sk.c @@ -1691,7 +1691,6 @@ static void sk_tick(xsc_if) SK_XM_CLRBIT_2(sc_if, XM_IMR, XM_IMR_GP0_SET); SK_XM_READ_2(sc_if, XM_ISR); mii_tick(mii); - mii_pollstat(mii); untimeout(sk_tick, sc_if, sc_if->sk_tick_ch); SK_IF_UNLOCK(sc_if); @@ -1744,7 +1743,6 @@ static void sk_intr_bcom(sc_if) SK_IF_WRITE_1(sc_if, 0, SK_LINKLED1_CTL, SK_LINKLED_ON|SK_LINKLED_LINKSYNC_OFF| SK_LINKLED_BLINK_OFF); - mii_pollstat(mii); } else { mii_tick(mii); sc_if->sk_tick_ch = timeout(sk_tick, sc_if, hz); diff --git a/sys/pci/if_dc.c b/sys/pci/if_dc.c index 8cf4276..0d22729 100644 --- a/sys/pci/if_dc.c +++ b/sys/pci/if_dc.c @@ -2708,14 +2708,11 @@ static void dc_tick(xsc) * that time, packets will stay in the send queue, and once the * link comes up, they will be flushed out to the wire. */ - if (!sc->dc_link) { - mii_pollstat(mii); - if (mii->mii_media_status & IFM_ACTIVE && - IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) { - sc->dc_link++; - if (ifp->if_snd.ifq_head != NULL) - dc_start(ifp); - } + if (!sc->dc_link && mii->mii_media_status & IFM_ACTIVE && + IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) { + sc->dc_link++; + if (ifp->if_snd.ifq_head != NULL) + dc_start(ifp); } if (sc->dc_flags & DC_21143_NWAY && !sc->dc_link) diff --git a/sys/pci/if_pcn.c b/sys/pci/if_pcn.c index 1dd388b..580f5e9 100644 --- a/sys/pci/if_pcn.c +++ b/sys/pci/if_pcn.c @@ -927,16 +927,16 @@ static void pcn_tick(xsc) mii = device_get_softc(sc->pcn_miibus); mii_tick(mii); + /* link just died */ if (sc->pcn_link & !(mii->mii_media_status & IFM_ACTIVE)) sc->pcn_link = 0; - if (!sc->pcn_link) { - mii_pollstat(mii); - if (mii->mii_media_status & IFM_ACTIVE && - IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) - sc->pcn_link++; - if (ifp->if_snd.ifq_head != NULL) - pcn_start(ifp); + /* link just came up, restart */ + if (!sc->pcn_link && mii->mii_media_status & IFM_ACTIVE && + IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) { + sc->pcn_link++; + if (ifp->if_snd.ifq_head != NULL) + pcn_start(ifp); } sc->pcn_stat_ch = timeout(pcn_tick, sc, hz); diff --git a/sys/pci/if_sf.c b/sys/pci/if_sf.c index c0c05d5..487b48f 100644 --- a/sys/pci/if_sf.c +++ b/sys/pci/if_sf.c @@ -1489,13 +1489,12 @@ static void sf_stats_update(xsc) stats.sf_tx_multi_colls + stats.sf_tx_excess_colls; mii_tick(mii); - if (!sc->sf_link) { - mii_pollstat(mii); - if (mii->mii_media_status & IFM_ACTIVE && - IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) - sc->sf_link++; - if (ifp->if_snd.ifq_head != NULL) - sf_start(ifp); + + if (!sc->sf_link && mii->mii_media_status & IFM_ACTIVE && + IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) { + sc->sf_link++; + if (ifp->if_snd.ifq_head != NULL) + sf_start(ifp); } sc->sf_stat_ch = timeout(sf_stats_update, sc, hz); diff --git a/sys/pci/if_sis.c b/sys/pci/if_sis.c index 0e4f0fe..19f6d32 100644 --- a/sys/pci/if_sis.c +++ b/sys/pci/if_sis.c @@ -1417,13 +1417,11 @@ static void sis_tick(xsc) mii = device_get_softc(sc->sis_miibus); mii_tick(mii); - if (!sc->sis_link) { - mii_pollstat(mii); - if (mii->mii_media_status & IFM_ACTIVE && - IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) - sc->sis_link++; - if (ifp->if_snd.ifq_head != NULL) - sis_start(ifp); + if (!sc->sis_link && mii->mii_media_status & IFM_ACTIVE && + IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) { + sc->sis_link++; + if (ifp->if_snd.ifq_head != NULL) + sis_start(ifp); } sc->sis_stat_ch = timeout(sis_tick, sc, hz); diff --git a/sys/pci/if_sk.c b/sys/pci/if_sk.c index 9c842d5..8604209 100644 --- a/sys/pci/if_sk.c +++ b/sys/pci/if_sk.c @@ -1691,7 +1691,6 @@ static void sk_tick(xsc_if) SK_XM_CLRBIT_2(sc_if, XM_IMR, XM_IMR_GP0_SET); SK_XM_READ_2(sc_if, XM_ISR); mii_tick(mii); - mii_pollstat(mii); untimeout(sk_tick, sc_if, sc_if->sk_tick_ch); SK_IF_UNLOCK(sc_if); @@ -1744,7 +1743,6 @@ static void sk_intr_bcom(sc_if) SK_IF_WRITE_1(sc_if, 0, SK_LINKLED1_CTL, SK_LINKLED_ON|SK_LINKLED_LINKSYNC_OFF| SK_LINKLED_BLINK_OFF); - mii_pollstat(mii); } else { mii_tick(mii); sc_if->sk_tick_ch = timeout(sk_tick, sc_if, hz); diff --git a/sys/pci/if_ste.c b/sys/pci/if_ste.c index b68ccdd..554b070 100644 --- a/sys/pci/if_ste.c +++ b/sys/pci/if_ste.c @@ -864,13 +864,11 @@ static void ste_stats_update(xsc) stats.ste_multi_colls + stats.ste_late_colls; mii_tick(mii); - if (!sc->ste_link) { - mii_pollstat(mii); - if (mii->mii_media_status & IFM_ACTIVE && - IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) - sc->ste_link++; - if (ifp->if_snd.ifq_head != NULL) - ste_start(ifp); + if (!sc->ste_link && mii->mii_media_status & IFM_ACTIVE && + IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) { + sc->ste_link++; + if (ifp->if_snd.ifq_head != NULL) + ste_start(ifp); } sc->ste_stat_ch = timeout(ste_stats_update, sc, hz); |