summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorthompsa <thompsa@FreeBSD.org>2009-05-08 13:44:33 +0000
committerthompsa <thompsa@FreeBSD.org>2009-05-08 13:44:33 +0000
commit5d4a7e01467ffe614556f7fd960d0f9c431b700a (patch)
treee0914f90353fb52205ca386771dbe9d50e7e386d /sys/dev
parent6f950b00be2c5bff65afbec0c233123bd9b699e1 (diff)
downloadFreeBSD-src-5d4a7e01467ffe614556f7fd960d0f9c431b700a.zip
FreeBSD-src-5d4a7e01467ffe614556f7fd960d0f9c431b700a.tar.gz
Drain the tasks before the interface stop call in case a restart was queued.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ipw/if_ipw.c2
-rw-r--r--sys/dev/iwi/if_iwi.c10
2 files changed, 6 insertions, 6 deletions
diff --git a/sys/dev/ipw/if_ipw.c b/sys/dev/ipw/if_ipw.c
index 9d67724..eac9091 100644
--- a/sys/dev/ipw/if_ipw.c
+++ b/sys/dev/ipw/if_ipw.c
@@ -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);
diff --git a/sys/dev/iwi/if_iwi.c b/sys/dev/iwi/if_iwi.c
index 6957f9b..b04403b 100644
--- a/sys/dev/iwi/if_iwi.c
+++ b/sys/dev/iwi/if_iwi.c
@@ -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);
OpenPOWER on IntegriCloud