diff options
| author | mukul sharma <mukul@qti.qualcomm.com> | 2015-06-24 13:25:11 +0530 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2015-06-25 08:16:39 -0700 |
| commit | 4ebb297e8a8edc67dc006adc3b46f7487aecdb19 (patch) | |
| tree | 913d5a9168034b8e5259944fbfbba36fabb57e47 | |
| parent | 02890bc849ce3bd8da88004727e5e0513d204b9f (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.h | 1 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c | 24 |
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 ) |
