Browse Source

qcacld-3.0: Move offload ini params to converged CFG

Move misc offload ini params to converged CFG component and
cleanup HDD ini config.

Change-Id: I14b3d95dc1577d02230168d305d1d1c4c7fef2fd
CRs-fixed: 2358489
Manikandan Mohan 6 years ago
parent
commit
d350c194b4

+ 16 - 0
components/fw_offload/core/inc/wlan_fw_offload_main.h

@@ -154,6 +154,12 @@ struct wlan_fwol_neighbor_report_cfg {
  * @enable_fw_module_log_level_num: enablefw module log level num
  * @is_rate_limit_enabled: Enable/disable RA rate limited
  * @tsf_gpio_pin: TSF GPIO Pin config
+ * @tsf_ptp_options: TSF Plus feature options config
+ * @lprx_enable: LPRx feature enable config
+ * @sae_enable: SAE feature enable config
+ * @gcmp_enable: GCMP feature enable config
+ * @enable_tx_sch_delay: Enable TX SCH delay value config
+ * @enable_secondary_rate: Enable secondary retry rate config
  * @enable_dhcp_server_offload: DHCP Offload is enabled or not
  * @dhcp_max_num_clients: Max number of DHCP client supported
  */
@@ -183,7 +189,17 @@ struct wlan_fwol_cfg {
 #endif
 #ifdef WLAN_FEATURE_TSF
 	uint32_t tsf_gpio_pin;
+#ifdef WLAN_FEATURE_TSF_PLUS
+	uint32_t tsf_ptp_options;
 #endif
+#endif
+	bool lprx_enable;
+#ifdef WLAN_FEATURE_SAE
+	bool sae_enable;
+#endif
+	bool gcmp_enable;
+	uint8_t enable_tx_sch_delay;
+	uint32_t enable_secondary_rate;
 #ifdef DHCP_SERVER_OFFLOAD
 	bool enable_dhcp_server_offload;
 	uint32_t dhcp_max_num_clients;

+ 47 - 0
components/fw_offload/core/src/wlan_fw_offload_main.c

@@ -271,6 +271,46 @@ static void ucfg_fwol_fetch_tsf_gpio_pin(struct wlan_objmgr_psoc *psoc,
 }
 #endif
 
+/**
+ * ucfg_fwol_init_tsf_ptp_options: Populate the tsf_ptp_options from cfg
+ * @psoc: The global psoc handler
+ * @fwol_cfg: The cfg structure
+ *
+ * Return: none
+ */
+#if defined(WLAN_FEATURE_TSF) && defined(WLAN_FEATURE_TSF_PLUS)
+static void ucfg_fwol_init_tsf_ptp_options(struct wlan_objmgr_psoc *psoc,
+					   struct wlan_fwol_cfg *fwol_cfg)
+{
+	fwol_cfg->tsf_ptp_options = cfg_get(psoc, CFG_SET_TSF_PTP_OPT);
+}
+#else
+static void ucfg_fwol_init_tsf_ptp_options(struct wlan_objmgr_psoc *psoc,
+					   struct wlan_fwol_cfg *fwol_cfg)
+{
+}
+#endif
+
+/**
+ * ucfg_fwol_init_sae_cfg: Populate the sae control config from cfg
+ * @psoc: The global psoc handler
+ * @fwol_cfg: The cfg structure
+ *
+ * Return: none
+ */
+#ifdef WLAN_FEATURE_SAE
+static void ucfg_fwol_init_sae_cfg(struct wlan_objmgr_psoc *psoc,
+				   struct wlan_fwol_cfg *fwol_cfg)
+{
+	fwol_cfg->sae_enable = cfg_get(psoc, CFG_IS_SAE_ENABLED);
+}
+#else
+static void ucfg_fwol_init_sae_cfg(struct wlan_objmgr_psoc *psoc,
+				   struct wlan_fwol_cfg *fwol_cfg)
+{
+}
+#endif
+
 /**
  * ucfg_fwol_fetch_ra_filter: Populate the RA filter enabled or not from cfg
  * @psoc: The global psoc handler
@@ -333,6 +373,13 @@ QDF_STATUS fwol_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc)
 			      &enable_fw_module_log_level_num);
 	fwol_cfg->enable_fw_module_log_level_num =
 				(uint8_t)enable_fw_module_log_level_num;
+	ucfg_fwol_init_tsf_ptp_options(psoc, fwol_cfg);
+	ucfg_fwol_init_sae_cfg(psoc, fwol_cfg);
+	fwol_cfg->lprx_enable = cfg_get(psoc, CFG_LPRX);
+	fwol_cfg->gcmp_enable = cfg_get(psoc, CFG_ENABLE_GCMP);
+	fwol_cfg->enable_tx_sch_delay = cfg_get(psoc, CFG_TX_SCH_DELAY);
+	fwol_cfg->enable_secondary_rate = cfg_get(psoc,
+						  CFG_ENABLE_SECONDARY_RATE);
 	ucfg_fwol_fetch_ra_filter(psoc, fwol_cfg);
 	ucfg_fwol_fetch_tsf_gpio_pin(psoc, fwol_cfg);
 	ucfg_fwol_fetch_dhcp_server_settings(psoc, fwol_cfg);

+ 160 - 1
components/fw_offload/dispatcher/inc/cfg_fwol_generic.h

@@ -432,6 +432,41 @@
 		CFG_VALUE_OR_DEFAULT, \
 		"GPIO pin to toggle when capture tsf")
 
+#if defined(WLAN_FEATURE_TSF) && defined(WLAN_FEATURE_TSF_PLUS)
+/* <ini>
+ * gtsf_ptp_options: TSF Plus feature options
+ * @Min: 0
+ * @Max: 0xff
+ * @Default: 0xf
+ *
+ * CFG_SET_TSF_PTP_OPT_RX                    (0x1)
+ * CFG_SET_TSF_PTP_OPT_TX                    (0x2)
+ * CFG_SET_TSF_PTP_OPT_RAW                   (0x4)
+ * CFG_SET_TSF_DBG_FS                        (0x8)
+ *
+ * Related: None
+ *
+ * Usage: Internal
+ *
+ * </ini>
+ */
+#define CFG_SET_TSF_PTP_OPT_RX                    (0x1)
+#define CFG_SET_TSF_PTP_OPT_TX                    (0x2)
+#define CFG_SET_TSF_PTP_OPT_RAW                   (0x4)
+#define CFG_SET_TSF_DBG_FS                        (0x8)
+
+#define CFG_SET_TSF_PTP_OPT CFG_INI_UINT( \
+		"gtsf_ptp_options", \
+		0, \
+		0xff, \
+		0xf, \
+		CFG_VALUE_OR_DEFAULT, \
+		"TSF Plus feature options")
+#define __CFG_SET_TSF_PTP_OPT CFG(CFG_SET_TSF_PTP_OPT)
+#else
+#define __CFG_SET_TSF_PTP_OPT
+#endif
+
 #ifdef DHCP_SERVER_OFFLOAD
 /* <ini>
  * gDHCPServerOffloadEnable
@@ -482,6 +517,124 @@
 #define CFG_FWOL_DHCP
 #endif
 
+/*
+ * <ini>
+ * gEnableLPRx - Enable/Disable LPRx
+ * @Min: 0
+ * @Max: 1
+ * @Default: 1
+ *
+ * This ini Enables or disables the LPRx in FW
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+
+#define CFG_LPRX CFG_INI_BOOL( \
+		"gEnableLPRx", \
+		1, \
+		"LPRx control")
+
+#ifdef WLAN_FEATURE_SAE
+/*
+ * <ini>
+ * sae_enabled - Enable/Disable SAE support in driver
+ * @Min: 0
+ * @Max: 1
+ * @Default: 1
+ *
+ * This ini is used to enable/disable SAE support in driver
+ * Driver will update config to supplicant based on this config.
+ *
+ * Related: None
+ *
+ * Supported Feature: SAE
+ * Usage: External
+ *
+ * </ini>
+ */
+
+#define CFG_IS_SAE_ENABLED CFG_INI_BOOL( \
+		"sae_enabled", \
+		1, \
+		"SAE feature control")
+#define __CFG_IS_SAE_ENABLED CFG(CFG_IS_SAE_ENABLED)
+#else
+#define __CFG_IS_SAE_ENABLED
+#endif
+
+/*
+ * <ini>
+ * gcmp_enabled - ini to enable/disable GCMP
+ * @Min: 0
+ * @Max: 1
+ * @Default: 1
+ *
+ * Currently Firmware update the sequence number for each TID with 2^3
+ * because of security issues. But with this PN mechanism, throughput drop
+ * is observed. With this ini FW takes the decision to trade off between
+ * security and throughput
+ *
+ * Supported Feature: STA/SAP/P2P
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+
+#define CFG_ENABLE_GCMP CFG_INI_BOOL( \
+		"gcmp_enabled", \
+		1, \
+		"GCMP Feature control param")
+
+/*
+ * <ini>
+ * gTxSchDelay - Enable/Disable Tx sch delay
+ * @Min: 0
+ * @Max: 5
+ * @Default: 0
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_TX_SCH_DELAY CFG_INI_UINT( \
+		"gTxSchDelay", \
+		0, \
+		5, \
+		0, \
+		CFG_VALUE_OR_DEFAULT, \
+		"Enable/Disable Tx sch delay")
+
+/*
+ * <ini>
+ * gEnableSecondaryRate - Enable/Disable Secondary Retry Rate feature subset
+ *
+ * @Min: 0x0
+ * @Max: 0x3F
+ * @Default: 0x17
+ *
+ * It is a 32 bit value such that the various bits represent as below -
+ * Bit-0 : is Enable/Disable Control for "PPDU Secondary Retry Support"
+ * Bit-1 : is Enable/Disable Control for "RTS Black/White-listing Support"
+ * Bit-2 : is Enable/Disable Control for "Higher MCS retry restriction
+ *         on XRETRY failures"
+ * Bit 3-5 : is "Xretry threshold" to use
+ * Bit 3~31 : reserved for future use.
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_ENABLE_SECONDARY_RATE CFG_INI_UINT( \
+		"gEnableSecondaryRate", \
+		0, \
+		0x3f, \
+		0x17, \
+		CFG_VALUE_OR_DEFAULT, \
+		"Secondary Retry Rate feature subset control")
+
 #define CFG_FWOL_GENERIC_ALL \
 	CFG_FWOL_DHCP \
 	CFG(CFG_ENABLE_ANI) \
@@ -499,6 +652,12 @@
 	CFG(CFG_ENABLE_FW_LOG_TYPE) \
 	CFG(CFG_ENABLE_FW_MODULE_LOG_LEVEL) \
 	CFG(CFG_RA_FILTER_ENABLE) \
-	CFG(CFG_SET_TSF_GPIO_PIN)
+	CFG(CFG_SET_TSF_GPIO_PIN) \
+	__CFG_SET_TSF_PTP_OPT \
+	CFG(CFG_LPRX) \
+	__CFG_IS_SAE_ENABLED \
+	CFG(CFG_ENABLE_GCMP) \
+	CFG(CFG_TX_SCH_DELAY) \
+	CFG(CFG_ENABLE_SECONDARY_RATE)
 
 #endif

+ 59 - 1
components/fw_offload/dispatcher/inc/wlan_fwol_ucfg_api.h

@@ -323,6 +323,64 @@ ucfg_fwol_get_enable_dhcp_server_offload(struct wlan_objmgr_psoc *psoc,
  */
 QDF_STATUS ucfg_fwol_get_dhcp_max_num_clients(struct wlan_objmgr_psoc *psoc,
 					      uint32_t *dhcp_max_num_clients);
-
 #endif
+
+/**
+ * ucfg_fwol_get_tsf_ptp_options() - Get TSF Plus feature options
+ * @psoc: pointer to the psoc object
+ * @tsf_ptp_options: Pointer to return tsf ptp options
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS ucfg_fwol_get_tsf_ptp_options(struct wlan_objmgr_psoc *psoc,
+					 uint32_t *tsf_ptp_options);
+/**
+ * ucfg_fwol_get_lprx_enable() - Get LPRx feature enable status
+ * @psoc: pointer to the psoc object
+ * @lprx_enable: Pointer to return LPRX feature enable status
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS ucfg_fwol_get_lprx_enable(struct wlan_objmgr_psoc *psoc,
+				     bool *lprx_enable);
+
+/**
+ * ucfg_fwol_get_sae_enable() - Get SAE feature enable status
+ * @psoc: pointer to the psoc object
+ * @sae_enable: Pointer to return SAE feature enable status
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS ucfg_fwol_get_sae_enable(struct wlan_objmgr_psoc *psoc,
+				    bool *sae_enable);
+
+/**
+ * ucfg_fwol_get_gcmp_enable() - Get GCMP feature enable status
+ * @psoc: pointer to the psoc object
+ * @gcmp_enable: Pointer to return GCMP feature enable status
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS ucfg_fwol_get_gcmp_enable(struct wlan_objmgr_psoc *psoc,
+				     bool *gcmp_enable);
+
+/**
+ * ucfg_fwol_get_enable_tx_sch_delay() - Get enable tx sch delay
+ * @psoc: pointer to the psoc object
+ * @enable_tx_sch_delay: Pointer to return enable_tx_sch_delay value
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS ucfg_fwol_get_enable_tx_sch_delay(struct wlan_objmgr_psoc *psoc,
+					     uint8_t *enable_tx_sch_delay);
+
+/**
+ * ucfg_fwol_get_enable_secondary_rate() - Get enable secondary rate
+ * @psoc: pointer to the psoc object
+ * @enable_tx_sch_delay: Pointer to return enable secondary rate value
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS ucfg_fwol_get_enable_secondary_rate(struct wlan_objmgr_psoc *psoc,
+					       uint32_t *enable_secondary_rate);
 #endif /* _WLAN_FWOL_UCFG_API_H_ */

+ 106 - 0
components/fw_offload/dispatcher/src/wlan_fwol_ucfg_api.c

@@ -540,14 +540,120 @@ QDF_STATUS ucfg_fwol_get_tsf_gpio_pin(struct wlan_objmgr_psoc *psoc,
 	*tsf_gpio_pin = fwol_obj->cfg.tsf_gpio_pin;
 	return QDF_STATUS_SUCCESS;
 }
+
+#ifdef WLAN_FEATURE_TSF_PLUS
+QDF_STATUS ucfg_fwol_get_tsf_ptp_options(struct wlan_objmgr_psoc *psoc,
+					 uint32_t *tsf_ptp_options)
+{
+	struct wlan_fwol_psoc_obj *fwol_obj;
+
+	fwol_obj = fwol_get_psoc_obj(psoc);
+	if (!fwol_obj) {
+		fwol_err("Failed to get FWOL obj");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	*tsf_ptp_options = fwol_obj->cfg.tsf_ptp_options;
+	return QDF_STATUS_SUCCESS;
+}
+#endif
 #else
 QDF_STATUS ucfg_fwol_get_tsf_gpio_pin(struct wlan_objmgr_psoc *psoc,
 				      uint32_t *tsf_gpio_pin)
 {
 	return QDF_STATUS_SUCCESS;
 }
+
+QDF_STATUS ucfg_fwol_get_tsf_ptp_options(struct wlan_objmgr_psoc *psoc,
+					 uint32_t *tsf_ptp_options)
+{
+	return QDF_STATUS_E_NOSUPPORT;
+}
+#endif
+
+QDF_STATUS ucfg_fwol_get_lprx_enable(struct wlan_objmgr_psoc *psoc,
+				     bool *lprx_enable)
+{
+	struct wlan_fwol_psoc_obj *fwol_obj;
+
+	fwol_obj = fwol_get_psoc_obj(psoc);
+	if (!fwol_obj) {
+		fwol_err("Failed to get FWOL obj");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	*lprx_enable = fwol_obj->cfg.lprx_enable;
+	return QDF_STATUS_SUCCESS;
+}
+
+#ifdef WLAN_FEATURE_SAE
+QDF_STATUS ucfg_fwol_get_sae_enable(struct wlan_objmgr_psoc *psoc,
+				    bool *sae_enable)
+{
+	struct wlan_fwol_psoc_obj *fwol_obj;
+
+	fwol_obj = fwol_get_psoc_obj(psoc);
+	if (!fwol_obj) {
+		fwol_err("Failed to get FWOL obj");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	*sae_enable = fwol_obj->cfg.sae_enable;
+	return QDF_STATUS_SUCCESS;
+}
+#else
+QDF_STATUS ucfg_fwol_get_sae_enable(struct wlan_objmgr_psoc *psoc,
+				    bool *sae_enable)
+{
+	return QDF_STATUS_E_NOSUPPORT;
+}
 #endif
 
+QDF_STATUS ucfg_fwol_get_gcmp_enable(struct wlan_objmgr_psoc *psoc,
+				     bool *gcmp_enable)
+{
+	struct wlan_fwol_psoc_obj *fwol_obj;
+
+	fwol_obj = fwol_get_psoc_obj(psoc);
+	if (!fwol_obj) {
+		fwol_err("Failed to get FWOL obj");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	*gcmp_enable = fwol_obj->cfg.gcmp_enable;
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS ucfg_fwol_get_enable_tx_sch_delay(struct wlan_objmgr_psoc *psoc,
+					     uint8_t *enable_tx_sch_delay)
+{
+	struct wlan_fwol_psoc_obj *fwol_obj;
+
+	fwol_obj = fwol_get_psoc_obj(psoc);
+	if (!fwol_obj) {
+		fwol_err("Failed to get FWOL obj");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	*enable_tx_sch_delay = fwol_obj->cfg.enable_tx_sch_delay;
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS ucfg_fwol_get_enable_secondary_rate(struct wlan_objmgr_psoc *psoc,
+					       uint32_t *enable_secondary_rate)
+{
+	struct wlan_fwol_psoc_obj *fwol_obj;
+
+	fwol_obj = fwol_get_psoc_obj(psoc);
+	if (!fwol_obj) {
+		fwol_err("Failed to get FWOL obj");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	*enable_secondary_rate = fwol_obj->cfg.enable_secondary_rate;
+	return QDF_STATUS_SUCCESS;
+}
+
 #ifdef DHCP_SERVER_OFFLOAD
 QDF_STATUS
 ucfg_fwol_get_enable_dhcp_server_offload(struct wlan_objmgr_psoc *psoc,

+ 0 - 132
core/hdd/inc/wlan_hdd_cfg.h

@@ -1235,18 +1235,6 @@ enum hdd_dot11_mode {
 #define CFG_STATIONARY_THRESHOLD_MAX       (100)
 #define CFG_STATIONARY_THRESHOLD_DEFAULT   (10)
 
-#ifdef WLAN_FEATURE_TSF_PLUS
-/* PTP options */
-#define CFG_SET_TSF_PTP_OPT_NAME                  "gtsf_ptp_options"
-#define CFG_SET_TSF_PTP_OPT_MIN                   (0)
-#define CFG_SET_TSF_PTP_OPT_MAX                   (0xff)
-#define CFG_SET_TSF_PTP_OPT_RX                    (0x1)
-#define CFG_SET_TSF_PTP_OPT_TX                    (0x2)
-#define CFG_SET_TSF_PTP_OPT_RAW                   (0x4)
-#define CFG_SET_TSF_DBG_FS                        (0x8)
-#define CFG_SET_TSF_PTP_OPT_DEFAULT               (0xf)
-#endif
-
 #ifdef CONFIG_DP_TRACE
 /* Max length of gDptraceConfig string. e.g.- "1, 6, 1, 62" */
 #define DP_TRACE_CONFIG_STRING_LENGTH		(20)
@@ -1586,89 +1574,6 @@ enum hdd_dot11_mode {
 #define CFG_MAWC_NLO_MAX_SCAN_INTERVAL_MAX      (0xFFFFFFFF)
 #define CFG_MAWC_NLO_MAX_SCAN_INTERVAL_DEFAULT  (60000)
 
-/*
- * <ini>
- * gEnableLPRx - Enable/Disable LPRx
- * @Min: 0
- * @Max: 1
- * @Default: 1
- *
- * This ini Enables or disables the LPRx in FW
- *
- * Usage: External
- *
- * </ini>
- */
-
-#define CFG_LPRx_NAME       "gEnableLPRx"
-#define CFG_LPRx_MIN         (0)
-#define CFG_LPRx_MAX         (1)
-#define CFG_LPRx_DEFAULT     (1)
-
-/*
- * <ini>
- * sae_enabled - Enable/Disable SAE support in driver
- * @Min: 0
- * @Max: 1
- * @Default: 0
- *
- * This ini is used to enable/disable SAE support in driver
- * Driver will update config to supplicant based on this config.
- *
- * Related: None
- *
- * Supported Feature: SAE
- * Usage: External
- *
- * </ini>
- */
-
-#define CFG_IS_SAE_ENABLED_NAME    "sae_enabled"
-#define CFG_IS_SAE_ENABLED_DEFAULT (1)
-#define CFG_IS_SAE_ENABLED_MIN     (0)
-#define CFG_IS_SAE_ENABLED_MAX     (1)
-
-/*
- * <ini>
- * gcmp_enabled - ini to enable/disable GCMP
- * @Min: 0
- * @Max: 1
- * @Default: 0
- *
- * Currently Firmware update the sequence number for each TID with 2^3
- * because of security issues. But with this PN mechanism, throughput drop
- * is observed. With this ini FW takes the decision to trade off between
- * security and throughput
- *
- * Supported Feature: STA/SAP/P2P
- *
- * Usage: External
- *
- * </ini>
- */
-
-#define CFG_ENABLE_GCMP_NAME    "gcmp_enabled"
-#define CFG_ENABLE_GCMP_MIN     (0)
-#define CFG_ENABLE_GCMP_MAX     (1)
-#define CFG_ENABLE_GCMP_DEFAULT (1)
-
-/*
- * <ini>
- * gTxSchDelay - Enable/Disable Tx sch delay
- * @Min: 0
- * @Max: 5
- * @Default: 0
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-
-#define CFG_TX_SCH_DELAY_NAME          "gTxSchDelay"
-#define CFG_TX_SCH_DELAY_MIN           (0)
-#define CFG_TX_SCH_DELAY_MAX           (5)
-#define CFG_TX_SCH_DELAY_DEFAULT       (0)
-
 /*
  * <ini>
  * gEnableUnitTestFramework - Enable/Disable unit test framework
@@ -1685,31 +1590,6 @@ enum hdd_dot11_mode {
 #define CFG_ENABLE_UNIT_TEST_FRAMEWORK_MAX     (1)
 #define CFG_ENABLE_UINT_TEST_FRAMEWORK_DEFAULT (0)
 
-/*
- * <ini>
- * gEnableSecondaryRate - Enable/Disable Secondary Retry Rate feature subset
- *
- * @Min: 0x0
- * @Max: 0x3F
- * @Default: 0x17
- *
- * It is a 32 bit value such that the various bits represent as below -
- * Bit-0 : is Enable/Disable Control for "PPDU Secondary Retry Support"
- * Bit-1 : is Enable/Disable Control for "RTS Black/White-listing Support"
- * Bit-2 : is Enable/Disable Control for "Higher MCS retry restriction
- *         on XRETRY failures"
- * Bit 3-5 : is "Xretry threshold" to use
- * Bit 3~31 : reserved for future use.
- *
- * Usage: External
- *
- * </ini>
- */
-#define CFG_ENABLE_SECONDARY_RATE_NAME          "gEnableSecondaryRate"
-#define CFG_ENABLE_SECONDARY_RATE_MIN           (0)
-#define CFG_ENABLE_SECONDARY_RATE_MAX           (0x3F)
-#define CFG_ENABLE_SECONDARY_RATE_DEFAULT       (0x17)
-
 /*
  * <ini>
  * gEnableChangeChannelBandWidth - Enable/Disable change
@@ -1828,11 +1708,6 @@ struct hdd_config {
 #endif
 #ifdef FEATURE_LFR_SUBNET_DETECTION
 	bool enable_lfr_subnet_detection;
-#endif
-#ifdef WLAN_FEATURE_TSF
-#ifdef WLAN_FEATURE_TSF_PLUS
-	uint8_t tsf_ptp_options;
-#endif /* WLAN_FEATURE_TSF_PLUS */
 #endif
 	uint32_t ho_delay_for_rx;
 	uint32_t min_delay_btw_roam_scans;
@@ -1863,16 +1738,9 @@ struct hdd_config {
 	uint32_t mawc_nlo_init_scan_interval;
 	uint32_t mawc_nlo_max_scan_interval;
 	bool enable_11d_in_world_mode;
-	bool enable_lprx;
-#ifdef WLAN_FEATURE_SAE
-	bool is_sae_enabled;
-#endif
-	bool gcmp_enabled;
 	bool is_11k_offload_supported;
 	bool action_oui_enable;
 	uint8_t action_oui_str[ACTION_OUI_MAXIMUM_ID][ACTION_OUI_MAX_STR_LEN];
-	uint8_t enable_tx_sch_delay;
-	uint32_t enable_secondary_rate;
 	bool is_unit_test_framework_enabled;
 	bool enable_ftopen;
 	bool roam_force_rssi_trigger;

+ 0 - 50
core/hdd/src/wlan_hdd_cfg.c

@@ -361,17 +361,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_ENABLE_LFR_SUBNET_MAX),
 #endif
 
-#ifdef WLAN_FEATURE_TSF
-#ifdef WLAN_FEATURE_TSF_PLUS
-	REG_VARIABLE(CFG_SET_TSF_PTP_OPT_NAME, WLAN_PARAM_HexInteger,
-		     struct hdd_config, tsf_ptp_options,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_SET_TSF_PTP_OPT_DEFAULT,
-		     CFG_SET_TSF_PTP_OPT_MIN,
-		     CFG_SET_TSF_PTP_OPT_MAX),
-#endif /* WLAN_FEATURE_TSF_PLUS */
-#endif
-
 	REG_VARIABLE(CFG_ROAM_HO_DELAY_FOR_RX_NAME,
 		WLAN_PARAM_Integer, struct hdd_config,
 		ho_delay_for_rx,
@@ -523,37 +512,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_ENABLE_11D_IN_WORLD_MODE_MIN,
 		     CFG_ENABLE_11D_IN_WORLD_MODE_MAX),
 
-	REG_VARIABLE(CFG_LPRx_NAME, WLAN_PARAM_Integer,
-		struct hdd_config, enable_lprx,
-		VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		CFG_LPRx_DEFAULT,
-		CFG_LPRx_MIN,
-		CFG_LPRx_MAX),
-
-#ifdef WLAN_FEATURE_SAE
-	REG_VARIABLE(CFG_IS_SAE_ENABLED_NAME, WLAN_PARAM_Integer,
-		struct hdd_config, is_sae_enabled,
-		VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		CFG_IS_SAE_ENABLED_DEFAULT,
-		CFG_IS_SAE_ENABLED_MIN,
-		CFG_IS_SAE_ENABLED_MAX),
-#endif
-
-	REG_VARIABLE(CFG_ENABLE_GCMP_NAME, WLAN_PARAM_Integer,
-		     struct hdd_config, gcmp_enabled,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_ENABLE_GCMP_DEFAULT,
-		     CFG_ENABLE_GCMP_MIN,
-		     CFG_ENABLE_GCMP_MAX),
-
-	REG_VARIABLE(CFG_TX_SCH_DELAY_NAME,
-		     WLAN_PARAM_Integer,
-		     struct hdd_config, enable_tx_sch_delay,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_TX_SCH_DELAY_DEFAULT,
-		     CFG_TX_SCH_DELAY_MIN,
-		     CFG_TX_SCH_DELAY_MAX),
-
 	REG_VARIABLE(CFG_ENABLE_UNIT_TEST_FRAMEWORK_NAME,
 		     WLAN_PARAM_Integer,
 		     struct hdd_config, is_unit_test_framework_enabled,
@@ -569,14 +527,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_ROAM_FT_OPEN_ENABLE_MIN,
 		     CFG_ROAM_FT_OPEN_ENABLE_MAX),
 
-	REG_VARIABLE(CFG_ENABLE_SECONDARY_RATE_NAME,
-		     WLAN_PARAM_HexInteger,
-		     struct hdd_config, enable_secondary_rate,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_ENABLE_SECONDARY_RATE_DEFAULT,
-		     CFG_ENABLE_SECONDARY_RATE_MIN,
-		     CFG_ENABLE_SECONDARY_RATE_MAX),
-
 	REG_VARIABLE(CFG_ROAM_FORCE_RSSI_TRIGGER_NAME,
 		     WLAN_PARAM_Integer, struct hdd_config,
 		     roam_force_rssi_trigger,

+ 15 - 3
core/hdd/src/wlan_hdd_cfg80211.c

@@ -132,6 +132,7 @@
 #include "cdp_txrx_cfg.h"
 #include "wlan_hdd_object_manager.h"
 #include "nan_ucfg_api.h"
+#include "wlan_fwol_ucfg_api.h"
 
 #define g_mode_rates_size (12)
 #define a_mode_rates_size (8)
@@ -12601,8 +12602,14 @@ static void wlan_hdd_cfg80211_set_wiphy_scan_flags(struct wiphy *wiphy)
 static void wlan_hdd_cfg80211_set_wiphy_sae_feature(struct wiphy *wiphy,
 			struct hdd_config *config)
 {
-	if (config->is_sae_enabled)
-		wiphy->features |= NL80211_FEATURE_SAE;
+	struct hdd_context *hdd_ctx = wiphy_priv(wiphy);
+	bool sae_enable;
+
+	if (QDF_IS_STATUS_SUCCESS(ucfg_fwol_get_sae_enable(
+				  hdd_ctx->psoc, &sae_enable))) {
+		if (sae_enable)
+			wiphy->features |= NL80211_FEATURE_SAE;
+	}
 }
 #else
 static void wlan_hdd_cfg80211_set_wiphy_sae_feature(struct wiphy *wiphy,
@@ -12728,6 +12735,7 @@ int wlan_hdd_cfg80211_init(struct device *dev,
 	int num_dsrc_ch, len_dsrc_ch, num_srd_ch, len_srd_ch;
 	uint32_t *cipher_suites;
 	uint8_t allow_mcc_go_diff_bi = 0, enable_mcc = 0;
+	bool gcmp_enabled = false;
 
 	hdd_enter();
 
@@ -12861,7 +12869,11 @@ int wlan_hdd_cfg80211_init(struct device *dev,
 	}
 
 	/*Initialise the supported cipher suite details */
-	if (pCfg->gcmp_enabled) {
+	if (QDF_IS_STATUS_ERROR(ucfg_fwol_get_gcmp_enable(hdd_ctx->psoc,
+							  &gcmp_enabled)))
+		hdd_err("Unable to get GCMP feature enable config param");
+
+	if (gcmp_enabled) {
 		cipher_suites = qdf_mem_malloc(sizeof(hdd_cipher_suites) +
 					       sizeof(hdd_gcmp_cipher_suits));
 		if (!cipher_suites)

+ 29 - 16
core/hdd/src/wlan_hdd_main.c

@@ -4832,8 +4832,8 @@ int hdd_set_fw_params(struct hdd_adapter *adapter)
 	QDF_STATUS status;
 	struct hdd_context *hdd_ctx;
 	bool bval = false;
-	uint8_t max_amsdu_len;
-	uint32_t dtim_sel_diversity;
+	uint8_t max_amsdu_len, enable_tx_sch_delay;
+	uint32_t dtim_sel_diversity, enable_secondary_rate;
 
 	hdd_enter_dev(adapter->dev);
 
@@ -4846,9 +4846,13 @@ int hdd_set_fw_params(struct hdd_adapter *adapter)
 		return 0;
 	}
 
-	ret = sme_cli_set_command(adapter->session_id,
-				WMI_PDEV_PARAM_DTIM_SYNTH,
-				hdd_ctx->config->enable_lprx, PDEV_CMD);
+	ret = -1;
+	if (QDF_IS_STATUS_SUCCESS(ucfg_fwol_get_lprx_enable(hdd_ctx->psoc,
+							    &bval))) {
+		ret = sme_cli_set_command(adapter->session_id,
+					  WMI_PDEV_PARAM_DTIM_SYNTH,
+					  bval, PDEV_CMD);
+	}
 	if (ret) {
 		hdd_err("Failed to set LPRx");
 		goto error;
@@ -4866,21 +4870,25 @@ int hdd_set_fw_params(struct hdd_adapter *adapter)
 		goto error;
 	}
 
-	ret = sme_cli_set_command(
-			adapter->session_id,
-			WMI_PDEV_PARAM_TX_SCH_DELAY,
-			hdd_ctx->config->enable_tx_sch_delay,
-			PDEV_CMD);
+	ret = -1;
+	if (QDF_IS_STATUS_SUCCESS(ucfg_fwol_get_enable_tx_sch_delay(
+				  hdd_ctx->psoc, &enable_tx_sch_delay))) {
+		ret = sme_cli_set_command(adapter->session_id,
+					  WMI_PDEV_PARAM_TX_SCH_DELAY,
+					  enable_tx_sch_delay, PDEV_CMD);
+	}
 	if (ret) {
 		hdd_err("Failed to set WMI_PDEV_PARAM_TX_SCH_DELAY");
 		goto error;
 	}
 
-	ret = sme_cli_set_command(
-			adapter->session_id,
-			WMI_PDEV_PARAM_SECONDARY_RETRY_ENABLE,
-			hdd_ctx->config->enable_secondary_rate,
-			PDEV_CMD);
+	ret = -1;
+	if (QDF_IS_STATUS_SUCCESS(ucfg_fwol_get_enable_secondary_rate(
+				  hdd_ctx->psoc, &enable_secondary_rate))) {
+		ret = sme_cli_set_command(adapter->session_id,
+					  WMI_PDEV_PARAM_SECONDARY_RETRY_ENABLE,
+					  enable_secondary_rate, PDEV_CMD);
+	}
 	if (ret) {
 		hdd_err("Failed to set WMI_PDEV_PARAM_SECONDARY_RETRY_ENABLE");
 		goto error;
@@ -11295,8 +11303,13 @@ int hdd_configure_cds(struct hdd_context *hdd_ctx)
 	if (0 != wlan_hdd_set_wow_pulse(hdd_ctx, true))
 		hdd_debug("Failed to set wow pulse");
 
+	bval = false;
+	if (QDF_IS_STATUS_ERROR(ucfg_fwol_get_gcmp_enable(hdd_ctx->psoc,
+							  &bval)))
+		hdd_err("Unable to get GCMP enable config param");
+
 	sme_cli_set_command(0, WMI_PDEV_PARAM_GCMP_SUPPORT_ENABLE,
-			    hdd_ctx->config->gcmp_enabled, PDEV_CMD);
+			    bval, PDEV_CMD);
 
 	auto_power_fail_mode =
 		ucfg_pmo_get_auto_power_fail_mode(hdd_ctx->psoc);

+ 28 - 12
core/hdd/src/wlan_hdd_tsf.c

@@ -152,30 +152,46 @@ bool hdd_tsf_is_ptp_enabled(struct hdd_context *hdd)
 
 bool hdd_tsf_is_tx_set(struct hdd_context *hdd)
 {
-	return (hdd && (hdd->config) &&
-		((hdd->config->tsf_ptp_options)
-		& CFG_SET_TSF_PTP_OPT_TX));
+	uint32_t tsf_ptp_options;
+
+	if (hdd && QDF_IS_STATUS_SUCCESS(
+	    ucfg_fwol_get_tsf_ptp_options(hdd->psoc, &tsf_ptp_options)))
+		return tsf_ptp_options & CFG_SET_TSF_PTP_OPT_TX;
+	else
+		return false;
 }
 
 bool hdd_tsf_is_rx_set(struct hdd_context *hdd)
 {
-	return (hdd && (hdd->config) &&
-		((hdd->config->tsf_ptp_options)
-		& CFG_SET_TSF_PTP_OPT_RX));
+	uint32_t tsf_ptp_options;
+
+	if (hdd && QDF_IS_STATUS_SUCCESS(
+	    ucfg_fwol_get_tsf_ptp_options(hdd->psoc, &tsf_ptp_options)))
+		return tsf_ptp_options & CFG_SET_TSF_PTP_OPT_RX;
+	else
+		return false;
 }
 
 bool hdd_tsf_is_raw_set(struct hdd_context *hdd)
 {
-	return (hdd && (hdd->config) &&
-		((hdd->config->tsf_ptp_options)
-		& CFG_SET_TSF_PTP_OPT_RAW));
+	uint32_t tsf_ptp_options;
+
+	if (hdd && QDF_IS_STATUS_SUCCESS(
+	    ucfg_fwol_get_tsf_ptp_options(hdd->psoc, &tsf_ptp_options)))
+		return tsf_ptp_options & CFG_SET_TSF_PTP_OPT_RAW;
+	else
+		return false;
 }
 
 bool hdd_tsf_is_dbg_fs_set(struct hdd_context *hdd)
 {
-	return (hdd && (hdd->config) &&
-		((hdd->config->tsf_ptp_options)
-		& CFG_SET_TSF_DBG_FS));
+	uint32_t tsf_ptp_options;
+
+	if (hdd && QDF_IS_STATUS_SUCCESS(
+	    ucfg_fwol_get_tsf_ptp_options(hdd->psoc, &tsf_ptp_options)))
+		return tsf_ptp_options & CFG_SET_TSF_DBG_FS;
+	else
+		return false;
 }
 
 #else