|
@@ -7698,6 +7698,10 @@ static int i802_set_wds_sta(void *priv, const u8 *addr, int aid, int val,
|
|
}
|
|
}
|
|
return i802_set_sta_vlan(priv, addr, name, 0);
|
|
return i802_set_sta_vlan(priv, addr, name, 0);
|
|
} else {
|
|
} else {
|
|
|
|
+ if (bridge_ifname)
|
|
|
|
+ linux_br_del_if(drv->global->ioctl_sock, bridge_ifname,
|
|
|
|
+ name);
|
|
|
|
+
|
|
i802_set_sta_vlan(priv, addr, bss->ifname, 0);
|
|
i802_set_sta_vlan(priv, addr, bss->ifname, 0);
|
|
return wpa_driver_nl80211_if_remove(priv, WPA_IF_AP_VLAN,
|
|
return wpa_driver_nl80211_if_remove(priv, WPA_IF_AP_VLAN,
|
|
name);
|
|
name);
|
|
@@ -8065,7 +8069,12 @@ static int wpa_driver_nl80211_if_remove(void *priv,
|
|
if (ifindex <= 0)
|
|
if (ifindex <= 0)
|
|
return -1;
|
|
return -1;
|
|
|
|
|
|
|
|
+ nl80211_remove_iface(drv, ifindex);
|
|
|
|
+
|
|
#ifdef HOSTAPD
|
|
#ifdef HOSTAPD
|
|
|
|
+ if (type != WPA_IF_AP_BSS)
|
|
|
|
+ return 0;
|
|
|
|
+
|
|
if (bss->added_if_into_bridge) {
|
|
if (bss->added_if_into_bridge) {
|
|
if (linux_br_del_if(drv->global->ioctl_sock, bss->brname,
|
|
if (linux_br_del_if(drv->global->ioctl_sock, bss->brname,
|
|
bss->ifname) < 0)
|
|
bss->ifname) < 0)
|
|
@@ -8079,13 +8088,6 @@ static int wpa_driver_nl80211_if_remove(void *priv,
|
|
"bridge %s: %s",
|
|
"bridge %s: %s",
|
|
bss->brname, strerror(errno));
|
|
bss->brname, strerror(errno));
|
|
}
|
|
}
|
|
-#endif /* HOSTAPD */
|
|
|
|
-
|
|
|
|
- nl80211_remove_iface(drv, ifindex);
|
|
|
|
-
|
|
|
|
-#ifdef HOSTAPD
|
|
|
|
- if (type != WPA_IF_AP_BSS)
|
|
|
|
- return 0;
|
|
|
|
|
|
|
|
if (bss != &drv->first_bss) {
|
|
if (bss != &drv->first_bss) {
|
|
struct i802_bss *tbss;
|
|
struct i802_bss *tbss;
|