From d61006cb6b6b047a0a873a1efa5b3d484babd5b1 Mon Sep 17 00:00:00 2001 From: Vijay Pamidipati Date: Fri, 20 Jan 2017 19:35:57 +0530 Subject: [PATCH] qcacmn: Fix the offset for HAL Tx Rate stats and enable stats by default Add a WAR to not use macros from Hardware Header file. Will be removed once it is fixed in Hardware header file. Change-Id: I73152645c89813dd65c23d9060e8b6fad1d88678 CRs-Fixed: 1112381 --- dp/wifi3.0/dp_tx.c | 56 ++++++++++++++++++++------------------------ hal/wifi3.0/hal_tx.h | 15 ++++++++++-- 2 files changed, 39 insertions(+), 32 deletions(-) diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c index 1d0614df13fa..b2097b292945 100644 --- a/dp/wifi3.0/dp_tx.c +++ b/dp/wifi3.0/dp_tx.c @@ -1217,32 +1217,33 @@ static inline void dp_tx_comp_process_tx_status(struct dp_tx_desc_s *tx_desc) struct hal_tx_completion_status ts; qdf_mem_zero(&ts, sizeof(struct hal_tx_completion_status)); hal_tx_comp_get_status(&tx_desc->comp, &ts); - QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG, - "--------------------\n" - "Tx Completion Stats:\n" - "--------------------\n" - "ack_frame_rssi = %d\n" - "first_msdu = %d\n" - "last_msdu = %d\n" - "msdu_part_of_amsdu = %d\n" - "bw = %d\n" - "pkt_type = %d\n" - "stbc = %d\n" - "ldpc = %d\n" - "sgi = %d\n" - "mcs = %d\n" - "ofdma = %d\n" - "tones_in_ru = %d\n" - "tsf = %d\n" - "ppdu_id = %d\n" - "transmit_cnt = %d\n" - "tid = %d\n" - "peer_id = %d\n", + QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO, + "-------------------- \n" + "Tx Completion Stats: \n" + "-------------------- \n" + "ack_frame_rssi = %d \n" + "first_msdu = %d \n" + "last_msdu = %d \n" + "msdu_part_of_amsdu = %d \n" + "rate_stats valid = %d \n" + "bw = %d \n" + "pkt_type = %d \n" + "stbc = %d \n" + "ldpc = %d \n" + "sgi = %d \n" + "mcs = %d \n" + "ofdma = %d \n" + "tones_in_ru = %d \n" + "tsf = %d \n" + "ppdu_id = %d \n" + "transmit_cnt = %d \n" + "tid = %d \n" + "peer_id = %d \n", ts.ack_frame_rssi, ts.first_msdu, ts.last_msdu, - ts.msdu_part_of_amsdu, ts.bw, ts.pkt_type, - ts.stbc, ts.ldpc, ts.sgi, - ts.mcs, ts.ofdma, ts.tones_in_ru, - ts.tsf, ts.ppdu_id, ts.transmit_cnt, ts.tid, + ts.msdu_part_of_amsdu, ts.valid, ts.bw, + ts.pkt_type, ts.stbc, ts.ldpc, ts.sgi, + ts.mcs, ts.ofdma, ts.tones_in_ru, ts.tsf, + ts.ppdu_id, ts.transmit_cnt, ts.tid, ts.peer_id); if (qdf_unlikely(tx_desc->vdev->mesh_vdev)) @@ -1651,7 +1652,6 @@ QDF_STATUS dp_tx_soc_attach(struct dp_soc *soc) } /* - * Keep the processing of completion stats disabled by default. * todo - Add a runtime config option to enable this. */ /* @@ -1659,11 +1659,7 @@ QDF_STATUS dp_tx_soc_attach(struct dp_soc *soc) * only for NPR EMU, should be removed, once NPR platforms * are stable. */ -#ifdef QCA_WIFI_NAPIER_EMULATION soc->process_tx_status = 1; -#else - soc->process_tx_status = 0; -#endif /* Initialize Default DSCP-TID mapping table in TCL */ hal_tx_set_dscp_tid_map(soc->hal_soc, default_dscp_tid_map, diff --git a/hal/wifi3.0/hal_tx.h b/hal/wifi3.0/hal_tx.h index cf3cc7511ef6..641ed5ccd472 100644 --- a/hal/wifi3.0/hal_tx.h +++ b/hal/wifi3.0/hal_tx.h @@ -25,6 +25,12 @@ #include "hal_api.h" #include "wcss_version.h" + +#define WBM_RELEASE_RING_5_TX_RATE_STATS_OFFSET 0x00000014 +#define WBM_RELEASE_RING_5_TX_RATE_STATS_LSB 0 +#define WBM_RELEASE_RING_5_TX_RATE_STATS_MASK 0xffffffff + + /*--------------------------------------------------------------------------- Preprocessor definitions and constants ---------------------------------------------------------------------------*/ @@ -155,7 +161,8 @@ struct hal_tx_completion_status { sgi:2, mcs:2, ofdma:1, - tones_in_ru:10; + tones_in_ru:10, + valid:1; uint32_t tsf; uint32_t ppdu_id; uint8_t transmit_cnt; @@ -851,13 +858,17 @@ static inline void hal_tx_comp_get_status(void *desc, ts->peer_id = HAL_TX_DESC_GET(desc, WBM_RELEASE_RING_7, SW_PEER_ID); ts->tid = HAL_TX_DESC_GET(desc, WBM_RELEASE_RING_7, TID); + ts->transmit_cnt = HAL_TX_DESC_GET(desc, WBM_RELEASE_RING_3, + TRANSMIT_COUNT); - rate_stats = HAL_TX_DESC_GET(desc, WBM_RELEASE_RING_6, + rate_stats = HAL_TX_DESC_GET(desc, WBM_RELEASE_RING_5, TX_RATE_STATS_INFO_TX_RATE_STATS); rate_stats_valid = HAL_TX_MS(TX_RATE_STATS_INFO_0, TX_RATE_STATS_INFO_VALID, rate_stats); + ts->valid = rate_stats_valid; + if (rate_stats_valid) { ts->bw = HAL_TX_MS(TX_RATE_STATS_INFO_0, TRANSMIT_BW, rate_stats);