The branch main has been updated by adrian:

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

commit 774543072db4949a4177ad4bbdac9fb712bc86f6
Author:     Adrian Chadd <[email protected]>
AuthorDate: 2026-05-28 19:49:31 +0000
Commit:     Adrian Chadd <[email protected]>
CommitDate: 2026-05-28 19:50:12 +0000

    LinuxKPI: migrate key data access to functions
    
    * Migrate the k->wk_key and k->wk_keylen access to the new crypto methods
      in net80211
    * don't use ic_miclen, use the tx/rx mic len methods
    * don't use wk_txmic and wk_rxmic, use the tx/rx mic data methods
    
    This is in preparation to support GTK/IGTK keys and > 128 bit keys.
    
    Reviewed by:    bz
    Differential Revision:  https://reviews.freebsd.org/D54485
---
 sys/compat/linuxkpi/common/src/linux_80211.c | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c 
b/sys/compat/linuxkpi/common/src/linux_80211.c
index cade61e8446f..901c59702840 100644
--- a/sys/compat/linuxkpi/common/src/linux_80211.c
+++ b/sys/compat/linuxkpi/common/src/linux_80211.c
@@ -1607,12 +1607,13 @@ lkpi_iv_key_set(struct ieee80211vap *vap, const struct 
ieee80211_key *k)
        }
        sta = LSTA_TO_STA(lsta);
 
-       keylen = k->wk_keylen;
+       keylen = ieee80211_crypto_get_key_len(k);
        lcipher = lkpi_net80211_to_l80211_cipher_suite(
-           k->wk_cipher->ic_cipher, k->wk_keylen);
+           k->wk_cipher->ic_cipher, ieee80211_crypto_get_key_len(k));
        switch (lcipher) {
        case WLAN_CIPHER_SUITE_TKIP:
-               keylen += 2 * k->wk_cipher->ic_miclen;
+               keylen += ieee80211_crypto_get_key_txmic_len(k);
+               keylen += ieee80211_crypto_get_key_rxmic_len(k);
                break;
        case WLAN_CIPHER_SUITE_CCMP:
        case WLAN_CIPHER_SUITE_GCMP:
@@ -1643,8 +1644,9 @@ lkpi_iv_key_set(struct ieee80211vap *vap, const struct 
ieee80211_key *k)
        kc->hw_key_idx = /* set by hw and needs to be passed for TX */;
 #endif
        atomic64_set(&kc->tx_pn, k->wk_keytsc);
-       kc->keylen = k->wk_keylen;
-       memcpy(kc->key, k->wk_key, k->wk_keylen);
+       kc->keylen = ieee80211_crypto_get_key_len(k);
+       memcpy(kc->key, ieee80211_crypto_get_key_data(k),
+           ieee80211_crypto_get_key_len(k));
 
        if (k->wk_flags & (IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV))
                kc->flags |= IEEE80211_KEY_FLAG_PAIRWISE;
@@ -1656,8 +1658,12 @@ lkpi_iv_key_set(struct ieee80211vap *vap, const struct 
ieee80211_key *k)
 
        switch (kc->cipher) {
        case WLAN_CIPHER_SUITE_TKIP:
-               memcpy(kc->key + NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY, 
k->wk_txmic, k->wk_cipher->ic_miclen);
-               memcpy(kc->key + NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY, 
k->wk_rxmic, k->wk_cipher->ic_miclen);
+               memcpy(kc->key + NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY,
+                   ieee80211_crypto_get_key_txmic_data(k),
+                   ieee80211_crypto_get_key_txmic_len(k));
+               memcpy(kc->key + NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY,
+                   ieee80211_crypto_get_key_rxmic_data(k),
+                   ieee80211_crypto_get_key_rxmic_len(k));
                break;
        case WLAN_CIPHER_SUITE_CCMP:
        case WLAN_CIPHER_SUITE_GCMP:
@@ -5531,10 +5537,10 @@ lkpi_hw_crypto_prepare_tkip(struct ieee80211_key *k,
         * "enmic" (though we do not do that).
         */
        /* any conditions to not apply this? */
-       if (skb_tailroom(skb) < k->wk_cipher->ic_miclen)
+       if (skb_tailroom(skb) < ieee80211_crypto_get_key_txmic_len(k))
                return (ENOBUFS);
 
-       p = skb_put(skb, k->wk_cipher->ic_miclen);
+       p = skb_put(skb, ieee80211_crypto_get_key_txmic_len(k));
        if ((kc->flags & IEEE80211_KEY_FLAG_PUT_MIC_SPACE) != 0)
                goto encrypt;
 

Reply via email to