ath9k: fix keycache handling with many connected clients

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 36467
v19.07.3_mercusys_ac12_duma
Felix Fietkau 11 years ago
parent fab1ddff73
commit 6a2dd833cf

@ -76,6 +76,33 @@
}
/* Called with sc->mutex held. */
@@ -1327,6 +1332,7 @@ static int ath9k_sta_add(struct ieee8021
struct ath_common *common = ath9k_hw_common(sc->sc_ah);
struct ath_node *an = (struct ath_node *) sta->drv_priv;
struct ieee80211_key_conf ps_key = { };
+ int key;
ath_node_attach(sc, sta, vif);
@@ -1334,7 +1340,9 @@ static int ath9k_sta_add(struct ieee8021
vif->type != NL80211_IFTYPE_AP_VLAN)
return 0;
- an->ps_key = ath_key_config(common, vif, sta, &ps_key);
+ key = ath_key_config(common, vif, sta, &ps_key);
+ if (key > 0)
+ an->ps_key = key;
return 0;
}
@@ -1351,6 +1359,7 @@ static void ath9k_del_ps_key(struct ath_
return;
ath_key_delete(common, &ps_key);
+ an->ps_key = 0;
}
static int ath9k_sta_remove(struct ieee80211_hw *hw,
--- a/drivers/net/wireless/ath/ath9k/reg.h
+++ b/drivers/net/wireless/ath/ath9k/reg.h
@@ -1493,9 +1493,6 @@ enum {

Loading…
Cancel
Save