wlan: addts failure leading to UL traffic getting stuck after roam
Due to wrong state transition, addts req remains stuck in sme qos
Q after roam. Added fix to avoid the wrong state transition if
it is a non 11r case. Also unbuffer cmds from qos Q even when
set key is done.
Change-Id: I0def8f222b8d17dfc791aa2741e720fe2364c94e
CRs-fixed: 505073
diff --git a/CORE/SME/src/QoS/sme_Qos.c b/CORE/SME/src/QoS/sme_Qos.c
index 4ad6ea0..3b97d6f 100644
--- a/CORE/SME/src/QoS/sme_Qos.c
+++ b/CORE/SME/src/QoS/sme_Qos.c
@@ -39,15 +39,13 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
+
/**=========================================================================
\file sme_Qos.c
\brief implementation for SME QoS APIs
- Copyright 2008 (c) Qualcomm, Incorporated. All Rights Reserved.
-
- Qualcomm Confidential and Proprietary.
========================================================================*/
/* $Header$ */
@@ -2982,6 +2980,7 @@
{
VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_WARN,
"########### Set Key Complete #############");
+ (void)sme_QosProcessBufferedCmd(sessionId);
return eHAL_STATUS_SUCCESS;
}
#endif
@@ -3975,9 +3974,6 @@
sme_QosACInfo *pACInfo;
sme_QosEdcaAcType ac;
#endif
-#ifdef FEATURE_WLAN_DIAG_SUPPORT
- WLAN_VOS_DIAG_EVENT_DEF(qos, vos_event_wlan_qos_payload_type);
-#endif
pSession = &sme_QosCb.sessionInfo[sessionId];
@@ -4006,7 +4002,9 @@
}
#endif
-
+#ifdef FEATURE_WLAN_DIAG_SUPPORT
+ WLAN_VOS_DIAG_EVENT_DEF(qos, vos_event_wlan_qos_payload_type);
+#endif
VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO_HIGH,
"%s: %d: Invoked on session %d with return code %d",
__func__, __LINE__,
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index e8ec8a3..56820d2 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -15881,7 +15881,11 @@
pMac->ft.ftSmeContext.FTState = eFT_AUTH_COMPLETE;
// Indicate SME QoS module the completion of Preauth success. This will trigger the creation of RIC IEs
pMac->ft.ftSmeContext.psavedFTPreAuthRsp = pFTPreAuthRsp;
- sme_QosCsrEventInd(pMac, pMac->ft.ftSmeContext.smeSessionId, SME_QOS_CSR_PREAUTH_SUCCESS_IND, NULL);
+ /* No need to notify qos module if this is a non 11r roam*/
+ if (csrRoamIs11rAssoc(pMac))
+ {
+ sme_QosCsrEventInd(pMac, pMac->ft.ftSmeContext.smeSessionId, SME_QOS_CSR_PREAUTH_SUCCESS_IND, NULL);
+ }
/* Start the pre-auth reassoc interval timer with a period of 400ms. When this expires,
* actual transition from the current to handoff AP is triggered */
status = palTimerStart(pMac->hHdd, pMac->ft.ftSmeContext.preAuthReassocIntvlTimer,