From 22ca6fdeeb8fda642a8d50fc93b95781392ea97e Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Thu, 24 Aug 2023 18:27:51 +0200 Subject: [PATCH] hostapd: fix bringing up AP+STA when the new channel is on a DFS channel If a CAC is needed because the channel is not available yet, a full AP interface restart is needed Signed-off-by: Felix Fietkau --- package/network/services/hostapd/src/src/ap/ucode.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/package/network/services/hostapd/src/src/ap/ucode.c b/package/network/services/hostapd/src/src/ap/ucode.c index 053171b1429f..080fe48b11ac 100644 --- a/package/network/services/hostapd/src/src/ap/ucode.c +++ b/package/network/services/hostapd/src/src/ap/ucode.c @@ -7,6 +7,7 @@ #include "beacon.h" #include "hw_features.h" #include "ap_drv_ops.h" +#include "dfs.h" #include static uc_resource_type_t *global_type, *bss_type, *iface_type; @@ -367,6 +368,13 @@ out: if (conf->channel) iface->freq = hostapd_hw_get_freq(iface->bss[0], conf->channel); + if (hostapd_is_dfs_required(iface) && !hostapd_is_dfs_chan_available(iface)) { + wpa_printf(MSG_INFO, "DFS CAC required on new channel, restart interface"); + hostapd_disable_iface(iface); + hostapd_enable_iface(iface); + return ucv_boolean_new(true); + } + for (i = 0; i < iface->num_bss; i++) { struct hostapd_data *hapd = iface->bss[i]; int ret; -- 2.30.2