summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2015-04-20 21:53:38 +0200
committerJohannes Berg <johannes.berg@intel.com>2015-04-24 12:25:01 +0200
commitb497de63ad5dcdae999c14444c4e7f53fd60119c (patch)
tree101526c6036f78e855cbe59482d1ee512338d59e /net
parentmac80211: notify the driver upon BAR Rx (diff)
downloadlinux-b497de63ad5dcdae999c14444c4e7f53fd60119c.tar.xz
linux-b497de63ad5dcdae999c14444c4e7f53fd60119c.zip
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')
-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);
}