Browse Source

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

Vijay Pamidipati 8 years ago
parent
commit
d61006cb6b
2 changed files with 39 additions and 32 deletions
  1. 26 30
      dp/wifi3.0/dp_tx.c
  2. 13 2
      hal/wifi3.0/hal_tx.h

+ 26 - 30
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,

+ 13 - 2
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);