Do the iwn(4) panic reinitialisation under IWN_LOCK().
I've checked each of the functions being called and there's either a _locked version or it's supposed to be called with IWN_LOCK() held.
This commit is contained in:
parent
168f4ee0a8
commit
8f1d4b2dd6
@ -8465,9 +8465,10 @@ iwn_panicked(void *arg0, int pending)
|
||||
device_printf(sc->sc_dev, "%s: controller panicked, iv_state = %d; "
|
||||
"resetting...\n", __func__, vap->iv_state);
|
||||
|
||||
iwn_stop(sc);
|
||||
iwn_init(sc);
|
||||
iwn_start(sc->sc_ifp);
|
||||
IWN_LOCK(sc);
|
||||
|
||||
iwn_stop_locked(sc);
|
||||
iwn_init_locked(sc);
|
||||
if (vap->iv_state >= IEEE80211_S_AUTH &&
|
||||
(error = iwn_auth(sc, vap)) != 0) {
|
||||
device_printf(sc->sc_dev,
|
||||
@ -8478,6 +8479,11 @@ iwn_panicked(void *arg0, int pending)
|
||||
device_printf(sc->sc_dev,
|
||||
"%s: could not move to run state\n", __func__);
|
||||
}
|
||||
|
||||
/* Only run start once the NIC is in a useful state, like associated */
|
||||
iwn_start_locked(sc->sc_ifp);
|
||||
|
||||
IWN_UNLOCK(sc);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Loading…
x
Reference in New Issue
Block a user