diff options
author | Johannes Berg <johannes.berg@intel.com> | 2016-08-29 23:25:19 +0300 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2016-09-12 11:46:31 +0200 |
commit | 53f249747d5ec6434415a6895b5690bf4f1d5d7d (patch) | |
tree | 94bc4438cf8b9648374ad5245a7d229be768d81a /net/mac80211 | |
parent | bfe40fa395ddc41e45310a4426574703a05e1177 (diff) | |
download | lwn-53f249747d5ec6434415a6895b5690bf4f1d5d7d.tar.gz lwn-53f249747d5ec6434415a6895b5690bf4f1d5d7d.zip |
mac80211: send delBA on unexpected BlockAck Request
If we don't have a BA session, send delBA, as requested by the
IEEE 802.11 spec. Apply the same limit of sending such a delBA
only once as in the previous patch.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/rx.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index ad636c930f84..e796060b7c5e 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c @@ -2592,6 +2592,12 @@ ieee80211_rx_h_ctrl(struct ieee80211_rx_data *rx, struct sk_buff_head *frames) tid = le16_to_cpu(bar_data.control) >> 12; + if (!test_bit(tid, rx->sta->ampdu_mlme.agg_session_valid) && + !test_and_set_bit(tid, rx->sta->ampdu_mlme.unexpected_agg)) + ieee80211_send_delba(rx->sdata, rx->sta->sta.addr, tid, + WLAN_BACK_RECIPIENT, + WLAN_REASON_QSTA_REQUIRE_SETUP); + tid_agg_rx = rcu_dereference(rx->sta->ampdu_mlme.tid_rx[tid]); if (!tid_agg_rx) return RX_DROP_MONITOR; |