Revert "ath9k: Group Key fix for VAPs"
authorJohn W. Linville <linville@tuxdriver.com>
Mon, 24 May 2010 17:36:37 +0000 (13:36 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 24 May 2010 18:59:27 +0000 (14:59 -0400)
This reverts commit 03ceedea972a82d343fa5c2528b3952fa9e615d5.

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>
drivers/net/wireless/ath/ath9k/main.c
include/net/mac80211.h
net/mac80211/key.c

index 893b552..abfa049 100644 (file)
@@ -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;
index 5be900d..e24b036 100644 (file)
@@ -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];
index 8d4b417..e8f6e3b 100644 (file)
@@ -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) {