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:

committad av
Madan Koyyalamudi

förälder
d9ce043299
incheckning
eb543663d2
@@ -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
|
||||
|
@@ -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);
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
@@ -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 */
|
||||
|
@@ -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
|
||||
};
|
||||
|
@@ -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
|
||||
|
Referens i nytt ärende
Block a user