diff --git a/core/bmi/src/bmi_1.c b/core/bmi/src/bmi_1.c index 2d0783a5a41a..e633030491aa 100644 --- a/core/bmi/src/bmi_1.c +++ b/core/bmi/src/bmi_1.c @@ -1,5 +1,5 @@ /* - * copyright (c) 2014-2015 The Linux Foundation. All rights reserved. + * copyright (c) 2014-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -234,8 +234,9 @@ bmi_firmware_download(struct ol_softc *scn) { CDF_STATUS status; struct bmi_target_info targ_info; - cdf_mem_zero(&targ_info, sizeof(targ_info)); + struct hif_target_info *tgt_info = hif_get_target_info_handle(scn); + cdf_mem_zero(&targ_info, sizeof(targ_info)); /* Initialize BMI */ status = bmi_init(scn); if (status != CDF_STATUS_SUCCESS) { @@ -250,8 +251,8 @@ bmi_firmware_download(struct ol_softc *scn) return status; } - scn->target_type = targ_info.target_type; - scn->target_version = targ_info.target_ver; + tgt_info->target_type = targ_info.target_type; + tgt_info->target_version = targ_info.target_ver; /* Configure target */ status = ol_configure_target(scn); diff --git a/core/bmi/src/bmi_2.c b/core/bmi/src/bmi_2.c index b04f4cbfc159..2391222d3801 100644 --- a/core/bmi/src/bmi_2.c +++ b/core/bmi/src/bmi_2.c @@ -1,5 +1,5 @@ /* - * copyright (c) 2014-2015 The Linux Foundation. All rights reserved. + * copyright (c) 2014-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -382,6 +382,7 @@ static CDF_STATUS bmi_enable(struct ol_softc *scn) struct bmi_target_info targ_info; struct image_desc_info image_desc_info; CDF_STATUS status; + struct hif_target_info *tgt_info; if (!scn) { BMI_ERR("Invalid scn context"); @@ -389,6 +390,8 @@ static CDF_STATUS bmi_enable(struct ol_softc *scn) return CDF_STATUS_NOT_INITIALIZED; } + tgt_info = hif_get_target_info_handle(scn); + if (scn->bmi_cmd_buff == NULL || scn->bmi_rsp_buff == NULL) { BMI_ERR("bmi_open failed!"); return CDF_STATUS_NOT_INITIALIZED; @@ -400,8 +403,9 @@ static CDF_STATUS bmi_enable(struct ol_softc *scn) BMI_DBG("%s: target type 0x%x, target ver 0x%x", __func__, targ_info.target_type, targ_info.target_ver); - scn->target_type = targ_info.target_type; - scn->target_version = targ_info.target_ver; + + tgt_info->target_type = targ_info.target_type; + tgt_info->target_version = targ_info.target_ver; if (cnss_get_fw_image(&image_desc_info) != 0) { BMI_ERR("Failed to get fw image"); diff --git a/core/bmi/src/ol_fw.c b/core/bmi/src/ol_fw.c index eda2dde95e0f..bcf07c0a1af5 100644 --- a/core/bmi/src/ol_fw.c +++ b/core/bmi/src/ol_fw.c @@ -146,6 +146,8 @@ static int __ol_transfer_bin_file(struct ol_softc *scn, ATH_BIN_FILE file, int bin_off, bin_len; SIGN_HEADER_T *sign_header; #endif + struct hif_target_info *tgt_info = hif_get_target_info_handle(scn); + uint32_t target_type = tgt_info->target_type; switch (file) { default: @@ -303,7 +305,7 @@ static int __ol_transfer_bin_file(struct ol_softc *scn, ATH_BIN_FILE file, cdf_mem_copy(temp_eeprom, (uint8_t *) fw_entry->data, fw_entry_size); - switch (scn->target_type) { + switch (target_type) { default: board_data_size = 0; board_ext_data_size = 0; @@ -318,7 +320,7 @@ static int __ol_transfer_bin_file(struct ol_softc *scn, ATH_BIN_FILE file, } /* Determine where in Target RAM to write Board Data */ - bmi_read_memory(HOST_INTEREST_ITEM_ADDRESS(scn->target_type, + bmi_read_memory(HOST_INTEREST_ITEM_ADDRESS(target_type, hi_board_ext_data), (uint8_t *) &board_ext_address, 4, scn); BMI_INFO("Board extended Data download address: 0x%x", @@ -344,7 +346,7 @@ static int __ol_transfer_bin_file(struct ol_softc *scn, ATH_BIN_FILE file, /* Record extended board Data initialized */ param = (board_ext_data_size << 16) | 1; bmi_write_memory( - HOST_INTEREST_ITEM_ADDRESS(scn->target_type, + HOST_INTEREST_ITEM_ADDRESS(target_type, hi_board_ext_data_config), (uint8_t *)¶m, 4, scn); @@ -498,11 +500,15 @@ static void ramdump_work_handler(struct work_struct *ramdump) int ret; uint32_t host_interest_address; uint32_t dram_dump_values[4]; - + uint32_t target_type; + struct hif_target_info *tgt_info; if (!ramdump_scn) { BMI_ERR("%s:Ramdump_scn is null:", __func__); goto out_fail; } + + tgt_info = hif_get_target_info_handle(ramdump_scn); + target_type = tgt_info->target_type; #ifdef DEBUG ret = hif_check_soc_status(ramdump_scn); if (ret) @@ -515,7 +521,7 @@ static void ramdump_work_handler(struct work_struct *ramdump) #endif if (hif_diag_read_mem(ramdump_scn, - hif_hia_item_address(ramdump_scn->target_type, + hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_failure_state)), (uint8_t *)&host_interest_address, sizeof(uint32_t)) != CDF_STATUS_SUCCESS) { @@ -579,6 +585,7 @@ void ol_target_failure(void *instance, CDF_STATUS status) { struct ol_softc *scn = (struct ol_softc *)instance; tp_wma_handle wma = cds_get_context(CDF_MODULE_ID_WMA); + struct hif_config_info *ini_cfg = hif_get_ini_handle(scn); int ret; cdf_event_set(&wma->recovery_event); @@ -604,7 +611,7 @@ void ol_target_failure(void *instance, CDF_STATUS status) #ifdef CONFIG_CNSS ret = hif_check_fw_reg(scn); if (0 == ret) { - if (scn->enable_self_recovery) { + if (ini_cfg->enable_self_recovery) { ol_schedule_fw_indication_work(scn); return; } @@ -617,7 +624,7 @@ void ol_target_failure(void *instance, CDF_STATUS status) #if defined(CONFIG_CNSS) /* Collect the RAM dump through a workqueue */ - if (scn->enable_ramdump_collection) + if (ini_cfg->enable_ramdump_collection) ol_schedule_ramdump_work(scn); else pr_debug("%s: athdiag read for target reg\n", __func__); @@ -633,11 +640,14 @@ CDF_STATUS ol_configure_target(struct ol_softc *scn) struct cnss_platform_cap cap; int ret; #endif + struct hif_target_info *tgt_info = hif_get_target_info_handle(scn); + struct hif_config_info *ini_cfg = hif_get_ini_handle(scn); + uint32_t target_type = tgt_info->target_type; /* Tell target which HTC version it is used */ param = HTC_PROTOCOL_VERSION; if (bmi_write_memory( - hif_hia_item_address(scn->target_type, + hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_app_host_interest)), (uint8_t *) ¶m, 4, scn) != CDF_STATUS_SUCCESS) { BMI_ERR("bmi_write_memory for htc version failed"); @@ -646,7 +656,7 @@ CDF_STATUS ol_configure_target(struct ol_softc *scn) /* set the firmware mode to STA/IBSS/AP */ { - if (bmi_read_memory(hif_hia_item_address(scn->target_type, + if (bmi_read_memory(hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_option_flag)), (uint8_t *)¶m, 4, scn) != CDF_STATUS_SUCCESS) { BMI_ERR("bmi_read_memory for setting fwmode failed"); @@ -668,7 +678,7 @@ CDF_STATUS ol_configure_target(struct ol_softc *scn) 1, HI_OPTION_FW_MODE_AP, 0, 0); if (bmi_write_memory( - hif_hia_item_address(scn->target_type, + hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_option_flag)), (uint8_t *)¶m, 4, scn) != CDF_STATUS_SUCCESS) { BMI_ERR("BMI WRITE for setting fwmode failed"); @@ -679,7 +689,7 @@ CDF_STATUS ol_configure_target(struct ol_softc *scn) #if (CONFIG_DISABLE_CDC_MAX_PERF_WAR) { /* set the firmware to disable CDC max perf WAR */ - if (bmi_read_memory(hif_hia_item_address(scn->target_type, + if (bmi_read_memory(hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_option_flag2)), (uint8_t *) ¶m, 4, scn) != CDF_STATUS_SUCCESS) { BMI_ERR("BMI READ for setting cdc max perf failed"); @@ -688,7 +698,7 @@ CDF_STATUS ol_configure_target(struct ol_softc *scn) param |= HI_OPTION_DISABLE_CDC_MAX_PERF_WAR; if (bmi_write_memory( - hif_hia_item_address(scn->target_type, + hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_option_flag2)), (uint8_t *)¶m, 4, scn) != CDF_STATUS_SUCCESS) { BMI_ERR("setting cdc max perf failed"); @@ -704,7 +714,7 @@ CDF_STATUS ol_configure_target(struct ol_softc *scn) BMI_ERR("platform capability info from CNSS not available"); if (!ret && cap.cap_flag & CNSS_HAS_EXTERNAL_SWREG) { - if (bmi_read_memory(hif_hia_item_address(scn->target_type, + if (bmi_read_memory(hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_option_flag2)), (uint8_t *)¶m, 4, scn) != CDF_STATUS_SUCCESS) { BMI_ERR("bmi_read_memory for setting" @@ -714,7 +724,7 @@ CDF_STATUS ol_configure_target(struct ol_softc *scn) param |= HI_OPTION_USE_EXT_LDO; if (bmi_write_memory( - hif_hia_item_address(scn->target_type, + hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_option_flag2)), (uint8_t *)¶m, 4, scn) != CDF_STATUS_SUCCESS) { BMI_ERR("BMI WRITE for setting external SWREG fail"); @@ -724,8 +734,8 @@ CDF_STATUS ol_configure_target(struct ol_softc *scn) #endif #ifdef WLAN_FEATURE_LPSS - if (scn->enablelpasssupport) { - if (bmi_read_memory(hif_hia_item_address(scn->target_type, + if (ini_cfg->enable_lpass_support) { + if (bmi_read_memory(hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_option_flag2)), (uint8_t *) ¶m, 4, scn) != CDF_STATUS_SUCCESS) { BMI_ERR("BMI READ:Setting LPASS Support failed"); @@ -734,7 +744,7 @@ CDF_STATUS ol_configure_target(struct ol_softc *scn) param |= HI_OPTION_DBUART_SUPPORT; if (bmi_write_memory( - hif_hia_item_address(scn->target_type, + hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_option_flag2)), (uint8_t *)¶m, 4, scn) != CDF_STATUS_SUCCESS) { BMI_ERR("BMI_READ for setting LPASS Support fail"); @@ -751,7 +761,7 @@ CDF_STATUS ol_configure_target(struct ol_softc *scn) param = 0; #endif if (bmi_write_memory( - hif_hia_item_address(scn->target_type, + hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_be)), (uint8_t *) ¶m, 4, scn) != CDF_STATUS_SUCCESS) { BMI_ERR("setting host CPU BE mode failed"); @@ -762,7 +772,7 @@ CDF_STATUS ol_configure_target(struct ol_softc *scn) /* FW descriptor/Data swap flags */ param = 0; if (bmi_write_memory( - hif_hia_item_address(scn->target_type, + hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_fw_swap)), (uint8_t *) ¶m, 4, scn) != CDF_STATUS_SUCCESS) { BMI_ERR("BMI WRITE failed setting FW data/desc swap flags"); @@ -854,8 +864,10 @@ CDF_STATUS ol_patch_pll_switch(struct ol_softc *scn) uint32_t cmnos_core_clk_div_addr = 0; uint32_t cmnos_cpu_pll_init_done_addr = 0; uint32_t cmnos_cpu_speed_addr = 0; + struct hif_target_info *tgt_info = hif_get_target_info_handle(scn); + uint32_t target_version = tgt_info->target_version; - switch (scn->target_version) { + switch (target_version) { case AR6320_REV1_1_VERSION: cmnos_core_clk_div_addr = AR6320_CORE_CLK_DIV_ADDR; cmnos_cpu_pll_init_done_addr = AR6320_CPU_PLL_INIT_DONE_ADDR; @@ -875,7 +887,7 @@ CDF_STATUS ol_patch_pll_switch(struct ol_softc *scn) break; default: BMI_ERR("%s: Unsupported target version %x", __func__, - scn->target_version); + target_version); goto end; } @@ -1166,18 +1178,22 @@ CDF_STATUS ol_download_firmware(struct ol_softc *scn) uint32_t param, address = 0; int status = !EOK; CDF_STATUS ret; + struct hif_target_info *tgt_info = hif_get_target_info_handle(scn); + struct hif_config_info *ini_cfg = hif_get_ini_handle(scn); + uint32_t target_type = tgt_info->target_type; + uint32_t target_version = tgt_info->target_version; #ifdef CONFIG_CNSS if (0 != cnss_get_fw_files_for_target(&scn->fw_files, - scn->target_type, - scn->target_version)) { + target_type, + target_version)) { BMI_ERR("%s: No FW files from CNSS driver", __func__); return CDF_STATUS_E_FAILURE; } #endif /* Transfer Board Data from Target EEPROM to Target RAM */ /* Determine where in Target RAM to write Board Data */ - bmi_read_memory(hif_hia_item_address(scn->target_type, + bmi_read_memory(hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_board_data)), (uint8_t *)&address, 4, scn); @@ -1201,7 +1217,7 @@ CDF_STATUS ol_download_firmware(struct ol_softc *scn) /* Record the fact that Board Data is initialized */ param = 1; bmi_write_memory( - hif_hia_item_address(scn->target_type, + hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_board_data_initialized)), (uint8_t *) ¶m, 4, scn); @@ -1215,7 +1231,7 @@ CDF_STATUS ol_download_firmware(struct ol_softc *scn) /* Record the fact that Board Data is initialized */ param = 1; bmi_write_memory( - hif_hia_item_address(scn->target_type, + hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_board_data_initialized)), (uint8_t *) ¶m, 4, scn); @@ -1264,15 +1280,15 @@ CDF_STATUS ol_download_firmware(struct ol_softc *scn) != EOK) { return -1; } - bmi_write_memory(hif_hia_item_address(scn->target_type, + bmi_write_memory(hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_dset_list_head)), (uint8_t *) &address, 4, scn); } - if (scn->enableuartprint || + if (ini_cfg->enable_uart_print || (WLAN_IS_EPPING_ENABLED(cds_get_conparam()) && WLAN_IS_EPPING_FW_UART(cds_get_conparam()))) { - switch (scn->target_version) { + switch (tgt_info->target_version) { case AR6004_VERSION_REV1_3: param = 11; break; @@ -1289,11 +1305,11 @@ CDF_STATUS ol_download_firmware(struct ol_softc *scn) param = 7; } - bmi_write_memory(hif_hia_item_address(scn->target_type, + bmi_write_memory(hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_dbg_uart_txpin)), (uint8_t *)¶m, 4, scn); param = 1; - bmi_write_memory(hif_hia_item_address(scn->target_type, + bmi_write_memory(hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_serial_enable)), (uint8_t *)¶m, 4, scn); } else { @@ -1302,18 +1318,18 @@ CDF_STATUS ol_download_firmware(struct ol_softc *scn) * based on scratch registers. */ param = 0; - bmi_write_memory(hif_hia_item_address(scn->target_type, + bmi_write_memory(hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_serial_enable)), (uint8_t *)¶m, 4, scn); } - if (scn->enablefwlog) { - bmi_read_memory(hif_hia_item_address(scn->target_type, + if (ini_cfg->enable_fw_log) { + bmi_read_memory(hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_option_flag)), (uint8_t *)¶m, 4, scn); param &= ~(HI_OPTION_DISABLE_DBGLOG); - bmi_write_memory(hif_hia_item_address(scn->target_type, + bmi_write_memory(hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_option_flag)), (uint8_t *)¶m, 4, scn); } else { @@ -1321,12 +1337,12 @@ CDF_STATUS ol_download_firmware(struct ol_softc *scn) * Explicitly setting fwlog prints to zero as target turns it on * based on scratch registers. */ - bmi_read_memory(hif_hia_item_address(scn->target_type, + bmi_read_memory(hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_option_flag)), (uint8_t *)¶m, 4, scn); param |= HI_OPTION_DISABLE_DBGLOG; - bmi_write_memory(hif_hia_item_address(scn->target_type, + bmi_write_memory(hif_hia_item_address(target_type, offsetof(struct host_interest_s, hi_option_flag)), (uint8_t *) ¶m, 4, scn); } @@ -1413,8 +1429,10 @@ static int ol_diag_read_reg_loc(struct ol_softc *scn, uint8_t *buffer, int dump_len, result = 0; tgt_reg_table reg_table; tgt_reg_section *curr_sec, *next_sec; + struct hif_target_info *tgt_info = hif_get_target_info_handle(scn); + uint32_t target_version = tgt_info->target_version; - section_len = ol_ath_get_reg_table(scn->target_version, ®_table); + section_len = ol_ath_get_reg_table(target_version, ®_table); if (!reg_table.section || !reg_table.section_size || !section_len) { BMI_ERR("%s: failed to get reg table", __func__); @@ -1587,21 +1605,19 @@ static int ol_target_coredump(void *inst, void *memory_block, uint8_t ol_get_number_of_peers_supported(struct ol_softc *scn) { - uint8_t max_no_of_peers = 0; + struct hif_config_info *ini_cfg = hif_get_ini_handle(scn); + struct hif_target_info *tgt_info = hif_get_target_info_handle(scn); + uint8_t max_no_of_peers = ini_cfg->max_no_of_peers; - switch (scn->target_version) { + switch (tgt_info->target_version) { case AR6320_REV1_1_VERSION: - if (scn->max_no_of_peers > MAX_SUPPORTED_PEERS_REV1_1) + if (max_no_of_peers > MAX_SUPPORTED_PEERS_REV1_1) max_no_of_peers = MAX_SUPPORTED_PEERS_REV1_1; - else - max_no_of_peers = scn->max_no_of_peers; break; default: - if (scn->max_no_of_peers > MAX_SUPPORTED_PEERS_REV1_3) + if (max_no_of_peers > MAX_SUPPORTED_PEERS_REV1_3) max_no_of_peers = MAX_SUPPORTED_PEERS_REV1_3; - else - max_no_of_peers = scn->max_no_of_peers; break; } diff --git a/core/cds/src/cds_api.c b/core/cds/src/cds_api.c index 448aee02073d..dcb92c922e35 100644 --- a/core/cds/src/cds_api.c +++ b/core/cds/src/cds_api.c @@ -253,15 +253,8 @@ CDF_STATUS cds_open(void) "%s: scn is null!", __func__); goto err_sched_close; } - scn->enableuartprint = pHddCtx->config->enablefwprint; - scn->enablefwlog = pHddCtx->config->enablefwlog; - scn->max_no_of_peers = pHddCtx->config->maxNumberOfPeers; -#ifdef WLAN_FEATURE_LPSS - scn->enablelpasssupport = pHddCtx->config->enablelpasssupport; -#endif - scn->enable_ramdump_collection = - pHddCtx->config->is_ramdump_enabled; - scn->enable_self_recovery = pHddCtx->config->enableSelfRecovery; + + hdd_update_hif_config(scn, pHddCtx); /* Initialize BMI and Download firmware */ cdf_status = bmi_download_firmware(scn); diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index cc956bf71e18..d02124b3fb1e 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -3242,7 +3242,7 @@ struct hdd_config { bool enable_ip_tcp_udp_checksum_offload; bool enablePowersaveOffload; bool enablefwprint; - bool enablefwlog; + bool enable_fw_log; #ifdef WLAN_FEATURE_11AC uint8_t fVhtAmpduLenExponent; uint32_t vhtMpduLen; @@ -3368,7 +3368,7 @@ struct hdd_config { bool enableSifsBurst; #ifdef WLAN_FEATURE_LPSS - bool enablelpasssupport; + bool enable_lpass_support; #endif #ifdef WLAN_FEATURE_NAN bool enable_nan_support; diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h index 1e0e388c8087..a08d7362c6a5 100644 --- a/core/hdd/inc/wlan_hdd_main.h +++ b/core/hdd/inc/wlan_hdd_main.h @@ -1525,5 +1525,5 @@ hdd_adapter_t *hdd_get_adapter_by_sme_session_id(hdd_context_t *hdd_ctx, phy_ch_width hdd_map_nl_chan_width(enum nl80211_chan_width ch_width); uint8_t wlan_hdd_find_opclass(tHalHandle hal, uint8_t channel, uint8_t bw_offset); - +void hdd_update_hif_config(void *scn, hdd_context_t *hdd_ctx); #endif /* end #if !defined(WLAN_HDD_MAIN_H) */ diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index 34661104bf59..dc76115a4823 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -2587,7 +2587,7 @@ REG_TABLE_ENTRY g_registry_table[] = { CFG_ENABLE_FW_UART_PRINT_ENABLE), REG_VARIABLE(CFG_ENABLE_FW_LOG_NAME, WLAN_PARAM_Integer, - struct hdd_config, enablefwlog, + struct hdd_config, enable_fw_log, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, CFG_ENABLE_FW_LOG_DEFAULT, CFG_ENABLE_FW_LOG_DISABLE, @@ -3209,7 +3209,7 @@ REG_TABLE_ENTRY g_registry_table[] = { #ifdef WLAN_FEATURE_LPSS REG_VARIABLE(CFG_ENABLE_LPASS_SUPPORT, WLAN_PARAM_Integer, - struct hdd_config, enablelpasssupport, + struct hdd_config, enable_lpass_support, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, CFG_ENABLE_LPASS_SUPPORT_DEFAULT, CFG_ENABLE_LPASS_SUPPORT_MIN, @@ -5078,7 +5078,7 @@ void hdd_cfg_print(hdd_context_t *pHddCtx) #ifdef WLAN_FEATURE_LPSS CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableLpassSupport] Value = [%u] ", - pHddCtx->config->enablelpasssupport); + pHddCtx->config->enable_lpass_support); #endif CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH, diff --git a/core/hdd/src/wlan_hdd_ftm.c b/core/hdd/src/wlan_hdd_ftm.c index 87785387357d..8f5282c97edd 100644 --- a/core/hdd/src/wlan_hdd_ftm.c +++ b/core/hdd/src/wlan_hdd_ftm.c @@ -137,6 +137,18 @@ static void wlan_hdd_ftm_update_tgt_cfg(void *context, void *param) } } +#ifdef WLAN_FEATURE_LPSS +static inline void hdd_is_lpass_supported(tMacOpenParameters *mac_openParms, + hdd_context_t *hdd_ctx) +{ + mac_openParms->is_lpass_enabled = hdd_ctx->config->enable_lpass_support; +} +#else +static inline void hdd_is_lpass_supported(tMacOpenParameters *mac_openParms, + hdd_context_t *hdd_ctx) +{ } +#endif + /** * wlan_ftm_cds_open() - Open the CDS Module in FTM mode * @p_cds_context: pointer to the global CDS context @@ -281,9 +293,7 @@ static CDF_STATUS wlan_ftm_cds_open(v_CONTEXT_t p_cds_context, mac_openParms.powersaveOffloadEnabled = hdd_ctx->config->enablePowersaveOffload; -#ifdef WLAN_FEATURE_LPSS - mac_openParms.is_lpass_enabled = hdd_ctx->config->enablelpasssupport; -#endif + hdd_is_lpass_supported(&mac_openParms, hdd_ctx); vStatus = wma_open(gp_cds_context, wlan_hdd_ftm_update_tgt_cfg, NULL, &mac_openParms); @@ -296,8 +306,7 @@ static CDF_STATUS wlan_ftm_cds_open(v_CONTEXT_t p_cds_context, goto err_htc_close; } #if defined(QCA_WIFI_FTM) - ((struct ol_softc *)pHifContext)->enable_ramdump_collection = - hdd_ctx->config->is_ramdump_enabled; + hdd_update_hif_config(pHifContext, hdd_ctx); pHtcContext = cds_get_context(CDF_MODULE_ID_HTC); if (!pHtcContext) { diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 376cf5363ddc..484112567469 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -2591,7 +2591,7 @@ hdd_adapter_t *hdd_open_adapter(hdd_context_t *hdd_ctx, uint8_t session_type, /* Enable FW logs based on INI configuration */ if ((CDF_GLOBAL_FTM_MODE != cds_get_conparam()) && - (hdd_ctx->config->enablefwlog)) { + (hdd_ctx->config->enable_fw_log)) { uint8_t count = 0; uint32_t value = 0; uint8_t numEntries = 0; @@ -5076,6 +5076,7 @@ hdd_context_t *hdd_init_context(struct device *dev, void *hif_sc) int ret = 0; hdd_context_t *hdd_ctx; v_CONTEXT_t p_cds_context; + struct hif_target_info *tgt_info = hif_get_target_info_handle(hif_sc); ENTER(); @@ -5133,11 +5134,11 @@ hdd_context_t *hdd_init_context(struct device *dev, void *hif_sc) hdd_tdls_pre_init(hdd_ctx); mutex_init(&hdd_ctx->dfs_lock); - hdd_ctx->target_type = ((struct ol_softc *)hif_sc)->target_type; + hdd_ctx->target_type = tgt_info->target_type; hdd_init_offloaded_packets_ctx(hdd_ctx); - icnss_set_fw_debug_mode(hdd_ctx->config->enablefwlog); + icnss_set_fw_debug_mode(hdd_ctx->config->enable_fw_log); hdd_ctx->max_intf_count = CSR_ROAM_SESSION_MAX; @@ -5159,7 +5160,7 @@ hdd_context_t *hdd_init_context(struct device *dev, void *hif_sc) hdd_enable_fastpath(hdd_ctx->config, hif_sc); /* Uses to enabled logging after SSR */ - hdd_ctx->fw_log_settings.enable = hdd_ctx->config->enablefwlog; + hdd_ctx->fw_log_settings.enable = hdd_ctx->config->enable_fw_log; if (CDF_GLOBAL_FTM_MODE == hdd_get_conparam()) goto skip_multicast_logging; @@ -5612,9 +5613,6 @@ int hdd_wlan_startup(struct device *dev, void *hif_sc) /* Get the wlan hw/fw version */ hdd_wlan_get_version(adapter, NULL, NULL); - /* pass target_fw_version to HIF layer */ - hif_set_fw_info(hif_sc, hdd_ctx->target_fw_version); - ret = hdd_update_country_code(hdd_ctx, adapter); if (ret) @@ -5975,7 +5973,7 @@ int wlan_hdd_gen_wlan_status_pack(struct wlan_status_data *data, } hdd_ctx = WLAN_HDD_GET_CTX(adapter); - if (hdd_ctx->lpss_support && hdd_ctx->config->enablelpasssupport) + if (hdd_ctx->lpss_support && hdd_ctx->config->enable_lpass_support) data->lpss_support = 1; else data->lpss_support = 0; @@ -6978,6 +6976,39 @@ void hdd_set_conparam(uint32_t con_param) curr_con_mode = con_param; } +#ifdef WLAN_FEATURE_LPSS +static inline bool hdd_is_lpass_supported(hdd_context_t *hdd_ctx) +{ + return hdd_ctx->config->enable_lpass_support; +} +#else +static inline bool hdd_is_lpass_supported(hdd_context_t *hdd_ctx) +{ + return false; +} +#endif + +/** + * hdd_update_hif_config() - Initialize HIF ini parameters + * @scn: HIF Context + * @hdd_ctx: HDD Context + * + * API is used to initialize all HIF configuration parameters + * Return: void + */ +void hdd_update_hif_config(void *scn, hdd_context_t *hdd_ctx) +{ + struct hif_config_info *cfg = hif_get_ini_handle(scn); + + cfg->enable_self_recovery = hdd_ctx->config->enableSelfRecovery; + cfg->enable_uart_print = hdd_ctx->config->enablefwprint; + cfg->enable_fw_log = hdd_ctx->config->enable_fw_log; + cfg->max_no_of_peers = hdd_ctx->config->maxNumberOfPeers; + cfg->enable_ramdump_collection = + hdd_ctx->config->is_ramdump_enabled; + cfg->enable_lpass_support = hdd_is_lpass_supported(hdd_ctx); +} + /* Register the module init/exit functions */ module_init(hdd_module_init); module_exit(hdd_module_exit); diff --git a/core/hdd/src/wlan_hdd_power.c b/core/hdd/src/wlan_hdd_power.c index 0af3ff235a09..6e99ced9bc90 100644 --- a/core/hdd/src/wlan_hdd_power.c +++ b/core/hdd/src/wlan_hdd_power.c @@ -1534,9 +1534,6 @@ CDF_STATUS hdd_wlan_re_init(void *hif_sc) if (pAdapter) hdd_wlan_get_version(pAdapter, NULL, NULL); - /* Pass FW version to HIF layer */ - hif_set_fw_info(hif_sc, pHddCtx->target_fw_version); - /* Restart all adapters */ hdd_start_all_adapters(pHddCtx); diff --git a/core/utils/epping/src/epping_main.c b/core/utils/epping/src/epping_main.c index cfbf04cf1c1e..0818a18114a7 100644 --- a/core/utils/epping/src/epping_main.c +++ b/core/utils/epping/src/epping_main.c @@ -181,6 +181,8 @@ int epping_enable(struct device *parent_dev) HTC_INIT_INFO htcInfo; struct ol_softc *scn; tSirMacAddr adapter_macAddr; + struct hif_config_info *cfg; + struct hif_target_info *tgt_info; EPPING_LOG(CDF_TRACE_LEVEL_INFO_HIGH, "%s: Enter", __func__); @@ -212,10 +214,16 @@ int epping_enable(struct device *parent_dev) "%s: scn is null!", __func__); return -1; } - scn->enableuartprint = 0; - scn->enablefwlog = 0; + + cfg = hif_get_ini_handle(scn); + + cfg->enable_uart_print = 0; + cfg->enable_fw_log = 0; + + tgt_info = hif_get_target_info_handle(scn); + /* store target type and target version info in hdd ctx */ - pEpping_ctx->target_type = scn->target_type; + pEpping_ctx->target_type = tgt_info->target_type; #ifndef FEATURE_BMI_2 /* Initialize BMI and Download firmware */