qcacld-3.0: Refactor mlme code to integrate SAP start vdev SM
Divide and refactor mlme functions to integrate vdev state machine for SAP start. Change-Id: Id4419261cb1ba88754eded9fd780cca60f1f5db7 CRs-Fixed: 2309240
This commit is contained in:
@@ -479,7 +479,7 @@ typedef struct sPESession /* Added to Support BT-AMP */
|
|||||||
qdf_mc_timer_t protection_fields_reset_timer;
|
qdf_mc_timer_t protection_fields_reset_timer;
|
||||||
/* timer to decrement CSA/ECSA count */
|
/* timer to decrement CSA/ECSA count */
|
||||||
qdf_mc_timer_t ap_ecsa_timer;
|
qdf_mc_timer_t ap_ecsa_timer;
|
||||||
void *mac_ctx;
|
tpAniSirGlobal mac_ctx;
|
||||||
/*
|
/*
|
||||||
* variable to store state of various protection struct like
|
* variable to store state of various protection struct like
|
||||||
* gLimOlbcParams, gLimOverlap11gParams, gLimOverlapHt20Params etc
|
* gLimOlbcParams, gLimOverlap11gParams, gLimOverlapHt20Params etc
|
||||||
|
@@ -40,7 +40,6 @@
|
|||||||
#include "wlan_reg_services_api.h"
|
#include "wlan_reg_services_api.h"
|
||||||
#include "lim_process_fils.h"
|
#include "lim_process_fils.h"
|
||||||
|
|
||||||
static void lim_process_mlm_start_req(tpAniSirGlobal, uint32_t *);
|
|
||||||
static void lim_process_mlm_join_req(tpAniSirGlobal, uint32_t *);
|
static void lim_process_mlm_join_req(tpAniSirGlobal, uint32_t *);
|
||||||
static void lim_process_mlm_auth_req(tpAniSirGlobal, uint32_t *);
|
static void lim_process_mlm_auth_req(tpAniSirGlobal, uint32_t *);
|
||||||
static void lim_process_mlm_assoc_req(tpAniSirGlobal, uint32_t *);
|
static void lim_process_mlm_assoc_req(tpAniSirGlobal, uint32_t *);
|
||||||
@@ -117,9 +116,6 @@ void lim_process_mlm_req_messages(tpAniSirGlobal mac_ctx,
|
|||||||
struct scheduler_msg *msg)
|
struct scheduler_msg *msg)
|
||||||
{
|
{
|
||||||
switch (msg->type) {
|
switch (msg->type) {
|
||||||
case LIM_MLM_START_REQ:
|
|
||||||
lim_process_mlm_start_req(mac_ctx, msg->bodyptr);
|
|
||||||
break;
|
|
||||||
case LIM_MLM_JOIN_REQ:
|
case LIM_MLM_JOIN_REQ:
|
||||||
lim_process_mlm_join_req(mac_ctx, msg->bodyptr);
|
lim_process_mlm_join_req(mac_ctx, msg->bodyptr);
|
||||||
break;
|
break;
|
||||||
@@ -648,33 +644,17 @@ lim_mlm_add_bss(tpAniSirGlobal mac_ctx,
|
|||||||
return eSIR_SME_SUCCESS;
|
return eSIR_SME_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
void lim_process_mlm_start_req(tpAniSirGlobal mac_ctx,
|
||||||
* lim_process_mlm_start_req() - process MLM_START_REQ message
|
tLimMlmStartReq *mlm_start_req)
|
||||||
*
|
|
||||||
* @mac_ctx: global MAC context
|
|
||||||
* @msg_buf: Pointer to MLM message buffer
|
|
||||||
*
|
|
||||||
* This function is called to process MLM_START_REQ message
|
|
||||||
* from SME
|
|
||||||
* 1) MLME receives LIM_MLM_START_REQ from LIM
|
|
||||||
* 2) MLME sends WMA_ADD_BSS_REQ to HAL
|
|
||||||
* 3) MLME changes state to eLIM_MLM_WT_ADD_BSS_RSP_STATE
|
|
||||||
* MLME now waits for HAL to send WMA_ADD_BSS_RSP
|
|
||||||
*
|
|
||||||
* Return: None
|
|
||||||
*/
|
|
||||||
static void lim_process_mlm_start_req(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
|
|
||||||
{
|
{
|
||||||
tLimMlmStartReq *mlm_start_req;
|
|
||||||
tLimMlmStartCnf mlm_start_cnf;
|
tLimMlmStartCnf mlm_start_cnf;
|
||||||
tpPESession session = NULL;
|
tpPESession session = NULL;
|
||||||
|
|
||||||
if (msg_buf == NULL) {
|
if (!mlm_start_req) {
|
||||||
pe_err("Buffer is Pointing to NULL");
|
pe_err("Buffer is Pointing to NULL");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mlm_start_req = (tLimMlmStartReq *) msg_buf;
|
|
||||||
session = pe_find_session_by_session_id(mac_ctx,
|
session = pe_find_session_by_session_id(mac_ctx,
|
||||||
mlm_start_req->sessionId);
|
mlm_start_req->sessionId);
|
||||||
if (NULL == session) {
|
if (NULL == session) {
|
||||||
@@ -704,7 +684,7 @@ end:
|
|||||||
mlm_start_cnf.sessionId = mlm_start_req->sessionId;
|
mlm_start_cnf.sessionId = mlm_start_req->sessionId;
|
||||||
|
|
||||||
/* Free up buffer allocated for LimMlmScanReq */
|
/* Free up buffer allocated for LimMlmScanReq */
|
||||||
qdf_mem_free(msg_buf);
|
qdf_mem_free(mlm_start_req);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Respond immediately to LIM, only if MLME has not been
|
* Respond immediately to LIM, only if MLME has not been
|
||||||
|
@@ -531,6 +531,21 @@ lim_configure_ap_start_bss_session(tpAniSirGlobal mac_ctx, tpPESession session,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* lim_send_start_vdev_req() - send vdev start request
|
||||||
|
*@session: pe session
|
||||||
|
*@mlm_start_req: vdev start req
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static QDF_STATUS
|
||||||
|
lim_send_start_vdev_req(tpPESession session, tLimMlmStartReq *mlm_start_req)
|
||||||
|
{
|
||||||
|
lim_process_mlm_start_req(session->mac_ctx, mlm_start_req);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* __lim_handle_sme_start_bss_request() - process SME_START_BSS_REQ message
|
* __lim_handle_sme_start_bss_request() - process SME_START_BSS_REQ message
|
||||||
*@mac_ctx: Pointer to Global MAC structure
|
*@mac_ctx: Pointer to Global MAC structure
|
||||||
@@ -559,7 +574,7 @@ __lim_handle_sme_start_bss_request(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
|
|||||||
uint16_t sme_transaction_id = 0xFF;
|
uint16_t sme_transaction_id = 0xFF;
|
||||||
uint32_t chanwidth;
|
uint32_t chanwidth;
|
||||||
struct vdev_type_nss *vdev_type_nss;
|
struct vdev_type_nss *vdev_type_nss;
|
||||||
QDF_STATUS cfg_get_wmi_dfs_master_param = QDF_STATUS_SUCCESS;
|
QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
|
||||||
struct policy_mgr_hw_mode_params hw_mode;
|
struct policy_mgr_hw_mode_params hw_mode;
|
||||||
|
|
||||||
/* FEATURE_WLAN_DIAG_SUPPORT */
|
/* FEATURE_WLAN_DIAG_SUPPORT */
|
||||||
@@ -1009,13 +1024,13 @@ __lim_handle_sme_start_bss_request(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
|
|||||||
if (session->lim11hEnable &&
|
if (session->lim11hEnable &&
|
||||||
(eSIR_INFRA_AP_MODE ==
|
(eSIR_INFRA_AP_MODE ==
|
||||||
mlm_start_req->bssType)) {
|
mlm_start_req->bssType)) {
|
||||||
cfg_get_wmi_dfs_master_param =
|
qdf_status =
|
||||||
wlan_cfg_get_int(mac_ctx,
|
wlan_cfg_get_int(mac_ctx,
|
||||||
WNI_CFG_DFS_MASTER_ENABLED,
|
WNI_CFG_DFS_MASTER_ENABLED,
|
||||||
&val);
|
&val);
|
||||||
session->lim11hEnable = val;
|
session->lim11hEnable = val;
|
||||||
}
|
}
|
||||||
if (cfg_get_wmi_dfs_master_param != QDF_STATUS_SUCCESS)
|
if (QDF_IS_STATUS_ERROR(qdf_status))
|
||||||
/* Failed get CFG WNI_CFG_DFS_MASTER_ENABLED */
|
/* Failed get CFG WNI_CFG_DFS_MASTER_ENABLED */
|
||||||
pe_err("Get Fail, CFG DFS ENABLE");
|
pe_err("Get Fail, CFG DFS ENABLE");
|
||||||
}
|
}
|
||||||
@@ -1040,8 +1055,9 @@ __lim_handle_sme_start_bss_request(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
|
|||||||
session->peSessionId,
|
session->peSessionId,
|
||||||
session->limSmeState));
|
session->limSmeState));
|
||||||
|
|
||||||
lim_post_mlm_message(mac_ctx, LIM_MLM_START_REQ,
|
qdf_status = lim_send_start_vdev_req(session, mlm_start_req);
|
||||||
(uint32_t *) mlm_start_req);
|
if (QDF_IS_STATUS_ERROR(qdf_status))
|
||||||
|
goto free;
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
@@ -136,7 +136,7 @@ static void pe_init_beacon_params(tpAniSirGlobal pMac,
|
|||||||
static void pe_reset_protection_callback(void *ptr)
|
static void pe_reset_protection_callback(void *ptr)
|
||||||
{
|
{
|
||||||
tpPESession pe_session_entry = (tpPESession)ptr;
|
tpPESession pe_session_entry = (tpPESession)ptr;
|
||||||
tpAniSirGlobal mac_ctx = (tpAniSirGlobal)pe_session_entry->mac_ctx;
|
tpAniSirGlobal mac_ctx = pe_session_entry->mac_ctx;
|
||||||
int8_t i = 0;
|
int8_t i = 0;
|
||||||
tUpdateBeaconParams beacon_params;
|
tUpdateBeaconParams beacon_params;
|
||||||
uint16_t current_protection_state = 0;
|
uint16_t current_protection_state = 0;
|
||||||
@@ -678,6 +678,7 @@ tpPESession pe_create_session(tpAniSirGlobal pMac,
|
|||||||
}
|
}
|
||||||
session_ptr->vdev = vdev;
|
session_ptr->vdev = vdev;
|
||||||
session_ptr->smeSessionId = sme_session_id;
|
session_ptr->smeSessionId = sme_session_id;
|
||||||
|
session_ptr->mac_ctx = pMac;
|
||||||
|
|
||||||
if (eSIR_INFRASTRUCTURE_MODE == bssType)
|
if (eSIR_INFRASTRUCTURE_MODE == bssType)
|
||||||
lim_ft_open(pMac, &pMac->lim.gpSession[i]);
|
lim_ft_open(pMac, &pMac->lim.gpSession[i]);
|
||||||
@@ -689,7 +690,6 @@ tpPESession pe_create_session(tpAniSirGlobal pMac,
|
|||||||
session_ptr->old_protection_state = 0;
|
session_ptr->old_protection_state = 0;
|
||||||
session_ptr->is_session_obss_offload_enabled = false;
|
session_ptr->is_session_obss_offload_enabled = false;
|
||||||
session_ptr->is_obss_reset_timer_initialized = false;
|
session_ptr->is_obss_reset_timer_initialized = false;
|
||||||
session_ptr->mac_ctx = (void *)pMac;
|
|
||||||
|
|
||||||
status = qdf_mc_timer_init(&session_ptr->
|
status = qdf_mc_timer_init(&session_ptr->
|
||||||
protection_fields_reset_timer,
|
protection_fields_reset_timer,
|
||||||
@@ -735,6 +735,7 @@ free_dp_hash_table:
|
|||||||
|
|
||||||
session_ptr->dph.dphHashTable.pHashTable = NULL;
|
session_ptr->dph.dphHashTable.pHashTable = NULL;
|
||||||
session_ptr->dph.dphHashTable.pDphNodeArray = NULL;
|
session_ptr->dph.dphHashTable.pDphNodeArray = NULL;
|
||||||
|
session_ptr->valid = false;
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -1036,6 +1037,7 @@ void pe_delete_session(tpAniSirGlobal mac_ctx, tpPESession session)
|
|||||||
pe_delete_fils_info(session);
|
pe_delete_fils_info(session);
|
||||||
session->valid = false;
|
session->valid = false;
|
||||||
|
|
||||||
|
session->mac_ctx = NULL;
|
||||||
if (session->access_policy_vendor_ie)
|
if (session->access_policy_vendor_ie)
|
||||||
qdf_mem_free(session->access_policy_vendor_ie);
|
qdf_mem_free(session->access_policy_vendor_ie);
|
||||||
|
|
||||||
|
@@ -54,7 +54,6 @@
|
|||||||
#define LIM_MLM_MSG_START 1000
|
#define LIM_MLM_MSG_START 1000
|
||||||
#define LIM_MLM_SCAN_REQ LIM_MLM_MSG_START
|
#define LIM_MLM_SCAN_REQ LIM_MLM_MSG_START
|
||||||
#define LIM_MLM_SCAN_CNF (LIM_MLM_MSG_START + 1)
|
#define LIM_MLM_SCAN_CNF (LIM_MLM_MSG_START + 1)
|
||||||
#define LIM_MLM_START_REQ (LIM_MLM_MSG_START + 2)
|
|
||||||
#define LIM_MLM_START_CNF (LIM_MLM_MSG_START + 3)
|
#define LIM_MLM_START_CNF (LIM_MLM_MSG_START + 3)
|
||||||
#define LIM_MLM_JOIN_REQ (LIM_MLM_MSG_START + 4)
|
#define LIM_MLM_JOIN_REQ (LIM_MLM_MSG_START + 4)
|
||||||
#define LIM_MLM_JOIN_CNF (LIM_MLM_MSG_START + 5)
|
#define LIM_MLM_JOIN_CNF (LIM_MLM_MSG_START + 5)
|
||||||
@@ -1077,5 +1076,18 @@ void lim_process_assoc_failure_timeout(tpAniSirGlobal mac_ctx,
|
|||||||
*/
|
*/
|
||||||
void lim_send_mgmt_frame_tx(tpAniSirGlobal mac_ctx,
|
void lim_send_mgmt_frame_tx(tpAniSirGlobal mac_ctx,
|
||||||
struct scheduler_msg *msg);
|
struct scheduler_msg *msg);
|
||||||
|
/**
|
||||||
|
* lim_process_mlm_start_req() - process MLM_START_REQ message
|
||||||
|
*
|
||||||
|
* @mac_ctx: global MAC context
|
||||||
|
* @mlm_start_req: Pointer to start req
|
||||||
|
*
|
||||||
|
* This function is called to process MLM_START_REQ message
|
||||||
|
* from SME. MLME now waits for HAL to send WMA_ADD_BSS_RSP.
|
||||||
|
*
|
||||||
|
* Return: None
|
||||||
|
*/
|
||||||
|
void lim_process_mlm_start_req(tpAniSirGlobal mac_ctx,
|
||||||
|
tLimMlmStartReq *mlm_start_req);
|
||||||
|
|
||||||
#endif /* __LIM_TYPES_H */
|
#endif /* __LIM_TYPES_H */
|
||||||
|
@@ -8351,7 +8351,7 @@ void lim_process_ap_ecsa_timeout(void *data)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mac_ctx = (tpAniSirGlobal)session->mac_ctx;
|
mac_ctx = session->mac_ctx;
|
||||||
|
|
||||||
if (!session->dfsIncludeChanSwIe) {
|
if (!session->dfsIncludeChanSwIe) {
|
||||||
pe_debug("session->dfsIncludeChanSwIe not set");
|
pe_debug("session->dfsIncludeChanSwIe not set");
|
||||||
@@ -8423,3 +8423,4 @@ void lim_process_ap_ecsa_timeout(void *data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -707,7 +707,6 @@ uint8_t *mac_trace_get_lim_msg_string(uint16_t lim_msg)
|
|||||||
CASE_RETURN_STRING(SIR_LIM_MSG_TYPES_END);
|
CASE_RETURN_STRING(SIR_LIM_MSG_TYPES_END);
|
||||||
CASE_RETURN_STRING(LIM_MLM_SCAN_REQ);
|
CASE_RETURN_STRING(LIM_MLM_SCAN_REQ);
|
||||||
CASE_RETURN_STRING(LIM_MLM_SCAN_CNF);
|
CASE_RETURN_STRING(LIM_MLM_SCAN_CNF);
|
||||||
CASE_RETURN_STRING(LIM_MLM_START_REQ);
|
|
||||||
CASE_RETURN_STRING(LIM_MLM_START_CNF);
|
CASE_RETURN_STRING(LIM_MLM_START_CNF);
|
||||||
CASE_RETURN_STRING(LIM_MLM_JOIN_REQ);
|
CASE_RETURN_STRING(LIM_MLM_JOIN_REQ);
|
||||||
CASE_RETURN_STRING(LIM_MLM_JOIN_CNF);
|
CASE_RETURN_STRING(LIM_MLM_JOIN_CNF);
|
||||||
|
@@ -2022,14 +2022,6 @@ static QDF_STATUS sap_cac_end_notify(tHalHandle hHal,
|
|||||||
__func__, intf);
|
__func__, intf);
|
||||||
return qdf_status;
|
return qdf_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Transition from SAP_STARTING to SAP_STARTED
|
|
||||||
* (both without substates)
|
|
||||||
*/
|
|
||||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
|
||||||
"In %s, from state %s => %s",
|
|
||||||
__func__, "SAP_DFS_CAC_WAIT",
|
|
||||||
"SAP_STARTED");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
@@ -3554,16 +3546,20 @@ static int sap_start_dfs_cac_timer(struct sap_context *sap_ctx)
|
|||||||
/* Start the CAC timer */
|
/* Start the CAC timer */
|
||||||
status = qdf_mc_timer_start(&mac->sap.SapDfsInfo.sap_dfs_cac_timer,
|
status = qdf_mc_timer_start(&mac->sap.SapDfsInfo.sap_dfs_cac_timer,
|
||||||
cac_dur);
|
cac_dur);
|
||||||
if (status == QDF_STATUS_SUCCESS) {
|
if (QDF_IS_STATUS_ERROR(status)) {
|
||||||
mac->sap.SapDfsInfo.is_dfs_cac_timer_running = true;
|
|
||||||
return 1;
|
|
||||||
} else {
|
|
||||||
mac->sap.SapDfsInfo.is_dfs_cac_timer_running = false;
|
|
||||||
qdf_mc_timer_destroy(&mac->sap.SapDfsInfo.sap_dfs_cac_timer);
|
|
||||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
|
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
|
||||||
"%s: failed to start cac timer", __func__);
|
"%s: failed to start cac timer", __func__);
|
||||||
return 0;
|
goto destroy_timer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mac->sap.SapDfsInfo.is_dfs_cac_timer_running = true;
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
destroy_timer:
|
||||||
|
mac->sap.SapDfsInfo.is_dfs_cac_timer_running = false;
|
||||||
|
qdf_mc_timer_destroy(&mac->sap.SapDfsInfo.sap_dfs_cac_timer);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -640,6 +640,15 @@ int wma_tbttoffset_update_event_handler(void *handle, uint8_t *event,
|
|||||||
void wma_send_probe_rsp_tmpl(tp_wma_handle wma,
|
void wma_send_probe_rsp_tmpl(tp_wma_handle wma,
|
||||||
tpSendProbeRespParams probe_rsp_info);
|
tpSendProbeRespParams probe_rsp_info);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wma_set_ap_vdev_up() - send vdev up req
|
||||||
|
* @wma: wma handle
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
*
|
||||||
|
* Return: none
|
||||||
|
*/
|
||||||
|
void wma_set_ap_vdev_up(tp_wma_handle wma, uint8_t vdev_id);
|
||||||
|
|
||||||
void wma_send_beacon(tp_wma_handle wma, tpSendbeaconParams bcn_info);
|
void wma_send_beacon(tp_wma_handle wma, tpSendbeaconParams bcn_info);
|
||||||
|
|
||||||
void wma_set_keepalive_req(tp_wma_handle wma,
|
void wma_set_keepalive_req(tp_wma_handle wma,
|
||||||
|
@@ -867,6 +867,30 @@ send_rsp:
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wma_send_start_resp() - send vdev start response to upper layer
|
||||||
|
* @wma: wma handle
|
||||||
|
* @add_bss: add bss params
|
||||||
|
* @resp_event: response params
|
||||||
|
*
|
||||||
|
* Return: none
|
||||||
|
*/
|
||||||
|
static void wma_send_start_resp(tp_wma_handle wma,
|
||||||
|
tpAddBssParams add_bss,
|
||||||
|
wmi_vdev_start_response_event_fixed_param *
|
||||||
|
resp_event)
|
||||||
|
{
|
||||||
|
/* Send vdev stop if vdev start was success */
|
||||||
|
if (QDF_IS_STATUS_ERROR(add_bss->status) &&
|
||||||
|
!resp_event->status)
|
||||||
|
if (wma_send_vdev_stop_to_fw(wma, resp_event->vdev_id))
|
||||||
|
WMA_LOGE(FL("Failed to send vdev stop"));
|
||||||
|
|
||||||
|
WMA_LOGD(FL("Sending add bss rsp to umac(vdev %d status %d)"),
|
||||||
|
resp_event->vdev_id, add_bss->status);
|
||||||
|
wma_send_msg_high_priority(wma, WMA_ADD_BSS_RSP, (void *)add_bss, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wma_vdev_start_rsp() - send vdev start response to upper layer
|
* wma_vdev_start_rsp() - send vdev start response to upper layer
|
||||||
* @wma: wma handle
|
* @wma: wma handle
|
||||||
@@ -960,15 +984,7 @@ send_fail_resp:
|
|||||||
resp_event->vdev_id, peer, false);
|
resp_event->vdev_id, peer, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Send vdev stop if vdev start was success */
|
wma_send_start_resp(wma, add_bss, resp_event);
|
||||||
if ((add_bss->status != QDF_STATUS_SUCCESS) &&
|
|
||||||
!resp_event->status)
|
|
||||||
if (wma_send_vdev_stop_to_fw(wma, resp_event->vdev_id))
|
|
||||||
WMA_LOGE("%s: %d Failed to send vdev stop", __func__, __LINE__);
|
|
||||||
|
|
||||||
WMA_LOGD("%s: Sending add bss rsp to umac(vdev %d status %d)",
|
|
||||||
__func__, resp_event->vdev_id, add_bss->status);
|
|
||||||
wma_send_msg_high_priority(wma, WMA_ADD_BSS_RSP, (void *)add_bss, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
|
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
|
||||||
|
@@ -2888,6 +2888,33 @@ void wma_send_probe_rsp_tmpl(tp_wma_handle wma,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wma_set_ap_vdev_up(tp_wma_handle wma, uint8_t vdev_id)
|
||||||
|
{
|
||||||
|
struct vdev_up_params param = {0};
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
if (!((qdf_atomic_read(
|
||||||
|
&wma->interfaces[vdev_id].vdev_restart_params.
|
||||||
|
hidden_ssid_restart_in_progress)) ||
|
||||||
|
(wma->interfaces[vdev_id].is_channel_switch))) {
|
||||||
|
if (!wma_is_vdev_up(vdev_id)) {
|
||||||
|
param.vdev_id = vdev_id;
|
||||||
|
param.assoc_id = 0;
|
||||||
|
status = wma_send_vdev_up_to_fw(wma, ¶m,
|
||||||
|
wma->interfaces[vdev_id].bssid);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status)) {
|
||||||
|
WMA_LOGE(FL("failed to send vdev up"));
|
||||||
|
policy_mgr_set_do_hw_mode_change_flag(
|
||||||
|
wma->psoc, false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
wma_vdev_set_mlme_state(wma, vdev_id, WLAN_VDEV_S_RUN);
|
||||||
|
wma_set_sap_keepalive(wma, vdev_id);
|
||||||
|
wma_set_vdev_mgmt_rate(wma, vdev_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wma_send_beacon() - send beacon template
|
* wma_send_beacon() - send beacon template
|
||||||
* @wma: wma handle
|
* @wma: wma handle
|
||||||
@@ -2905,7 +2932,6 @@ void wma_send_beacon(tp_wma_handle wma, tpSendbeaconParams bcn_info)
|
|||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
uint8_t *p2p_ie;
|
uint8_t *p2p_ie;
|
||||||
struct sAniBeaconStruct *beacon;
|
struct sAniBeaconStruct *beacon;
|
||||||
struct vdev_up_params param = {0};
|
|
||||||
|
|
||||||
beacon = (struct sAniBeaconStruct *) (bcn_info->beacon);
|
beacon = (struct sAniBeaconStruct *) (bcn_info->beacon);
|
||||||
vdev = wma_find_vdev_by_addr(wma, beacon->macHdr.sa, &vdev_id);
|
vdev = wma_find_vdev_by_addr(wma, beacon->macHdr.sa, &vdev_id);
|
||||||
@@ -2941,26 +2967,7 @@ void wma_send_beacon(tp_wma_handle wma, tpSendbeaconParams bcn_info)
|
|||||||
WMA_LOGE("%s : wma_store_bcn_tmpl Failed", __func__);
|
WMA_LOGE("%s : wma_store_bcn_tmpl Failed", __func__);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!((qdf_atomic_read(
|
wma_set_ap_vdev_up(wma, vdev_id);
|
||||||
&wma->interfaces[vdev_id].vdev_restart_params.
|
|
||||||
hidden_ssid_restart_in_progress)) ||
|
|
||||||
(wma->interfaces[vdev_id].is_channel_switch))) {
|
|
||||||
if (!wma_is_vdev_up(vdev_id)) {
|
|
||||||
param.vdev_id = vdev_id;
|
|
||||||
param.assoc_id = 0;
|
|
||||||
status = wma_send_vdev_up_to_fw(wma, ¶m,
|
|
||||||
bcn_info->bssId);
|
|
||||||
if (QDF_IS_STATUS_ERROR(status)) {
|
|
||||||
WMA_LOGE(FL("failed to send vdev up"));
|
|
||||||
policy_mgr_set_do_hw_mode_change_flag(
|
|
||||||
wma->psoc, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
wma_vdev_set_mlme_state(wma, vdev_id, WLAN_VDEV_S_RUN);
|
|
||||||
wma_set_sap_keepalive(wma, vdev_id);
|
|
||||||
wma_set_vdev_mgmt_rate(wma, vdev_id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user