Drain the tasks before the interface stop call in case a restart was queued.

This commit is contained in:
thompsa 2009-05-08 13:44:33 +00:00
parent 6f950b00be
commit 5d4a7e0146
2 changed files with 6 additions and 6 deletions

View File

@ -404,13 +404,13 @@ ipw_detach(device_t dev)
struct ifnet *ifp = sc->sc_ifp;
struct ieee80211com *ic = ifp->if_l2com;
ieee80211_draintask(ic, &sc->sc_init_task);
ipw_stop(sc);
bpfdetach(ifp);
ieee80211_ifdetach(ic);
callout_drain(&sc->sc_wdtimer);
ieee80211_draintask(ic, &sc->sc_init_task);
ipw_release(sc);

View File

@ -459,17 +459,17 @@ iwi_detach(device_t dev)
struct ifnet *ifp = sc->sc_ifp;
struct ieee80211com *ic = ifp->if_l2com;
iwi_stop(sc);
bpfdetach(ifp);
ieee80211_ifdetach(ic);
/* NB: do early to drain any pending tasks */
ieee80211_draintask(ic, &sc->sc_radiontask);
ieee80211_draintask(ic, &sc->sc_radiofftask);
ieee80211_draintask(ic, &sc->sc_restarttask);
ieee80211_draintask(ic, &sc->sc_disassoctask);
iwi_stop(sc);
bpfdetach(ifp);
ieee80211_ifdetach(ic);
iwi_put_firmware(sc);
iwi_release_fw_dma(sc);