qcacmn: Add support to enable tx hw latency stats at run time

This feature can be enabled runtime using sysfs interface.
Support is added to dump and clear the histogram stats.

The lower delay regions has to be more granular to indicate any
medium related issues for time sensitive XR applications.

Change-Id: I0a44a54d12d92ce016de349810cb2bedebaf9a58
CRs-Fixed: 2981006
Dieser Commit ist enthalten in:
Yeshwanth Sriram Guntuka
2021-11-15 21:41:57 +05:30
committet von Madan Koyyalamudi
Ursprung 3de51ff2c5
Commit df666b7116
13 geänderte Dateien mit 515 neuen und 103 gelöschten Zeilen

Datei anzeigen

@@ -2068,16 +2068,17 @@ bool dp_check_pdev_exists(struct dp_soc *soc, struct dp_pdev *data);
/**
* dp_update_delay_stats() - Update delay statistics in structure
* and fill min, max and avg delay
* @pdev: pdev handle
* and fill min, max and avg delay
* @tstats: tid tx stats
* @rstats: tid rx stats
* @delay: delay in ms
* @tid: tid value
* @mode: type of tx delay mode
* @ring id: ring number
*
* Return: none
*/
void dp_update_delay_stats(struct dp_pdev *pdev, uint32_t delay,
void dp_update_delay_stats(struct cdp_tid_tx_stats *tstats,
struct cdp_tid_rx_stats *rstats, uint32_t delay,
uint8_t tid, uint8_t mode, uint8_t ring_id);
/**
@@ -3471,4 +3472,48 @@ dp_peer_get_tx_capture_stats(struct cdp_soc_t *soc_hdl,
QDF_STATUS
dp_pdev_get_tx_capture_stats(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
struct cdp_pdev_tx_capture_stats *stats);
#ifdef HW_TX_DELAY_STATS_ENABLE
/*
* dp_is_vdev_tx_delay_stats_enabled(): Check if tx delay stats
* is enabled for vdev
* @vdev: dp vdev
*
* Return: true if tx delay stats is enabled for vdev else false
*/
static inline uint8_t dp_is_vdev_tx_delay_stats_enabled(struct dp_vdev *vdev)
{
return vdev->hw_tx_delay_stats_enabled;
}
/*
* dp_pdev_print_tx_delay_stats(): Print vdev tx delay stats
* for pdev
* @soc: dp soc
*
* Return: None
*/
void dp_pdev_print_tx_delay_stats(struct dp_soc *soc);
/**
* dp_pdev_clear_tx_delay_stats() - clear tx delay stats
* @soc: soc handle
*
* Return: None
*/
void dp_pdev_clear_tx_delay_stats(struct dp_soc *soc);
#else
static inline uint8_t dp_is_vdev_tx_delay_stats_enabled(struct dp_vdev *vdev)
{
return 0;
}
static inline void dp_pdev_print_tx_delay_stats(struct dp_soc *soc)
{
}
static inline void dp_pdev_clear_tx_delay_stats(struct dp_soc *soc)
{
}
#endif
#endif /* #ifndef _DP_INTERNAL_H_ */