summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormukul sharma <mukul@qti.qualcomm.com>2015-06-24 13:25:11 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2015-06-25 08:16:39 -0700
commit4ebb297e8a8edc67dc006adc3b46f7487aecdb19 (patch)
tree913d5a9168034b8e5259944fbfbba36fabb57e47
parent02890bc849ce3bd8da88004727e5e0513d204b9f (diff)
qcacld-2.0: Send right mlm cnf when deauth occure during roaming
prima to qcacld-2.0 propagation 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: I005245222862e7d37ce8bf2dba6a9013f4a34964 CRs-Fixed: 697263
-rw-r--r--CORE/MAC/inc/sirApi.h1
-rw-r--r--CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c24
2 files changed, 22 insertions, 3 deletions
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index a335e463a9b7..3d69b2a14b2a 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -254,6 +254,7 @@ typedef enum eSirResultCodes
eSIR_SME_BSS_ALREADY_STARTED_OR_JOINED,
eSIR_SME_LOST_LINK_WITH_PEER_RESULT_CODE,
eSIR_SME_REFUSED,
+ eSIR_SME_JOIN_DEAUTH_FROM_AP_DURING_ADD_STA,
eSIR_SME_JOIN_TIMEOUT_RESULT_CODE,
eSIR_SME_AUTH_TIMEOUT_RESULT_CODE,
eSIR_SME_ASSOC_TIMEOUT_RESULT_CODE,
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
index ac7f117a59e4..b3c91a09b61a 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
@@ -1978,9 +1978,27 @@ void limProcessStaMlmAddStaRsp( tpAniSirGlobal pMac, tpSirMsgQ limMsgQ ,tpPESess
if (true == psessionEntry->fDeauthReceived)
{
- PELOGE(limLog(pMac, LOGE,
- FL("Received Deauth frame in ADD_STA_RESP state"));)
- pAddStaParams->status = eHAL_STATUS_FAILURE;
+ PELOGE(limLog(pMac, LOGE,
+ FL("Received Deauth frame in ADD_STA_RESP state"));)
+ if (eHAL_STATUS_SUCCESS == pAddStaParams->status)
+ {
+ PELOGE(limLog(pMac, LOGE,
+ FL("ADD_STA success, send update result code with"
+ "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;
+ goto end;
+ }
}
if ( eHAL_STATUS_SUCCESS == pAddStaParams->status )