瀏覽代碼

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 <[email protected]>
Felix Fietkau 2 年之前
父節點
當前提交
22ca6fdeeb
共有 1 個文件被更改,包括 8 次插入0 次删除
  1. 8 0
      package/network/services/hostapd/src/src/ap/ucode.c

+ 8 - 0
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 <libubox/uloop.h>
 
 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;