diff --git a/core/mac/src/pe/lim/lim_process_assoc_req_frame.c b/core/mac/src/pe/lim/lim_process_assoc_req_frame.c index 1972461f0350..02b092312dc2 100644 --- a/core/mac/src/pe/lim/lim_process_assoc_req_frame.c +++ b/core/mac/src/pe/lim/lim_process_assoc_req_frame.c @@ -280,13 +280,32 @@ lim_process_assoc_req_frame(tpAniSirGlobal pMac, uint8_t *pRxPacketInfo, */ pStaDs = dph_lookup_hash_entry(pMac, pHdr->sa, &assoc_id, &psessionEntry->dph.dphHashTable); - if ((NULL != pStaDs) && (pHdr->fc.retry > 0)) { - lim_log(pMac, LOGE, - FL("STA is initiating Assoc Req after ACK lost. Do not process" - " sessionid: %d sys subType=%d for role=%d from: " - MAC_ADDRESS_STR), psessionEntry->peSessionId, - subType, GET_LIM_SYSTEM_ROLE(psessionEntry), - MAC_ADDR_ARRAY(pHdr->sa)); + if ((NULL != pStaDs)) { + if (pHdr->fc.retry > 0) { + lim_log(pMac, LOGE, + FL("STA is initiating Assoc Req after ACK lost. Do not process" + " sessionid: %d sys subType=%d for role=%d from: " + MAC_ADDRESS_STR), psessionEntry->peSessionId, + subType, GET_LIM_SYSTEM_ROLE(psessionEntry), + MAC_ADDR_ARRAY(pHdr->sa)); + } else { + /* + * STA might have missed the assoc response, + * so it is sending assoc request frame again. + */ + lim_send_assoc_rsp_mgmt_frame(pMac, eSIR_SUCCESS, + pStaDs->assocId, pStaDs->staAddr, + pStaDs->mlmStaContext.subType, pStaDs, + psessionEntry); + lim_log(pMac, LOGE, + FL("DUT already received an assoc request frame " + "and STA is sending another assoc req.So, do not " + "Process sessionid: %d sys subType=%d for role=%d " + "from: "MAC_ADDRESS_STR), + psessionEntry->peSessionId, subType, + psessionEntry->limSystemRole, + MAC_ADDR_ARRAY(pHdr->sa)); + } return; }