rt2x00: Fix IEEE80211_HT_CAP_RX_STBC assignment
authorIvo van Doorn <IvDoorn@gmail.com>
Tue, 29 Jun 2010 19:48:37 +0000 (21:48 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 30 Jun 2010 19:00:52 +0000 (15:00 -0400)
IEEE80211_HT_CAP_RX_STBC is a 2 bit flag, and should thus
never be set as normal flag. Instead we must read the number
of RX paths from the EEPROM and set the IEEE80211_HT_CAP_RX_STBC
with the correct value (using the same logic as the number of TX
streams).

Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rt2x00/rt2800lib.c

index 5125315abf50497170493d7103ed7ee11a9fe474..2d0a2168e310333c8594815df5491ded7dc52e21 100644 (file)
@@ -2572,12 +2572,15 @@ int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
            IEEE80211_HT_CAP_SUP_WIDTH_20_40 |
            IEEE80211_HT_CAP_GRN_FLD |
            IEEE80211_HT_CAP_SGI_20 |
-           IEEE80211_HT_CAP_SGI_40 |
-           IEEE80211_HT_CAP_RX_STBC;
+           IEEE80211_HT_CAP_SGI_40;
 
        if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_TXPATH) >= 2)
                spec->ht.cap |= IEEE80211_HT_CAP_TX_STBC;
 
+       spec->ht.cap |=
+           rt2x00_get_field16(eeprom, EEPROM_ANTENNA_RXPATH) <<
+               IEEE80211_HT_CAP_RX_STBC_SHIFT;
+
        spec->ht.ampdu_factor = 3;
        spec->ht.ampdu_density = 4;
        spec->ht.mcs.tx_params =