summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Hainke2025-12-27 12:43:47 +0000
committerNick Hainke2025-12-27 15:26:25 +0000
commit2015a40c387119d56c290734f571c41878938e88 (patch)
treeb0e466139db19827b9530b0dea229bba4b288731
parent5d7470d4caab5c4c9b0d9e853d4681f2e7183c4e (diff)
downloadstintel-2015a40c387119d56c290734f571c41878938e88.tar.gz
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 <vincent@systemli.org>
-rwxr-xr-xpackage/network/config/wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh12
1 files 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 dcfdcd2cc8..6230f90287 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);