qcacmn: Fetch and update rssi_chain stats from Firmware

fetch and update rssi_chain stats from firmware.

Change-Id: I0a16ebda0ab17d32c7f7daab36eeebb6c4d691f9
CRs-Fixed: 3404107
This commit is contained in:
Amrit Sahai
2023-02-13 14:21:24 +05:30
committed by Madan Koyyalamudi
parent 000049c119
commit 176e6fa814
6 changed files with 12 additions and 4 deletions

View File

@@ -59,7 +59,6 @@
#define CDP_BA_256_BIT_MAP_SIZE_DWORDS 8 #define CDP_BA_256_BIT_MAP_SIZE_DWORDS 8
#define CDP_BA_64_BIT_MAP_SIZE_DWORDS 2 #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_PDEV_ID 0xff
#define OL_TXRX_INVALID_LOCAL_PEER_ID 0xffff #define OL_TXRX_INVALID_LOCAL_PEER_ID 0xffff
@@ -2127,7 +2126,7 @@ struct cdp_tx_completion_ppdu_user {
uint8_t is_ppdu_cookie_valid; uint8_t is_ppdu_cookie_valid;
uint16_t ppdu_cookie; uint16_t ppdu_cookie;
uint8_t sa_is_training; 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; uint32_t sa_tx_antenna;
/*Max rates for BW: 20MHZ, 40MHZ and 80MHZ and 160MHZ and 320MHZ /*Max rates for BW: 20MHZ, 40MHZ and 80MHZ and 160MHZ and 320MHZ
* |-------------------------------------------------| * |-------------------------------------------------|

View File

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

View File

@@ -1619,7 +1619,7 @@ struct cdp_tx_stats {
uint32_t fw_ratecount; uint32_t fw_ratecount;
uint32_t ac_nobufs[WME_AC_MAX]; 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 inactive_time;
uint32_t tx_flags; uint32_t tx_flags;

View File

@@ -2094,6 +2094,8 @@ void dp_update_vdev_stats_on_peer_unmap(struct dp_vdev *vdev,
_tgtobj->tx.tx_ucast_success.bytes += \ _tgtobj->tx.tx_ucast_success.bytes += \
_srcobj->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_ok += _srcobj->rx.mpdu_cnt_fcs_ok; \
_tgtobj->rx.mpdu_cnt_fcs_err += _srcobj->rx.mpdu_cnt_fcs_err; \ _tgtobj->rx.mpdu_cnt_fcs_err += _srcobj->rx.mpdu_cnt_fcs_err; \
_tgtobj->rx.non_ampdu_cnt += _srcobj->rx.non_ampdu_cnt; \ _tgtobj->rx.non_ampdu_cnt += _srcobj->rx.non_ampdu_cnt; \

View File

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

View File

@@ -3356,6 +3356,7 @@ dp_tx_stats_update(struct dp_pdev *pdev, struct dp_peer *peer,
struct dp_mon_peer *mon_peer = NULL; struct dp_mon_peer *mon_peer = NULL;
uint32_t ratekbps = 0; uint32_t ratekbps = 0;
uint64_t tx_byte_count; uint64_t tx_byte_count;
uint8_t idx = 0;
preamble = ppdu->preamble; preamble = ppdu->preamble;
mcs = ppdu->mcs; 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_success, num_mpdu);
DP_STATS_INC(mon_peer, tx.tx_mpdus_tried, mpdu_tried); 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); mon_ops = dp_mon_ops_get(pdev->soc);
if (mon_ops && mon_ops->mon_tx_stats_update) if (mon_ops && mon_ops->mon_tx_stats_update)
mon_ops->mon_tx_stats_update(mon_peer, ppdu); 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++; tag_buf++;
for (bw_iter = 0; bw_iter < CDP_RSSI_CHAIN_LEN; bw_iter++) { for (bw_iter = 0; bw_iter < CDP_RSSI_CHAIN_LEN; bw_iter++) {
ppdu_user_desc->rssi_chain[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++; tag_buf++;
} }