diff --git a/dp/inc/cdp_txrx_cmn_struct.h b/dp/inc/cdp_txrx_cmn_struct.h index 739a37e138..2d1e8055f7 100644 --- a/dp/inc/cdp_txrx_cmn_struct.h +++ b/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 * |-------------------------------------------------| diff --git a/dp/inc/cdp_txrx_hist_struct.h b/dp/inc/cdp_txrx_hist_struct.h index 1dd156a0a6..bf82b99075 100644 --- a/dp/inc/cdp_txrx_hist_struct.h +++ b/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 diff --git a/dp/inc/cdp_txrx_stats_struct.h b/dp/inc/cdp_txrx_stats_struct.h index c7cd98e926..b05b8f5581 100644 --- a/dp/inc/cdp_txrx_stats_struct.h +++ b/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; diff --git a/dp/wifi3.0/dp_internal.h b/dp/wifi3.0/dp_internal.h index f0ae97324e..af45511e17 100644 --- a/dp/wifi3.0/dp_internal.h +++ b/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; \ diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index 9bfcac5628..e4331a0535 100644 --- a/dp/wifi3.0/dp_types.h +++ b/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]; }; diff --git a/dp/wifi3.0/monitor/dp_mon.c b/dp/wifi3.0/monitor/dp_mon.c index 5596ef8e4d..ae6a62408a 100644 --- a/dp/wifi3.0/monitor/dp_mon.c +++ b/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++; }