qcacmn: Support HW Tx delay stat

Use WLAN_CONFIG_TX_DELAY to enable HW Tx delay for both
SAWF and non-SAWF stats.

Change-Id: I6db7d386c0e3654f53398dcba1db7c5568544b0c
CRs-Fixed: 3262425
This commit is contained in:
Ripan Deuri
2022-08-04 23:57:19 +05:30
committed by Madan Koyyalamudi
parent b98780527f
commit 28f25ca052
11 changed files with 33 additions and 31 deletions

View File

@@ -1251,7 +1251,7 @@ void cdp_txrx_peer_flush_frags(ol_txrx_soc_handle soc, uint8_t vdev_id,
peer_mac); peer_mac);
} }
#if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF) #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(WLAN_CONFIG_TX_DELAY)
/** /**
* 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

View File

@@ -898,7 +898,7 @@ struct cdp_ctrl_ops {
#endif #endif
#if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF) #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(WLAN_CONFIG_TX_DELAY)
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 #endif

View File

@@ -1180,7 +1180,7 @@ uint32_t dp_tx_comp_nf_handler(struct dp_intr *int_ctx, struct dp_soc *soc,
#endif #endif
#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP) && \ #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP) && \
defined(CONFIG_SAWF) defined(WLAN_CONFIG_TX_DELAY)
#define PPDUID_GET_HW_LINK_ID(PPDU_ID, LINK_ID_OFFSET, LINK_ID_BITS) \ #define PPDUID_GET_HW_LINK_ID(PPDU_ID, LINK_ID_OFFSET, LINK_ID_BITS) \
(((PPDU_ID) >> (LINK_ID_OFFSET)) & ((1 << (LINK_ID_BITS)) - 1)) (((PPDU_ID) >> (LINK_ID_OFFSET)) & ((1 << (LINK_ID_BITS)) - 1))

View File

@@ -13211,7 +13211,7 @@ 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*/
#if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF) #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(WLAN_CONFIG_TX_DELAY)
.txrx_set_delta_tsf = dp_set_delta_tsf, .txrx_set_delta_tsf = dp_set_delta_tsf,
#endif #endif
#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY #ifdef WLAN_FEATURE_TSF_UPLINK_DELAY

View File

@@ -4750,7 +4750,7 @@ void dp_tx_update_connectivity_stats(struct dp_soc *soc,
} }
#endif #endif
#if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF) #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(WLAN_CONFIG_TX_DELAY)
QDF_STATUS QDF_STATUS
dp_tx_compute_hw_delay_us(struct hal_tx_completion_status *ts, dp_tx_compute_hw_delay_us(struct hal_tx_completion_status *ts,
uint32_t delta_tsf, uint32_t delta_tsf,

View File

@@ -922,7 +922,7 @@ dp_tx_hw_desc_update_evt(uint8_t *hal_tx_desc_cached,
} }
#endif #endif
#if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF) #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(WLAN_CONFIG_TX_DELAY)
/** /**
* dp_tx_compute_hw_delay_us() - Compute hardware Tx completion delay * dp_tx_compute_hw_delay_us() - Compute hardware Tx completion delay
* @ts: Tx completion status * @ts: Tx completion status

View File

@@ -3367,7 +3367,7 @@ 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) #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(WLAN_CONFIG_TX_DELAY)
/* Delta between TQM clock and TSF clock */ /* Delta between TQM clock and TSF clock */
uint32_t delta_tsf; uint32_t delta_tsf;
#endif #endif

View File

@@ -340,6 +340,26 @@ void dp_tx_clear_consumed_hw_descs(struct dp_soc *soc,
} }
#endif /* CLEAR_SW2TCL_CONSUMED_DESC */ #endif /* CLEAR_SW2TCL_CONSUMED_DESC */
#ifdef WLAN_CONFIG_TX_DELAY
static inline
QDF_STATUS dp_tx_compute_hw_delay_li(struct dp_soc *soc,
struct dp_vdev *vdev,
struct hal_tx_completion_status *ts,
uint32_t *delay_us)
{
return dp_tx_compute_hw_delay_us(ts, vdev->delta_tsf, delay_us);
}
#else
static inline
QDF_STATUS dp_tx_compute_hw_delay_li(struct dp_soc *soc,
struct dp_vdev *vdev,
struct hal_tx_completion_status *ts,
uint32_t *delay_us)
{
return QDF_STATUS_SUCCESS;
}
#endif
#ifdef CONFIG_SAWF #ifdef CONFIG_SAWF
/** /**
* dp_sawf_config_li - Configure sawf specific fields in tcl * dp_sawf_config_li - Configure sawf specific fields in tcl
@@ -376,15 +396,6 @@ void dp_sawf_config_li(struct dp_soc *soc, uint32_t *hal_tx_desc_cached,
hal_tx_desc_set_search_index_li(soc->hal_soc, hal_tx_desc_cached, hal_tx_desc_set_search_index_li(soc->hal_soc, hal_tx_desc_cached,
search_index); search_index);
} }
static inline
QDF_STATUS dp_tx_compute_hw_delay_li(struct dp_soc *soc,
struct dp_vdev *vdev,
struct hal_tx_completion_status *ts,
uint32_t *delay_us)
{
return dp_tx_compute_hw_delay_us(ts, vdev->delta_tsf, delay_us);
}
#else #else
static inline static inline
void dp_sawf_config_li(struct dp_soc *soc, uint32_t *hal_tx_desc_cached, void dp_sawf_config_li(struct dp_soc *soc, uint32_t *hal_tx_desc_cached,
@@ -393,15 +404,6 @@ void dp_sawf_config_li(struct dp_soc *soc, uint32_t *hal_tx_desc_cached,
{ {
} }
static inline
QDF_STATUS dp_tx_compute_hw_delay_li(struct dp_soc *soc,
struct dp_vdev *vdev,
struct hal_tx_completion_status *ts,
uint32_t *delay_us)
{
return QDF_STATUS_SUCCESS;
}
#define dp_sawf_tx_enqueue_peer_stats(soc, tx_desc) #define dp_sawf_tx_enqueue_peer_stats(soc, tx_desc)
#define dp_sawf_tx_enqueue_fail_peer_stats(soc, tx_desc) #define dp_sawf_tx_enqueue_fail_peer_stats(soc, tx_desc)
#endif #endif

View File

@@ -32,7 +32,7 @@
*/ */
#define SHOW_DEFINED(x) do {} while (0) #define SHOW_DEFINED(x) do {} while (0)
#if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF) #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(WLAN_CONFIG_TX_DELAY)
static inline void static inline void
hal_tx_comp_get_buffer_timestamp_be(void *desc, hal_tx_comp_get_buffer_timestamp_be(void *desc,
struct hal_tx_completion_status *ts) struct hal_tx_completion_status *ts)
@@ -40,7 +40,7 @@ hal_tx_comp_get_buffer_timestamp_be(void *desc,
ts->buffer_timestamp = HAL_TX_DESC_GET(desc, WBM2SW_COMPLETION_RING_TX, ts->buffer_timestamp = HAL_TX_DESC_GET(desc, WBM2SW_COMPLETION_RING_TX,
BUFFER_TIMESTAMP); BUFFER_TIMESTAMP);
} }
#else /* !WLAN_FEATURE_TSF_UPLINK_DELAY || CONFIG_SAWF */ #else /* !WLAN_FEATURE_TSF_UPLINK_DELAY || WLAN_CONFIG_TX_DELAY */
static inline void static inline void
hal_tx_comp_get_buffer_timestamp_be(void *desc, hal_tx_comp_get_buffer_timestamp_be(void *desc,
struct hal_tx_completion_status *ts) struct hal_tx_completion_status *ts)

View File

@@ -233,7 +233,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;
#if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF) #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(WLAN_CONFIG_TX_DELAY)
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);
} }
#if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF) #if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(WLAN_CONFIG_TX_DELAY)
static inline void static inline void
hal_tx_comp_get_buffer_timestamp_li(void *desc, hal_tx_comp_get_buffer_timestamp_li(void *desc,
struct hal_tx_completion_status *ts) struct hal_tx_completion_status *ts)
@@ -77,13 +77,13 @@ hal_tx_comp_get_buffer_timestamp_li(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 || CONFIG_SAWF */ #else /* !WLAN_FEATURE_TSF_UPLINK_DELAY || WLAN_CONFIG_TX_DELAY */
static inline void static inline void
hal_tx_comp_get_buffer_timestamp_li(void *desc, hal_tx_comp_get_buffer_timestamp_li(void *desc,
struct hal_tx_completion_status *ts) struct hal_tx_completion_status *ts)
{ {
} }
#endif /* WLAN_FEATURE_TSF_UPLINK_DELAY || CONFIG_SAWF */ #endif /* WLAN_FEATURE_TSF_UPLINK_DELAY || WLAN_CONFIG_TX_DELAY */
#ifdef QCA_UNDECODED_METADATA_SUPPORT #ifdef QCA_UNDECODED_METADATA_SUPPORT
static inline void static inline void