mac80211: fix key flush handling in AP+STA
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 43079
This commit is contained in:
parent
ba48074622
commit
e6da32c086
3 changed files with 37 additions and 2 deletions
|
@ -0,0 +1,12 @@
|
||||||
|
Used for AP+STA support in OpenWrt - preserve AP mode keys across STA reconnects
|
||||||
|
|
||||||
|
--- a/net/mac80211/cfg.c
|
||||||
|
+++ b/net/mac80211/cfg.c
|
||||||
|
@@ -846,7 +846,6 @@ static int ieee80211_stop_ap(struct wiph
|
||||||
|
sdata->u.ap.driver_smps_mode = IEEE80211_SMPS_OFF;
|
||||||
|
|
||||||
|
__sta_info_flush(sdata, true);
|
||||||
|
- ieee80211_free_keys(sdata, true);
|
||||||
|
|
||||||
|
sdata->vif.bss_conf.enable_beacon = false;
|
||||||
|
sdata->vif.bss_conf.ssid_len = 0;
|
|
@ -0,0 +1,23 @@
|
||||||
|
From: Felix Fietkau <nbd@openwrt.org>
|
||||||
|
Date: Mon, 27 Oct 2014 11:50:28 +0100
|
||||||
|
Subject: [PATCH] mac80211: flush keys for AP mode on ieee80211_do_stop
|
||||||
|
|
||||||
|
Userspace can add keys to an AP mode interface before start_ap has been
|
||||||
|
called. If there have been no calls to start_ap/stop_ap in the mean
|
||||||
|
time, the keys will still be around when the interface is brought down.
|
||||||
|
|
||||||
|
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
|
---
|
||||||
|
|
||||||
|
--- a/net/mac80211/iface.c
|
||||||
|
+++ b/net/mac80211/iface.c
|
||||||
|
@@ -931,9 +931,6 @@ static void ieee80211_do_stop(struct iee
|
||||||
|
* another CPU.
|
||||||
|
*/
|
||||||
|
ieee80211_free_keys(sdata, true);
|
||||||
|
-
|
||||||
|
- /* fall through */
|
||||||
|
- case NL80211_IFTYPE_AP:
|
||||||
|
skb_queue_purge(&sdata->skb_queue);
|
||||||
|
}
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
__NL80211_ATTR_AFTER_LAST,
|
__NL80211_ATTR_AFTER_LAST,
|
||||||
--- a/net/mac80211/cfg.c
|
--- a/net/mac80211/cfg.c
|
||||||
+++ b/net/mac80211/cfg.c
|
+++ b/net/mac80211/cfg.c
|
||||||
@@ -2092,6 +2092,19 @@ static int ieee80211_get_tx_power(struct
|
@@ -2091,6 +2091,19 @@ static int ieee80211_get_tx_power(struct
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@
|
||||||
static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
|
static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
|
||||||
const u8 *addr)
|
const u8 *addr)
|
||||||
{
|
{
|
||||||
@@ -3573,6 +3586,7 @@ const struct cfg80211_ops mac80211_confi
|
@@ -3572,6 +3585,7 @@ const struct cfg80211_ops mac80211_confi
|
||||||
.set_wiphy_params = ieee80211_set_wiphy_params,
|
.set_wiphy_params = ieee80211_set_wiphy_params,
|
||||||
.set_tx_power = ieee80211_set_tx_power,
|
.set_tx_power = ieee80211_set_tx_power,
|
||||||
.get_tx_power = ieee80211_get_tx_power,
|
.get_tx_power = ieee80211_get_tx_power,
|
||||||
|
|
Loading…
Reference in a new issue