From: Felix Fietkau Date: Wed, 11 Dec 2013 18:20:19 +0000 (+0100) Subject: wireless: fix handling of wdev->config_state, prevent handling of multiple state... X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=c48a6457f851f24b07c384007bb471dafcd0ef14;p=oweals%2Fnetifd.git wireless: fix handling of wdev->config_state, prevent handling of multiple state changes (reload + remove) Signed-off-by: Felix Fietkau --- diff --git a/wireless.c b/wireless.c index 3460337..a4d7c26 100644 --- a/wireless.c +++ b/wireless.c @@ -281,10 +281,10 @@ wdev_handle_config_change(struct wireless_device *wdev) { enum interface_config_state state = wdev->config_state; - wdev->config_state = IFC_NORMAL; switch(state) { case IFC_NORMAL: case IFC_RELOAD: + wdev->config_state = IFC_NORMAL; if (wdev->autostart) __wireless_device_set_up(wdev); break; @@ -395,12 +395,10 @@ wireless_device_set_down(struct wireless_device *wdev) static void wdev_set_config_state(struct wireless_device *wdev, enum interface_config_state s) { - enum interface_config_state old_state = wdev->config_state; - - wdev->config_state = s; - if (old_state != IFC_NORMAL) + if (wdev->config_state != IFC_NORMAL) return; + wdev->config_state = s; if (wdev->state == IFS_DOWN) wdev_handle_config_change(wdev); else