rt2x00: Fix SM PS check
authorHelmut Schaa <helmut.schaa@googlemail.com>
Sat, 2 Oct 2010 09:28:02 +0000 (11:28 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 5 Oct 2010 17:35:26 +0000 (13:35 -0400)
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: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rt2x00/rt2x00ht.c

index ad3c7ff..48b6ed4 100644 (file)
@@ -60,9 +60,10 @@ void rt2x00ht_create_tx_descriptor(struct queue_entry *entry,
                 * when using more then one tx stream (>MCS7).
                 */
                if (tx_info->control.sta && txdesc->mcs > 7 &&
-                   (tx_info->control.sta->ht_cap.cap &
-                    (WLAN_HT_CAP_SM_PS_DYNAMIC <<
-                     IEEE80211_HT_CAP_SM_PS_SHIFT)))
+                   ((tx_info->control.sta->ht_cap.cap &
+                     IEEE80211_HT_CAP_SM_PS) >>
+                    IEEE80211_HT_CAP_SM_PS_SHIFT) ==
+                   WLAN_HT_CAP_SM_PS_DYNAMIC)
                        __set_bit(ENTRY_TXD_HT_MIMO_PS, &txdesc->flags);
        } else {
                txdesc->mcs = rt2x00_get_rate_mcs(hwrate->mcs);