|
@@ -7660,6 +7660,16 @@ static int nl80211_create_iface(struct wpa_driver_nl80211_data *drv,
|
|
|
if (use_existing) {
|
|
|
wpa_printf(MSG_DEBUG, "nl80211: Continue using existing interface %s",
|
|
|
ifname);
|
|
|
+ if (addr && iftype != NL80211_IFTYPE_MONITOR &&
|
|
|
+ linux_set_ifhwaddr(drv->global->ioctl_sock, ifname,
|
|
|
+ addr) < 0 &&
|
|
|
+ (linux_set_iface_flags(drv->global->ioctl_sock,
|
|
|
+ ifname, 0) < 0 ||
|
|
|
+ linux_set_ifhwaddr(drv->global->ioctl_sock, ifname,
|
|
|
+ addr) < 0 ||
|
|
|
+ linux_set_iface_flags(drv->global->ioctl_sock,
|
|
|
+ ifname, 1) < 0))
|
|
|
+ return -1;
|
|
|
return -ENFILE;
|
|
|
}
|
|
|
wpa_printf(MSG_INFO, "Try to remove and re-create %s", ifname);
|