aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211_i.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2013-02-13 09:39:57 -0500
committerJohannes Berg <johannes.berg@intel.com>2013-02-15 03:41:10 -0500
commit89afe614c0c737fd40eda1f8c8ef686246cf3cb6 (patch)
tree6fc8c817ee6ebf13c60d5d4d07c2c69609fcd5d0 /net/mac80211/ieee80211_i.h
parentcab1c7fd8024ce896119535b5b067224b0b699aa (diff)
mac80211: fix auth/assoc timeout handling
In my commit 1672c0e31917f49d31d30d79067103432bc20cc7 ("mac80211: start auth/assoc timeout on frame status") I broke auth/assoc timeout handling: in case we wait for the TX status, it now leaves the timeout field set to 0, which is a valid time and can compare as being before now ("jiffies"). Thus, if the work struct runs for some other reason, the auth/assoc is treated as having timed out. Fix this by introducing a separate "timeout_started" variable that tracks whether the timeout has started and is checked before timing out. Additionally, for proper TX status handling the change requires that the skb->dev pointer is set up for all the frames, so set it up for all frames in mac80211. Reported-by: Wojciech Dubowik <Wojciech.Dubowik@neratec.com> Tested-by: Wojciech Dubowik <Wojciech.Dubowik@neratec.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r--net/mac80211/ieee80211_i.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 0e0a9776be39..52bf954ef61c 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -343,6 +343,7 @@ struct ieee80211_mgd_auth_data {
343 u8 key[WLAN_KEY_LEN_WEP104]; 343 u8 key[WLAN_KEY_LEN_WEP104];
344 u8 key_len, key_idx; 344 u8 key_len, key_idx;
345 bool done; 345 bool done;
346 bool timeout_started;
346 347
347 u16 sae_trans, sae_status; 348 u16 sae_trans, sae_status;
348 size_t data_len; 349 size_t data_len;
@@ -364,6 +365,7 @@ struct ieee80211_mgd_assoc_data {
364 bool wmm, uapsd; 365 bool wmm, uapsd;
365 bool have_beacon, need_beacon; 366 bool have_beacon, need_beacon;
366 bool synced; 367 bool synced;
368 bool timeout_started;
367 369
368 u8 ap_ht_param; 370 u8 ap_ht_param;
369 371