aboutsummaryrefslogtreecommitdiffstats
path: root/package
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2009-11-11 16:32:09 +0000
committerFelix Fietkau <nbd@openwrt.org>2009-11-11 16:32:09 +0000
commitc8c6f7ec39a3e6f66c8a6deb9fc68e6832c097e6 (patch)
treed5804e8ed9a9eac5e978c741dc9c46bbdc867e88 /package
parent3f5c35c74201511b9b554173132ef543697718b7 (diff)
downloadupstream-c8c6f7ec39a3e6f66c8a6deb9fc68e6832c097e6.tar.gz
upstream-c8c6f7ec39a3e6f66c8a6deb9fc68e6832c097e6.tar.bz2
upstream-c8c6f7ec39a3e6f66c8a6deb9fc68e6832c097e6.zip
mac80211: fix a race condition when bringing up wds sta interfaces on the ap
SVN-Revision: 18377
Diffstat (limited to 'package')
-rw-r--r--package/hostapd/patches/130-wds_ap.patch5
-rw-r--r--package/mac80211/patches/520-nl80211_vlan_add_fix.patch20
2 files changed, 23 insertions, 2 deletions
diff --git a/package/hostapd/patches/130-wds_ap.patch b/package/hostapd/patches/130-wds_ap.patch
index 019257599d..4624f88a13 100644
--- a/package/hostapd/patches/130-wds_ap.patch
+++ b/package/hostapd/patches/130-wds_ap.patch
@@ -126,7 +126,7 @@
return -1;
return 0;
}
-@@ -4310,6 +4312,21 @@ static int i802_set_sta_vlan(void *priv,
+@@ -4310,6 +4312,22 @@ static int i802_set_sta_vlan(void *priv,
return -ENOBUFS;
}
@@ -139,6 +139,7 @@
+ if (val) {
+ if (nl80211_create_iface(priv, name, NL80211_IFTYPE_AP_VLAN, NULL, 1) < 0)
+ return -1;
++ hostapd_set_iface_flags(drv, name, 1);
+ return i802_set_sta_vlan(priv, addr, name, 0);
+ } else {
+ i802_set_sta_vlan(priv, addr, drv->ifname, 0);
@@ -148,7 +149,7 @@
static void handle_eapol(int sock, void *eloop_ctx, void *sock_ctx)
{
-@@ -4536,5 +4553,6 @@ const struct wpa_driver_ops wpa_driver_n
+@@ -4536,5 +4554,6 @@ const struct wpa_driver_ops wpa_driver_n
.if_update = i802_if_update,
.if_remove = i802_if_remove,
.set_sta_vlan = i802_set_sta_vlan,
diff --git a/package/mac80211/patches/520-nl80211_vlan_add_fix.patch b/package/mac80211/patches/520-nl80211_vlan_add_fix.patch
new file mode 100644
index 0000000000..e0cdaead15
--- /dev/null
+++ b/package/mac80211/patches/520-nl80211_vlan_add_fix.patch
@@ -0,0 +1,20 @@
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
+@@ -1813,7 +1813,7 @@ static int nl80211_get_station(struct sk
+ }
+
+ /*
+- * Get vlan interface making sure it is on the right wiphy.
++ * Get vlan interface making sure it is running and on the right wiphy.
+ */
+ static int get_vlan(struct genl_info *info,
+ struct cfg80211_registered_device *rdev,
+@@ -1831,6 +1831,8 @@ static int get_vlan(struct genl_info *in
+ return -EINVAL;
+ if ((*vlan)->ieee80211_ptr->wiphy != &rdev->wiphy)
+ return -EINVAL;
++ if (!netif_running(*vlan))
++ return -ENETDOWN;
+ }
+ return 0;
+ }