From cfd13d2ad222554d11a2d16f823aae6fa20c98af Mon Sep 17 00:00:00 2001 From: Harsh Kumar Bijlani Date: Thu, 29 Sep 2022 17:38:38 +0530 Subject: [PATCH] qcacmn: Add support to fetch peer stats using MLD mac address Add support to fetch peer stats using MLD mac address Change-Id: I0e230a561b8f6af3dac0dcbfef4304c630f21ff9 CRs-Fixed: 3303212 --- dp/wifi3.0/dp_main.c | 35 +++++++++++++++++++++++------------ dp/wifi3.0/dp_stats.c | 24 +++++++++++++++--------- 2 files changed, 38 insertions(+), 21 deletions(-) diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 2db88b547a..16af41fffb 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -9949,6 +9949,7 @@ dp_get_host_peer_stats(struct cdp_soc_t *soc, uint8_t *mac_addr) { struct dp_peer *peer = NULL; struct cdp_peer_stats *peer_stats = NULL; + struct cdp_peer_info peer_info = { 0 }; if (!mac_addr) { QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR, @@ -9956,10 +9957,11 @@ dp_get_host_peer_stats(struct cdp_soc_t *soc, uint8_t *mac_addr) return QDF_STATUS_E_FAILURE; } - peer = dp_peer_find_hash_find((struct dp_soc *)soc, - mac_addr, 0, - DP_VDEV_ALL, - DP_MOD_ID_CDP); + DP_PEER_INFO_PARAMS_INIT(&peer_info, DP_VDEV_ALL, mac_addr, false, + CDP_WILD_PEER_TYPE); + + peer = dp_peer_hash_find_wrapper((struct dp_soc *)soc, &peer_info, + DP_MOD_ID_CDP); if (!peer) { QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR, "%s: Invalid peer\n", __func__); @@ -11236,10 +11238,14 @@ static QDF_STATUS dp_txrx_get_peer_stats(struct cdp_soc_t *soc, uint8_t vdev_id, uint8_t *peer_mac, struct cdp_peer_stats *peer_stats) { - QDF_STATUS status = QDF_STATUS_SUCCESS; - struct dp_peer *peer = dp_peer_find_hash_find((struct dp_soc *)soc, - peer_mac, 0, vdev_id, - DP_MOD_ID_CDP); + struct dp_peer *peer = NULL; + struct cdp_peer_info peer_info = { 0 }; + + DP_PEER_INFO_PARAMS_INIT(&peer_info, vdev_id, peer_mac, false, + CDP_WILD_PEER_TYPE); + + peer = dp_peer_hash_find_wrapper((struct dp_soc *)soc, &peer_info, + DP_MOD_ID_CDP); qdf_mem_zero(peer_stats, sizeof(struct cdp_peer_stats)); @@ -11250,7 +11256,7 @@ dp_txrx_get_peer_stats(struct cdp_soc_t *soc, uint8_t vdev_id, dp_peer_unref_delete(peer, DP_MOD_ID_CDP); - return status; + return QDF_STATUS_SUCCESS; } /* dp_txrx_get_peer_stats_param - will return specified cdp_peer_stats @@ -11267,9 +11273,14 @@ dp_txrx_get_peer_stats_param(struct cdp_soc_t *soc, uint8_t vdev_id, cdp_peer_stats_param_t *buf) { QDF_STATUS ret; - struct dp_peer *peer = dp_peer_find_hash_find((struct dp_soc *)soc, - peer_mac, 0, vdev_id, - DP_MOD_ID_CDP); + struct dp_peer *peer = NULL; + struct cdp_peer_info peer_info = { 0 }; + + DP_PEER_INFO_PARAMS_INIT(&peer_info, vdev_id, peer_mac, false, + CDP_WILD_PEER_TYPE); + + peer = dp_peer_hash_find_wrapper((struct dp_soc *)soc, &peer_info, + DP_MOD_ID_CDP); if (!peer) { dp_peer_err("%pK: Invalid Peer for Mac " QDF_MAC_ADDR_FMT, diff --git a/dp/wifi3.0/dp_stats.c b/dp/wifi3.0/dp_stats.c index 05ddc545e8..f736f3959d 100644 --- a/dp/wifi3.0/dp_stats.c +++ b/dp/wifi3.0/dp_stats.c @@ -8966,21 +8966,23 @@ dp_txrx_get_peer_delay_stats(struct cdp_soc_t *soc_hdl, uint8_t vdev_id, struct cdp_delay_tid_stats *delay_stats) { struct dp_soc *soc = (struct dp_soc *)soc_hdl; - struct dp_peer *peer = dp_peer_find_hash_find(soc, peer_mac, 0, vdev_id, - DP_MOD_ID_CDP); + struct dp_peer *peer = NULL; struct dp_peer_delay_stats *pext_stats; struct cdp_delay_rx_stats *rx_delay; struct cdp_delay_tx_stats *tx_delay; uint8_t tid; + struct cdp_peer_info peer_info = { 0 }; + if (!wlan_cfg_is_peer_ext_stats_enabled(soc->wlan_cfg_ctx)) + return QDF_STATUS_E_FAILURE; + + DP_PEER_INFO_PARAMS_INIT(&peer_info, vdev_id, peer_mac, false, + CDP_WILD_PEER_TYPE); + + peer = dp_peer_hash_find_wrapper(soc, &peer_info, DP_MOD_ID_CDP); if (!peer) return QDF_STATUS_E_FAILURE; - if (!wlan_cfg_is_peer_ext_stats_enabled(soc->wlan_cfg_ctx)) { - dp_peer_unref_delete(peer, DP_MOD_ID_CDP); - return QDF_STATUS_E_FAILURE; - } - if (!peer->txrx_peer) { dp_peer_unref_delete(peer, DP_MOD_ID_CDP); return QDF_STATUS_E_FAILURE; @@ -9030,8 +9032,9 @@ dp_txrx_get_peer_jitter_stats(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, { struct dp_soc *soc = (struct dp_soc *)soc_hdl; struct dp_pdev *pdev = dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id); - struct dp_peer *peer; + struct dp_peer *peer = NULL; uint8_t tid; + struct cdp_peer_info peer_info = { 0 }; if (!pdev) return QDF_STATUS_E_FAILURE; @@ -9039,7 +9042,10 @@ dp_txrx_get_peer_jitter_stats(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, if (!wlan_cfg_get_dp_pdev_nss_enabled(pdev->wlan_cfg_ctx)) return QDF_STATUS_E_FAILURE; - peer = dp_peer_find_hash_find(soc, peer_mac, 0, vdev_id, DP_MOD_ID_CDP); + DP_PEER_INFO_PARAMS_INIT(&peer_info, vdev_id, peer_mac, false, + CDP_WILD_PEER_TYPE); + + peer = dp_peer_hash_find_wrapper(soc, &peer_info, DP_MOD_ID_CDP); if (!peer) return QDF_STATUS_E_FAILURE;