浏览代码

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
jitiphil 6 年之前
父节点
当前提交
377bcc1227

+ 2 - 0
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 \

+ 44 - 22
core/cds/src/cds_api.c

@@ -69,6 +69,7 @@
 #include <target_if_dp.h>
 #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);
-
-	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;
+	struct hdd_context *hdd_ctx = gp_cds_context->hdd_context;
+
+	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);
 

+ 54 - 0
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"
+
+/*
+ * <ini>
+ * 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
+ *
+ * </ini>
+ */
+ #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

+ 12 - 0
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;
 };
 
 /**

+ 7 - 0
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);
 

+ 70 - 2
core/dp/txrx/ol_txrx.c

@@ -79,6 +79,8 @@
 #include <htt_internal.h>
 #include <ol_txrx_ipa.h>
 #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;
 }
-
-

+ 25 - 1
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 \

+ 0 - 220
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)
 
-/**
- * <ini>
- * 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
- *
- * </ini>
- */
-#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)
-
 /*
  * <ini>
  * 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)
 
-/*
- * <ini>
- * 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
- *
- * </ini>
- */
-
-#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
-
-/*
- * <ini>
- * 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
- *
- * </ini>
- */
-#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 {
 
 /*
  * <ini>
- * 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
- *
- * </ini>
- */
-#define CFG_TSO_ENABLED_NAME           "TSOEnable"
-#define CFG_TSO_ENABLED_MIN            (0)
-#define CFG_TSO_ENABLED_MAX            (1)
-#define CFG_TSO_ENABLED_DEFAULT        (0)
-
-/*
- * <ini>
- * 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
- *
- * </ini>
- */
-#define CFG_LRO_ENABLED_NAME           "LROEnable"
-#define CFG_LRO_ENABLED_MIN            (0)
-#define CFG_LRO_ENABLED_MAX            (1)
-#define CFG_LRO_ENABLED_DEFAULT        (0)
-
-/*
- * <ini>
- * 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
- *
- * </ini>
- */
-#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)
-
 /*
  *
  * <ini>
@@ -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)
 
-/*
- * <ini>
- * 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
- *
- * </ini>
- */
-#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)
-
-/*
- * <ini>
- * 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
- *
- * </ini>
- */
-#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;

+ 6 - 4
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)
 {
 }

+ 0 - 92
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,

+ 2 - 1
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,

+ 5 - 2
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:

+ 2 - 1
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;
 

+ 22 - 39
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),
-					&params);
+	status = cdp_update_config_parameters(soc, &params);
 	if (status) {
 		hdd_err("Failed to attach config parameters");
 		return status;

+ 1 - 1
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,

+ 10 - 5
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 {