if (!ifname)
ifname = vif->ifname;
- if (up && ifname != vif->ifname) {
+ if (up && !strcmp(ifname, vif->ifname)) {
struct device *dev = device_get(ifname, 2);
if (dev) {
dev->wireless_isolate = vif->isolate;
argv[i] = NULL;
if (up && pipe(fds) == 0) {
+ if (wdev->script_proc_fd.fd >= 0)
+ wireless_close_script_proc_fd(wdev);
+
wdev->script_proc_fd.fd = fds[0];
uloop_fd_add(&wdev->script_proc_fd,
ULOOP_READ | ULOOP_EDGE_TRIGGER);
enum interface_config_state state = wdev->config_state;
switch(state) {
- case IFC_NORMAL:
case IFC_RELOAD:
+ wdev->retry = WIRELESS_SETUP_RETRY;
+ wdev->retry_setup_failed = false;
+ fallthrough;
+ case IFC_NORMAL:
__wireless_device_set_up(wdev, 0);
wdev->config_state = IFC_NORMAL;
struct wireless_interface *vif;
struct wireless_vlan *vlan;
- D(WIRELESS, "Wireless device '%s' is now down\n", wdev->name);
+ netifd_log_message(L_NOTICE, "Wireless device '%s' is now down\n", wdev->name);
vlist_for_each_element(&wdev->vlans, vlan, node)
wireless_vlan_handle_link(vlan, false);
return;
}
- D(WIRELESS, "Wireless device '%s' is now up\n", wdev->name);
+ netifd_log_message(L_NOTICE, "Wireless device '%s' is now up\n", wdev->name);
+ wdev->retry = WIRELESS_SETUP_RETRY;
wdev->state = IFS_UP;
vlist_for_each_element(&wdev->interfaces, vif, node)
wireless_interface_handle_link(vif, NULL, true);
if (wdev->state == IFS_TEARDOWN || wdev->state == IFS_DOWN || wdev->cancel)
return;
+ netifd_log_message(wdev->retry ? L_WARNING : L_CRIT,
+ "Wireless device '%s' setup failed, retry=%d\n",
+ wdev->name, wdev->retry);
if (--wdev->retry < 0)
wdev->retry_setup_failed = true;
free(wdev->config);
wdev->config = blob_memdup(new_config);
wdev->disabled = disabled;
- wdev->retry_setup_failed = false;
wdev_set_config_state(wdev, IFC_RELOAD);
}
if (cur && blobmsg_get_bool(cur))
return;
- sprintf(name, "%d", wdev->vlan_idx++);
+ sprintf(name, "%d", wdev->sta_idx++);
sta = calloc_a(sizeof(*sta),
&name_buf, strlen(name) + 1,
return UBUS_STATUS_INVALID_ARGUMENT;
wdev->retry = blobmsg_get_u32(val);
+ netifd_log_message(L_NOTICE, "Wireless device '%s' set retry=%d\n", wdev->name, wdev->retry);
return 0;
}