summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimanshu Agarwal <himanaga@qti.qualcomm.com>2016-03-11 23:49:21 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-04-21 20:11:01 +0530
commit30cae313ac1c7e1377d10042b39b5bdbd0cfad79 (patch)
treed1f6c8dbc7362d9db70a0d45a8347f25ea904e33
parenta09b34ab4017f4a1bfc2a5c152d411b8fb585317 (diff)
qcacld-2.0: Record data in DP Trace
Store the skb data in DP trace records when packet moves across data path layers. DP trace determines which packet needs to be stored based on the proto type, verbosity etc. Change-Id: I369ad95949ffbc2bc629d0cc3f3d6479249cdd6a CRs-Fixed: 988801
-rw-r--r--CORE/CLD_TXRX/HTT/htt_tx.c4
-rw-r--r--CORE/CLD_TXRX/TXRX/ol_tx.c7
-rw-r--r--CORE/CLD_TXRX/TXRX/ol_tx_queue.c8
-rw-r--r--CORE/CLD_TXRX/TXRX/ol_tx_send.c5
-rw-r--r--CORE/HDD/src/wlan_hdd_softap_tx_rx.c13
-rw-r--r--CORE/HDD/src/wlan_hdd_tx_rx.c28
-rw-r--r--CORE/SERVICES/HIF/PCIe/copy_engine.c5
-rw-r--r--CORE/SERVICES/HIF/PCIe/hif_pci.c4
-rw-r--r--CORE/SERVICES/HTC/htc_send.c5
9 files changed, 78 insertions, 1 deletions
diff --git a/CORE/CLD_TXRX/HTT/htt_tx.c b/CORE/CLD_TXRX/HTT/htt_tx.c
index bfd8aee14aca..5cc2e931b7dd 100644
--- a/CORE/CLD_TXRX/HTT/htt_tx.c
+++ b/CORE/CLD_TXRX/HTT/htt_tx.c
@@ -49,6 +49,7 @@
#include <ol_htt_tx_api.h> /* HTT_TX_DESC_VADDR_OFFSET */
#include <ol_txrx_htt_api.h> /* ol_tx_msdu_id_storage */
#include <htt_internal.h>
+#include "adf_trace.h"
#include <vos_utils.h>
@@ -472,6 +473,9 @@ htt_tx_send_std(
}
NBUF_UPDATE_TX_PKT_COUNT(msdu, NBUF_TX_PKT_HTT);
+ DPTRACE(adf_dp_trace(msdu, ADF_DP_TRACE_HTT_PACKET_PTR_RECORD,
+ (uint8_t *)(adf_nbuf_data(msdu)),
+ sizeof(adf_nbuf_data(msdu))));
if (adf_nbuf_queue_len(&pdev->txnbufq) > 0) {
HTT_TX_NBUF_QUEUE_ADD(pdev, msdu);
diff --git a/CORE/CLD_TXRX/TXRX/ol_tx.c b/CORE/CLD_TXRX/TXRX/ol_tx.c
index e353063ea377..cb78aa61d5b0 100644
--- a/CORE/CLD_TXRX/TXRX/ol_tx.c
+++ b/CORE/CLD_TXRX/TXRX/ol_tx.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2014,2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2014, 2016 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -29,6 +29,7 @@
#include <adf_nbuf.h> /* adf_nbuf_t, etc. */
#include <adf_os_atomic.h> /* adf_os_atomic_read, etc. */
#include <adf_os_util.h> /* adf_os_unlikely */
+#include "adf_trace.h"
/* APIs for other modules */
#include <htt.h> /* HTT_TX_EXT_TID_MGMT */
@@ -218,6 +219,10 @@ ol_tx_vdev_pause_queue_append(
{
adf_nbuf_t next = adf_nbuf_next(msdu_list);
NBUF_UPDATE_TX_PKT_COUNT(msdu_list, NBUF_TX_PKT_TXRX_ENQUEUE);
+ DPTRACE(adf_dp_trace(msdu_list,
+ ADF_DP_TRACE_TXRX_QUEUE_PACKET_PTR_RECORD,
+ (uint8_t *)(adf_nbuf_data(msdu_list)),
+ sizeof(adf_nbuf_data(msdu_list))));
vdev->ll_pause.txq.depth++;
if (!vdev->ll_pause.txq.head) {
diff --git a/CORE/CLD_TXRX/TXRX/ol_tx_queue.c b/CORE/CLD_TXRX/TXRX/ol_tx_queue.c
index 5278fb644280..b3dba2e31397 100644
--- a/CORE/CLD_TXRX/TXRX/ol_tx_queue.c
+++ b/CORE/CLD_TXRX/TXRX/ol_tx_queue.c
@@ -43,6 +43,7 @@
#include <ol_txrx.h> /* ol_tx_desc_pool_size_hl */
#include <adf_os_types.h> /* a_bool_t */
#include <ol_txrx_peer_find.h>
+#include "adf_trace.h"
#if defined(CONFIG_HL_SUPPORT)
@@ -1056,6 +1057,9 @@ ol_txrx_vdev_pause(ol_txrx_vdev_handle vdev, u_int32_t reason)
adf_os_spin_unlock_bh(&vdev->ll_pause.mutex);
}
+ DPTRACE(adf_dp_trace(NULL, ADF_DP_TRACE_VDEV_PAUSE,
+ NULL, 0));
+
TX_SCHED_DEBUG_PRINT("Leave %s\n", __func__);
}
@@ -1111,6 +1115,10 @@ ol_txrx_vdev_unpause(ol_txrx_vdev_handle vdev, u_int32_t reason)
adf_os_spin_unlock_bh(&vdev->ll_pause.mutex);
}
}
+
+ DPTRACE(adf_dp_trace(NULL, ADF_DP_TRACE_VDEV_UNPAUSE,
+ NULL, 0));
+
TX_SCHED_DEBUG_PRINT("Leave %s\n", __func__);
}
diff --git a/CORE/CLD_TXRX/TXRX/ol_tx_send.c b/CORE/CLD_TXRX/TXRX/ol_tx_send.c
index dbe7c06b5a2b..8e4d814a78f6 100644
--- a/CORE/CLD_TXRX/TXRX/ol_tx_send.c
+++ b/CORE/CLD_TXRX/TXRX/ol_tx_send.c
@@ -30,6 +30,7 @@
#include <adf_os_time.h> /* adf_os_ticks, etc. */
#include <adf_nbuf.h> /* adf_nbuf_t */
#include <adf_net_types.h> /* ADF_NBUF_TX_EXT_TID_INVALID */
+#include "adf_trace.h"
#include <queue.h> /* TAILQ */
#ifdef QCA_COMPUTE_TX_DELAY
@@ -219,6 +220,10 @@ ol_tx_send(
msdu_credit_consumed = ol_tx_send_base(pdev, tx_desc, msdu);
id = ol_tx_desc_id(pdev, tx_desc);
NBUF_UPDATE_TX_PKT_COUNT(msdu, NBUF_TX_PKT_TXRX);
+ DPTRACE(adf_dp_trace(msdu, ADF_DP_TRACE_TXRX_PACKET_PTR_RECORD,
+ (uint8_t *)(adf_nbuf_data(msdu)),
+ sizeof(adf_nbuf_data(msdu))));
+
failed = htt_tx_send_std(pdev->htt_pdev, msdu, id);
if (adf_os_unlikely(failed)) {
OL_TX_TARGET_CREDIT_INCR_INT(pdev, msdu_credit_consumed);
diff --git a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
index 48caa368879c..04f80e23b72b 100644
--- a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
@@ -52,6 +52,7 @@
#ifdef IPA_OFFLOAD
#include <wlan_hdd_ipa.h>
#endif
+#include "adf_trace.h"
/*---------------------------------------------------------------------------
Preprocessor definitions and constants
-------------------------------------------------------------------------*/
@@ -383,6 +384,16 @@ int __hdd_softap_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
NBUF_SET_PACKET_TRACK(skb, NBUF_TX_PKT_DATA_TRACK);
NBUF_UPDATE_TX_PKT_COUNT(skb, NBUF_TX_PKT_HDD);
+ adf_dp_trace_set_track(skb);
+ DPTRACE(adf_dp_trace(skb, ADF_DP_TRACE_HDD_PACKET_PTR_RECORD,
+ (uint8_t *)skb->data, sizeof(skb->data)));
+ DPTRACE(adf_dp_trace(skb, ADF_DP_TRACE_HDD_PACKET_RECORD,
+ (uint8_t *)skb->data, skb->len));
+ if (skb->len > ADF_DP_TRACE_RECORD_SIZE)
+ DPTRACE(adf_dp_trace(skb, ADF_DP_TRACE_HDD_PACKET_RECORD,
+ (uint8_t *)&skb->data[ADF_DP_TRACE_RECORD_SIZE],
+ (skb->len - ADF_DP_TRACE_RECORD_SIZE)));
+
skb = skb_next;
continue;
@@ -448,6 +459,8 @@ static void __hdd_softap_tx_timeout(struct net_device *dev)
hdd_adapter_t *adapter = WLAN_HDD_GET_PRIV_PTR(dev);
hdd_context_t *hdd_ctx;
+ DPTRACE(adf_dp_trace(NULL, ADF_DP_TRACE_HDD_SOFTAP_TX_TIMEOUT,
+ NULL, 0));
VOS_TRACE( VOS_MODULE_ID_HDD_SAP_DATA, VOS_TRACE_LEVEL_ERROR,
"%s: Transmission timeout occurred", __func__);
diff --git a/CORE/HDD/src/wlan_hdd_tx_rx.c b/CORE/HDD/src/wlan_hdd_tx_rx.c
index dfa529f6e9f6..d317bf2ab272 100644
--- a/CORE/HDD/src/wlan_hdd_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_tx_rx.c
@@ -65,6 +65,7 @@
#ifdef IPA_OFFLOAD
#include <wlan_hdd_ipa.h>
#endif
+#include "adf_trace.h"
#include "wlan_hdd_nan_datapath.h"
@@ -398,6 +399,13 @@ void hdd_tx_resume_cb(void *adapter_context,
*/
void hdd_drop_skb(hdd_adapter_t *adapter, struct sk_buff *skb)
{
+ DPTRACE(adf_dp_trace(skb, ADF_DP_TRACE_DROP_PACKET_RECORD,
+ (uint8_t *)skb->data, skb->len));
+ if (skb->len > ADF_DP_TRACE_RECORD_SIZE)
+ DPTRACE(adf_dp_trace(skb, ADF_DP_TRACE_DROP_PACKET_RECORD,
+ (uint8_t *)&skb->data[ADF_DP_TRACE_RECORD_SIZE],
+ (skb->len - ADF_DP_TRACE_RECORD_SIZE)));
+
++adapter->stats.tx_dropped;
++adapter->hdd_stats.hddTxRxStats.txXmitDropped;
kfree_skb(skb);
@@ -418,6 +426,14 @@ void hdd_drop_skb_list(hdd_adapter_t *adapter, struct sk_buff *skb,
struct sk_buff *skb_next;
while (skb) {
+ DPTRACE(adf_dp_trace(skb, ADF_DP_TRACE_DROP_PACKET_RECORD,
+ (uint8_t *)skb->data, skb->len));
+ if (skb->len > ADF_DP_TRACE_RECORD_SIZE)
+ DPTRACE(adf_dp_trace(skb,
+ ADF_DP_TRACE_DROP_PACKET_RECORD,
+ (uint8_t *)&skb->data[ADF_DP_TRACE_RECORD_SIZE],
+ (skb->len - ADF_DP_TRACE_RECORD_SIZE)));
+
++adapter->stats.tx_dropped;
++adapter->hdd_stats.hddTxRxStats.txXmitDropped;
if (is_update_ac_stats == TRUE) {
@@ -664,6 +680,16 @@ int __hdd_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
NBUF_SET_PACKET_TRACK(skb, NBUF_TX_PKT_DATA_TRACK);
NBUF_UPDATE_TX_PKT_COUNT(skb, NBUF_TX_PKT_HDD);
+ adf_dp_trace_set_track(skb);
+ DPTRACE(adf_dp_trace(skb, ADF_DP_TRACE_HDD_PACKET_PTR_RECORD,
+ (uint8_t *)skb->data, sizeof(skb->data)));
+ DPTRACE(adf_dp_trace(skb, ADF_DP_TRACE_HDD_PACKET_RECORD,
+ (uint8_t *)skb->data, skb->len));
+ if (skb->len > ADF_DP_TRACE_RECORD_SIZE)
+ DPTRACE(adf_dp_trace(skb, ADF_DP_TRACE_HDD_PACKET_RECORD,
+ (uint8_t *)&skb->data[ADF_DP_TRACE_RECORD_SIZE],
+ (skb->len - ADF_DP_TRACE_RECORD_SIZE)));
+
skb = skb_next;
continue;
@@ -759,6 +785,8 @@ static void __hdd_tx_timeout(struct net_device *dev)
hddLog(LOGE, FL("Transmission timeout occurred jiffies %lu trans_start %lu"),
jiffies, dev->trans_start);
+ DPTRACE(adf_dp_trace(NULL, ADF_DP_TRACE_HDD_TX_TIMEOUT,
+ NULL, 0));
/*
* Getting here implies we disabled the TX queues for too long. Queues are
* disabled either because of disassociation or low resource scenarios. In
diff --git a/CORE/SERVICES/HIF/PCIe/copy_engine.c b/CORE/SERVICES/HIF/PCIe/copy_engine.c
index 77f82d3482c3..e2a74cd25fbb 100644
--- a/CORE/SERVICES/HIF/PCIe/copy_engine.c
+++ b/CORE/SERVICES/HIF/PCIe/copy_engine.c
@@ -39,6 +39,7 @@
#include "regtable.h"
#include <vos_getBin.h>
#include "epping_main.h"
+#include "adf_trace.h"
#define CE_POLL_TIMEOUT 10 /* ms */
@@ -424,6 +425,10 @@ CE_sendlist_send(struct CE_handle *copyeng,
A_ASSERT(status == A_OK);
NBUF_UPDATE_TX_PKT_COUNT((adf_nbuf_t)per_transfer_context,
NBUF_TX_PKT_CE);
+ DPTRACE(adf_dp_trace((adf_nbuf_t)per_transfer_context,
+ ADF_DP_TRACE_CE_PACKET_PTR_RECORD,
+ (uint8_t *)(((adf_nbuf_t)per_transfer_context)->data),
+ sizeof(((adf_nbuf_t)per_transfer_context)->data)));
} else {
/*
* Probably not worth the additional complexity to support
diff --git a/CORE/SERVICES/HIF/PCIe/hif_pci.c b/CORE/SERVICES/HIF/PCIe/hif_pci.c
index ec461e68bea9..d65c9f3d920e 100644
--- a/CORE/SERVICES/HIF/PCIe/hif_pci.c
+++ b/CORE/SERVICES/HIF/PCIe/hif_pci.c
@@ -61,6 +61,7 @@
#ifdef CONFIG_PCI_MSM
#include <linux/msm_pcie.h>
#endif
+#include "adf_trace.h"
/* use credit flow control over HTC */
unsigned int htc_credit_flow = 1;
@@ -372,6 +373,9 @@ HIFSend_head(HIF_DEVICE *hif_device,
}
NBUF_UPDATE_TX_PKT_COUNT(nbuf, NBUF_TX_PKT_HIF);
+ DPTRACE(adf_dp_trace(nbuf, ADF_DP_TRACE_HIF_PACKET_PTR_RECORD,
+ (uint8_t *)(adf_nbuf_data(nbuf)),
+ sizeof(adf_nbuf_data(nbuf))));
status = CE_sendlist_send(ce_hdl, nbuf, &sendlist, transfer_id);
A_ASSERT(status == A_OK);
diff --git a/CORE/SERVICES/HTC/htc_send.c b/CORE/SERVICES/HTC/htc_send.c
index 74a53eb3ac15..474e06acca9d 100644
--- a/CORE/SERVICES/HTC/htc_send.c
+++ b/CORE/SERVICES/HTC/htc_send.c
@@ -33,6 +33,7 @@
#include <adf_os_mem.h> /* adf_os_mem_alloc */
#include <vos_getBin.h>
#include "epping_main.h"
+#include "adf_trace.h"
#define HTC_DATA_RESOURCE_THRS 256
#define HTC_DATA_MINDESC_PERPACKET 2
@@ -1324,6 +1325,10 @@ A_STATUS HTCSendDataPkt(HTC_HANDLE HTCHandle, adf_nbuf_t netbuf, int Epid,
pEndpoint->SeqNo++;
NBUF_UPDATE_TX_PKT_COUNT(netbuf, NBUF_TX_PKT_HTC);
+ DPTRACE(adf_dp_trace(netbuf, ADF_DP_TRACE_HTC_PACKET_PTR_RECORD,
+ (uint8_t *)(adf_nbuf_data(netbuf)),
+ sizeof(adf_nbuf_data(netbuf))));
+
status = HIFSend_head(target->hif_dev,
pEndpoint->UL_PipeID,
pEndpoint->Id,