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
This commit is contained in:
Vignesh Viswanathan 2018-05-24 11:48:12 +05:30 • committed by nshrivas
commit b2dcdd024f
5 changed files with 20 additions and 14 deletions

View file

@ -1473,6 +1473,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;

View file

@ -2298,7 +2298,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))
@ -2310,7 +2310,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))
@ -2341,10 +2342,9 @@ 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,
@ -2361,7 +2361,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))
@ -2382,7 +2383,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))
@ -2400,9 +2401,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,

View file

@ -1189,8 +1189,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

View file

@ -16191,6 +16191,7 @@ QDF_STATUS csr_send_mb_disassoc_cnf_msg(tpAniSirGlobal pMac,
pMsg->messageType = eWNI_SME_DISASSOC_CNF;
pMsg->statusCode = eSIR_SME_SUCCESS;
pMsg->length = sizeof(tSirSmeDisassocCnf);
pMsg->sme_session_id = pDisassocInd->sessionId;
qdf_copy_macaddr(&pMsg->peer_macaddr,
&pDisassocInd->peer_macaddr);
status = QDF_STATUS_SUCCESS;
@ -16228,6 +16229,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)) {

View file

@ -76,7 +76,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,