diff --git a/core/hdd/src/wlan_hdd_stats.c b/core/hdd/src/wlan_hdd_stats.c index 6a1fc5a57085..c24dfe39d2c2 100644 --- a/core/hdd/src/wlan_hdd_stats.c +++ b/core/hdd/src/wlan_hdd_stats.c @@ -1864,8 +1864,15 @@ static int __wlan_hdd_cfg80211_get_station(struct wiphy *wiphy, maxMCSIdx = 8; else if (DATA_RATE_11AC_MAX_MCS_9 == vhtMaxMcs) { - /* VHT20 is supporting 0~8 */ - if (rate_flags & eHAL_TX_RATE_VHT20) + /* + * IEEE_P802.11ac_2013.pdf page 325, 326 + * - MCS9 is valid for VHT20 when + * Nss = 3 or Nss = 6 + * - MCS9 is not valid for VHT20 when + * Nss = 1,2,4,5,7,8 + */ + if ((rate_flags & eHAL_TX_RATE_VHT20) && + (nss != 3 && nss != 6)) maxMCSIdx = 8; else maxMCSIdx = 9; @@ -1973,6 +1980,18 @@ static int __wlan_hdd_cfg80211_get_station(struct wiphy *wiphy, maxSpeedMCS = 1; maxMCSIdx = pAdapter->hdd_stats.ClassA_stat.mcs_index; + /* + * IEEE_P802.11ac_2013.pdf page 325, 326 + * - MCS9 is valid for VHT20 when + * Nss = 3 or Nss = 6 + * - MCS9 is not valid for VHT20 when + * Nss = 1,2,4,5,7,8 + */ + if ((rate_flags & eHAL_TX_RATE_VHT20) && + (maxMCSIdx > 8) && + (nss != 3 && nss != 6)) { + maxMCSIdx = 8; + } } }