summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCNSS_WLAN Service <cnssbldsw@qualcomm.com>2019-04-23 07:06:18 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2019-04-23 07:06:18 -0700
commit6228788154ba67cbcc7a5d69df46398faa70ea86 (patch)
treeeba417664b2eb3138186ed59f123374454cacc37
parent1b8e1b605696ec2d3ee187cc43f3636c5891793a (diff)
parentfa7f094c35417e661455c644202c0e93286a6d23 (diff)
Merge "qcacld-2.0: Add WMI_COEX_CONFIG_BTC_DUTYCYCLE" into wlan-cld2.driver.lnx.1.0
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg.h18
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg.c26
-rw-r--r--CORE/SME/inc/sme_Api.h4
-rw-r--r--CORE/SME/src/sme_common/sme_Api.c36
-rw-r--r--Kbuild3
5 files changed, 86 insertions, 1 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index f6ce7080dafe..fd3796afbebf 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -4173,6 +4173,19 @@ FG_BTC_BT_INTERVAL_PAGE_P2P_STA_DEFAULT
#define CFG_BTC_WLAN_COEX_TX_POWER_MAX (63)
#define CFG_BTC_WLAN_COEX_TX_POWER_DEFAULT (63)
+/* Config to set WLAN on the uplink periodically pauses and unpauses its data queues */
+#ifdef WMI_COEX_BTC_DUTYCYCLE
+#define CFG_COEX_PAUSE_NAME "gCoexWLANPauseDuration"
+#define CFG_COEX_PAUSE_MIN (0)
+#define CFG_COEX_PAUSE_MAX (100)
+#define CFG_COEX_PAUSE_DEFAULT (30)
+
+#define CFG_COEX_UNPAUSE_NAME "gCoexWLANUnpauseDuration"
+#define CFG_COEX_UNPAUSE_MIN (0)
+#define CFG_COEX_UNPAUSE_MAX (100)
+#define CFG_COEX_UNPAUSE_DEFAULT (30)
+#endif
+
/* Parameters for roaming scans performed at high RSSI */
/* Maximum number of scans after RSSI change */
@@ -6419,6 +6432,11 @@ struct hdd_config {
uint32_t coex_pta_config_param;
#endif
+#ifdef WMI_COEX_BTC_DUTYCYCLE
+ uint32_t coex_btc_PauseDuration;
+ uint32_t coex_btc_UnPauseDuration;
+#endif
+
uint8_t inform_bss_rssi_raw;
#ifdef WLAN_FEATURE_TSF
uint32_t tsf_gpio_pin;
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index 4306a7f9ef50..6cacd10bfe40 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -4580,6 +4580,24 @@ REG_TABLE_ENTRY g_registry_table[] =
CFG_BTC_WLAN_COEX_TX_POWER_MIN,
CFG_BTC_WLAN_COEX_TX_POWER_MAX),
+#ifdef WMI_COEX_BTC_DUTYCYCLE
+ REG_VARIABLE(CFG_COEX_PAUSE_NAME,
+ WLAN_PARAM_Integer,
+ hdd_config_t, coex_btc_PauseDuration,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_COEX_PAUSE_DEFAULT,
+ CFG_COEX_PAUSE_MIN,
+ CFG_COEX_PAUSE_MAX),
+
+ REG_VARIABLE(CFG_COEX_UNPAUSE_NAME,
+ WLAN_PARAM_Integer,
+ hdd_config_t, coex_btc_UnPauseDuration,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_COEX_UNPAUSE_DEFAULT,
+ CFG_COEX_UNPAUSE_MIN,
+ CFG_COEX_UNPAUSE_MAX),
+#endif
+
REG_VARIABLE(CFG_INFORM_BSS_RSSI_RAW_NAME, WLAN_PARAM_Integer,
hdd_config_t, inform_bss_rssi_raw,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -9149,6 +9167,14 @@ void hdd_set_btc_bt_wlan_interval(hdd_context_t *hdd_ctx)
hddLog(LOGE, "Fail to set pta coex");
#endif
+
+#ifdef WMI_COEX_BTC_DUTYCYCLE
+ status = sme_set_btc_coex_dutycycle(config->coex_btc_PauseDuration,config->coex_btc_UnPauseDuration);
+
+ if (VOS_STATUS_SUCCESS != status)
+ hddLog(LOGE, "Fail to set coex PauseDuration");
+#endif
+
}
/**
diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h
index 9529783fa151..4a0d485ed927 100644
--- a/CORE/SME/inc/sme_Api.h
+++ b/CORE/SME/inc/sme_Api.h
@@ -4643,6 +4643,10 @@ VOS_STATUS sme_set_btc_wlan_coex_tx_power(uint32_t coex_tx_power);
VOS_STATUS sme_configure_pta_coex(uint8_t coex_pta_config_enable, uint32_t coex_pta_config_param);
#endif
+#ifdef WMI_COEX_BTC_DUTYCYCLE
+VOS_STATUS sme_set_btc_coex_dutycycle(uint32_t coex_btc_PauseDuration,uint32_t coex_btc_UnPauseDuration);
+#endif
+
uint8_t sme_is_any_session_in_connected_state(tHalHandle h_hal);
typedef void ( *tSmeSetThermalLevelCallback)(void *pContext, u_int8_t level);
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index dd3d380c5d58..b2a6fcbaae7b 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -20103,6 +20103,42 @@ VOS_STATUS sme_set_btc_wlan_coex_tx_power(uint32_t coex_tx_power)
return vos_status;
}
+#ifdef WMI_COEX_BTC_DUTYCYCLE
+VOS_STATUS sme_set_btc_coex_dutycycle(uint32_t coex_btc_PauseDuration,uint32_t coex_btc_UnPauseDuration)
+{
+ 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_BTC_DUTYCYCLE;
+ sme_interval->config_arg1 = coex_btc_PauseDuration;
+ sme_interval->config_arg2 = coex_btc_UnPauseDuration;
+ printk(KERN_ERR "ENTER sme_set_btc_coex_dutycycle = %d",coex_btc_PauseDuration);
+ printk(KERN_ERR "ENTER sme_set_btc_coex_dutycycle =%d",coex_btc_UnPauseDuration);
+
+ 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;
+}
+#endif
+
/**
* sme_send_disassoc_req_frame - send disassoc req
* @hal: handler to hal
diff --git a/Kbuild b/Kbuild
index 84b9a1b70e96..deb4d0d1b3e3 100644
--- a/Kbuild
+++ b/Kbuild
@@ -1097,7 +1097,8 @@ CDEFINES := -DANI_LITTLE_BYTE_ENDIAN \
-DFEATURE_WLAN_CH144 \
-DHTC_CRP_DEBUG \
-DWLAN_VOWIFI_DEBUG \
- -DATH_SUPPORT_DFS
+ -DATH_SUPPORT_DFS \
+ -DWMI_COEX_BTC_DUTYCYCLE
ifeq ($(CONFIG_WLAN_POWER_DEBUGFS), y)
CDEFINES += -DWLAN_POWER_DEBUGFS