summaryrefslogtreecommitdiff
path: root/net/mac80211
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2015-04-20 22:53:38 +0300
committerJohannes Berg <johannes.berg@intel.com>2015-04-24 13:25:01 +0300
commitb497de63ad5dcdae999c14444c4e7f53fd60119c (patch)
tree101526c6036f78e855cbe59482d1ee512338d59e /net/mac80211
parent6382246e895fa0ae5162de7c1e5566b9719bdd26 (diff)
downloadlinux-b497de63ad5dcdae999c14444c4e7f53fd60119c.tar.xz
mac80211: notify the driver on reordering buffer timeout
When frames time out in the reordering buffer, it is a good indication that something went wrong and the driver may want to know about that to take action or trigger debug flows. It is pointless to notify the driver about each frame that is released. Notify each time the timer fires. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r--net/mac80211/rx.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index ac6bfa999416..e08253547f42 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -3229,6 +3229,15 @@ void ieee80211_release_reorder_timeout(struct sta_info *sta, int tid)
ieee80211_sta_reorder_release(sta->sdata, tid_agg_rx, &frames);
spin_unlock(&tid_agg_rx->reorder_lock);
+ if (!skb_queue_empty(&frames)) {
+ struct ieee80211_event event = {
+ .type = BA_FRAME_TIMEOUT,
+ .u.ba.tid = tid,
+ .u.ba.sta = &sta->sta,
+ };
+ drv_event_callback(rx.local, rx.sdata, &event);
+ }
+
ieee80211_rx_handlers(&rx, &frames);
}