From: Erik Karlsson <erik.karls...@genexis.eu> In case flags have been cleared because settings failed to apply, restore them when the device is brought down so that they will be re-attempted the next time the device is brought up.
Signed-off-by: Erik Karlsson <erik.karls...@genexis.eu> --- device.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/device.c b/device.c index b352ee3..08325b8 100644 --- a/device.c +++ b/device.c @@ -172,6 +172,11 @@ static int set_device_state(struct device *dev, bool state) } else { system_if_down(dev); system_if_apply_settings(dev, &dev->orig_settings, dev->orig_settings.flags); + + /* Restore any settings present in UCI which may have + * failed to apply so that they will be re-attempted + * the next time the device is brought up */ + dev->settings.flags |= dev->settings.valid_flags; } return 0; @@ -571,6 +576,9 @@ device_init_settings(struct device *dev, struct blob_attr **tb) s->flags |= DEV_OPT_EEE; } + /* Remember the settings present in UCI */ + s->valid_flags = s->flags; + cur = tb[DEV_ATTR_AUTH_VLAN]; free(dev->config_auth_vlans); dev->config_auth_vlans = cur ? blob_memdup(cur) : NULL; -- 2.25.1 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel