|
@@ -474,8 +474,7 @@ void lim_pmf_comeback_timer_callback(void *context)
|
|
|
*/
|
|
|
void lim_process_mlm_auth_cnf(tpAniSirGlobal mac_ctx, uint32_t *msg)
|
|
|
{
|
|
|
- tAniAuthType auth_type, auth_mode;
|
|
|
- tLimMlmAuthReq *auth_req;
|
|
|
+ tAniAuthType auth_type;
|
|
|
tLimMlmAuthCnf *auth_cnf;
|
|
|
tpPESession session_entry;
|
|
|
|
|
@@ -545,34 +544,18 @@ void lim_process_mlm_auth_cnf(tpAniSirGlobal mac_ctx, uint32_t *msg)
|
|
|
* When shared authentication fails with reason
|
|
|
* code "13" and authType set to 'auto switch',
|
|
|
* Try with open Authentication
|
|
|
+ * There is a possibility that AP does not receive
|
|
|
+ * ack and retries auth frame. The retry frame could be
|
|
|
+ * received at host after open sys auth is sent to firmware
|
|
|
+ * resulting in auth failure. So, to fix this issue, open system
|
|
|
+ * auth frame is sent to firmware after timer of 15msec expires.
|
|
|
*/
|
|
|
- auth_mode = eSIR_OPEN_SYSTEM;
|
|
|
- /* Trigger MAC based Authentication */
|
|
|
- auth_req = qdf_mem_malloc(sizeof(tLimMlmAuthReq));
|
|
|
- if (NULL == auth_req) {
|
|
|
- pe_err("mlmAuthReq :Memory alloc failed");
|
|
|
- return;
|
|
|
- }
|
|
|
- if (session_entry->limSmeState ==
|
|
|
- eLIM_SME_WT_AUTH_STATE) {
|
|
|
- sir_copy_mac_addr(auth_req->peerMacAddr,
|
|
|
- session_entry->bssId);
|
|
|
- } else {
|
|
|
- qdf_mem_copy((uint8_t *)&auth_req->peerMacAddr,
|
|
|
- (uint8_t *)&mac_ctx->lim.gLimPreAuthPeerAddr,
|
|
|
- sizeof(tSirMacAddr));
|
|
|
+ mac_ctx->lim.limTimers.open_sys_auth_timer.sessionId =
|
|
|
+ auth_cnf->sessionId;
|
|
|
+ if (tx_timer_activate(&mac_ctx->lim.limTimers.
|
|
|
+ open_sys_auth_timer) != TX_SUCCESS) {
|
|
|
+ pe_err("failed to activate system Auth timer");
|
|
|
}
|
|
|
- auth_req->authType = auth_mode;
|
|
|
- /* Update PE session Id */
|
|
|
- auth_req->sessionId = auth_cnf->sessionId;
|
|
|
- if (wlan_cfg_get_int(mac_ctx,
|
|
|
- WNI_CFG_AUTHENTICATE_FAILURE_TIMEOUT,
|
|
|
- (uint32_t *) &auth_req->authFailureTimeout)
|
|
|
- != eSIR_SUCCESS) {
|
|
|
- pe_err("Fail:retrieve AuthFailureTimeout");
|
|
|
- }
|
|
|
- lim_post_mlm_message(mac_ctx, LIM_MLM_AUTH_REQ,
|
|
|
- (uint32_t *) auth_req);
|
|
|
return;
|
|
|
} else {
|
|
|
/* MAC based authentication failure */
|