diff --git a/dp/inc/cdp_txrx_ctrl.h b/dp/inc/cdp_txrx_ctrl.h index abba0714b0..9c314ed28d 100644 --- a/dp/inc/cdp_txrx_ctrl.h +++ b/dp/inc/cdp_txrx_ctrl.h @@ -1348,7 +1348,7 @@ void cdp_txrx_peer_flush_frags(ol_txrx_soc_handle soc, uint8_t vdev_id, 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 * @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); } - +#endif +#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY /** * cdp_set_tsf_ul_delay_report() - Enable or disable reporting uplink delay * @soc: SOC TXRX handle diff --git a/dp/inc/cdp_txrx_ops.h b/dp/inc/cdp_txrx_ops.h index f1f1c407ce..5a88ad7610 100644 --- a/dp/inc/cdp_txrx_ops.h +++ b/dp/inc/cdp_txrx_ops.h @@ -852,9 +852,11 @@ struct cdp_ctrl_ops { #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, uint32_t delta_tsf); +#endif +#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY QDF_STATUS (*txrx_set_tsf_ul_delay_report)(struct cdp_soc_t *soc, uint8_t vdev_id, bool enable); diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 892fbec44e..c610db718e 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -12269,8 +12269,10 @@ static struct cdp_ctrl_ops dp_ops_ctrl = { #ifdef QCA_MULTIPASS_SUPPORT .txrx_peer_set_vlan_id = dp_peer_set_vlan_id, #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, +#endif +#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY .txrx_set_tsf_ul_delay_report = dp_set_tsf_ul_delay_report, .txrx_get_uplink_delay = dp_get_uplink_delay, #endif diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c index 30097cc24a..2982ca13fb 100644 --- a/dp/wifi3.0/dp_tx.c +++ b/dp/wifi3.0/dp_tx.c @@ -50,6 +50,9 @@ #include "dp_txrx_wds.h" #endif #include "cdp_txrx_cmn_reg.h" +#ifdef CONFIG_SAWF +#include +#endif /* Flag to skip CCE classify when mesh or tid override enabled */ #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 +#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 /* * dp_tx_compute_tid_delay() - Compute per TID delay @@ -4291,7 +4318,7 @@ void dp_tx_update_connectivity_stats(struct dp_soc *soc, } #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, 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); } - +#endif +#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY QDF_STATUS dp_set_tsf_ul_delay_report(struct cdp_soc_t *soc_hdl, 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_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 if (soc->rdkstats_enabled) diff --git a/dp/wifi3.0/dp_tx.h b/dp/wifi3.0/dp_tx.h index 21fde0df7c..cd6ac72706 100644 --- a/dp/wifi3.0/dp_tx.h +++ b/dp/wifi3.0/dp_tx.h @@ -897,7 +897,7 @@ dp_tx_hw_desc_update_evt(uint8_t *hal_tx_desc_cached, } #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 * @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, uint32_t delta_tsf); - +#endif +#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY /** * dp_set_tsf_report_ul_delay() - Enable or disable reporting uplink delay * @soc_hdl: cdp soc pointer diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index 03cb0758ce..8d66aea264 100644 --- a/dp/wifi3.0/dp_types.h +++ b/dp/wifi3.0/dp_types.h @@ -3138,12 +3138,13 @@ struct dp_vdev { #ifdef WIFI_MONITOR_SUPPORT struct dp_mon_vdev *monitor_vdev; #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 /* Indicate if uplink delay report is enabled or not */ qdf_atomic_t ul_delay_report; - /* Delta between TQM clock and TSF clock */ - uint32_t delta_tsf; /* accumulative delay for every TX completion */ qdf_atomic_t ul_delay_accum; /* accumulative number of packets delay has accumulated */ diff --git a/hal/wifi3.0/hal_tx.h b/hal/wifi3.0/hal_tx.h index c5cc36063e..bdba892aa4 100644 --- a/hal/wifi3.0/hal_tx.h +++ b/hal/wifi3.0/hal_tx.h @@ -213,7 +213,7 @@ struct hal_tx_completion_status { uint8_t transmit_cnt; uint8_t tid; 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; #endif }; diff --git a/hal/wifi3.0/li/hal_li_generic_api.h b/hal/wifi3.0/li/hal_li_generic_api.h index d3a403c8ff..6374f44c40 100644 --- a/hal/wifi3.0/li/hal_li_generic_api.h +++ b/hal/wifi3.0/li/hal_li_generic_api.h @@ -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); } -#ifdef WLAN_FEATURE_TSF_UPLINK_DELAY +#if defined(WLAN_FEATURE_TSF_UPLINK_DELAY) || defined(CONFIG_SAWF) static inline void hal_tx_comp_get_buffer_timestamp(void *desc, 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, BUFFER_TIMESTAMP); } -#else /* !WLAN_FEATURE_TSF_UPLINK_DELAY */ +#else /* !WLAN_FEATURE_TSF_UPLINK_DELAY || CONFIG_SAWF */ static inline void hal_tx_comp_get_buffer_timestamp(void *desc, 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 static inline void