qcacld-3.0: Add vdev state machine for start BSS and CSA failure
Adds vdev state machine for start bss and CSA failure.
Change-Id: I77979af192e40fe44dd9ea7ce41d7be52f40ad15
CRs-Fixed: 2316581
diff --git a/core/mac/src/pe/lim/lim_utils.c b/core/mac/src/pe/lim/lim_utils.c
index 66577d5..3d48b58 100644
--- a/core/mac/src/pe/lim/lim_utils.c
+++ b/core/mac/src/pe/lim/lim_utils.c
@@ -8423,13 +8423,6 @@
}
}
-void lim_send_start_bss_confirm(tpAniSirGlobal mac_ctx,
- tLimMlmStartCnf *start_cnf)
-{
- lim_post_sme_message(mac_ctx, LIM_MLM_START_CNF,
- (uint32_t *)start_cnf);
-}
-
#ifdef CONFIG_VDEV_SM
void lim_send_beacon(tpAniSirGlobal mac_ctx, tpPESession session)
@@ -8558,8 +8551,56 @@
return QDF_STATUS_SUCCESS;
}
+QDF_STATUS lim_ap_mlme_vdev_start_req_failed(struct vdev_mlme_obj *vdev_mlme,
+ uint16_t data_len, void *data)
+{
+ tpAniSirGlobal mac_ctx;
+
+ /* store mac ctx in vdev_mlme legacy_vdev_ptr?*/
+ mac_ctx = cds_get_context(QDF_MODULE_ID_PE);
+ if (!mac_ctx) {
+ pe_err("mac_ctx is NULL");
+ if (data)
+ qdf_mem_free(data);
+ return QDF_STATUS_E_INVAL;
+ }
+
+ lim_process_mlm_start_cnf(mac_ctx, data);
+
+ return QDF_STATUS_SUCCESS;
+}
+
+void lim_send_start_bss_confirm(tpAniSirGlobal mac_ctx,
+ tLimMlmStartCnf *start_cnf)
+{
+ if (start_cnf->resultCode == eSIR_SME_SUCCESS) {
+ lim_post_sme_message(mac_ctx, LIM_MLM_START_CNF,
+ (uint32_t *)start_cnf);
+ } else {
+ tpPESession session;
+
+ session = pe_find_session_by_session_id(mac_ctx,
+ start_cnf->sessionId);
+ if (!session) {
+ pe_err("session is NULL");
+ return;
+ }
+ ap_mlme_set_vdev_start_failed(session->vdev, true);
+ wlan_vdev_mlme_sm_deliver_evt(session->vdev,
+ WLAN_VDEV_SM_EV_START_REQ_FAIL,
+ sizeof(*start_cnf), start_cnf);
+ }
+}
+
#else
+void lim_send_start_bss_confirm(tpAniSirGlobal mac_ctx,
+ tLimMlmStartCnf *start_cnf)
+{
+ lim_post_sme_message(mac_ctx, LIM_MLM_START_CNF,
+ (uint32_t *)start_cnf);
+}
+
void lim_send_beacon(tpAniSirGlobal mac_ctx, tpPESession session)
{
lim_send_beacon_ind(mac_ctx, session);