summaryrefslogtreecommitdiff
path: root/net/mac80211/agg-rx.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2016-08-29 23:25:18 +0300
committerJohannes Berg <johannes.berg@intel.com>2016-09-12 12:46:21 +0300
commitbfe40fa395ddc41e45310a4426574703a05e1177 (patch)
tree7924a96bbbcb492c99f082b6708db482aa873cc0 /net/mac80211/agg-rx.c
parent99ee7cae3bf3ce04e90d7b193d9f4f59a7044d91 (diff)
downloadlinux-bfe40fa395ddc41e45310a4426574703a05e1177.tar.xz
mac80211: send delBA on unexpected BlockAck data frames
When we receive data frames with ACK policy BlockAck, send delBA as requested by the 802.11 spec. Since this would be happening for every frame inside an A-MPDU if it's really received outside a session, limit it to a single attempt. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/agg-rx.c')
-rw-r--r--net/mac80211/agg-rx.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c
index 282e99bdb301..a5d69dfc8e03 100644
--- a/net/mac80211/agg-rx.c
+++ b/net/mac80211/agg-rx.c
@@ -409,8 +409,10 @@ void __ieee80211_start_rx_ba_session(struct sta_info *sta,
}
end:
- if (status == WLAN_STATUS_SUCCESS)
+ if (status == WLAN_STATUS_SUCCESS) {
__set_bit(tid, sta->ampdu_mlme.agg_session_valid);
+ __clear_bit(tid, sta->ampdu_mlme.unexpected_agg);
+ }
mutex_unlock(&sta->ampdu_mlme.mtx);
end_no_lock: