From 2015a40c387119d56c290734f571c41878938e88 Mon Sep 17 00:00:00 2001 From: Nick Hainke Date: Sat, 27 Dec 2025 13:43:47 +0100 Subject: [PATCH] wifi-scripts: fix race in wireless interface creation When wdev interfaces and hostapd interfaces are mixed, race conditions can occur. Sometimes all interfaces are started correctly, sometimes only the wdev interface and some of the hostapd interfaces, and sometimes only the wdev interface. Fix this by creating the wdev interfaces first, before processing wpa_supplicant or hostapd interfaces. Link: https://github.com/openwrt/openwrt/pull/21303 Signed-off-by: Nick Hainke --- .../files-ucode/lib/netifd/wireless/mac80211.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package/network/config/wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh b/package/network/config/wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh index dcfdcd2cc85..6230f902876 100755 --- a/package/network/config/wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh +++ b/package/network/config/wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh @@ -288,12 +288,6 @@ function setup() { wdev_data[v.config.ifname] = config; } - if (fs.access('/usr/sbin/wpa_supplicant', 'x')) - supplicant.setup(supplicant_data, data); - - if (fs.access('/usr/sbin/hostapd', 'x')) - hostapd.setup(data); - for (let ifname in active_ifnames) { if (!wdev_data[ifname]) continue; @@ -304,6 +298,12 @@ function setup() { system(`ucode /usr/share/hostap/wdev.uc ${data.phy}${data.phy_suffix} set_config '${if_config}'`); } + if (fs.access('/usr/sbin/wpa_supplicant', 'x')) + supplicant.setup(supplicant_data, data); + + if (fs.access('/usr/sbin/hostapd', 'x')) + hostapd.setup(data); + if (length(supplicant_data) > 0) supplicant.start(data); -- 2.47.3