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 b3933f9fb7a3..ee010b6a4170 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 @@ -1829,26 +1829,10 @@ __lim_process_sme_join_req(tpAniSirGlobal mac_ctx, uint32_t *msg_buf) /* Record if management frames need to be protected */ #ifdef WLAN_FEATURE_11W - if (eSIR_ED_AES_128_CMAC == sme_join_req->MgmtEncryptionType) { - CDF_STATUS cdf_status; + if (eSIR_ED_AES_128_CMAC == sme_join_req->MgmtEncryptionType) session->limRmfEnabled = 1; - session->pmfComebackTimerInfo.pMac = mac_ctx; - session->pmfComebackTimerInfo.sessionID = - session_id; - cdf_status = cdf_mc_timer_init( - &session->pmfComebackTimer, - CDF_TIMER_TYPE_SW, - lim_pmf_comeback_timer_callback, - (void *)&session->pmfComebackTimerInfo); - if (CDF_STATUS_SUCCESS != cdf_status) { - lim_log(mac_ctx, LOGP, - FL("cannot init pmf comeback timer.")); - ret_code = eSIR_LOGP_EXCEPTION; - goto end; - } - } else { + else session->limRmfEnabled = 0; - } #endif #ifdef FEATURE_WLAN_DIAG_SUPPORT_LIM diff --git a/core/mac/src/pe/lim/lim_session.c b/core/mac/src/pe/lim/lim_session.c index d6914543e697..55a126a180dd 100644 --- a/core/mac/src/pe/lim/lim_session.c +++ b/core/mac/src/pe/lim/lim_session.c @@ -384,6 +384,15 @@ pe_create_session(tpAniSirGlobal pMac, uint8_t *bssid, uint8_t *sessionId, CDF_TRACE(CDF_MODULE_ID_PE, CDF_TRACE_LEVEL_ERROR, FL("cannot create or start protectionFieldsResetTimer\n")); } + + session_ptr->pmfComebackTimerInfo.pMac = pMac; + session_ptr->pmfComebackTimerInfo.sessionID = *sessionId; + status = cdf_mc_timer_init(&session_ptr->pmfComebackTimer, + CDF_TIMER_TYPE_SW, lim_pmf_comeback_timer_callback, + (void *)&session_ptr->pmfComebackTimerInfo); + if (!CDF_IS_STATUS_SUCCESS(status)) + lim_log(pMac, LOGE, FL("cannot init pmf comeback timer.")); + return &pMac->lim.gpSession[i]; } @@ -665,9 +674,10 @@ void pe_delete_session(tpAniSirGlobal mac_ctx, tpPESession session) session->addIeParams.probeRespBCNDataLen = 0; } #ifdef WLAN_FEATURE_11W - /* if PMF connection */ - if (session->limRmfEnabled) - cdf_mc_timer_destroy(&session->pmfComebackTimer); + if (CDF_TIMER_STATE_RUNNING == + cdf_mc_timer_get_current_state(&session->pmfComebackTimer)) + cdf_mc_timer_stop(&session->pmfComebackTimer); + cdf_mc_timer_destroy(&session->pmfComebackTimer); #endif session->valid = false;