qcacld-3.0: Initialize PMF timer in create session

Initialize PMF comeback timer in PE create session.

Currenlty PMF comeback timer is initialized in join request and
destroyed in delete session. In offload cases, PE session is
created without join request resulting in destruction of timer
which was not initialized. Add timer initialization in
pe_create_session.

Change-Id: I3dba6713b2bf64cc69f0f2d8322293ff763c0989
CRs-Fixed: 948924
This commit is contained in:
Krishna Kumaar Natarajan 2015-12-08 14:43:13 -08:00 • committed by Akash Patel
commit 48de7dedc8
2 changed files with 15 additions and 21 deletions

View file

@ -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

View file

@ -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;