aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/iwm/if_iwm.c
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2019-01-24 03:47:04 +0000
committerKyle Evans <kevans@FreeBSD.org>2019-01-24 03:47:04 +0000
commit9a949c99e629f4a0e07a28daa137a3bb52fe9ce8 (patch)
treeb590b60777b6d973a2eb019200bc75a199c6931e /sys/dev/iwm/if_iwm.c
parent002c4a619bbdbf8db6e07af5262411b9b550170f (diff)
downloadsrc-9a949c99e629f4a0e07a28daa137a3bb52fe9ce8.tar.gz
src-9a949c99e629f4a0e07a28daa137a3bb52fe9ce8.zip
iwm - Improve firmware Time Event handling.
* This is a mix of the OpenBSD Git 7fd9664469d1b717a307eebd74aeececbd3c41cc change, and syncing with the Linux iwlwifi code. Taken-From: Linux iwlwifi, and OpenBSD Submitted by: Augustin Cavalier <waddlesplash@gmail.com> (Haiku) Obtained from: DragonFlyBSD (706a3044afd27c3fecfdf57bec1695310e53e228)
Notes
Notes: svn path=/head/; revision=343383
Diffstat (limited to 'sys/dev/iwm/if_iwm.c')
-rw-r--r--sys/dev/iwm/if_iwm.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/sys/dev/iwm/if_iwm.c b/sys/dev/iwm/if_iwm.c
index 965a1eb1d23c..c197d991dd37 100644
--- a/sys/dev/iwm/if_iwm.c
+++ b/sys/dev/iwm/if_iwm.c
@@ -1263,6 +1263,7 @@ iwm_stop_device(struct iwm_softc *sc)
iv->is_uploaded = 0;
}
sc->sc_firmware_state = 0;
+ sc->sc_flags &= ~IWM_FLAG_TE_ACTIVE;
/* device going down, Stop using ICT table */
sc->sc_flags &= ~IWM_FLAG_USE_ICT;
@@ -4050,8 +4051,7 @@ iwm_auth(struct ieee80211vap *vap, struct iwm_softc *sc)
*/
/* XXX duration is in units of TU, not MS */
duration = IWM_MVM_TE_SESSION_PROTECTION_MAX_TIME_MS;
- iwm_mvm_protect_session(sc, iv, duration, 500 /* XXX magic number */);
- DELAY(100);
+ iwm_mvm_protect_session(sc, iv, duration, 500 /* XXX magic number */, TRUE);
error = 0;
out:
@@ -4349,6 +4349,15 @@ iwm_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
in->in_assoc = 0;
}
+ if ((vap->iv_state == IEEE80211_S_AUTH ||
+ vap->iv_state == IEEE80211_S_ASSOC ||
+ vap->iv_state == IEEE80211_S_RUN) &&
+ (nstate == IEEE80211_S_INIT ||
+ nstate == IEEE80211_S_SCAN ||
+ nstate == IEEE80211_S_AUTH)) {
+ iwm_mvm_stop_session_protection(sc, ivp);
+ }
+
if ((vap->iv_state == IEEE80211_S_RUN ||
vap->iv_state == IEEE80211_S_ASSOC) &&
nstate == IEEE80211_S_INIT) {