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
부모 000049c119
커밋 176e6fa814
6개의 변경된 파일12개의 추가작업 그리고 4개의 파일을 삭제

파일 보기

@@ -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
* |-------------------------------------------------|

파일 보기

@@ -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

파일 보기

@@ -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;

파일 보기

@@ -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; \

파일 보기

@@ -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];
};

파일 보기

@@ -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++;
}