diff options
author | Felix Fietkau <nbd@openwrt.org> | 2009-11-11 16:32:09 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2009-11-11 16:32:09 +0000 |
commit | c8c6f7ec39a3e6f66c8a6deb9fc68e6832c097e6 (patch) | |
tree | d5804e8ed9a9eac5e978c741dc9c46bbdc867e88 | |
parent | 3f5c35c74201511b9b554173132ef543697718b7 (diff) | |
download | upstream-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
-rw-r--r-- | package/hostapd/patches/130-wds_ap.patch | 5 | ||||
-rw-r--r-- | package/mac80211/patches/520-nl80211_vlan_add_fix.patch | 20 |
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; + } |