forked from Minki/linux
Revert "ath9k: Group Key fix for VAPs"
This reverts commit 03ceedea97
.
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: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
617f3d0d71
commit
3dc3fc52ea
@ -752,7 +752,6 @@ static int ath_key_config(struct ath_common *common,
|
||||
struct ath_hw *ah = common->ah;
|
||||
struct ath9k_keyval hk;
|
||||
const u8 *mac = NULL;
|
||||
u8 gmac[ETH_ALEN];
|
||||
int ret = 0;
|
||||
int idx;
|
||||
|
||||
@ -776,30 +775,9 @@ static int ath_key_config(struct ath_common *common,
|
||||
memcpy(hk.kv_val, key->key, key->keylen);
|
||||
|
||||
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
|
||||
* need to change with virtual interfaces. */
|
||||
idx = key->keyidx;
|
||||
}
|
||||
/* For now, use the default keys for broadcast keys. This may
|
||||
* need to change with virtual interfaces. */
|
||||
idx = key->keyidx;
|
||||
} else if (key->keyidx) {
|
||||
if (WARN_ON(!sta))
|
||||
return -EOPNOTSUPP;
|
||||
|
@ -831,7 +831,6 @@ struct ieee80211_key_conf {
|
||||
u8 iv_len;
|
||||
u8 hw_key_idx;
|
||||
u8 flags;
|
||||
u8 *ap_addr;
|
||||
s8 keyidx;
|
||||
u8 keylen;
|
||||
u8 key[0];
|
||||
|
@ -140,7 +140,6 @@ static void ieee80211_key_enable_hw_accel(struct ieee80211_key *key)
|
||||
struct ieee80211_sub_if_data,
|
||||
u.ap);
|
||||
|
||||
key->conf.ap_addr = sdata->dev->dev_addr;
|
||||
ret = drv_set_key(key->local, SET_KEY, sdata, sta, &key->conf);
|
||||
|
||||
if (!ret) {
|
||||
|
Loading…
Reference in New Issue
Block a user