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>
(cherry picked from commit 2015a40c38)
This commit is contained in:
parent
380e5ea1f2
commit
571d716e69
@ -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);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user