wlan: Adding MTRACE support in TL layer.

This fix will add MTRACE logs in TL layer.

Change-Id: Ie1ad6f2a8b982f80daf5dadf14a5841fa4d3a476
CRs-Fixed:  611160
(cherry picked from commit e2972278249f42e457eb12fcd12c0d74b549b900)
diff --git a/CORE/TL/inc/wlan_qct_tl_trace.h b/CORE/TL/inc/wlan_qct_tl_trace.h
new file mode 100644
index 0000000..7ca6b21
--- /dev/null
+++ b/CORE/TL/inc/wlan_qct_tl_trace.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2014 The Linux Foundation. All rights reserved.
+ *
+ * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+ *
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This file was originally distributed by Qualcomm Atheros, Inc.
+ * under proprietary terms before Copyright ownership was assigned
+ * to the Linux Foundation.
+ */
+
+/***********************************************************************
+   wlan_qct_tl_trace.h
+
+  \brief definition for trace related APIs
+
+  ========================================================================*/
+#ifndef __WLAN_QCT_TL_TRACE_H__
+#define __WLAN_QCT_TL_TRACE_H__
+
+
+#include "macTrace.h"
+
+#define NO_SESSION 0xFF
+
+enum {
+    TRACE_CODE_TL_STA_STATE,
+    TRACE_CODE_TL_EAPOL_PKT_PENDING,
+    TRACE_CODE_TL_GET_FRAMES_EAPOL,
+    TRACE_CODE_TL_RX_CONN_EAPOL,
+    TRACE_CODE_TL_REGISTER_STA_CLIENT,
+    TRACE_CODE_TL_SUSPEND_DATA_TX,
+    TRACE_CODE_TL_RESUME_DATA_TX,
+    TRACE_CODE_TL_STA_PKT_PENDING,
+    TRACE_CODE_TL_QUEUE_CURRENT,
+    TRACE_CODE_TL_REORDER_TIMER_EXP_CB,
+    TRACE_CODE_TL_BA_SESSION_DEL,
+};
+
+void tlTraceDump(void *pMac, tpvosTraceRecord pRecord, tANI_U16 recIndex);
+void tlTraceInit(void);
+
+#endif
diff --git a/CORE/TL/src/wlan_qct_tl.c b/CORE/TL/src/wlan_qct_tl.c
index caf9390..6d9c75e 100644
--- a/CORE/TL/src/wlan_qct_tl.c
+++ b/CORE/TL/src/wlan_qct_tl.c
@@ -136,6 +136,9 @@
 #include "wlan_qct_tli.h" 
 #include "wlan_qct_tli_ba.h" 
 #include "wlan_qct_tl_hosupport.h"
+#include "vos_types.h"
+#include "vos_trace.h"
+#include "wlan_qct_tl_trace.h"
 #include "tlDebug.h"
 #ifdef FEATURE_WLAN_WAPI
 /*Included to access WDI_RxBdType */
@@ -637,6 +640,7 @@
   TLLOG2(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO_HIGH,
              "WLAN TL:WLAN TL:WLANTL_Start"));
 
+  tlTraceInit();
   vosStatus = WDA_DS_Register( pvosGCtx, 
                           WLANTL_TxComp, 
                           WLANTL_RxFrames,
@@ -1178,6 +1182,13 @@
   /*------------------------------------------------------------------------
     Register station with TL
    ------------------------------------------------------------------------*/
+  MTRACE(vos_trace(VOS_MODULE_ID_TL, TRACE_CODE_TL_REGISTER_STA_CLIENT,
+                   pwSTADescType->ucSTAId, (unsigned )
+                              (*(pwSTADescType->vSTAMACAddress.bytes+2)<<24 |
+                               *(pwSTADescType->vSTAMACAddress.bytes+3)<<16 |
+                               *(pwSTADescType->vSTAMACAddress.bytes+4)<<8 |
+                               *(pwSTADescType->vSTAMACAddress.bytes+5))));
+
   TLLOG2(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO_HIGH,
              "WLAN TL:Registering STA Client ID: %d", pwSTADescType->ucSTAId ));
 
@@ -1607,6 +1618,9 @@
              "WLAN TL:Changing state for STA Client ID: %d from %d to %d",
              ucSTAId, pTLCb->atlSTAClients[ucSTAId]->tlState, tlSTAState));
 
+  MTRACE(vos_trace(VOS_MODULE_ID_TL,
+                   TRACE_CODE_TL_STA_STATE, ucSTAId,tlSTAState ));
+
   pTLCb->atlSTAClients[ucSTAId]->tlState = tlSTAState;
 
   return VOS_STATUS_SUCCESS;
@@ -1986,6 +2000,9 @@
        Just in the case when STA got disconnected shortly after connectection */
     pClientSTA->ucEapolPktPending = 1;
 
+    MTRACE(vos_trace(VOS_MODULE_ID_TL,
+           TRACE_CODE_TL_EAPOL_PKT_PENDING, ucSTAId, ucAc));
+
     VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO_HIGH,
       "WLAN TL:Packet pending indication for STA: %d AC: %d State: %d", 
                ucSTAId, ucAc, pClientSTA->tlState);
@@ -2009,6 +2026,9 @@
        if (( pTLCb->uResCount >=  WDA_TLI_MIN_RES_DATA ) &&
           ( 0 == pTLCb->ucTxSuspended ))
       {
+        MTRACE(vos_trace(VOS_MODULE_ID_TL, TRACE_CODE_TL_STA_PKT_PENDING,
+                      ucSTAId, pClientSTA->tlState ));
+
         TLLOG2(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO_HIGH,
               "Issuing Xmit start request to BAL"));
            WDA_DS_StartXmit(pvosGCtx);
@@ -3473,6 +3493,9 @@
   vosMsg.type     = WLANTL_TX_SIG_SUSPEND;
   vosMsg.bodyptr     = (v_PVOID_t)pfnSuspendTx;
 
+  MTRACE(vos_trace(VOS_MODULE_ID_TL, TRACE_CODE_TL_SUSPEND_DATA_TX,
+                    vosMsg.reserved , 0 ));
+
   if(!VOS_IS_STATUS_SUCCESS(vos_tx_mq_serialize( VOS_MQ_ID_TL, &vosMsg)))
   {
     VOS_TRACE(VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
@@ -3541,12 +3564,18 @@
    ------------------------------------------------------------------------*/
   if ( NULL == pucSTAId )
   {
+    MTRACE(vos_trace(VOS_MODULE_ID_TL, TRACE_CODE_TL_RESUME_DATA_TX,
+                      41 , 0 ));
+
     TLLOG2(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO_HIGH,
               "WLAN TL:General resume requested"));
     vos_atomic_set_U8( &pTLCb->ucTxSuspended, 0);
   }
   else
   {
+    MTRACE(vos_trace(VOS_MODULE_ID_TL, TRACE_CODE_TL_RESUME_DATA_TX,
+                      *pucSTAId , 0 ));
+
     if ( WLANTL_STA_ID_INVALID( *pucSTAId ))
     {
       TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
@@ -4157,6 +4186,9 @@
         /* Serve EAPOL frame with HI_FLOW_MASK */
         ucSTAId = i;
 
+        MTRACE(vos_trace(VOS_MODULE_ID_TL,
+                   TRACE_CODE_TL_GET_FRAMES_EAPOL, ucSTAId, pTLCb->atlSTAClients[i]->tlState));
+
         for (j = WLANTL_MAX_AC ; j > 0; j--)
         {
           if (0 != pTLCb->atlSTAClients[ucSTAId]->aucACMask[j-1])
@@ -7633,6 +7665,8 @@
 #endif /* FEATURE_WLAN_WAPI */
     else /* Frame is an EAPOL frame or a WAI frame*/  
     {
+      MTRACE(vos_trace(VOS_MODULE_ID_TL,
+                   TRACE_CODE_TL_RX_CONN_EAPOL, ucSTAId, usEtherType ));
 
       VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO,
                  "WLAN TL:RX Frame  EAPOL EtherType %d - processing", usEtherType);
diff --git a/CORE/TL/src/wlan_qct_tl_ba.c b/CORE/TL/src/wlan_qct_tl_ba.c
index fb3a8dc..a991a2b 100644
--- a/CORE/TL/src/wlan_qct_tl_ba.c
+++ b/CORE/TL/src/wlan_qct_tl_ba.c
@@ -41,11 +41,6 @@
   DEPENDENCIES: 
 
   Are listed for each API below. 
-  
-  
-  Copyright (c) 2008 QUALCOMM Incorporated.
-  All Rights Reserved.
-  Qualcomm Confidential and Proprietary
 ===========================================================================*/
 
 /*===========================================================================
@@ -76,6 +71,9 @@
 #include "wlan_qct_tli.h" 
 #include "wlan_qct_tli_ba.h" 
 #include "wlan_qct_hal.h" 
+#include "wlan_qct_tl_trace.h"
+#include "vos_trace.h"
+#include "vos_types.h"
 #include "vos_list.h"
 #include "vos_lock.h"
 #include "tlDebug.h"
@@ -198,6 +196,9 @@
    opCode      = WLANTL_OPCODE_FWDALL_DROPCUR;
    vosDataBuff = NULL;
 
+   MTRACE(vos_trace(VOS_MODULE_ID_TL, TRACE_CODE_TL_REORDER_TIMER_EXP_CB,
+                      ucSTAID , opCode ));
+
 
    TLLOGE(VOS_TRACE(VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO,"BA timeout with %d pending frames, curIdx %d", ReorderInfo->pendingFramesCount, ReorderInfo->ucCIndex));
 
@@ -805,6 +806,9 @@
   reOrderInfo->sessionID = 0;
   reOrderInfo->LastSN = 0;
 
+  MTRACE(vos_trace(VOS_MODULE_ID_TL, TRACE_CODE_TL_BA_SESSION_DEL,
+                      ucSTAId, ucTid ));
+
   TLLOG2(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO_HIGH,
              "WLAN TL: BA session deleted for STA: %d TID: %d",
              ucSTAId, ucTid));
@@ -1710,6 +1714,9 @@
                *vosDataBuff));
    if(NULL != pwBaReorder->reorderBuffer->arrayBuffer[ucSlotIndex])
    {
+      MTRACE(vos_trace(VOS_MODULE_ID_TL, TRACE_CODE_TL_QUEUE_CURRENT,
+                      pwBaReorder->sessionID , pwBaReorder->pendingFramesCount ));
+
       TLLOGE(VOS_TRACE(VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,"One Cycle rounded, lost many frames already, not in Q %d",
                   pwBaReorder->pendingFramesCount));
       return VOS_STATUS_E_RESOURCES;
diff --git a/CORE/TL/src/wlan_qct_tl_trace.c b/CORE/TL/src/wlan_qct_tl_trace.c
new file mode 100644
index 0000000..8241670
--- /dev/null
+++ b/CORE/TL/src/wlan_qct_tl_trace.c
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2014 The Linux Foundation. All rights reserved.
+ *
+ * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+ *
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This file was originally distributed by Qualcomm Atheros, Inc.
+ * under proprietary terms before Copyright ownership was assigned
+ * to the Linux Foundation.
+ */
+
+/************************************************************************
+   wlan_qct_tl_trace.c
+
+  \brief implementation for trace related APIs
+
+  ========================================================================*/
+
+#include "vos_trace.h"
+#include "vos_types.h"
+#include "wlan_qct_tl_trace.h"
+#include "tlDebug.h"
+
+static v_U8_t* tlTraceGetEventString(v_U32_t code)
+{
+    switch(code)
+    {
+         CASE_RETURN_STRING(TRACE_CODE_TL_STA_STATE);
+         CASE_RETURN_STRING(TRACE_CODE_TL_EAPOL_PKT_PENDING);
+         CASE_RETURN_STRING(TRACE_CODE_TL_GET_FRAMES_EAPOL);
+         CASE_RETURN_STRING(TRACE_CODE_TL_RX_CONN_EAPOL);
+         CASE_RETURN_STRING(TRACE_CODE_TL_REGISTER_STA_CLIENT);
+         CASE_RETURN_STRING(TRACE_CODE_TL_SUSPEND_DATA_TX);
+         CASE_RETURN_STRING(TRACE_CODE_TL_RESUME_DATA_TX);
+         CASE_RETURN_STRING(TRACE_CODE_TL_STA_PKT_PENDING);
+         CASE_RETURN_STRING(TRACE_CODE_TL_QUEUE_CURRENT);
+         CASE_RETURN_STRING(TRACE_CODE_TL_REORDER_TIMER_EXP_CB);
+         CASE_RETURN_STRING(TRACE_CODE_TL_BA_SESSION_DEL);
+         default:
+               return ("UNKNOWN");
+               break;
+    }
+}
+
+void tlTraceDump(void *pMac, tpvosTraceRecord pRecord, v_U16_t recIndex)
+{
+   TLLOGE( VOS_TRACE (VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
+                       "%04d    %012u  S%-3d    %-14s  %-30s(0x%x)",
+                       recIndex, pRecord->time, pRecord->session, "  TL Event:  ",
+                       tlTraceGetEventString (pRecord->code), pRecord->data));
+}
+
+void tlTraceInit()
+{
+   vosTraceRegister(VOS_MODULE_ID_TL, (tpvosTraceCb)&tlTraceDump);
+}
diff --git a/Kbuild b/Kbuild
index e0537af..c0bb1ab 100644
--- a/Kbuild
+++ b/Kbuild
@@ -367,7 +367,8 @@
 
 TL_OBJS := 	$(TL_SRC_DIR)/wlan_qct_tl.o \
 		$(TL_SRC_DIR)/wlan_qct_tl_ba.o \
-		$(TL_SRC_DIR)/wlan_qct_tl_hosupport.o
+		$(TL_SRC_DIR)/wlan_qct_tl_hosupport.o \
+               $(TL_SRC_DIR)/wlan_qct_tl_trace.o
 
 ############ VOSS ############
 VOSS_DIR :=	CORE/VOSS