Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a13ac9df authored by Helmut Schaa's avatar Helmut Schaa Committed by John W. Linville
Browse files

rt2x00: Fix SM PS check



Fix a check for dynamic SM PS mode in the STAs HT caps. Since a
value of 3 means "SM PS disabled" the previous check assumed in
that case that "dynamic SM PS" was enabled and as such prefixed
every MCS>7 frame with a unnecessary RTS/CTS exchange. Also,
the bit shift was done in the wrong direction.

Signed-off-by: default avatarHelmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 96c3da7d
Loading
Loading
Loading
Loading
+4 −3
Original line number Original line Diff line number Diff line
@@ -60,9 +60,10 @@ void rt2x00ht_create_tx_descriptor(struct queue_entry *entry,
		 * when using more then one tx stream (>MCS7).
		 * when using more then one tx stream (>MCS7).
		 */
		 */
		if (tx_info->control.sta && txdesc->mcs > 7 &&
		if (tx_info->control.sta && txdesc->mcs > 7 &&
		    (tx_info->control.sta->ht_cap.cap &
		    ((tx_info->control.sta->ht_cap.cap &
		     (WLAN_HT_CAP_SM_PS_DYNAMIC <<
		      IEEE80211_HT_CAP_SM_PS) >>
		      IEEE80211_HT_CAP_SM_PS_SHIFT)))
		     IEEE80211_HT_CAP_SM_PS_SHIFT) ==
		    WLAN_HT_CAP_SM_PS_DYNAMIC)
			__set_bit(ENTRY_TXD_HT_MIMO_PS, &txdesc->flags);
			__set_bit(ENTRY_TXD_HT_MIMO_PS, &txdesc->flags);
	} else {
	} else {
		txdesc->mcs = rt2x00_get_rate_mcs(hwrate->mcs);
		txdesc->mcs = rt2x00_get_rate_mcs(hwrate->mcs);