diff options
| author | SaidiReddy Yenuga <c_saidir@qti.qualcomm.com> | 2016-06-29 12:06:30 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-07-01 11:54:19 +0530 |
| commit | b3be607829c9edac382eb48bb258c65143fdf42e (patch) | |
| tree | 1175e186ef33d80226963d96a922bb5a01f1e622 | |
| parent | dc8d1c7fb62125417c522772fa05acb0d603794e (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.h | 19 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg.c | 24 | ||||
| -rw-r--r-- | CORE/SME/inc/sme_Api.h | 2 | ||||
| -rw-r--r-- | CORE/SME/src/sme_common/sme_Api.c | 40 |
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 * |
