diff --git a/components/fw_offload/core/inc/wlan_fw_offload_main.h b/components/fw_offload/core/inc/wlan_fw_offload_main.h index d478969f86..d3e26ca95e 100644 --- a/components/fw_offload/core/inc/wlan_fw_offload_main.h +++ b/components/fw_offload/core/inc/wlan_fw_offload_main.h @@ -82,6 +82,8 @@ enum wlan_fwol_southbound_event { * config legacy feature * @ble_scan_coex_policy: BLE Scan policy, true - better BLE scan result, false * better wlan throughput + * @coex_tput_shaping_enable: wifi traffic shaping enable, true - enable, + * false - disable */ struct wlan_fwol_coex_config { uint8_t btc_mode; @@ -103,6 +105,9 @@ struct wlan_fwol_coex_config { bool btc_three_way_coex_config_legacy_enable; #endif bool ble_scan_coex_policy; +#ifdef FEATURE_COEX_TPUT_SHAPING_CONFIG + bool coex_tput_shaping_enable; +#endif }; #define FWOL_THERMAL_LEVEL_MAX 4 diff --git a/components/fw_offload/core/src/wlan_fw_offload_main.c b/components/fw_offload/core/src/wlan_fw_offload_main.c index def95faafa..2c8e928c2d 100644 --- a/components/fw_offload/core/src/wlan_fw_offload_main.c +++ b/components/fw_offload/core/src/wlan_fw_offload_main.c @@ -110,6 +110,10 @@ fwol_init_coex_config_in_cfg(struct wlan_objmgr_psoc *psoc, fwol_three_way_coex_config_legacy_config_get(psoc, coex_config); coex_config->ble_scan_coex_policy = cfg_get(psoc, CFG_BLE_SCAN_COEX_POLICY); +#ifdef FEATURE_COEX_TPUT_SHAPING_CONFIG + coex_config->coex_tput_shaping_enable = + cfg_get(psoc, CFG_TPUT_SHAPING_ENABLE); +#endif } #ifdef THERMAL_STATS_SUPPORT diff --git a/components/fw_offload/dispatcher/inc/cfg_coex.h b/components/fw_offload/dispatcher/inc/cfg_coex.h index 8222eb3b4c..555cc4fee2 100644 --- a/components/fw_offload/dispatcher/inc/cfg_coex.h +++ b/components/fw_offload/dispatcher/inc/cfg_coex.h @@ -375,6 +375,32 @@ #define SET_INIT_CHAIN_MODE_FOR_BTC_CFG #endif +#ifdef FEATURE_COEX_TPUT_SHAPING_CONFIG +/* + * + * coex_tput_shaping_enable - Ini to enable wifi configure traffic shaping + * @Min: 0 + * @Max: 1 + * @Default: 0 + * + * 0 - traffic shaping is disable + * 1 - traffic shaping is enable + * + * This ini is used to enable and disable wifi traffic shaping + * + * Usage: External + * + * + */ +#define CFG_TPUT_SHAPING_ENABLE CFG_INI_BOOL( \ + "coex_tput_shaping_enable", \ + 0, \ + "coex_tput_shaping_enable") +#define TPUT_SHAPING_ENABLE_CFG CFG(CFG_TPUT_SHAPING_ENABLE) +#else +#define TPUT_SHAPING_ENABLE_CFG +#endif + #define CFG_COEX_ALL \ CFG(CFG_BTC_MODE) \ CFG(CFG_ANTENNA_ISOLATION) \ @@ -391,5 +417,6 @@ CFG(CFG_BT_SCO_ALLOW_WLAN_2G_SCAN) \ THREE_WAY_COEX_CONFIG_LEGACY_CFG \ SET_INIT_CHAIN_MODE_FOR_BTC_CFG \ - CFG(CFG_BLE_SCAN_COEX_POLICY) + CFG(CFG_BLE_SCAN_COEX_POLICY) \ + TPUT_SHAPING_ENABLE_CFG #endif diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 08843b1ecc..f49299ee81 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -7010,6 +7010,18 @@ static int hdd_send_coex_config_params(struct hdd_context *hdd_ctx, goto err; } +#ifdef FEATURE_COEX_TPUT_SHAPING_CONFIG + coex_cfg_params.config_type = + WMI_COEX_CONFIG_ENABLE_TPUT_SHAPING; + coex_cfg_params.config_arg1 = config.coex_tput_shaping_enable; + + status = sme_send_coex_config_cmd(&coex_cfg_params); + if (QDF_IS_STATUS_ERROR(status)) { + hdd_err("Failed to send coex traffic shaping value %d", + coex_cfg_params.config_arg1); + goto err; + } +#endif return 0; err: return -EINVAL;