summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVignesh Viswanathan <viswanat@codeaurora.org>2018-05-22 20:55:11 +0530
committernshrivas <nshrivas@codeaurora.org>2018-05-24 08:23:12 -0700
commitef0e6a483e9f2b0076b94221a902722dbabcdfed (patch)
treee792287b4a8be2f6f927376198ce374c4c649d2a
parent7dc7ae2e1d0092bc55627d7d1d915a36b33afcfa (diff)
qcacld-3.0: Send SME session ID in eWNI_SME_DISCONNECT_DONE_IND
Currently PE session ID is filled in eWNI_SME_DISCONNECT_DONE_IND __lim_process_sme_disassoc_cnf but this command is expected to fill SME session ID instead. Send SME session ID instead of PE session ID for eWNI_SME_DISCONNECT_DONE_IND in __lim_process_sme_disassoc_cnf function. Change-Id: I50f7ec31eea265d04a94d9717415227bde09bdb5 CRs-Fixed: 2246024
-rw-r--r--core/mac/inc/sir_api.h1
-rw-r--r--core/mac/src/pe/lim/lim_process_sme_req_messages.c24
-rw-r--r--core/mac/src/pe/lim/lim_send_sme_rsp_messages.c4
-rw-r--r--core/sme/src/csr/csr_api_roam.c2
-rw-r--r--core/sme/src/csr/csr_cmd_process.c6
5 files changed, 22 insertions, 15 deletions
diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h
index 313dae998639..57c999dbf6ae 100644
--- a/core/mac/inc/sir_api.h
+++ b/core/mac/inc/sir_api.h
@@ -1753,6 +1753,7 @@ typedef struct sSirSmeDisassocInd {
typedef struct sSirSmeDisassocCnf {
uint16_t messageType; /* eWNI_SME_DISASSOC_CNF */
uint16_t length;
+ uint8_t sme_session_id;
tSirResultCodes statusCode;
struct qdf_mac_addr bssid;
struct qdf_mac_addr peer_macaddr;
diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
index 9b5cd44167d5..c19277b7463d 100644
--- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c
+++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
@@ -2602,7 +2602,7 @@ static void __lim_process_sme_disassoc_cnf(tpAniSirGlobal pMac, uint32_t *pMsgBu
if (psessionEntry == NULL) {
pe_err("session does not exist for given bssId");
status = lim_prepare_disconnect_done_ind(pMac, &msg,
- CSR_SESSION_ID_INVALID,
+ smeDisassocCnf.sme_session_id,
eSIR_SME_INVALID_SESSION,
NULL);
if (QDF_IS_STATUS_SUCCESS(status))
@@ -2614,7 +2614,8 @@ static void __lim_process_sme_disassoc_cnf(tpAniSirGlobal pMac, uint32_t *pMsgBu
if (!lim_is_sme_disassoc_cnf_valid(pMac, &smeDisassocCnf, psessionEntry)) {
pe_err("received invalid SME_DISASSOC_CNF message");
- status = lim_prepare_disconnect_done_ind(pMac, &msg, sessionId,
+ status = lim_prepare_disconnect_done_ind(pMac, &msg,
+ psessionEntry->smeSessionId,
eSIR_SME_INVALID_PARAMETERS,
&smeDisassocCnf.bssid.bytes[0]);
if (QDF_IS_STATUS_SUCCESS(status))
@@ -2645,10 +2646,10 @@ static void __lim_process_sme_disassoc_cnf(tpAniSirGlobal pMac, uint32_t *pMsgBu
lim_print_sme_state(pMac, LOGE,
psessionEntry->limSmeState);
status = lim_prepare_disconnect_done_ind(pMac, &msg,
- sessionId,
- eSIR_SME_INVALID_STATE,
- &smeDisassocCnf.bssid.
- bytes[0]);
+ psessionEntry->smeSessionId,
+ eSIR_SME_INVALID_STATE,
+ &smeDisassocCnf.bssid.
+ bytes[0]);
if (QDF_IS_STATUS_SUCCESS(status))
lim_send_sme_disassoc_deauth_ntf(pMac,
QDF_STATUS_SUCCESS,
@@ -2665,7 +2666,8 @@ static void __lim_process_sme_disassoc_cnf(tpAniSirGlobal pMac, uint32_t *pMsgBu
default: /* eLIM_UNKNOWN_ROLE */
pe_err("received unexpected SME_DISASSOC_CNF role %d",
GET_LIM_SYSTEM_ROLE(psessionEntry));
- status = lim_prepare_disconnect_done_ind(pMac, &msg, sessionId,
+ status = lim_prepare_disconnect_done_ind(pMac, &msg,
+ psessionEntry->smeSessionId,
eSIR_SME_INVALID_STATE,
&smeDisassocCnf.bssid.bytes[0]);
if (QDF_IS_STATUS_SUCCESS(status))
@@ -2686,7 +2688,7 @@ static void __lim_process_sme_disassoc_cnf(tpAniSirGlobal pMac, uint32_t *pMsgBu
MAC_ADDRESS_STR,
MAC_ADDR_ARRAY(smeDisassocCnf.peer_macaddr.bytes));
status = lim_prepare_disconnect_done_ind(pMac, &msg,
- sessionId,
+ psessionEntry->smeSessionId,
eSIR_SME_INVALID_PARAMETERS,
&smeDisassocCnf.bssid.bytes[0]);
if (QDF_IS_STATUS_SUCCESS(status))
@@ -2704,9 +2706,9 @@ static void __lim_process_sme_disassoc_cnf(tpAniSirGlobal pMac, uint32_t *pMsgBu
MAC_ADDR_ARRAY(smeDisassocCnf.peer_macaddr.bytes),
pStaDs->mlmStaContext.mlmState);
status = lim_prepare_disconnect_done_ind(pMac, &msg,
- CSR_SESSION_ID_INVALID,
- eSIR_SME_SUCCESS,
- NULL);
+ psessionEntry->smeSessionId,
+ eSIR_SME_SUCCESS,
+ NULL);
if (QDF_IS_STATUS_SUCCESS(status))
lim_send_sme_disassoc_deauth_ntf(pMac,
QDF_STATUS_SUCCESS,
diff --git a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
index 2a7e43151dec..5e19ae7b7987 100644
--- a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
+++ b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
@@ -1360,8 +1360,8 @@ QDF_STATUS lim_prepare_disconnect_done_ind(tpAniSirGlobal mac_ctx,
sir_sme_dis_ind->length = sizeof(*sir_sme_dis_ind);
sir_sme_dis_ind->session_id = session_id;
if (peer_mac_addr)
- qdf_mem_copy(&sir_sme_dis_ind->peer_mac,
- &peer_mac_addr, ETH_ALEN);
+ qdf_mem_copy(sir_sme_dis_ind->peer_mac,
+ peer_mac_addr, ETH_ALEN);
/*
* Instead of sending deauth reason code as 505 which is
diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c
index b7c8ed996331..9d3868bf6336 100644
--- a/core/sme/src/csr/csr_api_roam.c
+++ b/core/sme/src/csr/csr_api_roam.c
@@ -16763,6 +16763,7 @@ QDF_STATUS csr_send_mb_disassoc_cnf_msg(tpAniSirGlobal pMac,
status = QDF_STATUS_SUCCESS;
if (!QDF_IS_STATUS_SUCCESS(status))
break;
+ pMsg->sme_session_id = pDisassocInd->sessionId;
pMsg->messageType = eWNI_SME_DISASSOC_CNF;
pMsg->statusCode = eSIR_SME_SUCCESS;
pMsg->length = sizeof(tSirSmeDisassocCnf);
@@ -16803,6 +16804,7 @@ QDF_STATUS csr_send_mb_deauth_cnf_msg(tpAniSirGlobal pMac,
pMsg->messageType = eWNI_SME_DEAUTH_CNF;
pMsg->statusCode = eSIR_SME_SUCCESS;
pMsg->length = sizeof(tSirSmeDeauthCnf);
+ pMsg->sme_session_id = pDeauthInd->sessionId;
qdf_copy_macaddr(&pMsg->bssid, &pDeauthInd->bssid);
status = QDF_STATUS_SUCCESS;
if (!QDF_IS_STATUS_SUCCESS(status)) {
diff --git a/core/sme/src/csr/csr_cmd_process.c b/core/sme/src/csr/csr_cmd_process.c
index f118ffedc6b9..b762f5904dad 100644
--- a/core/sme/src/csr/csr_cmd_process.c
+++ b/core/sme/src/csr/csr_cmd_process.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2018 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -110,7 +110,9 @@ QDF_STATUS csr_msg_processor(tpAniSirGlobal mac_ctx, void *msg_buf)
* due to failure or finding the condition meets both
* SAP and infra/IBSS requirement.
*/
- if (eWNI_SME_SETCONTEXT_RSP == sme_rsp->messageType) {
+ if (eWNI_SME_SETCONTEXT_RSP == sme_rsp->messageType ||
+ eWNI_SME_DISCONNECT_DONE_IND ==
+ sme_rsp->messageType) {
sme_warn("handling msg 0x%X CSR state is %d",
sme_rsp->messageType, cur_state);
csr_roam_check_for_link_status_change(mac_ctx,