|
@@ -3938,6 +3938,48 @@ end:
|
|
|
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 @@ bool lim_process_sme_req_messages(tpAniSirGlobal pMac,
|
|
|
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;
|