diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index 9f4f407eff68..4e6b4c697c26 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -14370,6 +14370,23 @@ enum hdd_external_acs_freq_band { #define CFG_CHANNEL_SELECT_LOGIC_CONC_MAX (0xFFFFFFFF) #define CFG_CHANNEL_SELECT_LOGIC_CONC_DEFAULT (0x00000003) +/* + * + * gTxSchDelay - Enable/Disable Tx sch delay + * @Min: 0 + * @Max: 1 + * @Default: 1 + * + * Usage: Internal/External + * + * + */ + +#define CFG_TX_SCH_DELAY_NAME "gTxSchDelay" +#define CFG_TX_SCH_DELAY_MIN (0) +#define CFG_TX_SCH_DELAY_MAX (1) +#define CFG_TX_SCH_DELAY_DEFAULT (1) + /* * Type declarations */ @@ -15285,6 +15302,7 @@ struct hdd_config { bool enable_dtim_selection_diversity; uint32_t channel_select_logic_conc; bool enable_bt_chain_separation; + bool enable_tx_sch_delay; }; #define VAR_OFFSET(_Struct, _Var) (offsetof(_Struct, _Var)) diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index 89ec7918eec8..48c79545c1c3 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -5545,6 +5545,14 @@ struct reg_table_entry g_registry_table[] = { CFG_CHANNEL_SELECT_LOGIC_CONC_DEFAULT, CFG_CHANNEL_SELECT_LOGIC_CONC_MIN, CFG_CHANNEL_SELECT_LOGIC_CONC_MAX), + + REG_VARIABLE(CFG_TX_SCH_DELAY_NAME, + WLAN_PARAM_Integer, + struct hdd_config, enable_tx_sch_delay, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TX_SCH_DELAY_DEFAULT, + CFG_TX_SCH_DELAY_MIN, + CFG_TX_SCH_DELAY_MAX), }; @@ -7441,6 +7449,9 @@ void hdd_cfg_print(struct hdd_context *hdd_ctx) hdd_debug("Name = [%s] value = [%d]", CFG_DTIM_SELECTION_DIVERSITY_NAME, hdd_ctx->config->enable_dtim_selection_diversity); + hdd_debug("Name = [%s] value = [%d]", + CFG_TX_SCH_DELAY_NAME, + hdd_ctx->config->enable_tx_sch_delay); hdd_cfg_print_11k_offload_params(hdd_ctx); hdd_debug("Name = [%s] value = [0x%x]", diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 0dbd50b932e3..2b86a5c150f8 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -4474,6 +4474,16 @@ int hdd_set_fw_params(struct hdd_adapter *adapter) goto error; } + ret = sme_cli_set_command( + adapter->session_id, + WMI_PDEV_PARAM_TX_SCH_DELAY, + hdd_ctx->config->enable_tx_sch_delay, + PDEV_CMD); + if (ret) { + hdd_err("Failed to set WMI_PDEV_PARAM_TX_SCH_DELAY"); + goto error; + } + if (adapter->device_mode == QDF_STA_MODE) { sme_set_smps_cfg(adapter->session_id, HDD_STA_SMPS_PARAM_UPPER_BRSSI_THRESH,