diff --git a/CORE/MAC/inc/aniGlobal.h b/CORE/MAC/inc/aniGlobal.h
index ead250d..da377dc 100644
--- a/CORE/MAC/inc/aniGlobal.h
+++ b/CORE/MAC/inc/aniGlobal.h
@@ -714,6 +714,7 @@
 
     // admission control policy information
     tLimAdmitPolicyInfo admitPolicyInfo;
+    vos_lock_t lkPeGlobalLock;
 
 
 
diff --git a/CORE/MAC/inc/macTrace.h b/CORE/MAC/inc/macTrace.h
index f73eb16..d9aab09 100644
--- a/CORE/MAC/inc/macTrace.h
+++ b/CORE/MAC/inc/macTrace.h
@@ -72,7 +72,7 @@
 
 typedef struct  sTraceRecord
 {
-    tANI_U16 time;
+    tANI_U32 time;
     tANI_U8 module;
     tANI_U8 code;
     tANI_U8 session;
@@ -81,9 +81,9 @@
 
 
 
-#define MAX_TRACE_RECORDS 500
+#define MAX_TRACE_RECORDS 2000
 #define INVALID_TRACE_ADDR 0xffffffff
-#define DEFAULT_TRACE_DUMP_COUNT 200
+#define DEFAULT_TRACE_DUMP_COUNT 0
 
 
 
@@ -116,9 +116,11 @@
 void macTraceRegister( tpAniSirGlobal pMac, VOS_MODULE_ID moduleId,    tpTraceCb traceCb);
 tANI_U8* macTraceGetCfgMsgString( tANI_U16 cfgMsg );
 tANI_U8* macTraceGetLimMsgString( tANI_U16 limMsg );
-tANI_U8* macTraceGetHalMsgString( tANI_U16 halMsg );
+tANI_U8* macTraceGetWdaMsgString( tANI_U16 wdaMsg );
 tANI_U8* macTraceGetSmeMsgString( tANI_U16 smeMsg );
 tANI_U8* macTraceGetModuleString( tANI_U8 moduleId);
+eHalStatus pe_AcquireGlobalLock( tAniSirLim *psPe);
+eHalStatus pe_ReleaseGlobalLock( tAniSirLim *psPe);
 
 
 
diff --git a/CORE/MAC/src/pe/include/limTrace.h b/CORE/MAC/src/pe/include/limTrace.h
index 28ef98e..e44c2dd 100644
--- a/CORE/MAC/src/pe/include/limTrace.h
+++ b/CORE/MAC/src/pe/include/limTrace.h
@@ -40,12 +40,14 @@
  */
 
 /**=========================================================================
+* Copyright (c) 2013 Qualcomm Atheros, Inc.
+* All Rights Reserved.
+* Qualcomm Atheros Confidential and Proprietary.
+*  \file  limTrace.h
 
-  \file  limTrace.h
+*  \brief definition for trace related APIs
 
-  \brief definition for trace related APIs
-
-  \author Sunit Bhatia
+*  \author Sunit Bhatia
 
    Copyright 2008 (c) Qualcomm, Incorporated.  All Rights Reserved.
 
@@ -62,8 +64,6 @@
 #include "macTrace.h"
 #ifdef LIM_TRACE_RECORD
 
-#define CASE_RETURN_STRING( str )           \
-    case ( ( str ) ): return( #str ); break \
 
 
 #define LIM_TRACE_GET_SSN(data)    (((data) >> 16) & 0xff)
@@ -83,7 +83,7 @@
 
 
 
-typedef enum {
+enum {
     TRACE_CODE_MLM_STATE,
     TRACE_CODE_SME_STATE,
     TRACE_CODE_TX_MGMT,
@@ -92,8 +92,8 @@
     TRACE_CODE_TX_COMPLETE,
     TRACE_CODE_TX_SME_MSG,
     TRACE_CODE_RX_SME_MSG,
-    TRACE_CODE_TX_HAL_MSG,
-    TRACE_CODE_RX_HAL_MSG,
+    TRACE_CODE_TX_WDA_MSG,
+    TRACE_CODE_RX_WDA_MSG,
     TRACE_CODE_TX_LIM_MSG,
     TRACE_CODE_RX_LIM_MSG,
     TRACE_CODE_TX_CFG_MSG,
diff --git a/CORE/MAC/src/pe/lim/limApi.c b/CORE/MAC/src/pe/lim/limApi.c
index 740915e..2d1605f 100644
--- a/CORE/MAC/src/pe/lim/limApi.c
+++ b/CORE/MAC/src/pe/lim/limApi.c
@@ -1081,7 +1081,11 @@
 #ifdef WLAN_FEATURE_P2P
     pMac->lim.actionFrameSessionId = 0xff;
 #endif
-
+    if( !VOS_IS_STATUS_SUCCESS( vos_lock_init( &pMac->lim.lkPeGlobalLock ) ) )
+    {
+        PELOGE(limLog(pMac, LOGE, FL("pe lock init failed!\n"));)
+        return eSIR_FAILURE;
+    }
     return eSIR_SUCCESS;
 }
 
@@ -1133,7 +1137,10 @@
     palFreeMemory(pMac->hHdd, pMac->pmm.gpPmmPSState);
     pMac->pmm.gpPmmPSState = NULL;
 #endif
-
+    if( !VOS_IS_STATUS_SUCCESS( vos_lock_destroy( &pMac->lim.lkPeGlobalLock ) ) )
+    {
+        return eSIR_FAILURE;
+    }
     return eSIR_SUCCESS;
 }
 
@@ -2645,7 +2652,7 @@
     mmhMsg.type = eWNI_SME_MIC_FAILURE_IND;
     mmhMsg.bodyptr = pSirSmeMicFailureInd;
     mmhMsg.bodyval = 0;
-    MTRACE(macTraceMsgTx(pMac, 0, mmhMsg.type));
+    MTRACE(macTraceMsgTx(pMac, sessionId, mmhMsg.type));
     limSysProcessMmhMsgApi(pMac, &mmhMsg, ePROT);
     return;
 }
@@ -2739,4 +2746,28 @@
     return eMGMT_DROP_NO_DROP;
 }
 
+eHalStatus pe_AcquireGlobalLock( tAniSirLim *psPe)
+{
+    eHalStatus status = eHAL_STATUS_INVALID_PARAMETER;
 
+    if(psPe)
+    {
+        if( VOS_IS_STATUS_SUCCESS( vos_lock_acquire( &psPe->lkPeGlobalLock) ) )
+        {
+            status = eHAL_STATUS_SUCCESS;
+        }
+    }
+    return (status);
+}
+eHalStatus pe_ReleaseGlobalLock( tAniSirLim *psPe)
+{
+    eHalStatus status = eHAL_STATUS_INVALID_PARAMETER;
+    if(psPe)
+    {
+        if( VOS_IS_STATUS_SUCCESS( vos_lock_release( &psPe->lkPeGlobalLock) ) )
+        {
+            status = eHAL_STATUS_SUCCESS;
+        }
+    }
+    return (status);
+}
diff --git a/CORE/MAC/src/pe/lim/limProcessActionFrame.c b/CORE/MAC/src/pe/lim/limProcessActionFrame.c
index e8e559c..bea80ed 100644
--- a/CORE/MAC/src/pe/lim/limProcessActionFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessActionFrame.c
@@ -162,7 +162,7 @@
         }
         return;
     }
-    MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, NO_SESSION, eLIM_CHANNEL_SWITCH_TIMER));
+    MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, sessionId, eLIM_CHANNEL_SWITCH_TIMER));
 
 
     if (tx_timer_activate(&pMac->lim.limTimers.gLimChannelSwitchTimer) != TX_SUCCESS)
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
index 262c6c3..f3be0a4 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
@@ -484,7 +484,7 @@
             pMac->lim.limTimers.gLimMinChannelTimer.sessionId = sessionId;
 #endif            
             
-            MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, NO_SESSION, eLIM_MIN_CHANNEL_TIMER));
+            MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, pMac->lim.limTimers.gLimMinChannelTimer.sessionId, eLIM_MIN_CHANNEL_TIMER));
 
             if (tx_timer_activate(&pMac->lim.limTimers.gLimMinChannelTimer) != TX_SUCCESS)
             {
@@ -532,7 +532,7 @@
         PELOG2(limLog(pMac, LOG2, FL("START PASSIVE Scan chan %d\n"), channelNum);)
 
         /// Passive Scanning. Activate maxChannelTimer
-        MTRACE(macTrace(pMac, TRACE_CODE_TIMER_DEACTIVATE, NO_SESSION, eLIM_MAX_CHANNEL_TIMER));
+        MTRACE(macTrace(pMac, TRACE_CODE_TIMER_DEACTIVATE, pMac->lim.limTimers.gLimMaxChannelTimer.sessionId, eLIM_MAX_CHANNEL_TIMER));
         if (tx_timer_deactivate(&pMac->lim.limTimers.gLimMaxChannelTimer)
                                       != TX_SUCCESS)
         {
@@ -580,7 +580,7 @@
 #endif
                 //Pick the longer stay time
                 val = (val > val1) ? val : val1;
-                MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, NO_SESSION, eLIM_MAX_CHANNEL_TIMER));
+                MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, pMac->lim.limTimers.gLimMaxChannelTimer.sessionId, eLIM_MAX_CHANNEL_TIMER));
                 if (tx_timer_change(&pMac->lim.limTimers.gLimMaxChannelTimer,
                                 val, 0) != TX_SUCCESS)
                 {
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
index 08f65b6..5a5a6c9 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
@@ -4744,7 +4744,6 @@
     /** Skipped the DeleteDPH Hash Entry as we need it for the new BSS*/
     /** Set the MlmState to IDLE*/
     psessionEntry->limMlmState = eLIM_MLM_IDLE_STATE;
-    MTRACE(macTrace(pMac, TRACE_CODE_MLM_STATE, psessionEntry->peSessionId, psessionEntry->limMlmState));
    /* Update PE session Id*/
     mlmReassocCnf.sessionId = psessionEntry->peSessionId;
     switch (psessionEntry->limMlmState) {
@@ -4825,13 +4824,11 @@
             mlmReassocCnf.protStatusCode = pStaDs->mlmStaContext.cleanupTrigger;
             /** Set the SME State back to WT_Reassoc State*/
             psessionEntry->limSmeState = eLIM_SME_WT_REASSOC_STATE;
-            MTRACE(macTrace(pMac, TRACE_CODE_SME_STATE, psessionEntry->peSessionId, psessionEntry->limSmeState));
             limDeleteDphHashEntry(pMac, pStaDs->staAddr, pStaDs->assocId,psessionEntry);
             if((psessionEntry->limSystemRole == eLIM_STA_ROLE)||
                 (psessionEntry->limSystemRole == eLIM_BT_AMP_STA_ROLE))
             {
                psessionEntry->limMlmState = eLIM_MLM_IDLE_STATE;
-               MTRACE(macTrace(pMac, TRACE_CODE_MLM_STATE, psessionEntry->peSessionId, psessionEntry->limMlmState));
             }
             limPostSmeMessage(pMac, LIM_MLM_REASSOC_CNF, (tANI_U32 *) &mlmReassocCnf);
         }
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index 0202d52..1adb1c1 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -1217,7 +1217,7 @@
          pMac->lim.gLimPrevSmeState = pMac->lim.gLimSmeState;
         
         pMac->lim.gLimSmeState = eLIM_SME_WT_SCAN_STATE;
-        MTRACE(macTrace(pMac, TRACE_CODE_SME_STATE, NO_SESSION, pMac->lim.gLimSmeState));
+        MTRACE(macTrace(pMac, TRACE_CODE_SME_STATE, pScanReq->sessionId, pMac->lim.gLimSmeState));
 
         if (pScanReq->returnFreshResults & SIR_BG_SCAN_PURGE_RESUTLS)
         {
diff --git a/CORE/MAC/src/pe/lim/limSendManagementFrames.c b/CORE/MAC/src/pe/lim/limSendManagementFrames.c
index 87ea5ed..18110db 100644
--- a/CORE/MAC/src/pe/lim/limSendManagementFrames.c
+++ b/CORE/MAC/src/pe/lim/limSendManagementFrames.c
@@ -3077,7 +3077,7 @@
     // start reassoc timer.
     pMac->lim.limTimers.gLimReassocFailureTimer.sessionId = psessionEntry->peSessionId;
     // Start reassociation failure timer
-    MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, 0, eLIM_REASSOC_FAIL_TIMER));
+    MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, psessionEntry->peSessionId, eLIM_REASSOC_FAIL_TIMER));
     if (tx_timer_activate(&pMac->lim.limTimers.gLimReassocFailureTimer)
                                                != TX_SUCCESS)
     {
diff --git a/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c b/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c
index 6bf6194..600edb1 100644
--- a/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c
+++ b/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c
@@ -143,7 +143,7 @@
     mmhMsg.type = msgType;
     mmhMsg.bodyptr = pSirSmeRsp;
     mmhMsg.bodyval = 0;
-    MTRACE(macTraceMsgTx(pMac, NO_SESSION, mmhMsg.type));
+    MTRACE(macTraceMsgTx(pMac, smesessionId , mmhMsg.type));
 
 #ifdef FEATURE_WLAN_DIAG_SUPPORT_LIM //FEATURE_WLAN_DIAG_SUPPORT 
    {
@@ -1719,7 +1719,7 @@
     }
 
 
-    MTRACE(macTraceMsgTx(pMac, NO_SESSION, mmhMsg.type));
+    MTRACE(macTraceMsgTx(pMac, sessionId, mmhMsg.type));
     if (eSIR_SUCCESS != limSysProcessMmhMsgApi(pMac, &mmhMsg, ePROT))
     {
         palFreeMemory(pMac->hHdd, (void *) pSirSmeWmStatusChangeNtf);
@@ -2362,7 +2362,7 @@
     mmhMsg.type    = msgType;
 //    mmhMsg.bodyval = (tANI_U32) pNewPeerInd;
     mmhMsg.bodyptr = pNewPeerInd;
-    MTRACE(macTraceMsgTx(pMac, NO_SESSION, mmhMsg.type));
+    MTRACE(macTraceMsgTx(pMac, sessionId, mmhMsg.type));
     limSysProcessMmhMsgApi(pMac, &mmhMsg, ePROT);
     
 }
@@ -2474,7 +2474,7 @@
     mmhMsg.type = eWNI_SME_FT_AGGR_QOS_RSP;
     mmhMsg.bodyptr = aggrQosRsp;
     mmhMsg.bodyval = 0;
-    MTRACE(macTraceMsgTx(pMac, NO_SESSION, mmhMsg.type));
+    MTRACE(macTraceMsgTx(pMac, smesessionId , mmhMsg.type));
     limSysProcessMmhMsgApi(pMac, &mmhMsg, ePROT);
 
     return;
@@ -2552,7 +2552,7 @@
     PELOG1(limLog(pMac, LOG1, FL("msgType %s peerMacAddr %02x-%02x-%02x-%02x-%02x-%02x"
                 "sme session id %d\n"),"eWNI_SME_MAX_ASSOC_EXCEEDED", peerMacAddr[0], peerMacAddr[1],
                 peerMacAddr[2], peerMacAddr[3], peerMacAddr[4], peerMacAddr[5], smesessionId);)
-    MTRACE(macTraceMsgTx(pMac, NO_SESSION, mmhMsg.type));
+    MTRACE(macTraceMsgTx(pMac, smesessionId, mmhMsg.type));
     limSysProcessMmhMsgApi(pMac, &mmhMsg, ePROT);
 
     return;
diff --git a/CORE/MAC/src/pe/lim/limTrace.c b/CORE/MAC/src/pe/lim/limTrace.c
index eb1c19b..8de45db 100644
--- a/CORE/MAC/src/pe/lim/limTrace.c
+++ b/CORE/MAC/src/pe/lim/limTrace.c
@@ -40,7 +40,9 @@
  */
 
 /**=========================================================================
-
+* Copyright (c) 2013 Qualcomm Atheros, Inc.
+* All Rights Reserved.
+* Qualcomm Atheros Confidential and Proprietary.
   \file  limTrace.c
 
   \brief implementation for trace related APIs
@@ -98,6 +100,23 @@
         CASE_RETURN_STRING(eLIM_LEARN_DURATION_TIMER);
         CASE_RETURN_STRING(eLIM_QUIET_TIMER);
         CASE_RETURN_STRING(eLIM_QUIET_BSS_TIMER);
+#ifdef WLAN_SOFTAP_FEATURE
+        CASE_RETURN_STRING(eLIM_WPS_OVERLAP_TIMER);
+#endif
+#ifdef WLAN_FEATURE_VOWIFI_11R
+        CASE_RETURN_STRING(eLIM_FT_PREAUTH_RSP_TIMER);
+#endif
+#ifdef WLAN_FEATURE_P2P
+        CASE_RETURN_STRING(eLIM_REMAIN_CHN_TIMER);
+#endif
+        CASE_RETURN_STRING(eLIM_PERIODIC_PROBE_REQ_TIMER);
+#ifdef FEATURE_WLAN_CCX
+        CASE_RETURN_STRING(eLIM_TSM_TIMER);
+#endif
+        CASE_RETURN_STRING(eLIM_DISASSOC_ACK_TIMER);
+        CASE_RETURN_STRING(eLIM_DEAUTH_ACK_TIMER);
+        CASE_RETURN_STRING(eLIM_PERIODIC_JOIN_PROBE_REQ_TIMER);
+        CASE_RETURN_STRING(eLIM_INSERT_SINGLESHOT_NOA_TIMER);
         default:
             return( "UNKNOWN" );
             break;
@@ -179,7 +198,7 @@
                                             "Drop RX Mgmt:", __limTraceGetMgmtDropReasonString((tANI_U16)pRecord->data), pRecord->data);
             break;
 
-            
+
         case TRACE_CODE_RX_MGMT_TSF:
             limLog(pMac, LOGE, "%04d    %012u  S%d    %-14s  %-30s0x%x(%d) \n", recIndex, pRecord->time, pRecord->session,
                                             "RX Mgmt TSF:", " ", pRecord->data, pRecord->data );
@@ -200,15 +219,15 @@
                                             macTraceGetSmeMsgString((tANI_U16)pRecord->data), pRecord->data );
             break;
 
-        case TRACE_CODE_TX_HAL_MSG:
+        case TRACE_CODE_TX_WDA_MSG:
             limLog(pMac, LOGE, "%04d    %012u  S%d    %-14s  %-30s(0x%x) \n", recIndex, pRecord->time, pRecord->session,
-                                            "TX HAL Msg:", macTraceGetHalMsgString((tANI_U16)pRecord->data), pRecord->data );
+                                            "TX WDA Msg:", macTraceGetWdaMsgString((tANI_U16)pRecord->data), pRecord->data );
             break;
 
-        case TRACE_CODE_RX_HAL_MSG:
+        case TRACE_CODE_RX_WDA_MSG:
             limLog(pMac, LOGE, "%04d    %012u  S%d    %-14s  %-30s(0x%x) \n", recIndex, pRecord->time, pRecord->session,
-                                            LIM_TRACE_GET_DEFRD_OR_DROPPED(pRecord->data) ? "Def/Drp LIM Msg:": "RX HAL Msg:",
-                                            macTraceGetHalMsgString((tANI_U16)pRecord->data), pRecord->data );
+                                            LIM_TRACE_GET_DEFRD_OR_DROPPED(pRecord->data) ? "Def/Drp LIM Msg:": "RX WDA Msg:",
+                                            macTraceGetWdaMsgString((tANI_U16)pRecord->data), pRecord->data );
             break;
 
         case TRACE_CODE_TX_LIM_MSG:
@@ -263,7 +282,7 @@
                 macTrace(pMac, TRACE_CODE_TX_SME_MSG, session, data);
             break;
         case SIR_WDA_MODULE_ID:
-            macTrace(pMac, TRACE_CODE_TX_HAL_MSG, session, data);
+            macTrace(pMac, TRACE_CODE_TX_WDA_MSG, session, data);
             break;
         case SIR_CFG_MODULE_ID:
             macTrace(pMac, TRACE_CODE_TX_CFG_MSG, session, data);
@@ -286,7 +305,7 @@
                 macTraceNew(pMac, module, TRACE_CODE_TX_SME_MSG, session, data);
             break;
         case SIR_WDA_MODULE_ID:
-            macTraceNew(pMac, module, TRACE_CODE_TX_HAL_MSG, session, data);
+            macTraceNew(pMac, module, TRACE_CODE_TX_WDA_MSG, session, data);
             break;
         case SIR_CFG_MODULE_ID:
             macTraceNew(pMac, module, TRACE_CODE_TX_CFG_MSG, session, data);
@@ -313,7 +332,7 @@
                 macTrace(pMac, TRACE_CODE_RX_SME_MSG, session, data);
             break;
         case SIR_WDA_MODULE_ID:
-            macTrace(pMac, TRACE_CODE_RX_HAL_MSG, session, data);
+            macTrace(pMac, TRACE_CODE_RX_WDA_MSG, session, data);
             break;
         case SIR_CFG_MODULE_ID:
             macTrace(pMac, TRACE_CODE_RX_CFG_MSG, session, data);
@@ -342,7 +361,7 @@
                 macTraceNew(pMac, module, TRACE_CODE_RX_SME_MSG, session, data);
             break;
         case SIR_WDA_MODULE_ID:
-            macTraceNew(pMac, module, TRACE_CODE_RX_HAL_MSG, session, data);
+            macTraceNew(pMac, module, TRACE_CODE_RX_WDA_MSG, session, data);
             break;
         case SIR_CFG_MODULE_ID:
             macTraceNew(pMac, module, TRACE_CODE_RX_CFG_MSG, session, data);
@@ -378,7 +397,7 @@
         CASE_RETURN_STRING( eLIM_MLM_WT_ADD_BSS_RSP_STATE);
         CASE_RETURN_STRING( eLIM_MLM_WT_DEL_BSS_RSP_STATE);
         CASE_RETURN_STRING( eLIM_MLM_WT_ADD_BSS_RSP_ASSOC_STATE);
-        CASE_RETURN_STRING( eLIM_MLM_WT_ADD_BSS_RSP_PREASSOC_STATE);        
+        CASE_RETURN_STRING( eLIM_MLM_WT_ADD_BSS_RSP_PREASSOC_STATE);
         CASE_RETURN_STRING( eLIM_MLM_WT_ADD_BSS_RSP_REASSOC_STATE);
         CASE_RETURN_STRING( eLIM_MLM_WT_ADD_STA_RSP_STATE);
         CASE_RETURN_STRING( eLIM_MLM_WT_DEL_STA_RSP_STATE);
diff --git a/CORE/MAC/src/pe/lim/limUtils.c b/CORE/MAC/src/pe/lim/limUtils.c
index eb19faf..b81179e 100644
--- a/CORE/MAC/src/pe/lim/limUtils.c
+++ b/CORE/MAC/src/pe/lim/limUtils.c
@@ -3043,7 +3043,7 @@
           limLog( pMac, LOGE,
             FL("Unable to change gLimQuietBssTimer! Will still attempt to activate anyway...\n"));
       }
-      MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, NO_SESSION, eLIM_QUIET_BSS_TIMER));
+      MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, pMac->lim.limTimers.gLimQuietTimer.sessionId, eLIM_QUIET_BSS_TIMER));
 #ifdef GEN6_TODO
         /* revisit this piece of code to assign the appropriate sessionId below
          * priority - HIGH
@@ -7049,7 +7049,7 @@
 
         if (val > 0 && TX_TIMER_VALID(pMac->lim.limTimers.gLimBackgroundScanTimer))
         {
-            MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, NO_SESSION, eLIM_BACKGROUND_SCAN_TIMER));
+            MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, psessionEntry->peSessionId, eLIM_BACKGROUND_SCAN_TIMER));
             if(tx_timer_activate(&pMac->lim.limTimers.gLimBackgroundScanTimer) != TX_SUCCESS)
             {
                 limLog(pMac, LOGP, FL("Could not restart background scan timer, doing LOGP"));
@@ -7062,7 +7062,7 @@
     /* Enable heartbeat timer */
     if (TX_TIMER_VALID(pMac->lim.limTimers.gLimHeartBeatTimer))
     {
-        MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, NO_SESSION, eLIM_HEART_BEAT_TIMER));
+        MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, psessionEntry->peSessionId, eLIM_HEART_BEAT_TIMER));
         if(limActivateHearBeatTimer(pMac) != TX_SUCCESS)
         {
             limLog(pMac, LOGP, FL("Could not restart heartbeat timer, doing LOGP"));
diff --git a/CORE/SYS/legacy/src/utils/src/macTrace.c b/CORE/SYS/legacy/src/utils/src/macTrace.c
index 86b7bed..9e2ee1b 100644
--- a/CORE/SYS/legacy/src/utils/src/macTrace.c
+++ b/CORE/SYS/legacy/src/utils/src/macTrace.c
@@ -40,7 +40,9 @@
  */
 
 /**=========================================================================
-
+* Copyright (c) 2013 Qualcomm Atheros, Inc.
+* All Rights Reserved.
+* Qualcomm Atheros Confidential and Proprietary.
   \file  macTrace.c
 
   \brief implementation for trace related APIs
@@ -59,6 +61,7 @@
   ------------------------------------------------------------------------*/
 
 #include "macTrace.h"
+#include "wlan_qct_wda.h"
 
 
 #ifdef TRACE_RECORD
@@ -80,6 +83,10 @@
         CASE_RETURN_STRING(eWNI_SME_SCAN_REQ);
         CASE_RETURN_STRING(eWNI_SME_SCAN_ABORT_IND);
         CASE_RETURN_STRING(eWNI_SME_SCAN_RSP);
+#ifdef FEATURE_OEM_DATA_SUPPORT
+        CASE_RETURN_STRING(eWNI_SME_OEM_DATA_REQ);
+        CASE_RETURN_STRING(eWNI_SME_OEM_DATA_RSP);
+#endif
         CASE_RETURN_STRING(eWNI_SME_JOIN_REQ);
         CASE_RETURN_STRING(eWNI_SME_JOIN_RSP);
         CASE_RETURN_STRING(eWNI_SME_SETCONTEXT_REQ);
@@ -110,8 +117,21 @@
         CASE_RETURN_STRING(eWNI_SME_STOP_BSS_REQ);
         CASE_RETURN_STRING(eWNI_SME_STOP_BSS_RSP);
         CASE_RETURN_STRING(eWNI_SME_DEL_BA_PEER_IND);
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+        CASE_RETURN_STRING(eWNI_SME_DEFINE_QOS_REQ);
+        CASE_RETURN_STRING(eWNI_SME_DEFINE_QOS_RSP);
+        CASE_RETURN_STRING(eWNI_SME_DELETE_QOS_REQ);
+        CASE_RETURN_STRING(eWNI_SME_DELETE_QOS_RSP);
+#endif /* FEATURE_WLAN_INTEGRATED_SOC */
         CASE_RETURN_STRING(eWNI_SME_PROMISCUOUS_MODE_REQ);
         CASE_RETURN_STRING(eWNI_SME_PROMISCUOUS_MODE_RSP);
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+        CASE_RETURN_STRING(eWNI_SME_LINK_TEST_START_REQ);
+        CASE_RETURN_STRING(eWNI_SME_LINK_TEST_START_RSP);
+        CASE_RETURN_STRING(eWNI_SME_LINK_TEST_STOP_REQ);
+        CASE_RETURN_STRING(eWNI_SME_LINK_TEST_STOP_RSP);
+        CASE_RETURN_STRING(eWNI_SME_LINK_TEST_REPORT_IND);
+#endif /* FEATURE_WLAN_INTEGRATED_SOC */
         CASE_RETURN_STRING(eWNI_SME_NEIGHBOR_BSS_IND);
         CASE_RETURN_STRING(eWNI_SME_MEASUREMENT_REQ);
         CASE_RETURN_STRING(eWNI_SME_MEASUREMENT_RSP);
@@ -119,6 +139,17 @@
         CASE_RETURN_STRING(eWNI_SME_SET_WDS_INFO_REQ);
         CASE_RETURN_STRING(eWNI_SME_SET_WDS_INFO_RSP);
         CASE_RETURN_STRING(eWNI_SME_WDS_INFO_IND);
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+        CASE_RETURN_STRING(eWNI_SME_SET_POWER_REQ);
+        CASE_RETURN_STRING(eWNI_SME_SET_POWER_RSP);
+        CASE_RETURN_STRING(eWNI_SME_CLIENT_SIDE_LOAD_BALANCE_REQ);
+        CASE_RETURN_STRING(eWNI_SME_CLIENT_SIDE_LOAD_BALANCE_RSP);
+        CASE_RETURN_STRING(eWNI_SME_SELECT_CHANNEL_REQ);
+        CASE_RETURN_STRING(eWNI_SME_SELECT_CHANNEL_RSP);
+        CASE_RETURN_STRING(eWNI_SME_SET_PROPRIETARY_IE_REQ);
+        CASE_RETURN_STRING(eWNI_SME_SET_PROPRIETARY_IE_RSP); // #endif
+        CASE_RETURN_STRING(eWNI_SME_DISCARD_SKB_NTF);  // Used to cleanup SKBs by HDD
+#endif /* FEATURE_WLAN_INTEGRATED_SOC */
         CASE_RETURN_STRING(eWNI_SME_DEAUTH_CNF);
         CASE_RETURN_STRING(eWNI_SME_MIC_FAILURE_IND);
         CASE_RETURN_STRING(eWNI_SME_ADDTS_REQ);
@@ -154,9 +185,31 @@
         CASE_RETURN_STRING(eWNI_SME_GET_NOISE_RSP);
         CASE_RETURN_STRING(eWNI_SME_LOW_RSSI_IND);
         CASE_RETURN_STRING(eWNI_SME_GET_STATISTICS_REQ);
-        CASE_RETURN_STRING(eWNI_SME_GET_STATISTICS_RSP);        
-
-        CASE_RETURN_STRING(eWNI_SME_MSG_TYPES_END);
+        CASE_RETURN_STRING(eWNI_SME_GET_STATISTICS_RSP);
+        CASE_RETURN_STRING(eWNI_SME_GET_RSSI_REQ);
+#ifdef WLAN_SOFTAP_FEATURE
+        CASE_RETURN_STRING(eWNI_SME_GET_ASSOC_STAS_REQ);
+        CASE_RETURN_STRING(eWNI_SME_TKIP_CNTR_MEAS_REQ);
+        CASE_RETURN_STRING(eWNI_SME_UPDATE_APWPSIE_REQ);
+        CASE_RETURN_STRING(eWNI_SME_GET_WPSPBC_SESSION_REQ);
+        CASE_RETURN_STRING(eWNI_SME_WPS_PBC_PROBE_REQ_IND);
+        CASE_RETURN_STRING(eWNI_SME_SET_APWPARSNIEs_REQ);
+        CASE_RETURN_STRING(eWNI_SME_UPPER_LAYER_ASSOC_CNF);
+        CASE_RETURN_STRING(eWNI_SME_HIDE_SSID_REQ);
+#endif
+#ifdef WLAN_FEATURE_P2P
+        CASE_RETURN_STRING(eWNI_SME_REMAIN_ON_CHANNEL_REQ);
+        CASE_RETURN_STRING(eWNI_SME_REMAIN_ON_CHN_IND);
+        CASE_RETURN_STRING(eWNI_SME_REMAIN_ON_CHN_RSP);
+        CASE_RETURN_STRING(eWNI_SME_MGMT_FRM_IND);
+        CASE_RETURN_STRING(eWNI_SME_REMAIN_ON_CHN_RDY_IND);
+        CASE_RETURN_STRING(eWNI_SME_SEND_ACTION_FRAME_IND);
+        CASE_RETURN_STRING(eWNI_SME_ACTION_FRAME_SEND_CNF);
+        CASE_RETURN_STRING(eWNI_SME_ABORT_REMAIN_ON_CHAN_IND);
+        CASE_RETURN_STRING(eWNI_SME_UPDATE_NOA);
+#endif
+        CASE_RETURN_STRING(eWNI_SME_PRE_CHANNEL_SWITCH_FULL_POWER);
+        CASE_RETURN_STRING(eWNI_PMC_MSG_TYPES_BEGIN);
 
         //General Power Save Messages
         CASE_RETURN_STRING(eWNI_PMC_PWR_SAVE_CFG);
@@ -181,7 +234,61 @@
         CASE_RETURN_STRING(eWNI_PMC_EXIT_UAPSD_RSP);
 
         CASE_RETURN_STRING(eWNI_PMC_SMPS_STATE_IND);
+        CASE_RETURN_STRING(eWNI_PMC_WOWL_ADD_BCAST_PTRN);
+        CASE_RETURN_STRING(eWNI_PMC_WOWL_DEL_BCAST_PTRN);
+        CASE_RETURN_STRING(eWNI_PMC_ENTER_WOWL_REQ);
+        CASE_RETURN_STRING(eWNI_PMC_ENTER_WOWL_RSP);
+        CASE_RETURN_STRING(eWNI_PMC_EXIT_WOWL_REQ);
+        CASE_RETURN_STRING(eWNI_PMC_EXIT_WOWL_RSP);
 
+#ifdef WLAN_FEATURE_PACKET_FILTERING
+        CASE_RETURN_STRING(eWNI_PMC_PACKET_COALESCING_FILTER_MATCH_COUNT_RSP);
+#endif // WLAN_FEATURE_PACKET_FILTERING
+        CASE_RETURN_STRING(eWNI_PMC_MSG_TYPES_END);
+#if defined WLAN_FEATURE_VOWIFI
+        CASE_RETURN_STRING(eWNI_SME_RRM_MSG_TYPE_BEGIN);
+        CASE_RETURN_STRING(eWNI_SME_NEIGHBOR_REPORT_REQ_IND);
+        CASE_RETURN_STRING(eWNI_SME_NEIGHBOR_REPORT_IND);
+        CASE_RETURN_STRING(eWNI_SME_BEACON_REPORT_REQ_IND);
+        CASE_RETURN_STRING(eWNI_SME_BEACON_REPORT_RESP_XMIT_IND);
+        CASE_RETURN_STRING(eWNI_SME_RRM_MSG_TYPE_END);
+#endif
+        CASE_RETURN_STRING(eWNI_SME_ADD_STA_SELF_REQ);
+        CASE_RETURN_STRING(eWNI_SME_ADD_STA_SELF_RSP);
+        CASE_RETURN_STRING(eWNI_SME_DEL_STA_SELF_REQ);
+        CASE_RETURN_STRING(eWNI_SME_DEL_STA_SELF_RSP);
+#if defined WLAN_FEATURE_VOWIFI_11R
+        CASE_RETURN_STRING(eWNI_SME_FT_PRE_AUTH_REQ);
+        CASE_RETURN_STRING(eWNI_SME_FT_PRE_AUTH_RSP);
+        CASE_RETURN_STRING(eWNI_SME_FT_UPDATE_KEY);
+        CASE_RETURN_STRING(eWNI_SME_FT_AGGR_QOS_REQ);
+        CASE_RETURN_STRING(eWNI_SME_FT_AGGR_QOS_RSP);
+#endif
+#if defined FEATURE_WLAN_CCX
+        CASE_RETURN_STRING(eWNI_SME_CCX_ADJACENT_AP_REPORT);
+#endif
+#ifdef WLAN_FEATURE_P2P
+        CASE_RETURN_STRING(eWNI_SME_REGISTER_MGMT_FRAME_REQ);
+#endif
+        CASE_RETURN_STRING(eWNI_SME_COEX_IND);
+#ifdef FEATURE_WLAN_SCAN_PNO
+        CASE_RETURN_STRING(eWNI_SME_PREF_NETWORK_FOUND_IND);
+#endif // FEATURE_WLAN_SCAN_PNO
+        CASE_RETURN_STRING(eWNI_SME_TX_PER_HIT_IND);
+        CASE_RETURN_STRING(eWNI_SME_CHANGE_COUNTRY_CODE);
+        CASE_RETURN_STRING(eWNI_SME_PRE_SWITCH_CHL_IND);
+        CASE_RETURN_STRING(eWNI_SME_POST_SWITCH_CHL_IND);
+        CASE_RETURN_STRING(eWNI_SME_MAX_ASSOC_EXCEEDED);
+        CASE_RETURN_STRING(eWNI_SME_BTAMP_LOG_LINK_IND);//to serialize the create/accpet LL req from HCI
+#ifdef WLAN_FEATURE_GTK_OFFLOAD
+        CASE_RETURN_STRING(eWNI_PMC_GTK_OFFLOAD_GETINFO_RSP);
+#endif // WLAN_FEATURE_GTK_OFFLOAD
+#ifdef WLAN_WAKEUP_EVENTS
+        CASE_RETURN_STRING(eWNI_SME_WAKE_REASON_IND);
+#endif // WLAN_WAKEUP_EVENTS
+        CASE_RETURN_STRING(eWNI_SME_EXCLUDE_UNENCRYPTED);
+        CASE_RETURN_STRING(eWNI_SME_RSSI_IND); //RSSI indication from TL to be serialized on MC thread
+        CASE_RETURN_STRING(eWNI_SME_MSG_TYPES_END);
         default:
             return( (tANI_U8*)"UNKNOWN" );
             break;
@@ -189,149 +296,254 @@
 }
 
 
-tANI_U8* macTraceGetHalMsgString( tANI_U16 halMsg )
+tANI_U8* macTraceGetWdaMsgString( tANI_U16 wdaMsg )
 {
-    switch( halMsg )
+    switch( wdaMsg )
     {
+#if defined(FEATURE_WLAN_NON_INTEGRATED_SOC) || defined(FEATURE_WLAN_INTEGRATED_SOC)
+        CASE_RETURN_STRING(WDA_APP_SETUP_NTF);
+        CASE_RETURN_STRING(WDA_NIC_OPER_NTF);
+        CASE_RETURN_STRING(WDA_INIT_START_REQ);
+        CASE_RETURN_STRING(WDA_RESET_REQ);
+        CASE_RETURN_STRING(WDA_HDD_ADDBA_REQ);
+        CASE_RETURN_STRING(WDA_HDD_ADDBA_RSP);
+        CASE_RETURN_STRING(WDA_DELETEBA_IND);
+        CASE_RETURN_STRING(WDA_BA_FAIL_IND);
+        CASE_RETURN_STRING(WDA_TL_FLUSH_AC_REQ);
+        CASE_RETURN_STRING(WDA_TL_FLUSH_AC_RSP);
 
-        CASE_RETURN_STRING(SIR_HAL_RADAR_DETECTED_IND);
-        CASE_RETURN_STRING(SIR_HAL_WDT_KAM_RSP                );
-        CASE_RETURN_STRING(SIR_HAL_TIMER_TEMP_MEAS_REQ        );
-        CASE_RETURN_STRING(SIR_HAL_TIMER_PERIODIC_STATS_COLLECT_REQ   );
-        CASE_RETURN_STRING(SIR_HAL_CAL_REQ_NTF                );
-        CASE_RETURN_STRING(SIR_HAL_MNT_OPEN_TPC_TEMP_MEAS_REQ );
-        CASE_RETURN_STRING(SIR_HAL_CCA_MONITOR_INTERVAL_TO    );
-        CASE_RETURN_STRING(SIR_HAL_CCA_MONITOR_DURATION_TO    );
-        CASE_RETURN_STRING(SIR_HAL_CCA_MONITOR_START          );
-        CASE_RETURN_STRING(SIR_HAL_CCA_MONITOR_STOP           );
-        CASE_RETURN_STRING(SIR_HAL_CCA_CHANGE_MODE            );
+        CASE_RETURN_STRING(WDA_ITC_MSG_TYPES_BEGIN);
+        CASE_RETURN_STRING(WDA_WDT_KAM_RSP);
+        CASE_RETURN_STRING(WDA_TIMER_TEMP_MEAS_REQ);
+        CASE_RETURN_STRING(WDA_TIMER_PERIODIC_STATS_COLLECT_REQ);
+        CASE_RETURN_STRING(WDA_CAL_REQ_NTF);
+        CASE_RETURN_STRING(WDA_MNT_OPEN_TPC_TEMP_MEAS_REQ);
+        CASE_RETURN_STRING(WDA_CCA_MONITOR_INTERVAL_TO);
+        CASE_RETURN_STRING(WDA_CCA_MONITOR_DURATION_TO);
+        CASE_RETURN_STRING(WDA_CCA_MONITOR_START);
+        CASE_RETURN_STRING(WDA_CCA_MONITOR_STOP);
+        CASE_RETURN_STRING(WDA_CCA_CHANGE_MODE);
+        CASE_RETURN_STRING(WDA_TIMER_WRAP_AROUND_STATS_COLLECT_REQ);
 
-        CASE_RETURN_STRING(SIR_HAL_ADD_STA_REQ                );
-        CASE_RETURN_STRING(SIR_HAL_ADD_STA_RSP                );
-        CASE_RETURN_STRING(SIR_HAL_DELETE_STA_REQ             );
-        CASE_RETURN_STRING(SIR_HAL_DELETE_STA_RSP             );
-        CASE_RETURN_STRING(SIR_HAL_ADD_BSS_REQ                );
-        CASE_RETURN_STRING(SIR_HAL_ADD_BSS_RSP                );
-        CASE_RETURN_STRING(SIR_HAL_DELETE_BSS_REQ             );
-        CASE_RETURN_STRING(SIR_HAL_DELETE_BSS_RSP             );
-        CASE_RETURN_STRING(SIR_HAL_INIT_SCAN_REQ              );
-        CASE_RETURN_STRING(SIR_HAL_INIT_SCAN_RSP              );
-        CASE_RETURN_STRING(SIR_HAL_START_SCAN_REQ             );
-        CASE_RETURN_STRING(SIR_HAL_START_SCAN_RSP             );
-        CASE_RETURN_STRING(SIR_HAL_END_SCAN_REQ               );
-        CASE_RETURN_STRING(SIR_HAL_END_SCAN_RSP               );
-        CASE_RETURN_STRING(SIR_HAL_FINISH_SCAN_REQ            );
-        CASE_RETURN_STRING(SIR_HAL_FINISH_SCAN_RSP            );
-        CASE_RETURN_STRING(SIR_HAL_SEND_BEACON_REQ            );
-        CASE_RETURN_STRING(SIR_HAL_SEND_BEACON_RSP            );
+        CASE_RETURN_STRING(WDA_ADD_STA_REQ);
+        CASE_RETURN_STRING(WDA_ADD_STA_RSP);
+        CASE_RETURN_STRING(WDA_ADD_STA_SELF_RSP);
+        CASE_RETURN_STRING(WDA_DEL_STA_SELF_RSP);
+        CASE_RETURN_STRING(WDA_DELETE_STA_REQ);
+        CASE_RETURN_STRING(WDA_DELETE_STA_RSP);
+        CASE_RETURN_STRING(WDA_ADD_BSS_REQ);
+        CASE_RETURN_STRING(WDA_ADD_BSS_RSP);
+        CASE_RETURN_STRING(WDA_DELETE_BSS_REQ);
+        CASE_RETURN_STRING(WDA_DELETE_BSS_RSP);
+        CASE_RETURN_STRING(WDA_INIT_SCAN_REQ);
+        CASE_RETURN_STRING(WDA_INIT_SCAN_RSP);
+        CASE_RETURN_STRING(WDA_START_SCAN_REQ);
+        CASE_RETURN_STRING(WDA_START_SCAN_RSP);
+        CASE_RETURN_STRING(WDA_END_SCAN_REQ);
+        CASE_RETURN_STRING(WDA_END_SCAN_RSP);
+        CASE_RETURN_STRING(WDA_FINISH_SCAN_REQ);
+        CASE_RETURN_STRING(WDA_FINISH_SCAN_RSP);
+        CASE_RETURN_STRING(WDA_SEND_BEACON_REQ);
+        CASE_RETURN_STRING(WDA_SEND_BEACON_RSP);
 
-        CASE_RETURN_STRING(SIR_HAL_INIT_CFG_REQ               );
-        CASE_RETURN_STRING(SIR_HAL_INIT_CFG_RSP               );
+        CASE_RETURN_STRING(WDA_INIT_CFG_REQ);
+        CASE_RETURN_STRING(WDA_INIT_CFG_RSP);
 
-        CASE_RETURN_STRING(SIR_HAL_INIT_WM_CFG_REQ            );
-        CASE_RETURN_STRING(SIR_HAL_INIT_WM_CFG_RSP            );
+        CASE_RETURN_STRING(WDA_INIT_WM_CFG_REQ);
+        CASE_RETURN_STRING(WDA_INIT_WM_CFG_RSP);
 
-        CASE_RETURN_STRING(SIR_HAL_SET_BSSKEY_REQ             );
-        CASE_RETURN_STRING(SIR_HAL_SET_BSSKEY_RSP             );
-        CASE_RETURN_STRING(SIR_HAL_SET_STAKEY_REQ             );
-        CASE_RETURN_STRING(SIR_HAL_SET_STAKEY_RSP             );
-        CASE_RETURN_STRING(SIR_HAL_DPU_STATS_REQ              );
-        CASE_RETURN_STRING(SIR_HAL_DPU_STATS_RSP              );
-        CASE_RETURN_STRING(SIR_HAL_GET_DPUINFO_REQ            );
-        CASE_RETURN_STRING(SIR_HAL_GET_DPUINFO_RSP            );
+        CASE_RETURN_STRING(WDA_SET_BSSKEY_REQ);
+        CASE_RETURN_STRING(WDA_SET_BSSKEY_RSP);
+        CASE_RETURN_STRING(WDA_SET_STAKEY_REQ);
+        CASE_RETURN_STRING(WDA_SET_STAKEY_RSP);
+        CASE_RETURN_STRING(WDA_DPU_STATS_REQ);
+        CASE_RETURN_STRING(WDA_DPU_STATS_RSP);
+        CASE_RETURN_STRING(WDA_GET_DPUINFO_REQ);
+        CASE_RETURN_STRING(WDA_GET_DPUINFO_RSP);
 
-        CASE_RETURN_STRING(SIR_HAL_UPDATE_EDCA_PROFILE_IND    );
+        CASE_RETURN_STRING(WDA_UPDATE_EDCA_PROFILE_IND);
 
-        CASE_RETURN_STRING(SIR_HAL_UPDATE_STARATEINFO_REQ     );
-        CASE_RETURN_STRING(SIR_HAL_UPDATE_STARATEINFO_RSP     );
+        CASE_RETURN_STRING(WDA_UPDATE_STARATEINFO_REQ);
+        CASE_RETURN_STRING(WDA_UPDATE_STARATEINFO_RSP);
 
-        CASE_RETURN_STRING(SIR_HAL_UPDATE_BEACON_IND          );
-        CASE_RETURN_STRING(SIR_HAL_UPDATE_CF_IND              );
-        CASE_RETURN_STRING(SIR_HAL_CHNL_SWITCH_REQ            );
-        CASE_RETURN_STRING(SIR_HAL_SWITCH_CHANNEL_RSP         );
-        CASE_RETURN_STRING(SIR_HAL_ADD_TS_REQ                 );
-        CASE_RETURN_STRING(SIR_HAL_DEL_TS_REQ                 );
-        CASE_RETURN_STRING(SIR_HAL_ADD_TS_RSP);
-        CASE_RETURN_STRING(SIR_HAL_SOFTMAC_TXSTAT_REPORT      );
-        CASE_RETURN_STRING(SIR_HAL_EXIT_BMPS_REQ              );
-        CASE_RETURN_STRING(SIR_HAL_EXIT_BMPS_RSP              );
-        CASE_RETURN_STRING(SIR_HAL_EXIT_BMPS_IND              );
-        CASE_RETURN_STRING(SIR_HAL_ENTER_BMPS_REQ             );
-        CASE_RETURN_STRING(SIR_HAL_ENTER_BMPS_RSP             );
-        CASE_RETURN_STRING(SIR_HAL_BMPS_STATUS_IND            );
-        CASE_RETURN_STRING(SIR_HAL_MISSED_BEACON_IND          );
+        CASE_RETURN_STRING(WDA_UPDATE_BEACON_IND);
+        CASE_RETURN_STRING(WDA_UPDATE_CF_IND);
+        CASE_RETURN_STRING(WDA_CHNL_SWITCH_REQ);
+        CASE_RETURN_STRING(WDA_ADD_TS_REQ);
+        CASE_RETURN_STRING(WDA_DEL_TS_REQ);
+        CASE_RETURN_STRING(WDA_SOFTMAC_TXSTAT_REPORT);
+        CASE_RETURN_STRING(WDA_MBOX_SENDMSG_COMPLETE_IND);
+        CASE_RETURN_STRING(WDA_EXIT_BMPS_REQ);
+        CASE_RETURN_STRING(WDA_EXIT_BMPS_RSP);
+        CASE_RETURN_STRING(WDA_EXIT_BMPS_IND);
+        CASE_RETURN_STRING(WDA_ENTER_BMPS_REQ);
+        CASE_RETURN_STRING(WDA_ENTER_BMPS_RSP);
+        CASE_RETURN_STRING(WDA_BMPS_STATUS_IND);
+        CASE_RETURN_STRING(WDA_MISSED_BEACON_IND);
 
-        CASE_RETURN_STRING(SIR_HAL_PWR_SAVE_CFG               );
+        CASE_RETURN_STRING(WDA_CFG_RXP_FILTER_REQ);
+        CASE_RETURN_STRING(WDA_CFG_RXP_FILTER_RSP);
+        CASE_RETURN_STRING(WDA_SWITCH_CHANNEL_RSP);
+        CASE_RETURN_STRING(WDA_P2P_NOA_ATTR_IND);
+        CASE_RETURN_STRING(WDA_P2P_NOA_START_IND);
+        CASE_RETURN_STRING(WDA_PWR_SAVE_CFG);
 
-        CASE_RETURN_STRING(SIR_HAL_REGISTER_PE_CALLBACK       );
-        CASE_RETURN_STRING(SIR_HAL_SOFTMAC_MEM_READREQUEST    );
-        CASE_RETURN_STRING(SIR_HAL_SOFTMAC_MEM_WRITEREQUEST   );
+        CASE_RETURN_STRING(WDA_REGISTER_PE_CALLBACK);
+        CASE_RETURN_STRING(WDA_SOFTMAC_MEM_READREQUEST);
+        CASE_RETURN_STRING(WDA_SOFTMAC_MEM_WRITEREQUEST);
 
-        CASE_RETURN_STRING(SIR_HAL_SOFTMAC_MEM_READRESPONSE   );
-        CASE_RETURN_STRING(SIR_HAL_SOFTMAC_BULKREGWRITE_CONFIRM      );
-        CASE_RETURN_STRING(SIR_HAL_SOFTMAC_BULKREGREAD_RESPONSE      );
-        CASE_RETURN_STRING(SIR_HAL_SOFTMAC_HOSTMESG_MSGPROCESSRESULT );
+        CASE_RETURN_STRING(WDA_SOFTMAC_MEM_READRESPONSE);
+        CASE_RETURN_STRING(WDA_SOFTMAC_BULKREGWRITE_CONFIRM);
+        CASE_RETURN_STRING(WDA_SOFTMAC_BULKREGREAD_RESPONSE);
+        CASE_RETURN_STRING(WDA_SOFTMAC_HOSTMESG_MSGPROCESSRESULT);
 
-        CASE_RETURN_STRING(SIR_HAL_ADDBA_REQ                  );
-        CASE_RETURN_STRING(SIR_HAL_ADDBA_RSP                  );
-        CASE_RETURN_STRING(SIR_HAL_DELBA_IND                  );
+        CASE_RETURN_STRING(WDA_ADDBA_REQ);
+        CASE_RETURN_STRING(WDA_ADDBA_RSP);
+        CASE_RETURN_STRING(WDA_DELBA_IND);
+        CASE_RETURN_STRING(WDA_DEL_BA_IND);
+        CASE_RETURN_STRING(WDA_MIC_FAILURE_IND);
 
-        CASE_RETURN_STRING(SIR_HAL_DELBA_REQ                  );
-        CASE_RETURN_STRING(SIR_HAL_IBSS_STA_ADD               );
-        CASE_RETURN_STRING(SIR_HAL_TIMER_ADJUST_ADAPTIVE_THRESHOLD_IND   );
-        CASE_RETURN_STRING(SIR_HAL_SET_LINK_STATE             );
-        CASE_RETURN_STRING(SIR_HAL_ENTER_IMPS_REQ             );
-        CASE_RETURN_STRING(SIR_HAL_ENTER_IMPS_RSP             );
-        CASE_RETURN_STRING(SIR_HAL_EXIT_IMPS_RSP              );
-        CASE_RETURN_STRING(SIR_HAL_EXIT_IMPS_REQ              );
-        CASE_RETURN_STRING(SIR_HAL_SOFTMAC_HOSTMESG_PS_STATUS_IND  );
-        CASE_RETURN_STRING(SIR_HAL_POSTPONE_ENTER_IMPS_RSP    );
-        CASE_RETURN_STRING(SIR_HAL_STA_STAT_REQ               );
-        CASE_RETURN_STRING(SIR_HAL_GLOBAL_STAT_REQ            );
-        CASE_RETURN_STRING(SIR_HAL_AGGR_STAT_REQ              );
-        CASE_RETURN_STRING(SIR_HAL_STA_STAT_RSP               );
-        CASE_RETURN_STRING(SIR_HAL_GLOBAL_STAT_RSP            );
-        CASE_RETURN_STRING(SIR_HAL_AGGR_STAT_RSP              );
-        CASE_RETURN_STRING(SIR_HAL_STAT_SUMM_REQ              );
-        CASE_RETURN_STRING(SIR_HAL_STAT_SUMM_RSP              );
-        CASE_RETURN_STRING(SIR_HAL_REMOVE_BSSKEY_REQ          );
-        CASE_RETURN_STRING(SIR_HAL_REMOVE_BSSKEY_RSP          );
-        CASE_RETURN_STRING(SIR_HAL_REMOVE_STAKEY_REQ          );
-        CASE_RETURN_STRING(SIR_HAL_REMOVE_STAKEY_RSP          );
-        CASE_RETURN_STRING(SIR_HAL_SET_STA_BCASTKEY_REQ       );
-        CASE_RETURN_STRING(SIR_HAL_SET_STA_BCASTKEY_RSP       );
-        CASE_RETURN_STRING(SIR_HAL_REMOVE_STA_BCASTKEY_REQ    );
-        CASE_RETURN_STRING(SIR_HAL_REMOVE_STA_BCASTKEY_RSP    );
+        CASE_RETURN_STRING(WDA_DELBA_REQ);
+        CASE_RETURN_STRING(WDA_IBSS_STA_ADD);
+        CASE_RETURN_STRING(WDA_TIMER_ADJUST_ADAPTIVE_THRESHOLD_IND);
+        CASE_RETURN_STRING(WDA_SET_LINK_STATE);
+        CASE_RETURN_STRING(WDA_SET_LINK_STATE_RSP);
+        CASE_RETURN_STRING(WDA_ENTER_IMPS_REQ);
+        CASE_RETURN_STRING(WDA_ENTER_IMPS_RSP);
+        CASE_RETURN_STRING(WDA_EXIT_IMPS_RSP);
+        CASE_RETURN_STRING(WDA_EXIT_IMPS_REQ);
+        CASE_RETURN_STRING(WDA_SOFTMAC_HOSTMESG_PS_STATUS_IND);
+        CASE_RETURN_STRING(WDA_POSTPONE_ENTER_IMPS_RSP);
+        CASE_RETURN_STRING(WDA_STA_STAT_REQ);
+        CASE_RETURN_STRING(WDA_GLOBAL_STAT_REQ);
+        CASE_RETURN_STRING(WDA_AGGR_STAT_REQ);
+        CASE_RETURN_STRING(WDA_STA_STAT_RSP);
+        CASE_RETURN_STRING(WDA_GLOBAL_STAT_RSP);
+        CASE_RETURN_STRING(WDA_AGGR_STAT_RSP);
+        CASE_RETURN_STRING(WDA_STAT_SUMM_REQ);
+        CASE_RETURN_STRING(WDA_STAT_SUMM_RSP);
+        CASE_RETURN_STRING(WDA_REMOVE_BSSKEY_REQ);
+        CASE_RETURN_STRING(WDA_REMOVE_BSSKEY_RSP);
+        CASE_RETURN_STRING(WDA_REMOVE_STAKEY_REQ);
+        CASE_RETURN_STRING(WDA_REMOVE_STAKEY_RSP);
+        CASE_RETURN_STRING(WDA_SET_STA_BCASTKEY_REQ);
+        CASE_RETURN_STRING(WDA_SET_STA_BCASTKEY_RSP);
+        CASE_RETURN_STRING(WDA_REMOVE_STA_BCASTKEY_REQ);
+        CASE_RETURN_STRING(WDA_REMOVE_STA_BCASTKEY_RSP);
+        CASE_RETURN_STRING(WDA_ADD_TS_RSP);
+        CASE_RETURN_STRING(WDA_DPU_MIC_ERROR);
 
-        CASE_RETURN_STRING(SIR_HAL_DPU_MIC_ERROR              );
+        CASE_RETURN_STRING(WDA_TIMER_BA_ACTIVITY_REQ);
+        CASE_RETURN_STRING(WDA_TIMER_CHIP_MONITOR_TIMEOUT);
+        CASE_RETURN_STRING(WDA_TIMER_TRAFFIC_ACTIVITY_REQ);
+        CASE_RETURN_STRING(WDA_TIMER_ADC_RSSI_STATS);
+#ifdef FEATURE_WLAN_CCX
+        CASE_RETURN_STRING(WDA_TSM_STATS_REQ);
+        CASE_RETURN_STRING(WDA_TSM_STATS_RSP);
+#endif
+#ifdef WLAN_SOFTAP_FEATURE
+        CASE_RETURN_STRING(WDA_UPDATE_UAPSD_IND);
+#endif
+        CASE_RETURN_STRING(WDA_SET_MIMOPS_REQ);
+        CASE_RETURN_STRING(WDA_SET_MIMOPS_RSP);
+        CASE_RETURN_STRING(WDA_SYS_READY_IND );
+        CASE_RETURN_STRING(WDA_SET_TX_POWER_REQ);
+        CASE_RETURN_STRING(WDA_SET_TX_POWER_RSP);
+        CASE_RETURN_STRING(WDA_GET_TX_POWER_REQ);
+        CASE_RETURN_STRING(WDA_GET_TX_POWER_RSP);
+        CASE_RETURN_STRING(WDA_GET_NOISE_REQ );
+        CASE_RETURN_STRING(WDA_GET_NOISE_RSP);
+        CASE_RETURN_STRING(WDA_SET_TX_PER_TRACKING_REQ);
 
-        CASE_RETURN_STRING(SIR_HAL_TIMER_BA_ACTIVITY_REQ      );
-        CASE_RETURN_STRING(SIR_HAL_TIMER_CHIP_MONITOR_TIMEOUT );
-        CASE_RETURN_STRING(SIR_HAL_TIMER_TRAFFIC_ACTIVITY_REQ );
-        CASE_RETURN_STRING(SIR_HAL_SET_MIMOPS_REQ                      );
-        CASE_RETURN_STRING(SIR_HAL_SET_MIMOPS_RSP                      );
-        CASE_RETURN_STRING(SIR_HAL_SYS_READY_IND                       );
-        CASE_RETURN_STRING(SIR_HAL_SET_TX_POWER_REQ                    );
-        CASE_RETURN_STRING(SIR_HAL_SET_TX_POWER_RSP                    );
-        CASE_RETURN_STRING(SIR_HAL_GET_TX_POWER_REQ                    );
-        CASE_RETURN_STRING(SIR_HAL_GET_TX_POWER_RSP                    );
-        CASE_RETURN_STRING(SIR_HAL_GET_NOISE_REQ                       );
-        CASE_RETURN_STRING(SIR_HAL_GET_NOISE_RSP                       );
+        CASE_RETURN_STRING(WDA_TRANSMISSION_CONTROL_IND);
+        CASE_RETURN_STRING(WDA_INIT_RADAR_IND);
 
-        CASE_RETURN_STRING(SIR_HAL_TRANSMISSION_CONTROL_IND            );
-        CASE_RETURN_STRING(SIR_HAL_INIT_RADAR_IND                      );
+        CASE_RETURN_STRING(WDA_BEACON_PRE_IND );
+        CASE_RETURN_STRING(WDA_ENTER_UAPSD_REQ);
+        CASE_RETURN_STRING(WDA_ENTER_UAPSD_RSP);
+        CASE_RETURN_STRING(WDA_EXIT_UAPSD_REQ  );
+        CASE_RETURN_STRING(WDA_EXIT_UAPSD_RSP );
+        CASE_RETURN_STRING(WDA_LOW_RSSI_IND   );
+        CASE_RETURN_STRING(WDA_BEACON_FILTER_IND);
+        CASE_RETURN_STRING(WDA_WOWL_ADD_BCAST_PTRN);
+        CASE_RETURN_STRING(WDA_WOWL_DEL_BCAST_PTRN);
+        CASE_RETURN_STRING(WDA_WOWL_ENTER_REQ);
+        CASE_RETURN_STRING(WDA_WOWL_ENTER_RSP);
+        CASE_RETURN_STRING(WDA_WOWL_EXIT_REQ );
+        CASE_RETURN_STRING(WDA_WOWL_EXIT_RSP );
+        CASE_RETURN_STRING(WDA_TX_COMPLETE_IND);
+        CASE_RETURN_STRING(WDA_TIMER_RA_COLLECT_AND_ADAPT);
+        CASE_RETURN_STRING(WDA_GET_STATISTICS_REQ);
+        CASE_RETURN_STRING(WDA_GET_STATISTICS_RSP);
+        CASE_RETURN_STRING(WDA_SET_KEY_DONE);
 
-        CASE_RETURN_STRING(SIR_HAL_BEACON_PRE_IND             );
-        CASE_RETURN_STRING(SIR_HAL_ENTER_UAPSD_REQ            );
-        CASE_RETURN_STRING(SIR_HAL_ENTER_UAPSD_RSP            );
-        CASE_RETURN_STRING(SIR_HAL_EXIT_UAPSD_REQ             );
-        CASE_RETURN_STRING(SIR_HAL_EXIT_UAPSD_RSP             );
-        CASE_RETURN_STRING(SIR_HAL_LOW_RSSI_IND               );
-        CASE_RETURN_STRING(SIR_HAL_GET_STATISTICS_RSP         );
-
-#ifdef SUPPORT_BEACON_FILTER
-        CASE_RETURN_STRING(SIR_HAL_BEACON_FILTER_IND   );
+        CASE_RETURN_STRING(WDA_BTC_SET_CFG);
+        CASE_RETURN_STRING(WDA_SIGNAL_BT_EVENT);
+        CASE_RETURN_STRING(WDA_HANDLE_FW_MBOX_RSP);
+        CASE_RETURN_STRING(WDA_UPDATE_PROBE_RSP_TEMPLATE_IND);
+        CASE_RETURN_STRING(WDA_SIGNAL_BTAMP_EVENT);
+#ifdef ANI_CHIPSET_VOLANS
+#ifdef FEATURE_OEM_DATA_SUPPORT
+        CASE_RETURN_STRING(WDA_START_OEM_DATA_REQ );
+        CASE_RETURN_STRING(WDA_START_OEM_DATA_RSP);
+        CASE_RETURN_STRING(WDA_FINISH_OEM_DATA_REQ);
 #endif //SUPPORT_BEACON_FILTER
+#endif
+        CASE_RETURN_STRING(WDA_SET_MAX_TX_POWER_REQ);
+        CASE_RETURN_STRING(WDA_SET_MAX_TX_POWER_RSP);
+        CASE_RETURN_STRING(WDA_SEND_MSG_COMPLETE);
+        CASE_RETURN_STRING(WDA_SET_HOST_OFFLOAD);
+        CASE_RETURN_STRING(WDA_SET_KEEP_ALIVE);
+#ifdef WLAN_NS_OFFLOAD
+        CASE_RETURN_STRING(WDA_SET_NS_OFFLOAD);
+#endif //WLAN_NS_OFFLOAD
+        CASE_RETURN_STRING(WDA_ADD_STA_SELF_REQ);
+        CASE_RETURN_STRING(WDA_DEL_STA_SELF_REQ);
+#ifdef WLAN_FEATURE_P2P
+        CASE_RETURN_STRING(WDA_SET_P2P_GO_NOA_REQ);
+#endif
+        CASE_RETURN_STRING(WDA_TX_COMPLETE_TIMEOUT_IND);
+        CASE_RETURN_STRING(WDA_WLAN_SUSPEND_IND);
+        CASE_RETURN_STRING(WDA_WLAN_RESUME_REQ);
+        CASE_RETURN_STRING(WDA_MSG_TYPES_END);
+        CASE_RETURN_STRING(WDA_MMH_TXMB_READY_EVT);
+        CASE_RETURN_STRING(WDA_MMH_RXMB_DONE_EVT);
+        CASE_RETURN_STRING(WDA_MMH_MSGQ_NE_EVT);
+#endif
+#ifdef WLAN_FEATURE_VOWIFI_11R
+        CASE_RETURN_STRING(WDA_AGGR_QOS_REQ);
+        CASE_RETURN_STRING(WDA_AGGR_QOS_RSP);
+#endif /* WLAN_FEATURE_VOWIFI_11R */
+#ifdef ANI_MANF_DIAG
+        CASE_RETURN_STRING(WDA_FTM_CMD_REQ);
+        CASE_RETURN_STRING(WDA_FTM_CMD_RSP);
+#endif /* ANI_MANF_DIAG */
+#ifdef FEATURE_WLAN_SCAN_PNO
+        CASE_RETURN_STRING(WDA_SET_PNO_REQ);
+        CASE_RETURN_STRING(WDA_SET_RSSI_FILTER_REQ);
+        CASE_RETURN_STRING(WDA_UPDATE_SCAN_PARAMS_REQ);
+        CASE_RETURN_STRING(WDA_SET_PNO_CHANGED_IND);
+#endif // FEATURE_WLAN_SCAN_PNO
+#ifdef WLAN_WAKEUP_EVENTS
+        CASE_RETURN_STRING(WDA_WAKE_REASON_IND);
+#endif // WLAN_WAKEUP_EVENTS
+#ifdef WLAN_FEATURE_PACKET_FILTERING
+        CASE_RETURN_STRING(WDA_8023_MULTICAST_LIST_REQ);
+        CASE_RETURN_STRING(WDA_RECEIVE_FILTER_SET_FILTER_REQ);
+        CASE_RETURN_STRING(WDA_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ);
+        CASE_RETURN_STRING(WDA_PACKET_COALESCING_FILTER_MATCH_COUNT_RSP);
+        CASE_RETURN_STRING(WDA_RECEIVE_FILTER_CLEAR_FILTER_REQ);
+#endif // WLAN_FEATURE_PACKET_FILTERING
+        CASE_RETURN_STRING(WDA_SET_POWER_PARAMS_REQ);
+#ifdef WLAN_FEATURE_GTK_OFFLOAD
+        CASE_RETURN_STRING(WDA_GTK_OFFLOAD_REQ);
+        CASE_RETURN_STRING(WDA_GTK_OFFLOAD_GETINFO_REQ);
+        CASE_RETURN_STRING(WDA_GTK_OFFLOAD_GETINFO_RSP);
+#endif //WLAN_FEATURE_GTK_OFFLOAD
+        CASE_RETURN_STRING(WDA_SET_TM_LEVEL_REQ);
+#ifdef WLAN_FEATURE_11AC
+        CASE_RETURN_STRING(WDA_UPDATE_OP_MODE);
+#endif
         default:
             return((tANI_U8*) "UNKNOWN" );
             break;
@@ -357,6 +569,7 @@
         CASE_RETURN_STRING(SIR_LIM_DEL_BA_ALL_IND);
         CASE_RETURN_STRING(SIR_LIM_DELETE_STA_CONTEXT_IND);
         CASE_RETURN_STRING(SIR_LIM_DEL_BA_IND );
+        CASE_RETURN_STRING(SIR_LIM_UPDATE_BEACON);
         CASE_RETURN_STRING(SIR_LIM_MIN_CHANNEL_TIMEOUT);
         CASE_RETURN_STRING(SIR_LIM_MAX_CHANNEL_TIMEOUT);
         CASE_RETURN_STRING(SIR_LIM_JOIN_FAIL_TIMEOUT );
@@ -384,11 +597,28 @@
         CASE_RETURN_STRING(SIR_LIM_CHANNEL_SWITCH_TIMEOUT   );
         CASE_RETURN_STRING(SIR_LIM_QUIET_TIMEOUT            );
         CASE_RETURN_STRING(SIR_LIM_QUIET_BSS_TIMEOUT      );
+#ifdef WLAN_SOFTAP_FEATURE
+        CASE_RETURN_STRING(SIR_LIM_WPS_OVERLAP_TIMEOUT);
+#endif
+#ifdef WLAN_FEATURE_VOWIFI_11R
+        CASE_RETURN_STRING(SIR_LIM_FT_PREAUTH_RSP_TIMEOUT);
+#endif
+#ifdef WLAN_FEATURE_P2P
+        CASE_RETURN_STRING(SIR_LIM_REMAIN_CHN_TIMEOUT);
+        CASE_RETURN_STRING(SIR_LIM_INSERT_SINGLESHOT_NOA_TIMEOUT);
+#endif
 #ifdef WMM_APSD
         CASE_RETURN_STRING(SIR_LIM_WMM_APSD_SP_START_MSG_TYPE );
         CASE_RETURN_STRING(SIR_LIM_WMM_APSD_SP_END_MSG_TYPE );
 #endif
         CASE_RETURN_STRING(SIR_LIM_BEACON_GEN_IND );
+        CASE_RETURN_STRING(SIR_LIM_PERIODIC_PROBE_REQ_TIMEOUT);
+#ifdef FEATURE_WLAN_CCX
+        CASE_RETURN_STRING(SIR_LIM_CCX_TSM_TIMEOUT);
+#endif
+        CASE_RETURN_STRING(SIR_LIM_DISASSOC_ACK_TIMEOUT);
+        CASE_RETURN_STRING(SIR_LIM_DEAUTH_ACK_TIMEOUT);
+        CASE_RETURN_STRING(SIR_LIM_PERIODIC_JOIN_PROBE_REQ_TIMEOUT);
         CASE_RETURN_STRING(SIR_LIM_MSG_TYPES_END);
 
         default:
@@ -528,8 +758,8 @@
     //If module is not registered, don't record for that module.
     if(traceCBTable[module] == NULL)
         return;
+    pe_AcquireGlobalLock( &pMac->lim );
 
-    
     gTraceData.num++;
 
     if (gTraceData.head == INVALID_TRACE_ADDR)
@@ -560,16 +790,10 @@
     rec->code = code;
     rec->session = session;
     rec->data = data;
-    rec->time = (tANI_U16)vos_timer_get_system_time();
+    rec->time = vos_timer_get_system_time();
     rec->module =  module;
     gTraceData.numSinceLastDump ++;
-
-    if(gTraceData.numSinceLastDump == gTraceData.dumpCount)
-        {
-             VOS_TRACE( VOS_MODULE_ID_SYS, VOS_TRACE_LEVEL_ERROR, "Trace Dump last %d traces\n",  gTraceData.dumpCount);
-              macTraceDumpAll(pMac, 0, 0, gTraceData.dumpCount);
-              gTraceData.numSinceLastDump = 0;
-        }
+    pe_ReleaseGlobalLock( &pMac->lim );
 
 }
 
@@ -592,8 +816,8 @@
             else
                 return macTraceGetSmeMsgString((tANI_U16)msgType);
             break;
-        case SIR_HAL_MODULE_ID:
-                return macTraceGetHalMsgString((tANI_U16)msgType);
+        case SIR_WDA_MODULE_ID:
+                return macTraceGetWdaMsgString((tANI_U16)msgType);
         case SIR_CFG_MODULE_ID:
                 return macTraceGetCfgMsgString((tANI_U16)msgType);
         default:
@@ -618,9 +842,10 @@
         return;
     }
 
-    VOS_TRACE( VOS_MODULE_ID_SYS, VOS_TRACE_LEVEL_ERROR, 
+    VOS_TRACE( VOS_MODULE_ID_SYS, VOS_TRACE_LEVEL_ERROR,
                             "Total Records: %d, Head: %d, Tail: %d\n", gTraceData.num, gTraceData.head, gTraceData.tail);
 
+    pe_AcquireGlobalLock( &pMac->lim );
     if (gTraceData.head != INVALID_TRACE_ADDR)
     {
 
@@ -664,8 +889,9 @@
                 pRecord += 1;
         }
         gTraceData.numSinceLastDump = 0;
- 
+
     }
+    pe_ReleaseGlobalLock( &pMac->lim );
 
 }
 
diff --git a/Kbuild b/Kbuild
index fa2967a..e8ebf4c 100644
--- a/Kbuild
+++ b/Kbuild
@@ -540,6 +540,7 @@
 ifeq ($(BUILD_DEBUG_VERSION),1)
 CDEFINES +=	-DWLAN_DEBUG \
 		-DTRACE_RECORD \
+		-DLIM_TRACE_RECORD \
 		-DPE_DEBUG_LOGW \
 		-DPE_DEBUG_LOGE \
 		-DDEBUG
