summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Mork <bjorn@mork.no>2015-10-28 20:43:00 +0100
committerBjørn Mork <bjorn@mork.no>2015-10-28 20:45:14 +0100
commit56c70c5e8610ad6a1207256d1e37aebd5ec89362 (patch)
tree623baeccc94ecbcb3e352e01970cc4952c567b0d
parente919ea07ee51e7114c771270730a319d70cf01a4 (diff)
mwlwifi: A-MSDU inside A-MPDU is optionalbmork-fixes
Stations not supporting this optional feature will not be able to process A-MSDU frames when an A-MPDU stream is operational. A-MSDU support is signalled in the ADDBA response, but not yet forwarded to drivers. Disable A-MSDU when A-MPDU is operational for all stations until the API support selectively enabling it. Signed-off-by: Bjørn Mork <bjorn@mork.no>
-rw-r--r--mac80211.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/mac80211.c b/mac80211.c
index ec96f25..032e52c 100644
--- a/mac80211.c
+++ b/mac80211.c
@@ -653,6 +653,8 @@ static int mwl_mac80211_ampdu_action(struct ieee80211_hw *hw,
}
mwl_fwcmd_remove_stream(hw, stream);
+ /* re-enable A-MSDU. See below */
+ sta_info->is_amsdu_allowed = true;
}
ieee80211_stop_tx_ba_cb_irqsafe(vif, addr, tid);
@@ -668,6 +670,12 @@ static int mwl_mac80211_ampdu_action(struct ieee80211_hw *hw,
if (!rc) {
stream->state = AMPDU_STREAM_ACTIVE;
+ /* Support for A-MSDU within A-MPDU is
+ * optional. Simply disable A-MSDU until we
+ * have a new API with the peer support
+ * status.
+ */
+ sta_info->is_amsdu_allowed = false;
} else {
idx = stream->idx;
spin_unlock_bh(&priv->stream_lock);