Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+3 −25
Original line number Original line Diff line number Diff line
@@ -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,
	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;
+0 −1
Original line number Original line Diff line number Diff line
@@ -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];
+0 −1
Original line number Original line Diff line number Diff line
@@ -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) {