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
Šī revīzija ir iekļauta:

revīziju iesūtīja
Madan Koyyalamudi

vecāks
e03fabab41
revīzija
1442fb17b6
@@ -1035,6 +1035,33 @@ static inline QDF_STATUS cdp_get_peer_telemetry_stats(
|
|||||||
soc, addr, 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
|
* cdp_get_peer_deter_stats(): function to get peer deterministic stats
|
||||||
* @soc: soc handle
|
* @soc: soc handle
|
||||||
|
@@ -1244,6 +1244,11 @@ struct cdp_host_stats_ops {
|
|||||||
struct cdp_soc_t *soc,
|
struct cdp_soc_t *soc,
|
||||||
uint8_t *addr,
|
uint8_t *addr,
|
||||||
struct cdp_peer_telemetry_stats *stats);
|
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
|
QDF_STATUS
|
||||||
(*txrx_peer_deter_stats)(
|
(*txrx_peer_deter_stats)(
|
||||||
struct cdp_soc_t *soc,
|
struct cdp_soc_t *soc,
|
||||||
|
@@ -4240,6 +4240,19 @@ dp_get_peer_telemetry_stats(struct cdp_soc_t *soc_hdl, uint8_t *addr,
|
|||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
dp_get_peer_deter_stats(struct cdp_soc_t *soc_hdl, uint8_t *addr,
|
dp_get_peer_deter_stats(struct cdp_soc_t *soc_hdl, uint8_t *addr,
|
||||||
struct cdp_peer_deter_stats *stats);
|
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 */
|
#endif /* WLAN_TELEMETRY_STATS_SUPPORT */
|
||||||
|
|
||||||
#ifdef CONNECTIVITY_PKTLOG
|
#ifdef CONNECTIVITY_PKTLOG
|
||||||
|
@@ -14202,6 +14202,7 @@ static struct cdp_host_stats_ops dp_ops_host_stats = {
|
|||||||
#ifdef WLAN_TELEMETRY_STATS_SUPPORT
|
#ifdef WLAN_TELEMETRY_STATS_SUPPORT
|
||||||
.txrx_pdev_telemetry_stats = dp_get_pdev_telemetry_stats,
|
.txrx_pdev_telemetry_stats = dp_get_pdev_telemetry_stats,
|
||||||
.txrx_peer_telemetry_stats = dp_get_peer_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,
|
.txrx_peer_deter_stats = dp_get_peer_deter_stats,
|
||||||
#endif
|
#endif
|
||||||
.txrx_get_peer_extd_rate_link_stats =
|
.txrx_get_peer_extd_rate_link_stats =
|
||||||
|
@@ -9287,6 +9287,39 @@ dp_get_peer_telemetry_stats(struct cdp_soc_t *soc_hdl, uint8_t *addr,
|
|||||||
return QDF_STATUS_SUCCESS;
|
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
|
QDF_STATUS
|
||||||
dp_get_peer_deter_stats(struct cdp_soc_t *soc_hdl, uint8_t *addr,
|
dp_get_peer_deter_stats(struct cdp_soc_t *soc_hdl, uint8_t *addr,
|
||||||
struct cdp_peer_deter_stats *stats)
|
struct cdp_peer_deter_stats *stats)
|
||||||
|
Atsaukties uz šo jaunā problēmā
Block a user