diff --git a/core/mac/inc/wni_api.h b/core/mac/inc/wni_api.h index cd535ca4ee..2381a3b6a7 100644 --- a/core/mac/inc/wni_api.h +++ b/core/mac/inc/wni_api.h @@ -214,6 +214,7 @@ enum eWniMsgTypes { eWNI_SME_SEND_DISASSOC_FRAME, eWNI_SME_UPDATE_ACCESS_POLICY_VENDOR_IE, eWNI_SME_DEFAULT_SCAN_IE, + eWNI_SME_ROAM_INVOKE, eWNI_SME_ROAM_SCAN_OFFLOAD_REQ, eWNI_SME_LOST_LINK_INFO_IND, eWNI_SME_DEL_ALL_TDLS_PEERS, diff --git a/core/mac/src/pe/lim/lim_process_message_queue.c b/core/mac/src/pe/lim/lim_process_message_queue.c index d2ee8e7a9e..0f80ed76eb 100644 --- a/core/mac/src/pe/lim/lim_process_message_queue.c +++ b/core/mac/src/pe/lim/lim_process_message_queue.c @@ -1648,6 +1648,8 @@ static void lim_process_messages(tpAniSirGlobal mac_ctx, #endif /* FEATURE_WLAN_ESE */ case eWNI_SME_REGISTER_MGMT_FRAME_CB: case eWNI_SME_EXT_CHANGE_CHANNEL: + case eWNI_SME_ROAM_INVOKE: + /* fall through */ case eWNI_SME_ROAM_SCAN_OFFLOAD_REQ: case eWNI_SME_SET_ADDBA_ACCEPT: case eWNI_SME_UPDATE_EDCA_PROFILE: 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 b66e8c7e43..2383a28659 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,39 @@ static void __lim_process_roam_scan_offload_req(tpAniSirGlobal mac_ctx, } } +#ifdef WLAN_FEATURE_ROAM_OFFLOAD +/** + * lim_process_roam_invoke() - process the Roam Invoke req + * @mac_ctx: Pointer to Global MAC structure + * @msg_buf: Pointer to the SME message buffer + * + * This function is called by limProcessMessageQueue(). This function sends the + * ROAM_INVOKE command to WMA. + * + * Return: None + */ +static void lim_process_roam_invoke(tpAniSirGlobal mac_ctx, + uint32_t *msg_buf) +{ + struct scheduler_msg msg = {0}; + QDF_STATUS status; + + msg.type = SIR_HAL_ROAM_INVOKE; + msg.bodyptr = msg_buf; + msg.reserved = 0; + + status = wma_post_ctrl_msg(mac_ctx, &msg); + if (QDF_STATUS_SUCCESS != status) + pe_err("Not able to post SIR_HAL_ROAM_INVOKE to WMA"); +} +#else +static void lim_process_roam_invoke(tpAniSirGlobal mac_ctx, + uint32_t *msg_buf) +{ + qdf_mem_free(msg_buf); +} +#endif + /* * lim_handle_update_ssid_hidden() - Processes SSID hidden update * @mac_ctx: Pointer to global mac context @@ -4967,6 +5000,10 @@ bool lim_process_sme_req_messages(tpAniSirGlobal pMac, __lim_process_roam_scan_offload_req(pMac, pMsgBuf); bufConsumed = false; break; + case eWNI_SME_ROAM_INVOKE: + lim_process_roam_invoke(pMac, pMsgBuf); + bufConsumed = false; + break; case eWNI_SME_CHNG_MCC_BEACON_INTERVAL: /* Update the beaconInterval */ __lim_process_sme_change_bi(pMac, pMsgBuf); diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index 408a114ca7..9a872be998 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -14980,14 +14980,14 @@ QDF_STATUS sme_fast_reassoc(tHalHandle hal, struct csr_roam_profile *profile, } } - msg.type = SIR_HAL_ROAM_INVOKE; + msg.type = eWNI_SME_ROAM_INVOKE; msg.reserved = 0; msg.bodyptr = fastreassoc; status = scheduler_post_message(QDF_MODULE_ID_SME, - QDF_MODULE_ID_WMA, - QDF_MODULE_ID_WMA, &msg); + QDF_MODULE_ID_PE, + QDF_MODULE_ID_PE, &msg); if (QDF_STATUS_SUCCESS != status) { - sme_err("Not able to post ROAM_INVOKE_CMD message to WMA"); + sme_err("Not able to post ROAM_INVOKE_CMD message to PE"); qdf_mem_free(fastreassoc); }