Browse Source

qcacld-3.0: Update scan list in FW when enable DFS scan

When enable DFS scan via wpa_cli, the related flag in mac context
also need to be updated so that DFS channels will be included in
configurations sent to FW accordingly when DFS scan is enabled.

Change-Id: I6033637364ddbc7e916627e5ab6a94aee825db98
CRs-Fixed: 2201307
Min Liu 7 years ago
parent
commit
5eaf724da1
3 changed files with 35 additions and 0 deletions
  1. 7 0
      core/hdd/src/wlan_hdd_cfg80211.c
  2. 1 0
      core/sme/inc/sme_api.h
  3. 27 0
      core/sme/src/common/sme_api.c

+ 7 - 0
core/hdd/src/wlan_hdd_cfg80211.c

@@ -4239,6 +4239,13 @@ int wlan_hdd_enable_dfs_chan_scan(struct hdd_context *hdd_ctx,
 
 	hdd_ctx->config->enableDFSChnlScan = enable_dfs_channels;
 
+	status = sme_enable_dfs_chan_scan(hdd_ctx->hHal, enable_dfs_channels);
+	if (QDF_IS_STATUS_ERROR(status)) {
+		hdd_err("Failed to set DFS channel scan flag to %d",
+			enable_dfs_channels);
+		return qdf_status_to_os_return(status);
+	}
+
 	hdd_abort_mac_scan_all_adapters(hdd_ctx);
 
 	/* pass dfs channel status to regulatory component */

+ 1 - 0
core/sme/inc/sme_api.h

@@ -1012,6 +1012,7 @@ QDF_STATUS sme_set_led_flashing(tHalHandle hHal, uint8_t type,
 		uint32_t x0, uint32_t x1);
 #endif
 QDF_STATUS sme_handle_dfs_chan_scan(tHalHandle hHal, uint8_t dfs_flag);
+QDF_STATUS sme_enable_dfs_chan_scan(tHalHandle hHal, uint8_t dfs_flag);
 QDF_STATUS sme_set_mas(uint32_t val);
 QDF_STATUS sme_set_miracast(tHalHandle hal, uint8_t filter_type);
 QDF_STATUS sme_ext_change_channel(tHalHandle hHal, uint32_t channel,

+ 27 - 0
core/sme/src/common/sme_api.c

@@ -12572,6 +12572,33 @@ QDF_STATUS sme_handle_dfs_chan_scan(tHalHandle h_hal, uint8_t dfs_flag)
 	return status;
 }
 
+/**
+ *  sme_enable_dfS_chan_scan() - set DFS channel scan enable/disable
+ *  @h_hal:         corestack handler
+ *  @dfs_flag:      flag indicating dfs channel enable/disable
+ *  Return:         QDF_STATUS
+ */
+QDF_STATUS sme_enable_dfs_chan_scan(tHalHandle h_hal, uint8_t dfs_flag)
+{
+	QDF_STATUS status = QDF_STATUS_SUCCESS;
+	tpAniSirGlobal mac;
+
+	if (!h_hal) {
+		sme_err("hal is NULL");
+		return QDF_STATUS_E_INVAL;
+	}
+
+	mac = PMAC_STRUCT(h_hal);
+	if (!mac) {
+		sme_err("mac is NULL");
+		return QDF_STATUS_E_INVAL;
+	}
+
+	mac->scan.fEnableDFSChnlScan = dfs_flag;
+
+	return status;
+}
+
 #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
 /**
  * sme_validate_sap_channel_switch() - validate target channel switch w.r.t