wlan: enhance HDD and TL logging in data path
Enhance MTRACE logging in TL so that we know
exactly when TL is notifed of a packet in HDD
Add some MTRACE logs in HDD when applying
backpressure to OS queues and when the backpressure
is removed.
Change-Id: Ife89e8425fded83b8a39ca11e16836b4df9ced08
CRs-Fixed: 770925
diff --git a/CORE/HDD/inc/wlan_hdd_trace.h b/CORE/HDD/inc/wlan_hdd_trace.h
index 191ec49..0737996 100644
--- a/CORE/HDD/inc/wlan_hdd_trace.h
+++ b/CORE/HDD/inc/wlan_hdd_trace.h
@@ -97,7 +97,10 @@
TRACE_CODE_HDD_CFG80211_SET_REKEY_DATA,
TRACE_CODE_HDD_UNSUPPORTED_IOCTL,
TRACE_CODE_HDD_SETROAMSCANCHANNELMINTIME_IOCTL,
- TRACE_CODE_HDD_GETROAMSCANCHANNELMINTIME_IOCTL
+ TRACE_CODE_HDD_GETROAMSCANCHANNELMINTIME_IOCTL,
+ TRACE_CODE_HDD_STOP_NETDEV,
+ TRACE_CODE_HDD_WAKE_NETDEV,
+ TRACE_CODE_HDD_FLUSH_TX_QUEUES,
};
extern void hddTraceDump(void *pMac, tpvosTraceRecord pRecord, tANI_U16 recIndex);
diff --git a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
index a5b02a6..a2fa7a1 100644
--- a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
@@ -59,6 +59,7 @@
#include <mach/subsystem_restart.h>
#endif
#include "sapInternal.h"
+#include "wlan_hdd_trace.h"
/*---------------------------------------------------------------------------
Preprocessor definitions and constants
@@ -414,6 +415,8 @@
pSapCtx->aStaInfo[STAId].txSuspended[ac] = VOS_TRUE;
netif_stop_subqueue(dev, skb_get_queue_mapping(skb));
txSuspended = VOS_TRUE;
+ MTRACE(vos_trace(VOS_MODULE_ID_HDD, TRACE_CODE_HDD_STOP_NETDEV,
+ pAdapter->sessionId, ac));
}
/* If 3/4th of the max queue size is used then enable the flag.
@@ -1377,6 +1380,8 @@
"%s: TX queue re-enabled", __func__);
pSapCtx->aStaInfo[STAId].txSuspended[ac] = VOS_FALSE;
netif_wake_subqueue(pAdapter->dev, skb_get_queue_mapping(skb));
+ MTRACE(vos_trace(VOS_MODULE_ID_HDD, TRACE_CODE_HDD_WAKE_NETDEV,
+ pAdapter->sessionId, ac));
}
// We're giving the packet to TL so consider it transmitted from
diff --git a/CORE/HDD/src/wlan_hdd_tx_rx.c b/CORE/HDD/src/wlan_hdd_tx_rx.c
index 33ff895..3985fad 100644
--- a/CORE/HDD/src/wlan_hdd_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_tx_rx.c
@@ -67,6 +67,7 @@
#include "vos_utils.h"
#endif
#include "sapInternal.h"
+#include "wlan_hdd_trace.h"
/*---------------------------------------------------------------------------
Preprocessor definitions and constants
-------------------------------------------------------------------------*/
@@ -204,6 +205,9 @@
pAdapter->isVosLowResource = VOS_FALSE;
+ MTRACE(vos_trace(VOS_MODULE_ID_HDD, TRACE_CODE_HDD_FLUSH_TX_QUEUES,
+ pAdapter->sessionId, 0));
+
while (++i != NUM_TX_QUEUES)
{
//Free up any packets in the Tx queue
@@ -865,6 +869,8 @@
netif_tx_stop_queue(netdev_get_tx_queue(dev, skb_get_queue_mapping(skb)));
pAdapter->isTxSuspended[ac] = VOS_TRUE;
txSuspended = VOS_TRUE;
+ MTRACE(vos_trace(VOS_MODULE_ID_HDD, TRACE_CODE_HDD_STOP_NETDEV,
+ pAdapter->sessionId, ac));
}
/* If 3/4th of the max queue size is used then enable the flag.
@@ -1764,6 +1770,8 @@
pAdapter->isTxSuspended[ac] = VOS_FALSE;
netif_tx_wake_queue(netdev_get_tx_queue(pAdapter->dev,
skb_get_queue_mapping(skb) ));
+ MTRACE(vos_trace(VOS_MODULE_ID_HDD, TRACE_CODE_HDD_WAKE_NETDEV,
+ pAdapter->sessionId, ac));
}
diff --git a/CORE/TL/src/wlan_qct_tl.c b/CORE/TL/src/wlan_qct_tl.c
index 5a3b4b7..67c9db4 100644
--- a/CORE/TL/src/wlan_qct_tl.c
+++ b/CORE/TL/src/wlan_qct_tl.c
@@ -2082,6 +2082,11 @@
vos_atomic_set_U8( &pClientSTA->ucPktPending, 1);
+ MTRACE(vos_trace(VOS_MODULE_ID_TL, TRACE_CODE_TL_STA_PKT_PENDING, ucSTAId,
+ (pTLCb->ucTxSuspended << 31) |
+ ((pTLCb->uResCount >= WDA_TLI_MIN_RES_DATA) << 30) |
+ pClientSTA->tlState));
+
/*------------------------------------------------------------------------
Check if there are enough resources for transmission and tx is not
suspended.
@@ -2089,8 +2094,6 @@
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"));
@@ -6907,13 +6910,12 @@
WLANTL_CbType* pTLCb = NULL;
WLANTL_STAClientType* pClientSTA = NULL;
int i = 0;
- tWDA_CbContext *pWDA = NULL;
+ v_U8_t uFlowMask; // TX FlowMask from WDA
TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_FATAL,
"WLAN TL: %s Enter ", __func__));
pTLCb = VOS_GET_TL_CB(pVosContext);
- pWDA = (tWDA_CbContext *)vos_get_global_context(VOS_MODULE_ID_WDA, pVosContext);
if ( NULL == pVosContext || NULL == pTLCb )
{
@@ -6922,11 +6924,12 @@
return;
}
- if (NULL != pWDA)
+ if (VOS_STATUS_SUCCESS == WDA_DS_GetTxFlowMask(pVosContext, &uFlowMask))
{
TLLOGE(VOS_TRACE(VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
- "WDA uTxFlowMask: %d", pWDA->uTxFlowMask));
+ "WDA uTxFlowMask: 0x%x", uFlowMask));
}
+
TLLOGE(VOS_TRACE(VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
"************************TL DUMP INFORMATION**************"));