hostapd: Allow enabling background radar

This feature does not work on all radios that advertise this feature
with the current driver implementation, and possibly some users don't
want to use it even if it works fine, so disable it by default for now,
but let users enable it as desired with enable_background_radar=1.

Signed-off-by: Ben Greear <greearb@candelatech.com>
This commit is contained in:
Ben Greear 2022-04-21 16:02:39 -07:00 committed by Jouni Malinen
parent 08d7738bb2
commit f1686d7761
4 changed files with 15 additions and 1 deletions

View file

@ -3148,6 +3148,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);

View file

@ -225,6 +225,16 @@ channel=1
# Default behavior is to include all PSC and non-PSC channels.
#acs_exclude_6ghz_non_psc=1
# Enable background radar feature
# 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.
# This requires that the driver and the radio support it before feature will
# actually be enabled, i.e., this parameter value is ignored with drivers that
# do not advertise support for the capability.
# 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

View file

@ -969,6 +969,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

View file

@ -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;
}