qcacmn: Get deterministic stats from DP PDEV

Add cdp layer API to get stats and
Copy pdev deterministic stats from dp_pdev to cdp structure

Change-Id: Ia7dbbe4cfe7ebe66a040879144505b17aaaa625a
CRs-Fixed: 3380939
This commit is contained in:
aloksing
2023-01-18 00:25:35 +05:30
committed by Madan Koyyalamudi
parent e03fabab41
commit 1442fb17b6
5 changed files with 79 additions and 0 deletions

View File

@@ -1035,6 +1035,33 @@ static inline QDF_STATUS cdp_get_peer_telemetry_stats(
soc, addr, stats);
}
/**
* cdp_get_pdev_deter_stats(): function to get pdev deterministic stats
* @soc: soc handle
* @pdev_id: pdev id
* @stats: pointer to pdev deterministic stats
*
* return: status
*/
static inline QDF_STATUS cdp_get_pdev_deter_stats(
ol_txrx_soc_handle soc,
uint8_t pdev_id,
struct cdp_pdev_deter_stats *stats)
{
if (!soc || !soc->ops) {
dp_cdp_debug("Invalid Instance");
QDF_BUG(0);
return QDF_STATUS_E_FAILURE;
}
if (!soc->ops->host_stats_ops ||
!soc->ops->host_stats_ops->txrx_pdev_deter_stats)
return QDF_STATUS_E_FAILURE;
return soc->ops->host_stats_ops->txrx_pdev_deter_stats(
soc, pdev_id, stats);
}
/**
* cdp_get_peer_deter_stats(): function to get peer deterministic stats
* @soc: soc handle

View File

@@ -1244,6 +1244,11 @@ struct cdp_host_stats_ops {
struct cdp_soc_t *soc,
uint8_t *addr,
struct cdp_peer_telemetry_stats *stats);
QDF_STATUS
(*txrx_pdev_deter_stats)(
struct cdp_soc_t *soc,
uint8_t pdev_id,
struct cdp_pdev_deter_stats *stats);
QDF_STATUS
(*txrx_peer_deter_stats)(
struct cdp_soc_t *soc,

View File

@@ -4240,6 +4240,19 @@ dp_get_peer_telemetry_stats(struct cdp_soc_t *soc_hdl, uint8_t *addr,
QDF_STATUS
dp_get_peer_deter_stats(struct cdp_soc_t *soc_hdl, uint8_t *addr,
struct cdp_peer_deter_stats *stats);
/*
* dp_get_pdev_deter_stats- API to get pdev deterministic stats
* @soc_hdl: soc handle
* @pdev_id: id of pdev handle
* @stats: pointer to pdev deterministic stats
*
* Return: QDF_STATUS_SUCCESS: Success
* QDF_STATUS_E_FAILURE: Error
*/
QDF_STATUS
dp_get_pdev_deter_stats(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
struct cdp_pdev_deter_stats *stats);
#endif /* WLAN_TELEMETRY_STATS_SUPPORT */
#ifdef CONNECTIVITY_PKTLOG

View File

@@ -14202,6 +14202,7 @@ static struct cdp_host_stats_ops dp_ops_host_stats = {
#ifdef WLAN_TELEMETRY_STATS_SUPPORT
.txrx_pdev_telemetry_stats = dp_get_pdev_telemetry_stats,
.txrx_peer_telemetry_stats = dp_get_peer_telemetry_stats,
.txrx_pdev_deter_stats = dp_get_pdev_deter_stats,
.txrx_peer_deter_stats = dp_get_peer_deter_stats,
#endif
.txrx_get_peer_extd_rate_link_stats =

View File

@@ -9287,6 +9287,39 @@ dp_get_peer_telemetry_stats(struct cdp_soc_t *soc_hdl, uint8_t *addr,
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
dp_get_pdev_deter_stats(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
struct cdp_pdev_deter_stats *stats)
{
struct dp_soc *soc = (struct dp_soc *)soc_hdl;
struct dp_pdev *pdev = dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id);
if (!pdev)
return QDF_STATUS_E_FAILURE;
qdf_mem_copy(stats->dl_ofdma_usr, pdev->stats.deter_stats.dl_ofdma_usr,
sizeof(stats->dl_ofdma_usr[0]) * CDP_MU_MAX_USERS);
qdf_mem_copy(stats->ul_ofdma_usr, pdev->stats.deter_stats.ul_ofdma_usr,
sizeof(stats->ul_ofdma_usr[0]) * CDP_MU_MAX_USERS);
qdf_mem_copy(stats->dl_mimo_usr, pdev->stats.deter_stats.dl_mimo_usr,
sizeof(stats->dl_mimo_usr[0]) * CDP_MU_MAX_USERS);
qdf_mem_copy(stats->ul_mimo_usr, pdev->stats.deter_stats.ul_mimo_usr,
sizeof(stats->ul_mimo_usr[0]) * CDP_MU_MAX_USERS);
qdf_mem_copy(stats->ul_mode_cnt, pdev->stats.deter_stats.ul_mode_cnt,
sizeof(stats->ul_mode_cnt[0]) * TX_MODE_UL_MAX);
qdf_mem_copy(stats->dl_mode_cnt, pdev->stats.deter_stats.dl_mode_cnt,
sizeof(stats->dl_mode_cnt[0]) * TX_MODE_DL_MAX);
qdf_mem_copy(stats->ch_access_delay,
pdev->stats.deter_stats.ch_access_delay,
sizeof(stats->ch_access_delay[0]) * WME_AC_MAX);
stats->trigger_success = pdev->stats.deter_stats.trigger_success;
stats->trigger_fail = pdev->stats.deter_stats.trigger_fail;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
dp_get_peer_deter_stats(struct cdp_soc_t *soc_hdl, uint8_t *addr,
struct cdp_peer_deter_stats *stats)