summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau2023-06-28 12:35:46 +0000
committerFelix Fietkau2023-06-28 12:35:57 +0000
commit255b4d5c472ee3e04ed5fc8ded2a15b3737821ba (patch)
tree0873f9d9e4693270347e71ba04ecfbc8a985e04b
parent4bea6d21a9ab2acbcf1d2d34a1266e36ae9a8d39 (diff)
downloadnetifd-255b4d5c472ee3e04ed5fc8ded2a15b3737821ba.tar.gz
wireless: fix handling config reload with reconf=1
If reload triggers while the wdev is up, and reconf is set to 1, run the setup handler immediately, otherwise the change will not be applied. Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r--wireless.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/wireless.c b/wireless.c
index 3590cb7..58f096d 100644
--- a/wireless.c
+++ b/wireless.c
@@ -680,10 +680,15 @@ wdev_set_config_state(struct wireless_device *wdev, enum interface_config_state
if (wdev->config_state != IFC_NORMAL)
return;
+ if (s == IFC_RELOAD && wdev->reconf && wdev->state == IFS_UP) {
+ wireless_device_reconf(wdev);
+ return;
+ }
+
wdev->config_state = s;
if (wdev->state == IFS_DOWN)
wdev_handle_config_change(wdev);
- else if (!wdev->reconf || wdev->state != IFS_UP)
+ else
__wireless_device_set_down(wdev);
}