diff options
| author | Himanshu Agarwal <himanaga@qti.qualcomm.com> | 2016-03-11 23:49:21 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-04-21 20:11:01 +0530 |
| commit | 30cae313ac1c7e1377d10042b39b5bdbd0cfad79 (patch) | |
| tree | d1f6c8dbc7362d9db70a0d45a8347f25ea904e33 | |
| parent | a09b34ab4017f4a1bfc2a5c152d411b8fb585317 (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.c | 4 | ||||
| -rw-r--r-- | CORE/CLD_TXRX/TXRX/ol_tx.c | 7 | ||||
| -rw-r--r-- | CORE/CLD_TXRX/TXRX/ol_tx_queue.c | 8 | ||||
| -rw-r--r-- | CORE/CLD_TXRX/TXRX/ol_tx_send.c | 5 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_softap_tx_rx.c | 13 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_tx_rx.c | 28 | ||||
| -rw-r--r-- | CORE/SERVICES/HIF/PCIe/copy_engine.c | 5 | ||||
| -rw-r--r-- | CORE/SERVICES/HIF/PCIe/hif_pci.c | 4 | ||||
| -rw-r--r-- | CORE/SERVICES/HTC/htc_send.c | 5 |
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, |
