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 01f80962ca..1047966cf2 100644 --- a/components/fw_offload/core/inc/wlan_fw_offload_main.h +++ b/components/fw_offload/core/inc/wlan_fw_offload_main.h @@ -60,6 +60,8 @@ * @bt_interference_high_ll: Lower limit of high level BT interference * @bt_interference_high_ul: Upper limit of high level BT interference * @btc_mpta_helper_enable: Enable/Disable tri-radio MPTA helper + * @bt_sco_allow_wlan_2g_scan: Enable/Disble wlan 2g scan when + * BT SCO connection is on */ struct wlan_fwol_coex_config { uint8_t btc_mode; @@ -76,6 +78,7 @@ struct wlan_fwol_coex_config { #ifdef FEATURE_MPTA_HELPER bool btc_mpta_helper_enable; #endif + bool bt_sco_allow_wlan_2g_scan; }; #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 4a1305fc84..b4da9d31f4 100644 --- a/components/fw_offload/core/src/wlan_fw_offload_main.c +++ b/components/fw_offload/core/src/wlan_fw_offload_main.c @@ -77,6 +77,8 @@ fwol_init_coex_config_in_cfg(struct wlan_objmgr_psoc *psoc, coex_config->bt_interference_high_ul = cfg_get(psoc, CFG_BT_INTERFERENCE_HIGH_UL); fwol_mpta_helper_config_get(psoc, coex_config); + coex_config->bt_sco_allow_wlan_2g_scan = + cfg_get(psoc, CFG_BT_SCO_ALLOW_WLAN_2G_SCAN); } static void diff --git a/components/fw_offload/dispatcher/inc/cfg_coex.h b/components/fw_offload/dispatcher/inc/cfg_coex.h index dcac2bf3ae..5c226f4b49 100644 --- a/components/fw_offload/dispatcher/inc/cfg_coex.h +++ b/components/fw_offload/dispatcher/inc/cfg_coex.h @@ -260,6 +260,29 @@ #define COEX_MPTA_HELPER_CFG #endif +/* + * + * gBtScoAllowWlan2GScan - Allow wlan 2g scan when BT SCO connection is on + * @Min: 0 + * @Max: 1 + * @Default: 1 + * + * 0 - Disable + * 1 - Enable + * + * This ini is used to enable or disable wlan 2g scan + * when BT SCO connection is on. + * + * + * Usage: External + * + * + */ +#define CFG_BT_SCO_ALLOW_WLAN_2G_SCAN CFG_INI_BOOL( \ + "gBtScoAllowWlan2GScan", \ + 1, \ + "Bt Sco Allow Wlan 2G Scan") + #define CFG_COEX_ALL \ CFG(CFG_BTC_MODE) \ CFG(CFG_ANTENNA_ISOLATION) \ @@ -272,5 +295,6 @@ CFG(CFG_BT_INTERFERENCE_MEDIUM_UL) \ CFG(CFG_BT_INTERFERENCE_HIGH_LL) \ CFG(CFG_BT_INTERFERENCE_HIGH_UL) \ - COEX_MPTA_HELPER_CFG + COEX_MPTA_HELPER_CFG \ + CFG(CFG_BT_SCO_ALLOW_WLAN_2G_SCAN) #endif diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 0743a971c2..bc89e46c2c 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -4801,6 +4801,16 @@ static int hdd_send_coex_config_params(struct hdd_context *hdd_ctx, if (wlan_hdd_mpta_helper_enable(&coex_cfg_params, &config)) goto err; + coex_cfg_params.config_type = + WMI_COEX_CONFIG_BT_SCO_ALLOW_WLAN_2G_SCAN; + coex_cfg_params.config_arg1 = config.bt_sco_allow_wlan_2g_scan; + + status = sme_send_coex_config_cmd(&coex_cfg_params); + if (QDF_IS_STATUS_ERROR(status)) { + hdd_err("Failed to send coex BT sco allow wlan 2g scan"); + goto err; + } + return 0; err: return -EINVAL;