Browse Source

qcacmn: Add support for average tx/rx rate

Apstats use to return last tx/rx rate for avg. tx/rx rates.
This change updates the behavior to return average tx/rx rates.

Change-Id: Idfff2ae9df7c5af1ef86ceb5688b1e01fd6dae21
CRs-Fixed: 3628056
Aman Mehta 1 year ago
parent
commit
d6ee46a496
2 changed files with 10 additions and 0 deletions
  1. 4 0
      dp/inc/cdp_txrx_stats_struct.h
  2. 6 0
      dp/wifi3.0/monitor/dp_mon.c

+ 4 - 0
dp/inc/cdp_txrx_stats_struct.h

@@ -1389,6 +1389,8 @@ enum cdp_peer_stats_type {
 	cdp_peer_rx_flags,
 	cdp_peer_rx_flags,
 	cdp_peer_rx_avg_snr,
 	cdp_peer_rx_avg_snr,
 	cdp_peer_rx_snr,
 	cdp_peer_rx_snr,
+	cdp_peer_rx_avg_rate,
+	cdp_peer_tx_avg_rate,
 	/* Add enum for peer extd stats before this */
 	/* Add enum for peer extd stats before this */
 	cdp_peer_extd_stats_max,
 	cdp_peer_extd_stats_max,
 	cdp_peer_stats_max = cdp_peer_extd_stats_max,
 	cdp_peer_stats_max = cdp_peer_extd_stats_max,
@@ -1404,6 +1406,7 @@ typedef union cdp_peer_stats_buf {
 	struct cdp_pkt_info tx_ucast;
 	struct cdp_pkt_info tx_ucast;
 	struct cdp_pkt_info tx_mcast;
 	struct cdp_pkt_info tx_mcast;
 	uint32_t tx_rate;
 	uint32_t tx_rate;
+	uint32_t tx_rate_avg;
 	uint32_t last_tx_rate;
 	uint32_t last_tx_rate;
 	uint32_t tx_inactive_time;
 	uint32_t tx_inactive_time;
 	uint32_t tx_flags;
 	uint32_t tx_flags;
@@ -1413,6 +1416,7 @@ typedef union cdp_peer_stats_buf {
 	/* Rx types */
 	/* Rx types */
 	struct cdp_pkt_info rx_ucast;
 	struct cdp_pkt_info rx_ucast;
 	uint32_t rx_rate;
 	uint32_t rx_rate;
+	uint32_t rx_rate_avg;
 	uint32_t last_rx_rate;
 	uint32_t last_rx_rate;
 	uint32_t rx_ratecode;
 	uint32_t rx_ratecode;
 	uint32_t rx_flags;
 	uint32_t rx_flags;

+ 6 - 0
dp/wifi3.0/monitor/dp_mon.c

@@ -6475,6 +6475,12 @@ dp_mon_peer_get_stats_param(struct dp_peer *peer, enum cdp_peer_stats_type type,
 	case cdp_peer_rx_snr:
 	case cdp_peer_rx_snr:
 		buf->rx_snr = mon_peer->stats.rx.snr;
 		buf->rx_snr = mon_peer->stats.rx.snr;
 		break;
 		break;
+	case cdp_peer_rx_avg_rate:
+		buf->rx_rate_avg = mon_peer->stats.rx.rnd_avg_rx_rate;
+		break;
+	case cdp_peer_tx_avg_rate:
+		buf->tx_rate_avg = mon_peer->stats.tx.rnd_avg_tx_rate;
+		break;
 	default:
 	default:
 		dp_err("Invalid stats type: %u requested", type);
 		dp_err("Invalid stats type: %u requested", type);
 		ret = QDF_STATUS_E_FAILURE;
 		ret = QDF_STATUS_E_FAILURE;