Index: sys/dev/iwm/if_iwm.c =================================================================== --- sys/dev/iwm/if_iwm.c +++ sys/dev/iwm/if_iwm.c @@ -3834,6 +3834,7 @@ iwm_watchdog(void *arg) { struct iwm_softc *sc = arg; + struct ieee80211com *ic = &sc->sc_ic; if (sc->sc_tx_timer > 0) { if (--sc->sc_tx_timer == 0) { @@ -3841,8 +3842,8 @@ #ifdef IWM_DEBUG iwm_nic_error(sc); #endif - iwm_stop(sc); - counter_u64_add(sc->sc_ic.ic_oerrors, 1); + ieee80211_restart_all(ic); + counter_u64_add(ic->ic_oerrors, 1); return; } } @@ -4356,10 +4357,10 @@ handled |= (r1 & (IWM_CSR_INT_BIT_ALIVE /*| IWM_CSR_INT_BIT_SCD*/)); if (r1 & IWM_CSR_INT_BIT_SW_ERR) { -#ifdef IWM_DEBUG - int i; struct ieee80211com *ic = &sc->sc_ic; +#ifdef IWM_DEBUG struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); + int i; iwm_nic_error(sc); @@ -4379,7 +4380,7 @@ #endif device_printf(sc->sc_dev, "fatal firmware error\n"); - iwm_stop(sc); + ieee80211_restart_all(ic); rv = 1; goto out;