diff options
| author | CNSS_WLAN Service <cnssbldsw@qualcomm.com> | 2019-04-23 07:06:18 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2019-04-23 07:06:18 -0700 |
| commit | 6228788154ba67cbcc7a5d69df46398faa70ea86 (patch) | |
| tree | eba417664b2eb3138186ed59f123374454cacc37 | |
| parent | 1b8e1b605696ec2d3ee187cc43f3636c5891793a (diff) | |
| parent | fa7f094c35417e661455c644202c0e93286a6d23 (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.h | 18 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg.c | 26 | ||||
| -rw-r--r-- | CORE/SME/inc/sme_Api.h | 4 | ||||
| -rw-r--r-- | CORE/SME/src/sme_common/sme_Api.c | 36 | ||||
| -rw-r--r-- | Kbuild | 3 |
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 @@ -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 |
