]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: wlcore: Add support for IGTK key
authorPeter Åstrand <astrand@lysator.liu.se>
Fri, 16 Jan 2026 17:58:58 +0000 (18:58 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 19 Jan 2026 09:17:03 +0000 (10:17 +0100)
This change re-applies commit 2b7aadd3b9e1 ("wlcore: Adding suppoprt for IGTK key in
wlcore driver") (sic), but only enables WLAN_CIPHER_SUITE_AES_CMAC with modern
firmware. This patch is required to support WPA3 connections.

Signed-off-by: Peter Åstrand <astrand@lysator.liu.se>
Link: https://patch.msgid.link/0d3df7ab-6c41-c3cc-83cc-5ba55fe4e4bd@lysator.liu.se
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/ti/wlcore/cmd.h
drivers/net/wireless/ti/wlcore/main.c

index d16afb35f9eea4d0fd28c4a6097300fd858eee45..f8160f372bc7fcc823d51fa8211329236b14c802 100644 (file)
@@ -455,6 +455,7 @@ enum wl1271_cmd_key_type {
        KEY_TKIP = 2,
        KEY_AES  = 3,
        KEY_GEM  = 4,
+       KEY_IGTK = 5,
 };
 
 struct wl1271_cmd_set_keys {
index 12f0167d7380eed95bd2584ad8d4e9f8c7c36437..dce79bce2e3f8536afee11244f626e2de48f221d 100644 (file)
@@ -2419,6 +2419,11 @@ power_off:
        strscpy(wiphy->fw_version, wl->chip.fw_ver_str,
                sizeof(wiphy->fw_version));
 
+       /* WLAN_CIPHER_SUITE_AES_CMAC must be last in cipher_suites;
+          support only with firmware 8.9.1 and newer */
+       if (wl->chip.fw_ver[FW_VER_MAJOR] < 1)
+               wl->hw->wiphy->n_cipher_suites--;
+
        /*
         * Now we know if 11a is supported (info from the NVS), so disable
         * 11a channels if not supported
@@ -3585,6 +3590,9 @@ int wlcore_set_key(struct wl1271 *wl, enum set_key_cmd cmd,
        case WL1271_CIPHER_SUITE_GEM:
                key_type = KEY_GEM;
                break;
+       case WLAN_CIPHER_SUITE_AES_CMAC:
+               key_type = KEY_IGTK;
+               break;
        default:
                wl1271_error("Unknown key algo 0x%x", key_conf->cipher);
 
@@ -6196,6 +6204,7 @@ static int wl1271_init_ieee80211(struct wl1271 *wl)
                WLAN_CIPHER_SUITE_TKIP,
                WLAN_CIPHER_SUITE_CCMP,
                WL1271_CIPHER_SUITE_GEM,
+               WLAN_CIPHER_SUITE_AES_CMAC,
        };
 
        /* The tx descriptor buffer */