Kaynağa Gözat

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
Ripan Deuri 3 yıl önce
ebeveyn
işleme
eb543663d2

+ 3 - 2
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

+ 3 - 1
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);

+ 3 - 1
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

+ 32 - 2
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 <dp_sawf.h>
+#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)

+ 3 - 2
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

+ 4 - 3
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 */

+ 1 - 1
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
 };

+ 3 - 3
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