diff --git a/dp/inc/cdp_txrx_cmn_struct.h b/dp/inc/cdp_txrx_cmn_struct.h index ebc6b95d8e..b97837463f 100644 --- a/dp/inc/cdp_txrx_cmn_struct.h +++ b/dp/inc/cdp_txrx_cmn_struct.h @@ -1288,6 +1288,8 @@ enum cdp_pdev_param_type { * @cdp_ipa_enabled : set ipa mode * @cdp_psoc_param_vdev_stats_hw_offload: Configure HW vdev stats offload * @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_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_pdev_param_undecoded_metadata_enable; bool cdp_sawf_enabled; + uint8_t cdp_sawf_stats; bool cdp_drop_3addr_mcast; bool cdp_vdev_param_traffic_end_ind; 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_UMAC_RST_SKEL_ENABLE: Enable Umac reset skeleton code for debug * @CDP_CDP_PPEDS_ENABLE: PPEDS is enabled or not + * @CDP_SAWF_STATS : set SAWF stats config */ enum cdp_psoc_param_type { CDP_ENABLE_RATE_STATS, @@ -1527,6 +1531,7 @@ enum cdp_psoc_param_type { CDP_SAWF_ENABLE, CDP_UMAC_RST_SKEL_ENABLE, CDP_PPEDS_ENABLE, + CDP_SAWF_STATS, }; #define TXRX_FW_STATS_TXSTATS 1 diff --git a/dp/inc/cdp_txrx_sawf.h b/dp/inc/cdp_txrx_sawf.h index e5a2046e15..8ab8c2f955 100644 --- a/dp/inc/cdp_txrx_sawf.h +++ b/dp/inc/cdp_txrx_sawf.h @@ -313,6 +313,18 @@ cdp_get_drop_stats(ol_txrx_soc_handle soc, void *arg, } #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 cdp_get_peer_sawf_delay_stats(ol_txrx_soc_handle soc, uint32_t svc_id, uint8_t *mac, void *data) diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 16af41fffb..babb2718a2 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -11004,6 +11004,10 @@ dp_set_psoc_param(struct cdp_soc_t *cdp_soc, case CDP_UMAC_RST_SKEL_ENABLE: dp_umac_rst_skel_enable_update(soc, val.cdp_umac_rst_skel); break; + case CDP_SAWF_STATS: + wlan_cfg_set_sawf_stats_config(wlan_cfg_ctx, + val.cdp_sawf_stats); + break; default: 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_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_tx_stats = dp_sawf_get_peer_tx_stats, .sawf_mpdu_stats_req = dp_sawf_mpdu_stats_req, diff --git a/wlan_cfg/cfg_dp.h b/wlan_cfg/cfg_dp.h index 87c737540f..ac8ebd3736 100644 --- a/wlan_cfg/cfg_dp.h +++ b/wlan_cfg/cfg_dp.h @@ -472,6 +472,11 @@ #define WLAN_CFG_DP_NAPI_SCALE_FACTOR_MIN 0 #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 /* * * "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,\ 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 + /* * * dp_rx_pending_hl_threshold - High threshold of frame number to start @@ -1830,5 +1848,6 @@ CFG_DP_VDEV_STATS_HW_OFFLOAD \ CFG(CFG_DP_TX_CAPT_MAX_MEM_MB) \ 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_ */ diff --git a/wlan_cfg/wlan_cfg.c b/wlan_cfg/wlan_cfg.c index 54dc5dcf71..5cbf151a7c 100644 --- a/wlan_cfg/wlan_cfg.c +++ b/wlan_cfg/wlan_cfg.c @@ -2629,6 +2629,58 @@ wlan_cfg_soc_update_tgt_params(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, 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 * @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, CFG_DP_NAPI_SCALE_FACTOR); + wlan_soc_sawf_stats_cfg_attach(psoc, wlan_cfg_ctx); return wlan_cfg_ctx; } diff --git a/wlan_cfg/wlan_cfg.h b/wlan_cfg/wlan_cfg.h index cde4bf2d99..5c2a12edb6 100644 --- a/wlan_cfg/wlan_cfg.h +++ b/wlan_cfg/wlan_cfg.h @@ -438,6 +438,9 @@ struct wlan_cfg_dp_soc_ctxt { #endif #ifdef CONFIG_SAWF bool sawf_enabled; +#endif +#ifdef CONFIG_SAWF_STATS + uint8_t sawf_stats; #endif uint8_t mpdu_retry_threshold_1; 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 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) /** * wlan_cfg_mlo_rx_ring_map_get() - get rx ring map