wlan: Send proper mlm cnf when deauth occured during roaming
When DUT received the Deauth frame in eLIM_MLM_WT_ADD_STA_RSP_STATE
during roaming, Lim delayed the processing of the deauth till
ADD_STA_RSP comes from firmware, but that time lim is posting
the message as LIM_MLM_ASSOC_CNF instead of LIM_MLM_REASSOC_CNF,
which will not allow csr to inidcated to HDD.so now lim will send
LIM_MLM_REASSOC_CNF to mlm so csr can call hdd callback with reason
eCSR_ROAM_FT_REASSOC_FAILED so hdd can initiate disconnect procedure.
Change-Id: Idd000225abb3ff0fbcda54ada42175709f78a0d7
CRs-Fixed: 697263
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
index d79a867..c8ee008 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
@@ -1911,6 +1911,7 @@
limLog( pMac, LOGE, FL( "Encountered NULL Pointer" ));
return;
}
+
if (true == psessionEntry->fDeauthReceived)
{
PELOGE(limLog(pMac, LOGE,
@@ -1923,6 +1924,11 @@
"eSIR_SME_JOIN_DEAUTH_FROM_AP_DURING_ADD_STA staIdx: %d"
"limMlmState: %d"), pAddStaParams->staIdx,
psessionEntry->limMlmState);)
+ if(psessionEntry->limSmeState == eLIM_SME_WT_REASSOC_STATE)
+ mesgType = LIM_MLM_REASSOC_CNF;
+ //We are sending result code eSIR_SME_JOIN_DEAUTH_FROM_AP_DURING_ADD_STA
+ //which will trigger proper cleanup (DEL_STA/DEL_BSS both required) in
+ //either assoc cnf or reassoc cnf handler.
mlmAssocCnf.resultCode =
(tSirResultCodes) eSIR_SME_JOIN_DEAUTH_FROM_AP_DURING_ADD_STA;
psessionEntry->staId = pAddStaParams->staIdx;
@@ -1941,8 +1947,9 @@
mlmAssocCnf.resultCode = (tSirResultCodes) eSIR_SME_REFUSED;
goto end;
}
- if (psessionEntry->limSmeState == eLIM_SME_WT_REASSOC_STATE)
- mesgType = LIM_MLM_REASSOC_CNF;
+
+ if(psessionEntry->limSmeState == eLIM_SME_WT_REASSOC_STATE)
+ mesgType = LIM_MLM_REASSOC_CNF;
//
// Update the DPH Hash Entry for this STA
// with proper state info