From ce9bc69f08ca899479df34d3fc19a7dd536be05c Mon Sep 17 00:00:00 2001 From: abhinav kumar Date: Thu, 1 Dec 2022 13:06:23 +0530 Subject: [PATCH] qcacld-3.0: Disable unsupported EHT capability for SAP/GO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SAP/GO doesn’t support below EHT capabilities, So the driver should not advertise it in beacon, probe rsp and assoc rsp. It can cause IOT issues if capabilities are advertised without support. 1. tx_1024_4096_qam_lt_242_tone_ru 2. rx_1024_4096_qam_lt_242_tone_ru 3. non_ofdma_ul_mu_mimo_le_80mhz 4. non_ofdma_ul_mu_mimo_160mhz 5. non_ofdma_ul_mu_mimo_320mhz Fix is to disable the above unsupported EHT capabilities for SAP/GO's beacon, probe rsp and assoc rsp. Change-Id: Ia958e2f3de7454eb5eff34a347e65f7510f433bc CRs-Fixed: 3340585 --- core/mac/src/pe/lim/lim_utils.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/core/mac/src/pe/lim/lim_utils.c b/core/mac/src/pe/lim/lim_utils.c index f26b5adf0c..4bc3c1ab06 100644 --- a/core/mac/src/pe/lim/lim_utils.c +++ b/core/mac/src/pe/lim/lim_utils.c @@ -8579,6 +8579,27 @@ lim_revise_req_eht_cap_per_band(struct mlme_legacy_priv *mlme_priv, } } +/** + * lim_revise_req_eht_cap_per_mode() - revise eht capabilities per device mode + * @mlme_legacy_priv: vdev mlme legacy priv object + * @session: pointer to session entry. + * + * Return: None + */ +static void lim_revise_req_eht_cap_per_mode(struct mlme_legacy_priv *mlme_priv, + struct pe_session *session) +{ + if (session->opmode == QDF_SAP_MODE || + session->opmode == QDF_P2P_GO_MODE) { + pe_debug("Disable eht cap for SAP/GO"); + mlme_priv->eht_config.tx_1024_4096_qam_lt_242_tone_ru = 0; + mlme_priv->eht_config.rx_1024_4096_qam_lt_242_tone_ru = 0; + mlme_priv->eht_config.non_ofdma_ul_mu_mimo_le_80mhz = 0; + mlme_priv->eht_config.non_ofdma_ul_mu_mimo_160mhz = 0; + mlme_priv->eht_config.non_ofdma_ul_mu_mimo_320mhz = 0; + } +} + void lim_copy_bss_eht_cap(struct pe_session *session) { struct mlme_legacy_priv *mlme_priv; @@ -8586,7 +8607,17 @@ void lim_copy_bss_eht_cap(struct pe_session *session) mlme_priv = wlan_vdev_mlme_get_ext_hdl(session->vdev); if (!mlme_priv) return; + lim_revise_req_eht_cap_per_band(mlme_priv, session); + + /* + * As per firmware, SAP/GO doesn’t support some EHT capabilities. So if + * unsupported capabilities are advertised in beacon, probe rsp and + * assoc rsp can cause IOT issues. + * Disable unsupported capabilities per mode. + */ + lim_revise_req_eht_cap_per_mode(mlme_priv, session); + qdf_mem_copy(&session->eht_config, &mlme_priv->eht_config, sizeof(session->eht_config)); }