[wpa_supplicant] cumilative patch from commit 92374d59d
This merge is done mainly to support RSNE overriding for STA.
Bug: 348669010
Bug: 355076858
Test: Connect to open, WPA2, WPA3 and OWE
Test: Establish P2P connection
Test: Basic SoftAp tests
Test: Ran above tests on Pixel6
Test: Regression test (b/355078233)
BYPASS_INCLUSIVE_LANGUAGE_REASON=Merged from open source
92374d59d Enhance select_network() to trigger new scans in some cases
ff99012d8 RSNO: Use correct MLO capability while fetching RSNE/RSNXE
526ea193c Fallback to RSNXE when AP is not using valid RSN Overrding
4417b5ba8 Add QCA vendor interface to support Unsynchronized Service Discovery
765c48d5a RSNE/RSNXE overriding for STA
d0b55eb36 Make driver capabilities for AKM suites available within wpa_supplicant
5488e120d Use helper functions to access RSNE/RSNXE from BSS entries
341bcb2b5 nl80211: Add a capability flag for RSN overriding
6fad7224b Add QCA vendor feature flags to indicate RSN override elements support
157b01638 RSNE/RSNXE overriding for AP
b8a2d11ae Allow RSNXE Override element to override RSNXE contents during parsing
48ca68f6f Allow RSNE Override element to override RSNE contents during parsing
c16ac89be Add RSN overriding elements into IE parsing
6b0ce29d2 Define WFA vendor specific element types for RSNE/RSNXE overriding
e99cdfae4 The main branch is now used for v2.12 development
d945ddd36 Preparations for v2.11 release
aa2dfae5e dbus: Fix memory leak with Bonjour params for a P2P UPnP service
70e5bad56 dbus: Fix SignalChange property
ed5887a8c Move NULL check for driver private data (drv_priv)
c3d305d93 FT: Fix FTE MIC calculation with fragmented FTE
e7172e26d MLD STA: Find partner links by BSSID and SSID
816e22bba hostapd: Fix opclass during CSA with DFS channels
93a3c59ad Multi-AP: Honor wds_sta even with multi_ap
7d51bf2ab SAE: Drop default dot11RSNASAESync value from 5 to 3
5da59ff1c SAE: Disable protocol instance temporarily on sync error in mesh
7b8517d19 nl80211: Fix AP scan with STA fallback error path
6ad59779c nl80211: NAN: Register multicast action frames if possible
92829d8be NAN: Reject undefined publish type
44f20382c NAN: Fix a typo in USD doc
7c935eef3 nl80211: AP MLD: Reassign drv->ctx correctly to prevent hostapd crash
102365453 Make Beacon frame checks less frequent for SSID verification
fcf799c0d wpa_supplicant: Do not select a rejected SAE group
5f83f4db0 Add int_array_includes()
094e188f8 wpa_supplicant: Always clear SAE rejected groups on roaming to another BSS
627b67f29 ACS: Fix primary channel puncturing in ACS
be2ac9291 ACS: Fix ACS behavior for channel selection
83cfeb890 ACS: Update ACS documentation
cb91ef256 MLO: Swap Tx/Rx keys for GTK TKIP Michael MIC in MLO GTK KDE
7d314d6bd Fix channel switch without 'ht' for HE and EHT modes in 2.4 GHz band
99e82880e Fix mesh 6 GHz incorrect channel bandwidth
5452a4a30 SSID verification based on beacon protection
89b164138 BSS: Add wpa_bss_get_ie_beacon()
7436b5b01 Indicate if BIGTK has been set in STATUS output
c6f394b88 Indicate if SSID has been verified in STATUS output
b745cd33e PASN: Derive KDK on AP only when both ends support SecureLTF
e5f76b915 dbus: Fix error path in scan request handling
58b275955 trace: Only permit explicit prefix matching for functions
49344db09 trace: Use strncmp() to match function names
ac15b79fe PMKSA: Guard against NULL KCK for memcpy()
7bcede06e MLD: Ensure link_bssid array has space for sentinel
cf3883f3d MLD: Ensure link BSSIDs remain on stack for ignore
9f0429c9e dbus: Make sure ServiceDiscoveryRequest/Result does not override pointers
d22401d89 dbus: Fix memory leak in case dbus provides 'tlvs' in invalid P2P SD response
0c2d8417c dbus: Fix memory leak in case dbus provides tlv in P2P UPnP SD request
3b4f12708 nl80211: Use actual number of supported AKMs for AP setup
8f69e538a SecureLTF: Work around misbehaving STAs for PTK derivation without KDK
438a27b36 Do not derive SAE PT if the network profile does not include SAE
61eb89d5f nl80211: AP MLD: Parse link ID to determine the BSS for color event
5d16ad9ab nl80211: Refactor color collision related nl80211 commands handling
22a592d11 hostapd: Fix updating Beacon frames during association handling
9716bf116 SAE: Reject invalid Rejected Groups element in the parser
593a7c2f8 SAE: Check for invalid Rejected Groups element length explicitly on STA
5f98c853e nl80211: Send link ID with NL80211_CMD_TDLS_MGMT to enable TDLS with MLO
f302d9f96 RADIUS: Check Message-Authenticator if it is present even if not required
58097123e RADIUS: Require Message-Authenticator attribute in MAC ACL cases
934b0c3a4 Require Message-Authenticator in Access-Reject even without EAP-Message
f54157077 RADIUS DAS: Move Message-Authenticator attribute to be the first one
37fe8e48a hostapd: Move Message-Authenticator attribute to be the first one in req
689a24826 eapol_test: Move Message-Authenticator attribute to be the first one
54abb0d3c RADIUS server: Place Message-Authenticator attribute as the first one
adac846bd RADIUS: Allow Message-Authenticator attribute as the first attribute
d944ef1c0 SAE: Clear rejected groups list on completing authentication
0ab009db3 SAE: Clear rejected groups list on continuous failures
21fe04281 SAE: Clear peer_rejected_groups when no element is included
364c2da87 SAE: Check for invalid Rejected Groups element length explicitly
c9db4925f Vendor attribute to configure STA to follow AP preference for candidates
0cb42655f Vendor command extension for Responder PM Mode bit in TWT SET Request
9832f1324 Add vendor flag to indicate unavailability mode in TWT responder mode
761041b18 SAE: Free password identifier if SAE commit is rejected due to it
d97b5c649 Define Link Id attribute for secure ranging context vendor command
2097de2a6 Define Link Id attribute for QCA_NL80211_VENDOR_SUBCMD_PASN
c6e55fb96 Add Link ID for External ACS vendor command
37a289f8b SSID protection in 4-way handshake on AP
dab7549d6 SSID protection in 4-way handshake on STA
9a022cdc7 STA: Update scan results when BSS entry with current SSID is not found
320c4c8f8 AP MLD: Send link id to the driver during color change
ecfe2aa61 Update Beacon frames after color change
5913d1a18 Remove double "on" from debug prints in CCA event callbacks
d8e1a353a hostapd: Add support to change BSS color from the control interface
3e52a90d3 ACS: Handle scan start request failure with error code -EBUSY
3cf7bf68f AP MLD: Fix deferred first link BSS's authentication server init
2829f1c43 wlantest: Initial support for Multiple BSSID procedure
1b96745f1 Add a new QCA vendor attribute to set interface offload type
ffcb7392f Add vendor attributes to detect data stall for consecutive TX no ack
a5ee11e02 Add new traffic type values for flow report vendor attribute
2c89b56d6 WNM: Include BSS max idle period in STATUS command output
58ac46baf WNM: AP configuration to allow BSS max idle period requests
6594ea9ef WNM: Allow a specific BSS max idle period to be requested
6cd023111 WNM: Group rekeying skipping with BSS max idle period management
846b1d618 WNM: Configurable BSS Max Idle Period management on AP
7566370a9 Add QCA vendor attribute to get number of TX/RX packets for each NSS
4c0ea8270 Add vendor attributes to configure TX/RX NSS and chains per band
c484a0fca Add kernel documentation for nss and chain configuration vendor command
cb40986a7 Add QCA vendor attribute for uplink delay jitter
ed56dfc33 P2P: Fix fast IP address allocation for invitation of a persistent group
0ae087994 Add a new QCA vendor attribute to set reduced power scan mode
bd36dc90f AP MLD: Remove unused get_ml_rsn_info callback definition
51b5b9512 Update Probe Response template on BSS color change
6f1fbebeb Update Probe Response template on channel switch
7d0c08910 More generic unsolicited broadcast Probe Response template setup
195cc3d91 Make selection of current opclass more generic for 20 MHz UNI-III channels
b9113105a FILS: Add Operating Class and Primary Channel in FD for non-PSC chan
5929b4eb1 Define QCA vendor commands for flow stats/classification
5308029f8 nl80211: Update link bandwidth when receiving channel switch event
11dfdf64c AP MLD: Set link_id field in hostapd_freq_params when setting up AP
df14f1e2b Add QCA vendor subcommand to suspend/resume AP interface
df5988004 AP MLD: Add MLO Link KDE for each affiliated link in EAPOL-Key 3/4
b26971774 AP MLD: Do not store per-supplicant AP RSNE/RSNXE information
20872d525 AP MLD: Do not store per-supplicant AP link MAC address information
3b68eef7d AP MLD: Do not store per-supplicant AP MLD MAC address information
ed78f56dc Add a vendor attribute value to set aggressive roaming mode
e6ec62aa2 Allow Session-Timeout with PSK RADIUS during 4-way handshake
f44a07d5c wpa_cli: Make WPA_EVENT_CHANNEL_SWITCH events accessible to action scripts
2e1f7d091 Fix center segment indexes in channel switch fallback to non-5 GHz cases
7cf3ceada P2P: Call normal SD query callback on RX/TX race
9b1e0ab4e dbus: Use correct values for persistent group
cf36ffd43 wpa_supplicant: Do not allow fast associate before scanning 6 GHz
ff798fbb8 ctrl_iface: Allow sending ML probe without AP MLD ID
4d2f76fab MLD: Use AP MLD MAC address with deauthenticate
5d9b4a1a1 SME: MLD: Clear MLD state only after the deauthentication
39fefeada SME: MLD: Deauthenticate when failing to parse ML element
6f3e7c5d3 wpa_supplicant: Do not roam to an associated link
2bbe4822a Clear connect_without_scan on network profile removal
b3ad54e46 Check whether to skip a BSS in RNR with a shared helper
de1bfda64 Fix RNR building for co-location and MLO
8d434bf65 AP MLD: Add link details in STATUS command
b1e463374 AP MLD: Link-specific flushing of stations
5e3c2b489 AP MLD: Run authenticator state machine for all links
12acda633 AP MLD: Support group rekeying for MLO
62a8f96e5 AP MLD: Calculate ML KDE length separately for each link
78adbf2c0 AP MLD: Mark GKeyDone completed for STAs in a helper function
e5b49876a AP MLD: Debug print of MLO KDE lengths
84d2a36da AP MLD: Require same AKM and pairwise cipher for all links
8891ebdc1 Use defined values for RSN PN length
3ea7cf11d AP MLD: Enhance authenticator state machine
19fdcf511 AP MLD: Skip association link processing in ML info
4a1197acd AP MLD: Update all partner links' beacons
a51881032 AP MLD: Handle link_id in EAPOL RX handler
eea52c4b5 AP MLD: Handle link_id in EAPOL TX status handler
636530bc2 hostapd: Make hostapd_eapol_tx_status() function static
93d204b1e nl80211: Move control port TX status to per BSS handling
efb484bbc nl80211: Move Management frame TX status to per BSS handling
80864d011 AP MLD/nl80211: Pass ctx in mlme_event_mgmt()
c36ad1150 AP MLD: Use link_id in the get_hapd_bssid() helper function
d9c5d601f AP NLD: Extend support for cohosted ML BSS
3d0cc612f AP MLD: Support cohosted ML BSS
9098535ef AP MLD: Reset authenticator state machine's ML info
866ed6324 Remove the bssid argument from send_auth_reply()
fd1a35e14 AP MLD: Handle authentication and association on link address
e4e772456 AP MLD: Use if/else/endif comments more consistently
9fcc636da nl80211: Restore libnl3-route inclusion for full VLAN support with netlink
61c8cc94f Add a vendor attribute to configure custom keep-alive interval for STA
47d1307d2 Add QCA vendor interface for reporting station info in unicast event
3c79173c3 Add TWT responder support for AP in HT and VHT modes
54b1df85c Add QCA vendor feature flag for TWT responder support in HT and VHT modes
85ea5f349 nl80211: Send link_id on sta_deauth()
62e0c1019 nl80211: Print the interface name in debug during link add
e8764518b nl80211: Generate link add command on per-BSS basis for AP MLD
16aea07e5 AP MLD: Simplify for_each_mld_link() macro
d43eb71da hostapd: Add support for testing Probe Response frame elements
Change-Id: I445ef0fed93ec7d4443ed33751318a46899e61e7
Signed-off-by: Sunil Ravi <sunilravi@google.com>
diff --git a/src/common/ieee802_11_common.c b/src/common/ieee802_11_common.c
index 4de88d1..10f9c4a 100644
--- a/src/common/ieee802_11_common.c
+++ b/src/common/ieee802_11_common.c
@@ -140,6 +140,14 @@
elems->sae_pk = pos + 4;
elems->sae_pk_len = elen - 4;
break;
+ case WFA_RSNE_OVERRIDE_OUI_TYPE:
+ elems->rsne_override = pos;
+ elems->rsne_override_len = elen;
+ break;
+ case WFA_RSNE_OVERRIDE_2_OUI_TYPE:
+ elems->rsne_override_2 = pos;
+ elems->rsne_override_2_len = elen;
+ break;
default:
wpa_printf(MSG_MSGDUMP, "Unknown WFA "
"information element ignored "
@@ -615,6 +623,12 @@
elems->rrm_enabled = pos;
elems->rrm_enabled_len = elen;
break;
+ case WLAN_EID_MULTIPLE_BSSID:
+ if (elen < 1)
+ break;
+ elems->mbssid = pos;
+ elems->mbssid_len = elen;
+ break;
case WLAN_EID_CAG_NUMBER:
elems->cag_number = pos;
elems->cag_number_len = elen;
@@ -1497,8 +1511,6 @@
*op_class = 126;
else if (sec_channel == -1)
*op_class = 127;
- else if (freq <= 5805)
- *op_class = 124;
else
*op_class = 125;
@@ -3130,8 +3142,12 @@
bool ieee802_11_rsnx_capab(const u8 *rsnxe, unsigned int capab)
{
- return ieee802_11_rsnx_capab_len(rsnxe ? rsnxe + 2 : NULL,
- rsnxe ? rsnxe[1] : 0, capab);
+ if (!rsnxe)
+ return false;
+ if (rsnxe[0] == WLAN_EID_VENDOR_SPECIFIC && rsnxe[1] >= 4 + 1)
+ return ieee802_11_rsnx_capab_len(rsnxe + 2 + 4, rsnxe[1] - 4,
+ capab);
+ return ieee802_11_rsnx_capab_len(rsnxe + 2, rsnxe[1], capab);
}
diff --git a/src/common/ieee802_11_common.h b/src/common/ieee802_11_common.h
index 56eb0df..17e0822 100644
--- a/src/common/ieee802_11_common.h
+++ b/src/common/ieee802_11_common.h
@@ -115,6 +115,9 @@
const u8 *tdls_mle;
const u8 *prior_access_mle;
const u8 *mbssid_known_bss;
+ const u8 *mbssid;
+ const u8 *rsne_override;
+ const u8 *rsne_override_2;
u8 ssid_len;
u8 supp_rates_len;
@@ -177,6 +180,9 @@
size_t tdls_mle_len;
size_t prior_access_mle_len;
u8 mbssid_known_bss_len;
+ u8 mbssid_len;
+ size_t rsne_override_len;
+ size_t rsne_override_2_len;
struct mb_ies_info mb_ies;
diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h
index 644bebd..4cc6e41 100644
--- a/src/common/ieee802_11_defs.h
+++ b/src/common/ieee802_11_defs.h
@@ -616,6 +616,7 @@
#define WLAN_RSNX_CAPAB_SECURE_RTT 9
#define WLAN_RSNX_CAPAB_URNM_MFPR_X20 10
#define WLAN_RSNX_CAPAB_URNM_MFPR 15
+#define WLAN_RSNX_CAPAB_SSID_PROTECTION 21
/* Multiple BSSID element subelements */
#define WLAN_MBSSID_SUBELEMENT_NONTRANSMITTED_BSSID_PROFILE 0
@@ -1451,6 +1452,12 @@
#define QM_IE_OUI_TYPE 0x22
#define WFA_CAPA_IE_VENDOR_TYPE 0x506f9a23
#define WFA_CAPA_OUI_TYPE 0x23
+#define WFA_RSNE_OVERRIDE_OUI_TYPE 0x29
+#define WFA_RSNE_OVERRIDE_2_OUI_TYPE 0x2a
+#define WFA_RSNXE_OVERRIDE_OUI_TYPE 0x2b
+#define RSNE_OVERRIDE_IE_VENDOR_TYPE 0x506f9a29
+#define RSNE_OVERRIDE_2_IE_VENDOR_TYPE 0x506f9a2a
+#define RSNXE_OVERRIDE_IE_VENDOR_TYPE 0x506f9a2b
#define MULTI_AP_SUB_ELEM_TYPE 0x06
#define MULTI_AP_PROFILE_SUB_ELEM_TYPE 0x07
diff --git a/src/common/nan_de.c b/src/common/nan_de.c
index e1999a0..12fad31 100644
--- a/src/common/nan_de.c
+++ b/src/common/nan_de.c
@@ -1209,6 +1209,12 @@
return -1;
}
+ if (!params->unsolicited && !params->solicited) {
+ wpa_printf(MSG_INFO,
+ "NAN: Publish() - both unsolicited and solicited disabled is invalid");
+ return -1;
+ }
+
publish_id = nan_de_get_handle(de);
if (publish_id < 1)
return -1;
diff --git a/src/common/qca-vendor.h b/src/common/qca-vendor.h
index 2a4086b..5dab120 100644
--- a/src/common/qca-vendor.h
+++ b/src/common/qca-vendor.h
@@ -32,6 +32,119 @@
};
/**
+ * DOC: TX/RX NSS and chain configurations
+ * This document describes all of the attributes used in the vendor command
+ * QCA_NL80211_VENDOR_SUBCMD_SET_WIFI_CONFIGURATION to configure the number of
+ * spatial streams (NSS) and the number of chains used for transmitting (TX) and
+ * receiving (RX) the data.
+ *
+ * Global NSS configuration - Applies to all bands (2.4 GHz and 5/6 GHz)
+ * The following attributes are used to dynamically configure the number of
+ * spatial streams to be used for transmitting or receiving the data in the
+ * 2.4 GHz and 5/6 GHz bands. When configured in disconnected state, the
+ * updated configuration will be considered for the immediately following
+ * connection attempt. If the NSS is updated during a connection, the updated
+ * NSS value is notified to the peer using operating mode notification/spatial
+ * multiplexing power save frame. The updated NSS value after the connection
+ * shall not be greater than the one negotiated during the connection. The
+ * driver rejects any such higher value configuration with a failure.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_NSS: Only symmetric NSS configuration
+ * (such as 2X2 or 1X1) can be done using this attribute.
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_TX_NSS: Configure NSS for transmitting the data
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_RX_NSS: Configure NSS for receiving the data
+ *
+ * The QCA_WLAN_VENDOR_ATTR_CONFIG_TX_NSS and QCA_WLAN_VENDOR_ATTR_CONFIG_RX_NSS
+ * attributes must be defined together or the driver will reject the command
+ * with a failure. They can be used to configure either symmetric NSS
+ * configuration (such as 2X2 or 1X1) or asymmetric configuration (such as 1X2).
+ *
+ * Per band NSS configuration - Applies to the 2.4 GHz or 5/6 GHz band
+ * The following attributes are used to dynamically configure the number of
+ * spatial streams to be used for transmitting or receiving the data in the
+ * 2.4 GHz band or 5/6 GHz band. All these attributes must be defined together
+ * to configure symmetric NSS configuration (such as 1X1 or 2X2) or asymmetric
+ * NSS configuration (such as 1X2). If any of the attributes is missing, the
+ * driver will reject the command with a failure. This configuration is allowed
+ * only when in connected state and will be effective until disconnected. The
+ * NSS value configured after the connection shall not be greater than the value
+ * negotiated during the connection. Any such higher value configuration shall
+ * be treated as invalid configuration by the driver.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_TX_NSS_2GHZ: Configure TX_NSS in 2.4 GHz band
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_RX_NSS_2GHZ: Configure RX_NSS in 2.4 GHz band
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_TX_NSS_5GHZ: Configure TX_NSS in 5 or 6 GHz band
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_RX_NSS_5GHZ: Configure RX_NSS in 5 or 6 GHz band
+ *
+ * Global chain configuration - Applies to all bands (2.4 GHz and 5/6 GHz)
+ * The following attributes are used to dynamically configure the number of
+ * chains to be used for transmitting or receiving the data in the 2.4 GHz and
+ * 5/6 GHz bands. This configuration is allowed only when in connected state
+ * and will be effective until disconnected. The driver rejects this
+ * configuration if the number of spatial streams being used in the current
+ * connection cannot be supported by this configuration.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_TX_CHAINS: The number of chains to be used
+ * for transmitting the data in both the 2.4 GHz and 5/6 GHz bands.
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_RX_CHAINS: The number of chains to be used
+ * for receiving the data in both the 2.4 GHz and 5/6 GHz bands.
+ *
+ * The attributes QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_TX_CHAINS and
+ * QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_RX_CHAINS must be defined together or the
+ * driver will reject the command with a failure.
+ *
+ * Per band chain configuration - Applies to the 2.4 GHz or 5/6 GHz band
+ * The following band specific attributes are used to dynamically configure the
+ * number of chains to be used for tranmissting or receiving the data in the
+ * 2.4 GHz or 5/6 GHz band. These attributes must be defined together or the
+ * driver will reject the command. This configuration is allowed only when in
+ * connected state and will be effective until disconnected. The driver rejects
+ * this configuration if the number of spatial streams being used in the
+ * current connection cannot be supported by this configuration.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_TX_CHAINS_2GHZ: The number of chains to be
+ * used for transmitting the data in the 2.4 GHz band.
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_RX_CHAINS_2GHZ: The number of chains to be
+ * used for receiving the data in the 2.4 GHz band.
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_TX_CHAINS_5GHZ: The number of chains to be
+ * used for transmitting the data in the 5/6 GHz band.
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_RX_CHAINS_5GHZ: The number of chains to be
+ * used for receiving the data in the 5/6 GHz band.
+ *
+ * The following scenarios capture how the driver process the configuration when
+ * different TX/RX NSS and chain config attributes are used in the command.
+ *
+ * Case 1: CONFIG_NSS + CONFIG_TX_NSS/RX_NSS - Only CONFIG_NSS is applied
+ * since only one of the TX_NSS or RX_NSS attribute is present.
+ *
+ * Case 2: CONFIG_NSS + CONFIG_TX_NSS + CONFIG_RX_NSS - Same NSS values are
+ * used to configure TX,RX in both the 2.4 GHz and 5/6 GHz bands.
+ *
+ * Case 3: Case 2 + NUM_TX_CHAINS + NUM_RX_CHAINS - The NSS and the number of
+ * chains values are used to configure TX,RX in both the 2.4 GHz and 5/6 GHz
+ * bands.
+ *
+ * Case 4: TX_NSS_2GHZ/TX_NSS_5GHZ + RX_NSS_2GHZ/RX_NSS_5GHZ - Since per band
+ * TX/RX NSS attribute is missing, the driver rejects the command.
+ *
+ * Case 5: TX_NSS_2GHZ + TX_NSS_5GHZ + RX_NSS_2GHZ + RX_NSS_5GHZ - The 2.4 GHz
+ * band is configured with the TX_NSS_2GHZ, RX_NSS_2GHZ values. The 5/6 GHz band
+ * is configured with the TX_NSS_5GHZ, RX_NSS_5GHZ values.
+ *
+ * Case 6: TX_CHAINS_2GHZ/TX_CHAINS_5GHZ + RX_CHAINS_5GHZ/RX_CHAINS_5GHZ - Since
+ * per band TX/RX chains attribute is missing, the driver rejects the command.
+ *
+ * Case 7: TX_CHAINS_2GHZ + TX_CHAINS_5GHZ + RX_CHAINS_5GHZ + RX_CHAINS_5GHZ -
+ * The 2.4 GHz band is configured with the TX_CHAINS_2GHZ, RX_CHAINS_2GHZ
+ * values. The 5/6 GHz band is configured with the TX_CHAINS_5GHZ,
+ * RX_CHAINS_5GHZ values.
+ *
+ * Case 8: Case 5 + Case 7 - Per band TX,RX NSS and chains are configured.
+ *
+ * Case 9: Case 2 + Case 8 - Per band TX,RX NSS and chains are configured.
+ */
+
+/**
* enum qca_nl80211_vendor_subcmds - QCA nl80211 vendor command identifiers
*
* @QCA_NL80211_VENDOR_SUBCMD_UNSPEC: Reserved value 0
@@ -1057,6 +1170,73 @@
* driver to notify user application about the spectral scan completion.
* The attributes used with this subcommand are defined in
* enum qca_wlan_vendor_attr_spectral_scan_complete.
+ *
+ * @QCA_NL80211_VENDOR_SUBCMD_ASYNC_GET_STATION: Register for receiving
+ * %NL80211_CMD_GET_STATION responses as unicast events when there are
+ * %NL80211_CMD_GET_STATION requests from any userspace module on the same
+ * interface index with which this command is sent. This command is also
+ * used as the unicast event to indicate the %NL80211_CMD_GET_STATION
+ * response. The attributes for this command are defined in
+ * enum qca_wlan_vendor_async_get_station_attr.
+ *
+ * The driver will send the unicast events with same netlink port ID which
+ * is used by userspace application for sending the registration command.
+ * If multiple registration commands are received with different netlink
+ * port IDs, the driver will send unicast events with each netlink port ID
+ * separately.
+ *
+ * Userspace applications can deregister the unicast event reporting with
+ * disable configuration. The registrations will be removed automatically
+ * by the driver when the corresponding netlink socket is closed.
+ *
+ * @QCA_NL80211_VENDOR_SUBCMD_AP_SUSPEND: Vendor command to put an AP interface
+ * in suspend state. On enabling suspend, AP deauthenticates all associated
+ * stations and stops TX/RX operations on the interface. The driver
+ * retains the AP configuration and on resume, starts all TX/RX operations
+ * with the same AP configuration.
+ *
+ * This subcommand is also used as an event to notify userspace about AP
+ * suspended/resumed state changes.
+ *
+ * The attributes used with this command/event are defined in enum
+ * qca_wlan_vendor_attr_ap_suspend.
+ *
+ * @QCA_NL80211_VENDOR_SUBCMD_FLOW_STATS: Event indication from the driver to
+ * the userspace which contains all the statistics collected for a flow to
+ * be classified. This event is sent if the userspace enables the
+ * flow stats reporting via the command
+ * @QCA_NL80211_VENDOR_SUBCMD_ASYNC_STATS_POLICY and when the driver has
+ * collected the required flow statistics, as specified by the attributes
+ * of this event. The attributes for this event are defined in
+ * enum qca_wlan_vendor_attr_flow_stats.
+ * @QCA_NL80211_VENDOR_SUBCMD_FLOW_CLASSIFY_RESULT: This vendor command is used
+ * to indicate the flow classification result based on the flow samples
+ * received as a part of @QCA_NL80211_VENDOR_SUBCMD_FLOW_STATS. The
+ * attributes for this command are defined in the
+ * enum qca_wlan_vendor_attr_flow_classify_result.
+ * @QCA_NL80211_VENDOR_SUBCMD_ASYNC_STATS_POLICY: This vendor command is used to
+ * indicate the ASYNC statistics policy from the userspace to the driver
+ * and it contains the STATS type for which the command is intended. The
+ * attributes for this command are defined in the
+ * enum qca_wlan_vendor_attr_async_stats_policy.
+ * @QCA_NL80211_VENDOR_SUBCMD_CLASSIFIED_FLOW_REPORT: Event indication from the
+ * driver to the userspace containing all the samples of a classified
+ * flow along with its classification result. This event is sent by the
+ * driver to userspace when it receives classification result via the
+ * command @QCA_NL80211_VENDOR_SUBCMD_FLOW_CLASSIFY_RESULT and the
+ * collection of these statistics has been enabled by the command
+ * @QCA_NL80211_VENDOR_SUBCMD_ASYNC_STATS_POLICY. The attributes for this
+ * event are defined in enum qca_wlan_vendor_attr_flow_stats.
+ *
+ * @QCA_NL80211_VENDOR_SUBCMD_USD: Vendor subcommand to implement unsynchronized
+ * service discovery (USD). Based on the type of the USD subcommand the USD
+ * operation to publish, subscribe, update publish, cancel publish, or
+ * cancel subscribe is triggered.
+ *
+ * When used as an event, the driver notifies the status of an USD command.
+ *
+ * The attributes used with this command are defined in
+ * enum qca_wlan_vendor_attr_usd.
*/
enum qca_nl80211_vendor_subcmds {
QCA_NL80211_VENDOR_SUBCMD_UNSPEC = 0,
@@ -1283,6 +1463,13 @@
QCA_NL80211_VENDOR_SUBCMD_DISASSOC_PEER = 240,
QCA_NL80211_VENDOR_SUBCMD_ADJUST_TX_POWER = 241,
QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_COMPLETE = 242,
+ QCA_NL80211_VENDOR_SUBCMD_ASYNC_GET_STATION = 243,
+ QCA_NL80211_VENDOR_SUBCMD_AP_SUSPEND = 244,
+ QCA_NL80211_VENDOR_SUBCMD_FLOW_STATS = 245,
+ QCA_NL80211_VENDOR_SUBCMD_FLOW_CLASSIFY_RESULT = 246,
+ QCA_NL80211_VENDOR_SUBCMD_ASYNC_STATS_POLICY = 247,
+ QCA_NL80211_VENDOR_SUBCMD_CLASSIFIED_FLOW_REPORT = 248,
+ QCA_NL80211_VENDOR_SUBCMD_USD = 249,
};
/* Compatibility defines for previously used subcmd names.
@@ -1517,9 +1704,23 @@
QCA_WLAN_VENDOR_ATTR_MAX = QCA_WLAN_VENDOR_ATTR_AFTER_LAST - 1,
};
+/**
+ * enum qca_roaming_policy - Represents the policies for roaming. Used by
+ * QCA_WLAN_VENDOR_ATTR_ROAMING_POLICY.
+ *
+ * QCA_ROAMING_NOT_ALLOWED: Roaming is not allowed/disabled.
+ *
+ * QCA_ROAMING_ALLOWED_WITHIN_ESS: Roaming is allowed with in an ESS with
+ * default RSSI thresholds.
+ *
+ * QCA_ROAMING_MODE_AGGRESSIVE: This mode is an extension of
+ * QCA_ROAMING_ALLOWED_WITHIN_ESS. The driver/firmware roams on higher RSSI
+ * thresholds when compared to QCA_ROAMING_ALLOWED_WITHIN_ESS.
+ */
enum qca_roaming_policy {
QCA_ROAMING_NOT_ALLOWED,
QCA_ROAMING_ALLOWED_WITHIN_ESS,
+ QCA_ROAMING_MODE_AGGRESSIVE,
};
/**
@@ -1988,6 +2189,36 @@
* with %QCA_WLAN_VENDOR_ATTR_CONFIG_AP_ALLOWED_FREQ_LIST.
* @QCA_WLAN_VENDOR_FEATURE_ENHANCED_AUDIO_EXPERIENCE_OVER_WLAN: Flag indicates
* that the device supports enhanced audio experience over WLAN feature.
+ * @QCA_WLAN_VENDOR_FEATURE_HT_VHT_TWT_RESPONDER: Flag indicates that the device
+ * in AP mode supports TWT responder mode in HT and VHT modes.
+ *
+ * @QCA_WLAN_VENDOR_FEATURE_RSN_OVERRIDE_STA: Flag indicates that the device
+ * supports RSNE/RSNXE overriding in STA mode.
+ *
+ * For SME offload to the driver case:
+ * - Supplicant should enable RSNO element use only when the driver
+ * indicates this feature flag.
+ * - The driver should enable RSNO element use with the supplicant selected
+ * BSS only when the supplicant sends an RSNO element with an empty
+ * payload in the connect request elements buffer in NL80211_CMD_CONNECT.
+ *
+ * For BSS selection offload to the driver case:
+ * - Supplicant should enable RSNO element use only when the driver
+ * indicates this feature flag.
+ * - Supplicant should always send RSNO elements in the connect request
+ * elements buffer in NL80211_CMD_CONNECT irrespective of whether RSNO
+ * elements are supported by the BSS that the supplicant selected
+ * - The driver should enable RSNO element use only when the supplicant
+ * sends an RSNO element with an empty payload in connect request
+ * elements in NL80211_CMD_CONNECT.
+ * - The driver should remove RSNO elements from the connect request
+ * elements while preparing the (Re)Association Request frame elements
+ * if the driver selects a different BSS which is not advertising RSNO
+ * elements.
+ *
+ * If both SME and BSS selection offload to the driver, BSS selection
+ * offload to the driver case rules shall be applied.
+ *
* @NUM_QCA_WLAN_VENDOR_FEATURES: Number of assigned feature bits
*/
enum qca_wlan_vendor_features {
@@ -2015,6 +2246,8 @@
QCA_WLAN_VENDOR_FEATURE_PROT_RANGE_NEGO_AND_MEASURE_AP = 21,
QCA_WLAN_VENDOR_FEATURE_AP_ALLOWED_FREQ_LIST = 22,
QCA_WLAN_VENDOR_FEATURE_ENHANCED_AUDIO_EXPERIENCE_OVER_WLAN = 23,
+ QCA_WLAN_VENDOR_FEATURE_HT_VHT_TWT_RESPONDER = 24,
+ QCA_WLAN_VENDOR_FEATURE_RSN_OVERRIDE_STA = 25,
NUM_QCA_WLAN_VENDOR_FEATURES /* keep last */
};
@@ -2257,13 +2490,15 @@
* @QCA_TSF_SYNC_GET: Initiate TSF capture and return with captured value
* @QCA_TSF_AUTO_REPORT_ENABLE: Used in STA mode only. Once set, the target
* will automatically send TSF report to the host. To query
- * %QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_UPLINK_DELAY, this operation needs to be
- * initiated first.
+ * %QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_UPLINK_DELAY or
+ * %QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_UPLINK_DELAY_JITTER, this operation needs
+ * to be initiated first.
* @QCA_TSF_AUTO_REPORT_DISABLE: Used in STA mode only. Once set, the target
* will not automatically send TSF report to the host. If
* %QCA_TSF_AUTO_REPORT_ENABLE is initiated and
- * %QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_UPLINK_DELAY is not queried anymore, this
- * operation needs to be initiated.
+ * %QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_UPLINK_DELAY or
+ * %QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_UPLINK_DELAY_JITTER is not queried
+ * anymore, this operation needs to be initiated.
* @QCA_TSF_SYNC_START: Start periodic TSF sync feature. The driver periodically
* fetches TSF and host time mapping from the firmware with interval configured
* through the %QCA_WLAN_VENDOR_ATTR_TSF_SYNC_INTERVAL attribute. If the
@@ -2910,21 +3145,9 @@
*/
QCA_WLAN_VENDOR_ATTR_CONFIG_RX_STBC = 69,
- /* 8-bit unsigned value. This attribute is used to dynamically configure
- * the number of spatial streams. When configured in the disconnected
- * state, the updated configuration will be considered for the
- * immediately following connection attempt. If the NSS is updated after
- * the connection, the updated NSS value is notified to the peer using
- * the Operating Mode Notification/Spatial Multiplexing Power Save
- * frame. The updated NSS value after the connection shall not be
- * greater than the one negotiated during the connection. Any such
- * higher value configuration shall be returned with a failure.
- * Only symmetric NSS configuration (such as 2X2 or 1X1) can be done
- * using this attribute. QCA_WLAN_VENDOR_ATTR_CONFIG_TX_NSS and
- * QCA_WLAN_VENDOR_ATTR_CONFIG_RX_NSS attributes shall be used to
- * configure the asymmetric NSS configuration (such as 1X2).
- */
+ /* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
QCA_WLAN_VENDOR_ATTR_CONFIG_NSS = 70,
+
/* 8-bit unsigned value to configure Optimized Power Management mode:
* Modes are defined by enum qca_wlan_vendor_opm_mode.
*
@@ -2956,21 +3179,10 @@
*/
QCA_WLAN_VENDOR_ATTR_CONFIG_UDP_QOS_UPGRADE = 72,
- /* 8-bit unsigned value. This attribute is used to dynamically configure
- * the number of chains to be used for transmitting data. This
- * configuration is allowed only when in connected state and will be
- * effective until disconnected. The driver rejects this configuration
- * if the number of spatial streams being used in the current connection
- * cannot be supported by this configuration.
- */
+ /* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_TX_CHAINS = 73,
- /* 8-bit unsigned value. This attribute is used to dynamically configure
- * the number of chains to be used for receiving data. This
- * configuration is allowed only when in connected state and will be
- * effective until disconnected. The driver rejects this configuration
- * if the number of spatial streams being used in the current connection
- * cannot be supported by this configuration.
- */
+
+ /* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_RX_CHAINS = 74,
/* 8-bit unsigned value to configure ANI setting type.
@@ -3380,6 +3592,100 @@
*/
QCA_WLAN_VENDOR_ATTR_CONFIG_BTM_SUPPORT = 107,
+ /* 16-bit unsigned value to configure client's keep-alive interval in
+ * seconds. The driver will reduce the keep-alive interval to this
+ * configured value if the AP advertises BSS maximum idle period and if
+ * that BSS max idle period is larger than this configured value. If the
+ * AP does not advertise a maximum value, the configured value will be
+ * used as a keep-alive period for unprotected frames.
+ *
+ * This configuration is applicable only during the STA's current
+ * association.
+ */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_KEEP_ALIVE_INTERVAL = 108,
+
+ /* 8-bit unsigned value to configure reduced power scan mode.
+ *
+ * This attribute is used to configure the driver to optimize power
+ * during scan. For example, the driver can switch to 1x1 from 2x2 mode
+ * for additional power save.
+ *
+ * 1 - Enable reduced power scan mode.
+ * 0 - Disable reduced power scan mode.
+ */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_REDUCED_POWER_SCAN_MODE = 109,
+
+ /* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_TX_NSS_2GHZ = 110,
+
+ /* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_RX_NSS_2GHZ = 111,
+
+ /* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_TX_NSS_5GHZ = 112,
+
+ /* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_RX_NSS_5GHZ = 113,
+
+ /* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_TX_CHAINS_2GHZ = 114,
+
+ /* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_RX_CHAINS_2GHZ = 115,
+
+ /* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_TX_CHAINS_5GHZ = 116,
+
+ /* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_RX_CHAINS_5GHZ = 117,
+
+ /* 16-bit unsigned value. This attribute is used to dynamically
+ * configure the time duration of data stall detection. Unit is
+ * milliseconds. Valid value range is 0 or 10 ms to 10000 ms. If the
+ * value is 0, the previously configured value is cleared. The driver
+ * rejects this configuration if the value is out of range. This
+ * configuration is effective for all connections on the chip. If the
+ * duration is greater than this configuration and consecutive TX no ack
+ * count is greater than
+ * QCA_WLAN_VENDOR_ATTR_CONFIG_CONSECUTIVE_TX_NO_ACK_THRESHOLD,
+ * data stall event is sent to userspace.
+ */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_CONSECUTIVE_TX_NO_ACK_DURATION = 118,
+
+ /* 16-bit unsigned value. This attribute is used to dynamically
+ * configure the threshold of data stall detection. Valid value is 0 or
+ * greater than 10. if the value is 0, the previously configured value
+ * is cleared. The driver rejects this configuration if the value is out
+ * of range. This configuration is effective for all connections on the
+ * chip. If consecutive TX no ack count is greater than this
+ * configuration and duration is greater than
+ * QCA_WLAN_VENDOR_ATTR_CONFIG_CONSECUTIVE_TX_NO_ACK_DURATION,
+ * data stall event is sent to userspace.
+ */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_CONSECUTIVE_TX_NO_ACK_THRESHOLD = 119,
+
+ /* 8-bit unsigned value to configure the interface offload type
+ *
+ * This attribute is used to configure the interface offload capability.
+ * User can configure software based acceleration, hardware based
+ * acceleration, or a combination of both using this option. More
+ * details on each option is described under the enum definition below.
+ * Uses enum qca_wlan_intf_offload_type for values.
+ */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_INTF_OFFLOAD_TYPE = 120,
+
+ /* 8-bit unsigned integer to configure the driver to follow AP's
+ * preference values to select a roam candidate from BTM request.
+ *
+ * This attribute is used to configure the driver to select the roam
+ * candidate based on AP advertised preference values. If not set,
+ * the driver uses its internal scoring algorithm to do the same.
+ *
+ * 1 - STA follows AP's preference values to select a roam candidate
+ * 0 - STA uses internal scoring algorithm to select a roam candidate
+ */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_FOLLOW_AP_PREFERENCE_FOR_CNDS_SELECT = 121,
+
/* keep last */
QCA_WLAN_VENDOR_ATTR_CONFIG_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_CONFIG_MAX =
@@ -7258,6 +7564,9 @@
* for EHT (IEEE 802.11be). Encoding for this attribute follows the
* convention used in the Disabled Subchannel Bitmap field of the EHT Operation
* element.
+ * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_LINK_ID: Mandatory on AP MLD (u8).
+ * Used with command to configure external ACS operation for a specific link
+ * affiliated to an AP MLD.
*/
enum qca_wlan_vendor_attr_external_acs_channels {
QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_INVALID = 0,
@@ -7294,6 +7603,7 @@
QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_FREQUENCY_CENTER_SEG0 = 12,
QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_FREQUENCY_CENTER_SEG1 = 13,
QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_PUNCTURE_BITMAP = 14,
+ QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_LINK_ID = 15,
/* keep last */
QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_LAST,
@@ -10588,10 +10898,13 @@
*
* @QCA_WLAN_VENDOR_ATTR_TWT_SETUP_RESPONDER_PM_MODE: Optional (u8)
* This attribute contains the value of the Responder PM Mode subfield (0 or 1)
- * from TWT response frame.
+ * from TWT response frame. During TWT setup request, this attribute is used to
+ * configure the Responder PM Mode bit in the control field of the TWT element
+ * for broadcast TWT schedule.
* This parameter is used for
* 1. TWT SET Response
* 2. TWT GET Response
+ * 3. TWT SET Request
*
* @QCA_WLAN_VENDOR_ATTR_TWT_SETUP_ANNOUNCE_TIMEOUT: Optional (u32)
* This attribute is used to configure the announce timeout value (in us) in
@@ -11001,10 +11314,18 @@
* This attribute configures AC parameters to be used for all TWT
* sessions in AP mode.
* Uses the enum qca_wlan_ac_type values.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TWT_SET_PARAM_UNAVAILABILITY_MODE: Flag attribute,
+ * used by TWT responder to indicate unavailability outside of the SPs.
+ * Enable (flag attribute present) - Indicates that the TWT responder may be
+ * unavailable outside of the SPs of its broadcast TWT schedule.
+ * Disable (flag attribute not present) - Indicates that the responder will be
+ * available for all TWT sessions (including individual TWT).
*/
enum qca_wlan_vendor_attr_twt_set_param {
QCA_WLAN_VENDOR_ATTR_TWT_SET_PARAM_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_TWT_SET_PARAM_AP_AC_VALUE = 1,
+ QCA_WLAN_VENDOR_ATTR_TWT_SET_PARAM_UNAVAILABILITY_MODE = 2,
/* keep last */
QCA_WLAN_VENDOR_ATTR_TWT_SET_PARAM_AFTER_LAST,
@@ -12508,6 +12829,16 @@
*
* @QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_PAD: Attribute used for padding for
* 64-bit alignment.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_UPLINK_DELAY_JITTER: u32, used in STA mode
+ * only. This represents the average of the delta between successive uplink
+ * frames congestion duration in MAC queue in unit of ms. This can be queried
+ * either in connected state or disconnected state.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_NSS_PKT_COUNT: Array of nested attributes,
+ * used in STA mode. This represents the number of MSDU packets
+ * (unicast/multicast/broadcast) transmitted/received with each NSS value. See
+ * enum qca_wlan_vendor_attr_nss_pkt.
*/
enum qca_wlan_vendor_attr_get_sta_info {
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_INVALID = 0,
@@ -12564,6 +12895,8 @@
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_PER_MCS_TX_PACKETS = 51,
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_PER_MCS_RX_PACKETS = 52,
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_PAD = 53,
+ QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_UPLINK_DELAY_JITTER = 54,
+ QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_NSS_PKT_COUNT = 55,
/* keep last */
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_AFTER_LAST,
@@ -14425,11 +14758,14 @@
* details for each peer and used in both an event and a command response.
* The nested attributes used inside QCA_WLAN_VENDOR_ATTR_PASN_PEERS are
* defined in enum qca_wlan_vendor_attr_pasn_peer.
+ * @QCA_WLAN_VENDOR_ATTR_PASN_LINK_ID: u8 attribute used to identify a
+ * specific link affiliated to an MLD.
*/
enum qca_wlan_vendor_attr_pasn {
QCA_WLAN_VENDOR_ATTR_PASN_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_PASN_ACTION = 1,
QCA_WLAN_VENDOR_ATTR_PASN_PEERS = 2,
+ QCA_WLAN_VENDOR_ATTR_PASN_LINK_ID = 3,
/* keep last */
QCA_WLAN_VENDOR_ATTR_PASN_AFTER_LAST,
@@ -14489,7 +14825,8 @@
* attribute, holds the LTF keyseed derived from KDK of PASN handshake.
* The length of this attribute is dependent on the value of
* %QCA_WLAN_VENDOR_ATTR_SECURE_RANGING_CTX_SHA_TYPE.
-
+ * @QCA_WLAN_VENDOR_ATTR_SECURE_RANGING_CTX_LINK_ID: This u8 attribute is used
+ * for secure ranging to identify a specific link affiliated to an AP MLD.
*/
enum qca_wlan_vendor_attr_secure_ranging_ctx {
QCA_WLAN_VENDOR_ATTR_SECURE_RANGING_CTX_INVALID = 0,
@@ -14500,6 +14837,7 @@
QCA_WLAN_VENDOR_ATTR_SECURE_RANGING_CTX_TK = 5,
QCA_WLAN_VENDOR_ATTR_SECURE_RANGING_CTX_CIPHER = 6,
QCA_WLAN_VENDOR_ATTR_SECURE_RANGING_CTX_LTF_KEYSEED = 7,
+ QCA_WLAN_VENDOR_ATTR_SECURE_RANGING_CTX_LINK_ID = 8,
/* keep last */
QCA_WLAN_VENDOR_ATTR_SECURE_RANGING_CTX_AFTER_LAST,
@@ -17042,4 +17380,671 @@
QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_COMPLETE_AFTER_LAST - 1,
};
+/**
+ * enum qca_wlan_vendor_async_get_station_attr - Attribute values for
+ * %QCA_NL80211_VENDOR_SUBCMD_ASYNC_GET_STATION command.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_ASYNC_GET_STATION_CONFIG: 8-bit unsigned value to
+ * configure the driver to enable/disable reporting
+ * %QCA_NL80211_VENDOR_SUBCMD_ASYNC_GET_STATION events. 1-Enable, 0-Disable.
+ * This is required in a command.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_ASYNC_GET_STATION_RESPONSE: Nested attribute. This is
+ * required in %QCA_NL80211_VENDOR_SUBCMD_ASYNC_GET_STATION event.
+ * This attribute is nested with the station MAC address in %NL80211_ATTR_MAC
+ * and the station information in %NL80211_ATTR_STA_INFO nested attribute, see
+ * enum nl80211_sta_info.
+ */
+enum qca_wlan_vendor_async_get_station_attr {
+ QCA_WLAN_VENDOR_ATTR_ASYNC_GET_STATION_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_ASYNC_GET_STATION_CONFIG = 1,
+ QCA_WLAN_VENDOR_ATTR_ASYNC_GET_STATION_RESPONSE = 2,
+
+ QCA_WLAN_VENDOR_ATTR_ASYNC_GET_STATION_AFTER_LAST,
+ QCA_WLAN_VENDOR_ATTR_ASYNC_GET_STATION_MAX =
+ QCA_WLAN_VENDOR_ATTR_ASYNC_GET_STATION_AFTER_LAST - 1,
+};
+
+/* enum qca_wlan_vendor_ap_suspend_state - Attribute values for
+ * QCA_WLAN_VENDOR_ATTR_AP_SUSPEND_STATE.
+ *
+ * @QCA_WLAN_VENDOR_AP_SUSPEND_STATE_DISABLE: Disable suspend state. When used
+ * with a command, the driver resumes AP with the same configuration that was
+ * applied earlier and starts all TX/RX operations. When used in an event,
+ * indicates the AP interface resumed.
+ *
+ * @QCA_WLAN_VENDOR_AP_SUSPEND_STATE_ENABLE: Enable suspend state. In this
+ * mode, all associated STAs are disconnected and TX/RX is stopped. While an AP
+ * is in this state, it allows only %QCA_WLAN_VENDOR_AP_SUSPEND_STATE_DISABLE
+ * or AP stop/teardown operations. When used in an event, indicates the AP
+ * interface suspended.
+ */
+enum qca_wlan_vendor_ap_suspend_state {
+ QCA_WLAN_VENDOR_AP_SUSPEND_STATE_DISABLE = 0,
+ QCA_WLAN_VENDOR_AP_SUSPEND_STATE_ENABLE = 1,
+};
+
+/* enum qca_wlan_vendor_attr_ap_suspend - Definition of attributes for
+ * @QCA_NL80211_VENDOR_SUBCMD_AP_SUSPEND to configure/notify the suspend state.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_AP_SUSPEND_STATE: u8 attribute to configure/notify
+ * suspend state defined in enum qca_wlan_vendor_ap_suspend_state.
+ */
+enum qca_wlan_vendor_attr_ap_suspend {
+ QCA_WLAN_VENDOR_ATTR_AP_SUSPEND_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_AP_SUSPEND_STATE = 1,
+
+ QCA_WLAN_VENDOR_ATTR_AP_SUSPEND_AFTER_LAST,
+ QCA_WLAN_VENDOR_ATTR_AP_SUSPEND_MAX =
+ QCA_WLAN_VENDOR_ATTR_AP_SUSPEND_AFTER_LAST - 1,
+};
+
+/**
+ * enum qca_traffic_type - Traffic types into which the flows can be classified.
+ * @QCA_TRAFFIC_TYPE_STREAMING: Traffic type is streaming
+ * @QCA_TRAFFIC_TYPE_GAMING: Traffic type is gaming
+ * @QCA_TRAFFIC_TYPE_VOICE_CALL: Traffic type is a voice call
+ * @QCA_TRAFFIC_TYPE_VIDEO_CALL: Traffic type is a video call
+ * @QCA_TRAFFIC_TYPE_SCREEN_SHARE: Traffic type is screen share
+ * @QCA_TRAFFIC_TYPE_UNKNOWN: Traffic type is unknown
+ * @QCA_TRAFFIC_TYPE_INVALID: Invalid traffic type
+ */
+enum qca_traffic_type {
+ QCA_TRAFFIC_TYPE_STREAMING = 0,
+ QCA_TRAFFIC_TYPE_GAMING = 1,
+ QCA_TRAFFIC_TYPE_VOICE_CALL = 2,
+ QCA_TRAFFIC_TYPE_VIDEO_CALL = 3,
+ QCA_TRAFFIC_TYPE_SCREEN_SHARE = 4,
+ QCA_TRAFFIC_TYPE_UNKNOWN = 5,
+ QCA_TRAFFIC_TYPE_INVALID = 6,
+};
+
+/**
+ * enum qca_wlan_vendor_flow_tuple_proto - Definition of the values to specify
+ * the flow tuple protocol in QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_PROTOCOL.
+ *
+ * @QCA_WLAN_VENDOR_FLOW_TUPLE_PROTO_UDP: UDP flow
+ *
+ * @QCA_WLAN_VENDOR_FLOW_TUPLE_PROTO_TCP: TCP flow
+ */
+enum qca_wlan_vendor_flow_tuple_proto {
+ QCA_WLAN_VENDOR_FLOW_TUPLE_PROTO_UDP = 0,
+ QCA_WLAN_VENDOR_FLOW_TUPLE_PROTO_TCP = 1,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_flow_tuple - Definition of attributes to specify a
+ * flow tuple.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_IPV4_SRC_ADDR: Optional u32 attribute
+ * indicates the source IPv4 address (in network byte order).
+ *
+ * @QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_IPV4_DST_ADDR: Optional u32 attribute
+ * indicates the destination IPv4 address (in network byte order).
+ *
+ * @QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_IPV6_SRC_ADDR: Optional NLA_BINARY
+ * attribute of 16 bytes length that indicates the source IPv6 address
+ * (in network byte order) for a flow.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_IPV6_DST_ADDR: Optional NLA_BINARY
+ * attribute of 16 bytes length that indicates the destination IPv6 address
+ * (in network byte order) for a flow.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_SRC_PORT: Mandatory u16 attribute indicates
+ * the TCP/UDP source port.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_DST_PORT: Mandatory u16 attribute indicates
+ * the TCP/UDP destination port.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_PROTOCOL: Mandatory u8 attribute indicates
+ * the flow protocol. Uses the enum qca_wlan_vendor_flow_tuple_proto.
+ *
+ * IPv4 flows have to specify @QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_IPV4_SRC_ADDR
+ * and @QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_IPV4_DST_ADDR.
+ * IPv6 flows have to specify @QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_IPV6_SRC_ADDR
+ * and @QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_IPV6_DST_ADDR.
+ */
+enum qca_wlan_vendor_attr_flow_tuple {
+ QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_IPV4_SRC_ADDR = 1,
+ QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_IPV4_DST_ADDR = 2,
+ QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_IPV6_SRC_ADDR = 3,
+ QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_IPV6_DST_ADDR = 4,
+ QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_SRC_PORT = 5,
+ QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_DST_PORT = 6,
+ QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_PROTOCOL = 7,
+
+ /* keep last */
+ QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_LAST,
+ QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_MAX =
+ QCA_WLAN_VENDOR_ATTR_FLOW_TUPLE_LAST - 1,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_txrx_stats - Definition of attributes to specify
+ * TX/RX sample for one window.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TXRX_STATS_NUM_BYTES: Mandatory u64 attribute indicates
+ * the total number of uplink/downlink bytes within the sampling window.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TXRX_STATS_NUM_PKTS: Mandatory u32 attribute indicates
+ * the total number of packets (uplink/downlink) within the sampling window.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TXRX_STATS_PKT_SIZE_MIN: Mandatory u32 attribute
+ * indicates the minimum uplink/downlink packet size (in bytes) during the
+ * sampling window.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TXRX_STATS_PKT_SIZE_MAX: Mandatory u32 attribute
+ * indicates the maximum uplink/downlink packet size (in bytes) during the
+ * sampling window.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TXRX_STATS_PKT_IAT_MIN: Mandatory u64 attribute
+ * indicates the minimum uplink/downlink packet IAT (inter-arrival time)
+ * in microseconds, during the sampling window.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TXRX_STATS_PKT_IAT_MAX: Mandatory u64 attribute
+ * indicates the maximum uplink/downlink packet IAT (inter-arrival time)
+ * in microseconds, during the sampling window.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TXRX_STATS_PKT_IAT_SUM: Mandatory u64 attribute
+ * indicates the sum of all the values of uplink/downlink packet IAT
+ * (inter-arrival time) in microseconds, during the sampling window.
+ * This attribute is used to calculate the mean packet (inter-arrival time)
+ * during the sampling window.
+ */
+enum qca_wlan_vendor_attr_txrx_stats {
+ QCA_WLAN_VENDOR_ATTR_TXRX_STATS_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_TXRX_STATS_NUM_BYTES = 1,
+ QCA_WLAN_VENDOR_ATTR_TXRX_STATS_NUM_PKTS = 2,
+ QCA_WLAN_VENDOR_ATTR_TXRX_STATS_PKT_SIZE_MIN = 3,
+ QCA_WLAN_VENDOR_ATTR_TXRX_STATS_PKT_SIZE_MAX = 4,
+ QCA_WLAN_VENDOR_ATTR_TXRX_STATS_PKT_IAT_MIN = 5,
+ QCA_WLAN_VENDOR_ATTR_TXRX_STATS_PKT_IAT_MAX = 6,
+ QCA_WLAN_VENDOR_ATTR_TXRX_STATS_PKT_IAT_SUM = 7,
+
+ /* keep last */
+ QCA_WLAN_VENDOR_ATTR_TXRX_STATS_LAST,
+ QCA_WLAN_VENDOR_ATTR_TXRX_STATS_MAX =
+ QCA_WLAN_VENDOR_ATTR_TXRX_STATS_LAST - 1,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_txrx_samples_windows - Definition of attributes
+ * to specify the TX/RX statistics collected in a sampling window.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_WINDOWS_WINDOW_SIZE: Mandatory u32
+ * attribute indicates window size for packet TX/RX sampling (in milliseconds).
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_WINDOWS_UL_STATS: Mandatory nested
+ * attribute containing the uplink TX/RX packet statistics for a flow. Uses the
+ * enum qca_wlan_vendor_attr_txrx_stats.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_WINDOWS_DL_STATS: Mandatory nested
+ * attribute containing the downlink TX/RX packet statistics for a flow. Uses
+ * the enum qca_wlan_vendor_attr_txrx_stats.
+ */
+enum qca_wlan_vendor_attr_txrx_samples_windows {
+ QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_WINDOWS_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_WINDOWS_WINDOW_SIZE = 1,
+ QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_WINDOWS_UL_STATS = 2,
+ QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_WINDOWS_DL_STATS = 3,
+
+ /* keep last */
+ QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_WINDOWS_LAST,
+ QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_WINDOWS_MAX =
+ QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_WINDOWS_LAST - 1,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_txrx_samples - Definition of attributes to specify
+ * a TX/RX sample.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_WINDOWS: Mandatory array of nested
+ * attributes that indicates the TX/RX samples in multiple overlapping windows.
+ * This uses the attributes defined by
+ * enum qca_wlan_vendor_attr_txrx_samples_windows.
+ */
+enum qca_wlan_vendor_attr_txrx_samples {
+ QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_WINDOWS = 1,
+
+ /* keep last */
+ QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_LAST,
+ QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_MAX =
+ QCA_WLAN_VENDOR_ATTR_TXRX_SAMPLES_LAST - 1,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_burst_stats - Definition of attribute to specify
+ * burst statistics.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_BURST_STATS_BURST_DURATION_MIN: Mandatory u32 attribute
+ * indicates minimum burst duration (in milliseconds) during the sampling
+ * window.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_BURST_STATS_BURST_DURATION_MAX: Mandatory u32 attribute
+ * indicates maximum burst duration (in milliseconds) during the sampling
+ * window.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_BURST_STATS_BURST_DURATION_SUM: Mandatory u64 attribute
+ * indicates the sum of all the values of burst duration (in milliseconds)
+ * during the sampling window. This attribute is used to calculate the mean
+ * burst duration (in milliseconds) during the sampling window.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_BURST_STATS_BURST_SIZE_MIN: Mandatory u64 attribute
+ * indicates minimum burst size (in bytes) during the sampling window.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_BURST_STATS_BURST_SIZE_MAX: Mandatory u64 attribute
+ * indicates maximum burst size (in bytes) during the sampling window.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_BURST_STATS_BURST_SIZE_SUM: Mandatory u64 attribute
+ * indicates the sum of all the values of burst size (in bytes) during the
+ * sampling window. This attribute is used to calculate the mean burst size
+ * (in bytes) during the sampling window.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_BURST_STATS_BURST_COUNT: Mandatory u32 attribute
+ * indicates the number of bursts during the sampling window.
+ */
+enum qca_wlan_vendor_attr_burst_stats {
+ QCA_WLAN_VENDOR_ATTR_BURST_STATS_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_BURST_STATS_BURST_DURATION_MIN = 1,
+ QCA_WLAN_VENDOR_ATTR_BURST_STATS_BURST_DURATION_MAX = 2,
+ QCA_WLAN_VENDOR_ATTR_BURST_STATS_BURST_DURATION_SUM = 3,
+ QCA_WLAN_VENDOR_ATTR_BURST_STATS_BURST_SIZE_MIN = 4,
+ QCA_WLAN_VENDOR_ATTR_BURST_STATS_BURST_SIZE_MAX = 5,
+ QCA_WLAN_VENDOR_ATTR_BURST_STATS_BURST_SIZE_SUM = 6,
+ QCA_WLAN_VENDOR_ATTR_BURST_STATS_BURST_COUNT = 7,
+
+ /* keep last */
+ QCA_WLAN_VENDOR_ATTR_BURST_STATS_LAST,
+ QCA_WLAN_VENDOR_ATTR_BURST_STATS_MAX =
+ QCA_WLAN_VENDOR_ATTR_BURST_STATS_LAST - 1,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_burst_sample - Definition of attributes to specify
+ * a burst sample.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_BURST_SAMPLES_TXRX_STATS: Mandatory nested attribute
+ * indicates the uplink and downlink packet statistics collected in a
+ * sampling window, containing attributes defined in
+ * enum qca_wlan_vendor_attr_txrx_samples_windows.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_BURST_SAMPLES_UL_BURST_STATS: Optional nested attribute
+ * indicates the uplink burst stats, containing attributes defined in
+ * enum qca_wlan_vendor_attr_burst_stats.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_BURST_SAMPLES_DL_BURST_STATS: Optional nested attribute
+ * indicates the downlink burst stats, containing attributes defined in
+ * enum qca_wlan_vendor_attr_burst_stats.
+ */
+enum qca_wlan_vendor_attr_burst_sample {
+ QCA_WLAN_VENDOR_ATTR_BURST_SAMPLES_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_BURST_SAMPLES_TXRX_STATS = 1,
+ QCA_WLAN_VENDOR_ATTR_BURST_SAMPLES_UL_BURST_STATS = 2,
+ QCA_WLAN_VENDOR_ATTR_BURST_SAMPLES_DL_BURST_STATS = 3,
+
+ /* keep last */
+ QCA_WLAN_VENDOR_ATTR_BURST_SAMPLES_LAST,
+ QCA_WLAN_VENDOR_ATTR_BURST_SAMPLES_MAX =
+ QCA_WLAN_VENDOR_ATTR_BURST_SAMPLES_LAST - 1,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_flow_stats - Definition of attribute used by
+ * %QCA_NL80211_VENDOR_SUBCMD_CLASSIFIED_FLOW_REPORT and
+ * %QCA_NL80211_VENDOR_SUBCMD_FLOW_STATS.
+ *
+ * Presence of one of the attributes
+ * @QCA_WLAN_VENDOR_ATTR_FLOW_STATS_TXRX_SAMPLES and
+ * @QCA_WLAN_VENDOR_ATTR_FLOW_STATS_BURST_SAMPLES is mandatory.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_FLOW_STATS_FLOW_TUPLE: Mandatory nested attribute
+ * containing the flow tuple of the flow for which the statistics are being
+ * reported.
+ * Uses the attributes defined by enum qca_wlan_vendor_attr_flow_tuple.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_FLOW_STATS_TRAFFIC_TYPE: Optional u8 attribute
+ * indicates the traffic type classified for this flow tuple. Uses the
+ * enum qca_traffic_type values.
+ * This attribute is mandatory for the command
+ * @QCA_NL80211_VENDOR_SUBCMD_CLASSIFIED_FLOW_REPORT.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_FLOW_STATS_TXRX_SAMPLES: Optional nested attribute
+ * containing nested array of TX/RX samples defined in
+ * enum qca_wlan_vendor_attr_txrx_samples.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_FLOW_STATS_BURST_SAMPLES: Optional nested attribute
+ * indicates the packet burst statistics for a flow. Uses attributes defined by
+ * enum qca_wlan_vendor_attr_burst_sample.
+ */
+enum qca_wlan_vendor_attr_flow_stats {
+ QCA_WLAN_VENDOR_ATTR_FLOW_STATS_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_FLOW_STATS_FLOW_TUPLE = 1,
+ QCA_WLAN_VENDOR_ATTR_FLOW_STATS_TRAFFIC_TYPE = 2,
+ QCA_WLAN_VENDOR_ATTR_FLOW_STATS_TXRX_SAMPLES = 3,
+ QCA_WLAN_VENDOR_ATTR_FLOW_STATS_BURST_SAMPLES = 4,
+
+ /* keep last */
+ QCA_WLAN_VENDOR_ATTR_FLOW_STATS_LAST,
+ QCA_WLAN_VENDOR_ATTR_FLOW_STATS_MAX =
+ QCA_WLAN_VENDOR_ATTR_FLOW_STATS_LAST - 1,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_flow_classify_result - Definition of attributes to
+ * specify the flow classification result. This enum is used by
+ * @QCA_NL80211_VENDOR_SUBCMD_FLOW_CLASSIFY_RESULT.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_FLOW_CLASSIFY_RESULT_FLOW_TUPLE: Mandatory nested
+ * attribute containing attributes defined by
+ * enum qca_wlan_vendor_attr_flow_tuple.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_FLOW_CLASSIFY_RESULT_TRAFFIC_TYPE: Mandatory u8
+ * attribute indicates the traffic type learned for this flow tuple. Uses the
+ * enum qca_traffic_type values.
+ */
+enum qca_wlan_vendor_attr_flow_classify_result {
+ QCA_WLAN_VENDOR_ATTR_FLOW_CLASSIFY_RESULT_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_FLOW_CLASSIFY_RESULT_FLOW_TUPLE = 1,
+ QCA_WLAN_VENDOR_ATTR_FLOW_CLASSIFY_RESULT_TRAFFIC_TYPE = 2,
+
+ /* keep last */
+ QCA_WLAN_VENDOR_ATTR_FLOW_CLASSIFY_RESULT_LAST,
+ QCA_WLAN_VENDOR_ATTR_FLOW_CLASSIFY_RESULT_MAX =
+ QCA_WLAN_VENDOR_ATTR_FLOW_CLASSIFY_RESULT_LAST - 1,
+};
+
+/**
+ * enum qca_async_stats_sub_module - The statistics type used in async
+ * statistics policy.
+ * Used by @QCA_WLAN_VENDOR_ATTR_ASYNC_STATS_POLICY_STATS_TYPE.
+ *
+ * @QCA_ASYNC_STATS_TYPE_POWERSAVE: Wi-Fi powersave statistics
+ *
+ * @QCA_ASYNC_STATS_TYPE_FLOW_STATS: Flow statistics
+ *
+ * @QCA_ASYNC_STATS_TYPE_CLASSIFIED_FLOW_STATS: Classified flow statistics
+ */
+enum qca_async_stats_type {
+ QCA_ASYNC_STATS_TYPE_POWERSAVE = 0,
+ QCA_ASYNC_STATS_TYPE_FLOW_STATS = 1,
+ QCA_ASYNC_STATS_TYPE_CLASSIFIED_FLOW_STATS = 2,
+};
+
+/**
+ * enum qca_async_stats_action - ASYNC statistics action. Used by
+ * @QCA_WLAN_VENDOR_ATTR_ASYNC_STATS_POLICY_ACTION.
+ *
+ * @QCA_ASYNC_STATS_ACTION_START: Start indication for async statistics
+ * collection.
+ * @QCA_ASYNC_STATS_ACTION_STOP: Stop indication for async statistics
+ * collection.
+ */
+enum qca_async_stats_action {
+ QCA_ASYNC_STATS_ACTION_START = 0,
+ QCA_ASYNC_STATS_ACTION_STOP = 1,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_async_stats_policy - Definition of attributes to
+ * specify the ASYNC statistics policy. This enum is used by
+ * @QCA_NL80211_VENDOR_SUBCMD_ASYNC_STATS_POLICY.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_ASYNC_STATS_POLICY_STATS_TYPE: Mandatory u8
+ * attribute indicates the statistics type for which the async statistics policy
+ * needs to be applied by the driver. Uses the enum qca_async_stats_type values.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_ASYNC_STATS_POLICY_ACTION: Mandatory u8 attribute
+ * indicates the action as part of this policy.
+ * Uses the enum qca_async_stats_action values.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_ASYNC_STATS_POLICY_STATS_PERIODICITY: Optional u32
+ * attribute indicates the periodicity (in milliseconds) for the statistics to
+ * be reported. This attribute is mandatory for QCA_ASYNC_STATS_TYPE_POWERSAVE.
+ */
+enum qca_wlan_vendor_attr_async_stats_policy {
+ QCA_WLAN_VENDOR_ATTR_ASYNC_STATS_POLICY_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_ASYNC_STATS_POLICY_STATS_TYPE = 1,
+ QCA_WLAN_VENDOR_ATTR_ASYNC_STATS_POLICY_ACTION = 2,
+ QCA_WLAN_VENDOR_ATTR_ASYNC_STATS_POLICY_STATS_PERIODICITY = 3,
+
+ /* keep last */
+ QCA_WLAN_VENDOR_ATTR_ASYNC_STATS_POLICY_LAST,
+ QCA_WLAN_VENDOR_ATTR_ASYNC_STATS_POLICY_MAX =
+ QCA_WLAN_VENDOR_ATTR_ASYNC_STATS_POLICY_LAST - 1,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_nss_pkt - Attributes used by
+ * %QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_NSS_PKT_COUNT.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_NSS_PKT_NSS_VALUE: u8 attribute. This
+ * represents the number of spatial streams.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_NSS_PKT_TX_PACKET_COUNT: u64 attribute. This
+ * represents the number of MSDU packets transmitted with the number of spatial
+ * streams specified in %QCA_WLAN_VENDOR_ATTR_NSS_PKT_NSS_VALUE.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_NSS_PKT_RX_PACKET_COUNT: u64 attribute. This
+ * represents the number of MSDU packets received with the number of spatial
+ * streams specified in %QCA_WLAN_VENDOR_ATTR_NSS_PKT_NSS_VALUE.
+ */
+enum qca_wlan_vendor_attr_nss_pkt {
+ QCA_WLAN_VENDOR_ATTR_NSS_PKT_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_NSS_PKT_NSS_VALUE = 1,
+ QCA_WLAN_VENDOR_ATTR_NSS_PKT_TX_PACKET_COUNT = 2,
+ QCA_WLAN_VENDOR_ATTR_NSS_PKT_RX_PACKET_COUNT = 3,
+
+ QCA_WLAN_VENDOR_ATTR_NSS_PKT_AFTER_LAST,
+ QCA_WLAN_VENDOR_ATTR_NSS_PKT_MAX =
+ QCA_WLAN_VENDOR_ATTR_NSS_PKT_AFTER_LAST - 1,
+};
+
+/**
+ * enum qca_wlan_intf_offload_type - Definition of available values for
+ * QCA_WLAN_VENDOR_ATTR_CONFIG_INTF_OFFLOAD_TYPE to specify the offload path for
+ * packets handled through a network device.
+ *
+ * There are three offload paths possible for handling packet forwarding between
+ * Ethernet and Wi-Fi network, and which path to use can be configured on a per
+ * netdevice level based on use case. Userspace can choose different options
+ * based on use cases like performance requirements, traffic control features
+ * and limitations provided in each option.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_INTF_OFFLOAD_TYPE_NONE: No acceleration configured.
+ * Packets are processed through the Linux kernel networking stack.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_INTF_OFFLOAD_TYPE_SFE: Packets are processed through
+ * the shortcut forwarding engine (SFE) to bypass the Linux networking stack
+ * for improved throughput performance. This option is applicable for AP, STA,
+ * and Mesh mode and available for all radio designs. From the performance
+ * aspect, this option consumes more CPU compared to the other two options.
+ * Linux traffic control can be further applied with this option to have more
+ * control on the traffic flows.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_INTF_OFFLOAD_TYPE_ACTIVE_VP: Packets are processed
+ * through both hardware and software in this case. Packet classification is
+ * done by the hardware and then the packets are delivered to software along
+ * with classification results as meta data. Software can choose to do more
+ * classification/QoS based on use cases. This is applicable for AP, STA, and
+ * Mesh modes and this is available for all radio designs. From the performance
+ * aspect, this option consumes relatively less CPU compared to the SFE option
+ * above. Linux traffic control rules cannot be applied with this option.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_INTF_OFFLOAD_TYPE_PPE_DS: Packets are processed through
+ * special hardware (Direct Switch) rings which can directly forward the packets
+ * between Ethernet hardware and Wi-Fi hardware with very little software
+ * involvement. This is applicable only for AP and STA modes; not applicable
+ * for Mesh mode. From the performance aspect, this option consumes very much
+ * less CPU compared to the other options. Linux traffic control rules cannot be
+ * applied when this option is used. This option is applicable only for
+ * specific radio designs. When this option is not available, the default option
+ * (SFE) would be configured.
+ */
+enum qca_wlan_intf_offload_type {
+ QCA_WLAN_INTF_OFFLOAD_TYPE_NONE = 0,
+ QCA_WLAN_INTF_OFFLOAD_TYPE_SFE = 1,
+ QCA_WLAN_INTF_OFFLOAD_TYPE_ACTIVE_VP = 2,
+ QCA_WLAN_INTF_OFFLOAD_TYPE_PPE_DS = 3,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_usd_op_type: Attribute values for
+ * %QCA_WLAN_VENDOR_ATTR_USD_OP_TYPE to the vendor subcmd
+ * %QCA_NL80211_VENDOR_SUBCMD_USD. This is a mandatory u8 attribute which
+ * represents the USD command type.
+ *
+ * @QCA_WLAN_VENDOR_USD_OP_TYPE_FLUSH: Indicates USD tear down of all active
+ * publish and subscribe sessions.
+ *
+ * @QCA_WLAN_VENDOR_USD_OP_TYPE_PUBLISH: Indicates USD solicited publish
+ * operation that enables to offer a service for other devices based on
+ * given parameters.
+ *
+ * @QCA_WLAN_VENDOR_USD_OP_TYPE_SUBSCRIBE: Indicates USD active subscribe
+ * operation that requests for a given service with given parameters from
+ * other devices that offer the service.
+ *
+ * @QCA_WLAN_VENDOR_USD_OP_TYPE_UPDATE_PUBLISH: Indicates update of an instance
+ * of the publish function of given publish id.
+ *
+ * @QCA_WLAN_VENDOR_USD_OP_TYPE_CANCEL_PUBLISH: Indicates cancellation of an
+ * instance of the publish function.
+ *
+ * @QCA_WLAN_VENDOR_USD_OP_TYPE_CANCEL_SUBSCRIBE: Indicates cancellation of an
+ * instance of the subscribe function.
+ */
+enum qca_wlan_vendor_attr_an_usd_op_type {
+ QCA_WLAN_VENDOR_USD_OP_TYPE_FLUSH = 0,
+ QCA_WLAN_VENDOR_USD_OP_TYPE_PUBLISH = 1,
+ QCA_WLAN_VENDOR_USD_OP_TYPE_SUBSCRIBE = 2,
+ QCA_WLAN_VENDOR_USD_OP_TYPE_UPDATE_PUBLISH = 3,
+ QCA_WLAN_VENDOR_USD_OP_TYPE_CANCEL_PUBLISH = 4,
+ QCA_WLAN_VENDOR_USD_OP_TYPE_CANCEL_SUBSCRIBE = 5,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_usd_service_protocol_type: Attribute values for
+ * %QCA_WLAN_VENDOR_ATTR_USD_SERVICE_PROTOCOL_TYPE to the vendor subcmd
+ * %QCA_NL80211_VENDOR_SUBCMD_USD. This is a u8 attribute which represents the
+ * USD service protocol type for service specific information.
+ *
+ * @QCA_WLAN_VENDOR_USD_SERVICE_PROTOCOL_TYPE_BONJOUR: Indicates SSI info is
+ * of type Bonjour
+ * @QCA_WLAN_VENDOR_USD_SERVICE_PROTOCOL_TYPE_GENERIC: Indicates SSI info is
+ * of type generic
+ * @QCA_WLAN_VENDOR_USD_SERVICE_PROTOCOL_TYPE_CSA_MATTER: Indicates SSI info
+ * is of type CSA/Matter
+ */
+enum qca_wlan_vendor_attr_usd_service_protocol_type {
+ QCA_WLAN_VENDOR_USD_SERVICE_PROTOCOL_TYPE_BONJOUR = 1,
+ QCA_WLAN_VENDOR_USD_SERVICE_PROTOCOL_TYPE_GENERIC = 2,
+ QCA_WLAN_VENDOR_USD_SERVICE_PROTOCOL_TYPE_CSA_MATTER = 3,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_usd_chan_config - Attributes used inside nested
+ * attribute %QCA_WLAN_VENDOR_ATTR_USD_CHAN_CONFIG.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_USD_CHAN_CONFIG_DEFAULT_FREQ: Required
+ * u32 attribute containing the default channel frequency (MHz).
+ *
+ * @QCA_WLAN_VENDOR_ATTR_USD_CHAN_CONFIG_FREQ_LIST: Optional array of channel
+ * frequencies in MHz (u32) to publish or subscribe.
+ */
+enum qca_wlan_vendor_attr_usd_chan_config {
+ QCA_WLAN_VENDOR_ATTR_USD_CHAN_CONFIG_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_USD_CHAN_CONFIG_DEFAULT_FREQ = 1,
+ QCA_WLAN_VENDOR_ATTR_USD_CHAN_CONFIG_FREQ_LIST = 2,
+
+ QCA_WLAN_VENDOR_ATTR_USD_CHAN_CONFIG_AFTER_LAST,
+ QCA_WLAN_VENDOR_ATTR_USD_CHAN_CONFIG_MAX =
+ QCA_WLAN_VENDOR_ATTR_USD_CHAN_CONFIG_AFTER_LAST - 1,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_usd_status
+ *
+ * @QCA_WLAN_VENDOR_ATTR_USD_STATUS_SUCCESS: USD request success status.
+ * @QCA_WLAN_VENDOR_ATTR_USD_STATUS_FAILED: USD request failed status.
+ */
+enum qca_wlan_vendor_attr_usd_status {
+ QCA_WLAN_VENDOR_ATTR_USD_STATUS_SUCCESS,
+ QCA_WLAN_VENDOR_ATTR_USD_STATUS_FAILED,
+};
+
+/* enum qca_wlan_vendor_attr_usd: Attributes used by vendor command
+ * %QCA_NL80211_VENDOR_SUBCMD_USD.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_USD_SRC_ADDR: 6-byte source MAC address
+ * Mandatory attribute used with type
+ * %QCA_WLAN_VENDOR_USD_OP_TYPE_PUBLISH and
+ * %QCA_WLAN_VENDOR_USD_OP_TYPE_SUBSCRIBE.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_USD_OP_TYPE: Required u8 attribute.
+ * It indicates the type of the USD command. It uses values defined in enum
+ * qca_wlan_vendor_attr_usd_op_type.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_USD_INSTANCE_ID: Required u8 attribute.
+ * It contains the publisher/subscribe id that is specific to the
+ * publish/subscribe instance.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_USD_SERVICE_ID: Required 6-byte attribute.
+ * It contains the service id that is specific to the service being
+ * published/subscribed.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_USD_SERVICE_PROTOCOL_TYPE: u8 attribute that indicates
+ * the service protocol type of service specific info. It uses values
+ * defined in enum qca_wlan_vendor_attr_usd_service_protocol_type. It is
+ * applicable when %QCA_WLAN_VENDOR_ATTR_USD_SSI is present.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_USD_SSI: u8 array containing service specific
+ * information that has to be conveyed in publish/subscribe message.
+ * Optional attribute used with type
+ * %QCA_WLAN_VENDOR_USD_OP_TYPE_PUBLISH,
+ * %QCA_WLAN_VENDOR_USD_OP_TYPE_SUBSCRIBE, and
+ * %QCA_WLAN_VENDOR_USD_OP_TYPE_UPDATE_PUBLISH.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_USD_CHAN_CONFIG: Nested attribute containing USD
+ * channel configuration parameters.
+ * Required for type %QCA_WLAN_VENDOR_USD_OP_TYPE_PUBLISH and
+ * %QCA_WLAN_VENDOR_USD_OP_TYPE_SUBSCRIBE.
+ * See enum qca_wlan_vendor_attr_usd_chan_config for nested attributes.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_USD_ELEMENT_CONTAINER: u8 array containing a USD
+ * element container buffer that has to be conveyed in publish/subscribe
+ * message.
+ * Required for type %QCA_WLAN_VENDOR_USD_OP_TYPE_PUBLISH and
+ * %QCA_WLAN_VENDOR_USD_OP_TYPE_SUBSCRIBE.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_USD_TTL: u16 attribute. Indicates the timeout
+ * for each request in seconds. Timeout value 0 represents single time
+ * operation.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_USD_STATUS: u8 attribute. Status received in event
+ * indicating whether the underlying driver/firmware has started the USD
+ * operation as indicated by attributes
+ * %QCA_WLAN_VENDOR_ATTR_USD_OP_TYPE and
+ * %QCA_WLAN_VENDOR_ATTR_USD_INSTANCE_ID.
+ * enum qca_wlan_vendor_attr_usd_status indicates status values.
+ */
+enum qca_wlan_vendor_attr_usd {
+ QCA_WLAN_VENDOR_ATTR_USD_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_USD_SRC_ADDR = 1,
+ QCA_WLAN_VENDOR_ATTR_USD_OP_TYPE = 2,
+ QCA_WLAN_VENDOR_ATTR_USD_INSTANCE_ID = 3,
+ QCA_WLAN_VENDOR_ATTR_USD_SERVICE_ID = 4,
+ QCA_WLAN_VENDOR_ATTR_USD_SERVICE_PROTOCOL_TYPE = 5,
+ QCA_WLAN_VENDOR_ATTR_USD_SSI = 6,
+ QCA_WLAN_VENDOR_ATTR_USD_CHAN_CONFIG = 7,
+ QCA_WLAN_VENDOR_ATTR_USD_ELEMENT_CONTAINER = 8,
+ QCA_WLAN_VENDOR_ATTR_USD_TTL = 9,
+ QCA_WLAN_VENDOR_ATTR_USD_STATUS = 10,
+
+ QCA_WLAN_VENDOR_ATTR_USD_AFTER_LAST,
+ QCA_WLAN_VENDOR_ATTR_USD_MAX =
+ QCA_WLAN_VENDOR_ATTR_USD_AFTER_LAST - 1,
+};
+
#endif /* QCA_VENDOR_H */
diff --git a/src/common/sae.c b/src/common/sae.c
index f1c164e..a65da61 100644
--- a/src/common/sae.c
+++ b/src/common/sae.c
@@ -2103,8 +2103,11 @@
wpa_hexdump(MSG_DEBUG, "SAE: Possible elements at the end of the frame",
*pos, end - *pos);
- if (!sae_is_rejected_groups_elem(*pos, end))
+ if (!sae_is_rejected_groups_elem(*pos, end)) {
+ wpabuf_free(sae->tmp->peer_rejected_groups);
+ sae->tmp->peer_rejected_groups = NULL;
return WLAN_STATUS_SUCCESS;
+ }
epos = *pos;
epos++; /* skip IE type */
@@ -2113,6 +2116,12 @@
return WLAN_STATUS_UNSPECIFIED_FAILURE;
epos++; /* skip ext ID */
len--;
+ if (len & 1) {
+ wpa_printf(MSG_DEBUG,
+ "SAE: Invalid length of the Rejected Groups element payload: %u",
+ len);
+ return WLAN_STATUS_UNSPECIFIED_FAILURE;
+ }
wpabuf_free(sae->tmp->peer_rejected_groups);
sae->tmp->peer_rejected_groups = wpabuf_alloc(len);
@@ -2196,6 +2205,9 @@
res = sae_parse_rejected_groups(sae, &pos, end);
if (res != WLAN_STATUS_SUCCESS)
return res;
+ } else {
+ wpabuf_free(sae->tmp->peer_rejected_groups);
+ sae->tmp->peer_rejected_groups = NULL;
}
/* Optional Anti-Clogging Token Container element */
diff --git a/src/common/sae.h b/src/common/sae.h
index c446da3..a353aa8 100644
--- a/src/common/sae.h
+++ b/src/common/sae.h
@@ -82,6 +82,8 @@
bool omit_pk_elem;
#endif /* CONFIG_TESTING_OPTIONS */
#endif /* CONFIG_SAE_PK */
+
+ struct os_reltime disabled_until;
};
struct sae_pt {
diff --git a/src/common/version.h b/src/common/version.h
index 4409e1c..9e0fbc0 100644
--- a/src/common/version.h
+++ b/src/common/version.h
@@ -9,6 +9,6 @@
#define GIT_VERSION_STR_POSTFIX ""
#endif /* GIT_VERSION_STR_POSTFIX */
-#define VERSION_STR "2.11-devel" VERSION_STR_POSTFIX GIT_VERSION_STR_POSTFIX
+#define VERSION_STR "2.12-devel" VERSION_STR_POSTFIX GIT_VERSION_STR_POSTFIX
#endif /* VERSION_H */
diff --git a/src/common/wpa_common.c b/src/common/wpa_common.c
index 6ea3311..8eb4a1d 100644
--- a/src/common/wpa_common.c
+++ b/src/common/wpa_common.c
@@ -1031,9 +1031,6 @@
const u8 *end, *pos;
u8 link_id;
- parse->ftie = ie;
- parse->ftie_len = ie_len;
-
pos = opt;
end = ie + ie_len;
wpa_hexdump(MSG_DEBUG, "FT: Parse FTE subelements", pos, end - pos);
@@ -1339,6 +1336,11 @@
}
if (res < 0)
goto fail;
+
+ /* FTE might be fragmented. If it is, the separate Fragment
+ * elements are included in MIC calculation as full elements. */
+ parse->ftie = fte;
+ parse->ftie_len = fte_len;
}
if (prot_ie_count == 0)
@@ -1888,6 +1890,14 @@
data->has_group = 1;
data->key_mgmt = WPA_KEY_MGMT_OSEN;
data->proto = WPA_PROTO_OSEN;
+ } else if (rsn_ie_len >= 2 + 4 + 2 && rsn_ie[1] >= 4 + 2 &&
+ rsn_ie[1] == rsn_ie_len - 2 &&
+ (WPA_GET_BE32(&rsn_ie[2]) == RSNE_OVERRIDE_IE_VENDOR_TYPE ||
+ WPA_GET_BE32(&rsn_ie[2]) ==
+ RSNE_OVERRIDE_2_IE_VENDOR_TYPE) &&
+ WPA_GET_LE16(&rsn_ie[2 + 4]) == RSN_VERSION) {
+ pos = rsn_ie + 2 + 4 + 2;
+ left = rsn_ie_len - 2 - 4 - 2;
} else {
const struct rsn_ie_hdr *hdr;
@@ -3743,6 +3753,11 @@
ie->supp_oper_classes = pos + 2;
ie->supp_oper_classes_len = pos[1];
}
+ } else if (*pos == WLAN_EID_SSID) {
+ ie->ssid = pos + 2;
+ ie->ssid_len = pos[1];
+ wpa_hexdump_ascii(MSG_DEBUG, "RSN: SSID in EAPOL-Key",
+ ie->ssid, ie->ssid_len);
} else if (*pos == WLAN_EID_VENDOR_SPECIFIC) {
ret = wpa_parse_generic(pos, ie);
if (ret == 1) {
diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h
index 01efeea..1e31368 100644
--- a/src/common/wpa_common.h
+++ b/src/common/wpa_common.h
@@ -17,6 +17,7 @@
#define PMK_LEN_SUITE_B_192 48
#define PMK_LEN_MAX 64
#define WPA_REPLAY_COUNTER_LEN 8
+#define RSN_PN_LEN 6
#define WPA_NONCE_LEN 32
#define WPA_KEY_RSC_LEN 8
#define WPA_GMK_LEN 32
@@ -338,52 +339,54 @@
} STRUCT_PACKED;
+#define KDE_HDR_LEN (1 + 1 + RSN_SELECTOR_LEN)
+
struct rsn_error_kde {
be16 mui;
be16 error_type;
} STRUCT_PACKED;
-#define WPA_IGTK_KDE_PREFIX_LEN (2 + 6)
+#define WPA_IGTK_KDE_PREFIX_LEN (2 + RSN_PN_LEN)
struct wpa_igtk_kde {
u8 keyid[2];
- u8 pn[6];
+ u8 pn[RSN_PN_LEN];
u8 igtk[WPA_IGTK_MAX_LEN];
} STRUCT_PACKED;
-#define WPA_BIGTK_KDE_PREFIX_LEN (2 + 6)
+#define WPA_BIGTK_KDE_PREFIX_LEN (2 + RSN_PN_LEN)
struct wpa_bigtk_kde {
u8 keyid[2];
- u8 pn[6];
+ u8 pn[RSN_PN_LEN];
u8 bigtk[WPA_BIGTK_MAX_LEN];
} STRUCT_PACKED;
-#define RSN_MLO_GTK_KDE_PREFIX_LENGTH (1 + 6)
+#define RSN_MLO_GTK_KDE_PREFIX_LENGTH (1 + RSN_PN_LEN)
#define RSN_MLO_GTK_KDE_PREFIX0_KEY_ID_MASK 0x03
#define RSN_MLO_GTK_KDE_PREFIX0_TX 0x04
#define RSN_MLO_GTK_KDE_PREFIX0_LINK_ID_SHIFT 4
#define RSN_MLO_GTK_KDE_PREFIX0_LINK_ID_MASK 0xF0
-#define RSN_MLO_IGTK_KDE_PREFIX_LENGTH (2 + 6 + 1)
+#define RSN_MLO_IGTK_KDE_PREFIX_LENGTH (2 + RSN_PN_LEN + 1)
#define RSN_MLO_IGTK_KDE_PREFIX8_LINK_ID_SHIFT 4
#define RSN_MLO_IGTK_KDE_PREFIX8_LINK_ID_MASK 0xF0
struct rsn_mlo_igtk_kde {
u8 keyid[2];
- u8 pn[6];
+ u8 pn[RSN_PN_LEN];
u8 prefix8;
u8 igtk[WPA_IGTK_MAX_LEN];
} STRUCT_PACKED;
-#define RSN_MLO_BIGTK_KDE_PREFIX_LENGTH (2 + 6 + 1)
+#define RSN_MLO_BIGTK_KDE_PREFIX_LENGTH (2 + RSN_PN_LEN + 1)
#define RSN_MLO_BIGTK_KDE_PREFIX8_LINK_ID_SHIFT 4
#define RSN_MLO_BIGTK_KDE_PREFIX8_LINK_ID_MASK 0xF0
struct rsn_mlo_bigtk_kde {
u8 keyid[2];
- u8 pn[6];
+ u8 pn[RSN_PN_LEN];
u8 prefix8;
u8 bigtk[WPA_BIGTK_MAX_LEN];
} STRUCT_PACKED;
-#define RSN_MLO_LINK_KDE_FIXED_LENGTH (1 + 6)
+#define RSN_MLO_LINK_KDE_FIXED_LENGTH (1 + ETH_ALEN)
#define RSN_MLO_LINK_KDE_LINK_INFO_INDEX 0
#define RSN_MLO_LINK_KDE_LI_LINK_ID_SHIFT 0
#define RSN_MLO_LINK_KDE_LI_LINK_ID_MASK 0x0F
@@ -695,6 +698,8 @@
size_t supp_channels_len;
const u8 *supp_oper_classes;
size_t supp_oper_classes_len;
+ const u8 *ssid;
+ size_t ssid_len;
u8 qosinfo;
u16 aid;
const u8 *wmm;