diff --git a/CORE/TL/inc/wlan_qct_tl_trace.h b/CORE/TL/inc/wlan_qct_tl_trace.h
index 7ca6b21..066db2d 100644
--- a/CORE/TL/inc/wlan_qct_tl_trace.h
+++ b/CORE/TL/inc/wlan_qct_tl_trace.h
@@ -39,7 +39,7 @@
 
 #define NO_SESSION 0xFF
 
-enum {
+typedef enum {
     TRACE_CODE_TL_STA_STATE,
     TRACE_CODE_TL_EAPOL_PKT_PENDING,
     TRACE_CODE_TL_GET_FRAMES_EAPOL,
@@ -51,7 +51,11 @@
     TRACE_CODE_TL_QUEUE_CURRENT,
     TRACE_CODE_TL_REORDER_TIMER_EXP_CB,
     TRACE_CODE_TL_BA_SESSION_DEL,
-};
+    TRACE_CODE_TL_ASSOC_FAILED,
+    TRACE_CODE_TL_FORWARD_CACHED_FRAMES,
+    TRACE_CODE_TL_FLUSH_CACHED_FRAMES,
+    TRACE_CODE_TL_CACHE_FRAME,
+}WLANTL_TraceCode;
 
 void tlTraceDump(void *pMac, tpvosTraceRecord pRecord, tANI_U16 recIndex);
 void tlTraceInit(void);
diff --git a/CORE/TL/src/wlan_qct_tl.c b/CORE/TL/src/wlan_qct_tl.c
index 402644d..cffc7f5 100644
--- a/CORE/TL/src/wlan_qct_tl.c
+++ b/CORE/TL/src/wlan_qct_tl.c
@@ -1025,6 +1025,9 @@
   // if the STA exist, the frames will be forwarded
   // and if it doesn't exist, the frames will be flushed
   // in this case we know it won't exist so the DPU index signature values don't matter
+  MTRACE(vos_trace(VOS_MODULE_ID_TL, TRACE_CODE_TL_ASSOC_FAILED,
+                                                staId, 0));
+
   if(!VOS_IS_STATUS_SUCCESS(WLANTL_StartForwarding(staId,0,0)))
   {
     VOS_TRACE(VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
@@ -4738,6 +4741,9 @@
               pClientSTA->tlCacheInfo.cacheInitTime;
       pClientSTA->tlCacheInfo.cacheSize = 1;
 
+      MTRACE(vos_trace(VOS_MODULE_ID_TL, TRACE_CODE_TL_CACHE_FRAME,
+                       ucSTAId, pClientSTA->tlCacheInfo.cacheSize));
+
     }
     else
     {
@@ -4753,6 +4759,8 @@
         VOS_TRACE(VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
                   "%s: Cache High watermark for staid:%d (%d)",
                   __func__,ucSTAId, pClientSTA->tlCacheInfo.cacheSize);
+        MTRACE(vos_trace(VOS_MODULE_ID_TL, TRACE_CODE_TL_CACHE_FRAME,
+                         ucSTAId, pClientSTA->tlCacheInfo.cacheSize));
       }
     }
     pClientSTA->vosEndCachedFrame = vosTempBuff;
@@ -4894,6 +4902,8 @@
   {
     TLLOG2(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO_HIGH,
        "WLAN TL:Station has been deleted for STA %d - flushing cache", ucSTAId));
+    MTRACE(vos_trace(VOS_MODULE_ID_TL, TRACE_CODE_TL_FLUSH_CACHED_FRAMES,
+                     ucSTAId, pClientSTA->tlCacheInfo.cacheSize));
     WLANTL_FlushCachedFrames(pClientSTA->vosBegCachedFrame);
     goto done; 
   }
@@ -6006,6 +6016,18 @@
     return VOS_STATUS_E_INVAL;
   }
 
+  pClientSTA = pTLCb->atlSTAClients[ucSTAId];
+
+  if ( NULL == pClientSTA )
+  {
+    TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
+        "WLAN TL:Client Memory was not allocated on %s", __func__));
+    return VOS_STATUS_E_FAILURE;
+  }
+
+  MTRACE(vos_trace(VOS_MODULE_ID_TL, TRACE_CODE_TL_FORWARD_CACHED_FRAMES,
+                   ucSTAId, 1<<16 | pClientSTA->tlCacheInfo.cacheSize));
+
   /*---------------------------------------------------------------------
     Save the initial buffer - this is the first received buffer
    ---------------------------------------------------------------------*/
