diff options
author | Johannes Berg <johannes.berg@intel.com> | 2013-02-13 09:39:57 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-02-15 03:41:10 -0500 |
commit | 89afe614c0c737fd40eda1f8c8ef686246cf3cb6 (patch) | |
tree | 6fc8c817ee6ebf13c60d5d4d07c2c69609fcd5d0 /net/mac80211/ieee80211_i.h | |
parent | cab1c7fd8024ce896119535b5b067224b0b699aa (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.h | 2 |
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 | ||