Sfoglia il codice sorgente

qcacmn: Maintain SG/TSO desc_cnt at pdev stats

Maintain SG/TSO desc_cnt at pdev stats instead of ingress
stats to support legacy stats and change the fw_rem counter
to cdp_pkt_info to have packets and bytes information
for legacy platforms as part of convergence effort.

Change-Id: Ib908e8d1c1d78d191418d3884f41f981ba002b54
Pranita Solanke 6 anni fa
parent
commit
0588114986
4 ha cambiato i file con 28 aggiunte e 18 eliminazioni
  1. 5 5
      dp/inc/cdp_txrx_stats_struct.h
  2. 7 3
      dp/wifi3.0/dp_internal.h
  3. 12 6
      dp/wifi3.0/dp_main.c
  4. 4 4
      dp/wifi3.0/dp_tx.c

+ 5 - 5
dp/inc/cdp_txrx_stats_struct.h

@@ -267,7 +267,7 @@ struct cdp_tx_stats {
 	uint32_t excess_retries_per_ac[WME_AC_MAX];
 
 	struct {
-		uint32_t fw_rem;
+		struct cdp_pkt_info fw_rem;
 		uint32_t fw_rem_notx;
 		uint32_t fw_rem_tx;
 		uint32_t age_out;
@@ -414,12 +414,10 @@ struct cdp_rx_stats {
  * @num_seg: No of segments in TSO packets
  * @tso_pkt:total no of TSO packets
  * @non_tso_pkts: non - TSO packets
- * @tso_desc_cnt: TSO descriptors
  * @dropped_host: TSO packets dropped by host
  * @dropped_target:TSO packets dropped by target
  * @sg_pkt: Total scatter gather packets
  * @non_sg_pkts: non SG packets
- * @sg_desc_cnt: SG Descriptors
  * @dropped_host: SG packets dropped by host
  * @dropped_target: SG packets dropped by target
  * @dma_map_error: Dma map error
@@ -459,7 +457,6 @@ struct cdp_tx_ingress_stats {
 		uint32_t num_seg;
 		struct cdp_pkt_info tso_pkt;
 		struct cdp_pkt_info non_tso_pkts;
-		uint32_t tso_desc_cnt;
 		struct cdp_pkt_info  dropped_host;
 		uint32_t dropped_target;
 	} tso;
@@ -468,7 +465,6 @@ struct cdp_tx_ingress_stats {
 	struct {
 		struct cdp_pkt_info sg_pkt;
 		struct cdp_pkt_info non_sg_pkts;
-		uint32_t sg_desc_cnt;
 		struct cdp_pkt_info  dropped_host;
 		uint32_t dropped_target;
 		uint32_t dma_map_error;
@@ -957,6 +953,8 @@ struct cdp_htt_rx_pdev_stats {
  * @low_thresh_intrs: low threshold interrupts
  * @rx_raw_pkts: Rx Raw Packets
  * @mesh_mem_alloc: Mesh Rx Stats Alloc fail
+ * @tso_desc_cnt: TSO descriptors
+ * @sg_desc_cnt: SG Descriptors
  * @desc_alloc_fail: desc alloc failed errors
  * @ip_csum_err: ip checksum errors
  * @tcp_udp_csum_err: tcp/udp checksum errors
@@ -989,6 +987,8 @@ struct cdp_pdev_stats {
 
 	uint32_t rx_raw_pkts;
 	uint32_t mesh_mem_alloc;
+	uint32_t tso_desc_cnt;
+	uint32_t sg_desc_cnt;
 
 	/* Rx errors */
 	struct {

+ 7 - 3
dp/wifi3.0/dp_internal.h

@@ -308,7 +308,9 @@ static inline void dp_update_pdev_stats(struct dp_pdev *tgtobj,
 	tgtobj->stats.tx.retries += srcobj->tx.retries;
 	tgtobj->stats.tx.non_amsdu_cnt += srcobj->tx.non_amsdu_cnt;
 	tgtobj->stats.tx.amsdu_cnt += srcobj->tx.amsdu_cnt;
-	tgtobj->stats.tx.dropped.fw_rem += srcobj->tx.dropped.fw_rem;
+	tgtobj->stats.tx.dropped.fw_rem.num += srcobj->tx.dropped.fw_rem.num;
+	tgtobj->stats.tx.dropped.fw_rem.bytes +=
+			srcobj->tx.dropped.fw_rem.bytes;
 	tgtobj->stats.tx.dropped.fw_rem_tx +=
 			srcobj->tx.dropped.fw_rem_tx;
 	tgtobj->stats.tx.dropped.fw_rem_notx +=
@@ -439,7 +441,9 @@ static inline void dp_update_vdev_stats(struct cdp_vdev_stats *tgtobj,
 	tgtobj->tx.retries += srcobj->stats.tx.retries;
 	tgtobj->tx.non_amsdu_cnt += srcobj->stats.tx.non_amsdu_cnt;
 	tgtobj->tx.amsdu_cnt += srcobj->stats.tx.amsdu_cnt;
-	tgtobj->tx.dropped.fw_rem += srcobj->stats.tx.dropped.fw_rem;
+	tgtobj->tx.dropped.fw_rem.num += srcobj->stats.tx.dropped.fw_rem.num;
+	tgtobj->tx.dropped.fw_rem.bytes +=
+			srcobj->stats.tx.dropped.fw_rem.bytes;
 	tgtobj->tx.dropped.fw_rem_tx +=
 			srcobj->stats.tx.dropped.fw_rem_tx;
 	tgtobj->tx.dropped.fw_rem_notx +=
@@ -549,7 +553,7 @@ static inline void dp_update_vdev_stats(struct cdp_vdev_stats *tgtobj,
 		DP_STATS_AGGR(_tgtobj, _srcobj, tx.retries); \
 		DP_STATS_AGGR(_tgtobj, _srcobj, tx.non_amsdu_cnt); \
 		DP_STATS_AGGR(_tgtobj, _srcobj, tx.amsdu_cnt); \
-		DP_STATS_AGGR(_tgtobj, _srcobj, tx.dropped.fw_rem); \
+		DP_STATS_AGGR_PKT(_tgtobj, _srcobj, tx.dropped.fw_rem); \
 		DP_STATS_AGGR(_tgtobj, _srcobj, tx.dropped.fw_rem_tx); \
 		DP_STATS_AGGR(_tgtobj, _srcobj, tx.dropped.fw_rem_notx); \
 		DP_STATS_AGGR(_tgtobj, _srcobj, tx.dropped.fw_reason1); \

+ 12 - 6
dp/wifi3.0/dp_main.c

@@ -5501,8 +5501,10 @@ dp_print_pdev_tx_stats(struct dp_pdev *pdev)
 			pdev->stats.tx_i.dropped.enqueue_fail);
 	DP_PRINT_STATS("	Resources Full = %d",
 			pdev->stats.tx_i.dropped.res_full);
-	DP_PRINT_STATS("	FW removed = %d",
-			pdev->stats.tx.dropped.fw_rem);
+	DP_PRINT_STATS("	FW removed Pkts = %u",
+		       pdev->stats.tx.dropped.fw_rem.num);
+	DP_PRINT_STATS("	FW removed bytes= %llu",
+		       pdev->stats.tx.dropped.fw_rem.bytes);
 	DP_PRINT_STATS("	FW removed transmitted = %d",
 			pdev->stats.tx.dropped.fw_rem_tx);
 	DP_PRINT_STATS("	FW removed untransmitted = %d",
@@ -6105,8 +6107,10 @@ static inline void dp_print_peer_stats(struct dp_peer *peer)
 			peer->stats.tx.amsdu_cnt);
 	DP_PRINT_STATS("Last Packet RSSI = %d",
 			peer->stats.tx.last_ack_rssi);
-	DP_PRINT_STATS("Dropped At FW: Removed = %d",
-			peer->stats.tx.dropped.fw_rem);
+	DP_PRINT_STATS("Dropped At FW: Removed Pkts = %u",
+		       peer->stats.tx.dropped.fw_rem.num);
+	DP_PRINT_STATS("Dropped At FW: Removed bytes = %llu",
+		       peer->stats.tx.dropped.fw_rem.bytes);
 	DP_PRINT_STATS("Dropped At FW: Removed transmitted = %d",
 			peer->stats.tx.dropped.fw_rem_tx);
 	DP_PRINT_STATS("Dropped At FW: Removed Untransmitted = %d",
@@ -7168,8 +7172,10 @@ static void dp_txrx_path_stats(struct dp_soc *soc)
 			       pdev->stats.tx.tx_failed);
 		DP_TRACE_STATS(INFO_HIGH, "mpdu age out: %u",
 			       pdev->stats.tx.dropped.age_out);
-		DP_TRACE_STATS(INFO_HIGH, "firmware removed: %u",
-			       pdev->stats.tx.dropped.fw_rem);
+		DP_TRACE_STATS(INFO_HIGH, "firmware removed packets: %u",
+			       pdev->stats.tx.dropped.fw_rem.num);
+		DP_TRACE_STATS(INFO_HIGH, "firmware removed bytes: %llu",
+			       pdev->stats.tx.dropped.fw_rem.bytes);
 		DP_TRACE_STATS(INFO_HIGH, "firmware removed tx: %u",
 			       pdev->stats.tx.dropped.fw_rem_tx);
 		DP_TRACE_STATS(INFO_HIGH, "firmware removed notx %u",

+ 4 - 4
dp/wifi3.0/dp_tx.c

@@ -2565,7 +2565,7 @@ void dp_tx_comp_fill_tx_completion_stats(struct dp_tx_desc_s *tx_desc,
  */
 static inline void
 dp_tx_update_peer_stats(struct dp_peer *peer,
-			struct hal_tx_completion_status *ts)
+			struct hal_tx_completion_status *ts, uint32_t length)
 {
 	struct dp_pdev *pdev = peer->vdev->pdev;
 	struct dp_soc *soc = pdev->soc;
@@ -2582,8 +2582,8 @@ dp_tx_update_peer_stats(struct dp_peer *peer,
 	DP_STATS_INCC(peer, tx.dropped.age_out, 1,
 		     (ts->status == HAL_TX_TQM_RR_REM_CMD_AGED));
 
-	DP_STATS_INCC(peer, tx.dropped.fw_rem, 1,
-		     (ts->status == HAL_TX_TQM_RR_REM_CMD_REM));
+	DP_STATS_INCC_PKT(peer, tx.dropped.fw_rem, 1, length,
+			  (ts->status == HAL_TX_TQM_RR_REM_CMD_REM));
 
 	DP_STATS_INCC(peer, tx.dropped.fw_rem_notx, 1,
 		     (ts->status == HAL_TX_TQM_RR_REM_CMD_NOTX));
@@ -2923,7 +2923,7 @@ void dp_tx_comp_process_tx_status(struct dp_tx_desc_s *tx_desc,
 		}
 	}
 
-	dp_tx_update_peer_stats(peer, ts);
+	dp_tx_update_peer_stats(peer, ts, length);
 
 out:
 	return;