rt2x00: fix use of mcs rates
authorHelmut Schaa <helmut.schaa@googlemail.com>
Thu, 3 Jun 2010 08:52:15 +0000 (10:52 +0200)
committerIvo van Doorn <IvDoorn@gmail.com>
Thu, 3 Jun 2010 08:52:15 +0000 (10:52 +0200)
In case of mcs rates txrate->idx contains the mcs index to be used for
transmission. Previously the mcs values dedicated for legacy rates where
used for mcs transmissions which resulted in the use of mcs 0 in a number
of cases (e.g. for all mcs rates >= 15 as rt2x00 does not register legacy
rates with indexes >= 15).

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
drivers/net/wireless/rt2x00/rt2x00ht.c

index 382ab79867ddc9f0a6b4aa62a097ca173241003e..c004cd3a8847c852c5b007ec5cdf2faf220c16f5 100644 (file)
@@ -48,9 +48,18 @@ void rt2x00ht_create_tx_descriptor(struct queue_entry *entry,
        txdesc->stbc =
            (tx_info->flags & IEEE80211_TX_CTL_STBC) >> IEEE80211_TX_CTL_STBC_SHIFT;
 
-       txdesc->mcs = rt2x00_get_rate_mcs(hwrate->mcs);
-       if (txrate->flags & IEEE80211_TX_RC_USE_SHORT_PREAMBLE)
-               txdesc->mcs |= 0x08;
+       /*
+        * If IEEE80211_TX_RC_MCS is set txrate->idx just contains the
+        * mcs rate to be used
+        */
+       if (txrate->flags & IEEE80211_TX_RC_MCS) {
+               txdesc->mcs = txrate->idx;
+       } else {
+               txdesc->mcs = rt2x00_get_rate_mcs(hwrate->mcs);
+               if (txrate->flags & IEEE80211_TX_RC_USE_SHORT_PREAMBLE)
+                       txdesc->mcs |= 0x08;
+       }
+
 
        /*
         * Convert flags