diff options
author | Johannes Berg <johannes.berg@intel.com> | 2017-05-30 16:34:46 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2017-06-08 14:16:29 +0200 |
commit | 699cb58c8a52ff39bf659bff7971893ebe111bf2 (patch) | |
tree | 2b2c65bc87e76a39f77310c93f6b6ea6fd66e9e6 /net/mac80211/ht.c | |
parent | a43e61842ec55baa486d60eed2a19af67ba78b9f (diff) | |
download | linux-stable-699cb58c8a52ff39bf659bff7971893ebe111bf2.tar.gz linux-stable-699cb58c8a52ff39bf659bff7971893ebe111bf2.tar.bz2 linux-stable-699cb58c8a52ff39bf659bff7971893ebe111bf2.zip |
mac80211: manage RX BA session offload without SKB queue
Instead of using the SKB queue with the fake pkt_type for the
offloaded RX BA session management, also handle this with the
normal aggregation state machine worker. This also makes the
use of this more reliable since it gets rid of the allocation
of the fake skb.
Combined with the previous patch, this finally allows us to
get rid of the pkt_type hack entirely, so do that as well.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/ht.c')
-rw-r--r-- | net/mac80211/ht.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/net/mac80211/ht.c b/net/mac80211/ht.c index 6ca5442b1e03..9e71226c2d25 100644 --- a/net/mac80211/ht.c +++ b/net/mac80211/ht.c @@ -331,6 +331,18 @@ void ieee80211_ba_session_work(struct work_struct *work) sta, tid, WLAN_BACK_RECIPIENT, WLAN_REASON_UNSPECIFIED, true); + if (test_and_clear_bit(tid, + sta->ampdu_mlme.tid_rx_manage_offl)) + __ieee80211_start_rx_ba_session(sta, 0, 0, 0, 1, tid, + IEEE80211_MAX_AMPDU_BUF, + false, true); + + if (test_and_clear_bit(tid + IEEE80211_NUM_TIDS, + sta->ampdu_mlme.tid_rx_manage_offl)) + ___ieee80211_stop_rx_ba_session( + sta, tid, WLAN_BACK_RECIPIENT, + 0, false); + spin_lock_bh(&sta->lock); tid_tx = sta->ampdu_mlme.tid_start_tx[tid]; |