]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
AP: Add spp_amsdu configuration parameter
authorDaniel Gabay <daniel.gabay@intel.com>
Tue, 7 Jan 2025 12:51:44 +0000 (14:51 +0200)
committerJouni Malinen <j@w1.fi>
Sun, 26 Jan 2025 16:57:01 +0000 (18:57 +0200)
Add spp_amsdu (Signaling and Payload Protected A-MSDU) configuration
parameter for hostapd. This functionality depends on the driver
indicating support for it and CCMP/GCMP cipher suite being used. For the
time being, this functionality is disabled by default (spp_amsdu=0) to
avoid introducing known interoperability issues with the RSNXE in the
default configuration and since there has been quite minimal
interoperability testing of SPP A-MSDU so far.

Signed-off-by: Daniel Gabay <daniel.gabay@intel.com>
hostapd/config_file.c
hostapd/hostapd.conf
src/ap/ap_config.c
src/ap/ap_config.h

index a9d13f72a7964e94a07c86c0601e8c475d2b9c8e..78a61fb4393cda9d0940fe8d10c26d98184c1b68 100644 (file)
@@ -3707,6 +3707,8 @@ static int hostapd_config_fill(struct hostapd_config *conf,
                bss->rsn_override_mfp = atoi(pos);
        } else if (os_strcmp(buf, "rsn_override_mfp_2") == 0) {
                bss->rsn_override_mfp_2 = atoi(pos);
+       } else if (os_strcmp(buf, "spp_amsdu") == 0) {
+               bss->spp_amsdu = !!atoi(pos);
        } else if (os_strcmp(buf, "group_mgmt_cipher") == 0) {
                if (os_strcmp(pos, "AES-128-CMAC") == 0) {
                        bss->group_mgmt_cipher = WPA_CIPHER_AES_128_CMAC;
index 0d7310d17c39c548b9c1508081d7669c16af1089..3b53d2b2db603b5c9a416560d26a45d207e835fe 100644 (file)
@@ -2033,6 +2033,12 @@ own_ip_addr=127.0.0.1
 # 1 = enabled
 #beacon_prot=0
 
+# SPP (Signaling and Payload Protected) A-MSDU.
+# This depends on driver support and CCMP/GCMP cipher suite being used.
+# 0 = disabled (default)
+# 1 = enabled if driver indicates support for this
+#spp_amsdu=1
+
 # Association SA Query maximum timeout (in TU = 1.024 ms; for MFP)
 # (maximum time to wait for a SA Query response)
 # dot11AssociationSAQueryMaximumTimeout, 1...4294967295
index a68454c01a934f1ad0ccf2f951d25392e914e278..2bae39e67cdab20904f9013bac397a9c942e639c 100644 (file)
@@ -1526,6 +1526,13 @@ static int hostapd_config_check_bss(struct hostapd_bss_config *bss,
                return -1;
        }
 
+       /* Do not advertise SPP A-MSDU support if not using CCMP/GCMP */
+       if (full_config && bss->spp_amsdu &&
+           !(bss->wpa &&
+             bss->rsn_pairwise & (WPA_CIPHER_CCMP_256 | WPA_CIPHER_CCMP |
+                                  WPA_CIPHER_GCMP_256 | WPA_CIPHER_GCMP)))
+               bss->spp_amsdu = false;
+
        return 0;
 }
 
index 3d039d0e8be602c642578ea77b94abe586f9c206..d056c60e35cb69352a949b36a9b4b0f75156aca6 100644 (file)
@@ -996,6 +996,8 @@ struct hostapd_bss_config {
 #endif /* CONFIG_TESTING_OPTIONS */
 #endif /* CONFIG_IEEE80211BE */
        int mbssid_index;
+
+       bool spp_amsdu;
 };
 
 /**