Date: Thu, 14 Aug 2003 15:03:40 -0700 (PDT) From: Sam Leffler <sam@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 36140 for review Message-ID: <200308142203.h7EM3eMt084648@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=36140 Change 36140 by sam@sam_ebb on 2003/08/14 15:03:18 re-enable MPSAFE operation (somehow lost) Affected files ... .. //depot/projects/netperf/sys/pci/if_sis.c#5 edit .. //depot/projects/netperf/sys/pci/if_sisreg.h#2 edit Differences ... ==== //depot/projects/netperf/sys/pci/if_sis.c#5 (text+ko) ==== @@ -1228,7 +1228,7 @@ printf("sis%d: Ethernet address: %6D\n", unit, eaddr, ":"); sc->sis_unit = unit; - callout_handle_init(&sc->sis_stat_ch); + callout_init(&sc->sis_stat_ch, CALLOUT_MPSAFE); bcopy(eaddr, (char *)&sc->arpcom.ac_enaddr, ETHER_ADDR_LEN); /* @@ -1388,7 +1388,7 @@ ifp->if_capabilities |= IFCAP_VLAN_MTU; /* Hook interrupt last to avoid having to lock softc */ - error = bus_setup_intr(dev, sc->sis_irq, INTR_TYPE_NET, + error = bus_setup_intr(dev, sc->sis_irq, INTR_TYPE_NET | INTR_MPSAFE, sis_intr, sc, &sc->sis_intrhand); if (error) { @@ -1751,7 +1751,7 @@ sis_start(ifp); } - sc->sis_stat_ch = timeout(sis_tick, sc, hz); + callout_reset(&sc->sis_stat_ch, hz, sis_tick, sc); sc->in_tick = 0; SIS_UNLOCK(sc); @@ -1967,6 +1967,7 @@ struct ifnet *ifp; { struct sis_softc *sc; + struct mbuf *m_head = NULL; u_int32_t idx; sc = ifp->if_softc; @@ -1976,15 +1977,15 @@ SIS_UNLOCK(sc); return; } + + idx = sc->sis_cdata.sis_tx_prod; + if (ifp->if_flags & IFF_OACTIVE) { SIS_UNLOCK(sc); return; } - idx = sc->sis_cdata.sis_tx_prod; while(sc->sis_ldata.sis_tx_list[idx].sis_mbuf == NULL) { - struct mbuf *m_head; - IF_DEQUEUE(&ifp->if_snd, m_head); if (m_head == NULL) break; @@ -2189,7 +2190,7 @@ ifp->if_flags &= ~IFF_OACTIVE; if (!sc->in_tick) - sc->sis_stat_ch = timeout(sis_tick, sc, hz); + callout_reset(&sc->sis_stat_ch, hz, sis_tick, sc); SIS_UNLOCK(sc); @@ -2327,7 +2328,7 @@ ifp = &sc->arpcom.ac_if; ifp->if_timer = 0; - untimeout(sis_tick, sc, sc->sis_stat_ch); + callout_stop(&sc->sis_stat_ch); ifp->if_flags &= ~(IFF_RUNNING | IFF_OACTIVE); #ifdef DEVICE_POLLING ==== //depot/projects/netperf/sys/pci/if_sisreg.h#2 (text+ko) ==== @@ -459,7 +459,7 @@ bus_dma_tag_t sis_parent_tag; bus_dma_tag_t sis_tag; struct sis_ring_data sis_cdata; - struct callout_handle sis_stat_ch; + struct callout sis_stat_ch; #ifdef DEVICE_POLLING int rxcycles; #endif
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200308142203.h7EM3eMt084648>