From 4f720afb5e3c11293a9e7e78a4aaaf1551532b43 Mon Sep 17 00:00:00 2001 From: Srinivas Girigowda Date: Mon, 1 May 2023 18:41:15 -0700 Subject: [PATCH] qcacmn: Log Tx/Rx MCS stats as part of Tx/Rx path stats Log Tx/Rx MCS stats as part of Tx/Rx path stats. Change-Id: Idd2caf5fe5343a56440e7b501f22fe10c16e8010 CRs-Fixed: 3492558 --- dp/wifi3.0/dp_stats.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/dp/wifi3.0/dp_stats.c b/dp/wifi3.0/dp_stats.c index 787de44610..ba522b835d 100644 --- a/dp/wifi3.0/dp_stats.c +++ b/dp/wifi3.0/dp_stats.c @@ -7238,6 +7238,42 @@ void dp_print_per_ring_stats(struct dp_soc *soc) } } +static void dp_pdev_print_tx_rx_rates(struct dp_pdev *pdev) +{ + struct dp_vdev *vdev; + struct dp_vdev **vdev_array = NULL; + int index = 0, num_vdev = 0; + + if (!pdev) { + dp_err("pdev is NULL"); + return; + } + + vdev_array = + qdf_mem_malloc(sizeof(struct dp_vdev *) * WLAN_PDEV_MAX_VDEVS); + if (!vdev_array) + return; + + qdf_spin_lock_bh(&pdev->vdev_list_lock); + DP_PDEV_ITERATE_VDEV_LIST(pdev, vdev) { + if (dp_vdev_get_ref(pdev->soc, vdev, DP_MOD_ID_GENERIC_STATS)) + continue; + vdev_array[index] = vdev; + index = index + 1; + } + qdf_spin_unlock_bh(&pdev->vdev_list_lock); + + num_vdev = index; + + for (index = 0; index < num_vdev; index++) { + vdev = vdev_array[index]; + dp_print_rx_rates(vdev); + dp_print_tx_rates(vdev); + dp_vdev_unref_delete(pdev->soc, vdev, DP_MOD_ID_GENERIC_STATS); + } + qdf_mem_free(vdev_array); +} + void dp_txrx_path_stats(struct dp_soc *soc) { uint8_t error_code; @@ -7483,6 +7519,7 @@ void dp_txrx_path_stats(struct dp_soc *soc) pdev->soc->wlan_cfg_ctx ->tx_flow_start_queue_offset); #endif + dp_pdev_print_tx_rx_rates(pdev); } }