From b23bcc8b6b29a1f66e2e97428582a0d0e37bee02 Mon Sep 17 00:00:00 2001 From: Yeshwanth Sriram Guntuka Date: Fri, 5 Mar 2021 15:18:07 +0530 Subject: [PATCH] qcacmn: Add support to reset SOC rx ext stats Add CDP interface to support reset of soc rx ext stats. Change-Id: I381f9b6b27d8d023b1932b7d8587df240c1ff4d0 CRs-Fixed: 2889565 --- dp/inc/cdp_txrx_misc.h | 18 ++++++++++++++++++ dp/inc/cdp_txrx_ops.h | 1 + dp/wifi3.0/dp_main.c | 16 ++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/dp/inc/cdp_txrx_misc.h b/dp/inc/cdp_txrx_misc.h index 1bee78e060..6715c6e416 100644 --- a/dp/inc/cdp_txrx_misc.h +++ b/dp/inc/cdp_txrx_misc.h @@ -817,6 +817,24 @@ cdp_request_rx_hw_stats(ol_txrx_soc_handle soc, uint8_t vdev_id) return QDF_STATUS_SUCCESS; } +/** + * cdp_reset_rx_hw_ext_stats(): reset rx hw ext stats + * @soc: soc handle + * + * Return: none + */ +static inline void +cdp_reset_rx_hw_ext_stats(ol_txrx_soc_handle soc) +{ + if (!soc || !soc->ops || !soc->ops->misc_ops) { + dp_cdp_debug("Invalid Instance"); + return; + } + + if (soc->ops->misc_ops->reset_rx_hw_ext_stats) + soc->ops->misc_ops->reset_rx_hw_ext_stats(soc); +} + /** * cdp_vdev_inform_ll_conn() - Inform DP about the low latency connection * @soc: soc handle diff --git a/dp/inc/cdp_txrx_ops.h b/dp/inc/cdp_txrx_ops.h index 92dddb8275..b0961ee22a 100644 --- a/dp/inc/cdp_txrx_ops.h +++ b/dp/inc/cdp_txrx_ops.h @@ -1283,6 +1283,7 @@ struct cdp_misc_ops { struct cdp_txrx_ext_stats *req); QDF_STATUS (*request_rx_hw_stats)(struct cdp_soc_t *soc_hdl, uint8_t vdev_id); + void (*reset_rx_hw_ext_stats)(struct cdp_soc_t *soc_hdl); QDF_STATUS (*vdev_inform_ll_conn)(struct cdp_soc_t *soc_hdl, uint8_t vdev_id, enum vdev_ll_conn_actions action); diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index d9c03f1721..b949b5aa45 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -12119,6 +12119,21 @@ out: return status; } + +/** + * dp_reset_rx_hw_ext_stats - Reset rx hardware ext stats + * @soc_hdl: soc handle + * + * Return: None + */ +static +void dp_reset_rx_hw_ext_stats(struct cdp_soc_t *soc_hdl) +{ + struct dp_soc *soc = (struct dp_soc *)soc_hdl; + + soc->ext_stats.rx_mpdu_received = 0; + soc->ext_stats.rx_mpdu_missed = 0; +} #endif /* WLAN_FEATURE_STATS_EXT */ #ifdef DP_PEER_EXTENDED_API @@ -12144,6 +12159,7 @@ static struct cdp_misc_ops dp_ops_misc = { #ifdef WLAN_FEATURE_STATS_EXT .txrx_ext_stats_request = dp_txrx_ext_stats_request, .request_rx_hw_stats = dp_request_rx_hw_stats, + .reset_rx_hw_ext_stats = dp_reset_rx_hw_ext_stats, #endif /* WLAN_FEATURE_STATS_EXT */ .vdev_inform_ll_conn = dp_vdev_inform_ll_conn, #ifdef WLAN_DP_FEATURE_SW_LATENCY_MGR