summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Chiang2025-10-26 00:29:30 +0000
committerFelix Fietkau2025-11-12 12:45:50 +0000
commit00e881451a980a7e65d94e7f91029baa479dd8eb (patch)
tree5f0016da45f3d5b55988b2eb31a203d69d6b8d35
parentcc3e2112640041a632abe35a7acec43994a2f14c (diff)
downloadopenwrt-00e881451a980a7e65d94e7f91029baa479dd8eb.tar.gz
wifi-scripts: ucode: fix start failed
When using wpad-openssl/wpad-basic-openssl, wpa_supplicant/hostapd may not be ready because of openssl. This cause supplicant.setup and hostapd.setup to be failed. Therefore, wait for wpa_supplicant/hostapd to be ready before supplicant.setup and hostapd.setup. Run-tested: mediatek/filogic GL-MT3000 fixes: #20361 Signed-off-by: Andy Chiang <AndyChiang_git@outlook.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rwxr-xr-xpackage/network/config/wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh7
-rw-r--r--package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc4
-rw-r--r--package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/supplicant.uc4
3 files changed, 11 insertions, 4 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 23438a4cde..8aba81436e 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,8 +288,11 @@ function setup() {
wdev_data[v.config.ifname] = config;
}
- supplicant.setup(supplicant_data, data);
- hostapd.setup(data);
+ if (fs.access('/usr/sbin/wpa_supplicant', 'x'))
+ supplicant.setup(supplicant_data, data);
+
+ if (fs.access('/usr/sbin/hostapd', 'x'))
+ hostapd.setup(data);
system(`ucode /usr/share/hostap/wdev.uc ${data.phy}${data.phy_suffix} set_config '${printf("%J", wdev_data)}' ${join(' ', active_ifnames)}`);
diff --git a/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc b/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc
index c0a76bbd94..db3bffe9ef 100644
--- a/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc
+++ b/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc
@@ -571,10 +571,12 @@ export function setup(data) {
config: has_ap ? file_name : "",
prev_config: file_name + '.prev'
};
+ if (!global.ubus.list('hostapd'))
+ system('ubus wait_for hostapd');
let ret = global.ubus.call('hostapd', 'config_set', msg);
if (ret)
netifd.add_process('/usr/sbin/hostapd', ret.pid, true, true);
- else if (fs.access('/usr/sbin/hostapd', 'x'))
+ else
netifd.setup_failed('HOSTAPD_START_FAILED');
};
diff --git a/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/supplicant.uc b/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/supplicant.uc
index 3ed05149f8..f796ae99a7 100644
--- a/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/supplicant.uc
+++ b/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/supplicant.uc
@@ -270,6 +270,8 @@ export function generate(config_list, data, interface) {
};
export function setup(config, data) {
+ if (!global.ubus.list('wpa_supplicant'))
+ system('ubus wait_for wpa_supplicant');
let ret = global.ubus.call('wpa_supplicant', 'config_set', {
phy: data.phy,
radio: data.config.radio,
@@ -281,7 +283,7 @@ export function setup(config, data) {
if (ret)
netifd.add_process('/usr/sbin/wpa_supplicant', ret.pid, true, true);
- else if (fs.access('/usr/sbin/wpa_supplicant', 'x'))
+ else
netifd.setup_failed('SUPPLICANT_START_FAILED');
};