static void
wireless_device_free(struct wireless_device *wdev)
{
- vlist_flush_all(&wdev->interfaces);
- free(wdev->config);
- free(wdev);
+ vlist_flush_all(&wdev->interfaces);
+ avl_delete(&wireless_devices.avl, &wdev->node.avl);
+ free(wdev->config);
+ free(wdev);
}
static void
{
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;
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