ath9k_htc: Enable SGI in HT20 for AR9271
authorSujith <Sujith.Manoharan@atheros.com>
Mon, 17 May 2010 06:31:19 +0000 (12:01 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 2 Jun 2010 20:13:16 +0000 (16:13 -0400)
Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/htc_drv_init.c
drivers/net/wireless/ath/ath9k/htc_drv_main.c
drivers/net/wireless/ath/ath9k/hw.c

index 7ec2c2e..8b202e0 100644 (file)
@@ -404,6 +404,9 @@ static void setup_ht_cap(struct ath9k_htc_priv *priv,
                       IEEE80211_HT_CAP_SGI_40 |
                       IEEE80211_HT_CAP_DSSSCCK40;
 
+       if (priv->ah->caps.hw_caps & ATH9K_HW_CAP_SGI_20)
+               ht_info->cap |= IEEE80211_HT_CAP_SGI_20;
+
        ht_info->ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
        ht_info->ampdu_density = IEEE80211_HT_MPDU_DENSITY_8;
 
index 80feeb3..6d46423 100644 (file)
@@ -367,9 +367,12 @@ static void ath9k_htc_setup_rate(struct ath9k_htc_priv *priv,
                caps = WLAN_RC_HT_FLAG;
                if (sta->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40)
                        caps |= WLAN_RC_40_FLAG;
-               if (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40)
+               if (conf_is_ht40(&priv->hw->conf) &&
+                   (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40))
+                       caps |= WLAN_RC_SGI_FLAG;
+               else if (conf_is_ht20(&priv->hw->conf) &&
+                        (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20))
                        caps |= WLAN_RC_SGI_FLAG;
-
        }
 
        trate->sta_index = ista->index;
index 2fd6254..841c8b0 100644 (file)
@@ -2234,7 +2234,7 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah)
        if (AR_SREV_9300_20_OR_LATER(ah))
                pCap->hw_caps |= ATH9K_HW_CAP_RAC_SUPPORTED;
 
-       if (AR_SREV_9287_10_OR_LATER(ah))
+       if (AR_SREV_9287_10_OR_LATER(ah) || AR_SREV_9271(ah))
                pCap->hw_caps |= ATH9K_HW_CAP_SGI_20;
 
        return 0;