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:

committed by
Madan Koyyalamudi

parent
d9ce043299
commit
eb543663d2
@@ -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
|
||||||
|
@@ -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);
|
||||||
|
@@ -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
|
||||||
|
@@ -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)
|
||||||
|
@@ -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
|
||||||
|
@@ -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 */
|
||||||
|
@@ -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
|
||||||
};
|
};
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user