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 499ffd80f6..ce6085ffc2 100644
--- a/components/fw_offload/core/inc/wlan_fw_offload_main.h
+++ b/components/fw_offload/core/inc/wlan_fw_offload_main.h
@@ -60,7 +60,7 @@ enum wlan_fwol_southbound_event {
};
/**
- * struct wlan_fwol_three_antenna_btc - Three antenna BTC config items
+ * struct wlan_fwol_coex_config - BTC config items
* @btc_mode: Config BTC mode
* @antenna_isolation: Antenna isolation
* @max_tx_power_for_btc: Max wlan tx power in co-ex scenario
@@ -77,6 +77,8 @@ enum wlan_fwol_southbound_event {
* BT SCO connection is on
* @btc_three_way_coex_config_legacy_enable: Enable/Disable tri-radio coex
* config legacy feature
+ * @ble_scan_coex_policy: BLE Scan policy, true - better BLE scan result, false
+ * better wlan throughput
*/
struct wlan_fwol_coex_config {
uint8_t btc_mode;
@@ -97,6 +99,7 @@ struct wlan_fwol_coex_config {
#ifdef FEATURE_COEX_CONFIG
bool btc_three_way_coex_config_legacy_enable;
#endif
+ bool ble_scan_coex_policy;
};
#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 e893fbdd2a..8886bb8a6c 100644
--- a/components/fw_offload/core/src/wlan_fw_offload_main.c
+++ b/components/fw_offload/core/src/wlan_fw_offload_main.c
@@ -107,6 +107,8 @@ fwol_init_coex_config_in_cfg(struct wlan_objmgr_psoc *psoc,
coex_config->bt_sco_allow_wlan_2g_scan =
cfg_get(psoc, CFG_BT_SCO_ALLOW_WLAN_2G_SCAN);
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);
}
static void
diff --git a/components/fw_offload/dispatcher/inc/cfg_coex.h b/components/fw_offload/dispatcher/inc/cfg_coex.h
index 134a21406f..b242bfbc20 100644
--- a/components/fw_offload/dispatcher/inc/cfg_coex.h
+++ b/components/fw_offload/dispatcher/inc/cfg_coex.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 - 2020 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012 - 2021 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -282,6 +282,29 @@
1, \
"Bt Sco Allow Wlan 2G Scan")
+/*
+ *
+ * ble_scan_coex_policy - Ini to configure coex policy
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * 0 - Better BLE Advertiser reception performance
+ * 1 - Better WLAN performance
+ *
+ * This ini is used to control the performance of ble scan case,’0’ to place
+ * more emphasis on BLE Scan results , ‘1’ to place more emphasis on WLAN
+ * performance
+ *
+ * Usage: External
+ *
+ *
+ */
+#define CFG_BLE_SCAN_COEX_POLICY CFG_INI_BOOL( \
+ "ble_scan_coex_policy", \
+ 0, \
+ "BLE scan Coex policy")
+
#ifdef FEATURE_COEX_CONFIG
/*
*
@@ -363,5 +386,6 @@
COEX_MPTA_HELPER_CFG \
CFG(CFG_BT_SCO_ALLOW_WLAN_2G_SCAN) \
THREE_WAY_COEX_CONFIG_LEGACY_CFG \
- SET_INIT_CHAIN_MODE_FOR_BTC_CFG
+ SET_INIT_CHAIN_MODE_FOR_BTC_CFG \
+ CFG(CFG_BLE_SCAN_COEX_POLICY)
#endif
diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c
index 4239c20212..814744598e 100644
--- a/core/hdd/src/wlan_hdd_main.c
+++ b/core/hdd/src/wlan_hdd_main.c
@@ -6412,6 +6412,16 @@ static int hdd_send_coex_config_params(struct hdd_context *hdd_ctx,
goto err;
}
+ coex_cfg_params.config_type =
+ WMI_COEX_CONFIG_LE_SCAN_POLICY;
+ coex_cfg_params.config_arg1 = config.ble_scan_coex_policy;
+
+ status = sme_send_coex_config_cmd(&coex_cfg_params);
+ if (QDF_IS_STATUS_ERROR(status)) {
+ hdd_err("Failed to send coex BLE scan policy");
+ goto err;
+ }
+
return 0;
err:
return -EINVAL;