aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/tx.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2013-02-13 15:39:57 +0100
committerJohannes Berg <johannes.berg@intel.com>2013-02-15 09:41:10 +0100
commit89afe614c0c737fd40eda1f8c8ef686246cf3cb6 (patch)
tree6fc8c817ee6ebf13c60d5d4d07c2c69609fcd5d0 /net/mac80211/tx.c
parentmac80211: fix ieee80211_sta_tx_notify for nullfunc (diff)
downloadlinux-dev-89afe614c0c737fd40eda1f8c8ef686246cf3cb6.tar.xz
linux-dev-89afe614c0c737fd40eda1f8c8ef686246cf3cb6.zip
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/tx.c')
-rw-r--r--net/mac80211/tx.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 71385bfc15d6..f4c89f506e9d 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -2818,6 +2818,8 @@ void __ieee80211_tx_skb_tid_band(struct ieee80211_sub_if_data *sdata,
skb_set_queue_mapping(skb, ac);
skb->priority = tid;
+ skb->dev = sdata->dev;
+
/*
* The other path calling ieee80211_xmit is from the tasklet,
* and while we can handle concurrent transmissions locking