From af734a4f8dbdccc19660279635db7c533865c3bf Mon Sep 17 00:00:00 2001 From: Surya Prakash Sivaraj Date: Mon, 11 Oct 2021 12:05:00 +0530 Subject: [PATCH] qcacld-3.0: Update VHT IE with highest supported LGI rate Currently, the Rx/Tx highest Long GI data rate field in the VHT IE is filled with short GI data rate. Therefore, change the highest supported data rate back to LGI data rate. Allow the short GI rate to be filled as the highest supported rate in the wiphy if short GI is enabled. Change-Id: Ie0652b4cdeef370cb8ad3d11b5d36b6959c1cbcb CRs-Fixed: 3053946 --- .../mlme/dispatcher/inc/cfg_mlme_vht_caps.h | 8 +-- core/hdd/src/wlan_hdd_main.c | 53 +++++++++---------- 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/components/mlme/dispatcher/inc/cfg_mlme_vht_caps.h b/components/mlme/dispatcher/inc/cfg_mlme_vht_caps.h index 62708e9db023..afca32da945b 100644 --- a/components/mlme/dispatcher/inc/cfg_mlme_vht_caps.h +++ b/components/mlme/dispatcher/inc/cfg_mlme_vht_caps.h @@ -113,16 +113,16 @@ #define CFG_VHT_RX_SUPP_DATA_RATE CFG_UINT( \ "rx_supp_data_rate", \ 0, \ - 866, \ - 866, \ + 780, \ + 780, \ CFG_VALUE_OR_DEFAULT, \ "VHT RX SUPP DATA RATE") #define CFG_VHT_TX_SUPP_DATA_RATE CFG_UINT( \ "tx_supp_data_rate", \ 0, \ - 866, \ - 866, \ + 780, \ + 780, \ CFG_VALUE_OR_DEFAULT, \ "VHT TX SUPP DATA RATE") diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index d8eedae8da02..30da86260cea 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -2026,43 +2026,42 @@ static void hdd_update_tgt_vht_cap(struct hdd_context *hdd_ctx, hdd_err("unable to get vht_enable2x2"); if (vht_enable_2x2) { - if (cfg->vht_short_gi_80 & WMI_VHT_CAP_SGI_80MHZ) { - /* Update 2x2 Highest Short GI data rate */ + tx_highest_data_rate = + VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_2_2; + rx_highest_data_rate = + VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_2_2; + } else { + tx_highest_data_rate = + VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_1_1; + rx_highest_data_rate = + VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_1_1; + } + + status = ucfg_mlme_cfg_set_vht_rx_supp_data_rate(hdd_ctx->psoc, + rx_highest_data_rate); + if (!QDF_IS_STATUS_SUCCESS(status)) + hdd_err("Failed to set rx_supp_data_rate"); + + status = ucfg_mlme_cfg_set_vht_tx_supp_data_rate(hdd_ctx->psoc, + tx_highest_data_rate); + if (!QDF_IS_STATUS_SUCCESS(status)) + hdd_err("Failed to set tx_supp_data_rate"); + + /* Update the real highest data rate to wiphy */ + if (cfg->vht_short_gi_80 & WMI_VHT_CAP_SGI_80MHZ) { + if (vht_enable_2x2) { tx_highest_data_rate = VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_2_2_SGI80; rx_highest_data_rate = VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_2_2_SGI80; } else { - /* Update 2x2 Rx Highest Long GI data Rate */ tx_highest_data_rate = - VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_2_2; - rx_highest_data_rate = - VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_2_2; - } - } else if (cfg->vht_short_gi_80 & WMI_VHT_CAP_SGI_80MHZ) { - /* Update 1x1 Highest Short GI data rate */ - tx_highest_data_rate = VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_1_1_SGI80; - rx_highest_data_rate = + rx_highest_data_rate = VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_1_1_SGI80; - } else { - /* Update 1x1 Highest Long GI data rate */ - tx_highest_data_rate = VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_1_1; - rx_highest_data_rate = VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_1_1; + } } - status = ucfg_mlme_cfg_set_vht_rx_supp_data_rate( - hdd_ctx->psoc, - rx_highest_data_rate); - if (!QDF_IS_STATUS_SUCCESS(status)) - hdd_err("Failed to set rx_supp_data_rate"); - - status = ucfg_mlme_cfg_set_vht_tx_supp_data_rate( - hdd_ctx->psoc, - tx_highest_data_rate); - if (!QDF_IS_STATUS_SUCCESS(status)) - hdd_err("Failed to set tx_supp_data_rate"); - if (WMI_VHT_CAP_MAX_MPDU_LEN_11454 == cfg->vht_max_mpdu) band_5g->vht_cap.cap |= IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454; else if (WMI_VHT_CAP_MAX_MPDU_LEN_7935 == cfg->vht_max_mpdu)