From ef4725cfe4ea8133e214da795574a5d626af3954 Mon Sep 17 00:00:00 2001 From: Abhishek Ambure Date: Tue, 25 Feb 2020 12:40:33 +0530 Subject: [PATCH] qcacld-3.0: Add check for STA disconnect in pe disconnect cb In PE layer, STA session's mlme state check is added to avoid race between NB disconnect and SB disconnect from emergency roaming disconnect. In pe_disconnect_cb, if session's mlme state is already disconnecting no need to send tear down link with AP. Change-Id: I096b44167d65aa307e6685f07d42656d4e38a042 CRs-Fixed: 2627760 --- core/mac/src/pe/lim/lim_api.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/mac/src/pe/lim/lim_api.c b/core/mac/src/pe/lim/lim_api.c index 24d0ca76a7c8..a3613fd8c20c 100644 --- a/core/mac/src/pe/lim/lim_api.c +++ b/core/mac/src/pe/lim/lim_api.c @@ -2230,6 +2230,14 @@ pe_disconnect_callback(struct mac_context *mac, uint8_t vdev_id, return QDF_STATUS_E_FAILURE; } + if (!((session->limMlmState == eLIM_MLM_LINK_ESTABLISHED_STATE) && + (session->limSmeState != eLIM_SME_WT_DISASSOC_STATE) && + (session->limSmeState != eLIM_SME_WT_DEAUTH_STATE))) { + pe_info("Cannot handle in mlmstate %d sme state %d as vdev_id:%d is not in connected state", + session->limMlmState, session->limSmeState, vdev_id); + return QDF_STATUS_SUCCESS; + } + if (deauth_disassoc_frame && deauth_disassoc_frame_len > SIR_MAC_MIN_IE_LEN) { lim_extract_ies_from_deauth_disassoc(session,