Răsfoiți Sursa

Merge "qcacld-3.0: Enable/disable first DFS channel scan through ini" into wlan-cld3.driver.lnx.2.0

CNSS_WLAN Service 6 ani în urmă
părinte
comite
adfa9ead02

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

@@ -185,21 +185,6 @@ enum hdd_dot11_mode {
 #define CFG_CHANNEL_BONDING_MODE_MAX           WNI_CFG_CHANNEL_BONDING_MODE_STAMAX
 #define CFG_CHANNEL_BONDING_MODE_DEFAULT       WNI_CFG_CHANNEL_BONDING_MODE_STADEF
 
-/*
- * <ini>
- * gEnableDFSChnlScan - Enable DFS channel scan
- * @Min: 0
- * @Max: 1
- * @Default: 1
- *
- * This ini is used to enable or disable DFS channel
- * scan
- */
-#define CFG_ENABLE_DFS_CHNL_SCAN_NAME              "gEnableDFSChnlScan"
-#define CFG_ENABLE_DFS_CHNL_SCAN_MIN               (0)
-#define CFG_ENABLE_DFS_CHNL_SCAN_MAX               (1)
-#define CFG_ENABLE_DFS_CHNL_SCAN_DEFAULT           (1)
-
 /*
  * <ini>
  * gEnableDFSPnoChnlScan - enable dfs channels in PNO scan
@@ -586,27 +571,6 @@ enum hdd_dot11_mode {
 #define CFG_TL_DELAYED_TRGR_FRM_INT_MAX                  (4294967295UL)
 #define CFG_TL_DELAYED_TRGR_FRM_INT_DEFAULT              3000
 
-/*
- * gEnableDFSChnlScan - enable dfs channel scan.
- * @Min: 0
- * @Max: 1
- * @Default: 1
- *
- * This ini is used to enable/disable dfs channels in scan, enabling this
- * will enable driver to include dfs channels in its scan list.
- * Related: NA
- *
- * Supported Feature: DFS, Scan
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_ENABLE_DFS_CHNL_SCAN_NAME              "gEnableDFSChnlScan"
-#define CFG_ENABLE_DFS_CHNL_SCAN_MIN               (0)
-#define CFG_ENABLE_DFS_CHNL_SCAN_MAX               (1)
-#define CFG_ENABLE_DFS_CHNL_SCAN_DEFAULT           (1)
-
 /*
  * <ini>
  * gEnableSNRMonitoring - Enables SNR Monitoring
@@ -1007,7 +971,6 @@ struct hdd_config {
 #ifdef ENABLE_MTRACE_LOG
 	bool enable_mtrace;
 #endif
-	uint8_t enableDFSChnlScan;
 	uint8_t enable_dfs_pno_chnl_scan;
 	bool prevent_link_down;
 	uint8_t scanAgingTimeout;

+ 4 - 9
core/hdd/src/wlan_hdd_cfg.c

@@ -91,13 +91,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_TL_DELAYED_TRGR_FRM_INT_MIN,
 		     CFG_TL_DELAYED_TRGR_FRM_INT_MAX),
 
-	REG_VARIABLE(CFG_ENABLE_DFS_CHNL_SCAN_NAME, WLAN_PARAM_Integer,
-		     struct hdd_config, enableDFSChnlScan,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_ENABLE_DFS_CHNL_SCAN_DEFAULT,
-		     CFG_ENABLE_DFS_CHNL_SCAN_MIN,
-		     CFG_ENABLE_DFS_CHNL_SCAN_MAX),
-
 	REG_VARIABLE(CFG_ENABLE_DFS_PNO_CHNL_SCAN_NAME, WLAN_PARAM_Integer,
 		     struct hdd_config, enable_dfs_pno_chnl_scan,
 		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -1809,6 +1802,7 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
 	tSmeConfigParams *smeConfig;
 	mac_handle_t mac_handle = hdd_ctx->mac_handle;
 	bool roam_scan_enabled;
+	bool enable_dfs_scan = true;
 #ifdef FEATURE_WLAN_ESE
 	bool ese_enabled;
 #endif
@@ -1856,8 +1850,9 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
 	smeConfig->csrConfig.AdHocChannel24 = ibss_cfg.adhoc_ch_2g;
 	smeConfig->csrConfig.ProprietaryRatesEnabled = 0;
 	smeConfig->csrConfig.HeartbeatThresh50 = 40;
-	smeConfig->csrConfig.fEnableDFSChnlScan = pConfig->enableDFSChnlScan;
-
+	ucfg_scan_cfg_get_dfs_chan_scan_allowed(hdd_ctx->psoc,
+						&enable_dfs_scan);
+	smeConfig->csrConfig.fEnableDFSChnlScan = enable_dfs_scan;
 	smeConfig->csrConfig.Csr11dinfo.Channels.numChannels = 0;
 
 	hdd_set_power_save_offload_config(hdd_ctx);

+ 14 - 6
core/hdd/src/wlan_hdd_cfg80211.c

@@ -134,6 +134,7 @@
 #include "nan_ucfg_api.h"
 #include "wlan_fwol_ucfg_api.h"
 #include "wlan_cfg80211_crypto.h"
+#include "wlan_scan_ucfg_api.h"
 
 #define g_mode_rates_size (12)
 #define a_mode_rates_size (8)
@@ -4267,8 +4268,12 @@ int wlan_hdd_enable_dfs_chan_scan(struct hdd_context *hdd_ctx,
 	QDF_STATUS status;
 	bool err;
 	mac_handle_t mac_handle;
+	bool enable_dfs_scan = true;
 
-	if (enable_dfs_channels == hdd_ctx->config->enableDFSChnlScan) {
+	ucfg_scan_cfg_get_dfs_chan_scan_allowed(hdd_ctx->psoc,
+						&enable_dfs_scan);
+
+	if (enable_dfs_channels == enable_dfs_scan) {
 		hdd_debug("DFS channels are already %s",
 			  enable_dfs_channels ? "enabled" : "disabled");
 		return 0;
@@ -4286,7 +4291,8 @@ int wlan_hdd_enable_dfs_chan_scan(struct hdd_context *hdd_ctx,
 			return -EOPNOTSUPP;
 	}
 
-	hdd_ctx->config->enableDFSChnlScan = enable_dfs_channels;
+	ucfg_scan_cfg_set_dfs_chan_scan_allowed(hdd_ctx->psoc,
+						enable_dfs_channels);
 
 	mac_handle = hdd_ctx->mac_handle;
 	status = sme_enable_dfs_chan_scan(mac_handle, enable_dfs_channels);
@@ -4327,7 +4333,7 @@ static int __wlan_hdd_cfg80211_disable_dfs_chan_scan(struct wiphy *wiphy,
 	struct nlattr *tb[QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_MAX + 1];
 	int ret_val;
 	uint32_t no_dfs_flag = 0;
-
+	bool enable_dfs_scan = true;
 	hdd_enter_dev(dev);
 
 	ret_val = wlan_hdd_validate_context(hdd_ctx);
@@ -4356,13 +4362,15 @@ static int __wlan_hdd_cfg80211_disable_dfs_chan_scan(struct wiphy *wiphy,
 		hdd_err("invalid value of dfs flag");
 		return -EINVAL;
 	}
+	ucfg_scan_cfg_get_dfs_chan_scan_allowed(hdd_ctx->psoc,
+						&enable_dfs_scan);
 
-	if (hdd_ctx->config->enableDFSChnlScan) {
+	if (enable_dfs_scan) {
 		ret_val = wlan_hdd_enable_dfs_chan_scan(hdd_ctx, !no_dfs_flag);
 	} else {
-		if ((!no_dfs_flag) != hdd_ctx->config->enableDFSChnlScan) {
+		if ((!no_dfs_flag) != enable_dfs_scan) {
 			hdd_err("DFS chan ini configured %d, no dfs flag: %d",
-				hdd_ctx->config->enableDFSChnlScan,
+				enable_dfs_scan,
 				no_dfs_flag);
 			return -EINVAL;
 		}

+ 4 - 1
core/hdd/src/wlan_hdd_hostapd.c

@@ -4739,6 +4739,7 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
 	bool sap_force_11n_for_11ac = 0;
 	bool go_force_11n_for_11ac = 0;
 	bool bval = false, ap_obss_prot = false, sap_uapsd = true;
+	bool enable_dfs_scan = true;
 
 	hdd_enter();
 
@@ -4964,9 +4965,11 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
 			ret = -EINVAL;
 			goto error;
 		}
+		ucfg_scan_cfg_get_dfs_chan_scan_allowed(hdd_ctx->psoc,
+							&enable_dfs_scan);
 
 		/* reject SAP if DFS channel scan is not allowed */
-		if (!(hdd_ctx->config->enableDFSChnlScan) &&
+		if (!(enable_dfs_scan) &&
 		    (CHANNEL_STATE_DFS ==
 		     wlan_reg_get_channel_state(hdd_ctx->pdev,
 						pConfig->channel))) {

+ 4 - 2
core/hdd/src/wlan_hdd_hostapd_wext.c

@@ -1960,6 +1960,7 @@ static int __iw_get_channel_list(struct net_device *dev,
 	struct hdd_adapter *hostapd_adapter = (netdev_priv(dev));
 	struct channel_list_info *channel_list =
 					(struct channel_list_info *) extra;
+	bool enable_dfs_scan = true;
 	enum band_info cur_band = BAND_ALL;
 	struct hdd_context *hdd_ctx;
 	int ret;
@@ -1993,9 +1994,10 @@ static int __iw_get_channel_list(struct net_device *dev,
 
 	if (cur_band != BAND_2G)
 		band_end_channel = MAX_5GHZ_CHANNEL;
-
+	ucfg_scan_cfg_get_dfs_chan_scan_allowed(hdd_ctx->psoc,
+						&enable_dfs_scan);
 	if (hostapd_adapter->device_mode == QDF_STA_MODE &&
-	    hdd_ctx->config->enableDFSChnlScan) {
+	    enable_dfs_scan) {
 		is_dfs_mode_enabled = true;
 	} else if (hostapd_adapter->device_mode == QDF_SAP_MODE) {
 		if (QDF_STATUS_SUCCESS != ucfg_mlme_get_dfs_master_capability(

+ 2 - 1
core/hdd/src/wlan_hdd_main.c

@@ -9068,7 +9068,8 @@ static void hdd_override_ini_config(struct hdd_context *hdd_ctx)
 	QDF_STATUS status;
 
 	if (0 == enable_dfs_chan_scan || 1 == enable_dfs_chan_scan) {
-		hdd_ctx->config->enableDFSChnlScan = enable_dfs_chan_scan;
+		ucfg_scan_cfg_set_dfs_chan_scan_allowed(hdd_ctx->psoc,
+							enable_dfs_chan_scan);
 		hdd_debug("Module enable_dfs_chan_scan set to %d",
 			   enable_dfs_chan_scan);
 	}

+ 5 - 1
core/hdd/src/wlan_hdd_regulatory.c

@@ -216,6 +216,7 @@ static void reg_program_config_vars(struct hdd_context *hdd_ctx,
 	QDF_STATUS status;
 	bool country_priority = 0;
 	bool value = false;
+	bool enable_dfs_scan = true;
 
 	status = ucfg_mlme_get_band_capability(hdd_ctx->psoc, &band_capability);
 	if (QDF_IS_STATUS_ERROR(status))
@@ -238,7 +239,10 @@ static void reg_program_config_vars(struct hdd_context *hdd_ctx,
 					   &country_priority);
 	config_vars->userspace_ctry_priority = country_priority;
 
-	config_vars->dfs_enabled = hdd_ctx->config->enableDFSChnlScan;
+	ucfg_scan_cfg_get_dfs_chan_scan_allowed(hdd_ctx->psoc,
+						&enable_dfs_scan);
+
+	config_vars->dfs_enabled = enable_dfs_scan;
 
 	ucfg_mlme_get_indoor_channel_support(hdd_ctx->psoc,
 					     &indoor_chan_enabled);