qcacmn: Add dp ini param for sawf stats

Add dp ini-param to configure sawf_stats.

CRs-Fixed: 3300948
Change-Id: Ifeb6935e2309be1f974c4da30b33a5caca308569
This commit is contained in:
Vivek
2022-10-11 09:39:45 +05:30
committed by Madan Koyyalamudi
parent 63d8ecaa0f
commit 3b1f7ced17
6 changed files with 117 additions and 2 deletions

View File

@@ -1288,6 +1288,8 @@ enum cdp_pdev_param_type {
* @cdp_ipa_enabled : set ipa mode * @cdp_ipa_enabled : set ipa mode
* @cdp_psoc_param_vdev_stats_hw_offload: Configure HW vdev stats offload * @cdp_psoc_param_vdev_stats_hw_offload: Configure HW vdev stats offload
* @cdp_pdev_param_undecoded_metadata_enable: Undecoded metadata capture enable * @cdp_pdev_param_undecoded_metadata_enable: Undecoded metadata capture enable
* @cdp_sawf_enabled: SAWF enable/dsiable
* @cdp_sawf_stats: SAWF stats config
* @cdp_vdev_param_traffic_end_ind: Traffic end indication enable/disable * @cdp_vdev_param_traffic_end_ind: Traffic end indication enable/disable
* @cdp_skel_enable : Enable/Disable skeleton code for Umac reset debug * @cdp_skel_enable : Enable/Disable skeleton code for Umac reset debug
*/ */
@@ -1375,6 +1377,7 @@ typedef union cdp_config_param_t {
bool cdp_psoc_param_vdev_stats_hw_offload; bool cdp_psoc_param_vdev_stats_hw_offload;
bool cdp_pdev_param_undecoded_metadata_enable; bool cdp_pdev_param_undecoded_metadata_enable;
bool cdp_sawf_enabled; bool cdp_sawf_enabled;
uint8_t cdp_sawf_stats;
bool cdp_drop_3addr_mcast; bool cdp_drop_3addr_mcast;
bool cdp_vdev_param_traffic_end_ind; bool cdp_vdev_param_traffic_end_ind;
bool cdp_umac_rst_skel; bool cdp_umac_rst_skel;
@@ -1516,6 +1519,7 @@ enum cdp_vdev_param_type {
* @CDP_CFG_VDEV_STATS_HW_OFFLOAD: HW Vdev stats config * @CDP_CFG_VDEV_STATS_HW_OFFLOAD: HW Vdev stats config
* @CDP_UMAC_RST_SKEL_ENABLE: Enable Umac reset skeleton code for debug * @CDP_UMAC_RST_SKEL_ENABLE: Enable Umac reset skeleton code for debug
* @CDP_CDP_PPEDS_ENABLE: PPEDS is enabled or not * @CDP_CDP_PPEDS_ENABLE: PPEDS is enabled or not
* @CDP_SAWF_STATS : set SAWF stats config
*/ */
enum cdp_psoc_param_type { enum cdp_psoc_param_type {
CDP_ENABLE_RATE_STATS, CDP_ENABLE_RATE_STATS,
@@ -1527,6 +1531,7 @@ enum cdp_psoc_param_type {
CDP_SAWF_ENABLE, CDP_SAWF_ENABLE,
CDP_UMAC_RST_SKEL_ENABLE, CDP_UMAC_RST_SKEL_ENABLE,
CDP_PPEDS_ENABLE, CDP_PPEDS_ENABLE,
CDP_SAWF_STATS,
}; };
#define TXRX_FW_STATS_TXSTATS 1 #define TXRX_FW_STATS_TXSTATS 1

View File

@@ -313,6 +313,18 @@ cdp_get_drop_stats(ol_txrx_soc_handle soc, void *arg,
} }
#else #else
static inline QDF_STATUS
cdp_sawf_mpdu_stats_req(ol_txrx_soc_handle soc, uint8_t enable)
{
return QDF_STATUS_E_FAILURE;
}
static inline QDF_STATUS
cdp_sawf_mpdu_details_stats_req(ol_txrx_soc_handle soc, uint8_t enable)
{
return QDF_STATUS_E_FAILURE;
}
static inline QDF_STATUS static inline QDF_STATUS
cdp_get_peer_sawf_delay_stats(ol_txrx_soc_handle soc, uint32_t svc_id, cdp_get_peer_sawf_delay_stats(ol_txrx_soc_handle soc, uint32_t svc_id,
uint8_t *mac, void *data) uint8_t *mac, void *data)

View File

@@ -11004,6 +11004,10 @@ dp_set_psoc_param(struct cdp_soc_t *cdp_soc,
case CDP_UMAC_RST_SKEL_ENABLE: case CDP_UMAC_RST_SKEL_ENABLE:
dp_umac_rst_skel_enable_update(soc, val.cdp_umac_rst_skel); dp_umac_rst_skel_enable_update(soc, val.cdp_umac_rst_skel);
break; break;
case CDP_SAWF_STATS:
wlan_cfg_set_sawf_stats_config(wlan_cfg_ctx,
val.cdp_sawf_stats);
break;
default: default:
break; break;
} }
@@ -14047,7 +14051,7 @@ static struct cdp_sawf_ops dp_ops_sawf = {
.sawf_def_queues_unmap_req = dp_sawf_def_queues_unmap_req, .sawf_def_queues_unmap_req = dp_sawf_def_queues_unmap_req,
.sawf_def_queues_get_map_report = .sawf_def_queues_get_map_report =
dp_sawf_def_queues_get_map_report, dp_sawf_def_queues_get_map_report,
#ifdef CONFIG_SAWF #ifdef CONFIG_SAWF_STATS
.txrx_get_peer_sawf_delay_stats = dp_sawf_get_peer_delay_stats, .txrx_get_peer_sawf_delay_stats = dp_sawf_get_peer_delay_stats,
.txrx_get_peer_sawf_tx_stats = dp_sawf_get_peer_tx_stats, .txrx_get_peer_sawf_tx_stats = dp_sawf_get_peer_tx_stats,
.sawf_mpdu_stats_req = dp_sawf_mpdu_stats_req, .sawf_mpdu_stats_req = dp_sawf_mpdu_stats_req,

View File

@@ -472,6 +472,11 @@
#define WLAN_CFG_DP_NAPI_SCALE_FACTOR_MIN 0 #define WLAN_CFG_DP_NAPI_SCALE_FACTOR_MIN 0
#define WLAN_CFG_DP_NAPI_SCALE_FACTOR_MAX 4 #define WLAN_CFG_DP_NAPI_SCALE_FACTOR_MAX 4
#ifdef CONFIG_SAWF_STATS
#define WLAN_CFG_SAWF_STATS 0x0
#define WLAN_CFG_SAWF_STATS_MIN 0x0
#define WLAN_CFG_SAWF_STATS_MAX 0x7
#endif
/* /*
* <ini> * <ini>
* "dp_tx_capt_max_mem_mb"- maximum memory used by Tx capture * "dp_tx_capt_max_mem_mb"- maximum memory used by Tx capture
@@ -691,6 +696,19 @@
WLAN_CFG_TIME_CONTROL_BP_MAX,\ WLAN_CFG_TIME_CONTROL_BP_MAX,\
WLAN_CFG_TIME_CONTROL_BP,\ WLAN_CFG_TIME_CONTROL_BP,\
CFG_VALUE_OR_DEFAULT, "DP time control back pressure") CFG_VALUE_OR_DEFAULT, "DP time control back pressure")
#ifdef CONFIG_SAWF_STATS
#define CFG_DP_SAWF_STATS \
CFG_INI_UINT("dp_sawf_stats", \
WLAN_CFG_SAWF_STATS_MIN,\
WLAN_CFG_SAWF_STATS_MAX,\
WLAN_CFG_SAWF_STATS,\
CFG_VALUE_OR_DEFAULT, "DP sawf stats config")
#define CFG_DP_SAWF_STATS_CONFIG CFG(CFG_DP_SAWF_STATS)
#else
#define CFG_DP_SAWF_STATS_CONFIG
#endif
/* /*
* <ini> * <ini>
* dp_rx_pending_hl_threshold - High threshold of frame number to start * dp_rx_pending_hl_threshold - High threshold of frame number to start
@@ -1830,5 +1848,6 @@
CFG_DP_VDEV_STATS_HW_OFFLOAD \ CFG_DP_VDEV_STATS_HW_OFFLOAD \
CFG(CFG_DP_TX_CAPT_MAX_MEM_MB) \ CFG(CFG_DP_TX_CAPT_MAX_MEM_MB) \
CFG(CFG_DP_NAPI_SCALE_FACTOR) \ CFG(CFG_DP_NAPI_SCALE_FACTOR) \
CFG(CFG_DP_HOST_AST_DB_ENABLE) CFG(CFG_DP_HOST_AST_DB_ENABLE) \
CFG_DP_SAWF_STATS_CONFIG
#endif /* _CFG_DP_H_ */ #endif /* _CFG_DP_H_ */

View File

@@ -2629,6 +2629,58 @@ wlan_cfg_soc_update_tgt_params(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
CFG_DP_REO_RINGS_MAP); CFG_DP_REO_RINGS_MAP);
} }
#ifdef CONFIG_SAWF_STATS
/**
* wlan_soc_sawf_stats_cfg_attach() - Update sawf stats config in dp soc
* cfg context
* @psoc - Object manager psoc
* @wlan_cfg_ctx - dp soc cfg ctx
*
* Return: None
*/
static void
wlan_soc_sawf_stats_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
{
wlan_cfg_ctx->sawf_stats = cfg_get(psoc, CFG_DP_SAWF_STATS);
}
uint8_t wlan_cfg_get_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt *cfg)
{
return cfg->sawf_stats;
}
void wlan_cfg_set_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt *cfg,
uint8_t val)
{
cfg->sawf_stats = val;
}
#else
/**
* wlan_soc_sawf_stats_cfg_attach() - Update sawf stats config in dp soc
* cfg context
* @psoc - Object manager psoc
* @wlan_cfg_ctx - dp soc cfg ctx
*
* Return: None
*/
static void
wlan_soc_sawf_stats_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
{
}
uint8_t wlan_cfg_get_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt *cfg)
{
return 0;
}
void wlan_cfg_set_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt *cfg,
uint8_t val)
{
}
#endif /* CONFIG_SAWF_STATS */
/** /**
* wlan_cfg_soc_attach() - Allocate and prepare SoC configuration * wlan_cfg_soc_attach() - Allocate and prepare SoC configuration
* @psoc - Object manager psoc * @psoc - Object manager psoc
@@ -2840,6 +2892,7 @@ wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc)
wlan_cfg_ctx->napi_scale_factor = cfg_get(psoc, wlan_cfg_ctx->napi_scale_factor = cfg_get(psoc,
CFG_DP_NAPI_SCALE_FACTOR); CFG_DP_NAPI_SCALE_FACTOR);
wlan_soc_sawf_stats_cfg_attach(psoc, wlan_cfg_ctx);
return wlan_cfg_ctx; return wlan_cfg_ctx;
} }

View File

@@ -438,6 +438,9 @@ struct wlan_cfg_dp_soc_ctxt {
#endif #endif
#ifdef CONFIG_SAWF #ifdef CONFIG_SAWF
bool sawf_enabled; bool sawf_enabled;
#endif
#ifdef CONFIG_SAWF_STATS
uint8_t sawf_stats;
#endif #endif
uint8_t mpdu_retry_threshold_1; uint8_t mpdu_retry_threshold_1;
uint8_t mpdu_retry_threshold_2; uint8_t mpdu_retry_threshold_2;
@@ -2122,6 +2125,25 @@ wlan_cfg_set_sawf_config(struct wlan_cfg_dp_soc_ctxt *cfg, bool value);
bool bool
wlan_cfg_get_sawf_config(struct wlan_cfg_dp_soc_ctxt *cfg); wlan_cfg_get_sawf_config(struct wlan_cfg_dp_soc_ctxt *cfg);
/**
* wlan_cfg_set_sawf_stats_config() - Set SAWF stats config
* @cfg: config context
* @value: value to be set
*
* Return: void
*/
void
wlan_cfg_set_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt *cfg, uint8_t value);
/**
* wlan_cfg_get_sawf_stats_config() - Get SAWF stats config
* @cfg: config context
*
* Return: value for sawf_stats_config
*/
uint8_t
wlan_cfg_get_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt *cfg);
#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP) #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
/** /**
* wlan_cfg_mlo_rx_ring_map_get() - get rx ring map * wlan_cfg_mlo_rx_ring_map_get() - get rx ring map