mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2026-03-14 23:09:45 +01:00
wifi-scripts: fix spurious teardown on config_change during setup
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
When config_change is set during an active setup (e.g. by a concurrent reconf call), wdev_mark_up() attempted to call setup() while still in "setup" state. Since setup() requires state "up" or "down", it silently returned, leaving the state as "setup". The subsequent wdev_setup_cb() then treated this as a setup failure, triggering an unnecessary teardown+restart cycle. Fix this by removing the config_change handling from wdev_mark_up() and moving it to wdev_setup_cb() instead. wdev_mark_up() now always transitions to "up" state. When wdev_setup_cb() runs afterwards and finds the device already "up" with config_change set, it initiates a clean re-setup from the "up" state where setup() can run. Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
97b0379514
commit
3553eda283
1 changed files with 6 additions and 6 deletions
|
|
@ -142,8 +142,13 @@ function wdev_config_init(wdev)
|
|||
|
||||
function wdev_setup_cb(wdev)
|
||||
{
|
||||
if (wdev.state != "setup")
|
||||
if (wdev.state != "setup") {
|
||||
if (wdev.state == "up" && wdev.config_change) {
|
||||
wdev_config_init(wdev);
|
||||
wdev.setup();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (wdev.retry > 0)
|
||||
wdev.retry--;
|
||||
|
|
@ -448,11 +453,6 @@ function wdev_mark_up(wdev)
|
|||
if (wdev.state != "setup")
|
||||
return;
|
||||
|
||||
if (wdev.config_change) {
|
||||
wdev.setup();
|
||||
return;
|
||||
}
|
||||
|
||||
for (let section, data in wdev.handler_data) {
|
||||
if (data.ifname)
|
||||
handle_link(data.ifname, data, true);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue