Commit 3dc3fc52 authored by John W. Linville's avatar John W. Linville

Revert "ath9k: Group Key fix for VAPs"

This reverts commit 03ceedea.

This patch was reported to cause a regression in which connectivity is
lost and cannot be reestablished after a suspend/resume cycle.
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 617f3d0d
...@@ -752,7 +752,6 @@ static int ath_key_config(struct ath_common *common, ...@@ -752,7 +752,6 @@ static int ath_key_config(struct ath_common *common,
struct ath_hw *ah = common->ah; struct ath_hw *ah = common->ah;
struct ath9k_keyval hk; struct ath9k_keyval hk;
const u8 *mac = NULL; const u8 *mac = NULL;
u8 gmac[ETH_ALEN];
int ret = 0; int ret = 0;
int idx; int idx;
...@@ -776,30 +775,9 @@ static int ath_key_config(struct ath_common *common, ...@@ -776,30 +775,9 @@ static int ath_key_config(struct ath_common *common,
memcpy(hk.kv_val, key->key, key->keylen); memcpy(hk.kv_val, key->key, key->keylen);
if (!(key->flags & IEEE80211_KEY_FLAG_PAIRWISE)) { if (!(key->flags & IEEE80211_KEY_FLAG_PAIRWISE)) {
if (key->ap_addr) {
/*
* Group keys on hardware that supports multicast frame
* key search use a mac that is the sender's address with
* the high bit set instead of the app-specified address.
*/
memcpy(gmac, key->ap_addr, ETH_ALEN);
gmac[0] |= 0x80;
mac = gmac;
if (key->alg == ALG_TKIP)
idx = ath_reserve_key_cache_slot_tkip(common);
else
idx = ath_reserve_key_cache_slot(common);
if (idx < 0)
mac = NULL; /* no free key cache entries */
}
if (!mac) {
/* For now, use the default keys for broadcast keys. This may /* For now, use the default keys for broadcast keys. This may
* need to change with virtual interfaces. */ * need to change with virtual interfaces. */
idx = key->keyidx; idx = key->keyidx;
}
} else if (key->keyidx) { } else if (key->keyidx) {
if (WARN_ON(!sta)) if (WARN_ON(!sta))
return -EOPNOTSUPP; return -EOPNOTSUPP;
......
...@@ -831,7 +831,6 @@ struct ieee80211_key_conf { ...@@ -831,7 +831,6 @@ struct ieee80211_key_conf {
u8 iv_len; u8 iv_len;
u8 hw_key_idx; u8 hw_key_idx;
u8 flags; u8 flags;
u8 *ap_addr;
s8 keyidx; s8 keyidx;
u8 keylen; u8 keylen;
u8 key[0]; u8 key[0];
......
...@@ -140,7 +140,6 @@ static void ieee80211_key_enable_hw_accel(struct ieee80211_key *key) ...@@ -140,7 +140,6 @@ static void ieee80211_key_enable_hw_accel(struct ieee80211_key *key)
struct ieee80211_sub_if_data, struct ieee80211_sub_if_data,
u.ap); u.ap);
key->conf.ap_addr = sdata->dev->dev_addr;
ret = drv_set_key(key->local, SET_KEY, sdata, sta, &key->conf); ret = drv_set_key(key->local, SET_KEY, sdata, sta, &key->conf);
if (!ret) { if (!ret) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment