Date: Sun, 3 Aug 2014 03:51:34 +0000 (UTC) From: Adrian Chadd <adrian@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r269458 - head/sys/dev/iwn Message-ID: <201408030351.s733pYkH067039@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: adrian Date: Sun Aug 3 03:51:33 2014 New Revision: 269458 URL: http://svnweb.freebsd.org/changeset/base/269458 Log: 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. Modified: head/sys/dev/iwn/if_iwn.c Modified: head/sys/dev/iwn/if_iwn.c ============================================================================== --- head/sys/dev/iwn/if_iwn.c Sun Aug 3 03:27:54 2014 (r269457) +++ head/sys/dev/iwn/if_iwn.c Sun Aug 3 03:51:33 2014 (r269458) @@ -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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201408030351.s733pYkH067039>