summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMahesh Kumar Kalikot Veetil <mkalikot@qca.qualcomm.com>2015-08-27 18:20:15 -0700
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2015-08-31 14:14:11 +0530
commitf868b8a5de47abe91a03feff2e8786789fe14564 (patch)
tree6e7f7dabb8cf444b0b3fd8136b6cc12fff32b68b
parentfc0d5d08359b9849df2a9adb29c605c20b9bf10c (diff)
qcacld-2.0: Fix a race on disassoc request
PE generated disassoc request is not serialized in SME queue. This results in corrupting 'lim.limDisassocDeauthCnfReq.pMlmDisassocReq' which is a global context to save disassoc request. Fix this condition by making all disassoc requests not to wait for completion. So both request and cleanup happens without a context switch. Change-Id: Iac2c0afa26fbb977b1315ed7733687bc90751430 CRs-Fixed: 898350
-rw-r--r--CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c15
-rw-r--r--Kbuild4
2 files changed, 19 insertions, 0 deletions
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
index c323394c5d8e..0ff161f12535 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
@@ -2897,7 +2897,21 @@ limProcessMlmDisassocReqNtf(tpAniSirGlobal pMac, eHalStatus suspendStatus, tANI_
if (sendDisassocFrame && (pMlmDisassocReq->reasonCode != eSIR_MAC_DISASSOC_DUE_TO_FTHANDOFF_REASON))
{
pMac->lim.limDisassocDeauthCnfReq.pMlmDisassocReq = pMlmDisassocReq;
+#ifdef MDM_PLATFORM
+ limSendDisassocMgmtFrame(pMac,
+ pMlmDisassocReq->reasonCode,
+ pMlmDisassocReq->peerMacAddr,
+ psessionEntry, FALSE);
+ /* Send Disassoc CNF and receive path cleanup */
+ limSendDisassocCnf(pMac);
+ /*
+ * Abort Tx so that data frames won't be sent to the AP
+ * after sending Disassoc.
+ */
+ if (LIM_IS_STA_ROLE(psessionEntry))
+ WDA_TxAbort(psessionEntry->smeSessionId);
+#else
/* If the reason for disassociation is inactivity of STA, then
dont wait for acknowledgement */
if ((pMlmDisassocReq->reasonCode == eSIR_MAC_DISASSOC_DUE_TO_INACTIVITY_REASON) &&
@@ -2925,6 +2939,7 @@ limProcessMlmDisassocReqNtf(tpAniSirGlobal pMac, eHalStatus suspendStatus, tANI_
if (LIM_IS_STA_ROLE(psessionEntry))
WDA_TxAbort(psessionEntry->smeSessionId);
}
+#endif
}
else
{
diff --git a/Kbuild b/Kbuild
index 73132e03d552..ff51a9cfabfd 100644
--- a/Kbuild
+++ b/Kbuild
@@ -968,6 +968,10 @@ ifeq ($(CONFIG_ARCH_MSM), y)
CDEFINES += -DMSM_PLATFORM
endif
+ifeq ($(CONFIG_MOBILE_ROUTER), y)
+CDEFINES += -DMDM_PLATFORM
+endif
+
CDEFINES += -DOSIF_NEED_RX_PEER_ID \
-DQCA_SUPPORT_TXRX_LOCAL_PEER_ID
ifeq ($(CONFIG_ROME_IF),pci)