--- //depot/vendor/freebsd/src/sys/pci/if_pcn.c 2005/08/05 16:05:27 +++ //depot/user/jhb/acpipci/pci/if_pcn.c 2005/08/08 21:10:35 @@ -588,7 +588,7 @@ eaddr[1] = CSR_READ_4(sc, PCN_IO32_APROM01); sc->pcn_unit = unit; - callout_init(&sc->pcn_stat_callout, CALLOUT_MPSAFE); + callout_init_mtx(&sc->pcn_stat_callout, &sc->pcn_mtx, 0); sc->pcn_ldata = contigmalloc(sizeof(struct pcn_list_data), M_DEVBUF, M_NOWAIT, 0, 0xffffffff, PAGE_SIZE, 0); @@ -675,7 +675,6 @@ pcn_reset(sc); pcn_stop(sc); PCN_UNLOCK(sc); - callout_drain(&sc->pcn_stat_callout); ether_ifdetach(ifp); if_free(ifp); } @@ -926,11 +925,7 @@ sc = xsc; ifp = sc->pcn_ifp; - PCN_LOCK(sc); - if (!(ifp->if_flags & IFF_RUNNING)) { - PCN_UNLOCK(sc); - return; - } + PCN_LOCK_ASSERT(sc); mii = device_get_softc(sc->pcn_miibus); mii_tick(mii); @@ -949,8 +944,6 @@ callout_reset(&sc->pcn_stat_callout, hz, pcn_tick, sc); - PCN_UNLOCK(sc); - return; }