diff options
author | Bjørn Mork <bjorn@mork.no> | 2015-10-28 20:43:00 +0100 |
---|---|---|
committer | Bjørn Mork <bjorn@mork.no> | 2015-10-28 20:55:22 +0100 |
commit | 8347d81a0e96b562050c8d1e30becb8dffb50ec4 (patch) | |
tree | aad058921ab31c48d5a6c1b3b1dcf900bdaa5eb9 | |
parent | 7a6aff718d2de7dee6f9d82eae8af91667e8ee86 (diff) |
mwlwifi: A-MSDU inside A-MPDU is optional
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.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -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); |