base-files: fix duplicate wifi radio sections when using phy renaming
authorFelix Fietkau <nbd@nbd.name>
Mon, 17 Jul 2023 12:32:21 +0000 (14:32 +0200)
committerFelix Fietkau <nbd@nbd.name>
Mon, 17 Jul 2023 12:33:57 +0000 (14:33 +0200)
The duplicate sections are caused by a race condition at boot, when board.json
is not available. In that case, the final phy name cannot be resolved, and extra
sections referring to the path are created.
Fix this by making sure that wifi config is not being run before board.json
is created.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
package/base-files/files/etc/init.d/boot
package/base-files/files/sbin/wifi

index 749d9e971141c63542e220bbd5c175f40041b174..d17754d087942b71422fa5b15f2a25fb9274cc6e 100755 (executable)
@@ -39,6 +39,7 @@ boot() {
        grep -q pstore /proc/filesystems && /bin/mount -o noatime -t pstore pstore /sys/fs/pstore
        [ "$FAILSAFE" = "true" ] && touch /tmp/.failsafe
 
+       touch /tmp/.config_pending
        /sbin/kmodloader
 
        [ ! -f /etc/config/wireless ] && {
@@ -47,6 +48,8 @@ boot() {
        }
 
        /bin/config_generate
+       rm -f /tmp/.config_pending
+       /sbin/wifi config
        uci_apply_defaults
        sync
        
index a3d3206ee732dc3ecc5345f7484ff67751944fcd..5231063a2b78f19dc1d712b850f4b8bfc2aeff38 100755 (executable)
@@ -175,6 +175,7 @@ wifi_detect_notice() {
 }
 
 wifi_config() {
+       [ -e /tmp/.config_pending ] && return
        [ ! -f /etc/config/wireless ] && touch /etc/config/wireless
 
        for driver in $DRIVERS; do (