aboutsummaryrefslogtreecommitdiff
path: root/net/mac80211/status.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2011-09-29 16:04:28 +0200
committerJohn W. Linville <linville@tuxdriver.com>2011-09-30 15:57:11 -0400
commit60750397122fe0fb81a6e52fd790b3f749b6e010 (patch)
tree3efa9772e7428d800fd2d236c558ca37c0ef7bb4 /net/mac80211/status.c
parentc868cb35d013896ab6a80a554fb88baef06cedcd (diff)
mac80211: also expire filtered frames
mac80211 will expire normal PS-buffered frames, but if the device rejected some frames for a sleeping station, these won't be on the ps_tx_buf queue but on the tx_filtered queue instead; this is done to avoid reordering. However, mac80211 will not expire frames from the filtered queue, let's fix that. Also add a more comments to what all this expiry is doing and how it works. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/status.c')
-rw-r--r--net/mac80211/status.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/net/mac80211/status.c b/net/mac80211/status.c
index 8354dcb0e1e..783542a8ea2 100644
--- a/net/mac80211/status.c
+++ b/net/mac80211/status.c
@@ -107,6 +107,11 @@ static void ieee80211_handle_filtered_frame(struct ieee80211_local *local,
skb_queue_len(&sta->tx_filtered) < STA_MAX_TX_BUFFER) {
skb_queue_tail(&sta->tx_filtered, skb);
sta_info_recalc_tim(sta);
+
+ if (!timer_pending(&local->sta_cleanup))
+ mod_timer(&local->sta_cleanup,
+ round_jiffies(jiffies +
+ STA_INFO_CLEANUP_INTERVAL));
return;
}