git: a54a36c40f07 - main - ath: migrate to new net80211 encryption key API

From: Adrian Chadd <adrian_at_FreeBSD.org>
Date: Thu, 26 Feb 2026 03:56:19 UTC
The branch main has been updated by adrian:

URL: https://cgit.FreeBSD.org/src/commit/?id=a54a36c40f07092ace706ccec8c3db6f6a1877c1

commit a54a36c40f07092ace706ccec8c3db6f6a1877c1
Author:     Adrian Chadd <adrian@FreeBSD.org>
AuthorDate: 2026-02-26 03:49:27 +0000
Commit:     Adrian Chadd <adrian@FreeBSD.org>
CommitDate: 2026-02-26 03:49:27 +0000

    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
---
 sys/dev/ath/if_ath_keycache.c | 34 +++++++++++++++++++++++++---------
 1 file 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;