aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Chadd <adrian@FreeBSD.org>2026-02-26 03:49:27 +0000
committerAdrian Chadd <adrian@FreeBSD.org>2026-02-26 03:49:27 +0000
commita54a36c40f07092ace706ccec8c3db6f6a1877c1 (patch)
tree25acda7d7f630f48ab644228dd4a6397b2ceb816
parent25e89051df7ace23ae4953c21402e568cfce78b4 (diff)
ath: migrate to new net80211 encryption key API
Migrate to the new encryption key API rather than poking at the key struct directly. Differential Revision: https://reviews.freebsd.org/D54479
-rw-r--r--sys/dev/ath/if_ath_keycache.c34
1 files changed, 25 insertions, 9 deletions
diff --git a/sys/dev/ath/if_ath_keycache.c b/sys/dev/ath/if_ath_keycache.c
index a58625ad2803..2b40a8940674 100644
--- a/sys/dev/ath/if_ath_keycache.c
+++ b/sys/dev/ath/if_ath_keycache.c
@@ -134,12 +134,16 @@ ath_keyset_tkip(struct ath_softc *sc, const struct ieee80211_key *k,
* TX key goes at first index, RX key at the rx index.
* The hal handles the MIC keys at index+64.
*/
- memcpy(hk->kv_mic, k->wk_txmic, sizeof(hk->kv_mic));
+ memcpy(hk->kv_mic,
+ ieee80211_crypto_get_key_txmic_data(k),
+ sizeof(hk->kv_mic));
KEYPRINTF(sc, k->wk_keyix, hk, zerobssid);
if (!ath_hal_keyset(ah, k->wk_keyix, hk, zerobssid))
return 0;
- memcpy(hk->kv_mic, k->wk_rxmic, sizeof(hk->kv_mic));
+ memcpy(hk->kv_mic,
+ ieee80211_crypto_get_key_rxmic_data(k),
+ sizeof(hk->kv_mic));
KEYPRINTF(sc, k->wk_keyix+32, hk, mac);
/* XXX delete tx key on failure? */
return ath_hal_keyset(ah, k->wk_keyix+32, hk, mac);
@@ -149,8 +153,12 @@ ath_keyset_tkip(struct ath_softc *sc, const struct ieee80211_key *k,
* slot, just set key at the first index; the hal
* will handle the rest.
*/
- memcpy(hk->kv_mic, k->wk_rxmic, sizeof(hk->kv_mic));
- memcpy(hk->kv_txmic, k->wk_txmic, sizeof(hk->kv_txmic));
+ memcpy(hk->kv_mic,
+ ieee80211_crypto_get_key_rxmic_data(k),
+ sizeof(hk->kv_mic));
+ memcpy(hk->kv_txmic,
+ ieee80211_crypto_get_key_txmic_data(k),
+ sizeof(hk->kv_txmic));
KEYPRINTF(sc, k->wk_keyix, hk, mac);
return ath_hal_keyset(ah, k->wk_keyix, hk, mac);
}
@@ -160,13 +168,19 @@ ath_keyset_tkip(struct ath_softc *sc, const struct ieee80211_key *k,
* NB: must pass MIC key in expected location when
* the keycache only holds one MIC key per entry.
*/
- memcpy(hk->kv_mic, k->wk_txmic, sizeof(hk->kv_txmic));
+ memcpy(hk->kv_mic,
+ ieee80211_crypto_get_key_txmic_data(k),
+ sizeof(hk->kv_txmic));
} else
- memcpy(hk->kv_txmic, k->wk_txmic, sizeof(hk->kv_txmic));
+ memcpy(hk->kv_txmic,
+ ieee80211_crypto_get_key_txmic_data(k),
+ sizeof(hk->kv_txmic));
KEYPRINTF(sc, k->wk_keyix, hk, mac);
return ath_hal_keyset(ah, k->wk_keyix, hk, mac);
} else if (k->wk_flags & IEEE80211_KEY_RECV) {
- memcpy(hk->kv_mic, k->wk_rxmic, sizeof(hk->kv_mic));
+ memcpy(hk->kv_mic,
+ ieee80211_crypto_get_key_rxmic_data(k),
+ sizeof(hk->kv_mic));
KEYPRINTF(sc, k->wk_keyix, hk, mac);
return ath_hal_keyset(ah, k->wk_keyix, hk, mac);
}
@@ -210,8 +224,10 @@ ath_keyset(struct ath_softc *sc, struct ieee80211vap *vap,
KASSERT(cip->ic_cipher < nitems(ciphermap),
("invalid cipher type %u", cip->ic_cipher));
hk.kv_type = ciphermap[cip->ic_cipher];
- hk.kv_len = k->wk_keylen;
- memcpy(hk.kv_val, k->wk_key, k->wk_keylen);
+ hk.kv_len = ieee80211_crypto_get_key_len(k);
+ memcpy(hk.kv_val,
+ ieee80211_crypto_get_key_data(k),
+ ieee80211_crypto_get_key_len(k));
} else
hk.kv_type = HAL_CIPHER_CLR;