|
@@ -952,16 +952,21 @@ static void wpa_driver_nl80211_event_rtm_newlink(void *ctx,
|
|
|
(ifi->ifi_flags & IFF_DORMANT) ? "[DORMANT]" : "");
|
|
|
|
|
|
if (!drv->if_disabled && !(ifi->ifi_flags & IFF_UP)) {
|
|
|
+ namebuf[0] = '\0';
|
|
|
if (if_indextoname(ifi->ifi_index, namebuf) &&
|
|
|
- linux_iface_up(drv->global->ioctl_sock,
|
|
|
- drv->first_bss->ifname) > 0) {
|
|
|
+ linux_iface_up(drv->global->ioctl_sock, namebuf) > 0) {
|
|
|
wpa_printf(MSG_DEBUG, "nl80211: Ignore interface down "
|
|
|
"event since interface %s is up", namebuf);
|
|
|
drv->ignore_if_down_event = 0;
|
|
|
return;
|
|
|
}
|
|
|
- wpa_printf(MSG_DEBUG, "nl80211: Interface down");
|
|
|
- if (drv->ignore_if_down_event) {
|
|
|
+ wpa_printf(MSG_DEBUG, "nl80211: Interface down (%s/%s)",
|
|
|
+ namebuf, ifname);
|
|
|
+ if (os_strcmp(drv->first_bss->ifname, ifname) != 0) {
|
|
|
+ wpa_printf(MSG_DEBUG,
|
|
|
+ "nl80211: Not the main interface (%s) - do not indicate interface down",
|
|
|
+ drv->first_bss->ifname);
|
|
|
+ } else if (drv->ignore_if_down_event) {
|
|
|
wpa_printf(MSG_DEBUG, "nl80211: Ignore interface down "
|
|
|
"event generated by mode change");
|
|
|
drv->ignore_if_down_event = 0;
|
|
@@ -984,8 +989,7 @@ static void wpa_driver_nl80211_event_rtm_newlink(void *ctx,
|
|
|
|
|
|
if (drv->if_disabled && (ifi->ifi_flags & IFF_UP)) {
|
|
|
if (if_indextoname(ifi->ifi_index, namebuf) &&
|
|
|
- linux_iface_up(drv->global->ioctl_sock,
|
|
|
- drv->first_bss->ifname) == 0) {
|
|
|
+ linux_iface_up(drv->global->ioctl_sock, namebuf) == 0) {
|
|
|
wpa_printf(MSG_DEBUG, "nl80211: Ignore interface up "
|
|
|
"event since interface %s is down",
|
|
|
namebuf);
|