From 377bcc1227de4230517580e795d0749c4a874704 Mon Sep 17 00:00:00 2001 From: jitiphil Date: Fri, 5 Oct 2018 19:46:08 +0530 Subject: [PATCH] qcacld-3.0: Add legacy DP CFG items and APIs Add the basic infra for legacy DP CFG items and the APIs to be used from other components. Change-Id: If7ad0e02c65e04ea13a308e680c9ba3b3d84ae25 CRs-Fixed: 2324099 --- components/cfg/cfg_all.h | 2 + core/cds/src/cds_api.c | 64 +++++--- core/dp/ol/inc/cfg_legacy_dp.h | 54 +++++++ core/dp/ol/inc/ol_cfg.h | 12 ++ core/dp/txrx/ol_cfg.c | 7 + core/dp/txrx/ol_txrx.c | 72 ++++++++- core/hdd/inc/hdd_dp_cfg.h | 26 +++- core/hdd/inc/wlan_hdd_cfg.h | 220 --------------------------- core/hdd/inc/wlan_hdd_main.h | 10 +- core/hdd/src/wlan_hdd_cfg.c | 92 ----------- core/hdd/src/wlan_hdd_cfg80211.c | 3 +- core/hdd/src/wlan_hdd_driver_ops.c | 7 +- core/hdd/src/wlan_hdd_hostapd.c | 3 +- core/hdd/src/wlan_hdd_main.c | 61 +++----- core/hdd/src/wlan_hdd_softap_tx_rx.c | 2 +- core/hdd/src/wlan_hdd_tx_rx.c | 15 +- 16 files changed, 261 insertions(+), 389 deletions(-) create mode 100644 core/dp/ol/inc/cfg_legacy_dp.h diff --git a/components/cfg/cfg_all.h b/components/cfg/cfg_all.h index 2af497e04951..6b0ddfa245f9 100644 --- a/components/cfg/cfg_all.h +++ b/components/cfg/cfg_all.h @@ -44,6 +44,7 @@ #include "wlan_pmo_cfg.h" #include "hdd_config.h" #include "hdd_dp_cfg.h" +#include "cfg_legacy_dp.h" /* Maintain Alphabetic order here while adding components */ #define CFG_ALL \ @@ -53,6 +54,7 @@ CFG_HDD_ALL \ CFG_HDD_DP_ALL \ CFG_IPA \ + CFG_LEGACY_DP_ALL \ CFG_MLME_ALL \ CFG_NAN_ALL \ CFG_P2P_ALL \ diff --git a/core/cds/src/cds_api.c b/core/cds/src/cds_api.c index 6f35b4698230..ee8b2c824563 100644 --- a/core/cds/src/cds_api.c +++ b/core/cds/src/cds_api.c @@ -69,6 +69,7 @@ #include #endif #include "wlan_mlme_ucfg_api.h" +#include "cfg_ucfg_api.h" /* Preprocessor Definitions and Constants */ @@ -295,16 +296,17 @@ cds_cfg_update_ac_specs_params(struct txrx_pdev_cfg_param_t *olcfg, #ifdef QCA_LL_TX_FLOW_CONTROL_V2 static inline void -cds_cdp_set_flow_control_params(struct cds_config_info *cds_cfg, +cds_cdp_set_flow_control_params(struct wlan_objmgr_psoc *psoc, struct txrx_pdev_cfg_param_t *cdp_cfg) { - cdp_cfg->tx_flow_stop_queue_th = cds_cfg->tx_flow_stop_queue_th; + cdp_cfg->tx_flow_stop_queue_th = + cfg_get(psoc, CFG_DP_TX_FLOW_STOP_QUEUE_TH); cdp_cfg->tx_flow_start_queue_offset = - cds_cfg->tx_flow_start_queue_offset; + cfg_get(psoc, CFG_DP_TX_FLOW_START_QUEUE_OFFSET); } #else static inline void -cds_cdp_set_flow_control_params(struct cds_config_info *cds_cfg, +cds_cdp_set_flow_control_params(struct wlan_objmgr_psoc *psoc, struct txrx_pdev_cfg_param_t *cdp_cfg) {} #endif @@ -315,23 +317,41 @@ cds_cdp_set_flow_control_params(struct cds_config_info *cds_cfg, * * Return: none */ -static void cds_cdp_cfg_attach(struct cds_config_info *cds_cfg) +static void cds_cdp_cfg_attach(struct wlan_objmgr_psoc *psoc) { struct txrx_pdev_cfg_param_t cdp_cfg = {0}; void *soc = cds_get_context(QDF_MODULE_ID_SOC); + struct hdd_context *hdd_ctx = gp_cds_context->hdd_context; - cdp_cfg.is_full_reorder_offload = cds_cfg->reorder_offload; - cdp_cfg.is_uc_offload_enabled = cds_cfg->uc_offload_enabled; - cdp_cfg.uc_tx_buffer_count = ucfg_ipa_get_tx_buf_count(); - cdp_cfg.uc_tx_buffer_size = cds_cfg->uc_txbuf_size; - cdp_cfg.uc_rx_indication_ring_count = cds_cfg->uc_rxind_ringcount; - cdp_cfg.uc_tx_partition_base = cds_cfg->uc_tx_partition_base; - cdp_cfg.enable_rxthread = cds_cfg->enable_rxthread; + cdp_cfg.is_full_reorder_offload = + cfg_get(psoc, CFG_DP_REORDER_OFFLOAD_SUPPORT); + cdp_cfg.is_uc_offload_enabled = ucfg_ipa_uc_is_enabled(); + cdp_cfg.uc_tx_buffer_count = cfg_get(psoc, CFG_DP_IPA_UC_TX_BUF_COUNT); + cdp_cfg.uc_tx_buffer_size = + cfg_get(psoc, CFG_DP_IPA_UC_TX_BUF_SIZE); + cdp_cfg.uc_rx_indication_ring_count = + cfg_get(psoc, CFG_DP_IPA_UC_RX_IND_RING_COUNT); + cdp_cfg.uc_tx_partition_base = + cfg_get(psoc, CFG_DP_IPA_UC_TX_PARTITION_BASE); + cdp_cfg.enable_rxthread = hdd_ctx->enable_rxthread; cdp_cfg.ip_tcp_udp_checksum_offload = - cds_cfg->ip_tcp_udp_checksum_offload; - cdp_cfg.ce_classify_enabled = cds_cfg->ce_classify_enabled; + cfg_get(psoc, CFG_DP_TCP_UDP_CKSUM_OFFLOAD); + cdp_cfg.ce_classify_enabled = + cfg_get(psoc, CFG_DP_CE_CLASSIFY_ENABLE); + cdp_cfg.tso_enable = cfg_get(psoc, CFG_DP_TSO); + cdp_cfg.lro_enable = cfg_get(psoc, CFG_DP_LRO); + cdp_cfg.enable_data_stall_detection = + cfg_get(psoc, CFG_DP_ENABLE_DATA_STALL_DETECTION); + cdp_cfg.tso_enable = cfg_get(psoc, CFG_DP_TSO); + cdp_cfg.lro_enable = cfg_get(psoc, CFG_DP_LRO); + cdp_cfg.gro_enable = cfg_get(psoc, CFG_DP_GRO); + cdp_cfg.enable_flow_steering = + cfg_get(psoc, CFG_DP_FLOW_STEERING_ENABLED); + cdp_cfg.disable_intra_bss_fwd = + cfg_get(psoc, CFG_DP_AP_STA_SECURITY_SEPERATION); + cdp_cfg.ce_classify_enabled = + cfg_get(psoc, CFG_DP_CE_CLASSIFY_ENABLE); - cds_cfg_update_ac_specs_params(&cdp_cfg, cds_cfg); gp_cds_context->cfg_ctx = cdp_cfg_attach(soc, gp_cds_context->qdf_ctx, (void *)(&cdp_cfg)); if (!gp_cds_context->cfg_ctx) { @@ -341,15 +361,16 @@ static void cds_cdp_cfg_attach(struct cds_config_info *cds_cfg) /* Configure Receive flow steering */ cdp_cfg_set_flow_steering(soc, gp_cds_context->cfg_ctx, - cds_cfg->flow_steering_enabled); + cfg_get(psoc, CFG_DP_FLOW_STEERING_ENABLED)); - cds_cdp_set_flow_control_params(cds_cfg, &cdp_cfg); + cds_cdp_set_flow_control_params(psoc, &cdp_cfg); cdp_cfg_set_flow_control_parameters(soc, gp_cds_context->cfg_ctx, (void *)&cdp_cfg); /* adjust the cfg_ctx default value based on setting */ cdp_cfg_set_rx_fwd_disabled(soc, gp_cds_context->cfg_ctx, - (uint8_t) cds_cfg->ap_disable_intrabss_fwd); + cfg_get(psoc, + CFG_DP_AP_STA_SECURITY_SEPERATION)); /* * adjust the packet log enable default value @@ -521,7 +542,7 @@ QDF_STATUS cds_open(struct wlan_objmgr_psoc *psoc) goto err_sched_close; } - hdd_enable_fastpath(hdd_ctx->config, scn); + hdd_enable_fastpath(hdd_ctx, scn); /* Initialize BMI and Download firmware */ ol_ctx = cds_get_context(QDF_MODULE_ID_BMI); @@ -622,8 +643,9 @@ QDF_STATUS cds_open(struct wlan_objmgr_psoc *psoc) ucfg_ocb_update_dp_handle(psoc, gp_cds_context->dp_soc); cds_set_ac_specs_params(cds_cfg); - - cds_cdp_cfg_attach(cds_cfg); + cds_cfg_update_ac_specs_params((struct txrx_pdev_cfg_param_t *) + gp_cds_context->cfg_ctx, cds_cfg); + cds_cdp_cfg_attach(psoc); bmi_target_ready(scn, gp_cds_context->cfg_ctx); diff --git a/core/dp/ol/inc/cfg_legacy_dp.h b/core/dp/ol/inc/cfg_legacy_dp.h new file mode 100644 index 000000000000..b6053b15f9fe --- /dev/null +++ b/core/dp/ol/inc/cfg_legacy_dp.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef __CFG_LEGACY_DP +#define __CFG_LEGACY_DP + +#include "cfg_define.h" +#include "cfg_converged.h" +#include "qdf_types.h" + +/* + * + * gEnableFlowSteering - Enable rx traffic flow steering + * @Default: false + * + * Enable Rx traffic flow steering to enable Rx interrupts on multiple CEs based + * on the flows. Different CEs<==>different IRQs<==>probably different CPUs. + * Parallel Rx paths. + * 1 - enable 0 - disable + * + * Usage: Internal + * + * + */ + #define CFG_DP_FLOW_STEERING_ENABLED \ + CFG_INI_BOOL( \ + "gEnableFlowSteering", \ + false, \ + "") + +#define CFG_DP_CE_CLASSIFY_ENABLE \ + CFG_INI_BOOL("gCEClassifyEnable", \ + true, "enable CE classify") + +#define CFG_LEGACY_DP_ALL \ + CFG(CFG_DP_FLOW_STEERING_ENABLED) \ + CFG(CFG_DP_CE_CLASSIFY_ENABLE) + +#endif diff --git a/core/dp/ol/inc/ol_cfg.h b/core/dp/ol/inc/ol_cfg.h index 31438b62fc61..239c1a980c26 100644 --- a/core/dp/ol/inc/ol_cfg.h +++ b/core/dp/ol/inc/ol_cfg.h @@ -97,6 +97,18 @@ struct txrx_pdev_cfg_t { */ u8 credit_update_enabled; struct ol_tx_sched_wrr_ac_specs_t ac_specs[TX_WMM_AC_NUM]; + bool gro_enable; + bool tso_enable; + bool lro_enable; + bool enable_data_stall_detection; + bool enable_flow_steering; + bool disable_intra_bss_fwd; + /* IPA Micro controller data path offload TX buffer size */ + uint32_t uc_tx_buffer_size; + /* IPA Micro controller data path offload RX indication ring count */ + uint32_t uc_rx_indication_ring_count; + /* IPA Micro controller data path offload TX partition base */ + uint32_t uc_tx_partition_base; }; /** diff --git a/core/dp/txrx/ol_cfg.c b/core/dp/txrx/ol_cfg.c index 6d798aa22a91..66622a5fb4e4 100644 --- a/core/dp/txrx/ol_cfg.c +++ b/core/dp/txrx/ol_cfg.c @@ -155,6 +155,13 @@ struct cdp_cfg *ol_pdev_cfg_attach(qdf_device_t osdev, void *pcfg_param) cfg_ctx->ip_tcp_udp_checksum_offload = cfg_param->ip_tcp_udp_checksum_offload; cfg_ctx->ce_classify_enabled = cfg_param->ce_classify_enabled; + cfg_ctx->gro_enable = cfg_param->gro_enable; + cfg_ctx->tso_enable = cfg_param->tso_enable; + cfg_ctx->lro_enable = cfg_param->lro_enable; + cfg_ctx->enable_data_stall_detection = + cfg_param->enable_data_stall_detection; + cfg_ctx->enable_flow_steering = cfg_param->enable_flow_steering; + cfg_ctx->disable_intra_bss_fwd = cfg_param->disable_intra_bss_fwd; ol_tx_set_flow_control_parameters((struct cdp_cfg *)cfg_ctx, cfg_param); diff --git a/core/dp/txrx/ol_txrx.c b/core/dp/txrx/ol_txrx.c index 7c2993a83e4b..6a983e2471ae 100644 --- a/core/dp/txrx/ol_txrx.c +++ b/core/dp/txrx/ol_txrx.c @@ -79,6 +79,8 @@ #include #include #include "wlan_roam_debug.h" +#include "cfg_ucfg_api.h" + #define DPT_DEBUGFS_PERMS (QDF_FILE_USR_READ | \ QDF_FILE_USR_WRITE | \ @@ -5311,6 +5313,73 @@ ol_txrx_wrapper_set_flow_control_parameters(struct cdp_cfg *cfg_pdev, (struct txrx_pdev_cfg_param_t *)cfg_param); } +/** + * ol_txrx_get_cfg() - get ini/cgf values in legacy dp + * @soc: soc context + * @cfg_param: cfg parameters + * + * Return: none + */ +static uint32_t ol_txrx_get_cfg(void *soc, enum cdp_dp_cfg cfg) +{ + struct txrx_pdev_cfg_t *cfg_ctx; + ol_txrx_pdev_handle pdev = cds_get_context(QDF_MODULE_ID_TXRX); + uint32_t value = 0; + + cfg_ctx = (struct txrx_pdev_cfg_t *)(pdev->ctrl_pdev); + switch (cfg) { + case cfg_dp_enable_data_stall: + value = cfg_ctx->enable_data_stall_detection; + break; + case cfg_dp_enable_ip_tcp_udp_checksum_offload: + value = cfg_ctx->ip_tcp_udp_checksum_offload; + break; + case cfg_dp_tso_enable: + value = cfg_ctx->tso_enable; + break; + case cfg_dp_lro_enable: + value = cfg_ctx->lro_enable; + break; + case cfg_dp_gro_enable: + value = cfg_ctx->gro_enable; + break; +#ifdef QCA_LL_TX_FLOW_CONTROL_V2 + case cfg_dp_tx_flow_start_queue_offset: + value = cfg_ctx->tx_flow_start_queue_offset; + break; + case cfg_dp_tx_flow_stop_queue_threshold: + value = cfg_ctx->tx_flow_stop_queue_th; + break; +#endif + case cfg_dp_ipa_uc_tx_buf_size: + value = cfg_ctx->uc_tx_buffer_size; + break; + case cfg_dp_ipa_uc_tx_partition_base: + value = cfg_ctx->uc_tx_partition_base; + break; + case cfg_dp_ipa_uc_rx_ind_ring_count: + value = cfg_ctx->uc_rx_indication_ring_count; + break; + case cfg_dp_enable_flow_steering: + value = cfg_ctx->enable_flow_steering; + break; + case cfg_dp_reorder_offload_supported: + value = cfg_ctx->is_full_reorder_offload; + break; + case cfg_dp_ce_classify_enable: + value = cfg_ctx->ce_classify_enabled; + break; + case cfg_dp_disable_intra_bss_fwd: + value = cfg_ctx->disable_intra_bss_fwd; + break; + default: + value = 0; + break; + } + + return value; +} + #ifdef WDI_EVENT_ENABLE void *ol_get_pldev(struct cdp_pdev *txrx_pdev) { @@ -5348,6 +5417,7 @@ static struct cdp_cmn_ops ol_ops_cmn = { .flush_cache_rx_queue = ol_txrx_flush_cache_rx_queue, .txrx_fw_stats_get = ol_txrx_fw_stats_get, .display_stats = ol_txrx_display_stats, + .txrx_get_cfg = ol_txrx_get_cfg, /* TODO: Add other functions */ }; @@ -5603,5 +5673,3 @@ struct cdp_soc_t *ol_txrx_soc_attach(void *scn_handle, soc->ops = &ol_txrx_ops; return soc; } - - diff --git a/core/hdd/inc/hdd_dp_cfg.h b/core/hdd/inc/hdd_dp_cfg.h index 71a7c0d5df3c..f8adede63697 100644 --- a/core/hdd/inc/hdd_dp_cfg.h +++ b/core/hdd/inc/hdd_dp_cfg.h @@ -752,6 +752,27 @@ CFG_VALUE_OR_DEFAULT, \ "Control to decide rx mode for packet procesing") +#define CFG_DP_CE_SERVICE_MAX_RX_IND_FLUSH \ + CFG_INI_UINT("ce_service_max_rx_ind_flush", \ + 1, 32, 32, \ + CFG_VALUE_OR_DEFAULT, "Ctrl to set ce service max rx ind flsh") + +#define CFG_DP_CE_SERVICE_MAX_YIELD_TIME \ + CFG_INI_UINT("ce_service_max_yield_time", \ + 500, 10000, 10000, \ + CFG_VALUE_OR_DEFAULT, "Ctrl to set ce service max yield time") + +#ifdef WLAN_FEATURE_FASTPATH +#define CFG_DP_ENABLE_FASTPATH \ + CFG_INI_BOOL("gEnableFastPath", \ + false, "Ctrl to enable fastpath feature") + +#define CFG_DP_ENABLE_FASTPATH_ALL \ + CFG(CFG_DP_ENABLE_FASTPATH) +#else +#define CFG_DP_ENABLE_FASTPATH_ALL +#endif + #ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL #define CFG_HDD_DP_LEGACY_TX_FLOW \ CFG(CFG_DP_LL_TX_FLOW_LWM) \ @@ -789,7 +810,10 @@ CFG(CFG_DP_RX_THREAD_CPU_MASK) \ CFG(CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST) \ CFG(CFG_DP_TX_ORPHAN_ENABLE) \ - CFG(CFG_DP_RX_MODE) + CFG(CFG_DP_RX_MODE) \ + CFG(CFG_DP_CE_SERVICE_MAX_RX_IND_FLUSH) \ + CFG(CFG_DP_CE_SERVICE_MAX_YIELD_TIME) \ + CFG_DP_ENABLE_FASTPATH_ALL #define CFG_HDD_DP_ALL \ CFG_HDD_DP \ CFG_HDD_DP_MSM_PLATFORM \ diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index e39f54174802..0407ca1a9a28 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -3810,24 +3810,6 @@ enum hdd_link_speed_rpt_type { #define CFG_ENABLE_SSR_MAX (1) #define CFG_ENABLE_SSR_DEFAULT (1) -/** - * - * gEnableDataStallDetection - Enable/Disable Data stall detection - * @Min: 0 - * @Max: 1 - * @Default: 1 - * - * This ini is used to enable/disable data stall detection - * - * Usage: Internal/External - * - * - */ -#define CFG_ENABLE_DATA_STALL_DETECTION "gEnableDataStallDetection" -#define CFG_ENABLE_DATA_STALL_DETECTION_MIN (0) -#define CFG_ENABLE_DATA_STALL_DETECTION_MAX (1) -#define CFG_ENABLE_DATA_STALL_DETECTION_DEFAULT (1) - /* * * gEnableOverLapCh - Enables Overlap Channel. If set, allow overlapping @@ -4417,55 +4399,6 @@ enum hdd_link_speed_rpt_type { #define CFG_ENABLE_SNR_MONITORING_MAX (1) #define CFG_ENABLE_SNR_MONITORING_DEFAULT (0) -/* - * - * gEnableIpTcpUdpChecksumOffload - It enables IP, TCP and UDP checksum - * offload in hardware - * @Min: 0 - * @Max: 1 - * @Default: DEF - * - * This ini is used to enable IP, TCP and UDP checksum offload in hardware - * and also advertise same to network stack - * - * Related: None - * - * Supported Feature: STA - * - * Usage: Internal/External - * - * - */ - -#define CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD "gEnableIpTcpUdpChecksumOffload" -#define CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DISABLE (0) -#define CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_ENABLE (1) -#define CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DEFAULT (CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_ENABLE) - -#ifdef WLAN_FEATURE_FASTPATH - -/* - * - * gEnableFastPath - Control to enable fastpath feature - * - * @Min: 0 - * @Max: 1 - * @Default: 0 - * - * This ini is used to enable fastpath feature - * - * Supported Feature: Wlan Fastpath Feature - * - * Usage: Internal - * - * - */ -#define CFG_ENABLE_FASTPATH "gEnableFastPath" -#define CFG_ENABLE_FASTPATH_MIN (0) -#define CFG_ENABLE_FASTPATH_MAX (1) -#define CFG_ENABLE_FASTPATH_DEFAULT (CFG_ENABLE_FASTPATH_MIN) -#endif /* WLAN_FEATURE_FASTPATH */ - /* SAR Thermal limit values for 2g and 5g */ #define CFG_SET_TXPOWER_LIMIT2G_NAME "TxPower2g" @@ -4729,22 +4662,6 @@ enum hdd_link_speed_rpt_type { #define CFG_REORDER_OFFLOAD_SUPPORT_MAX (1) #define CFG_REORDER_OFFLOAD_SUPPORT_DEFAULT (1) -#define CFG_IPA_UC_TX_BUF_SIZE_NAME "IpaUcTxBufSize" -#define CFG_IPA_UC_TX_BUF_SIZE_MIN (0) -#define CFG_IPA_UC_TX_BUF_SIZE_MAX (4096) -#define CFG_IPA_UC_TX_BUF_SIZE_DEFAULT (2048) - -/* IpaUcRxIndRingCount should be power of 2 */ -#define CFG_IPA_UC_RX_IND_RING_COUNT_NAME "IpaUcRxIndRingCount" -#define CFG_IPA_UC_RX_IND_RING_COUNT_MIN (0) -#define CFG_IPA_UC_RX_IND_RING_COUNT_MAX (2048) -#define CFG_IPA_UC_RX_IND_RING_COUNT_DEFAULT (1024) - -#define CFG_IPA_UC_TX_PARTITION_BASE_NAME "IpaUcTxPartitionBase" -#define CFG_IPA_UC_TX_PARTITION_BASE_MIN (0) -#define CFG_IPA_UC_TX_PARTITION_BASE_MAX (9000) -#define CFG_IPA_UC_TX_PARTITION_BASE_DEFAULT (3000) - #define CFG_ENABLE_SAP_SUSPEND "gEnableSapSuspend" #define CFG_ENABLE_SAP_SUSPEND_MIN (0) #define CFG_ENABLE_SAP_SUSPEND_MAX (1) @@ -4889,79 +4806,6 @@ enum hdd_link_speed_rpt_type { /* * - * TSOEnable - Control to enable tso feature - * - * @Min: 0 - * @Max: 1 - * @Default: 0 - * - * This ini is used to enable TSO feature - * - * Supported Feature: TSO Feature - * - * Usage: Internal - * - * - */ -#define CFG_TSO_ENABLED_NAME "TSOEnable" -#define CFG_TSO_ENABLED_MIN (0) -#define CFG_TSO_ENABLED_MAX (1) -#define CFG_TSO_ENABLED_DEFAULT (0) - -/* - * - * LROEnable - Control to enable lro feature - * - * @Min: 0 - * @Max: 1 - * @Default: 0 - * - * This ini is used to enable LRO feature - * - * Supported Feature: LRO - * - * Usage: Internal - * - * - */ -#define CFG_LRO_ENABLED_NAME "LROEnable" -#define CFG_LRO_ENABLED_MIN (0) -#define CFG_LRO_ENABLED_MAX (1) -#define CFG_LRO_ENABLED_DEFAULT (0) - -/* - * - * GROEnable - Control to enable gro feature - * - * @Disable: 0 - * @Enable: 1 - * @Default: 0 - * - * This ini is used to enable GRO feature - * - * Supported Feature: GRO - * - * Usage: Internal - * - * - */ -#define CFG_GRO_ENABLED_NAME "GROEnable" -#define CFG_GRO_ENABLED_MIN (0) -#define CFG_GRO_ENABLED_MAX (1) -#define CFG_GRO_ENABLED_DEFAULT (0) - -/* - * Enable Rx traffic flow steering to enable Rx interrupts on multiple CEs based - * on the flows. Different CEs<==>different IRQs<==>probably different CPUs. - * Parallel Rx paths. - * 1 - enable 0 - disable - */ -#define CFG_FLOW_STEERING_ENABLED_NAME "gEnableFlowSteering" -#define CFG_FLOW_STEERING_ENABLED_MIN (0) -#define CFG_FLOW_STEERING_ENABLED_MAX (1) -#define CFG_FLOW_STEERING_ENABLED_DEFAULT (0) - -/* * Max number of MSDUs per HTT RX IN ORDER INDICATION msg. * Note that this has a direct impact on the size of source CE rings. * It is possible to go below 8, but would require testing; so we are @@ -5037,11 +4881,6 @@ enum hdd_link_speed_rpt_type { #define CFG_ETSI13_SRD_CHAN_IN_MASTER_MODE_MIN (0) #define CFG_ETSI13_SRD_CHAN_IN_MASTER_MODE_MAX (1) -#define CFG_CE_CLASSIFY_ENABLE_NAME "gCEClassifyEnable" -#define CFG_CE_CLASSIFY_ENABLE_MIN (0) -#define CFG_CE_CLASSIFY_ENABLE_MAX (1) -#define CFG_CE_CLASSIFY_ENABLE_DEFAULT (1) - /* * * @@ -5410,48 +5249,6 @@ enum hdd_link_speed_rpt_type { #define CFG_NUM_DP_RX_THREADS_MAX (4) #define CFG_NUM_DP_RX_THREADS_DEFAULT (1) -/* - * - * ce_service_max_yield_time - Control to set ce service max yield time (in us) - * - * @Min: 500 - * @Max: 10000 - * @Default: 10000 - * - * This ini is used to set ce service max yield time (in us) - * - * Supported Feature: NAPI - * - * Usage: Internal - * - * - */ -#define CFG_CE_SERVICE_MAX_YIELD_TIME_NAME "ce_service_max_yield_time" -#define CFG_CE_SERVICE_MAX_YIELD_TIME_MIN (500) -#define CFG_CE_SERVICE_MAX_YIELD_TIME_MAX (10000) -#define CFG_CE_SERVICE_MAX_YIELD_TIME_DEFAULT (10000) - -/* - * - * ce_service_max_rx_ind_flush - Control to set ce service max rx ind flush - * - * @Min: 1 - * @Max: 32 - * @Default: 1 - * - * This ini is used to set ce service max rx ind flush - * - * Supported Feature: NAPI - * - * Usage: Internal - * - * - */ -#define CFG_CE_SERVICE_MAX_RX_IND_FLUSH_NAME "ce_service_max_rx_ind_flush" -#define CFG_CE_SERVICE_MAX_RX_IND_FLUSH_MIN (1) -#define CFG_CE_SERVICE_MAX_RX_IND_FLUSH_MAX (32) -#define CFG_CE_SERVICE_MAX_RX_IND_FLUSH_DEFAULT (32) - /* * Support to start sap in indoor channel * Customer can config this item to enable/disable sap in indoor channel @@ -7456,7 +7253,6 @@ struct hdd_config { uint8_t scanAgingTimeout; uint8_t disableLDPCWithTxbfAP; bool enableSSR; - bool enable_data_stall_det; bool bFastRoamInConIniFeatureEnabled; bool fEnableSNRMonitoring; /*PNO related parameters */ @@ -7477,8 +7273,6 @@ struct hdd_config { uint32_t ibssTxSpEndInactivityTime; uint32_t ibssPsWarmupTime; uint32_t ibssPs1RxChainInAtimEnable; - - bool enable_ip_tcp_udp_checksum_offload; uint32_t IpaConfig; bool IpaClkScalingEnable; uint8_t disableDFSChSwitch; @@ -7506,10 +7300,6 @@ struct hdd_config { int32_t dfsRadarPriMultiplier; uint8_t reorderOffloadSupport; - uint32_t IpaUcTxBufSize; - uint32_t IpaUcRxIndRingCount; - uint32_t IpaUcTxPartitionBase; - #ifdef FEATURE_WLAN_FORCE_SAP_SCC uint8_t SapSccChanAvoidance; #endif /* FEATURE_WLAN_FORCE_SAP_SCC */ @@ -7528,22 +7318,12 @@ struct hdd_config { uint8_t sap_11ac_override; uint8_t go_11ac_override; uint8_t prefer_non_dfs_on_radar; - bool tso_enable; - bool lro_enable; - bool gro_enable; - bool flow_steering_enable; uint8_t max_msdus_per_rxinorderind; /* parameter for defer timer for enabling TDLS on p2p listen */ uint32_t fine_time_meas_cap; uint8_t max_scan_count; -#ifdef WLAN_FEATURE_FASTPATH - bool fastpath_enable; -#endif bool etsi13_srd_chan_in_master_mode; uint8_t num_dp_rx_threads; - uint32_t ce_service_max_yield_time; - uint8_t ce_service_max_rx_ind_flush; - bool ce_classify_enabled; uint32_t dual_mac_feature_disable; uint8_t dbs_scan_selection[CFG_DBS_SCAN_PARAM_LENGTH]; uint32_t sta_sap_scc_on_dfs_chan; diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h index 149fd56f940a..ba36706ce794 100644 --- a/core/hdd/inc/wlan_hdd_main.h +++ b/core/hdd/inc/wlan_hdd_main.h @@ -2722,8 +2722,10 @@ int hdd_process_pktlog_command(struct hdd_context *hdd_ctx, static inline void hdd_set_tso_flags(struct hdd_context *hdd_ctx, struct net_device *wlan_dev) { - if (hdd_ctx->config->tso_enable && - hdd_ctx->config->enable_ip_tcp_udp_checksum_offload) { + if (cdp_cfg_get(cds_get_context(QDF_MODULE_ID_SOC), + cfg_dp_tso_enable) && + cdp_cfg_get(cds_get_context(QDF_MODULE_ID_SOC), + cfg_dp_enable_ip_tcp_udp_checksum_offload)){ /* * We want to enable TSO only if IP/UDP/TCP TX checksum flag is * enabled. @@ -2850,10 +2852,10 @@ void hdd_connect_result(struct net_device *dev, const u8 *bssid, tSirResultCodes timeout_reason); #ifdef WLAN_FEATURE_FASTPATH -void hdd_enable_fastpath(struct hdd_config *hdd_cfg, +void hdd_enable_fastpath(struct hdd_context *hdd_ctx, void *context); #else -static inline void hdd_enable_fastpath(struct hdd_config *hdd_cfg, +static inline void hdd_enable_fastpath(struct hdd_context *hdd_ctx, void *context) { } diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index 006eb9973b2a..b24e484ae776 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -1731,13 +1731,6 @@ struct reg_table_entry g_registry_table[] = { CFG_ENABLE_SSR_MAX, cb_notify_set_enable_ssr, 0), - REG_VARIABLE(CFG_ENABLE_DATA_STALL_DETECTION, WLAN_PARAM_Integer, - struct hdd_config, enable_data_stall_det, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_DATA_STALL_DETECTION_DEFAULT, - CFG_ENABLE_DATA_STALL_DETECTION_MIN, - CFG_ENABLE_DATA_STALL_DETECTION_MAX), - REG_DYNAMIC_VARIABLE(CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY, WLAN_PARAM_Integer, struct hdd_config, bFastRoamInConIniFeatureEnabled, @@ -1784,13 +1777,6 @@ struct reg_table_entry g_registry_table[] = { CFG_MAX_AMSDU_NUM_MIN, CFG_MAX_AMSDU_NUM_MAX), - REG_VARIABLE(CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD, WLAN_PARAM_Integer, - struct hdd_config, enable_ip_tcp_udp_checksum_offload, - VAR_FLAGS_OPTIONAL, - CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DEFAULT, - CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DISABLE, - CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_ENABLE), - REG_VARIABLE(CFG_COALESING_IN_IBSS_NAME, WLAN_PARAM_Integer, struct hdd_config, isCoalesingInIBSSAllowed, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -1970,27 +1956,6 @@ struct reg_table_entry g_registry_table[] = { CFG_REORDER_OFFLOAD_SUPPORT_MIN, CFG_REORDER_OFFLOAD_SUPPORT_MAX), - REG_VARIABLE(CFG_IPA_UC_TX_BUF_SIZE_NAME, WLAN_PARAM_Integer, - struct hdd_config, IpaUcTxBufSize, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, - CFG_IPA_UC_TX_BUF_SIZE_DEFAULT, - CFG_IPA_UC_TX_BUF_SIZE_MIN, - CFG_IPA_UC_TX_BUF_SIZE_MAX), - - REG_VARIABLE(CFG_IPA_UC_RX_IND_RING_COUNT_NAME, WLAN_PARAM_Integer, - struct hdd_config, IpaUcRxIndRingCount, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, - CFG_IPA_UC_RX_IND_RING_COUNT_DEFAULT, - CFG_IPA_UC_RX_IND_RING_COUNT_MIN, - CFG_IPA_UC_RX_IND_RING_COUNT_MAX), - - REG_VARIABLE(CFG_IPA_UC_TX_PARTITION_BASE_NAME, WLAN_PARAM_Integer, - struct hdd_config, IpaUcTxPartitionBase, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, - CFG_IPA_UC_TX_PARTITION_BASE_DEFAULT, - CFG_IPA_UC_TX_PARTITION_BASE_MIN, - CFG_IPA_UC_TX_PARTITION_BASE_MAX), - REG_VARIABLE(CFG_ENABLE_SAP_SUSPEND, WLAN_PARAM_Integer, struct hdd_config, enable_sap_suspend, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -2059,34 +2024,6 @@ struct reg_table_entry g_registry_table[] = { CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_MIN, CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_MAX), - REG_VARIABLE(CFG_TSO_ENABLED_NAME, WLAN_PARAM_Integer, - struct hdd_config, tso_enable, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TSO_ENABLED_DEFAULT, - CFG_TSO_ENABLED_MIN, - CFG_TSO_ENABLED_MAX), - - REG_VARIABLE(CFG_LRO_ENABLED_NAME, WLAN_PARAM_Integer, - struct hdd_config, lro_enable, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_LRO_ENABLED_DEFAULT, - CFG_LRO_ENABLED_MIN, - CFG_LRO_ENABLED_MAX), - - REG_VARIABLE(CFG_GRO_ENABLED_NAME, WLAN_PARAM_Integer, - struct hdd_config, gro_enable, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_GRO_ENABLED_DEFAULT, - CFG_GRO_ENABLED_MIN, - CFG_GRO_ENABLED_MAX), - - REG_VARIABLE(CFG_FLOW_STEERING_ENABLED_NAME, WLAN_PARAM_Integer, - struct hdd_config, flow_steering_enable, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_FLOW_STEERING_ENABLED_DEFAULT, - CFG_FLOW_STEERING_ENABLED_MIN, - CFG_FLOW_STEERING_ENABLED_MAX), - REG_VARIABLE(CFG_MAX_MSDUS_PER_RXIND_NAME, WLAN_PARAM_Integer, struct hdd_config, max_msdus_per_rxinorderind, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -2101,14 +2038,6 @@ struct reg_table_entry g_registry_table[] = { CFG_FINE_TIME_MEAS_CAPABILITY_MIN, CFG_FINE_TIME_MEAS_CAPABILITY_MAX), -#ifdef WLAN_FEATURE_FASTPATH - REG_VARIABLE(CFG_ENABLE_FASTPATH, WLAN_PARAM_Integer, - struct hdd_config, fastpath_enable, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_FASTPATH_DEFAULT, - CFG_ENABLE_FASTPATH_MIN, - CFG_ENABLE_FASTPATH_MAX), -#endif REG_VARIABLE(CFG_MAX_SCAN_COUNT_NAME, WLAN_PARAM_Integer, struct hdd_config, max_scan_count, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -2123,13 +2052,6 @@ struct reg_table_entry g_registry_table[] = { CFG_ETSI13_SRD_CHAN_IN_MASTER_MODE_MIN, CFG_ETSI13_SRD_CHAN_IN_MASTER_MODE_MAX), - REG_VARIABLE(CFG_CE_CLASSIFY_ENABLE_NAME, WLAN_PARAM_Integer, - struct hdd_config, ce_classify_enabled, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_CE_CLASSIFY_ENABLE_DEFAULT, - CFG_CE_CLASSIFY_ENABLE_MIN, - CFG_CE_CLASSIFY_ENABLE_MAX), - REG_VARIABLE(CFG_DUAL_MAC_FEATURE_DISABLE, WLAN_PARAM_HexInteger, struct hdd_config, dual_mac_feature_disable, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -2359,20 +2281,6 @@ struct reg_table_entry g_registry_table[] = { CFG_NUM_DP_RX_THREADS_MIN, CFG_NUM_DP_RX_THREADS_MAX), - REG_VARIABLE(CFG_CE_SERVICE_MAX_YIELD_TIME_NAME, WLAN_PARAM_Integer, - struct hdd_config, ce_service_max_yield_time, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_CE_SERVICE_MAX_YIELD_TIME_DEFAULT, - CFG_CE_SERVICE_MAX_YIELD_TIME_MIN, - CFG_CE_SERVICE_MAX_YIELD_TIME_MAX), - - REG_VARIABLE(CFG_CE_SERVICE_MAX_RX_IND_FLUSH_NAME, WLAN_PARAM_Integer, - struct hdd_config, ce_service_max_rx_ind_flush, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_CE_SERVICE_MAX_RX_IND_FLUSH_DEFAULT, - CFG_CE_SERVICE_MAX_RX_IND_FLUSH_MIN, - CFG_CE_SERVICE_MAX_RX_IND_FLUSH_MAX), - REG_VARIABLE(CFG_INDOOR_CHANNEL_SUPPORT_NAME, WLAN_PARAM_Integer, struct hdd_config, indoor_channel_support, diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index d7ee9c153512..b735944200c0 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -126,6 +126,7 @@ #include "wlan_crypto_global_api.h" #include "wlan_nl_to_crypto_params.h" #include "wlan_crypto_global_def.h" +#include "cdp_txrx_cfg.h" #define g_mode_rates_size (12) #define a_mode_rates_size (8) @@ -10645,7 +10646,7 @@ static int __wlan_hdd_cfg80211_get_nud_stats(struct wiphy *wiphy, pkt_type_bitmap = adapter->pkt_type_bitmap; /* send NUD failure event only when ARP tracking is enabled. */ - if (hdd_ctx->config->enable_data_stall_det && + if (cdp_cfg_get(soc, cfg_dp_enable_data_stall) && (pkt_type_bitmap & CONNECTIVITY_CHECK_SET_ARP)) cdp_post_data_stall_event(soc, DATA_STALL_LOG_INDICATOR_FRAMEWORK, diff --git a/core/hdd/src/wlan_hdd_driver_ops.c b/core/hdd/src/wlan_hdd_driver_ops.c index c03f220c3779..d3d1d6f6bc81 100644 --- a/core/hdd/src/wlan_hdd_driver_ops.c +++ b/core/hdd/src/wlan_hdd_driver_ops.c @@ -40,6 +40,7 @@ #include "wlan_hdd_driver_ops.h" #include "wlan_ipa_ucfg_api.h" #include "wlan_hdd_debugfs.h" +#include "cfg_ucfg_api.h" #ifdef MODULE #define WLAN_MODULE_NAME module_name(THIS_MODULE) @@ -262,10 +263,12 @@ int hdd_hif_open(struct device *dev, void *bdev, const struct hif_bus_id *bid, } hif_set_ce_service_max_yield_time(hif_ctx, - hdd_ctx->config->ce_service_max_yield_time); + cfg_get(hdd_ctx->psoc, + CFG_DP_CE_SERVICE_MAX_YIELD_TIME)); ucfg_pmo_psoc_set_hif_handle(hdd_ctx->psoc, hif_ctx); hif_set_ce_service_max_rx_ind_flush(hif_ctx, - hdd_ctx->config->ce_service_max_rx_ind_flush); + cfg_get(hdd_ctx->psoc, + CFG_DP_CE_SERVICE_MAX_RX_IND_FLUSH)); return 0; err_hif_close: diff --git a/core/hdd/src/wlan_hdd_hostapd.c b/core/hdd/src/wlan_hdd_hostapd.c index b510853d5949..6bb82c8efca1 100644 --- a/core/hdd/src/wlan_hdd_hostapd.c +++ b/core/hdd/src/wlan_hdd_hostapd.c @@ -3219,7 +3219,8 @@ struct hdd_adapter *hdd_wlan_create_ap_dev(struct hdd_context *hdd_ctx, dev->mtu = HDD_DEFAULT_MTU; dev->tx_queue_len = HDD_NETDEV_TX_QUEUE_LEN; - if (hdd_ctx->config->enable_ip_tcp_udp_checksum_offload) + if (cdp_cfg_get(cds_get_context(QDF_MODULE_ID_SOC), + cfg_dp_enable_ip_tcp_udp_checksum_offload)) dev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; dev->features |= NETIF_F_RXCSUM; diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 3158c3c2f290..7895a3a34739 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -3540,7 +3540,9 @@ hdd_alloc_station_adapter(struct hdd_context *hdd_ctx, tSirMacAddr mac_addr, struct hdd_adapter *adapter; struct hdd_station_ctx *sta_ctx; QDF_STATUS qdf_status; + void *soc; + soc = cds_get_context(QDF_MODULE_ID_SOC); /* cfg80211 initialization and registration */ dev = alloc_netdev_mq(sizeof(*adapter), name, #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 17, 0)) || defined(WITH_BACKPORTS) @@ -3586,7 +3588,8 @@ hdd_alloc_station_adapter(struct hdd_context *hdd_ctx, tSirMacAddr mac_addr, qdf_mem_copy(adapter->mac_addr.bytes, mac_addr, sizeof(tSirMacAddr)); dev->watchdog_timeo = HDD_TX_TIMEOUT; - if (hdd_ctx->config->enable_ip_tcp_udp_checksum_offload) + if (cdp_cfg_get(soc, + cfg_dp_enable_ip_tcp_udp_checksum_offload)) dev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; dev->features |= NETIF_F_RXCSUM; @@ -4013,8 +4016,9 @@ QDF_STATUS hdd_init_station_mode(struct hdd_adapter *adapter) * during that time, then as part of SSR init, do not enable * the LRO again. Keep the LRO state same as before SSR. */ - if (hdd_ctx->config->lro_enable && - !(qdf_atomic_read(&hdd_ctx->vendor_disable_lro_flag))) + if (cdp_cfg_get(cds_get_context(QDF_MODULE_ID_SOC), + cfg_dp_lro_enable) && + !(qdf_atomic_read(&hdd_ctx->vendor_disable_lro_flag))) adapter->dev->features |= NETIF_F_LRO; /* rcpi info initialization */ @@ -8043,6 +8047,7 @@ static inline int wlan_hdd_set_wow_pulse(struct hdd_context *phddctx, bool enabl #endif #ifdef WLAN_FEATURE_FASTPATH + /** * hdd_enable_fastpath() - Enable fastpath if enabled in config INI * @hdd_cfg: hdd config @@ -8050,10 +8055,10 @@ static inline int wlan_hdd_set_wow_pulse(struct hdd_context *phddctx, bool enabl * * Return: none */ -void hdd_enable_fastpath(struct hdd_config *hdd_cfg, - void *context) +void hdd_enable_fastpath(struct hdd_context *hdd_ctx, + void *context) { - if (hdd_cfg->fastpath_enable) + if (cfg_get(hdd_ctx->psoc, CFG_DP_ENABLE_FASTPATH)) hif_enable_fastpath(context); } #endif @@ -9435,37 +9440,13 @@ static int hdd_update_cds_config(struct hdd_context *hdd_ctx) /* IPA micro controller data path offload resource config item */ cds_cfg->uc_offload_enabled = ucfg_ipa_uc_is_enabled(); - cds_cfg->uc_txbuf_size = hdd_ctx->config->IpaUcTxBufSize; - if (!is_power_of_2(hdd_ctx->config->IpaUcRxIndRingCount)) { - /* IpaUcRxIndRingCount should be power of 2 */ - hdd_debug("Round down IpaUcRxIndRingCount %d to nearest power of 2", - hdd_ctx->config->IpaUcRxIndRingCount); - hdd_ctx->config->IpaUcRxIndRingCount = - rounddown_pow_of_two( - hdd_ctx->config->IpaUcRxIndRingCount); - if (!hdd_ctx->config->IpaUcRxIndRingCount) { - hdd_err("Failed to round down IpaUcRxIndRingCount"); - goto exit; - } - hdd_debug("IpaUcRxIndRingCount rounded down to %d", - hdd_ctx->config->IpaUcRxIndRingCount); - } - cds_cfg->uc_rxind_ringcount = - hdd_ctx->config->IpaUcRxIndRingCount; - cds_cfg->uc_tx_partition_base = - hdd_ctx->config->IpaUcTxPartitionBase; cds_cfg->max_scan = hdd_ctx->config->max_scan_count; - cds_cfg->ip_tcp_udp_checksum_offload = - hdd_ctx->config->enable_ip_tcp_udp_checksum_offload; cds_cfg->enable_rxthread = hdd_ctx->enable_rxthread; - cds_cfg->ce_classify_enabled = - hdd_ctx->config->ce_classify_enabled; cds_cfg->self_gen_frm_pwr = hdd_ctx->config->self_gen_frm_pwr; ucfg_mlme_get_sap_max_peers(hdd_ctx->psoc, &value); cds_cfg->max_station = value; cds_cfg->sub_20_channel_width = WLAN_SUB_20_CH_WIDTH_NONE; - cds_cfg->flow_steering_enabled = hdd_ctx->config->flow_steering_enable; cds_cfg->max_msdus_per_rxinorderind = hdd_ctx->config->max_msdus_per_rxinorderind; cds_cfg->self_recovery_enabled = self_recovery; @@ -10418,7 +10399,8 @@ static int hdd_features_init(struct hdd_context *hdd_ctx) /* Send Enable/Disable data stall detection cmd to FW */ sme_cli_set_command(0, WMI_PDEV_PARAM_DATA_STALL_DETECT_ENABLE, - hdd_ctx->config->enable_data_stall_det, PDEV_CMD); + cdp_cfg_get(cds_get_context(QDF_MODULE_ID_SOC), + cfg_dp_enable_data_stall), PDEV_CMD); ucfg_mlme_get_go_cts2self_for_sta(hdd_ctx->psoc, &b_cts2self); if (b_cts2self) @@ -13567,24 +13549,25 @@ static int hdd_update_dp_config(struct hdd_context *hdd_ctx) { struct cdp_config_params params; QDF_STATUS status; + void *soc; - params.tso_enable = hdd_ctx->config->tso_enable; - params.lro_enable = hdd_ctx->config->lro_enable; + soc = cds_get_context(QDF_MODULE_ID_SOC); + params.tso_enable = cfg_get(hdd_ctx->psoc, CFG_DP_TSO); + params.lro_enable = cfg_get(hdd_ctx->psoc, CFG_DP_LRO); #ifdef QCA_LL_TX_FLOW_CONTROL_V2 params.tx_flow_stop_queue_threshold = hdd_ctx->config->TxFlowStopQueueThreshold; params.tx_flow_start_queue_offset = hdd_ctx->config->TxFlowStartQueueOffset; #endif - params.flow_steering_enable = hdd_ctx->config->flow_steering_enable; + params.flow_steering_enable = + cfg_get(hdd_ctx->psoc, CFG_DP_FLOW_STEERING_ENABLED); params.napi_enable = hdd_ctx->napi_enable; params.tcp_udp_checksumoffload = - hdd_ctx->config->enable_ip_tcp_udp_checksum_offload; - params.ipa_enable = ucfg_ipa_is_enabled(); + cfg_get(hdd_ctx->psoc, + CFG_DP_TCP_UDP_CKSUM_OFFLOAD); - status = cdp_update_config_parameters( - cds_get_context(QDF_MODULE_ID_SOC), - ¶ms); + status = cdp_update_config_parameters(soc, ¶ms); if (status) { hdd_err("Failed to attach config parameters"); return status; diff --git a/core/hdd/src/wlan_hdd_softap_tx_rx.c b/core/hdd/src/wlan_hdd_softap_tx_rx.c index 0efed2278b07..24a9649f276c 100644 --- a/core/hdd/src/wlan_hdd_softap_tx_rx.c +++ b/core/hdd/src/wlan_hdd_softap_tx_rx.c @@ -709,7 +709,7 @@ static void __hdd_softap_tx_timeout(struct net_device *dev) QDF_TRACE(QDF_MODULE_ID_HDD_DATA, QDF_TRACE_LEVEL_ERROR, "Detected data stall due to continuous TX timeouts"); adapter->hdd_stats.tx_rx_stats.cont_txtimeout_cnt = 0; - if (hdd_ctx->config->enable_data_stall_det) + if (cdp_cfg_get(soc, cfg_dp_enable_data_stall)) cdp_post_data_stall_event(soc, DATA_STALL_LOG_INDICATOR_HOST_DRIVER, DATA_STALL_LOG_HOST_SOFTAP_TX_TIMEOUT, diff --git a/core/hdd/src/wlan_hdd_tx_rx.c b/core/hdd/src/wlan_hdd_tx_rx.c index bfb734b87082..a662ac86ef28 100644 --- a/core/hdd/src/wlan_hdd_tx_rx.c +++ b/core/hdd/src/wlan_hdd_tx_rx.c @@ -1275,7 +1275,7 @@ static void __hdd_tx_timeout(struct net_device *dev) QDF_TRACE(QDF_MODULE_ID_HDD_DATA, QDF_TRACE_LEVEL_ERROR, "Data stall due to continuous TX timeouts"); adapter->hdd_stats.tx_rx_stats.cont_txtimeout_cnt = 0; - if (hdd_ctx->config->enable_data_stall_det) + if (cdp_cfg_get(soc, cfg_dp_enable_data_stall)) cdp_post_data_stall_event(soc, DATA_STALL_LOG_INDICATOR_HOST_DRIVER, DATA_STALL_LOG_HOST_STA_TX_TIMEOUT, @@ -1530,13 +1530,18 @@ static bool hdd_is_rx_wake_lock_needed(struct sk_buff *skb) */ static void hdd_resolve_rx_ol_mode(struct hdd_context *hdd_ctx) { - if (!(hdd_ctx->config->lro_enable ^ - hdd_ctx->config->gro_enable)) { - hdd_ctx->config->lro_enable && hdd_ctx->config->gro_enable ? + void *soc; + + soc = cds_get_context(QDF_MODULE_ID_SOC); + + if (!(cdp_cfg_get(soc, cfg_dp_lro_enable) ^ + cdp_cfg_get(soc, cfg_dp_gro_enable))) { + cdp_cfg_get(soc, cfg_dp_lro_enable) && + cdp_cfg_get(soc, cfg_dp_gro_enable) ? hdd_err("Can't enable both LRO and GRO, disabling Rx offload") : hdd_debug("LRO and GRO both are disabled"); hdd_ctx->ol_enable = 0; - } else if (hdd_ctx->config->lro_enable) { + } else if (cdp_cfg_get(soc, cfg_dp_lro_enable)) { hdd_debug("Rx offload LRO is enabled"); hdd_ctx->ol_enable = CFG_LRO_ENABLED; } else {