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