diff options
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_cfg.h | 75 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg.c | 89 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_main.c | 7 | ||||
| -rw-r--r-- | CORE/MAC/src/include/sirParams.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 58 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.h | 4 | ||||
| -rw-r--r-- | CORE/SME/inc/sme_Api.h | 7 | ||||
| -rw-r--r-- | CORE/SME/src/sme_common/sme_Api.c | 128 | ||||
| -rw-r--r-- | CORE/WDA/inc/wlan_qct_wda.h | 2 | ||||
| -rwxr-xr-x | firmware_bin/WCNSS_qcom_cfg.ini | 16 |
10 files changed, 386 insertions, 2 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h index a6c8b285579c..8c592a245b6a 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg.h +++ b/CORE/HDD/inc/wlan_hdd_cfg.h @@ -3314,6 +3314,68 @@ enum dot11p_mode { #define CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_MAX (1) #define CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_DEFAULT (0) +/** +* For P2P +* gBTIntervalPageP2P/gWLIntervalPageP2P intervals length (in ms) during +* WLAN P2P (single vdev) + BT Paging, min 20ms, max 200ms. +* Customer could change these parameters' value in qcom_cfg.ini file to improve +* P2P throughput when BT doing Page. Example as: +* gBTIntervalPageP2P=30 +* gWLIntervalPageP2P=120 +*/ + +#define CFG_BTC_BT_INTERVAL_PAGE_P2P "gBTIntervalPageP2P" +#define CFG_BTC_BT_INTERVAL_PAGE_P2P_MIN (20) +#define CFG_BTC_BT_INTERVAL_PAGE_P2P_MAX (200) +#define CFG_BTC_BT_INTERVAL_PAGE_P2P_DEFAULT (30) + +#define CFG_BTC_WLAN_INTERVAL_PAGE_P2P "gWLIntervalPageP2P" +#define CFG_BTC_WLAN_INTERVAL_PAGE_P2P_MIN (20) +#define CFG_BTC_WLAN_INTERVAL_PAGE_P2P_MAX (200) +#define CFG_BTC_WLAN_INTERVAL_PAGE_P2P_DEFAULT (30) + +/** +* For STA +* gBTIntervalPageSTA/gWLIntervalPageSTA intervals length (in ms) during +* WLAN STA (single vdev) + BT Paging, min 20ms, max 200ms. +* Customer could change these parameters' value in qcom_cfg.ini file to improve +* STA throughput when BT doing Page. Example as: +* gBTIntervalPageSTA=30 +* gWLIntervalPageSTA=120 +*/ + +#define CFG_BTC_BT_INTERVAL_PAGE_STA "gBTIntervalPageSTA" +#define CFG_BTC_BT_INTERVAL_PAGE_STA_MIN (20) +#define CFG_BTC_BT_INTERVAL_PAGE_STA_MAX (200) +#define CFG_BTC_BT_INTERVAL_PAGE_STA_DEFAULT (30) + +#define CFG_BTC_WLAN_INTERVAL_PAGE_STA "gWLIntervalPageSTA" +#define CFG_BTC_WLAN_INTERVAL_PAGE_STA_MIN (20) +#define CFG_BTC_WLAN_INTERVAL_PAGE_STA_MAX (200) +#define CFG_BTC_WLAN_INTERVAL_PAGE_STA_DEFAULT (30) + + +/** +* For SAP +* gBTIntervalPageSAP/gWLIntervalPageSAP intervals length (in ms) during +* WLAN SAP (single vdev) + BT Paging, min 20ms, max 200ms. +* Customer could change these parameters' value in qcom_cfg.ini file to improve +* SAP throughput when BT doing Page. Example as: +* gBTIntervalPageSAP=30 +* gWLIntervalPageSAP=120 +*/ + +#define CFG_BTC_BT_INTERVAL_PAGE_SAP "gBTIntervalPageSAP" +#define CFG_BTC_BT_INTERVAL_PAGE_SAP_MIN (20) +#define CFG_BTC_BT_INTERVAL_PAGE_SAP_MAX (200) +#define CFG_BTC_BT_INTERVAL_PAGE_SAP_DEFAULT (30) + +#define CFG_BTC_WLAN_INTERVAL_PAGE_SAP "gWLIntervalPageSAP" +#define CFG_BTC_WLAN_INTERVAL_PAGE_SAP_MIN (20) +#define CFG_BTC_WLAN_INTERVAL_PAGE_SAP_MAX (200) +#define CFG_BTC_WLAN_INTERVAL_PAGE_SAP_DEFAULT (30) + + /* Parameters for roaming scans performed at high RSSI */ /* Maximum number of scans after RSSI change */ @@ -4295,6 +4357,16 @@ struct hdd_config { #endif /* FEATURE_AP_MCC_CH_AVOIDANCE */ uint8_t sap_p2p_11ac_override; uint8_t prefer_non_dfs_on_radar; + + uint32_t coex_page_p2p_bt_interval; + uint32_t coex_page_p2p_wlan_interval; + + uint32_t coex_page_sta_bt_interval; + uint32_t coex_page_sta_wlan_interval; + + uint32_t coex_page_sap_bt_interval; + uint32_t coex_page_sap_wlan_interval; + uint8_t inform_bss_rssi_raw; #ifdef WLAN_FEATURE_TSF uint32_t tsf_gpio_pin; @@ -4505,5 +4577,8 @@ v_VOID_t hdd_mbssid_apply_def_cfg_ini(hdd_adapter_t *pAdapter); #endif void print_hdd_cfg(hdd_context_t *pHddCtx); + +void hdd_set_btc_bt_wlan_interval(hdd_context_t *pHddCtx); + VOS_STATUS hdd_update_nss(hdd_context_t *hdd_ctx, uint8_t nss); #endif diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c index 7b60dc4d91aa..2efdb22be5ac 100644 --- a/CORE/HDD/src/wlan_hdd_cfg.c +++ b/CORE/HDD/src/wlan_hdd_cfg.c @@ -4140,6 +4140,48 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_DEFAULT, CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_MIN, CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_MAX), +/* For P2P */ + REG_VARIABLE(CFG_BTC_BT_INTERVAL_PAGE_P2P, WLAN_PARAM_Integer, + hdd_config_t, coex_page_p2p_bt_interval, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_BTC_BT_INTERVAL_PAGE_P2P_DEFAULT, + CFG_BTC_BT_INTERVAL_PAGE_P2P_MIN, + CFG_BTC_BT_INTERVAL_PAGE_P2P_MAX), + + REG_VARIABLE(CFG_BTC_WLAN_INTERVAL_PAGE_P2P, WLAN_PARAM_Integer, + hdd_config_t, coex_page_p2p_wlan_interval, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_BTC_WLAN_INTERVAL_PAGE_P2P_DEFAULT, + CFG_BTC_WLAN_INTERVAL_PAGE_P2P_MIN, + CFG_BTC_WLAN_INTERVAL_PAGE_P2P_MAX), +/* For STA */ + REG_VARIABLE(CFG_BTC_BT_INTERVAL_PAGE_STA, WLAN_PARAM_Integer, + hdd_config_t, coex_page_sta_bt_interval, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_BTC_BT_INTERVAL_PAGE_STA_DEFAULT, + CFG_BTC_BT_INTERVAL_PAGE_STA_MIN, + CFG_BTC_BT_INTERVAL_PAGE_STA_MAX), + + REG_VARIABLE(CFG_BTC_WLAN_INTERVAL_PAGE_STA, WLAN_PARAM_Integer, + hdd_config_t, coex_page_sta_wlan_interval, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_BTC_WLAN_INTERVAL_PAGE_STA_DEFAULT, + CFG_BTC_WLAN_INTERVAL_PAGE_STA_MIN, + CFG_BTC_WLAN_INTERVAL_PAGE_STA_MAX), +/* For SAP */ + REG_VARIABLE(CFG_BTC_BT_INTERVAL_PAGE_SAP, WLAN_PARAM_Integer, + hdd_config_t, coex_page_sap_bt_interval, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_BTC_BT_INTERVAL_PAGE_SAP_DEFAULT, + CFG_BTC_BT_INTERVAL_PAGE_SAP_MIN, + CFG_BTC_BT_INTERVAL_PAGE_SAP_MAX), + + REG_VARIABLE(CFG_BTC_WLAN_INTERVAL_PAGE_SAP, WLAN_PARAM_Integer, + hdd_config_t, coex_page_sap_wlan_interval, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_BTC_WLAN_INTERVAL_PAGE_SAP_DEFAULT, + CFG_BTC_WLAN_INTERVAL_PAGE_SAP_MIN, + CFG_BTC_WLAN_INTERVAL_PAGE_SAP_MAX), REG_VARIABLE(CFG_INFORM_BSS_RSSI_RAW_NAME, WLAN_PARAM_Integer, hdd_config_t, inform_bss_rssi_raw, @@ -7490,3 +7532,50 @@ VOS_STATUS hdd_update_nss(hdd_context_t *hdd_ctx, uint8_t nss) return (status == FALSE) ? VOS_STATUS_E_FAILURE : VOS_STATUS_SUCCESS; } +/** + * hdd_set_btc_bt_wlan_interval() - set btc bt/wlan interval page to FW + * @hdd_ctx: the pointer to hdd context + * + * This function set btc bt/wlan interval page (p2p/sta/sap) to FW. + * + * Return: None + */ +void hdd_set_btc_bt_wlan_interval(hdd_context_t *hdd_ctx) +{ + hdd_config_t *config = hdd_ctx->cfg_ini; + VOS_STATUS status = VOS_STATUS_SUCCESS; + + /** Sanity check. + * If not set in ini file, these parameters will be zero. + * Otherwise hdd_apply_cfg_ini() + * will ensure the valuse to be in the range 20~200 (ms as unit). + * If no parameters sent to firmware, + * firmware will set relevant parameters to default value itself. + */ + if ((config->coex_page_p2p_bt_interval !=0) && + (config->coex_page_p2p_wlan_interval !=0)) { + status = sme_set_btc_bt_wlan_interval_page_p2p( + config->coex_page_p2p_bt_interval, + config->coex_page_p2p_wlan_interval); + if (VOS_STATUS_SUCCESS != status) + hddLog(LOGE, "Fail to set coex page p2p bt interval parameters"); + } + + if ((config->coex_page_sta_bt_interval !=0) && + (config->coex_page_sta_wlan_interval !=0)) { + status = sme_set_btc_bt_wlan_interval_page_sta( + config->coex_page_sta_bt_interval, + config->coex_page_sta_wlan_interval); + if (VOS_STATUS_SUCCESS != status) + hddLog(LOGE, "Fail to set coex page sta bt interval parameters"); + } + + if ((config->coex_page_sap_bt_interval !=0) && + (config->coex_page_sap_wlan_interval !=0)) { + status = sme_set_btc_bt_wlan_interval_page_sap( + config->coex_page_sap_bt_interval, + config->coex_page_sap_wlan_interval); + if (VOS_STATUS_SUCCESS != status) + hddLog(LOGE, "Fail to set coex page sap bt interval parameters"); + } +} diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index dea53577eb99..0ca392d59cf2 100644 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -15003,6 +15003,13 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc) hddLog(LOG1, FL("Registered IPv4 notifier")); ol_pktlog_init(hif_sc); + + /* + * Send btc page and wlan (p2p/sta/sap) interval to firmware if + * relevant parameters set in ini file. + */ + hdd_set_btc_bt_wlan_interval(pHddCtx); + hdd_runtime_suspend_init(pHddCtx); pHddCtx->isLoadInProgress = FALSE; vos_set_load_unload_in_progress(VOS_MODULE_ID_VOSS, FALSE); diff --git a/CORE/MAC/src/include/sirParams.h b/CORE/MAC/src/include/sirParams.h index be27dc1a171c..59fe800d2ec8 100644 --- a/CORE/MAC/src/include/sirParams.h +++ b/CORE/MAC/src/include/sirParams.h @@ -775,6 +775,8 @@ typedef struct sSirMbMsgP2p #define SIR_HAL_NDP_END_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 358) #define SIR_HAL_SEND_FREQ_RANGE_CONTROL_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 359) +#define SIR_BTC_BT_WLAN_INTERVAL_CMD (SIR_HAL_ITC_MSG_TYPES_BEGIN + 360) + #define SIR_HAL_MSG_TYPES_END (SIR_HAL_MSG_TYPES_BEGIN + 0x1FF) // CFG message types diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index 4464ec8eab1e..e709ce0300c2 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -29671,6 +29671,11 @@ VOS_STATUS wma_mc_process_msg(v_VOID_t *vos_context, vos_msg_t *msg) case WDA_GET_FW_STATUS_REQ: wma_send_echo_request(wma_handle); break; + case WDA_BTC_BT_WLAN_INTERVAL_CMD: + wma_btc_set_bt_wlan_interval(wma_handle, + (WMI_COEX_CONFIG_CMD_fixed_param *)msg->bodyptr); + vos_mem_free(msg->bodyptr); + break; case SIR_HAL_CONFIG_STATS_FACTOR: wma_config_stats_factor(wma_handle, (struct sir_stats_avg_factor *)msg->bodyptr); @@ -35434,3 +35439,56 @@ int wma_resume_fw(void) return ret; } + + +/** + * wma_btc_set_bt_wlan_interval() - send btc bt/wlan interval page to FW + * common function to send btc bt/wlan interval page (p2p/sta/sap) + * to the firmware + * @wma_handle: pointer to the WMA handle + * @interval: pointer to the WMI_COEX_CONFIG_CMD_fixed_param struct + * + * Return: 0 - success + */ +int wma_btc_set_bt_wlan_interval(tp_wma_handle wma_handle, + WMI_COEX_CONFIG_CMD_fixed_param *interval) +{ + int32_t ret; + WMI_COEX_CONFIG_CMD_fixed_param *cmd; + uint8_t *buf_ptr; + uint32_t len; + wmi_buf_t buf; + + len = sizeof(*cmd); + buf = wmi_buf_alloc(wma_handle->wmi_handle, len); + if (!buf) { + WMA_LOGE(FL("wmi_buf_alloc failed")); + return -ENOMEM; + } + + buf_ptr = (uint8_t *)wmi_buf_data(buf); + cmd = (WMI_COEX_CONFIG_CMD_fixed_param *)buf_ptr; + WMITLV_SET_HDR(&cmd->tlv_header, + WMITLV_TAG_STRUC_WMI_COEX_CONFIG_CMD_fixed_param, + WMITLV_GET_STRUCT_TLVLEN(WMI_COEX_CONFIG_CMD_fixed_param)); + + cmd->vdev_id = interval->vdev_id; + + cmd->config_type= interval->config_type; + cmd->config_arg1 = interval->config_arg1; + cmd->config_arg2 = interval->config_arg2; + + ret = wmi_unified_cmd_send(wma_handle->wmi_handle, buf, len, + WMI_COEX_CONFIG_CMDID); + if (ret != EOK) { + WMA_LOGE(FL("Failed to set btc bt/wlan interval")); + wmi_buf_free(buf); + return -EIO; + } + WMA_LOGI("[BTC]: config_type = %d, config_arg1 = %d, config_arg2 = %d", + interval->config_type, + interval->config_arg1, + interval->config_arg2); + return 0; +} + diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h index 5c12ae14a1df..1c4ac5a55940 100644 --- a/CORE/SERVICES/WMA/wma.h +++ b/CORE/SERVICES/WMA/wma.h @@ -1710,6 +1710,10 @@ void wma_send_flush_logs_to_fw(tp_wma_handle wma_handle); struct wma_txrx_node *wma_get_interface_by_vdev_id(uint8_t vdev_id); bool wma_is_vdev_up(uint8_t vdev_id); +int wma_btc_set_bt_wlan_interval(tp_wma_handle wma_handle, + WMI_COEX_CONFIG_CMD_fixed_param *interval); + + int wma_crash_inject(tp_wma_handle wma_handle, uint32_t type, uint32_t delay_time_ms); diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h index 5f7e637fdf24..f20d5e51611a 100644 --- a/CORE/SME/inc/sme_Api.h +++ b/CORE/SME/inc/sme_Api.h @@ -4427,6 +4427,13 @@ eHalStatus sme_register_mgmt_frame_ind_callback(tHalHandle hal, eHalStatus sme_update_nss(tHalHandle h_hal, uint8_t nss); void sme_enable_phy_error_logs(tHalHandle hal, bool enable_log); +VOS_STATUS sme_set_btc_bt_wlan_interval_page_p2p(uint32_t bt_interval, + uint32_t p2p_interval); +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); + 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 5ce457d2ed23..977cfff804b0 100644 --- a/CORE/SME/src/sme_common/sme_Api.c +++ b/CORE/SME/src/sme_common/sme_Api.c @@ -18478,6 +18478,7 @@ eHalStatus sme_delete_all_tdls_peers(tHalHandle hal, uint8_t session_id) return status; } + /** * sme_set_beacon_filter() - set the beacon filter configuration * @vdev_id: vdev index id @@ -18511,13 +18512,55 @@ VOS_STATUS sme_set_beacon_filter(uint32_t vdev_id, uint32_t *ie_map) VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, "%s: Not able to post msg to WDA!", __func__); - vos_mem_free(filter_param); + return VOS_STATUS_E_FAILURE; + } + + return vos_status; +} + +/** + * sme_set_btc_bt_wlan_interval_page_p2p() - Set the btc bt/p2p interval + * @bt_interval: BT Page Interval + * @bt_interval: P2P Interval + * + * Return: Return VOS_STATUS. + */ +VOS_STATUS sme_set_btc_bt_wlan_interval_page_p2p(uint32_t bt_interval, + uint32_t p2p_interval) +{ + 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_PAGE_P2P_TDM; + sme_interval->config_arg1 = bt_interval; + sme_interval->config_arg2 = p2p_interval; + + 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_unset_beacon_filter() - set the beacon filter configuration * @vdev_id: vdev index id * @@ -18546,9 +18589,90 @@ VOS_STATUS sme_unset_beacon_filter(uint32_t vdev_id) VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, "%s: Not able to post msg to WDA!", __func__); - vos_mem_free(filter_param); + return VOS_STATUS_E_FAILURE; } + + return vos_status; +} + +/** + * sme_set_btc_bt_wlan_interval_page_sta() - Set the btc bt/sta interval + * @bt_interval: BT Page Interval + * @sta_interval: STA Interval + * + * Return: Return VOS_STATUS. + */ +VOS_STATUS sme_set_btc_bt_wlan_interval_page_sta(uint32_t bt_interval, + uint32_t sta_interval) +{ + 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_PAGE_STA_TDM; + sme_interval->config_arg1 = bt_interval; + sme_interval->config_arg2 = sta_interval; + + 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_interval_page_sap() - Set the btc bt/sap interval + * @bt_interval: BT Page Interval + * @bt_interval: SAP Interval + * + * Return: Return VOS_STATUS. + */ +VOS_STATUS sme_set_btc_bt_wlan_interval_page_sap(uint32_t bt_interval, + uint32_t sap_interval) +{ + 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_PAGE_SAP_TDM; + sme_interval->config_arg1 = bt_interval; + sme_interval->config_arg2 = sap_interval; + + 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; } diff --git a/CORE/WDA/inc/wlan_qct_wda.h b/CORE/WDA/inc/wlan_qct_wda.h index 022c0bca12aa..f969cfae4672 100644 --- a/CORE/WDA/inc/wlan_qct_wda.h +++ b/CORE/WDA/inc/wlan_qct_wda.h @@ -1057,6 +1057,8 @@ tSirRetStatus uMacPostCtrlMsg(void* pSirGlobal, tSirMbMsg* pMb); #define WDA_DCC_CLEAR_STATS_CMD SIR_HAL_DCC_CLEAR_STATS_CMD #define WDA_DCC_UPDATE_NDL_CMD SIR_HAL_DCC_UPDATE_NDL_CMD +#define WDA_BTC_BT_WLAN_INTERVAL_CMD SIR_BTC_BT_WLAN_INTERVAL_CMD + #ifdef FEATURE_RUNTIME_PM #define WDA_RUNTIME_PM_SUSPEND_IND SIR_HAL_RUNTIME_PM_SUSPEND_IND #define WDA_RUNTIME_PM_RESUME_IND SIR_HAL_RUNTIME_PM_RESUME_IND diff --git a/firmware_bin/WCNSS_qcom_cfg.ini b/firmware_bin/WCNSS_qcom_cfg.ini index d064d0d6f3af..418419f15a35 100755 --- a/firmware_bin/WCNSS_qcom_cfg.ini +++ b/firmware_bin/WCNSS_qcom_cfg.ini @@ -661,6 +661,22 @@ gEnableFWHashCheck=1 # runtime suspend. # This flag will take affect when Runtime PM is enabled gRuntimePmEnableBcastPattern=0 + +# intervals length (in ms) during WLAN P2P (single vdev) + BT Paging +# min 20ms, max 200ms +gBTIntervalPageP2P=30 +gWLIntervalPageP2P=30 + +# intervals length (in ms) during WLAN STA (single vdev) + BT Paging +# min 20ms, max 200ms +gBTIntervalPageSTA=30 +gWLIntervalPageSTA=30 + +# intervals length (in ms) during WLAN SAP (single vdev) + BT Paging +# min 20ms, max 200ms +gBTIntervalPageSAP=30 +gWLIntervalPageSAP=30 + END # Note: Configuration parser would not read anything past the END marker |
