summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaidiReddy Yenuga <c_saidir@qti.qualcomm.com>2016-06-29 12:06:30 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-07-01 11:54:19 +0530
commitb3be607829c9edac382eb48bb258c65143fdf42e (patch)
tree1175e186ef33d80226963d96a922bb5a01f1e622
parentdc8d1c7fb62125417c522772fa05acb0d603794e (diff)
qcacld-2.0: Add ini config for COEX setting for WLAN connection
Host gets the config value in ini file and send WMI_COEX_CONFIG command with the config type and the config values to firmware. CRs-Fixed: 1035630 Change-Id: Icf72a5113d3ea15bf9698d22c8891f8da4b1067c
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg.h19
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg.c24
-rw-r--r--CORE/SME/inc/sme_Api.h2
-rw-r--r--CORE/SME/src/sme_common/sme_Api.c40
4 files changed, 85 insertions, 0 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 06d44639c416..e0ea1955ec4b 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -3417,6 +3417,21 @@ enum dot11p_mode {
#define CFG_BTC_WLAN_INTERVAL_PAGE_SAP_DEFAULT (30)
/**
+ * Config to set WLAN connection params
+ * 0: coex preference
+ * 1: reserved
+ */
+#define CFG_BTC_WLAN_CONN_PARAM0 "gWlanConnVal0"
+#define CFG_BTC_WLAN_CONN_PARAM0_MIN (0)
+#define CFG_BTC_WLAN_CONN_PARAM0_MAX (0xffffffff)
+#define CFG_BTC_WLAN_CONN_PARAM0_DEFAULT (0)
+
+#define CFG_BTC_WLAN_CONN_PARAM1 "gWlanConnVal1"
+#define CFG_BTC_WLAN_CONN_PARAM1_MIN (0)
+#define CFG_BTC_WLAN_CONN_PARAM1_MAX (0xffffffff)
+#define CFG_BTC_WLAN_CONN_PARAM1_DEFAULT (0)
+
+/**
* Config to set BT WLAN co-existing
* 0: enable BT WLAN co-existing
* 1: dynamically disable BT WLAN co-existing
@@ -4617,6 +4632,10 @@ struct hdd_config {
uint32_t coex_page_sap_bt_interval;
uint32_t coex_page_sap_wlan_interval;
+
+ uint32_t coex_config_wlan_conn_val0;
+ uint32_t coex_config_wlan_conn_val1;
+
uint32_t dynamic_wlan_bt_coex;
uint32_t antenna_isolation;
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index edd01861f435..5c248fd0556d 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -4211,6 +4211,21 @@ REG_TABLE_ENTRY g_registry_table[] =
CFG_BTC_WLAN_INTERVAL_PAGE_SAP_MIN,
CFG_BTC_WLAN_INTERVAL_PAGE_SAP_MAX),
+/* During WLAN Conn */
+ REG_VARIABLE(CFG_BTC_WLAN_CONN_PARAM0, WLAN_PARAM_Integer,
+ hdd_config_t, coex_config_wlan_conn_val0,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_BTC_WLAN_CONN_PARAM0_DEFAULT,
+ CFG_BTC_WLAN_CONN_PARAM0_MIN,
+ CFG_BTC_WLAN_CONN_PARAM0_MAX),
+
+ REG_VARIABLE(CFG_BTC_WLAN_CONN_PARAM1, WLAN_PARAM_Integer,
+ hdd_config_t, coex_config_wlan_conn_val1,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_BTC_WLAN_CONN_PARAM1_DEFAULT,
+ CFG_BTC_WLAN_CONN_PARAM1_MIN,
+ CFG_BTC_WLAN_CONN_PARAM1_MAX),
+
REG_VARIABLE(CFG_BTC_DYNAMIC_WLAN_BT_COEX, WLAN_PARAM_Integer,
hdd_config_t, dynamic_wlan_bt_coex,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -7958,6 +7973,15 @@ void hdd_set_btc_bt_wlan_interval(hdd_context_t *hdd_ctx)
hddLog(LOGE, "Fail to set coex page sap bt interval parameters");
}
+ if ((config->coex_config_wlan_conn_val0 != 0) ||
+ (config->coex_config_wlan_conn_val1 != 0)) {
+ status = sme_set_btc_wlan_conn_params(
+ config->coex_config_wlan_conn_val0,
+ config->coex_config_wlan_conn_val1);
+ if (VOS_STATUS_SUCCESS != status)
+ hddLog(LOGE, "Fail to set coex wlan connection parameters");
+ }
+
status = sme_set_btc_dynamic_bt_wlan_coex(
config->dynamic_wlan_bt_coex, config->antenna_isolation);
diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h
index 6d2e201679e5..1fd6aa541408 100644
--- a/CORE/SME/inc/sme_Api.h
+++ b/CORE/SME/inc/sme_Api.h
@@ -4460,6 +4460,8 @@ VOS_STATUS sme_set_btc_bt_wlan_interval_page_sta(uint32_t bt_interval,
uint32_t sta_interval);
VOS_STATUS sme_set_btc_bt_wlan_interval_page_sap(uint32_t bt_interval,
uint32_t sap_interval);
+VOS_STATUS sme_set_btc_wlan_conn_params(uint32_t conn_val0,
+ uint32_t conn_val1);
VOS_STATUS sme_set_btc_dynamic_bt_wlan_coex(uint32_t dynamic_wlan_bt_coex,
uint32_t antenna_isolation);
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index 7fef0610c06a..3030059a2dad 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -18858,6 +18858,46 @@ VOS_STATUS sme_set_btc_bt_wlan_interval_page_sap(uint32_t bt_interval,
}
/**
+ * sme_set_btc_wlan_conn_params() - Set the btc wlan conn params
+ * @coex_config_during_wlan_conn_val0: wlan conn val0
+ * @coex_config_during_wlan_conn_val1: wlan conn val1
+ *
+ * Return: Return VOS_STATUS.
+ */
+VOS_STATUS sme_set_btc_wlan_conn_params(uint32_t conn_val0,
+ uint32_t conn_val1)
+{
+ vos_msg_t msg = {0};
+ VOS_STATUS vos_status;
+ WMI_COEX_CONFIG_CMD_fixed_param *sme_interval;
+
+ sme_interval = vos_mem_malloc(sizeof(*sme_interval));
+ if (!sme_interval) {
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,
+ FL("Malloc failed"));
+ return VOS_STATUS_E_NOMEM;
+ }
+
+ sme_interval->config_type = WMI_COEX_CONFIG_DURING_WLAN_CONN;
+ sme_interval->config_arg1 = conn_val0;
+ sme_interval->config_arg2 = conn_val1;
+
+ msg.type = WDA_BTC_BT_WLAN_INTERVAL_CMD;
+ msg.reserved = 0;
+ msg.bodyptr = sme_interval;
+
+ vos_status = vos_mq_post_message(VOS_MODULE_ID_WDA,&msg);
+ if (!VOS_IS_STATUS_SUCCESS(vos_status)) {
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,
+ FL("Not able to post message to WDA"));
+ vos_mem_free(sme_interval);
+ return VOS_STATUS_E_FAILURE;
+ }
+
+ return vos_status;
+}
+
+/**
* sme_set_btc_bt_wlan_coex() - Set the btc bt wlan coex
* @dynamic_wlan_bt_coex: enable bt wlan co-exist
*