qcacmn: Enable usage of delta_tsf for SAWF

Enable usage of delta_tsf for SAWF. This will be used to compute tx
delay. Also, add support to update sawf stats in tx completion.

Change-Id: Idab7fbd5217175167ecdeee21cf5dc9daf1415d6
CRs-Fixed: 3135773
This commit is contained in:
Ripan Deuri
2022-02-01 22:35:06 +05:30
committed by Madan Koyyalamudi
parent d9ce043299
commit eb543663d2
8 changed files with 52 additions and 15 deletions

View File

@@ -1348,7 +1348,7 @@ void cdp_txrx_peer_flush_frags(ol_txrx_soc_handle soc, uint8_t vdev_id,
peer_mac); peer_mac);
} }
#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF)
/** /**
* cdp_set_delta_tsf() - wrapper function to set delta_tsf * cdp_set_delta_tsf() - wrapper function to set delta_tsf
* @soc: SOC TXRX handle * @soc: SOC TXRX handle
@@ -1372,7 +1372,8 @@ static inline void cdp_set_delta_tsf(ol_txrx_soc_handle soc, uint8_t vdev_id,
soc->ops->ctrl_ops->txrx_set_delta_tsf(soc, vdev_id, delta_tsf); soc->ops->ctrl_ops->txrx_set_delta_tsf(soc, vdev_id, delta_tsf);
} }
#endif
#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY
/** /**
* cdp_set_tsf_ul_delay_report() - Enable or disable reporting uplink delay * cdp_set_tsf_ul_delay_report() - Enable or disable reporting uplink delay
* @soc: SOC TXRX handle * @soc: SOC TXRX handle

View File

@@ -852,9 +852,11 @@ struct cdp_ctrl_ops {
#endif #endif
#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF)
void (*txrx_set_delta_tsf)(struct cdp_soc_t *soc, uint8_t vdev_id, void (*txrx_set_delta_tsf)(struct cdp_soc_t *soc, uint8_t vdev_id,
uint32_t delta_tsf); uint32_t delta_tsf);
#endif
#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY
QDF_STATUS (*txrx_set_tsf_ul_delay_report)(struct cdp_soc_t *soc, QDF_STATUS (*txrx_set_tsf_ul_delay_report)(struct cdp_soc_t *soc,
uint8_t vdev_id, uint8_t vdev_id,
bool enable); bool enable);

View File

@@ -12269,8 +12269,10 @@ static struct cdp_ctrl_ops dp_ops_ctrl = {
#ifdef QCA_MULTIPASS_SUPPORT #ifdef QCA_MULTIPASS_SUPPORT
.txrx_peer_set_vlan_id = dp_peer_set_vlan_id, .txrx_peer_set_vlan_id = dp_peer_set_vlan_id,
#endif /*QCA_MULTIPASS_SUPPORT*/ #endif /*QCA_MULTIPASS_SUPPORT*/
#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF)
.txrx_set_delta_tsf = dp_set_delta_tsf, .txrx_set_delta_tsf = dp_set_delta_tsf,
#endif
#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY
.txrx_set_tsf_ul_delay_report = dp_set_tsf_ul_delay_report, .txrx_set_tsf_ul_delay_report = dp_set_tsf_ul_delay_report,
.txrx_get_uplink_delay = dp_get_uplink_delay, .txrx_get_uplink_delay = dp_get_uplink_delay,
#endif #endif

View File

@@ -50,6 +50,9 @@
#include "dp_txrx_wds.h" #include "dp_txrx_wds.h"
#endif #endif
#include "cdp_txrx_cmn_reg.h" #include "cdp_txrx_cmn_reg.h"
#ifdef CONFIG_SAWF
#include <dp_sawf.h>
#endif
/* Flag to skip CCE classify when mesh or tid override enabled */ /* Flag to skip CCE classify when mesh or tid override enabled */
#define DP_TX_SKIP_CCE_CLASSIFY \ #define DP_TX_SKIP_CCE_CLASSIFY \
@@ -3661,6 +3664,30 @@ void dp_tx_comp_fill_tx_completion_stats(struct dp_tx_desc_s *tx_desc,
#endif #endif
#ifdef CONFIG_SAWF
static void dp_tx_update_peer_sawf_stats(struct dp_soc *soc,
struct dp_vdev *vdev,
struct dp_txrx_peer *txrx_peer,
struct dp_tx_desc_s *tx_desc,
struct hal_tx_completion_status *ts,
uint8_t tid)
{
dp_sawf_tx_compl_update_peer_stats(soc, vdev, txrx_peer, tx_desc,
ts, tid);
}
#else
static void dp_tx_update_peer_sawf_stats(struct dp_soc *soc,
struct dp_vdev *vdev,
struct dp_txrx_peer *txrx_peer,
struct dp_tx_desc_s *tx_desc,
struct hal_tx_completion_status *ts,
uint8_t tid)
{
}
#endif
#ifdef QCA_PEER_EXT_STATS #ifdef QCA_PEER_EXT_STATS
/* /*
* dp_tx_compute_tid_delay() - Compute per TID delay * dp_tx_compute_tid_delay() - Compute per TID delay
@@ -4291,7 +4318,7 @@ void dp_tx_update_connectivity_stats(struct dp_soc *soc,
} }
#endif #endif
#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF)
void dp_set_delta_tsf(struct cdp_soc_t *soc_hdl, uint8_t vdev_id, void dp_set_delta_tsf(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
uint32_t delta_tsf) uint32_t delta_tsf)
{ {
@@ -4309,7 +4336,8 @@ void dp_set_delta_tsf(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
dp_vdev_unref_delete(soc, vdev, DP_MOD_ID_CDP); dp_vdev_unref_delete(soc, vdev, DP_MOD_ID_CDP);
} }
#endif
#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY
QDF_STATUS dp_set_tsf_ul_delay_report(struct cdp_soc_t *soc_hdl, QDF_STATUS dp_set_tsf_ul_delay_report(struct cdp_soc_t *soc_hdl,
uint8_t vdev_id, bool enable) uint8_t vdev_id, bool enable)
{ {
@@ -4540,6 +4568,8 @@ void dp_tx_comp_process_tx_status(struct dp_soc *soc,
dp_tx_update_peer_stats(tx_desc, ts, txrx_peer, ring_id); dp_tx_update_peer_stats(tx_desc, ts, txrx_peer, ring_id);
dp_tx_update_peer_delay_stats(txrx_peer, tx_desc, ts->tid, ring_id); dp_tx_update_peer_delay_stats(txrx_peer, tx_desc, ts->tid, ring_id);
dp_tx_update_peer_sawf_stats(soc, vdev, txrx_peer, tx_desc,
ts, ts->tid);
#ifdef QCA_SUPPORT_RDK_STATS #ifdef QCA_SUPPORT_RDK_STATS
if (soc->rdkstats_enabled) if (soc->rdkstats_enabled)

View File

@@ -897,7 +897,7 @@ dp_tx_hw_desc_update_evt(uint8_t *hal_tx_desc_cached,
} }
#endif #endif
#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF)
/** /**
* dp_set_delta_tsf() - Set delta_tsf to dp_soc structure * dp_set_delta_tsf() - Set delta_tsf to dp_soc structure
* @soc_hdl: cdp soc pointer * @soc_hdl: cdp soc pointer
@@ -908,7 +908,8 @@ dp_tx_hw_desc_update_evt(uint8_t *hal_tx_desc_cached,
*/ */
void dp_set_delta_tsf(struct cdp_soc_t *soc_hdl, uint8_t vdev_id, void dp_set_delta_tsf(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
uint32_t delta_tsf); uint32_t delta_tsf);
#endif
#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY
/** /**
* dp_set_tsf_report_ul_delay() - Enable or disable reporting uplink delay * dp_set_tsf_report_ul_delay() - Enable or disable reporting uplink delay
* @soc_hdl: cdp soc pointer * @soc_hdl: cdp soc pointer

View File

@@ -3138,12 +3138,13 @@ struct dp_vdev {
#ifdef WIFI_MONITOR_SUPPORT #ifdef WIFI_MONITOR_SUPPORT
struct dp_mon_vdev *monitor_vdev; struct dp_mon_vdev *monitor_vdev;
#endif #endif
#if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF)
/* Delta between TQM clock and TSF clock */
uint32_t delta_tsf;
#endif
#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY #ifdef WLAN_FEATURE_TSF_UPLINK_DELAY
/* Indicate if uplink delay report is enabled or not */ /* Indicate if uplink delay report is enabled or not */
qdf_atomic_t ul_delay_report; qdf_atomic_t ul_delay_report;
/* Delta between TQM clock and TSF clock */
uint32_t delta_tsf;
/* accumulative delay for every TX completion */ /* accumulative delay for every TX completion */
qdf_atomic_t ul_delay_accum; qdf_atomic_t ul_delay_accum;
/* accumulative number of packets delay has accumulated */ /* accumulative number of packets delay has accumulated */

View File

@@ -213,7 +213,7 @@ struct hal_tx_completion_status {
uint8_t transmit_cnt; uint8_t transmit_cnt;
uint8_t tid; uint8_t tid;
uint16_t peer_id; uint16_t peer_id;
#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF)
uint32_t buffer_timestamp:19; uint32_t buffer_timestamp:19;
#endif #endif
}; };

View File

@@ -69,7 +69,7 @@ void hal_rx_wbm_err_info_get_generic_li(void *wbm_desc,
wbm_er_info->rxdma_err_code = HAL_RX_WBM_RXDMA_ERROR_CODE_GET(wbm_desc); wbm_er_info->rxdma_err_code = HAL_RX_WBM_RXDMA_ERROR_CODE_GET(wbm_desc);
} }
#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF)
static inline void static inline void
hal_tx_comp_get_buffer_timestamp(void *desc, hal_tx_comp_get_buffer_timestamp(void *desc,
struct hal_tx_completion_status *ts) struct hal_tx_completion_status *ts)
@@ -77,13 +77,13 @@ hal_tx_comp_get_buffer_timestamp(void *desc,
ts->buffer_timestamp = HAL_TX_DESC_GET(desc, WBM_RELEASE_RING_4, ts->buffer_timestamp = HAL_TX_DESC_GET(desc, WBM_RELEASE_RING_4,
BUFFER_TIMESTAMP); BUFFER_TIMESTAMP);
} }
#else /* !WLAN_FEATURE_TSF_UPLINK_DELAY */ #else /* !WLAN_FEATURE_TSF_UPLINK_DELAY || CONFIG_SAWF */
static inline void static inline void
hal_tx_comp_get_buffer_timestamp(void *desc, hal_tx_comp_get_buffer_timestamp(void *desc,
struct hal_tx_completion_status *ts) struct hal_tx_completion_status *ts)
{ {
} }
#endif /* WLAN_FEATURE_TSF_UPLINK_DELAY */ #endif /* WLAN_FEATURE_TSF_UPLINK_DELAY || CONFIG_SAWF */
#ifdef QCA_UNDECODED_METADATA_SUPPORT #ifdef QCA_UNDECODED_METADATA_SUPPORT
static inline void static inline void