Forráskód Böngészése

qcacmn: Fetch and update rssi_chain stats from Firmware

fetch and update rssi_chain stats from firmware.

Change-Id: I0a16ebda0ab17d32c7f7daab36eeebb6c4d691f9
CRs-Fixed: 3404107
Amrit Sahai 2 éve
szülő
commit
176e6fa814

+ 1 - 2
dp/inc/cdp_txrx_cmn_struct.h

@@ -59,7 +59,6 @@
 
 #define CDP_BA_256_BIT_MAP_SIZE_DWORDS 8
 #define CDP_BA_64_BIT_MAP_SIZE_DWORDS 2
-#define CDP_RSSI_CHAIN_LEN 8
 
 #define OL_TXRX_INVALID_PDEV_ID 0xff
 #define OL_TXRX_INVALID_LOCAL_PEER_ID 0xffff
@@ -2127,7 +2126,7 @@ struct cdp_tx_completion_ppdu_user {
 	uint8_t is_ppdu_cookie_valid;
 	uint16_t ppdu_cookie;
 	uint8_t sa_is_training;
-	uint32_t rssi_chain[CDP_RSSI_CHAIN_LEN];
+	int32_t rssi_chain[CDP_RSSI_CHAIN_LEN];
 	uint32_t sa_tx_antenna;
 	/*Max rates for BW: 20MHZ, 40MHZ and 80MHZ and 160MHZ and 320MHZ
 	 * |-------------------------------------------------|

+ 1 - 0
dp/inc/cdp_txrx_hist_struct.h

@@ -24,6 +24,7 @@
 #ifndef _CDP_TXRX_HIST_STRUCT_H_
 #define _CDP_TXRX_HIST_STRUCT_H_
 
+#define CDP_RSSI_CHAIN_LEN 8
 /**
  * enum cdp_hist_bucket_index - Histogram Bucket
  * @CDP_HIST_BUCKET_0: Bucket Index 0

+ 1 - 1
dp/inc/cdp_txrx_stats_struct.h

@@ -1619,7 +1619,7 @@ struct cdp_tx_stats {
 	uint32_t fw_ratecount;
 
 	uint32_t ac_nobufs[WME_AC_MAX];
-	uint32_t rssi_chain[WME_AC_MAX];
+	int32_t rssi_chain[CDP_RSSI_CHAIN_LEN];
 	uint32_t inactive_time;
 
 	uint32_t tx_flags;

+ 2 - 0
dp/wifi3.0/dp_internal.h

@@ -2094,6 +2094,8 @@ void dp_update_vdev_stats_on_peer_unmap(struct dp_vdev *vdev,
 		_tgtobj->tx.tx_ucast_success.bytes += \
 				_srcobj->tx.tx_ucast_success.bytes; \
 		\
+		for (i = 0; i < CDP_RSSI_CHAIN_LEN; i++) \
+			_tgtobj->tx.rssi_chain[i] = _srcobj->tx.rssi_chain[i]; \
 		_tgtobj->rx.mpdu_cnt_fcs_ok += _srcobj->rx.mpdu_cnt_fcs_ok; \
 		_tgtobj->rx.mpdu_cnt_fcs_err += _srcobj->rx.mpdu_cnt_fcs_err; \
 		_tgtobj->rx.non_ampdu_cnt += _srcobj->rx.non_ampdu_cnt; \

+ 2 - 0
dp/wifi3.0/dp_types.h

@@ -4321,6 +4321,7 @@ struct dp_peer_per_pkt_tx_stats {
  * @rts_failure: RTS failure count
  * @bar_cnt: Block ACK Request frame count
  * @ndpa_cnt: NDP announcement frame count
+ * @rssi_chain: rssi chain
  * @wme_ac_type_bytes: Wireless Multimedia bytes Count
  */
 struct dp_peer_extd_tx_stats {
@@ -4378,6 +4379,7 @@ struct dp_peer_extd_tx_stats {
 	uint32_t rts_failure;
 	uint32_t bar_cnt;
 	uint32_t ndpa_cnt;
+	int32_t rssi_chain[CDP_RSSI_CHAIN_LEN];
 	uint64_t wme_ac_type_bytes[WME_AC_MAX];
 };
 

+ 5 - 1
dp/wifi3.0/monitor/dp_mon.c

@@ -3356,6 +3356,7 @@ dp_tx_stats_update(struct dp_pdev *pdev, struct dp_peer *peer,
 	struct dp_mon_peer *mon_peer = NULL;
 	uint32_t ratekbps = 0;
 	uint64_t tx_byte_count;
+	uint8_t idx = 0;
 
 	preamble = ppdu->preamble;
 	mcs = ppdu->mcs;
@@ -3497,6 +3498,9 @@ dp_tx_stats_update(struct dp_pdev *pdev, struct dp_peer *peer,
 	DP_STATS_INC(mon_peer, tx.tx_mpdus_success, num_mpdu);
 	DP_STATS_INC(mon_peer, tx.tx_mpdus_tried, mpdu_tried);
 
+	for (idx = 0; idx < CDP_RSSI_CHAIN_LEN; idx++)
+		DP_STATS_UPD(mon_peer, tx.rssi_chain[idx], ppdu->rssi_chain[idx]);
+
 	mon_ops = dp_mon_ops_get(pdev->soc);
 	if (mon_ops && mon_ops->mon_tx_stats_update)
 		mon_ops->mon_tx_stats_update(mon_peer, ppdu);
@@ -4134,7 +4138,7 @@ static void dp_process_ppdu_stats_user_cmpltn_common_tlv(
 	tag_buf++;
 	for (bw_iter = 0; bw_iter < CDP_RSSI_CHAIN_LEN; bw_iter++) {
 		ppdu_user_desc->rssi_chain[bw_iter] =
-		HTT_PPDU_STATS_USER_CMPLTN_COMMON_TLV_CHAIN_RSSI_GET(*tag_buf);
+			HTT_PPDU_STATS_USER_CMPLTN_COMMON_TLV_CHAIN_RSSI_GET(*tag_buf);
 		tag_buf++;
 	}