diff options
author | Johannes Berg <johannes.berg@intel.com> | 2011-09-29 16:04:28 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-09-30 15:57:11 -0400 |
commit | 60750397122fe0fb81a6e52fd790b3f749b6e010 (patch) | |
tree | 3efa9772e7428d800fd2d236c558ca37c0ef7bb4 /net/mac80211/status.c | |
parent | c868cb35d013896ab6a80a554fb88baef06cedcd (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.c | 5 |
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; } |