From 02281da645c7e27af04b83ab491b0349d43b018f Mon Sep 17 00:00:00 2001 From: Mohit Khanna Date: Sun, 27 Aug 2017 09:40:55 -0700 Subject: [PATCH] qcacld-3.0: add DPTRACE Enhancements - Phase 2 Change data packets printing to one line Add msdu-id to TX packets Increase data packets size to include the complete IP packets Indication/print when the throttling occurs Change-Id: I4831c517b41f81003b8d28448a3093d911ac978c CRs-Fixed: 2157768 --- core/dp/txrx/ol_tx.c | 35 ++++++++++--- core/hdd/src/wlan_hdd_softap_tx_rx.c | 45 +++-------------- core/hdd/src/wlan_hdd_tx_rx.c | 73 ++++------------------------ 3 files changed, 46 insertions(+), 107 deletions(-) diff --git a/core/dp/txrx/ol_tx.c b/core/dp/txrx/ol_tx.c index b6f3363ff3c0..28b7642881f4 100644 --- a/core/dp/txrx/ol_tx.c +++ b/core/dp/txrx/ol_tx.c @@ -510,6 +510,33 @@ qdf_nbuf_t ol_tx_ll(ol_txrx_vdev_handle vdev, qdf_nbuf_t msdu_list) } #endif /* TSO */ +/** + * ol_tx_trace_pkt() - Trace TX packet at OL layer + * + * @skb: skb to be traced + * @msdu_id: msdu_id of the packet + * @vdev_id: vdev_id of the packet + * + * Return: None + */ +static inline void ol_tx_trace_pkt(qdf_nbuf_t skb, uint16_t msdu_id, + uint8_t vdev_id) +{ + DPTRACE(qdf_dp_trace_ptr(skb, + QDF_DP_TRACE_TXRX_FAST_PACKET_PTR_RECORD, + QDF_TRACE_DEFAULT_PDEV_ID, + qdf_nbuf_data_addr(skb), + sizeof(qdf_nbuf_data(skb)), + msdu_id, vdev_id)); + + qdf_dp_trace_log_pkt(vdev_id, skb, QDF_TX, QDF_TRACE_DEFAULT_PDEV_ID); + + qdf_dp_trace_set_track(skb, QDF_TX); + DPTRACE(qdf_dp_trace_data_pkt(skb, QDF_TRACE_DEFAULT_PDEV_ID, + QDF_DP_TRACE_TX_PACKET_RECORD, + msdu_id, QDF_TX)); +} + #ifdef WLAN_FEATURE_FASTPATH /** * ol_tx_prepare_ll_fast() Alloc and prepare Tx descriptor @@ -778,12 +805,8 @@ ol_tx_ll_fast(ol_txrx_vdev_handle vdev, qdf_nbuf_t msdu_list) if (segments) qdf_nbuf_inc_users(msdu); - DPTRACE(qdf_dp_trace_ptr(msdu, - QDF_DP_TRACE_TXRX_FAST_PACKET_PTR_RECORD, - QDF_TRACE_DEFAULT_PDEV_ID, - qdf_nbuf_data_addr(msdu), - sizeof(qdf_nbuf_data(msdu)), - tx_desc->id, vdev->vdev_id)); + ol_tx_trace_pkt(msdu, tx_desc->id, + vdev->vdev_id); /* * If debug display is enabled, show the meta * data being downloaded to the target via the diff --git a/core/hdd/src/wlan_hdd_softap_tx_rx.c b/core/hdd/src/wlan_hdd_softap_tx_rx.c index 4e3c0d0818b7..70f3d8db59fa 100644 --- a/core/hdd/src/wlan_hdd_softap_tx_rx.c +++ b/core/hdd/src/wlan_hdd_softap_tx_rx.c @@ -569,24 +569,13 @@ static netdev_tx_t __hdd_softap_hard_start_xmit(struct sk_buff *skb, hdd_inspect_dhcp_packet(adapter, STAId, skb, QDF_TX); hdd_event_eapol_log(skb, QDF_TX); - qdf_dp_trace_log_pkt(adapter->session_id, skb, QDF_TX, - QDF_TRACE_DEFAULT_PDEV_ID); QDF_NBUF_CB_TX_PACKET_TRACK(skb) = QDF_NBUF_TX_PKT_DATA_TRACK; QDF_NBUF_UPDATE_TX_PKT_COUNT(skb, QDF_NBUF_TX_PKT_HDD); - qdf_dp_trace_set_track(skb, QDF_TX); DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_HDD_TX_PACKET_PTR_RECORD, QDF_TRACE_DEFAULT_PDEV_ID, qdf_nbuf_data_addr(skb), sizeof(qdf_nbuf_data(skb)), QDF_TX)); - DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_HDD_TX_PACKET_RECORD, - QDF_TRACE_DEFAULT_PDEV_ID, (uint8_t *)skb->data, - qdf_nbuf_len(skb), QDF_TX)); - if (qdf_nbuf_len(skb) > QDF_DP_TRACE_RECORD_SIZE) - DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_HDD_TX_PACKET_RECORD, - QDF_TRACE_DEFAULT_PDEV_ID, - (uint8_t *)&skb->data[QDF_DP_TRACE_RECORD_SIZE], - (qdf_nbuf_len(skb)-QDF_DP_TRACE_RECORD_SIZE), QDF_TX)); /* check whether need to linearize skb, like non-linear udp data */ if (hdd_skb_nontso_linearize(skb) != QDF_STATUS_SUCCESS) { @@ -614,14 +603,9 @@ drop_pkt_and_release_skb: qdf_net_buf_debug_release_skb(skb); drop_pkt: - DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_DROP_PACKET_RECORD, - QDF_TRACE_DEFAULT_PDEV_ID, (uint8_t *)skb->data, - qdf_nbuf_len(skb), QDF_TX)); - if (qdf_nbuf_len(skb) > QDF_DP_TRACE_RECORD_SIZE) - DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_DROP_PACKET_RECORD, - QDF_TRACE_DEFAULT_PDEV_ID, - (uint8_t *)&skb->data[QDF_DP_TRACE_RECORD_SIZE], - (qdf_nbuf_len(skb)-QDF_DP_TRACE_RECORD_SIZE), QDF_TX)); + qdf_dp_trace_data_pkt(skb, QDF_TRACE_DEFAULT_PDEV_ID, + QDF_DP_TRACE_DROP_PACKET_RECORD, 0, + QDF_TX); kfree_skb(skb); drop_pkt_accounting: @@ -844,8 +828,8 @@ QDF_STATUS hdd_softap_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf) struct sk_buff *next = NULL; struct hdd_context *hdd_ctx = NULL; struct qdf_mac_addr *src_mac; + uint8_t staid; - bool proto_pkt_logged = false; /* Sanity check on inputs */ if (unlikely((NULL == context) || (NULL == rxBuf))) { @@ -913,28 +897,15 @@ QDF_STATUS hdd_softap_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf) hdd_inspect_dhcp_packet(adapter, staid, skb, QDF_RX); hdd_event_eapol_log(skb, QDF_RX); - proto_pkt_logged = qdf_dp_trace_log_pkt(adapter->session_id, - skb, QDF_RX, - QDF_TRACE_DEFAULT_PDEV_ID); + qdf_dp_trace_log_pkt(adapter->session_id, + skb, QDF_RX, QDF_TRACE_DEFAULT_PDEV_ID); DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_RX_HDD_PACKET_PTR_RECORD, QDF_TRACE_DEFAULT_PDEV_ID, qdf_nbuf_data_addr(skb), sizeof(qdf_nbuf_data(skb)), QDF_RX)); - if (!proto_pkt_logged) { - DPTRACE(qdf_dp_trace(skb, - QDF_DP_TRACE_HDD_RX_PACKET_RECORD, - QDF_TRACE_DEFAULT_PDEV_ID, - (uint8_t *)skb->data, qdf_nbuf_len(skb), - QDF_RX)); - if (qdf_nbuf_len(skb) > QDF_DP_TRACE_RECORD_SIZE) - DPTRACE(qdf_dp_trace(skb, - QDF_DP_TRACE_HDD_RX_PACKET_RECORD, - QDF_TRACE_DEFAULT_PDEV_ID, - (uint8_t *)&skb->data[QDF_DP_TRACE_RECORD_SIZE], - (qdf_nbuf_len(skb)-QDF_DP_TRACE_RECORD_SIZE), - QDF_RX)); - } + DPTRACE(qdf_dp_trace_data_pkt(skb, QDF_TRACE_DEFAULT_PDEV_ID, + QDF_DP_TRACE_RX_PACKET_RECORD, 0, QDF_RX)); skb->protocol = eth_type_trans(skb, skb->dev); diff --git a/core/hdd/src/wlan_hdd_tx_rx.c b/core/hdd/src/wlan_hdd_tx_rx.c index 9c19fa1d349c..47cf9bfefc40 100644 --- a/core/hdd/src/wlan_hdd_tx_rx.c +++ b/core/hdd/src/wlan_hdd_tx_rx.c @@ -877,11 +877,7 @@ static netdev_tx_t __hdd_hard_start_xmit(struct sk_buff *skb, uint8_t STAId; struct hdd_station_ctx *sta_ctx = &adapter->session.station; struct qdf_mac_addr *mac_addr; - bool pkt_proto_logged = false; uint8_t pkt_type = 0; -#ifdef QCA_PKT_PROTO_TRACE - uint8_t proto_type = 0; -#endif struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter); bool is_arp; @@ -1027,19 +1023,6 @@ static netdev_tx_t __hdd_hard_start_xmit(struct sk_buff *skb, skb->queue_mapping = hdd_linux_up_to_ac_map[up]; } -#ifdef QCA_PKT_PROTO_TRACE - if ((hdd_ctx->config->gEnableDebugLog & CDS_PKT_TRAC_TYPE_EAPOL) || - (hdd_ctx->config->gEnableDebugLog & CDS_PKT_TRAC_TYPE_DHCP)) { - proto_type = cds_pkt_get_proto_type(skb, - hdd_ctx->config->gEnableDebugLog, - 0); - if (CDS_PKT_TRAC_TYPE_EAPOL & proto_type) - cds_pkt_trace_buf_update("ST:T:EPL"); - else if (CDS_PKT_TRAC_TYPE_DHCP & proto_type) - cds_pkt_trace_buf_update("ST:T:DHC"); - } -#endif /* QCA_PKT_PROTO_TRACE */ - adapter->stats.tx_bytes += skb->len; mac_addr = (struct qdf_mac_addr *)skb->data; @@ -1052,9 +1035,6 @@ static netdev_tx_t __hdd_hard_start_xmit(struct sk_buff *skb, ++adapter->stats.tx_packets; hdd_event_eapol_log(skb, QDF_TX); - pkt_proto_logged = qdf_dp_trace_log_pkt(adapter->session_id, - skb, QDF_TX, - QDF_TRACE_DEFAULT_PDEV_ID); QDF_NBUF_CB_TX_PACKET_TRACK(skb) = QDF_NBUF_TX_PKT_DATA_TRACK; QDF_NBUF_UPDATE_TX_PKT_COUNT(skb, QDF_NBUF_TX_PKT_HDD); @@ -1064,19 +1044,6 @@ static netdev_tx_t __hdd_hard_start_xmit(struct sk_buff *skb, QDF_TRACE_DEFAULT_PDEV_ID, qdf_nbuf_data_addr(skb), sizeof(qdf_nbuf_data(skb)), QDF_TX)); - if (!pkt_proto_logged) { - DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_HDD_TX_PACKET_RECORD, - QDF_TRACE_DEFAULT_PDEV_ID, (uint8_t *)skb->data, - qdf_nbuf_len(skb), QDF_TX)); - if (qdf_nbuf_len(skb) > QDF_DP_TRACE_RECORD_SIZE) { - DPTRACE(qdf_dp_trace(skb, - QDF_DP_TRACE_HDD_TX_PACKET_RECORD, - QDF_TRACE_DEFAULT_PDEV_ID, - (uint8_t *)&skb->data[QDF_DP_TRACE_RECORD_SIZE], - (qdf_nbuf_len(skb)-QDF_DP_TRACE_RECORD_SIZE), - QDF_TX)); - } - } if (!hdd_is_tx_allowed(skb, STAId)) { QDF_TRACE(QDF_MODULE_ID_HDD_DATA, QDF_TRACE_LEVEL_INFO_HIGH, @@ -1124,17 +1091,9 @@ drop_pkt_and_release_skb: drop_pkt: if (skb) { - DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_DROP_PACKET_RECORD, - QDF_TRACE_DEFAULT_PDEV_ID, (uint8_t *)skb->data, - qdf_nbuf_len(skb), QDF_TX)); - if (qdf_nbuf_len(skb) > QDF_DP_TRACE_RECORD_SIZE) - DPTRACE(qdf_dp_trace(skb, - QDF_DP_TRACE_DROP_PACKET_RECORD, - QDF_TRACE_DEFAULT_PDEV_ID, - (uint8_t *)&skb->data[QDF_DP_TRACE_RECORD_SIZE], - (qdf_nbuf_len(skb)-QDF_DP_TRACE_RECORD_SIZE), - QDF_TX)); - + qdf_dp_trace_data_pkt(skb, QDF_TRACE_DEFAULT_PDEV_ID, + QDF_DP_TRACE_DROP_PACKET_RECORD, 0, + QDF_TX); kfree_skb(skb); } @@ -1762,7 +1721,6 @@ QDF_STATUS hdd_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf) struct qdf_mac_addr *mac_addr; bool wake_lock = false; uint8_t pkt_type = 0; - bool proto_pkt_logged = false; bool track_arp = false; /* Sanity check on inputs */ @@ -1840,9 +1798,8 @@ QDF_STATUS hdd_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf) } hdd_event_eapol_log(skb, QDF_RX); - proto_pkt_logged = qdf_dp_trace_log_pkt(adapter->session_id, - skb, QDF_RX, - QDF_TRACE_DEFAULT_PDEV_ID); + qdf_dp_trace_log_pkt(adapter->session_id, skb, QDF_RX, + QDF_TRACE_DEFAULT_PDEV_ID); DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_RX_HDD_PACKET_PTR_RECORD, @@ -1850,22 +1807,10 @@ QDF_STATUS hdd_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf) qdf_nbuf_data_addr(skb), sizeof(qdf_nbuf_data(skb)), QDF_RX)); - if (!proto_pkt_logged) { - DPTRACE(qdf_dp_trace(skb, - QDF_DP_TRACE_HDD_RX_PACKET_RECORD, - QDF_TRACE_DEFAULT_PDEV_ID, - (uint8_t *)skb->data, qdf_nbuf_len(skb), - QDF_RX)); - if (qdf_nbuf_len(skb) > QDF_DP_TRACE_RECORD_SIZE) - DPTRACE(qdf_dp_trace(skb, - QDF_DP_TRACE_HDD_RX_PACKET_RECORD, - QDF_TRACE_DEFAULT_PDEV_ID, - (uint8_t *) - &skb->data[QDF_DP_TRACE_RECORD_SIZE], - (qdf_nbuf_len(skb) - - QDF_DP_TRACE_RECORD_SIZE), - QDF_RX)); - } + DPTRACE(qdf_dp_trace_data_pkt(skb, QDF_TRACE_DEFAULT_PDEV_ID, + QDF_DP_TRACE_RX_PACKET_RECORD, + 0, QDF_RX)); + mac_addr = (struct qdf_mac_addr *)(skb->data+QDF_MAC_ADDR_SIZE); ucfg_tdls_update_rx_pkt_cnt(adapter->hdd_vdev, mac_addr);