base-files: wifi: swap the order of some ubus calls
authorBob Cantor <coxede6557@w3boats.com>
Thu, 24 Jun 2021 18:37:17 +0000 (04:37 +1000)
committerFelix Fietkau <nbd@nbd.name>
Wed, 30 Jun 2021 17:24:55 +0000 (19:24 +0200)
"/sbin/wifi up" makes three ubus calls:
1. ubus call network reload
2. ubus call network.wireless down
3. ubus call network.wireless up

The first and third ubus calls call drv_mac80211_setup,
while the second ubus call triggers wireless_device_setup_cancel,
so the call sequence becomes,

1. drv_mac80211_setup
2. wireless_device_setup_cancel
3. drv_mac80211_setup

This commit swaps the order of the first two ubus calls,
1. ubus call network.wireless down
2. ubus call network reload
3. ubus call network.wireless up

Consequently drv_mac80211_setup is only called once,
and two related bugs (#FS3784 and #FS3902) are no longer triggered
by /sbin/wifi.

branches affected: trunk, 21.02

Signed-off-by: Bob Cantor <coxede6557@w3boats.com>
(cherry-picked from commit b82cc8071366b8e96904a1b52af503442069b20d)

package/base-files/files/sbin/wifi

index 75759b94f34a9e9f7724023808d5ea18f79a9947..b2dde6f01cd4ae59e9fcca688bed0940934a42f7 100755 (executable)
@@ -130,6 +130,7 @@ wifi_updown() {
                ubus_wifi_cmd "$cmd" "$2"
                scan_wifi
                cmd=up
+               ubus call network reload
        }
        [ reconf = "$1" ] && {
                scan_wifi
@@ -247,6 +248,6 @@ case "$1" in
        reload_legacy) wifi_reload_legacy "$2";;
        --help|help) usage;;
        reconf) ubus call network reload; wifi_updown "reconf" "$2";;
-       ''|up) ubus call network reload; wifi_updown "enable" "$2";;
+       ''|up) wifi_updown "enable" "$2";;
        *) usage; exit 1;;
 esac