/*
* Short SSID calculation is identical to FCS and it is defined in
- * IEEE P802.11-REVmd/D3.0, 9.4.2.170.3 (Calculating the Short-SSID).
+ * IEEE Std 802.11-2024, 9.4.2.169.3 (Calculating the Short-SSID).
*/
conf->ssid.short_ssid = ieee80211_crc32(conf->ssid.ssid,
conf->ssid.ssid_len);
struct ieee80211_mgmt *resp;
/*
- * IEEE 802.11-REVma/D9.0 - 7.3.1.11
+ * IEEE Std 802.11-2020, 10.28.4 (Response to an invalid Action
+ * and Action No Ack frame)
* Return the Action frame to the source without change
* except that MSB of the Category set to 1.
*/
u8 bw;
/* bandwidth: 0: 40, 1: 80, 160, 80+80, 4 to 255 reserved as per
- * IEEE P802.11-REVme/D7.0, 9.4.2.159 and Table 9-316.
+ * IEEE Std 802.11-2024, 9.4.2.156 and Table 9-316 (VHT Operation
+ * Information subfields).
*/
switch (hapd->cs_freq_params.bandwidth) {
case 320:
/* fallthrough */
case 160:
/* Update the CCFS0 and CCFS1 values in the element based on
- * IEEE P802.11-REVme/D7.0, Table 9-316
+ * IEEE Std 802.11-2024, Table 9-316 (VHT Operation
+ * Information subfields).
*/
/* CCFS1 - The channel center frequency index of the 160 MHz
#endif /* CONFIG_SAE */
const u8 *pos = mgmt->u.auth.variable;
- /* Skip fixed fields as based on IEE P802.11-REVme/D3.0, Table 9-69
+ /* Skip fixed fields as based on IEEE Std 802.11-2024, Table 9-71
* (Presence of fields and elements in Authentications frames) */
switch (auth_alg) {
case WLAN_AUTH_OPEN:
if (ht) {
bssid_info |= NEI_REP_BSSID_INFO_HT |
NEI_REP_BSSID_INFO_DELAYED_BA;
-
- /* VHT bit added in IEEE P802.11-REVmc/D4.3 */
if (vht)
bssid_info |= NEI_REP_BSSID_INFO_VHT;
}
/*
* Wide Bandwidth Channel subelement may be needed to allow the
- * receiving STA to send packets to the AP. See IEEE P802.11-REVmc/D5.0
- * Figure 9-301.
+ * receiving STA to send packets to the AP. See IEEE Std 802.11-2024,
+ * Figure 9-423 (Wide Bandwidth Channel subelement format).
*/
wpabuf_put_u8(nr, WNM_NEIGHBOR_WIDE_BW_CHAN);
wpabuf_put_u8(nr, 3);
if (!hapd->range_req_token) /* For wraparounds */
hapd->range_req_token++;
- /* IEEE P802.11-REVmc/D5.0, 9.6.7.2 */
+ /* IEEE Std 802.11-2024, 9.6.6.2 (Radio Measurement Request frame
+ * format) */
wpabuf_put_u8(buf, WLAN_ACTION_RADIO_MEASUREMENT);
wpabuf_put_u8(buf, WLAN_RRM_RADIO_MEASUREMENT_REQUEST);
wpabuf_put_u8(buf, hapd->range_req_token); /* Dialog Token */
wpabuf_put_le16(buf, 0); /* Number of Repetitions */
- /* IEEE P802.11-REVmc/D5.0, 9.4.2.21 */
+ /* IEEE Std 802.11-2024, 9.4.2.19 (Measurement Request element) */
wpabuf_put_u8(buf, WLAN_EID_MEASURE_REQUEST);
len = wpabuf_put(buf, 1); /* Length will be set later */
wpabuf_put_u8(buf, 0); /* Measurement Request Mode */
wpabuf_put_u8(buf, MEASURE_TYPE_FTM_RANGE); /* Measurement Type */
- /* IEEE P802.11-REVmc/D5.0, 9.4.2.21.19 */
+ /* IEEE Std 802.11-2024, 9.4.2.19.19 (FTM Range request) */
wpabuf_put_le16(buf, random_interval); /* Randomization Interval */
wpabuf_put_u8(buf, min_ap); /* Minimum AP Count */
static int pasn_test_pasn_auth(void)
{
- /* Test vector taken from IEEE P802.11az/D2.6, J.12 */
+ /* Test vector taken from IEEE Std 802.11-2024,
+ * J.12 (PASN Test Vectors) */
const u8 pmk[] = {
0xde, 0xf4, 0x3e, 0x55, 0x67, 0xe0, 0x1c, 0xa6,
0x64, 0x92, 0x65, 0xf1, 0x9a, 0x29, 0x0e, 0xef,
static int pasn_test_no_pasn_auth(void)
{
- /* Test vector taken from IEEE P802.11az/D2.6, J.13 */
+ /* Test vector taken from IEEE Std 802.11-2024,
+ * J.13 (KDK Test Vectors when PASN authentication is not used) */
const u8 pmk[] = {
0xde, 0xf4, 0x3e, 0x55, 0x67, 0xe0, 0x1c, 0xa6,
0x64, 0x92, 0x65, 0xf1, 0x9a, 0x29, 0x0e, 0xef,
#define WLAN_PA_FILS_DISCOVERY 34
#define WLAN_PA_LOCATION_MEASUREMENT_REPORT 47
-/* HT Action field values (IEEE P802.11-REVme/D4.0, 9.6.11.1, Table 9-491) */
+/* HT Action field values (IEEE Std 802.11-2024, 9.6.11.1, Table 9-517) */
#define WLAN_HT_ACTION_NOTIFY_CHANWIDTH 0
#define WLAN_HT_ACTION_SMPS 1
#define WLAN_HT_ACTION_CSI 4
#define WLAN_HT_ACTION_COMPRESSED_BF 6
#define WLAN_HT_ACTION_ASEL_IDX_FEEDBACK 7
-/* VHT Action field values (IEEE P802.11-REVme/D4.0, 9.6.22.1, Table 9-579) */
+/* VHT Action field values (IEEE Std 802.11-2024, 9.6.22.1, Table 9-605) */
#define WLAN_VHT_ACTION_COMPRESSED_BF 0
#define WLAN_VHT_ACTION_GROUP_ID_MGMT 1
#define WLAN_VHT_ACTION_OPMODE_NOTIF 2
/**
* enum he_reg_info_6ghz_ap_type - Allowed Access Point types for 6 GHz Band
*
- * IEEE P802.11-REVme/D4.0, Table E-12 (Regulatory Info subfield encoding)
+ * IEEE Std 802.11-2024, Table E-12 (Regulatory Info subfield interpretation by
+ * non-AP STAs with dot11ExtendedRegInfoSupport not set to true)
*/
enum he_reg_info_6ghz_ap_type {
HE_REG_INFO_6GHZ_AP_TYPE_INDOOR = 0,
* @akmp: Authentication and key management protocol
* @cipher: The cipher suite
*
- * According to IEEE P802.11az/D2.7, 12.12.7, the hash algorithm to use is the
- * hash algorithm defined for the Base AKM (see Table 9-151 (AKM suite
+ * According to IEEE Std 802.11-2024, 12.13.8 (PTKSA derivation with PASN
+ * authentication), the hash algorithm to use is the
+ * hash algorithm defined for the Base AKM (see Table 9-190 (AKM suite
* selectors)). When there is no Base AKM, the hash algorithm is selected based
* on the pairwise cipher suite provided in the RSNE by the AP in the second
* PASN frame. SHA-256 is used as the hash algorithm, except for the ciphers
struct wpabuf *fte_buf;
};
-/* IEEE P802.11az/D2.6 - 9.4.2.303 PASN Parameters element */
+/* IEEE Std 802.11-2024 - 9.4.2.305 PASN Parameters element */
#define WPA_PASN_CTRL_COMEBACK_INFO_PRESENT BIT(0)
#define WPA_PASN_CTRL_GROUP_AND_KEY_PRESENT BIT(1)
const u8 *data;
/*
- * Neighbor Report element (IEEE P802.11-REVmc/D5.0)
+ * Neighbor Report element (IEEE Std 802.11-2024, 9.4.2.35)
* BSSID[6]
* BSSID Information[4]
* Operating Class[1]
}
if (lci) {
- /* IEEE P802.11-REVmc/D5.0 9.4.2.21 */
+ /* IEEE Std 802.11-2024, 9.4.2.19 (Measurement Request element)
+ */
wpabuf_put_u8(buf, WLAN_EID_MEASURE_REQUEST);
wpabuf_put_u8(buf, MEASURE_REQUEST_LCI_LEN);
wpabuf_put_u8(buf, 0); /* Measurement Request Mode */
wpabuf_put_u8(buf, MEASURE_TYPE_LCI); /* Measurement Type */
- /* IEEE P802.11-REVmc/D5.0 9.4.2.21.10 - LCI request */
+ /* IEEE Std 802.11-2024, 9.4.2.19.10 (LCI request) */
/* Location Subject */
wpabuf_put_u8(buf, LOCATION_SUBJECT_REMOTE);
/* Optional Subelements */
/*
- * IEEE P802.11-REVmc/D5.0 Figure 9-170
+ * IEEE Std 802.11-2024, Figure 9-265 (Maximum Age subelement
+ * format)
* The Maximum Age subelement is required, otherwise the AP can
* send only data that was determined after receiving the
* request. Setting it here to unlimited age.
}
if (civic) {
- /* IEEE P802.11-REVmc/D5.0 9.4.2.21 */
+ /* IEEE Std 802.11-2024, 9.4.2.19 (Measurement Request element)
+ */
wpabuf_put_u8(buf, WLAN_EID_MEASURE_REQUEST);
wpabuf_put_u8(buf, MEASURE_REQUEST_CIVIC_LEN);
/* Measurement Type */
wpabuf_put_u8(buf, MEASURE_TYPE_LOCATION_CIVIC);
- /* IEEE P802.11-REVmc/D5.0 9.4.2.21.14:
- * Location Civic request */
+ /* IEEE Std 802.11-2024, 9.4.2.19.14 (Location Civic request) */
/* Location Subject */
wpabuf_put_u8(buf, LOCATION_SUBJECT_REMOTE);
wpabuf_put_u8(buf, 0); /* Civic Location Type: IETF RFC 4776 */
wpabuf_put_data(buf, target_bssid, ETH_ALEN);
} else if (status == WNM_BSS_TM_ACCEPT) {
/*
- * P802.11-REVmc clarifies that the Target BSSID field is always
- * present when status code is zero, so use a fake value here if
- * no BSSID is yet known.
+ * IEEE Std 802.11-2024, 9.6.13.10 (BSS Transition Management
+ * Response frame format) clarifies that the Target BSSID field
+ * is always present when status code is zero, so use a fake
+ * value here if no BSSID is yet known.
*/
wpabuf_put_data(buf, "\0\0\0\0\0\0", ETH_ALEN);
}