mac80211: minstrel_ht: handle peers in dynamic SMPS
authorKrishna Chaitanya <chaitanya.mgit@gmail.com>
Thu, 11 Jun 2015 21:04:52 +0000 (02:34 +0530)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 17 Jul 2015 13:38:20 +0000 (15:38 +0200)
In case of Dynamic SMPS enable RTS/CTS for all rates.

Signed-off-by: Chaitanya T K <chaitanya.mgit@gmail.com>
[change comment]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/rc80211_minstrel_ht.c

index 543b672335353817334b407fbfc1ff3574625ee6..3928dbd24e257e68627aa977cc54a19aaa996339 100644 (file)
@@ -867,7 +867,13 @@ minstrel_ht_set_rate(struct minstrel_priv *mp, struct minstrel_ht_sta *mi,
        else
                idx = index % MCS_GROUP_RATES + (group->streams - 1) * 8;
 
-       if (offset > 0) {
+       /* enable RTS/CTS if needed:
+        *  - if station is in dynamic SMPS (and streams > 1)
+        *  - for fallback rates, to increase chances of getting through
+        */
+       if (offset > 0 &&
+           (mi->sta->smps_mode == IEEE80211_SMPS_DYNAMIC &&
+            group->streams > 1)) {
                ratetbl->rate[offset].count = ratetbl->rate[offset].count_rts;
                flags |= IEEE80211_TX_RC_USE_RTS_CTS;
        }