ath9k_htc: Configure dual stream rates
authorSujith <Sujith.Manoharan@atheros.com>
Wed, 2 Jun 2010 10:23:43 +0000 (15:53 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 4 Jun 2010 20:00:39 +0000 (16:00 -0400)
The rate information on the target has to be updated
for 2-stream devices, along with the correct chainmask.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/htc_drv_main.c

index 569b9c0fee3f75a80bc4ef21a9dd18666a14c547..b7ce902f2453a063a98142bcc4911a4b85f2b211 100644 (file)
@@ -325,9 +325,9 @@ static int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv)
        tcap.flags_ext = 0x80601000;
        tcap.ampdu_limit = 0xffff0000;
        tcap.ampdu_subframes = 20;
-       tcap.tx_chainmask_legacy = 1;
+       tcap.tx_chainmask_legacy = priv->ah->caps.tx_chainmask;
        tcap.protmode = 1;
-       tcap.tx_chainmask = 1;
+       tcap.tx_chainmask = priv->ah->caps.tx_chainmask;
 
        WMI_CMD_BUF(WMI_TARGET_IC_UPDATE_CMDID, &tcap);
 
@@ -365,6 +365,11 @@ static void ath9k_htc_setup_rate(struct ath9k_htc_priv *priv,
                trate->rates.ht_rates.rs_nrates = j;
 
                caps = WLAN_RC_HT_FLAG;
+               if (priv->ah->caps.tx_chainmask != 1 &&
+                   ath9k_hw_getcapability(priv->ah, ATH9K_CAP_DS, 0, NULL)) {
+                       if (sta->ht_cap.mcs.rx_mask[1])
+                               caps |= WLAN_RC_DS_FLAG;
+               }
                if (sta->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40)
                        caps |= WLAN_RC_40_FLAG;
                if (conf_is_ht40(&priv->hw->conf) &&