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
This commit is contained in:
@@ -2561,6 +2561,14 @@ typedef struct sSirUpdateAPWPSIEsReq {
|
|||||||
tSirAPWPSIEs APWPSIEs;
|
tSirAPWPSIEs APWPSIEs;
|
||||||
} tSirUpdateAPWPSIEsReq, *tpSirUpdateAPWPSIEsReq;
|
} tSirUpdateAPWPSIEsReq, *tpSirUpdateAPWPSIEsReq;
|
||||||
|
|
||||||
|
struct update_config {
|
||||||
|
uint16_t messageType; /* eWNI_SME_UPDATE_CONFIG */
|
||||||
|
uint16_t length;
|
||||||
|
uint8_t sme_session_id;
|
||||||
|
uint16_t capab;
|
||||||
|
uint32_t value;
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* enum sir_update_session_param_type - session param type
|
* enum sir_update_session_param_type - session param type
|
||||||
* @SIR_PARAM_SSID_HIDDEN: ssidHidden parameter
|
* @SIR_PARAM_SSID_HIDDEN: ssidHidden parameter
|
||||||
|
@@ -259,6 +259,7 @@ enum eWniMsgTypes {
|
|||||||
eWMI_SME_LL_STATS_IND,
|
eWMI_SME_LL_STATS_IND,
|
||||||
eWNI_SME_DFS_CAC_COMPLETE,
|
eWNI_SME_DFS_CAC_COMPLETE,
|
||||||
eWNI_SME_IPA_STATS_REQ_CMD,
|
eWNI_SME_IPA_STATS_REQ_CMD,
|
||||||
|
eWNI_SME_UPDATE_CONFIG,
|
||||||
eWNI_SME_MSG_TYPES_END
|
eWNI_SME_MSG_TYPES_END
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -1394,6 +1394,7 @@ static void lim_process_messages(tpAniSirGlobal mac_ctx,
|
|||||||
case eWNI_SME_SET_DUAL_MAC_CFG_REQ:
|
case eWNI_SME_SET_DUAL_MAC_CFG_REQ:
|
||||||
case eWNI_SME_SET_ANTENNA_MODE_REQ:
|
case eWNI_SME_SET_ANTENNA_MODE_REQ:
|
||||||
case eWNI_SME_UPDATE_ACCESS_POLICY_VENDOR_IE:
|
case eWNI_SME_UPDATE_ACCESS_POLICY_VENDOR_IE:
|
||||||
|
case eWNI_SME_UPDATE_CONFIG:
|
||||||
/* These messages are from HDD. Need to respond to HDD */
|
/* These messages are from HDD. Need to respond to HDD */
|
||||||
lim_process_normal_hdd_msg(mac_ctx, msg, true);
|
lim_process_normal_hdd_msg(mac_ctx, msg, true);
|
||||||
break;
|
break;
|
||||||
|
@@ -3938,6 +3938,48 @@ end:
|
|||||||
return;
|
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
|
void
|
||||||
lim_send_vdev_restart(tpAniSirGlobal pMac,
|
lim_send_vdev_restart(tpAniSirGlobal pMac,
|
||||||
tpPESession psessionEntry, uint8_t sessionId)
|
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:
|
case eWNI_SME_UPDATE_ACCESS_POLICY_VENDOR_IE:
|
||||||
lim_process_sme_update_access_policy_vendor_ie(pMac, pMsgBuf);
|
lim_process_sme_update_access_policy_vendor_ie(pMac, pMsgBuf);
|
||||||
break;
|
break;
|
||||||
|
case eWNI_SME_UPDATE_CONFIG:
|
||||||
|
lim_process_sme_update_config(pMac,
|
||||||
|
(struct update_config *)pMsgBuf);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
qdf_mem_free((void *)pMsg->bodyptr);
|
qdf_mem_free((void *)pMsg->bodyptr);
|
||||||
pMsg->bodyptr = NULL;
|
pMsg->bodyptr = NULL;
|
||||||
|
@@ -1447,4 +1447,8 @@ void csr_neighbor_roam_process_scan_results(tpAniSirGlobal mac_ctx,
|
|||||||
void csr_neighbor_roam_trigger_handoff(tpAniSirGlobal mac_ctx,
|
void csr_neighbor_roam_trigger_handoff(tpAniSirGlobal mac_ctx,
|
||||||
uint8_t session_id);
|
uint8_t session_id);
|
||||||
bool csr_is_ndi_started(tpAniSirGlobal mac_ctx, uint32_t session_id);
|
bool csr_is_ndi_started(tpAniSirGlobal mac_ctx, uint32_t session_id);
|
||||||
|
|
||||||
|
QDF_STATUS csr_roam_update_config(tpAniSirGlobal mac_ctx, uint8_t session_id,
|
||||||
|
uint16_t capab, uint32_t value);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -11033,6 +11033,7 @@ int sme_update_ht_config(tHalHandle hHal, uint8_t sessionId, uint16_t htCapab,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
csr_roam_update_config(pMac, sessionId, htCapab, value);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -18932,6 +18932,35 @@ QDF_STATUS csr_queue_sme_command(tpAniSirGlobal mac_ctx, tSmeCmd *sme_cmd,
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS csr_roam_update_config(tpAniSirGlobal mac_ctx, uint8_t session_id,
|
||||||
|
uint16_t capab, uint32_t value)
|
||||||
|
{
|
||||||
|
struct update_config *msg;
|
||||||
|
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||||
|
tCsrRoamSession *session = CSR_GET_SESSION(mac_ctx, session_id);
|
||||||
|
|
||||||
|
sme_debug("update HT config requested");
|
||||||
|
if (NULL == session) {
|
||||||
|
sme_err("Session does not exist for session id %d", session_id);
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
msg = qdf_mem_malloc(sizeof(*msg));
|
||||||
|
if (NULL == msg) {
|
||||||
|
sme_err("malloc failed");
|
||||||
|
return QDF_STATUS_E_NOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
msg->messageType = eWNI_SME_UPDATE_CONFIG;
|
||||||
|
msg->sme_session_id = session_id;
|
||||||
|
msg->capab = capab;
|
||||||
|
msg->value = value;
|
||||||
|
msg->length = sizeof(*msg);
|
||||||
|
status = umac_send_mb_message_to_mac(msg);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS csr_roam_update_apwpsie(tpAniSirGlobal pMac, uint32_t sessionId,
|
QDF_STATUS csr_roam_update_apwpsie(tpAniSirGlobal pMac, uint32_t sessionId,
|
||||||
tSirAPWPSIEs *pAPWPSIES)
|
tSirAPWPSIEs *pAPWPSIES)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user