qcacld-3.0: Update beacon template from sme update config API
Currently sme_update_ht_config only update csr_session and sends updated
params to FW via VDEV_PARAM command. Same is not reflected in pe_session
and beacon template. Update beacon params in LIM by sending param update
message to LIM.
Change-Id: I1f926b4d2d5467c7702e03ff281879529c89f6f5
CRs-Fixed: 2055347
diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
index eee8ec9..3fe0b40 100644
--- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c
+++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
@@ -3938,6 +3938,48 @@
return;
}
+static void lim_process_sme_update_config(tpAniSirGlobal mac_ctx,
+ struct update_config *msg)
+{
+ tpPESession pe_session;
+
+ pe_debug("received eWNI_SME_UPDATE_HT_CONFIG message");
+ if (msg == NULL) {
+ pe_err("Buffer is Pointing to NULL");
+ return;
+ }
+
+ pe_session = pe_find_session_by_sme_session_id(mac_ctx,
+ msg->sme_session_id);
+ if (pe_session == NULL) {
+ pe_warn("Session does not exist for given BSSID");
+ return;
+ }
+
+ switch (msg->capab) {
+ case WNI_CFG_HT_CAP_INFO_ADVANCE_CODING:
+ pe_session->htConfig.ht_rx_ldpc = msg->value;
+ break;
+ case WNI_CFG_HT_CAP_INFO_TX_STBC:
+ pe_session->htConfig.ht_tx_stbc = msg->value;
+ break;
+ case WNI_CFG_HT_CAP_INFO_RX_STBC:
+ pe_session->htConfig.ht_rx_stbc = msg->value;
+ break;
+ case WNI_CFG_HT_CAP_INFO_SHORT_GI_20MHZ:
+ pe_session->htConfig.ht_sgi20 = msg->value;
+ break;
+ case WNI_CFG_HT_CAP_INFO_SHORT_GI_40MHZ:
+ pe_session->htConfig.ht_sgi40 = msg->value;
+ break;
+ }
+
+ if (LIM_IS_AP_ROLE(pe_session)) {
+ sch_set_fixed_beacon_fields(mac_ctx, pe_session);
+ lim_send_beacon_ind(mac_ctx, pe_session);
+ }
+}
+
void
lim_send_vdev_restart(tpAniSirGlobal pMac,
tpPESession psessionEntry, uint8_t sessionId)
@@ -5202,6 +5244,10 @@
case eWNI_SME_UPDATE_ACCESS_POLICY_VENDOR_IE:
lim_process_sme_update_access_policy_vendor_ie(pMac, pMsgBuf);
break;
+ case eWNI_SME_UPDATE_CONFIG:
+ lim_process_sme_update_config(pMac,
+ (struct update_config *)pMsgBuf);
+ break;
default:
qdf_mem_free((void *)pMsg->bodyptr);
pMsg->bodyptr = NULL;