Przeglądaj źródła

mac80211: minstrel_ht: handle peers in dynamic SMPS

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>
Krishna Chaitanya 10 lat temu
rodzic
commit
a3ebb4e1b7
1 zmienionych plików z 7 dodań i 1 usunięć
  1. 7 1
      net/mac80211/rc80211_minstrel_ht.c

+ 7 - 1
net/mac80211/rc80211_minstrel_ht.c

@@ -867,7 +867,13 @@ minstrel_ht_set_rate(struct minstrel_priv *mp, struct minstrel_ht_sta *mi,
 	else
 	else
 		idx = index % MCS_GROUP_RATES + (group->streams - 1) * 8;
 		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;
 		ratetbl->rate[offset].count = ratetbl->rate[offset].count_rts;
 		flags |= IEEE80211_TX_RC_USE_RTS_CTS;
 		flags |= IEEE80211_TX_RC_USE_RTS_CTS;
 	}
 	}