[PATCH] hostapd: allow enabling background radar

greearb at candelatech.com greearb at candelatech.com
Thu Apr 21 16:02:39 PDT 2022


From: Ben Greear <greearb at candelatech.com>

This feature does not work on all radios that advertise this feature,
and possibly some users don't want to use it even if it works fine,
so disable it by default, but let users enable it as desired.

Signed-off-by: Ben Greear <greearb at candelatech.com>
---
 hostapd/config_file.c | 2 ++
 hostapd/hostapd.conf  | 8 ++++++++
 src/ap/ap_config.c    | 1 +
 src/ap/ap_config.h    | 1 +
 src/ap/dfs.c          | 3 ++-
 5 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/hostapd/config_file.c b/hostapd/config_file.c
index 81bfb6ef7..4f1655311 100644
--- a/hostapd/config_file.c
+++ b/hostapd/config_file.c
@@ -3210,6 +3210,8 @@ static int hostapd_config_fill(struct hostapd_config *conf,
 		conf->acs_freq_list_present = 1;
 	} else if (os_strcmp(buf, "acs_exclude_6ghz_non_psc") == 0) {
 		conf->acs_exclude_6ghz_non_psc = atoi(pos);
+	} else if (os_strcmp(buf, "enable_background_radar") == 0) {
+		conf->enable_background_radar = atoi(pos);
 	} else if (os_strcmp(buf, "min_tx_power") == 0) {
 		int val = atoi(pos);
 
diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf
index fb2a3e83e..a118eba8b 100644
--- a/hostapd/hostapd.conf
+++ b/hostapd/hostapd.conf
@@ -225,6 +225,14 @@ channel=1
 # Default behavior is to include all PSC and non-PSC channels.
 #acs_exclude_6ghz_non_psc=1
 
+# Enable background radar feature.  Also requires that radio supports it
+# before feature will actually be enabled.  This feature allows CAC to be run
+# on dedicated radio RF chains while the radio(s) are otherwise running normal
+# AP activities on other channels.
+# 0:  Leave disabled (default)
+# 1:  Enable it.
+#enable_background_radar=1
+
 # Set minimum permitted max TX power (in dBm) for ACS and DFS channel selection.
 # (default 0, i.e., not constraint)
 #min_tx_power=20
diff --git a/src/ap/ap_config.c b/src/ap/ap_config.c
index f33a25a18..3c1e7bf26 100644
--- a/src/ap/ap_config.c
+++ b/src/ap/ap_config.c
@@ -250,6 +250,7 @@ struct hostapd_config * hostapd_config_defaults(void)
 	conf->ap_table_max_size = 255;
 	conf->ap_table_expiration_time = 60;
 	conf->track_sta_max_age = 180;
+	conf->enable_background_radar = 0;
 
 #ifdef CONFIG_TESTING_OPTIONS
 	conf->ignore_probe_probability = 0.0;
diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h
index d1f387221..356327c85 100644
--- a/src/ap/ap_config.h
+++ b/src/ap/ap_config.h
@@ -974,6 +974,7 @@ struct hostapd_config {
 	u8 min_tx_power;
 	enum hostapd_hw_mode hw_mode; /* HOSTAPD_MODE_IEEE80211A, .. */
 	int acs_exclude_6ghz_non_psc;
+	int enable_background_radar;
 	enum {
 		LONG_PREAMBLE = 0,
 		SHORT_PREAMBLE = 1
diff --git a/src/ap/dfs.c b/src/ap/dfs.c
index 2c92e1dd3..f3c84a33f 100644
--- a/src/ap/dfs.c
+++ b/src/ap/dfs.c
@@ -34,7 +34,8 @@ dfs_downgrade_bandwidth(struct hostapd_iface *iface, int *secondary_channel,
 
 static bool dfs_use_radar_background(struct hostapd_iface *iface)
 {
-	return iface->drv_flags2 & WPA_DRIVER_RADAR_BACKGROUND;
+	return (iface->drv_flags2 & WPA_DRIVER_RADAR_BACKGROUND) &&
+		iface->conf->enable_background_radar;
 }
 
 
-- 
2.20.1




More information about the Hostap mailing list