When the STA is in Dynamic SMPS mode, tell minstrel_ht to use RTS_CTS for frames which are transmitted using more than 1 spatial streams. Signed-off-by: Chaitanya T K <chaitanya.mgit@xxxxxxxxx> --- net/mac80211/rc80211_minstrel_ht.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/net/mac80211/rc80211_minstrel_ht.c b/net/mac80211/rc80211_minstrel_ht.c index c1b5b73..a1095d3 100644 --- a/net/mac80211/rc80211_minstrel_ht.c +++ b/net/mac80211/rc80211_minstrel_ht.c @@ -925,10 +925,17 @@ minstrel_ht_update_caps(void *priv, struct ieee80211_supported_band *sband, sta->bandwidth < IEEE80211_STA_RX_BW_40) continue; - /* Mark MCS > 7 as unsupported if STA is in static SMPS mode */ - if (sta->smps_mode == IEEE80211_SMPS_STATIC && - minstrel_mcs_groups[i].streams > 1) + /* Handle STA's SMPS State + * a. Use RTS_CTS, if Nss>1 and if STA is in Dynamic SMPS Mode + * b. Mark Nss>1 as unsupported, if STA is in static SMPS mode + */ + if (sta->smps_mode == IEEE80211_SMPS_DYNAMIC && + minstrel_mcs_groups[i].streams > 1) { + mi->tx_flags |= IEEE80211_TX_RC_USE_RTS_CTS; + } else if (sta->smps_mode == IEEE80211_SMPS_STATIC && + minstrel_mcs_groups[i].streams > 1) { continue; + } mi->groups[i].supported = mcs->rx_mask[minstrel_mcs_groups[i].streams - 1]; -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html