diff options
author | Bob Cantor <coxede6557@w3boats.com> | 2021-06-25 04:07:34 +1000 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2021-06-30 19:24:55 +0200 |
commit | 9302e63d1a3589f764e61caf0b3ecdad524458ea (patch) | |
tree | e6b89db319207550c587ed15003764158a6b6f9b | |
parent | bea9380149d58e79bed4bf4b8298066bd36edde8 (diff) | |
download | upstream-9302e63d1a3589f764e61caf0b3ecdad524458ea.tar.gz upstream-9302e63d1a3589f764e61caf0b3ecdad524458ea.tar.bz2 upstream-9302e63d1a3589f764e61caf0b3ecdad524458ea.zip |
mac80211: always call wireless_set_data (FS#3784)
When wifi is turned off, drv_mac80211_teardown sometimes fails (silently)
because the device to be torn down is not defined.
This situation arises if drv_mac80211_setup was called twice when
wifi was turned on.
This commit ensures that the device to be torn down is always defined
in drv_mac80211_teardown.
Steps to reproduce:
1) Use /sbin/wifi to turn on wifi.
uci set wireless.@wifi-iface[0].disabled=0
uci set wireless.@wifi-device[0].disabled=0
uci commit
wifi
2) Use /sbin/wifi to turn off wifi.
uci set wireless.@wifi-device[0].disabled=1
uci commit
wifi
3) Observe that wifi is still up.
branches affected: trunk, 21.02
Signed-off-by: Bob Cantor <coxede6557@w3boats.com>
(cherry-picked from commit d515f6b6cde357bf480d32a7387f07ea40e85e52)
-rw-r--r-- | package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh index 43bd85cfdf..e3b26b287c 100644 --- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh +++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh @@ -907,10 +907,8 @@ drv_mac80211_setup() { return 1 } - [ -z "$(uci -q -P /var/state show wireless._${phy})" ] && { - uci -q -P /var/state set wireless._${phy}=phy - wireless_set_data phy="$phy" - } + wireless_set_data phy="$phy" + [ -z "$(uci -q -P /var/state show wireless._${phy})" ] && uci -q -P /var/state set wireless._${phy}=phy OLDAPLIST=$(uci -q -P /var/state get wireless._${phy}.aplist) OLDSPLIST=$(uci -q -P /var/state get wireless._${phy}.splist) |