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:45:14 +0100 |
commit | 56c70c5e8610ad6a1207256d1e37aebd5ec89362 (patch) | |
tree | 623baeccc94ecbcb3e352e01970cc4952c567b0d | |
parent | e919ea07ee51e7114c771270730a319d70cf01a4 (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.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); |