diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2015-04-20 21:53:38 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2015-04-24 12:25:01 +0200 |
commit | b497de63ad5dcdae999c14444c4e7f53fd60119c (patch) | |
tree | 101526c6036f78e855cbe59482d1ee512338d59e /net | |
parent | mac80211: notify the driver upon BAR Rx (diff) | |
download | linux-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.c | 9 |
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); } |