From 8347d81a0e96b562050c8d1e30becb8dffb50ec4 Mon Sep 17 00:00:00 2001 From: Bjørn Mork Date: Wed, 28 Oct 2015 20:43:00 +0100 Subject: mwlwifi: A-MSDU inside A-MPDU is optional MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- mac80211.c | 8 ++++++++ 1 file changed, 8 insertions(+) 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); -- cgit v1.2.3