]> git.ipfire.org Git - thirdparty/iw.git/blame - nl80211.h
iw: update nl80211.h
[thirdparty/iw.git] / nl80211.h
CommitLineData
f408e01b
JB
1#ifndef __LINUX_NL80211_H
2#define __LINUX_NL80211_H
3/*
4 * 802.11 netlink interface public header
5 *
83037d1b 6 * Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net>
767eb647
JB
7 * Copyright 2008 Michael Wu <flamingice@sourmilk.net>
8 * Copyright 2008 Luis Carlos Cobo <luisca@cozybit.com>
bea987cd 9 * Copyright 2008 Michael Buesch <m@bues.ch>
28566668 10 * Copyright 2008, 2009 Luis R. Rodriguez <lrodriguez@atheros.com>
767eb647
JB
11 * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com>
12 * Copyright 2008 Colin McCabe <colin@cozybit.com>
8a9e0b30 13 * Copyright 2015-2017 Intel Deutschland GmbH
cb07eab1 14 * Copyright (C) 2018-2020 Intel Corporation
767eb647
JB
15 *
16 * Permission to use, copy, modify, and/or distribute this software for any
17 * purpose with or without fee is hereby granted, provided that the above
18 * copyright notice and this permission notice appear in all copies.
19 *
20 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
21 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
22 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
23 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
24 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
25 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
26 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
27 *
f408e01b
JB
28 */
29
a9e38041
JB
30/*
31 * This header file defines the userspace API to the wireless stack. Please
32 * be careful not to break things - i.e. don't move anything around or so
33 * unless you can demonstrate that it breaks neither API nor ABI.
34 *
35 * Additions to the API should be accompanied by actual implementations in
36 * an upstream driver, so that example implementations exist in case there
37 * are ever concerns about the precise semantics of the API or changes are
38 * needed, and to ensure that code for dead (no longer implemented) API
39 * can actually be identified and removed.
40 * Nonetheless, semantics should also be documented carefully in this file.
41 */
42
d8004bdd
JB
43#include <linux/types.h>
44
0fd08e2e
JB
45#define NL80211_GENL_NAME "nl80211"
46
a67b2d9c
JB
47#define NL80211_MULTICAST_GROUP_CONFIG "config"
48#define NL80211_MULTICAST_GROUP_SCAN "scan"
49#define NL80211_MULTICAST_GROUP_REG "regulatory"
50#define NL80211_MULTICAST_GROUP_MLME "mlme"
51#define NL80211_MULTICAST_GROUP_VENDOR "vendor"
a574be4b 52#define NL80211_MULTICAST_GROUP_NAN "nan"
a67b2d9c
JB
53#define NL80211_MULTICAST_GROUP_TESTMODE "testmode"
54
0c1a26b5
JB
55#define NL80211_EDMG_BW_CONFIG_MIN 4
56#define NL80211_EDMG_BW_CONFIG_MAX 15
57#define NL80211_EDMG_CHANNELS_MIN 1
58#define NL80211_EDMG_CHANNELS_MAX 0x3c /* 0b00111100 */
59
f408e01b
JB
60/**
61 * DOC: Station handling
62 *
63 * Stations are added per interface, but a special case exists with VLAN
64 * interfaces. When a station is bound to an AP interface, it may be moved
65 * into a VLAN identified by a VLAN interface index (%NL80211_ATTR_STA_VLAN).
66 * The station is still assumed to belong to the AP interface it was added
67 * to.
68 *
ac38f8ad
JB
69 * Station handling varies per interface type and depending on the driver's
70 * capabilities.
71 *
72 * For drivers supporting TDLS with external setup (WIPHY_FLAG_SUPPORTS_TDLS
73 * and WIPHY_FLAG_TDLS_EXTERNAL_SETUP), the station lifetime is as follows:
74 * - a setup station entry is added, not yet authorized, without any rate
75 * or capability information, this just exists to avoid race conditions
76 * - when the TDLS setup is done, a single NL80211_CMD_SET_STATION is valid
77 * to add rate and capability information to the station and at the same
78 * time mark it authorized.
79 * - %NL80211_TDLS_ENABLE_LINK is then used
80 * - after this, the only valid operation is to remove it by tearing down
81 * the TDLS link (%NL80211_TDLS_DISABLE_LINK)
82 *
83 * TODO: need more info for other interface types
f408e01b
JB
84 */
85
0c560ade
JB
86/**
87 * DOC: Frame transmission/registration support
88 *
89 * Frame transmission and registration support exists to allow userspace
90 * management entities such as wpa_supplicant react to management frames
91 * that are not being handled by the kernel. This includes, for example,
92 * certain classes of action frames that cannot be handled in the kernel
93 * for various reasons.
94 *
95 * Frame registration is done on a per-interface basis and registrations
96 * cannot be removed other than by closing the socket. It is possible to
97 * specify a registration filter to register, for example, only for a
98 * certain type of action frame. In particular with action frames, those
99 * that userspace registers for will not be returned as unhandled by the
100 * driver, so that the registered application has to take responsibility
101 * for doing that.
102 *
103 * The type of frame that can be registered for is also dependent on the
104 * driver and interface type. The frame types are advertised in wiphy
105 * attributes so applications know what to expect.
106 *
107 * NOTE: When an interface changes type while registrations are active,
108 * these registrations are ignored until the interface type is
109 * changed again. This means that changing the interface type can
110 * lead to a situation that couldn't otherwise be produced, but
111 * any such registrations will be dormant in the sense that they
112 * will not be serviced, i.e. they will not receive any frames.
113 *
114 * Frame transmission allows userspace to send for example the required
115 * responses to action frames. It is subject to some sanity checking,
116 * but many frames can be transmitted. When a frame was transmitted, its
117 * status is indicated to the sending socket.
118 *
119 * For more technical details, see the corresponding command descriptions
120 * below.
121 */
122
a3edacac
JB
123/**
124 * DOC: Virtual interface / concurrency capabilities
125 *
126 * Some devices are able to operate with virtual MACs, they can have
127 * more than one virtual interface. The capability handling for this
128 * is a bit complex though, as there may be a number of restrictions
129 * on the types of concurrency that are supported.
130 *
131 * To start with, each device supports the interface types listed in
132 * the %NL80211_ATTR_SUPPORTED_IFTYPES attribute, but by listing the
133 * types there no concurrency is implied.
134 *
135 * Once concurrency is desired, more attributes must be observed:
136 * To start with, since some interface types are purely managed in
137 * software, like the AP-VLAN type in mac80211 for example, there's
138 * an additional list of these, they can be added at any time and
139 * are only restricted by some semantic restrictions (e.g. AP-VLAN
140 * cannot be added without a corresponding AP interface). This list
141 * is exported in the %NL80211_ATTR_SOFTWARE_IFTYPES attribute.
142 *
143 * Further, the list of supported combinations is exported. This is
144 * in the %NL80211_ATTR_INTERFACE_COMBINATIONS attribute. Basically,
145 * it exports a list of "groups", and at any point in time the
146 * interfaces that are currently active must fall into any one of
147 * the advertised groups. Within each group, there are restrictions
148 * on the number of interfaces of different types that are supported
149 * and also the number of different channels, along with potentially
150 * some other restrictions. See &enum nl80211_if_combination_attrs.
151 *
152 * All together, these attributes define the concurrency of virtual
153 * interfaces that a given device supports.
154 */
155
0fd08e2e
JB
156/**
157 * DOC: packet coalesce support
158 *
159 * In most cases, host that receives IPv4 and IPv6 multicast/broadcast
160 * packets does not do anything with these packets. Therefore the
161 * reception of these unwanted packets causes unnecessary processing
162 * and power consumption.
163 *
164 * Packet coalesce feature helps to reduce number of received interrupts
165 * to host by buffering these packets in firmware/hardware for some
166 * predefined time. Received interrupt will be generated when one of the
167 * following events occur.
168 * a) Expiration of hardware timer whose expiration time is set to maximum
169 * coalescing delay of matching coalesce rule.
170 * b) Coalescing buffer in hardware reaches it's limit.
171 * c) Packet doesn't match any of the configured coalesce rules.
172 *
173 * User needs to configure following parameters for creating a coalesce
174 * rule.
175 * a) Maximum coalescing delay
176 * b) List of packet patterns which needs to be matched
177 * c) Condition for coalescence. pattern 'match' or 'no match'
178 * Multiple such rules can be created.
179 */
180
7e0a7c40
JB
181/**
182 * DOC: WPA/WPA2 EAPOL handshake offload
183 *
184 * By setting @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK flag drivers
185 * can indicate they support offloading EAPOL handshakes for WPA/WPA2
186 * preshared key authentication. In %NL80211_CMD_CONNECT the preshared
187 * key should be specified using %NL80211_ATTR_PMK. Drivers supporting
188 * this offload may reject the %NL80211_CMD_CONNECT when no preshared
189 * key material is provided, for example when that driver does not
190 * support setting the temporal keys through %CMD_NEW_KEY.
191 *
192 * Similarly @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X flag can be
193 * set by drivers indicating offload support of the PTK/GTK EAPOL
194 * handshakes during 802.1X authentication. In order to use the offload
195 * the %NL80211_CMD_CONNECT should have %NL80211_ATTR_WANT_1X_4WAY_HS
196 * attribute flag. Drivers supporting this offload may reject the
197 * %NL80211_CMD_CONNECT when the attribute flag is not present.
198 *
199 * For 802.1X the PMK or PMK-R0 are set by providing %NL80211_ATTR_PMK
200 * using %NL80211_CMD_SET_PMK. For offloaded FT support also
201 * %NL80211_ATTR_PMKR0_NAME must be provided.
202 */
203
204/**
205 * DOC: FILS shared key authentication offload
206 *
207 * FILS shared key authentication offload can be advertized by drivers by
208 * setting @NL80211_EXT_FEATURE_FILS_SK_OFFLOAD flag. The drivers that support
209 * FILS shared key authentication offload should be able to construct the
210 * authentication and association frames for FILS shared key authentication and
211 * eventually do a key derivation as per IEEE 802.11ai. The below additional
75b78ff8
JB
212 * parameters should be given to driver in %NL80211_CMD_CONNECT and/or in
213 * %NL80211_CMD_UPDATE_CONNECT_PARAMS.
7e0a7c40
JB
214 * %NL80211_ATTR_FILS_ERP_USERNAME - used to construct keyname_nai
215 * %NL80211_ATTR_FILS_ERP_REALM - used to construct keyname_nai
216 * %NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM - used to construct erp message
217 * %NL80211_ATTR_FILS_ERP_RRK - used to generate the rIK and rMSK
218 * rIK should be used to generate an authentication tag on the ERP message and
219 * rMSK should be used to derive a PMKSA.
220 * rIK, rMSK should be generated and keyname_nai, sequence number should be used
221 * as specified in IETF RFC 6696.
222 *
223 * When FILS shared key authentication is completed, driver needs to provide the
75b78ff8
JB
224 * below additional parameters to userspace, which can be either after setting
225 * up a connection or after roaming.
7e0a7c40
JB
226 * %NL80211_ATTR_FILS_KEK - used for key renewal
227 * %NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM - used in further EAP-RP exchanges
228 * %NL80211_ATTR_PMKID - used to identify the PMKSA used/generated
229 * %Nl80211_ATTR_PMK - used to update PMKSA cache in userspace
230 * The PMKSA can be maintained in userspace persistently so that it can be used
231 * later after reboots or wifi turn off/on also.
232 *
233 * %NL80211_ATTR_FILS_CACHE_ID is the cache identifier advertized by a FILS
234 * capable AP supporting PMK caching. It specifies the scope within which the
235 * PMKSAs are cached in an ESS. %NL80211_CMD_SET_PMKSA and
236 * %NL80211_CMD_DEL_PMKSA are enhanced to allow support for PMKSA caching based
237 * on FILS cache identifier. Additionally %NL80211_ATTR_PMK is used with
238 * %NL80211_SET_PMKSA to specify the PMK corresponding to a PMKSA for driver to
239 * use in a FILS shared key connection with PMKSA caching.
240 */
241
a0c07e4f
JB
242/**
243 * DOC: SAE authentication offload
244 *
245 * By setting @NL80211_EXT_FEATURE_SAE_OFFLOAD flag drivers can indicate they
246 * support offloading SAE authentication for WPA3-Personal networks. In
247 * %NL80211_CMD_CONNECT the password for SAE should be specified using
248 * %NL80211_ATTR_SAE_PASSWORD.
249 */
250
e9b59588
JB
251/**
252 * DOC: VLAN offload support for setting group keys and binding STAs to VLANs
253 *
254 * By setting @NL80211_EXT_FEATURE_VLAN_OFFLOAD flag drivers can indicate they
255 * support offloading VLAN functionality in a manner where the driver exposes a
256 * single netdev that uses VLAN tagged frames and separate VLAN-specific netdevs
257 * can then be added using RTM_NEWLINK/IFLA_VLAN_ID similarly to the Ethernet
258 * case. Frames received from stations that are not assigned to any VLAN are
259 * delivered on the main netdev and frames to such stations can be sent through
260 * that main netdev.
261 *
262 * %NL80211_CMD_NEW_KEY (for group keys), %NL80211_CMD_NEW_STATION, and
263 * %NL80211_CMD_SET_STATION will optionally specify vlan_id using
264 * %NL80211_ATTR_VLAN_ID.
265 */
266
cb07eab1
JB
267/**
268 * DOC: TID configuration
269 *
270 * TID config support can be checked in the %NL80211_ATTR_TID_CONFIG
271 * attribute given in wiphy capabilities.
272 *
273 * The necessary configuration parameters are mentioned in
274 * &enum nl80211_tid_config_attr and it will be passed to the
275 * %NL80211_CMD_SET_TID_CONFIG command in %NL80211_ATTR_TID_CONFIG.
276 *
277 * If the configuration needs to be applied for specific peer then the MAC
278 * address of the peer needs to be passed in %NL80211_ATTR_MAC, otherwise the
279 * configuration will be applied for all the connected peers in the vif except
280 * any peers that have peer specific configuration for the TID by default; if
281 * the %NL80211_TID_CONFIG_ATTR_OVERRIDE flag is set, peer specific values
282 * will be overwritten.
283 *
284 * All this configuration is valid only for STA's current connection
285 * i.e. the configuration will be reset to default when the STA connects back
286 * after disconnection/roaming, and this configuration will be cleared when
287 * the interface goes down.
288 */
289
f408e01b
JB
290/**
291 * enum nl80211_commands - supported nl80211 commands
292 *
293 * @NL80211_CMD_UNSPEC: unspecified command to catch errors
294 *
295 * @NL80211_CMD_GET_WIPHY: request information about a wiphy or dump request
296 * to get a list of all present wiphys.
767eb647
JB
297 * @NL80211_CMD_SET_WIPHY: set wiphy parameters, needs %NL80211_ATTR_WIPHY or
298 * %NL80211_ATTR_IFINDEX; can be used to set %NL80211_ATTR_WIPHY_NAME,
068ff94a
JB
299 * %NL80211_ATTR_WIPHY_TXQ_PARAMS, %NL80211_ATTR_WIPHY_FREQ (and the
300 * attributes determining the channel width; this is used for setting
301 * monitor mode channel), %NL80211_ATTR_WIPHY_RETRY_SHORT,
80e02110
JB
302 * %NL80211_ATTR_WIPHY_RETRY_LONG, %NL80211_ATTR_WIPHY_FRAG_THRESHOLD,
303 * and/or %NL80211_ATTR_WIPHY_RTS_THRESHOLD.
e1dbf1b8
JB
304 * However, for setting the channel, see %NL80211_CMD_SET_CHANNEL
305 * instead, the support here is for backward compatibility only.
f408e01b
JB
306 * @NL80211_CMD_NEW_WIPHY: Newly created wiphy, response to get request
307 * or rename notification. Has attributes %NL80211_ATTR_WIPHY and
308 * %NL80211_ATTR_WIPHY_NAME.
309 * @NL80211_CMD_DEL_WIPHY: Wiphy deleted. Has attributes
310 * %NL80211_ATTR_WIPHY and %NL80211_ATTR_WIPHY_NAME.
311 *
312 * @NL80211_CMD_GET_INTERFACE: Request an interface's configuration;
a67b2d9c
JB
313 * either a dump request for all interfaces or a specific get with a
314 * single %NL80211_ATTR_IFINDEX is supported.
f408e01b
JB
315 * @NL80211_CMD_SET_INTERFACE: Set type of a virtual interface, requires
316 * %NL80211_ATTR_IFINDEX and %NL80211_ATTR_IFTYPE.
317 * @NL80211_CMD_NEW_INTERFACE: Newly created virtual interface or response
318 * to %NL80211_CMD_GET_INTERFACE. Has %NL80211_ATTR_IFINDEX,
319 * %NL80211_ATTR_WIPHY and %NL80211_ATTR_IFTYPE attributes. Can also
320 * be sent from userspace to request creation of a new virtual interface,
321 * then requires attributes %NL80211_ATTR_WIPHY, %NL80211_ATTR_IFTYPE and
322 * %NL80211_ATTR_IFNAME.
323 * @NL80211_CMD_DEL_INTERFACE: Virtual interface was deleted, has attributes
324 * %NL80211_ATTR_IFINDEX and %NL80211_ATTR_WIPHY. Can also be sent from
325 * userspace to request deletion of a virtual interface, then requires
326 * attribute %NL80211_ATTR_IFINDEX.
327 *
328 * @NL80211_CMD_GET_KEY: Get sequence counter information for a key specified
329 * by %NL80211_ATTR_KEY_IDX and/or %NL80211_ATTR_MAC.
4e6d3cb8
JB
330 * @NL80211_CMD_SET_KEY: Set key attributes %NL80211_ATTR_KEY_DEFAULT,
331 * %NL80211_ATTR_KEY_DEFAULT_MGMT, or %NL80211_ATTR_KEY_THRESHOLD.
f408e01b 332 * @NL80211_CMD_NEW_KEY: add a key with given %NL80211_ATTR_KEY_DATA,
d8004bdd
JB
333 * %NL80211_ATTR_KEY_IDX, %NL80211_ATTR_MAC, %NL80211_ATTR_KEY_CIPHER,
334 * and %NL80211_ATTR_KEY_SEQ attributes.
f408e01b
JB
335 * @NL80211_CMD_DEL_KEY: delete a key identified by %NL80211_ATTR_KEY_IDX
336 * or %NL80211_ATTR_MAC.
337 *
b78ae2b1
JB
338 * @NL80211_CMD_GET_BEACON: (not used)
339 * @NL80211_CMD_SET_BEACON: change the beacon on an access point interface
340 * using the %NL80211_ATTR_BEACON_HEAD and %NL80211_ATTR_BEACON_TAIL
341 * attributes. For drivers that generate the beacon and probe responses
342 * internally, the following attributes must be provided: %NL80211_ATTR_IE,
343 * %NL80211_ATTR_IE_PROBE_RESP and %NL80211_ATTR_IE_ASSOC_RESP.
344 * @NL80211_CMD_START_AP: Start AP operation on an AP interface, parameters
345 * are like for %NL80211_CMD_SET_BEACON, and additionally parameters that
346 * do not change are used, these include %NL80211_ATTR_BEACON_INTERVAL,
347 * %NL80211_ATTR_DTIM_PERIOD, %NL80211_ATTR_SSID,
bea987cd
JB
348 * %NL80211_ATTR_HIDDEN_SSID, %NL80211_ATTR_CIPHERS_PAIRWISE,
349 * %NL80211_ATTR_CIPHER_GROUP, %NL80211_ATTR_WPA_VERSIONS,
350 * %NL80211_ATTR_AKM_SUITES, %NL80211_ATTR_PRIVACY,
d7bfeaa0
JB
351 * %NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_INACTIVITY_TIMEOUT,
352 * %NL80211_ATTR_ACL_POLICY and %NL80211_ATTR_MAC_ADDRS.
869982f5 353 * The channel to use can be set on the interface or be given using the
068ff94a 354 * %NL80211_ATTR_WIPHY_FREQ and the attributes determining channel width.
b78ae2b1
JB
355 * @NL80211_CMD_NEW_BEACON: old alias for %NL80211_CMD_START_AP
356 * @NL80211_CMD_STOP_AP: Stop AP operation on the given interface
357 * @NL80211_CMD_DEL_BEACON: old alias for %NL80211_CMD_STOP_AP
f408e01b
JB
358 *
359 * @NL80211_CMD_GET_STATION: Get station attributes for station identified by
360 * %NL80211_ATTR_MAC on the interface identified by %NL80211_ATTR_IFINDEX.
361 * @NL80211_CMD_SET_STATION: Set station attributes for station identified by
362 * %NL80211_ATTR_MAC on the interface identified by %NL80211_ATTR_IFINDEX.
363 * @NL80211_CMD_NEW_STATION: Add a station with given attributes to the
364 * the interface identified by %NL80211_ATTR_IFINDEX.
365 * @NL80211_CMD_DEL_STATION: Remove a station identified by %NL80211_ATTR_MAC
366 * or, if no MAC address given, all stations, on the interface identified
d1bc0ebc
JB
367 * by %NL80211_ATTR_IFINDEX. %NL80211_ATTR_MGMT_SUBTYPE and
368 * %NL80211_ATTR_REASON_CODE can optionally be used to specify which type
369 * of disconnection indication should be sent to the station
370 * (Deauthentication or Disassociation frame and reason code for that
371 * frame).
f408e01b
JB
372 *
373 * @NL80211_CMD_GET_MPATH: Get mesh path attributes for mesh path to
374 * destination %NL80211_ATTR_MAC on the interface identified by
375 * %NL80211_ATTR_IFINDEX.
376 * @NL80211_CMD_SET_MPATH: Set mesh path attributes for mesh path to
377 * destination %NL80211_ATTR_MAC on the interface identified by
378 * %NL80211_ATTR_IFINDEX.
9b13eeba
JB
379 * @NL80211_CMD_NEW_MPATH: Create a new mesh path for the destination given by
380 * %NL80211_ATTR_MAC via %NL80211_ATTR_MPATH_NEXT_HOP.
381 * @NL80211_CMD_DEL_MPATH: Delete a mesh path to the destination given by
382 * %NL80211_ATTR_MAC.
f408e01b
JB
383 * @NL80211_CMD_NEW_PATH: Add a mesh path with given attributes to the
384 * the interface identified by %NL80211_ATTR_IFINDEX.
385 * @NL80211_CMD_DEL_PATH: Remove a mesh path identified by %NL80211_ATTR_MAC
386 * or, if no MAC address given, all mesh paths, on the interface identified
387 * by %NL80211_ATTR_IFINDEX.
388 * @NL80211_CMD_SET_BSS: Set BSS attributes for BSS identified by
389 * %NL80211_ATTR_IFINDEX.
390 *
7ab65227 391 * @NL80211_CMD_GET_REG: ask the wireless core to send us its currently set
2ca8bfa0
JB
392 * regulatory domain. If %NL80211_ATTR_WIPHY is specified and the device
393 * has a private regulatory domain, it will be returned. Otherwise, the
394 * global regdomain will be returned.
395 * A device will have a private regulatory domain if it uses the
396 * regulatory_hint() API. Even when a private regdomain is used the channel
397 * information will still be mended according to further hints from
398 * the regulatory core to help with compliance. A dump version of this API
399 * is now available which will returns the global regdomain as well as
400 * all private regdomains of present wiphys (for those that have it).
401 * If a wiphy is self-managed (%NL80211_ATTR_WIPHY_SELF_MANAGED_REG), then
402 * its private regdomain is the only valid one for it. The regulatory
403 * core is not used to help with compliance in this case.
f408e01b
JB
404 * @NL80211_CMD_SET_REG: Set current regulatory domain. CRDA sends this command
405 * after being queried by the kernel. CRDA replies by sending a regulatory
406 * domain structure which consists of %NL80211_ATTR_REG_ALPHA set to our
407 * current alpha2 if it found a match. It also provides
408 * NL80211_ATTR_REG_RULE_FLAGS, and a set of regulatory rules. Each
409 * regulatory rule is a nested set of attributes given by
410 * %NL80211_ATTR_REG_RULE_FREQ_[START|END] and
411 * %NL80211_ATTR_FREQ_RANGE_MAX_BW with an attached power rule given by
412 * %NL80211_ATTR_REG_RULE_POWER_MAX_ANT_GAIN and
413 * %NL80211_ATTR_REG_RULE_POWER_MAX_EIRP.
414 * @NL80211_CMD_REQ_SET_REG: ask the wireless core to set the regulatory domain
fb37edc3 415 * to the specified ISO/IEC 3166-1 alpha2 country code. The core will
f408e01b
JB
416 * store this as a valid request and then query userspace for it.
417 *
15d71c1e 418 * @NL80211_CMD_GET_MESH_CONFIG: Get mesh networking properties for the
46c1ad1f 419 * interface identified by %NL80211_ATTR_IFINDEX
420 *
15d71c1e 421 * @NL80211_CMD_SET_MESH_CONFIG: Set mesh networking properties for the
46c1ad1f 422 * interface identified by %NL80211_ATTR_IFINDEX
3dd781cc 423 *
4e6d3cb8
JB
424 * @NL80211_CMD_SET_MGMT_EXTRA_IE: Set extra IEs for management frames. The
425 * interface is identified with %NL80211_ATTR_IFINDEX and the management
426 * frame subtype with %NL80211_ATTR_MGMT_SUBTYPE. The extra IE data to be
427 * added to the end of the specified management frame is specified with
428 * %NL80211_ATTR_IE. If the command succeeds, the requested data will be
429 * added to all specified management frames generated by
430 * kernel/firmware/driver.
28566668
JB
431 * Note: This command has been removed and it is only reserved at this
432 * point to avoid re-using existing command number. The functionality this
433 * command was planned for has been provided with cleaner design with the
434 * option to specify additional IEs in NL80211_CMD_TRIGGER_SCAN,
435 * NL80211_CMD_AUTHENTICATE, NL80211_CMD_ASSOCIATE,
436 * NL80211_CMD_DEAUTHENTICATE, and NL80211_CMD_DISASSOCIATE.
4e6d3cb8 437 *
3dd781cc
JB
438 * @NL80211_CMD_GET_SCAN: get scan results
439 * @NL80211_CMD_TRIGGER_SCAN: trigger a new scan with the given parameters
fa1bdd00 440 * %NL80211_ATTR_TX_NO_CCK_RATE is used to decide whether to send the
8a9e0b30 441 * probe requests at CCK rate or not. %NL80211_ATTR_BSSID can be used to
f45d4583
JB
442 * specify a BSSID to scan for; if not included, the wildcard BSSID will
443 * be used.
f2e17e1f
JB
444 * @NL80211_CMD_NEW_SCAN_RESULTS: scan notification (as a reply to
445 * NL80211_CMD_GET_SCAN and on the "scan" multicast group)
446 * @NL80211_CMD_SCAN_ABORTED: scan was aborted, for unspecified reasons,
447 * partial scan results may be available
3dd781cc 448 *
a3edacac 449 * @NL80211_CMD_START_SCHED_SCAN: start a scheduled scan at certain
478438c0
JB
450 * intervals and certain number of cycles, as specified by
451 * %NL80211_ATTR_SCHED_SCAN_PLANS. If %NL80211_ATTR_SCHED_SCAN_PLANS is
452 * not specified and only %NL80211_ATTR_SCHED_SCAN_INTERVAL is specified,
453 * scheduled scan will run in an infinite loop with the specified interval.
454 * These attributes are mutually exculsive,
455 * i.e. NL80211_ATTR_SCHED_SCAN_INTERVAL must not be passed if
456 * NL80211_ATTR_SCHED_SCAN_PLANS is defined.
457 * If for some reason scheduled scan is aborted by the driver, all scan
458 * plans are canceled (including scan plans that did not start yet).
a3edacac
JB
459 * Like with normal scans, if SSIDs (%NL80211_ATTR_SCAN_SSIDS)
460 * are passed, they are used in the probe requests. For
461 * broadcast, a broadcast SSID must be passed (ie. an empty
462 * string). If no SSID is passed, no probe requests are sent and
463 * a passive scan is performed. %NL80211_ATTR_SCAN_FREQUENCIES,
464 * if passed, define which channels should be scanned; if not
465 * passed, all channels allowed for the current regulatory domain
466 * are used. Extra IEs can also be passed from the userspace by
a67b2d9c
JB
467 * using the %NL80211_ATTR_IE attribute. The first cycle of the
468 * scheduled scan can be delayed by %NL80211_ATTR_SCHED_SCAN_DELAY
7e0a7c40
JB
469 * is supplied. If the device supports multiple concurrent scheduled
470 * scans, it will allow such when the caller provides the flag attribute
471 * %NL80211_ATTR_SCHED_SCAN_MULTI to indicate user-space support for it.
0c28d3d5
JB
472 * @NL80211_CMD_STOP_SCHED_SCAN: stop a scheduled scan. Returns -ENOENT if
473 * scheduled scan is not running. The caller may assume that as soon
474 * as the call returns, it is safe to start a new scheduled scan again.
a3edacac
JB
475 * @NL80211_CMD_SCHED_SCAN_RESULTS: indicates that there are scheduled scan
476 * results available.
477 * @NL80211_CMD_SCHED_SCAN_STOPPED: indicates that the scheduled scan has
478 * stopped. The driver may issue this event at any time during a
479 * scheduled scan. One reason for stopping the scan is if the hardware
480 * does not support starting an association or a normal scan while running
481 * a scheduled scan. This event is also sent when the
482 * %NL80211_CMD_STOP_SCHED_SCAN command is received or when the interface
483 * is brought down while a scheduled scan was running.
484 *
dd2605a0
JB
485 * @NL80211_CMD_GET_SURVEY: get survey resuls, e.g. channel occupation
486 * or noise level
487 * @NL80211_CMD_NEW_SURVEY_RESULTS: survey data notification (as a reply to
488 * NL80211_CMD_GET_SURVEY and on the "scan" multicast group)
489 *
7e0a7c40
JB
490 * @NL80211_CMD_SET_PMKSA: Add a PMKSA cache entry using %NL80211_ATTR_MAC
491 * (for the BSSID), %NL80211_ATTR_PMKID, and optionally %NL80211_ATTR_PMK
492 * (PMK is used for PTKSA derivation in case of FILS shared key offload) or
493 * using %NL80211_ATTR_SSID, %NL80211_ATTR_FILS_CACHE_ID,
494 * %NL80211_ATTR_PMKID, and %NL80211_ATTR_PMK in case of FILS
495 * authentication where %NL80211_ATTR_FILS_CACHE_ID is the identifier
496 * advertized by a FILS capable AP identifying the scope of PMKSA in an
497 * ESS.
869982f5 498 * @NL80211_CMD_DEL_PMKSA: Delete a PMKSA cache entry, using %NL80211_ATTR_MAC
7e0a7c40
JB
499 * (for the BSSID) and %NL80211_ATTR_PMKID or using %NL80211_ATTR_SSID,
500 * %NL80211_ATTR_FILS_CACHE_ID, and %NL80211_ATTR_PMKID in case of FILS
501 * authentication.
869982f5
JB
502 * @NL80211_CMD_FLUSH_PMKSA: Flush all PMKSA cache entries.
503 *
f527ad78
JB
504 * @NL80211_CMD_REG_CHANGE: indicates to userspace the regulatory domain
505 * has been changed and provides details of the request information
506 * that caused the change such as who initiated the regulatory request
507 * (%NL80211_ATTR_REG_INITIATOR), the wiphy_idx
508 * (%NL80211_ATTR_REG_ALPHA2) on which the request was made from if
509 * the initiator was %NL80211_REGDOM_SET_BY_COUNTRY_IE or
510 * %NL80211_REGDOM_SET_BY_DRIVER, the type of regulatory domain
511 * set (%NL80211_ATTR_REG_TYPE), if the type of regulatory domain is
512 * %NL80211_REG_TYPE_COUNTRY the alpha2 to which we have moved on
513 * to (%NL80211_ATTR_REG_ALPHA2).
28566668
JB
514 * @NL80211_CMD_REG_BEACON_HINT: indicates to userspace that an AP beacon
515 * has been found while world roaming thus enabling active scan or
516 * any mode of operation that initiates TX (beacons) on a channel
517 * where we would not have been able to do either before. As an example
518 * if you are world roaming (regulatory domain set to world or if your
519 * driver is using a custom world roaming regulatory domain) and while
520 * doing a passive scan on the 5 GHz band you find an AP there (if not
521 * on a DFS channel) you will now be able to actively scan for that AP
522 * or use AP mode on your card on that same channel. Note that this will
523 * never be used for channels 1-11 on the 2 GHz band as they are always
524 * enabled world wide. This beacon hint is only sent if your device had
525 * either disabled active scanning or beaconing on a channel. We send to
526 * userspace the wiphy on which we removed a restriction from
527 * (%NL80211_ATTR_WIPHY) and the channel on which this occurred
528 * before (%NL80211_ATTR_FREQ_BEFORE) and after (%NL80211_ATTR_FREQ_AFTER)
529 * the beacon hint was processed.
530 *
531 * @NL80211_CMD_AUTHENTICATE: authentication request and notification.
532 * This command is used both as a command (request to authenticate) and
533 * as an event on the "mlme" multicast group indicating completion of the
534 * authentication process.
535 * When used as a command, %NL80211_ATTR_IFINDEX is used to identify the
536 * interface. %NL80211_ATTR_MAC is used to specify PeerSTAAddress (and
537 * BSSID in case of station mode). %NL80211_ATTR_SSID is used to specify
538 * the SSID (mainly for association, but is included in authentication
539 * request, too, to help BSS selection. %NL80211_ATTR_WIPHY_FREQ is used
540 * to specify the frequence of the channel in MHz. %NL80211_ATTR_AUTH_TYPE
541 * is used to specify the authentication type. %NL80211_ATTR_IE is used to
542 * define IEs (VendorSpecificInfo, but also including RSN IE and FT IEs)
543 * to be added to the frame.
544 * When used as an event, this reports reception of an Authentication
545 * frame in station and IBSS modes when the local MLME processed the
546 * frame, i.e., it was for the local STA and was received in correct
547 * state. This is similar to MLME-AUTHENTICATE.confirm primitive in the
548 * MLME SAP interface (kernel providing MLME, userspace SME). The
52868516
JB
549 * included %NL80211_ATTR_FRAME attribute contains the management frame
550 * (including both the header and frame body, but not FCS). This event is
551 * also used to indicate if the authentication attempt timed out. In that
552 * case the %NL80211_ATTR_FRAME attribute is replaced with a
553 * %NL80211_ATTR_TIMED_OUT flag (and %NL80211_ATTR_MAC to indicate which
554 * pending authentication timed out).
28566668
JB
555 * @NL80211_CMD_ASSOCIATE: association request and notification; like
556 * NL80211_CMD_AUTHENTICATE but for Association and Reassociation
557 * (similar to MLME-ASSOCIATE.request, MLME-REASSOCIATE.request,
f45d4583
JB
558 * MLME-ASSOCIATE.confirm or MLME-REASSOCIATE.confirm primitives). The
559 * %NL80211_ATTR_PREV_BSSID attribute is used to specify whether the
560 * request is for the initial association to an ESS (that attribute not
561 * included) or for reassociation within the ESS (that attribute is
562 * included).
28566668
JB
563 * @NL80211_CMD_DEAUTHENTICATE: deauthentication request and notification; like
564 * NL80211_CMD_AUTHENTICATE but for Deauthentication frames (similar to
565 * MLME-DEAUTHENTICATION.request and MLME-DEAUTHENTICATE.indication
566 * primitives).
567 * @NL80211_CMD_DISASSOCIATE: disassociation request and notification; like
568 * NL80211_CMD_AUTHENTICATE but for Disassociation frames (similar to
569 * MLME-DISASSOCIATE.request and MLME-DISASSOCIATE.indication primitives).
570 *
571 * @NL80211_CMD_MICHAEL_MIC_FAILURE: notification of a locally detected Michael
572 * MIC (part of TKIP) failure; sent on the "mlme" multicast group; the
573 * event includes %NL80211_ATTR_MAC to describe the source MAC address of
574 * the frame with invalid MIC, %NL80211_ATTR_KEY_TYPE to show the key
575 * type, %NL80211_ATTR_KEY_IDX to indicate the key identifier, and
576 * %NL80211_ATTR_KEY_SEQ to indicate the TSC value of the frame; this
577 * event matches with MLME-MICHAELMICFAILURE.indication() primitive
f527ad78 578 *
80e02110
JB
579 * @NL80211_CMD_JOIN_IBSS: Join a new IBSS -- given at least an SSID and a
580 * FREQ attribute (for the initial frequency if no peer can be found)
581 * and optionally a MAC (as BSSID) and FREQ_FIXED attribute if those
582 * should be fixed rather than automatically determined. Can only be
583 * executed on a network interface that is UP, and fixed BSSID/FREQ
52868516
JB
584 * may be rejected. Another optional parameter is the beacon interval,
585 * given in the %NL80211_ATTR_BEACON_INTERVAL attribute, which if not
586 * given defaults to 100 TU (102.4ms).
80e02110
JB
587 * @NL80211_CMD_LEAVE_IBSS: Leave the IBSS -- no special arguments, the IBSS is
588 * determined by the network interface.
589 *
a13f19e4
JB
590 * @NL80211_CMD_TESTMODE: testmode command, takes a wiphy (or ifindex) attribute
591 * to identify the device, and the TESTDATA blob attribute to pass through
592 * to the driver.
593 *
99dde7aa
JB
594 * @NL80211_CMD_CONNECT: connection request and notification; this command
595 * requests to connect to a specified network but without separating
596 * auth and assoc steps. For this, you need to specify the SSID in a
597 * %NL80211_ATTR_SSID attribute, and can optionally specify the association
6ccd4979
JB
598 * IEs in %NL80211_ATTR_IE, %NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_USE_MFP,
599 * %NL80211_ATTR_MAC, %NL80211_ATTR_WIPHY_FREQ, %NL80211_ATTR_CONTROL_PORT,
da441d4f 600 * %NL80211_ATTR_CONTROL_PORT_ETHERTYPE,
e06485e8
JB
601 * %NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT,
602 * %NL80211_ATTR_CONTROL_PORT_OVER_NL80211, %NL80211_ATTR_MAC_HINT, and
da441d4f
JB
603 * %NL80211_ATTR_WIPHY_FREQ_HINT.
604 * If included, %NL80211_ATTR_MAC and %NL80211_ATTR_WIPHY_FREQ are
605 * restrictions on BSS selection, i.e., they effectively prevent roaming
606 * within the ESS. %NL80211_ATTR_MAC_HINT and %NL80211_ATTR_WIPHY_FREQ_HINT
607 * can be included to provide a recommendation of the initial BSS while
608 * allowing the driver to roam to other BSSes within the ESS and also to
609 * ignore this recommendation if the indicated BSS is not ideal. Only one
610 * set of BSSID,frequency parameters is used (i.e., either the enforcing
611 * %NL80211_ATTR_MAC,%NL80211_ATTR_WIPHY_FREQ or the less strict
612 * %NL80211_ATTR_MAC_HINT and %NL80211_ATTR_WIPHY_FREQ_HINT).
e9b59588
JB
613 * Driver shall not modify the IEs specified through %NL80211_ATTR_IE if
614 * %NL80211_ATTR_MAC is included. However, if %NL80211_ATTR_MAC_HINT is
615 * included, these IEs through %NL80211_ATTR_IE are specified by the user
616 * space based on the best possible BSS selected. Thus, if the driver ends
617 * up selecting a different BSS, it can modify these IEs accordingly (e.g.
618 * userspace asks the driver to perform PMKSA caching with BSS1 and the
619 * driver ends up selecting BSS2 with different PMKSA cache entry; RSNIE
620 * has to get updated with the apt PMKID).
f45d4583
JB
621 * %NL80211_ATTR_PREV_BSSID can be used to request a reassociation within
622 * the ESS in case the device is already associated and an association with
623 * a different BSS is desired.
b78ae2b1
JB
624 * Background scan period can optionally be
625 * specified in %NL80211_ATTR_BG_SCAN_PERIOD,
626 * if not specified default background scan configuration
627 * in driver is used and if period value is 0, bg scan will be disabled.
628 * This attribute is ignored if driver does not support roam scan.
99dde7aa
JB
629 * It is also sent as an event, with the BSSID and response IEs when the
630 * connection is established or failed to be established. This can be
a574be4b
JB
631 * determined by the %NL80211_ATTR_STATUS_CODE attribute (0 = success,
632 * non-zero = failure). If %NL80211_ATTR_TIMED_OUT is included in the
633 * event, the connection attempt failed due to not being able to initiate
634 * authentication/association or not receiving a response from the AP.
635 * Non-zero %NL80211_ATTR_STATUS_CODE value is indicated in that case as
636 * well to remain backwards compatible.
7e0a7c40
JB
637 * When establishing a security association, drivers that support 4 way
638 * handshake offload should send %NL80211_CMD_PORT_AUTHORIZED event when
639 * the 4 way handshake is completed successfully.
640 * @NL80211_CMD_ROAM: Notification indicating the card/driver roamed by itself.
641 * When a security association was established with the new AP (e.g. if
642 * the FT protocol was used for roaming or the driver completed the 4 way
643 * handshake), this event should be followed by an
644 * %NL80211_CMD_PORT_AUTHORIZED event.
99dde7aa
JB
645 * @NL80211_CMD_DISCONNECT: drop a given connection; also used to notify
646 * userspace that a connection was dropped by the AP or due to other
647 * reasons, for this the %NL80211_ATTR_DISCONNECTED_BY_AP and
648 * %NL80211_ATTR_REASON_CODE attributes are used.
649 *
748bdd1c
JB
650 * @NL80211_CMD_SET_WIPHY_NETNS: Set a wiphy's netns. Note that all devices
651 * associated with this wiphy must be down and will follow.
652 *
d4350a3e
JB
653 * @NL80211_CMD_REMAIN_ON_CHANNEL: Request to remain awake on the specified
654 * channel for the specified amount of time. This can be used to do
655 * off-channel operations like transmit a Public Action frame and wait for
656 * a response while being associated to an AP on another channel.
1cbe4a02
JB
657 * %NL80211_ATTR_IFINDEX is used to specify which interface (and thus
658 * radio) is used. %NL80211_ATTR_WIPHY_FREQ is used to specify the
068ff94a 659 * frequency for the operation.
d4350a3e
JB
660 * %NL80211_ATTR_DURATION is used to specify the duration in milliseconds
661 * to remain on the channel. This command is also used as an event to
662 * notify when the requested duration starts (it may take a while for the
663 * driver to schedule this time due to other concurrent needs for the
664 * radio).
665 * When called, this operation returns a cookie (%NL80211_ATTR_COOKIE)
666 * that will be included with any events pertaining to this request;
667 * the cookie is also used to cancel the request.
668 * @NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL: This command can be used to cancel a
669 * pending remain-on-channel duration if the desired operation has been
670 * completed prior to expiration of the originally requested duration.
671 * %NL80211_ATTR_WIPHY or %NL80211_ATTR_IFINDEX is used to specify the
672 * radio. The %NL80211_ATTR_COOKIE attribute must be given as well to
673 * uniquely identify the request.
674 * This command is also used as an event to notify when a requested
675 * remain-on-channel duration has expired.
676 *
677 * @NL80211_CMD_SET_TX_BITRATE_MASK: Set the mask of rates to be used in TX
678 * rate selection. %NL80211_ATTR_IFINDEX is used to specify the interface
679 * and @NL80211_ATTR_TX_RATES the set of allowed rates.
680 *
0c560ade
JB
681 * @NL80211_CMD_REGISTER_FRAME: Register for receiving certain mgmt frames
682 * (via @NL80211_CMD_FRAME) for processing in userspace. This command
683 * requires an interface index, a frame type attribute (optional for
684 * backward compatibility reasons, if not given assumes action frames)
685 * and a match attribute containing the first few bytes of the frame
686 * that should match, e.g. a single byte for only a category match or
687 * four bytes for vendor frames including the OUI. The registration
688 * cannot be dropped, but is removed automatically when the netlink
689 * socket is closed. Multiple registrations can be made.
690 * @NL80211_CMD_REGISTER_ACTION: Alias for @NL80211_CMD_REGISTER_FRAME for
691 * backward compatibility
692 * @NL80211_CMD_FRAME: Management frame TX request and RX notification. This
693 * command is used both as a request to transmit a management frame and
694 * as an event indicating reception of a frame that was not processed in
83037d1b
JB
695 * kernel code, but is for us (i.e., which may need to be processed in a
696 * user space application). %NL80211_ATTR_FRAME is used to specify the
068ff94a
JB
697 * frame contents (including header). %NL80211_ATTR_WIPHY_FREQ is used
698 * to indicate on which channel the frame is to be transmitted or was
699 * received. If this channel is not the current channel (remain-on-channel
700 * or the operational channel) the device will switch to the given channel
701 * and transmit the frame, optionally waiting for a response for the time
fb660ce4
JB
702 * specified using %NL80211_ATTR_DURATION. When called, this operation
703 * returns a cookie (%NL80211_ATTR_COOKIE) that will be included with the
704 * TX status event pertaining to the TX request.
fa1bdd00
JB
705 * %NL80211_ATTR_TX_NO_CCK_RATE is used to decide whether to send the
706 * management frames at CCK rate or not in 2GHz band.
70f3fe99
JB
707 * %NL80211_ATTR_CSA_C_OFFSETS_TX is an array of offsets to CSA
708 * counters which will be updated to the current value. This attribute
709 * is used during CSA period.
fb660ce4
JB
710 * @NL80211_CMD_FRAME_WAIT_CANCEL: When an off-channel TX was requested, this
711 * command may be used with the corresponding cookie to cancel the wait
a0c07e4f
JB
712 * time if it is known that it is no longer necessary. This command is
713 * also sent as an event whenever the driver has completed the off-channel
714 * wait time.
0c560ade
JB
715 * @NL80211_CMD_ACTION: Alias for @NL80211_CMD_FRAME for backward compatibility.
716 * @NL80211_CMD_FRAME_TX_STATUS: Report TX status of a management frame
717 * transmitted with %NL80211_CMD_FRAME. %NL80211_ATTR_COOKIE identifies
83037d1b
JB
718 * the TX command and %NL80211_ATTR_FRAME includes the contents of the
719 * frame. %NL80211_ATTR_ACK flag is included if the recipient acknowledged
720 * the frame.
0c560ade
JB
721 * @NL80211_CMD_ACTION_TX_STATUS: Alias for @NL80211_CMD_FRAME_TX_STATUS for
722 * backward compatibility.
869982f5
JB
723 *
724 * @NL80211_CMD_SET_POWER_SAVE: Set powersave, using %NL80211_ATTR_PS_STATE
725 * @NL80211_CMD_GET_POWER_SAVE: Get powersave status in %NL80211_ATTR_PS_STATE
726 *
7c9e7c7b
JB
727 * @NL80211_CMD_SET_CQM: Connection quality monitor configuration. This command
728 * is used to configure connection quality monitoring notification trigger
729 * levels.
730 * @NL80211_CMD_NOTIFY_CQM: Connection quality monitor notification. This
731 * command is used as an event to indicate the that a trigger level was
732 * reached.
e1dbf1b8 733 * @NL80211_CMD_SET_CHANNEL: Set the channel (using %NL80211_ATTR_WIPHY_FREQ
068ff94a
JB
734 * and the attributes determining channel width) the given interface
735 * (identifed by %NL80211_ATTR_IFINDEX) shall operate on.
e1dbf1b8
JB
736 * In case multiple channels are supported by the device, the mechanism
737 * with which it switches channels is implementation-defined.
738 * When a monitor interface is given, it can only switch channel while
739 * no other interfaces are operating to avoid disturbing the operation
740 * of any other interfaces, and other interfaces will again take
741 * precedence when they are used.
83037d1b 742 *
1cbe4a02
JB
743 * @NL80211_CMD_SET_WDS_PEER: Set the MAC address of the peer on a WDS interface.
744 *
8a9e0b30
JB
745 * @NL80211_CMD_SET_MULTICAST_TO_UNICAST: Configure if this AP should perform
746 * multicast to unicast conversion. When enabled, all multicast packets
747 * with ethertype ARP, IPv4 or IPv6 (possibly within an 802.1Q header)
748 * will be sent out to each station once with the destination (multicast)
749 * MAC address replaced by the station's MAC address. Note that this may
750 * break certain expectations of the receiver, e.g. the ability to drop
751 * unicast IP packets encapsulated in multicast L2 frames, or the ability
752 * to not send destination unreachable messages in such cases.
753 * This can only be toggled per BSS. Configure this on an interface of
754 * type %NL80211_IFTYPE_AP. It applies to all its VLAN interfaces
755 * (%NL80211_IFTYPE_AP_VLAN), except for those in 4addr (WDS) mode.
756 * If %NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED is not present with this
757 * command, the feature is disabled.
758 *
fb660ce4
JB
759 * @NL80211_CMD_JOIN_MESH: Join a mesh. The mesh ID must be given, and initial
760 * mesh config parameters may be given.
761 * @NL80211_CMD_LEAVE_MESH: Leave the mesh network -- no special arguments, the
762 * network is determined by the network interface.
763 *
15d71c1e
JB
764 * @NL80211_CMD_UNPROT_DEAUTHENTICATE: Unprotected deauthentication frame
765 * notification. This event is used to indicate that an unprotected
766 * deauthentication frame was dropped when MFP is in use.
767 * @NL80211_CMD_UNPROT_DISASSOCIATE: Unprotected disassociation frame
768 * notification. This event is used to indicate that an unprotected
769 * disassociation frame was dropped when MFP is in use.
770 *
9b13eeba
JB
771 * @NL80211_CMD_NEW_PEER_CANDIDATE: Notification on the reception of a
772 * beacon or probe response from a compatible mesh peer. This is only
773 * sent while no station information (sta_info) exists for the new peer
ac38f8ad
JB
774 * candidate and when @NL80211_MESH_SETUP_USERSPACE_AUTH,
775 * @NL80211_MESH_SETUP_USERSPACE_AMPE, or
776 * @NL80211_MESH_SETUP_USERSPACE_MPM is set. On reception of this
777 * notification, userspace may decide to create a new station
778 * (@NL80211_CMD_NEW_STATION). To stop this notification from
9b13eeba
JB
779 * reoccurring, the userspace authentication daemon may want to create the
780 * new station with the AUTHENTICATED flag unset and maybe change it later
781 * depending on the authentication result.
782 *
2d6b9d76
JB
783 * @NL80211_CMD_GET_WOWLAN: get Wake-on-Wireless-LAN (WoWLAN) settings.
784 * @NL80211_CMD_SET_WOWLAN: set Wake-on-Wireless-LAN (WoWLAN) settings.
785 * Since wireless is more complex than wired ethernet, it supports
786 * various triggers. These triggers can be configured through this
787 * command with the %NL80211_ATTR_WOWLAN_TRIGGERS attribute. For
788 * more background information, see
789 * http://wireless.kernel.org/en/users/Documentation/WoWLAN.
d7bfeaa0
JB
790 * The @NL80211_CMD_SET_WOWLAN command can also be used as a notification
791 * from the driver reporting the wakeup reason. In this case, the
792 * @NL80211_ATTR_WOWLAN_TRIGGERS attribute will contain the reason
793 * for the wakeup, if it was caused by wireless. If it is not present
794 * in the wakeup notification, the wireless device didn't cause the
795 * wakeup but reports that it was woken up.
2d6b9d76 796 *
b47f6b48
JB
797 * @NL80211_CMD_SET_REKEY_OFFLOAD: This command is used give the driver
798 * the necessary information for supporting GTK rekey offload. This
799 * feature is typically used during WoWLAN. The configuration data
800 * is contained in %NL80211_ATTR_REKEY_DATA (which is nested and
801 * contains the data in sub-attributes). After rekeying happened,
802 * this command may also be sent by the driver as an MLME event to
803 * inform userspace of the new replay counter.
804 *
fa1bdd00
JB
805 * @NL80211_CMD_PMKSA_CANDIDATE: This is used as an event to inform userspace
806 * of PMKSA caching dandidates.
807 *
03820325 808 * @NL80211_CMD_TDLS_OPER: Perform a high-level TDLS command (e.g. link setup).
068ff94a
JB
809 * In addition, this can be used as an event to request userspace to take
810 * actions on TDLS links (set up a new link or tear down an existing one).
811 * In such events, %NL80211_ATTR_TDLS_OPERATION indicates the requested
812 * operation, %NL80211_ATTR_MAC contains the peer MAC address, and
813 * %NL80211_ATTR_REASON_CODE the reason code to be used (only with
814 * %NL80211_TDLS_TEARDOWN).
320cfae1
JB
815 * @NL80211_CMD_TDLS_MGMT: Send a TDLS management frame. The
816 * %NL80211_ATTR_TDLS_ACTION attribute determines the type of frame to be
817 * sent. Public Action codes (802.11-2012 8.1.5.1) will be sent as
818 * 802.11 management frames, while TDLS action codes (802.11-2012
819 * 8.5.13.1) will be encapsulated and sent as data frames. The currently
820 * supported Public Action code is %WLAN_PUB_ACTION_TDLS_DISCOVER_RES
821 * and the currently supported TDLS actions codes are given in
822 * &enum ieee80211_tdls_actioncode.
03820325 823 *
d0da8195
JB
824 * @NL80211_CMD_UNEXPECTED_FRAME: Used by an application controlling an AP
825 * (or GO) interface (i.e. hostapd) to ask for unexpected frames to
826 * implement sending deauth to stations that send unexpected class 3
827 * frames. Also used as the event sent by the kernel when such a frame
828 * is received.
829 * For the event, the %NL80211_ATTR_MAC attribute carries the TA and
830 * other attributes like the interface index are present.
831 * If used as the command it must have an interface index and you can
832 * only unsubscribe from the event by closing the socket. Subscription
833 * is also for %NL80211_CMD_UNEXPECTED_4ADDR_FRAME events.
834 *
835 * @NL80211_CMD_UNEXPECTED_4ADDR_FRAME: Sent as an event indicating that the
836 * associated station identified by %NL80211_ATTR_MAC sent a 4addr frame
837 * and wasn't already in a 4-addr VLAN. The event will be sent similarly
838 * to the %NL80211_CMD_UNEXPECTED_FRAME event, to the same listener.
839 *
840 * @NL80211_CMD_PROBE_CLIENT: Probe an associated station on an AP interface
841 * by sending a null data frame to it and reporting when the frame is
842 * acknowleged. This is used to allow timing out inactive clients. Uses
843 * %NL80211_ATTR_IFINDEX and %NL80211_ATTR_MAC. The command returns a
844 * direct reply with an %NL80211_ATTR_COOKIE that is later used to match
845 * up the event with the request. The event includes the same data and
846 * has %NL80211_ATTR_ACK set if the frame was ACKed.
847 *
848 * @NL80211_CMD_REGISTER_BEACONS: Register this socket to receive beacons from
849 * other BSSes when any interfaces are in AP mode. This helps implement
850 * OLBC handling in hostapd. Beacons are reported in %NL80211_CMD_FRAME
851 * messages. Note that per PHY only one application may register.
852 *
564eb405
JB
853 * @NL80211_CMD_SET_NOACK_MAP: sets a bitmap for the individual TIDs whether
854 * No Acknowledgement Policy should be applied.
855 *
b0a3b5e3
JB
856 * @NL80211_CMD_CH_SWITCH_NOTIFY: An AP or GO may decide to switch channels
857 * independently of the userspace SME, send this event indicating
068ff94a 858 * %NL80211_ATTR_IFINDEX is now on %NL80211_ATTR_WIPHY_FREQ and the
b8820d2b
JB
859 * attributes determining channel width. This indication may also be
860 * sent when a remotely-initiated switch (e.g., when a STA receives a CSA
861 * from the remote AP) is completed;
862 *
863 * @NL80211_CMD_CH_SWITCH_STARTED_NOTIFY: Notify that a channel switch
864 * has been started on an interface, regardless of the initiator
865 * (ie. whether it was requested from a remote device or
866 * initiated on our own). It indicates that
867 * %NL80211_ATTR_IFINDEX will be on %NL80211_ATTR_WIPHY_FREQ
868 * after %NL80211_ATTR_CH_SWITCH_COUNT TBTT's. The userspace may
869 * decide to react to this indication by requesting other
870 * interfaces to change channel as well.
b0a3b5e3 871 *
bec9a8e0
JB
872 * @NL80211_CMD_START_P2P_DEVICE: Start the given P2P Device, identified by
873 * its %NL80211_ATTR_WDEV identifier. It must have been created with
874 * %NL80211_CMD_NEW_INTERFACE previously. After it has been started, the
875 * P2P Device can be used for P2P operations, e.g. remain-on-channel and
876 * public action frame TX.
877 * @NL80211_CMD_STOP_P2P_DEVICE: Stop the given P2P Device, identified by
878 * its %NL80211_ATTR_WDEV identifier.
879 *
880 * @NL80211_CMD_CONN_FAILED: connection request to an AP failed; used to
881 * notify userspace that AP has rejected the connection request from a
882 * station, due to particular reason. %NL80211_ATTR_CONN_FAILED_REASON
883 * is used for this.
884 *
4c47175d
JB
885 * @NL80211_CMD_SET_MCAST_RATE: Change the rate used to send multicast frames
886 * for IBSS or MESH vif.
887 *
d7bfeaa0
JB
888 * @NL80211_CMD_SET_MAC_ACL: sets ACL for MAC address based access control.
889 * This is to be used with the drivers advertising the support of MAC
890 * address based access control. List of MAC addresses is passed in
891 * %NL80211_ATTR_MAC_ADDRS and ACL policy is passed in
892 * %NL80211_ATTR_ACL_POLICY. Driver will enable ACL with this list, if it
893 * is not already done. The new list will replace any existing list. Driver
894 * will clear its ACL when the list of MAC addresses passed is empty. This
895 * command is used in AP/P2P GO mode. Driver has to make sure to clear its
896 * ACL list during %NL80211_CMD_STOP_AP.
897 *
898 * @NL80211_CMD_RADAR_DETECT: Start a Channel availability check (CAC). Once
899 * a radar is detected or the channel availability scan (CAC) has finished
900 * or was aborted, or a radar was detected, usermode will be notified with
901 * this event. This command is also used to notify userspace about radars
902 * while operating on this channel.
903 * %NL80211_ATTR_RADAR_EVENT is used to inform about the type of the
904 * event.
905 *
ac38f8ad
JB
906 * @NL80211_CMD_GET_PROTOCOL_FEATURES: Get global nl80211 protocol features,
907 * i.e. features for the nl80211 protocol rather than device features.
908 * Returns the features in the %NL80211_ATTR_PROTOCOL_FEATURES bitmap.
909 *
910 * @NL80211_CMD_UPDATE_FT_IES: Pass down the most up-to-date Fast Transition
911 * Information Element to the WLAN driver
912 *
913 * @NL80211_CMD_FT_EVENT: Send a Fast transition event from the WLAN driver
914 * to the supplicant. This will carry the target AP's MAC address along
915 * with the relevant Information Elements. This event is used to report
916 * received FT IEs (MDIE, FTIE, RSN IE, TIE, RICIE).
917 *
ae586a4e
JB
918 * @NL80211_CMD_CRIT_PROTOCOL_START: Indicates user-space will start running
919 * a critical protocol that needs more reliability in the connection to
920 * complete.
921 *
922 * @NL80211_CMD_CRIT_PROTOCOL_STOP: Indicates the connection reliability can
923 * return back to normal.
924 *
0fd08e2e
JB
925 * @NL80211_CMD_GET_COALESCE: Get currently supported coalesce rules.
926 * @NL80211_CMD_SET_COALESCE: Configure coalesce rules or clear existing rules.
927 *
320cfae1
JB
928 * @NL80211_CMD_CHANNEL_SWITCH: Perform a channel switch by announcing the
929 * the new channel information (Channel Switch Announcement - CSA)
930 * in the beacon for some time (as defined in the
931 * %NL80211_ATTR_CH_SWITCH_COUNT parameter) and then change to the
932 * new channel. Userspace provides the new channel information (using
933 * %NL80211_ATTR_WIPHY_FREQ and the attributes determining channel
934 * width). %NL80211_ATTR_CH_SWITCH_BLOCK_TX may be supplied to inform
935 * other station that transmission must be blocked until the channel
936 * switch is complete.
937 *
63f94301
JB
938 * @NL80211_CMD_VENDOR: Vendor-specified command/event. The command is specified
939 * by the %NL80211_ATTR_VENDOR_ID attribute and a sub-command in
940 * %NL80211_ATTR_VENDOR_SUBCMD. Parameter(s) can be transported in
941 * %NL80211_ATTR_VENDOR_DATA.
942 * For feature advertisement, the %NL80211_ATTR_VENDOR_DATA attribute is
943 * used in the wiphy data as a nested attribute containing descriptions
944 * (&struct nl80211_vendor_cmd_info) of the supported vendor commands.
945 * This may also be sent as an event with the same attributes.
946 *
947 * @NL80211_CMD_SET_QOS_MAP: Set Interworking QoS mapping for IP DSCP values.
948 * The QoS mapping information is included in %NL80211_ATTR_QOS_MAP. If
949 * that attribute is not included, QoS mapping is disabled. Since this
950 * QoS mapping is relevant for IP packets, it is only valid during an
951 * association. This is cleared on disassociation and AP restart.
952 *
034a7d2d
JB
953 * @NL80211_CMD_ADD_TX_TS: Ask the kernel to add a traffic stream for the given
954 * %NL80211_ATTR_TSID and %NL80211_ATTR_MAC with %NL80211_ATTR_USER_PRIO
955 * and %NL80211_ATTR_ADMITTED_TIME parameters.
956 * Note that the action frame handshake with the AP shall be handled by
957 * userspace via the normal management RX/TX framework, this only sets
958 * up the TX TS in the driver/device.
959 * If the admitted time attribute is not added then the request just checks
960 * if a subsequent setup could be successful, the intent is to use this to
961 * avoid setting up a session with the AP when local restrictions would
962 * make that impossible. However, the subsequent "real" setup may still
963 * fail even if the check was successful.
964 * @NL80211_CMD_DEL_TX_TS: Remove an existing TS with the %NL80211_ATTR_TSID
965 * and %NL80211_ATTR_MAC parameters. It isn't necessary to call this
966 * before removing a station entry entirely, or before disassociating
967 * or similar, cleanup will happen in the driver/device in this case.
968 *
7b9cb6e3
JB
969 * @NL80211_CMD_GET_MPP: Get mesh path attributes for mesh proxy path to
970 * destination %NL80211_ATTR_MAC on the interface identified by
971 * %NL80211_ATTR_IFINDEX.
972 *
b8820d2b
JB
973 * @NL80211_CMD_JOIN_OCB: Join the OCB network. The center frequency and
974 * bandwidth of a channel must be given.
975 * @NL80211_CMD_LEAVE_OCB: Leave the OCB network -- no special arguments, the
976 * network is determined by the network interface.
977 *
f548a702
JB
978 * @NL80211_CMD_TDLS_CHANNEL_SWITCH: Start channel-switching with a TDLS peer,
979 * identified by the %NL80211_ATTR_MAC parameter. A target channel is
980 * provided via %NL80211_ATTR_WIPHY_FREQ and other attributes determining
981 * channel width/type. The target operating class is given via
982 * %NL80211_ATTR_OPER_CLASS.
983 * The driver is responsible for continually initiating channel-switching
984 * operations and returning to the base channel for communication with the
985 * AP.
986 * @NL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH: Stop channel-switching with a TDLS
987 * peer given by %NL80211_ATTR_MAC. Both peers must be on the base channel
988 * when this command completes.
989 *
2ca8bfa0
JB
990 * @NL80211_CMD_WIPHY_REG_CHANGE: Similar to %NL80211_CMD_REG_CHANGE, but used
991 * as an event to indicate changes for devices with wiphy-specific regdom
992 * management.
993 *
478438c0
JB
994 * @NL80211_CMD_ABORT_SCAN: Stop an ongoing scan. Returns -ENOENT if a scan is
995 * not running. The driver indicates the status of the scan through
996 * cfg80211_scan_done().
997 *
a574be4b 998 * @NL80211_CMD_START_NAN: Start NAN operation, identified by its
8a9e0b30
JB
999 * %NL80211_ATTR_WDEV interface. This interface must have been
1000 * previously created with %NL80211_CMD_NEW_INTERFACE. After it
1001 * has been started, the NAN interface will create or join a
1002 * cluster. This command must have a valid
1003 * %NL80211_ATTR_NAN_MASTER_PREF attribute and optional
1004 * %NL80211_ATTR_BANDS attributes. If %NL80211_ATTR_BANDS is
1005 * omitted or set to 0, it means don't-care and the device will
1006 * decide what to use. After this command NAN functions can be
1007 * added.
a574be4b
JB
1008 * @NL80211_CMD_STOP_NAN: Stop the NAN operation, identified by
1009 * its %NL80211_ATTR_WDEV interface.
1010 * @NL80211_CMD_ADD_NAN_FUNCTION: Add a NAN function. The function is defined
1011 * with %NL80211_ATTR_NAN_FUNC nested attribute. When called, this
1012 * operation returns the strictly positive and unique instance id
1013 * (%NL80211_ATTR_NAN_FUNC_INST_ID) and a cookie (%NL80211_ATTR_COOKIE)
1014 * of the function upon success.
1015 * Since instance ID's can be re-used, this cookie is the right
1016 * way to identify the function. This will avoid races when a termination
1017 * event is handled by the user space after it has already added a new
1018 * function that got the same instance id from the kernel as the one
1019 * which just terminated.
1020 * This cookie may be used in NAN events even before the command
1021 * returns, so userspace shouldn't process NAN events until it processes
1022 * the response to this command.
1023 * Look at %NL80211_ATTR_SOCKET_OWNER as well.
1024 * @NL80211_CMD_DEL_NAN_FUNCTION: Delete a NAN function by cookie.
1025 * This command is also used as a notification sent when a NAN function is
1026 * terminated. This will contain a %NL80211_ATTR_NAN_FUNC_INST_ID
1027 * and %NL80211_ATTR_COOKIE attributes.
8a9e0b30
JB
1028 * @NL80211_CMD_CHANGE_NAN_CONFIG: Change current NAN
1029 * configuration. NAN must be operational (%NL80211_CMD_START_NAN
1030 * was executed). It must contain at least one of the following
1031 * attributes: %NL80211_ATTR_NAN_MASTER_PREF,
1032 * %NL80211_ATTR_BANDS. If %NL80211_ATTR_BANDS is omitted, the
1033 * current configuration is not changed. If it is present but
1034 * set to zero, the configuration is changed to don't-care
1035 * (i.e. the device can decide what to do).
a574be4b
JB
1036 * @NL80211_CMD_NAN_FUNC_MATCH: Notification sent when a match is reported.
1037 * This will contain a %NL80211_ATTR_NAN_MATCH nested attribute and
1038 * %NL80211_ATTR_COOKIE.
1039 *
8a9e0b30
JB
1040 * @NL80211_CMD_UPDATE_CONNECT_PARAMS: Update one or more connect parameters
1041 * for subsequent roaming cases if the driver or firmware uses internal
1042 * BSS selection. This command can be issued only while connected and it
1043 * does not result in a change for the current association. Currently,
1044 * only the %NL80211_ATTR_IE data is used and updated with this command.
1045 *
7e0a7c40 1046 * @NL80211_CMD_SET_PMK: For offloaded 4-Way handshake, set the PMK or PMK-R0
75b78ff8
JB
1047 * for the given authenticator address (specified with %NL80211_ATTR_MAC).
1048 * When %NL80211_ATTR_PMKR0_NAME is set, %NL80211_ATTR_PMK specifies the
7e0a7c40
JB
1049 * PMK-R0, otherwise it specifies the PMK.
1050 * @NL80211_CMD_DEL_PMK: For offloaded 4-Way handshake, delete the previously
1051 * configured PMK for the authenticator address identified by
75b78ff8 1052 * %NL80211_ATTR_MAC.
7e0a7c40
JB
1053 * @NL80211_CMD_PORT_AUTHORIZED: An event that indicates that the 4 way
1054 * handshake was completed successfully by the driver. The BSSID is
75b78ff8 1055 * specified with %NL80211_ATTR_MAC. Drivers that support 4 way handshake
7e0a7c40 1056 * offload should send this event after indicating 802.11 association with
75b78ff8
JB
1057 * %NL80211_CMD_CONNECT or %NL80211_CMD_ROAM. If the 4 way handshake failed
1058 * %NL80211_CMD_DISCONNECT should be indicated instead.
7e0a7c40 1059 *
e06485e8
JB
1060 * @NL80211_CMD_CONTROL_PORT_FRAME: Control Port (e.g. PAE) frame TX request
1061 * and RX notification. This command is used both as a request to transmit
1062 * a control port frame and as a notification that a control port frame
1063 * has been received. %NL80211_ATTR_FRAME is used to specify the
1064 * frame contents. The frame is the raw EAPoL data, without ethernet or
715cd403 1065 * 802.11 headers.
e06485e8
JB
1066 * When used as an event indication %NL80211_ATTR_CONTROL_PORT_ETHERTYPE,
1067 * %NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT and %NL80211_ATTR_MAC are added
1068 * indicating the protocol type of the received frame; whether the frame
1069 * was received unencrypted and the MAC address of the peer respectively.
1070 *
7e0a7c40
JB
1071 * @NL80211_CMD_RELOAD_REGDB: Request that the regdb firmware file is reloaded.
1072 *
e06485e8
JB
1073 * @NL80211_CMD_EXTERNAL_AUTH: This interface is exclusively defined for host
1074 * drivers that do not define separate commands for authentication and
1075 * association, but rely on user space for the authentication to happen.
1076 * This interface acts both as the event request (driver to user space)
1077 * to trigger the authentication and command response (userspace to
1078 * driver) to indicate the authentication status.
1079 *
1080 * User space uses the %NL80211_CMD_CONNECT command to the host driver to
1081 * trigger a connection. The host driver selects a BSS and further uses
1082 * this interface to offload only the authentication part to the user
1083 * space. Authentication frames are passed between the driver and user
1084 * space through the %NL80211_CMD_FRAME interface. Host driver proceeds
1085 * further with the association after getting successful authentication
1086 * status. User space indicates the authentication status through
1087 * %NL80211_ATTR_STATUS_CODE attribute in %NL80211_CMD_EXTERNAL_AUTH
1088 * command interface.
1089 *
1090 * Host driver reports this status on an authentication failure to the
1091 * user space through the connect result as the user space would have
1092 * initiated the connection through the connect request.
1093 *
1094 * @NL80211_CMD_STA_OPMODE_CHANGED: An event that notify station's
75b78ff8
JB
1095 * ht opmode or vht opmode changes using any of %NL80211_ATTR_SMPS_MODE,
1096 * %NL80211_ATTR_CHANNEL_WIDTH,%NL80211_ATTR_NSS attributes with its
1097 * address(specified in %NL80211_ATTR_MAC).
e06485e8 1098 *
806bb9ac
JB
1099 * @NL80211_CMD_GET_FTM_RESPONDER_STATS: Retrieve FTM responder statistics, in
1100 * the %NL80211_ATTR_FTM_RESPONDER_STATS attribute.
1101 *
1102 * @NL80211_CMD_PEER_MEASUREMENT_START: start a (set of) peer measurement(s)
1103 * with the given parameters, which are encapsulated in the nested
1104 * %NL80211_ATTR_PEER_MEASUREMENTS attribute. Optionally, MAC address
1105 * randomization may be enabled and configured by specifying the
1106 * %NL80211_ATTR_MAC and %NL80211_ATTR_MAC_MASK attributes.
1107 * If a timeout is requested, use the %NL80211_ATTR_TIMEOUT attribute.
1108 * A u64 cookie for further %NL80211_ATTR_COOKIE use is is returned in
1109 * the netlink extended ack message.
1110 *
1111 * To cancel a measurement, close the socket that requested it.
1112 *
1113 * Measurement results are reported to the socket that requested the
1114 * measurement using @NL80211_CMD_PEER_MEASUREMENT_RESULT when they
1115 * become available, so applications must ensure a large enough socket
1116 * buffer size.
1117 *
1118 * Depending on driver support it may or may not be possible to start
1119 * multiple concurrent measurements.
1120 * @NL80211_CMD_PEER_MEASUREMENT_RESULT: This command number is used for the
1121 * result notification from the driver to the requesting socket.
1122 * @NL80211_CMD_PEER_MEASUREMENT_COMPLETE: Notification only, indicating that
1123 * the measurement completed, using the measurement cookie
1124 * (%NL80211_ATTR_COOKIE).
1125 *
1126 * @NL80211_CMD_NOTIFY_RADAR: Notify the kernel that a radar signal was
1127 * detected and reported by a neighboring device on the channel
1128 * indicated by %NL80211_ATTR_WIPHY_FREQ and other attributes
1129 * determining the width and type.
1130 *
2c8026de
JB
1131 * @NL80211_CMD_UPDATE_OWE_INFO: This interface allows the host driver to
1132 * offload OWE processing to user space. This intends to support
1133 * OWE AKM by the host drivers that implement SME but rely
1134 * on the user space for the cryptographic/DH IE processing in AP mode.
1135 *
1136 * @NL80211_CMD_PROBE_MESH_LINK: The requirement for mesh link metric
1137 * refreshing, is that from one mesh point we be able to send some data
1138 * frames to other mesh points which are not currently selected as a
1139 * primary traffic path, but which are only 1 hop away. The absence of
1140 * the primary path to the chosen node makes it necessary to apply some
1141 * form of marking on a chosen packet stream so that the packets can be
1142 * properly steered to the selected node for testing, and not by the
1143 * regular mesh path lookup. Further, the packets must be of type data
1144 * so that the rate control (often embedded in firmware) is used for
1145 * rate selection.
1146 *
1147 * Here attribute %NL80211_ATTR_MAC is used to specify connected mesh
1148 * peer MAC address and %NL80211_ATTR_FRAME is used to specify the frame
1149 * content. The frame is ethernet data.
1150 *
cb07eab1
JB
1151 * @NL80211_CMD_SET_TID_CONFIG: Data frame TID specific configuration
1152 * is passed using %NL80211_ATTR_TID_CONFIG attribute.
1153 *
f408e01b
JB
1154 * @NL80211_CMD_MAX: highest used command number
1155 * @__NL80211_CMD_AFTER_LAST: internal use
1156 */
1157enum nl80211_commands {
9b13eeba 1158/* don't change the order or add anything between, this is ABI! */
f408e01b
JB
1159 NL80211_CMD_UNSPEC,
1160
1161 NL80211_CMD_GET_WIPHY, /* can dump */
1162 NL80211_CMD_SET_WIPHY,
1163 NL80211_CMD_NEW_WIPHY,
1164 NL80211_CMD_DEL_WIPHY,
1165
1166 NL80211_CMD_GET_INTERFACE, /* can dump */
1167 NL80211_CMD_SET_INTERFACE,
1168 NL80211_CMD_NEW_INTERFACE,
1169 NL80211_CMD_DEL_INTERFACE,
1170
1171 NL80211_CMD_GET_KEY,
1172 NL80211_CMD_SET_KEY,
1173 NL80211_CMD_NEW_KEY,
1174 NL80211_CMD_DEL_KEY,
1175
1176 NL80211_CMD_GET_BEACON,
1177 NL80211_CMD_SET_BEACON,
b78ae2b1
JB
1178 NL80211_CMD_START_AP,
1179 NL80211_CMD_NEW_BEACON = NL80211_CMD_START_AP,
1180 NL80211_CMD_STOP_AP,
1181 NL80211_CMD_DEL_BEACON = NL80211_CMD_STOP_AP,
f408e01b
JB
1182
1183 NL80211_CMD_GET_STATION,
1184 NL80211_CMD_SET_STATION,
1185 NL80211_CMD_NEW_STATION,
1186 NL80211_CMD_DEL_STATION,
1187
1188 NL80211_CMD_GET_MPATH,
1189 NL80211_CMD_SET_MPATH,
1190 NL80211_CMD_NEW_MPATH,
1191 NL80211_CMD_DEL_MPATH,
1192
1193 NL80211_CMD_SET_BSS,
1194
1195 NL80211_CMD_SET_REG,
1196 NL80211_CMD_REQ_SET_REG,
1197
15d71c1e
JB
1198 NL80211_CMD_GET_MESH_CONFIG,
1199 NL80211_CMD_SET_MESH_CONFIG,
3dd781cc 1200
28566668 1201 NL80211_CMD_SET_MGMT_EXTRA_IE /* reserved; not used */,
4e6d3cb8 1202
7ab65227
LR
1203 NL80211_CMD_GET_REG,
1204
3dd781cc
JB
1205 NL80211_CMD_GET_SCAN,
1206 NL80211_CMD_TRIGGER_SCAN,
f2e17e1f
JB
1207 NL80211_CMD_NEW_SCAN_RESULTS,
1208 NL80211_CMD_SCAN_ABORTED,
3dd781cc 1209
f527ad78
JB
1210 NL80211_CMD_REG_CHANGE,
1211
28566668
JB
1212 NL80211_CMD_AUTHENTICATE,
1213 NL80211_CMD_ASSOCIATE,
1214 NL80211_CMD_DEAUTHENTICATE,
1215 NL80211_CMD_DISASSOCIATE,
1216
1217 NL80211_CMD_MICHAEL_MIC_FAILURE,
1218
1219 NL80211_CMD_REG_BEACON_HINT,
1220
80e02110
JB
1221 NL80211_CMD_JOIN_IBSS,
1222 NL80211_CMD_LEAVE_IBSS,
1223
a13f19e4
JB
1224 NL80211_CMD_TESTMODE,
1225
99dde7aa
JB
1226 NL80211_CMD_CONNECT,
1227 NL80211_CMD_ROAM,
1228 NL80211_CMD_DISCONNECT,
1229
748bdd1c
JB
1230 NL80211_CMD_SET_WIPHY_NETNS,
1231
dd2605a0
JB
1232 NL80211_CMD_GET_SURVEY,
1233 NL80211_CMD_NEW_SURVEY_RESULTS,
1234
d4350a3e
JB
1235 NL80211_CMD_SET_PMKSA,
1236 NL80211_CMD_DEL_PMKSA,
1237 NL80211_CMD_FLUSH_PMKSA,
1238
1239 NL80211_CMD_REMAIN_ON_CHANNEL,
1240 NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL,
1241
1242 NL80211_CMD_SET_TX_BITRATE_MASK,
1243
0c560ade
JB
1244 NL80211_CMD_REGISTER_FRAME,
1245 NL80211_CMD_REGISTER_ACTION = NL80211_CMD_REGISTER_FRAME,
1246 NL80211_CMD_FRAME,
1247 NL80211_CMD_ACTION = NL80211_CMD_FRAME,
1248 NL80211_CMD_FRAME_TX_STATUS,
1249 NL80211_CMD_ACTION_TX_STATUS = NL80211_CMD_FRAME_TX_STATUS,
83037d1b 1250
03977c41
JB
1251 NL80211_CMD_SET_POWER_SAVE,
1252 NL80211_CMD_GET_POWER_SAVE,
1253
7c9e7c7b
JB
1254 NL80211_CMD_SET_CQM,
1255 NL80211_CMD_NOTIFY_CQM,
1256
e1dbf1b8 1257 NL80211_CMD_SET_CHANNEL,
1cbe4a02 1258 NL80211_CMD_SET_WDS_PEER,
e1dbf1b8 1259
fb660ce4
JB
1260 NL80211_CMD_FRAME_WAIT_CANCEL,
1261
1262 NL80211_CMD_JOIN_MESH,
1263 NL80211_CMD_LEAVE_MESH,
1264
15d71c1e
JB
1265 NL80211_CMD_UNPROT_DEAUTHENTICATE,
1266 NL80211_CMD_UNPROT_DISASSOCIATE,
1267
9b13eeba
JB
1268 NL80211_CMD_NEW_PEER_CANDIDATE,
1269
2d6b9d76
JB
1270 NL80211_CMD_GET_WOWLAN,
1271 NL80211_CMD_SET_WOWLAN,
1272
a3edacac
JB
1273 NL80211_CMD_START_SCHED_SCAN,
1274 NL80211_CMD_STOP_SCHED_SCAN,
1275 NL80211_CMD_SCHED_SCAN_RESULTS,
1276 NL80211_CMD_SCHED_SCAN_STOPPED,
1277
b47f6b48
JB
1278 NL80211_CMD_SET_REKEY_OFFLOAD,
1279
fa1bdd00
JB
1280 NL80211_CMD_PMKSA_CANDIDATE,
1281
03820325
JB
1282 NL80211_CMD_TDLS_OPER,
1283 NL80211_CMD_TDLS_MGMT,
1284
d0da8195
JB
1285 NL80211_CMD_UNEXPECTED_FRAME,
1286
1287 NL80211_CMD_PROBE_CLIENT,
1288
1289 NL80211_CMD_REGISTER_BEACONS,
1290
1291 NL80211_CMD_UNEXPECTED_4ADDR_FRAME,
1292
564eb405
JB
1293 NL80211_CMD_SET_NOACK_MAP,
1294
b0a3b5e3
JB
1295 NL80211_CMD_CH_SWITCH_NOTIFY,
1296
bec9a8e0
JB
1297 NL80211_CMD_START_P2P_DEVICE,
1298 NL80211_CMD_STOP_P2P_DEVICE,
1299
1300 NL80211_CMD_CONN_FAILED,
1301
4c47175d
JB
1302 NL80211_CMD_SET_MCAST_RATE,
1303
d7bfeaa0
JB
1304 NL80211_CMD_SET_MAC_ACL,
1305
1306 NL80211_CMD_RADAR_DETECT,
1307
ac38f8ad
JB
1308 NL80211_CMD_GET_PROTOCOL_FEATURES,
1309
1310 NL80211_CMD_UPDATE_FT_IES,
1311 NL80211_CMD_FT_EVENT,
1312
ae586a4e
JB
1313 NL80211_CMD_CRIT_PROTOCOL_START,
1314 NL80211_CMD_CRIT_PROTOCOL_STOP,
1315
0fd08e2e
JB
1316 NL80211_CMD_GET_COALESCE,
1317 NL80211_CMD_SET_COALESCE,
1318
320cfae1
JB
1319 NL80211_CMD_CHANNEL_SWITCH,
1320
63f94301
JB
1321 NL80211_CMD_VENDOR,
1322
1323 NL80211_CMD_SET_QOS_MAP,
1324
034a7d2d
JB
1325 NL80211_CMD_ADD_TX_TS,
1326 NL80211_CMD_DEL_TX_TS,
1327
7b9cb6e3
JB
1328 NL80211_CMD_GET_MPP,
1329
b8820d2b
JB
1330 NL80211_CMD_JOIN_OCB,
1331 NL80211_CMD_LEAVE_OCB,
1332
1333 NL80211_CMD_CH_SWITCH_STARTED_NOTIFY,
1334
f548a702
JB
1335 NL80211_CMD_TDLS_CHANNEL_SWITCH,
1336 NL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH,
1337
2ca8bfa0
JB
1338 NL80211_CMD_WIPHY_REG_CHANGE,
1339
478438c0
JB
1340 NL80211_CMD_ABORT_SCAN,
1341
a574be4b
JB
1342 NL80211_CMD_START_NAN,
1343 NL80211_CMD_STOP_NAN,
1344 NL80211_CMD_ADD_NAN_FUNCTION,
1345 NL80211_CMD_DEL_NAN_FUNCTION,
1346 NL80211_CMD_CHANGE_NAN_CONFIG,
1347 NL80211_CMD_NAN_MATCH,
1348
8a9e0b30
JB
1349 NL80211_CMD_SET_MULTICAST_TO_UNICAST,
1350
1351 NL80211_CMD_UPDATE_CONNECT_PARAMS,
1352
7e0a7c40
JB
1353 NL80211_CMD_SET_PMK,
1354 NL80211_CMD_DEL_PMK,
1355
1356 NL80211_CMD_PORT_AUTHORIZED,
1357
1358 NL80211_CMD_RELOAD_REGDB,
1359
e06485e8
JB
1360 NL80211_CMD_EXTERNAL_AUTH,
1361
1362 NL80211_CMD_STA_OPMODE_CHANGED,
1363
1364 NL80211_CMD_CONTROL_PORT_FRAME,
1365
806bb9ac
JB
1366 NL80211_CMD_GET_FTM_RESPONDER_STATS,
1367
1368 NL80211_CMD_PEER_MEASUREMENT_START,
1369 NL80211_CMD_PEER_MEASUREMENT_RESULT,
1370 NL80211_CMD_PEER_MEASUREMENT_COMPLETE,
1371
1372 NL80211_CMD_NOTIFY_RADAR,
1373
2c8026de
JB
1374 NL80211_CMD_UPDATE_OWE_INFO,
1375
1376 NL80211_CMD_PROBE_MESH_LINK,
1377
cb07eab1
JB
1378 NL80211_CMD_SET_TID_CONFIG,
1379
f408e01b
JB
1380 /* add new commands above here */
1381
1382 /* used to define NL80211_CMD_MAX below */
1383 __NL80211_CMD_AFTER_LAST,
1384 NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
1385};
1386
1387/*
1388 * Allow user space programs to use #ifdef on new commands by defining them
1389 * here
1390 */
1391#define NL80211_CMD_SET_BSS NL80211_CMD_SET_BSS
4e6d3cb8 1392#define NL80211_CMD_SET_MGMT_EXTRA_IE NL80211_CMD_SET_MGMT_EXTRA_IE
f527ad78 1393#define NL80211_CMD_REG_CHANGE NL80211_CMD_REG_CHANGE
28566668
JB
1394#define NL80211_CMD_AUTHENTICATE NL80211_CMD_AUTHENTICATE
1395#define NL80211_CMD_ASSOCIATE NL80211_CMD_ASSOCIATE
1396#define NL80211_CMD_DEAUTHENTICATE NL80211_CMD_DEAUTHENTICATE
1397#define NL80211_CMD_DISASSOCIATE NL80211_CMD_DISASSOCIATE
1398#define NL80211_CMD_REG_BEACON_HINT NL80211_CMD_REG_BEACON_HINT
f527ad78 1399
d0da8195
JB
1400#define NL80211_ATTR_FEATURE_FLAGS NL80211_ATTR_FEATURE_FLAGS
1401
15d71c1e
JB
1402/* source-level API compatibility */
1403#define NL80211_CMD_GET_MESH_PARAMS NL80211_CMD_GET_MESH_CONFIG
1404#define NL80211_CMD_SET_MESH_PARAMS NL80211_CMD_SET_MESH_CONFIG
9b13eeba 1405#define NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE NL80211_MESH_SETUP_IE
15d71c1e 1406
f408e01b
JB
1407/**
1408 * enum nl80211_attrs - nl80211 netlink attributes
1409 *
1410 * @NL80211_ATTR_UNSPEC: unspecified attribute to catch errors
1411 *
1412 * @NL80211_ATTR_WIPHY: index of wiphy to operate on, cf.
1413 * /sys/class/ieee80211/<phyname>/index
1414 * @NL80211_ATTR_WIPHY_NAME: wiphy name (used for renaming)
767eb647 1415 * @NL80211_ATTR_WIPHY_TXQ_PARAMS: a nested array of TX queue parameters
068ff94a
JB
1416 * @NL80211_ATTR_WIPHY_FREQ: frequency of the selected channel in MHz,
1417 * defines the channel together with the (deprecated)
1418 * %NL80211_ATTR_WIPHY_CHANNEL_TYPE attribute or the attributes
1419 * %NL80211_ATTR_CHANNEL_WIDTH and if needed %NL80211_ATTR_CENTER_FREQ1
1420 * and %NL80211_ATTR_CENTER_FREQ2
1421 * @NL80211_ATTR_CHANNEL_WIDTH: u32 attribute containing one of the values
1422 * of &enum nl80211_chan_width, describing the channel width. See the
1423 * documentation of the enum for more information.
1424 * @NL80211_ATTR_CENTER_FREQ1: Center frequency of the first part of the
1425 * channel, used for anything but 20 MHz bandwidth
1426 * @NL80211_ATTR_CENTER_FREQ2: Center frequency of the second part of the
1427 * channel, used only for 80+80 MHz bandwidth
68632dc7 1428 * @NL80211_ATTR_WIPHY_CHANNEL_TYPE: included with NL80211_ATTR_WIPHY_FREQ
068ff94a 1429 * if HT20 or HT40 are to be used (i.e., HT disabled if not included):
68632dc7 1430 * NL80211_CHAN_NO_HT = HT not allowed (i.e., same as not including
767eb647 1431 * this attribute)
68632dc7
JB
1432 * NL80211_CHAN_HT20 = HT20 only
1433 * NL80211_CHAN_HT40MINUS = secondary channel is below the primary channel
1434 * NL80211_CHAN_HT40PLUS = secondary channel is above the primary channel
068ff94a 1435 * This attribute is now deprecated.
80e02110
JB
1436 * @NL80211_ATTR_WIPHY_RETRY_SHORT: TX retry limit for frames whose length is
1437 * less than or equal to the RTS threshold; allowed range: 1..255;
1438 * dot11ShortRetryLimit; u8
1439 * @NL80211_ATTR_WIPHY_RETRY_LONG: TX retry limit for frames whose length is
1440 * greater than the RTS threshold; allowed range: 1..255;
1441 * dot11ShortLongLimit; u8
1442 * @NL80211_ATTR_WIPHY_FRAG_THRESHOLD: fragmentation threshold, i.e., maximum
1443 * length in octets for frames; allowed range: 256..8000, disable
1444 * fragmentation with (u32)-1; dot11FragmentationThreshold; u32
1445 * @NL80211_ATTR_WIPHY_RTS_THRESHOLD: RTS threshold (TX frames with length
1446 * larger than or equal to this use RTS/CTS handshake); allowed range:
1447 * 0..65536, disable with (u32)-1; dot11RTSThreshold; u32
d4350a3e
JB
1448 * @NL80211_ATTR_WIPHY_COVERAGE_CLASS: Coverage Class as defined by IEEE 802.11
1449 * section 7.3.2.9; dot11CoverageClass; u8
f408e01b
JB
1450 *
1451 * @NL80211_ATTR_IFINDEX: network interface index of the device to operate on
1452 * @NL80211_ATTR_IFNAME: network interface name
1453 * @NL80211_ATTR_IFTYPE: type of virtual interface, see &enum nl80211_iftype
1454 *
f1715630
JB
1455 * @NL80211_ATTR_WDEV: wireless device identifier, used for pseudo-devices
1456 * that don't have a netdev (u64)
1457 *
f408e01b
JB
1458 * @NL80211_ATTR_MAC: MAC address (various uses)
1459 *
1460 * @NL80211_ATTR_KEY_DATA: (temporal) key data; for TKIP this consists of
1461 * 16 bytes encryption key followed by 8 bytes each for TX and RX MIC
1462 * keys
1463 * @NL80211_ATTR_KEY_IDX: key ID (u8, 0-3)
1464 * @NL80211_ATTR_KEY_CIPHER: key cipher suite (u32, as defined by IEEE 802.11
1465 * section 7.3.2.25.1, e.g. 0x000FAC04)
1466 * @NL80211_ATTR_KEY_SEQ: transmit key sequence number (IV/PN) for TKIP and
1467 * CCMP keys, each six bytes in little endian
869982f5
JB
1468 * @NL80211_ATTR_KEY_DEFAULT: Flag attribute indicating the key is default key
1469 * @NL80211_ATTR_KEY_DEFAULT_MGMT: Flag attribute indicating the key is the
1470 * default management key
1471 * @NL80211_ATTR_CIPHER_SUITES_PAIRWISE: For crypto settings for connect or
1472 * other commands, indicates which pairwise cipher suites are used
1473 * @NL80211_ATTR_CIPHER_SUITE_GROUP: For crypto settings for connect or
1474 * other commands, indicates which group cipher suite is used
f408e01b
JB
1475 *
1476 * @NL80211_ATTR_BEACON_INTERVAL: beacon interval in TU
1477 * @NL80211_ATTR_DTIM_PERIOD: DTIM period for beaconing
1478 * @NL80211_ATTR_BEACON_HEAD: portion of the beacon before the TIM IE
1479 * @NL80211_ATTR_BEACON_TAIL: portion of the beacon after the TIM IE
1480 *
1481 * @NL80211_ATTR_STA_AID: Association ID for the station (u16)
1482 * @NL80211_ATTR_STA_FLAGS: flags, nested element with NLA_FLAG attributes of
d8004bdd 1483 * &enum nl80211_sta_flags (deprecated, use %NL80211_ATTR_STA_FLAGS2)
f408e01b
JB
1484 * @NL80211_ATTR_STA_LISTEN_INTERVAL: listen interval as defined by
1485 * IEEE 802.11 7.3.1.6 (u16).
1486 * @NL80211_ATTR_STA_SUPPORTED_RATES: supported rates, array of supported
1487 * rates as defined by IEEE 802.11 7.3.2.2 but without the length
1488 * restriction (at most %NL80211_MAX_SUPP_RATES).
1489 * @NL80211_ATTR_STA_VLAN: interface index of VLAN interface to move station
1490 * to, or the AP interface the station was originally added to to.
1491 * @NL80211_ATTR_STA_INFO: information about a station, part of station info
1492 * given for %NL80211_CMD_GET_STATION, nested attribute containing
1493 * info as possible, see &enum nl80211_sta_info.
1494 *
1495 * @NL80211_ATTR_WIPHY_BANDS: Information about an operating bands,
1496 * consisting of a nested array.
1497 *
1498 * @NL80211_ATTR_MESH_ID: mesh id (1-32 bytes).
ac38f8ad
JB
1499 * @NL80211_ATTR_STA_PLINK_ACTION: action to perform on the mesh peer link
1500 * (see &enum nl80211_plink_action).
f408e01b
JB
1501 * @NL80211_ATTR_MPATH_NEXT_HOP: MAC address of the next hop for a mesh path.
1502 * @NL80211_ATTR_MPATH_INFO: information about a mesh_path, part of mesh path
1503 * info given for %NL80211_CMD_GET_MPATH, nested attribute described at
1504 * &enum nl80211_mpath_info.
1505 *
1506 * @NL80211_ATTR_MNTR_FLAGS: flags, nested element with NLA_FLAG attributes of
1507 * &enum nl80211_mntr_flags.
1508 *
1509 * @NL80211_ATTR_REG_ALPHA2: an ISO-3166-alpha2 country code for which the
1510 * current regulatory domain should be set to or is already set to.
1511 * For example, 'CR', for Costa Rica. This attribute is used by the kernel
1512 * to query the CRDA to retrieve one regulatory domain. This attribute can
1513 * also be used by userspace to query the kernel for the currently set
1514 * regulatory domain. We chose an alpha2 as that is also used by the
320cfae1 1515 * IEEE-802.11 country information element to identify a country.
f408e01b
JB
1516 * Users can also simply ask the wireless core to set regulatory domain
1517 * to a specific alpha2.
1518 * @NL80211_ATTR_REG_RULES: a nested array of regulatory domain regulatory
1519 * rules.
1520 *
1521 * @NL80211_ATTR_BSS_CTS_PROT: whether CTS protection is enabled (u8, 0 or 1)
1522 * @NL80211_ATTR_BSS_SHORT_PREAMBLE: whether short preamble is enabled
1523 * (u8, 0 or 1)
1524 * @NL80211_ATTR_BSS_SHORT_SLOT_TIME: whether short slot time enabled
1525 * (u8, 0 or 1)
767eb647
JB
1526 * @NL80211_ATTR_BSS_BASIC_RATES: basic rates, array of basic
1527 * rates in format defined by IEEE 802.11 7.3.2.2 but without the length
1528 * restriction (at most %NL80211_MAX_SUPP_RATES).
f408e01b
JB
1529 *
1530 * @NL80211_ATTR_HT_CAPABILITY: HT Capability information element (from
1531 * association request when used with NL80211_CMD_NEW_STATION)
1532 *
1533 * @NL80211_ATTR_SUPPORTED_IFTYPES: nested attribute containing all
1534 * supported interface types, each a flag attribute with the number
1535 * of the interface mode.
1536 *
4e6d3cb8
JB
1537 * @NL80211_ATTR_MGMT_SUBTYPE: Management frame subtype for
1538 * %NL80211_CMD_SET_MGMT_EXTRA_IE.
1539 *
1540 * @NL80211_ATTR_IE: Information element(s) data (used, e.g., with
1541 * %NL80211_CMD_SET_MGMT_EXTRA_IE).
1542 *
3dd781cc
JB
1543 * @NL80211_ATTR_MAX_NUM_SCAN_SSIDS: number of SSIDs you can scan with
1544 * a single scan request, a wiphy attribute.
b47f6b48
JB
1545 * @NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS: number of SSIDs you can
1546 * scan with a single scheduled scan request, a wiphy attribute.
28566668
JB
1547 * @NL80211_ATTR_MAX_SCAN_IE_LEN: maximum length of information elements
1548 * that can be added to a scan request
b47f6b48
JB
1549 * @NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN: maximum length of information
1550 * elements that can be added to a scheduled scan request
fa1bdd00
JB
1551 * @NL80211_ATTR_MAX_MATCH_SETS: maximum number of sets that can be
1552 * used with @NL80211_ATTR_SCHED_SCAN_MATCH, a wiphy attribute.
3dd781cc 1553 *
f2e17e1f
JB
1554 * @NL80211_ATTR_SCAN_FREQUENCIES: nested attribute with frequencies (in MHz)
1555 * @NL80211_ATTR_SCAN_SSIDS: nested attribute with SSIDs, leave out for passive
1556 * scanning and include a zero-length SSID (wildcard) for wildcard scan
3dd781cc
JB
1557 * @NL80211_ATTR_BSS: scan result BSS
1558 *
f527ad78
JB
1559 * @NL80211_ATTR_REG_INITIATOR: indicates who requested the regulatory domain
1560 * currently in effect. This could be any of the %NL80211_REGDOM_SET_BY_*
1561 * @NL80211_ATTR_REG_TYPE: indicates the type of the regulatory domain currently
1562 * set. This can be one of the nl80211_reg_type (%NL80211_REGDOM_TYPE_*)
1563 *
28566668
JB
1564 * @NL80211_ATTR_SUPPORTED_COMMANDS: wiphy attribute that specifies
1565 * an array of command numbers (i.e. a mapping index to command number)
1566 * that the driver for the given wiphy supports.
1567 *
1568 * @NL80211_ATTR_FRAME: frame data (binary attribute), including frame header
1569 * and body, but not FCS; used, e.g., with NL80211_CMD_AUTHENTICATE and
1570 * NL80211_CMD_ASSOCIATE events
1571 * @NL80211_ATTR_SSID: SSID (binary attribute, 0..32 octets)
1572 * @NL80211_ATTR_AUTH_TYPE: AuthenticationType, see &enum nl80211_auth_type,
1573 * represented as a u32
1574 * @NL80211_ATTR_REASON_CODE: ReasonCode for %NL80211_CMD_DEAUTHENTICATE and
1575 * %NL80211_CMD_DISASSOCIATE, u16
1576 *
1577 * @NL80211_ATTR_KEY_TYPE: Key Type, see &enum nl80211_key_type, represented as
1578 * a u32
1579 *
1580 * @NL80211_ATTR_FREQ_BEFORE: A channel which has suffered a regulatory change
1581 * due to considerations from a beacon hint. This attribute reflects
1582 * the state of the channel _before_ the beacon hint processing. This
1583 * attributes consists of a nested attribute containing
1584 * NL80211_FREQUENCY_ATTR_*
1585 * @NL80211_ATTR_FREQ_AFTER: A channel which has suffered a regulatory change
1586 * due to considerations from a beacon hint. This attribute reflects
1587 * the state of the channel _after_ the beacon hint processing. This
1588 * attributes consists of a nested attribute containing
1589 * NL80211_FREQUENCY_ATTR_*
1590 *
1591 * @NL80211_ATTR_CIPHER_SUITES: a set of u32 values indicating the supported
1592 * cipher suites
1593 *
80e02110
JB
1594 * @NL80211_ATTR_FREQ_FIXED: a flag indicating the IBSS should not try to look
1595 * for other networks on different channels
1596 *
52868516
JB
1597 * @NL80211_ATTR_TIMED_OUT: a flag indicating than an operation timed out; this
1598 * is used, e.g., with %NL80211_CMD_AUTHENTICATE event
1599 *
1600 * @NL80211_ATTR_USE_MFP: Whether management frame protection (IEEE 802.11w) is
1601 * used for the association (&enum nl80211_mfp, represented as a u32);
7e0a7c40
JB
1602 * this attribute can be used with %NL80211_CMD_ASSOCIATE and
1603 * %NL80211_CMD_CONNECT requests. %NL80211_MFP_OPTIONAL is not allowed for
1604 * %NL80211_CMD_ASSOCIATE since user space SME is expected and hence, it
1605 * must have decided whether to use management frame protection or not.
1606 * Setting %NL80211_MFP_OPTIONAL with a %NL80211_CMD_CONNECT request will
1607 * let the driver (or the firmware) decide whether to use MFP or not.
52868516 1608 *
d8004bdd
JB
1609 * @NL80211_ATTR_STA_FLAGS2: Attribute containing a
1610 * &struct nl80211_sta_flag_update.
1611 *
1612 * @NL80211_ATTR_CONTROL_PORT: A flag indicating whether user space controls
1613 * IEEE 802.1X port, i.e., sets/clears %NL80211_STA_FLAG_AUTHORIZED, in
1614 * station mode. If the flag is included in %NL80211_CMD_ASSOCIATE
1615 * request, the driver will assume that the port is unauthorized until
1616 * authorized by user space. Otherwise, port is marked authorized by
1617 * default in station mode.
d07ec36a
JB
1618 * @NL80211_ATTR_CONTROL_PORT_ETHERTYPE: A 16-bit value indicating the
1619 * ethertype that will be used for key negotiation. It can be
1620 * specified with the associate and connect commands. If it is not
1621 * specified, the value defaults to 0x888E (PAE, 802.1X). This
1622 * attribute is also used as a flag in the wiphy information to
1623 * indicate that protocols other than PAE are supported.
1624 * @NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT: When included along with
1625 * %NL80211_ATTR_CONTROL_PORT_ETHERTYPE, indicates that the custom
1626 * ethertype frames used for key negotiation must not be encrypted.
e06485e8
JB
1627 * @NL80211_ATTR_CONTROL_PORT_OVER_NL80211: A flag indicating whether control
1628 * port frames (e.g. of type given in %NL80211_ATTR_CONTROL_PORT_ETHERTYPE)
1629 * will be sent directly to the network interface or sent via the NL80211
1630 * socket. If this attribute is missing, then legacy behavior of sending
1631 * control port frames directly to the network interface is used. If the
1632 * flag is included, then control port frames are sent over NL80211 instead
1633 * using %CMD_CONTROL_PORT_FRAME. If control port routing over NL80211 is
1634 * to be used then userspace must also use the %NL80211_ATTR_SOCKET_OWNER
cb07eab1
JB
1635 * flag. When used with %NL80211_ATTR_CONTROL_PORT_NO_PREAUTH, pre-auth
1636 * frames are not forwared over the control port.
d8004bdd 1637 *
a13f19e4
JB
1638 * @NL80211_ATTR_TESTDATA: Testmode data blob, passed through to the driver.
1639 * We recommend using nested, driver-specific attributes within this.
1640 *
99dde7aa
JB
1641 * @NL80211_ATTR_DISCONNECTED_BY_AP: A flag indicating that the DISCONNECT
1642 * event was due to the AP disconnecting the station, and not due to
1643 * a local disconnect request.
1644 * @NL80211_ATTR_STATUS_CODE: StatusCode for the %NL80211_CMD_CONNECT
1645 * event (u16)
1782c8a0 1646 * @NL80211_ATTR_PRIVACY: Flag attribute, used with connect(), indicating
bea987cd
JB
1647 * that protected APs should be used. This is also used with NEW_BEACON to
1648 * indicate that the BSS is to use protection.
99dde7aa 1649 *
bea987cd
JB
1650 * @NL80211_ATTR_CIPHERS_PAIRWISE: Used with CONNECT, ASSOCIATE, and NEW_BEACON
1651 * to indicate which unicast key ciphers will be used with the connection
a13f19e4 1652 * (an array of u32).
bea987cd
JB
1653 * @NL80211_ATTR_CIPHER_GROUP: Used with CONNECT, ASSOCIATE, and NEW_BEACON to
1654 * indicate which group key cipher will be used with the connection (a
1655 * u32).
1656 * @NL80211_ATTR_WPA_VERSIONS: Used with CONNECT, ASSOCIATE, and NEW_BEACON to
1657 * indicate which WPA version(s) the AP we want to associate with is using
a13f19e4 1658 * (a u32 with flags from &enum nl80211_wpa_versions).
bea987cd
JB
1659 * @NL80211_ATTR_AKM_SUITES: Used with CONNECT, ASSOCIATE, and NEW_BEACON to
1660 * indicate which key management algorithm(s) to use (an array of u32).
691c5853
JB
1661 * This attribute is also sent in response to @NL80211_CMD_GET_WIPHY,
1662 * indicating the supported AKM suites, intended for specific drivers which
1663 * implement SME and have constraints on which AKMs are supported and also
1664 * the cases where an AKM support is offloaded to the driver/firmware.
1665 * If there is no such notification from the driver, user space should
1666 * assume the driver supports all the AKM suites.
a13f19e4
JB
1667 *
1668 * @NL80211_ATTR_REQ_IE: (Re)association request information elements as
1669 * sent out by the card, for ROAM and successful CONNECT events.
1670 * @NL80211_ATTR_RESP_IE: (Re)association response information elements as
1671 * sent by peer, for ROAM and successful CONNECT events.
1672 *
f45d4583
JB
1673 * @NL80211_ATTR_PREV_BSSID: previous BSSID, to be used in ASSOCIATE and CONNECT
1674 * commands to specify a request to reassociate within an ESS, i.e., to use
1675 * Reassociate Request frame (with the value of this attribute in the
1676 * Current AP address field) instead of Association Request frame which is
1677 * used for the initial association to an ESS.
b739493e 1678 *
b739493e
JB
1679 * @NL80211_ATTR_KEY: key information in a nested attribute with
1680 * %NL80211_KEY_* sub-attributes
1681 * @NL80211_ATTR_KEYS: array of keys for static WEP keys for connect()
1682 * and join_ibss(), key information is in a nested attribute each
1683 * with %NL80211_KEY_* sub-attributes
1684 *
748bdd1c
JB
1685 * @NL80211_ATTR_PID: Process ID of a network namespace.
1686 *
1687 * @NL80211_ATTR_GENERATION: Used to indicate consistent snapshots for
1688 * dumps. This number increases whenever the object list being
1689 * dumped changes, and as such userspace can verify that it has
1690 * obtained a complete and consistent snapshot by verifying that
1691 * all dump messages contain the same generation number. If it
1692 * changed then the list changed and the dump should be repeated
1693 * completely from scratch.
1694 *
39566cca
FF
1695 * @NL80211_ATTR_4ADDR: Use 4-address frames on a virtual interface
1696 *
dd2605a0
JB
1697 * @NL80211_ATTR_SURVEY_INFO: survey information about a channel, part of
1698 * the survey response for %NL80211_CMD_GET_SURVEY, nested attribute
1699 * containing info as possible, see &enum survey_info.
1700 *
d4350a3e
JB
1701 * @NL80211_ATTR_PMKID: PMK material for PMKSA caching.
1702 * @NL80211_ATTR_MAX_NUM_PMKIDS: maximum number of PMKIDs a firmware can
1703 * cache, a wiphy attribute.
1704 *
1705 * @NL80211_ATTR_DURATION: Duration of an operation in milliseconds, u32.
15d71c1e
JB
1706 * @NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION: Device attribute that
1707 * specifies the maximum duration that can be requested with the
1708 * remain-on-channel operation, in milliseconds, u32.
d4350a3e
JB
1709 *
1710 * @NL80211_ATTR_COOKIE: Generic 64-bit cookie to identify objects.
1711 *
1712 * @NL80211_ATTR_TX_RATES: Nested set of attributes
1713 * (enum nl80211_tx_rate_attributes) describing TX rates per band. The
1714 * enum nl80211_band value is used as the index (nla_type() of the nested
1715 * data. If a band is not included, it will be configured to allow all
1716 * rates based on negotiated supported rates information. This attribute
a574be4b
JB
1717 * is used with %NL80211_CMD_SET_TX_BITRATE_MASK and with starting AP,
1718 * and joining mesh networks (not IBSS yet). In the later case, it must
1719 * specify just a single bitrate, which is to be used for the beacon.
1720 * The driver must also specify support for this with the extended
1721 * features NL80211_EXT_FEATURE_BEACON_RATE_LEGACY,
1722 * NL80211_EXT_FEATURE_BEACON_RATE_HT and
1723 * NL80211_EXT_FEATURE_BEACON_RATE_VHT.
d4350a3e 1724 *
83037d1b 1725 * @NL80211_ATTR_FRAME_MATCH: A binary attribute which typically must contain
0c560ade
JB
1726 * at least one byte, currently used with @NL80211_CMD_REGISTER_FRAME.
1727 * @NL80211_ATTR_FRAME_TYPE: A u16 indicating the frame type/subtype for the
1728 * @NL80211_CMD_REGISTER_FRAME command.
1729 * @NL80211_ATTR_TX_FRAME_TYPES: wiphy capability attribute, which is a
1730 * nested attribute of %NL80211_ATTR_FRAME_TYPE attributes, containing
1731 * information about which frame types can be transmitted with
1732 * %NL80211_CMD_FRAME.
1733 * @NL80211_ATTR_RX_FRAME_TYPES: wiphy capability attribute, which is a
1734 * nested attribute of %NL80211_ATTR_FRAME_TYPE attributes, containing
1735 * information about which frame types can be registered for RX.
83037d1b
JB
1736 *
1737 * @NL80211_ATTR_ACK: Flag attribute indicating that the frame was
1738 * acknowledged by the recipient.
1739 *
869982f5
JB
1740 * @NL80211_ATTR_PS_STATE: powersave state, using &enum nl80211_ps_state values.
1741 *
7c9e7c7b
JB
1742 * @NL80211_ATTR_CQM: connection quality monitor configuration in a
1743 * nested attribute with %NL80211_ATTR_CQM_* sub-attributes.
1744 *
e1dbf1b8
JB
1745 * @NL80211_ATTR_LOCAL_STATE_CHANGE: Flag attribute to indicate that a command
1746 * is requesting a local authentication/association state change without
1747 * invoking actual management frame exchange. This can be used with
1748 * NL80211_CMD_AUTHENTICATE, NL80211_CMD_DEAUTHENTICATE,
1749 * NL80211_CMD_DISASSOCIATE.
1750 *
1751 * @NL80211_ATTR_AP_ISOLATE: (AP mode) Do not forward traffic between stations
1752 * connected to this BSS.
1753 *
80ed81f7
JB
1754 * @NL80211_ATTR_WIPHY_TX_POWER_SETTING: Transmit power setting type. See
1755 * &enum nl80211_tx_power_setting for possible values.
1756 * @NL80211_ATTR_WIPHY_TX_POWER_LEVEL: Transmit power level in signed mBm units.
1757 * This is used in association with @NL80211_ATTR_WIPHY_TX_POWER_SETTING
1758 * for non-automatic settings.
1759 *
1cbe4a02
JB
1760 * @NL80211_ATTR_SUPPORT_IBSS_RSN: The device supports IBSS RSN, which mostly
1761 * means support for per-station GTKs.
1762 *
fb660ce4
JB
1763 * @NL80211_ATTR_WIPHY_ANTENNA_TX: Bitmap of allowed antennas for transmitting.
1764 * This can be used to mask out antennas which are not attached or should
1765 * not be used for transmitting. If an antenna is not selected in this
1766 * bitmap the hardware is not allowed to transmit on this antenna.
1767 *
1768 * Each bit represents one antenna, starting with antenna 1 at the first
1769 * bit. Depending on which antennas are selected in the bitmap, 802.11n
1770 * drivers can derive which chainmasks to use (if all antennas belonging to
1771 * a particular chain are disabled this chain should be disabled) and if
1772 * a chain has diversity antennas wether diversity should be used or not.
1773 * HT capabilities (STBC, TX Beamforming, Antenna selection) can be
1774 * derived from the available chains after applying the antenna mask.
1775 * Non-802.11n drivers can derive wether to use diversity or not.
1776 * Drivers may reject configurations or RX/TX mask combinations they cannot
1777 * support by returning -EINVAL.
1778 *
1779 * @NL80211_ATTR_WIPHY_ANTENNA_RX: Bitmap of allowed antennas for receiving.
1780 * This can be used to mask out antennas which are not attached or should
1781 * not be used for receiving. If an antenna is not selected in this bitmap
1782 * the hardware should not be configured to receive on this antenna.
9b13eeba 1783 * For a more detailed description see @NL80211_ATTR_WIPHY_ANTENNA_TX.
fb660ce4 1784 *
15d71c1e
JB
1785 * @NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX: Bitmap of antennas which are available
1786 * for configuration as TX antennas via the above parameters.
1787 *
1788 * @NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX: Bitmap of antennas which are available
1789 * for configuration as RX antennas via the above parameters.
1790 *
fb660ce4
JB
1791 * @NL80211_ATTR_MCAST_RATE: Multicast tx rate (in 100 kbps) for IBSS
1792 *
1793 * @NL80211_ATTR_OFFCHANNEL_TX_OK: For management frame TX, the frame may be
1794 * transmitted on another channel when the channel given doesn't match
1795 * the current channel. If the current channel doesn't match and this
1796 * flag isn't set, the frame will be rejected. This is also used as an
1797 * nl80211 capability flag.
1798 *
869982f5 1799 * @NL80211_ATTR_BSS_HT_OPMODE: HT operation mode (u16)
fb660ce4 1800 *
15d71c1e
JB
1801 * @NL80211_ATTR_KEY_DEFAULT_TYPES: A nested attribute containing flags
1802 * attributes, specifying what a key should be set as default as.
1803 * See &enum nl80211_key_default_types.
1804 *
1805 * @NL80211_ATTR_MESH_SETUP: Optional mesh setup parameters. These cannot be
9b13eeba
JB
1806 * changed once the mesh is active.
1807 * @NL80211_ATTR_MESH_CONFIG: Mesh configuration parameters, a nested attribute
1808 * containing attributes from &enum nl80211_meshconf_params.
1809 * @NL80211_ATTR_SUPPORT_MESH_AUTH: Currently, this means the underlying driver
1810 * allows auth frames in a mesh to be passed to userspace for processing via
1811 * the @NL80211_MESH_SETUP_USERSPACE_AUTH flag.
ac38f8ad
JB
1812 * @NL80211_ATTR_STA_PLINK_STATE: The state of a mesh peer link as defined in
1813 * &enum nl80211_plink_state. Used when userspace is driving the peer link
1814 * management state machine. @NL80211_MESH_SETUP_USERSPACE_AMPE or
1815 * @NL80211_MESH_SETUP_USERSPACE_MPM must be enabled.
15d71c1e 1816 *
b47f6b48
JB
1817 * @NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED: indicates, as part of the wiphy
1818 * capabilities, the supported WoWLAN triggers
2d6b9d76
JB
1819 * @NL80211_ATTR_WOWLAN_TRIGGERS: used by %NL80211_CMD_SET_WOWLAN to
1820 * indicate which WoW triggers should be enabled. This is also
1821 * used by %NL80211_CMD_GET_WOWLAN to get the currently enabled WoWLAN
1822 * triggers.
869982f5 1823 *
a3edacac
JB
1824 * @NL80211_ATTR_SCHED_SCAN_INTERVAL: Interval between scheduled scan
1825 * cycles, in msecs.
869982f5 1826 *
fa1bdd00
JB
1827 * @NL80211_ATTR_SCHED_SCAN_MATCH: Nested attribute with one or more
1828 * sets of attributes to match during scheduled scans. Only BSSs
1829 * that match any of the sets will be reported. These are
1830 * pass-thru filter rules.
1831 * For a match to succeed, the BSS must match all attributes of a
1832 * set. Since not every hardware supports matching all types of
1833 * attributes, there is no guarantee that the reported BSSs are
1834 * fully complying with the match sets and userspace needs to be
1835 * able to ignore them by itself.
1836 * Thus, the implementation is somewhat hardware-dependent, but
1837 * this is only an optimization and the userspace application
1838 * needs to handle all the non-filtered results anyway.
1839 * If the match attributes don't make sense when combined with
1840 * the values passed in @NL80211_ATTR_SCAN_SSIDS (eg. if an SSID
1841 * is included in the probe request, but the match attributes
1842 * will never let it go through), -EINVAL may be returned.
806bb9ac 1843 * If omitted, no filtering is done.
a3edacac
JB
1844 *
1845 * @NL80211_ATTR_INTERFACE_COMBINATIONS: Nested attribute listing the supported
1846 * interface combinations. In each nested item, it contains attributes
1847 * defined in &enum nl80211_if_combination_attrs.
1848 * @NL80211_ATTR_SOFTWARE_IFTYPES: Nested attribute (just like
1849 * %NL80211_ATTR_SUPPORTED_IFTYPES) containing the interface types that
1850 * are managed in software: interfaces of these types aren't subject to
1851 * any restrictions in their number or combinations.
2d6b9d76 1852 *
869982f5 1853 * @NL80211_ATTR_REKEY_DATA: nested attribute containing the information
b47f6b48
JB
1854 * necessary for GTK rekeying in the device, see &enum nl80211_rekey_data.
1855 *
bea987cd
JB
1856 * @NL80211_ATTR_SCAN_SUPP_RATES: rates per to be advertised as supported in scan,
1857 * nested array attribute containing an entry for each band, with the entry
1858 * being a list of supported rates as defined by IEEE 802.11 7.3.2.2 but
1859 * without the length restriction (at most %NL80211_MAX_SUPP_RATES).
1860 *
1861 * @NL80211_ATTR_HIDDEN_SSID: indicates whether SSID is to be hidden from Beacon
1862 * and Probe Response (when response to wildcard Probe Request); see
1863 * &enum nl80211_hidden_ssid, represented as a u32
1864 *
1865 * @NL80211_ATTR_IE_PROBE_RESP: Information element(s) for Probe Response frame.
1866 * This is used with %NL80211_CMD_NEW_BEACON and %NL80211_CMD_SET_BEACON to
1867 * provide extra IEs (e.g., WPS/P2P IE) into Probe Response frames when the
1868 * driver (or firmware) replies to Probe Request frames.
1869 * @NL80211_ATTR_IE_ASSOC_RESP: Information element(s) for (Re)Association
1870 * Response frames. This is used with %NL80211_CMD_NEW_BEACON and
1871 * %NL80211_CMD_SET_BEACON to provide extra IEs (e.g., WPS/P2P IE) into
1872 * (Re)Association Response frames when the driver (or firmware) replies to
1873 * (Re)Association Request frames.
1874 *
1875 * @NL80211_ATTR_STA_WME: Nested attribute containing the wme configuration
1876 * of the station, see &enum nl80211_sta_wme_attr.
fa1bdd00
JB
1877 * @NL80211_ATTR_SUPPORT_AP_UAPSD: the device supports uapsd when working
1878 * as AP.
1879 *
1880 * @NL80211_ATTR_ROAM_SUPPORT: Indicates whether the firmware is capable of
1881 * roaming to another AP in the same ESS if the signal lever is low.
1882 *
1883 * @NL80211_ATTR_PMKSA_CANDIDATE: Nested attribute containing the PMKSA caching
1884 * candidate information, see &enum nl80211_pmksa_candidate_attr.
1885 *
1886 * @NL80211_ATTR_TX_NO_CCK_RATE: Indicates whether to use CCK rate or not
1887 * for management frames transmission. In order to avoid p2p probe/action
1888 * frames are being transmitted at CCK rate in 2GHz band, the user space
1889 * applications use this attribute.
1890 * This attribute is used with %NL80211_CMD_TRIGGER_SCAN and
1891 * %NL80211_CMD_FRAME commands.
bea987cd 1892 *
03820325
JB
1893 * @NL80211_ATTR_TDLS_ACTION: Low level TDLS action code (e.g. link setup
1894 * request, link setup confirm, link teardown, etc.). Values are
1895 * described in the TDLS (802.11z) specification.
1896 * @NL80211_ATTR_TDLS_DIALOG_TOKEN: Non-zero token for uniquely identifying a
1897 * TDLS conversation between two devices.
1898 * @NL80211_ATTR_TDLS_OPERATION: High level TDLS operation; see
1899 * &enum nl80211_tdls_operation, represented as a u8.
1900 * @NL80211_ATTR_TDLS_SUPPORT: A flag indicating the device can operate
1901 * as a TDLS peer sta.
1902 * @NL80211_ATTR_TDLS_EXTERNAL_SETUP: The TDLS discovery/setup and teardown
1903 * procedures should be performed by sending TDLS packets via
1904 * %NL80211_CMD_TDLS_MGMT. Otherwise %NL80211_CMD_TDLS_OPER should be
1905 * used for asking the driver to perform a TDLS operation.
1906 *
d0da8195
JB
1907 * @NL80211_ATTR_DEVICE_AP_SME: This u32 attribute may be listed for devices
1908 * that have AP support to indicate that they have the AP SME integrated
1909 * with support for the features listed in this attribute, see
1910 * &enum nl80211_ap_sme_features.
1911 *
1912 * @NL80211_ATTR_DONT_WAIT_FOR_ACK: Used with %NL80211_CMD_FRAME, this tells
1913 * the driver to not wait for an acknowledgement. Note that due to this,
1914 * it will also not give a status callback nor return a cookie. This is
1915 * mostly useful for probe responses to save airtime.
1916 *
1917 * @NL80211_ATTR_FEATURE_FLAGS: This u32 attribute contains flags from
1918 * &enum nl80211_feature_flags and is advertised in wiphy information.
1919 * @NL80211_ATTR_PROBE_RESP_OFFLOAD: Indicates that the HW responds to probe
d0da8195
JB
1920 * requests while operating in AP-mode.
1921 * This attribute holds a bitmap of the supported protocols for
1922 * offloading (see &enum nl80211_probe_resp_offload_support_attr).
1923 *
1924 * @NL80211_ATTR_PROBE_RESP: Probe Response template data. Contains the entire
1925 * probe-response frame. The DA field in the 802.11 header is zero-ed out,
1926 * to be filled by the FW.
1927 * @NL80211_ATTR_DISABLE_HT: Force HT capable interfaces to disable
1928 * this feature. Currently, only supported in mac80211 drivers.
1929 * @NL80211_ATTR_HT_CAPABILITY_MASK: Specify which bits of the
1930 * ATTR_HT_CAPABILITY to which attention should be paid.
1931 * Currently, only mac80211 NICs support this feature.
1932 * The values that may be configured are:
1933 * MCS rates, MAX-AMSDU, HT-20-40 and HT_CAP_SGI_40
1934 * AMPDU density and AMPDU factor.
1935 * All values are treated as suggestions and may be ignored
1936 * by the driver as required. The actual values may be seen in
1937 * the station debugfs ht_caps file.
1938 *
1939 * @NL80211_ATTR_DFS_REGION: region for regulatory rules which this country
1940 * abides to when initiating radiation on DFS channels. A country maps
1941 * to one DFS region.
1942 *
564eb405
JB
1943 * @NL80211_ATTR_NOACK_MAP: This u16 bitmap contains the No Ack Policy of
1944 * up to 16 TIDs.
1945 *
b78ae2b1
JB
1946 * @NL80211_ATTR_INACTIVITY_TIMEOUT: timeout value in seconds, this can be
1947 * used by the drivers which has MLME in firmware and does not have support
806bb9ac 1948 * to report per station tx/rx activity to free up the station entry from
b78ae2b1
JB
1949 * the list. This needs to be used when the driver advertises the
1950 * capability to timeout the stations.
1951 *
1952 * @NL80211_ATTR_RX_SIGNAL_DBM: signal strength in dBm (as a 32-bit int);
1953 * this attribute is (depending on the driver capabilities) added to
1954 * received frames indicated with %NL80211_CMD_FRAME.
1955 *
1956 * @NL80211_ATTR_BG_SCAN_PERIOD: Background scan period in seconds
1957 * or 0 to disable background scan.
1958 *
f1715630
JB
1959 * @NL80211_ATTR_USER_REG_HINT_TYPE: type of regulatory hint passed from
1960 * userspace. If unset it is assumed the hint comes directly from
1961 * a user. If set code could specify exactly what type of source
1962 * was used to provide the hint. For the different types of
1963 * allowed user regulatory hints see nl80211_user_reg_hint_type.
1964 *
bec9a8e0
JB
1965 * @NL80211_ATTR_CONN_FAILED_REASON: The reason for which AP has rejected
1966 * the connection request from a station. nl80211_connect_failed_reason
1967 * enum has different reasons of connection failure.
1968 *
8a9e0b30
JB
1969 * @NL80211_ATTR_AUTH_DATA: Fields and elements in Authentication frames.
1970 * This contains the authentication frame body (non-IE and IE data),
1971 * excluding the Authentication algorithm number, i.e., starting at the
1972 * Authentication transaction sequence number field. It is used with
1973 * authentication algorithms that need special fields to be added into
1974 * the frames (SAE and FILS). Currently, only the SAE cases use the
1975 * initial two fields (Authentication transaction sequence number and
1976 * Status code). However, those fields are included in the attribute data
1977 * for all authentication algorithms to keep the attribute definition
1978 * consistent.
a614d505
JB
1979 *
1980 * @NL80211_ATTR_VHT_CAPABILITY: VHT Capability information element (from
1981 * association request when used with NL80211_CMD_NEW_STATION)
1982 *
1983 * @NL80211_ATTR_SCAN_FLAGS: scan request control flags (u32)
1984 *
1632b8e1
JB
1985 * @NL80211_ATTR_P2P_CTWINDOW: P2P GO Client Traffic Window (u8), used with
1986 * the START_AP and SET_BSS commands
1987 * @NL80211_ATTR_P2P_OPPPS: P2P GO opportunistic PS (u8), used with the
1988 * START_AP and SET_BSS commands. This can have the values 0 or 1;
1989 * if not given in START_AP 0 is assumed, if not given in SET_BSS
1990 * no change is made.
1991 *
6ccd4979
JB
1992 * @NL80211_ATTR_LOCAL_MESH_POWER_MODE: local mesh STA link-specific power mode
1993 * defined in &enum nl80211_mesh_power_mode.
1994 *
d7bfeaa0
JB
1995 * @NL80211_ATTR_ACL_POLICY: ACL policy, see &enum nl80211_acl_policy,
1996 * carried in a u32 attribute
1997 *
1998 * @NL80211_ATTR_MAC_ADDRS: Array of nested MAC addresses, used for
1999 * MAC ACL.
2000 *
2001 * @NL80211_ATTR_MAC_ACL_MAX: u32 attribute to advertise the maximum
2002 * number of MAC addresses that a device can support for MAC
2003 * ACL.
2004 *
2005 * @NL80211_ATTR_RADAR_EVENT: Type of radar event for notification to userspace,
2006 * contains a value of enum nl80211_radar_event (u32).
2007 *
2008 * @NL80211_ATTR_EXT_CAPA: 802.11 extended capabilities that the kernel driver
2009 * has and handles. The format is the same as the IE contents. See
2010 * 802.11-2012 8.4.2.29 for more information.
2011 * @NL80211_ATTR_EXT_CAPA_MASK: Extended capabilities that the kernel driver
2012 * has set in the %NL80211_ATTR_EXT_CAPA value, for multibit fields.
2013 *
2014 * @NL80211_ATTR_STA_CAPABILITY: Station capabilities (u16) are advertised to
2015 * the driver, e.g., to enable TDLS power save (PU-APSD).
2016 *
2017 * @NL80211_ATTR_STA_EXT_CAPABILITY: Station extended capabilities are
2018 * advertised to the driver, e.g., to enable TDLS off channel operations
2019 * and PU-APSD.
2020 *
ac38f8ad
JB
2021 * @NL80211_ATTR_PROTOCOL_FEATURES: global nl80211 feature flags, see
2022 * &enum nl80211_protocol_features, the attribute is a u32.
2023 *
2024 * @NL80211_ATTR_SPLIT_WIPHY_DUMP: flag attribute, userspace supports
2025 * receiving the data for a single wiphy split across multiple
2026 * messages, given with wiphy dump message
2027 *
2028 * @NL80211_ATTR_MDID: Mobility Domain Identifier
2029 *
2030 * @NL80211_ATTR_IE_RIC: Resource Information Container Information
2031 * Element
2032 *
ae586a4e
JB
2033 * @NL80211_ATTR_CRIT_PROT_ID: critical protocol identifier requiring increased
2034 * reliability, see &enum nl80211_crit_proto_id (u16).
2035 * @NL80211_ATTR_MAX_CRIT_PROT_DURATION: duration in milliseconds in which
2036 * the connection should have increased reliability (u16).
2037 *
0fd08e2e
JB
2038 * @NL80211_ATTR_PEER_AID: Association ID for the peer TDLS station (u16).
2039 * This is similar to @NL80211_ATTR_STA_AID but with a difference of being
2040 * allowed to be used with the first @NL80211_CMD_SET_STATION command to
2041 * update a TDLS peer STA entry.
2042 *
2043 * @NL80211_ATTR_COALESCE_RULE: Coalesce rule information.
2044 *
320cfae1
JB
2045 * @NL80211_ATTR_CH_SWITCH_COUNT: u32 attribute specifying the number of TBTT's
2046 * until the channel switch event.
2047 * @NL80211_ATTR_CH_SWITCH_BLOCK_TX: flag attribute specifying that transmission
2048 * must be blocked on the current channel (before the channel switch
2049 * operation).
2050 * @NL80211_ATTR_CSA_IES: Nested set of attributes containing the IE information
2051 * for the time while performing a channel switch.
70f3fe99
JB
2052 * @NL80211_ATTR_CSA_C_OFF_BEACON: An array of offsets (u16) to the channel
2053 * switch counters in the beacons tail (%NL80211_ATTR_BEACON_TAIL).
2054 * @NL80211_ATTR_CSA_C_OFF_PRESP: An array of offsets (u16) to the channel
2055 * switch counters in the probe response (%NL80211_ATTR_PROBE_RESP).
320cfae1
JB
2056 *
2057 * @NL80211_ATTR_RXMGMT_FLAGS: flags for nl80211_send_mgmt(), u32.
2058 * As specified in the &enum nl80211_rxmgmt_flags.
2059 *
2060 * @NL80211_ATTR_STA_SUPPORTED_CHANNELS: array of supported channels.
2061 *
2062 * @NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES: array of supported
2063 * supported operating classes.
2064 *
2065 * @NL80211_ATTR_HANDLE_DFS: A flag indicating whether user space
2066 * controls DFS operation in IBSS mode. If the flag is included in
2067 * %NL80211_CMD_JOIN_IBSS request, the driver will allow use of DFS
2068 * channels and reports radar events to userspace. Userspace is required
2069 * to react to radar events, e.g. initiate a channel switch or leave the
2070 * IBSS network.
2071 *
63f94301
JB
2072 * @NL80211_ATTR_SUPPORT_5_MHZ: A flag indicating that the device supports
2073 * 5 MHz channel bandwidth.
2074 * @NL80211_ATTR_SUPPORT_10_MHZ: A flag indicating that the device supports
2075 * 10 MHz channel bandwidth.
2076 *
2077 * @NL80211_ATTR_OPMODE_NOTIF: Operating mode field from Operating Mode
2078 * Notification Element based on association request when used with
8a9e0b30
JB
2079 * %NL80211_CMD_NEW_STATION or %NL80211_CMD_SET_STATION (only when
2080 * %NL80211_FEATURE_FULL_AP_CLIENT_STATE is supported, or with TDLS);
2081 * u8 attribute.
63f94301
JB
2082 *
2083 * @NL80211_ATTR_VENDOR_ID: The vendor ID, either a 24-bit OUI or, if
2084 * %NL80211_VENDOR_ID_IS_LINUX is set, a special Linux ID (not used yet)
2085 * @NL80211_ATTR_VENDOR_SUBCMD: vendor sub-command
2086 * @NL80211_ATTR_VENDOR_DATA: data for the vendor command, if any; this
2087 * attribute is also used for vendor command feature advertisement
2088 * @NL80211_ATTR_VENDOR_EVENTS: used for event list advertising in the wiphy
2089 * info, containing a nested array of possible events
2090 *
2091 * @NL80211_ATTR_QOS_MAP: IP DSCP mapping for Interworking QoS mapping. This
2092 * data is in the format defined for the payload of the QoS Map Set element
2093 * in IEEE Std 802.11-2012, 8.4.2.97.
320cfae1 2094 *
da441d4f
JB
2095 * @NL80211_ATTR_MAC_HINT: MAC address recommendation as initial BSS
2096 * @NL80211_ATTR_WIPHY_FREQ_HINT: frequency of the recommended initial BSS
2097 *
2098 * @NL80211_ATTR_MAX_AP_ASSOC_STA: Device attribute that indicates how many
2099 * associated stations are supported in AP mode (including P2P GO); u32.
2100 * Since drivers may not have a fixed limit on the maximum number (e.g.,
2101 * other concurrent operations may affect this), drivers are allowed to
2102 * advertise values that cannot always be met. In such cases, an attempt
2103 * to add a new station entry with @NL80211_CMD_NEW_STATION may fail.
2104 *
70f3fe99
JB
2105 * @NL80211_ATTR_CSA_C_OFFSETS_TX: An array of csa counter offsets (u16) which
2106 * should be updated when the frame is transmitted.
2107 * @NL80211_ATTR_MAX_CSA_COUNTERS: U8 attribute used to advertise the maximum
2108 * supported number of csa counters.
2109 *
0c28d3d5
JB
2110 * @NL80211_ATTR_TDLS_PEER_CAPABILITY: flags for TDLS peer capabilities, u32.
2111 * As specified in the &enum nl80211_tdls_peer_capability.
2112 *
f548a702 2113 * @NL80211_ATTR_SOCKET_OWNER: Flag attribute, if set during interface
70f3fe99 2114 * creation then the new interface will be owned by the netlink socket
f548a702 2115 * that created it and will be destroyed when the socket is closed.
2ca8bfa0
JB
2116 * If set during scheduled scan start then the new scan req will be
2117 * owned by the netlink socket that created it and the scheduled scan will
2118 * be stopped when the socket is closed.
a9e38041
JB
2119 * If set during configuration of regulatory indoor operation then the
2120 * regulatory indoor configuration would be owned by the netlink socket
2121 * that configured the indoor setting, and the indoor operation would be
2122 * cleared when the socket is closed.
a574be4b 2123 * If set during NAN interface creation, the interface will be destroyed
7e0a7c40
JB
2124 * if the socket is closed just like any other interface. Moreover, NAN
2125 * notifications will be sent in unicast to that socket. Without this
2126 * attribute, the notifications will be sent to the %NL80211_MCGRP_NAN
2127 * multicast group.
8a9e0b30
JB
2128 * If set during %NL80211_CMD_ASSOCIATE or %NL80211_CMD_CONNECT the
2129 * station will deauthenticate when the socket is closed.
e06485e8
JB
2130 * If set during %NL80211_CMD_JOIN_IBSS the IBSS will be automatically
2131 * torn down when the socket is closed.
2132 * If set during %NL80211_CMD_JOIN_MESH the mesh setup will be
2133 * automatically torn down when the socket is closed.
2134 * If set during %NL80211_CMD_START_AP the AP will be automatically
2135 * disabled when the socket is closed.
70f3fe99 2136 *
034a7d2d
JB
2137 * @NL80211_ATTR_TDLS_INITIATOR: flag attribute indicating the current end is
2138 * the TDLS link initiator.
2139 *
2140 * @NL80211_ATTR_USE_RRM: flag for indicating whether the current connection
2141 * shall support Radio Resource Measurements (11k). This attribute can be
2142 * used with %NL80211_CMD_ASSOCIATE and %NL80211_CMD_CONNECT requests.
2143 * User space applications are expected to use this flag only if the
2144 * underlying device supports these minimal RRM features:
2145 * %NL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES,
2146 * %NL80211_FEATURE_QUIET,
f45d4583
JB
2147 * Or, if global RRM is supported, see:
2148 * %NL80211_EXT_FEATURE_RRM
034a7d2d
JB
2149 * If this flag is used, driver must add the Power Capabilities IE to the
2150 * association request. In addition, it must also set the RRM capability
2151 * flag in the association request's Capability Info field.
2152 *
2153 * @NL80211_ATTR_WIPHY_DYN_ACK: flag attribute used to enable ACK timeout
2154 * estimation algorithm (dynack). In order to activate dynack
2155 * %NL80211_FEATURE_ACKTO_ESTIMATION feature flag must be set by lower
2156 * drivers to indicate dynack capability. Dynack is automatically disabled
2157 * setting valid value for coverage class.
2158 *
2159 * @NL80211_ATTR_TSID: a TSID value (u8 attribute)
2160 * @NL80211_ATTR_USER_PRIO: user priority value (u8 attribute)
2161 * @NL80211_ATTR_ADMITTED_TIME: admitted time in units of 32 microseconds
2162 * (per second) (u16 attribute)
2163 *
2164 * @NL80211_ATTR_SMPS_MODE: SMPS mode to use (ap mode). see
2165 * &enum nl80211_smps_mode.
2166 *
f548a702
JB
2167 * @NL80211_ATTR_OPER_CLASS: operating class
2168 *
2169 * @NL80211_ATTR_MAC_MASK: MAC address mask
2170 *
2ca8bfa0
JB
2171 * @NL80211_ATTR_WIPHY_SELF_MANAGED_REG: flag attribute indicating this device
2172 * is self-managing its regulatory information and any regulatory domain
2173 * obtained from it is coming from the device's wiphy and not the global
2174 * cfg80211 regdomain.
2175 *
a67b2d9c
JB
2176 * @NL80211_ATTR_EXT_FEATURES: extended feature flags contained in a byte
2177 * array. The feature flags are identified by their bit index (see &enum
2178 * nl80211_ext_feature_index). The bit index is ordered starting at the
2179 * least-significant bit of the first byte in the array, ie. bit index 0
2180 * is located at bit 0 of byte 0. bit index 25 would be located at bit 1
2181 * of byte 3 (u8 array).
2182 *
2183 * @NL80211_ATTR_SURVEY_RADIO_STATS: Request overall radio statistics to be
2184 * returned along with other survey data. If set, @NL80211_CMD_GET_SURVEY
2185 * may return a survey entry without a channel indicating global radio
2186 * statistics (only some values are valid and make sense.)
2187 * For devices that don't return such an entry even then, the information
2188 * should be contained in the result as the sum of the respective counters
2189 * over all channels.
2190 *
a9e38041 2191 * @NL80211_ATTR_SCHED_SCAN_DELAY: delay before the first cycle of a
478438c0
JB
2192 * scheduled scan is started. Or the delay before a WoWLAN
2193 * net-detect scan is started, counting from the moment the
2194 * system is suspended. This value is a u32, in seconds.
a9e38041
JB
2195
2196 * @NL80211_ATTR_REG_INDOOR: flag attribute, if set indicates that the device
2197 * is operating in an indoor environment.
a67b2d9c 2198 *
478438c0
JB
2199 * @NL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS: maximum number of scan plans for
2200 * scheduled scan supported by the device (u32), a wiphy attribute.
2201 * @NL80211_ATTR_MAX_SCAN_PLAN_INTERVAL: maximum interval (in seconds) for
2202 * a scan plan (u32), a wiphy attribute.
2203 * @NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS: maximum number of iterations in
2204 * a scan plan (u32), a wiphy attribute.
2205 * @NL80211_ATTR_SCHED_SCAN_PLANS: a list of scan plans for scheduled scan.
2206 * Each scan plan defines the number of scan iterations and the interval
2207 * between scans. The last scan plan will always run infinitely,
2208 * thus it must not specify the number of iterations, only the interval
2209 * between scans. The scan plans are executed sequentially.
2210 * Each scan plan is a nested attribute of &enum nl80211_sched_scan_plan.
f45d4583
JB
2211 * @NL80211_ATTR_PBSS: flag attribute. If set it means operate
2212 * in a PBSS. Specified in %NL80211_CMD_CONNECT to request
2213 * connecting to a PCP, and in %NL80211_CMD_START_AP to start
2214 * a PCP instead of AP. Relevant for DMG networks only.
2215 * @NL80211_ATTR_BSS_SELECT: nested attribute for driver supporting the
2216 * BSS selection feature. When used with %NL80211_CMD_GET_WIPHY it contains
2217 * attributes according &enum nl80211_bss_select_attr to indicate what
2218 * BSS selection behaviours are supported. When used with %NL80211_CMD_CONNECT
2219 * it contains the behaviour-specific attribute containing the parameters for
2220 * BSS selection to be done by driver and/or firmware.
2221 *
2222 * @NL80211_ATTR_STA_SUPPORT_P2P_PS: whether P2P PS mechanism supported
2223 * or not. u8, one of the values of &enum nl80211_sta_p2p_ps_status
478438c0 2224 *
a574be4b
JB
2225 * @NL80211_ATTR_PAD: attribute used for padding for 64-bit alignment
2226 *
2227 * @NL80211_ATTR_IFTYPE_EXT_CAPA: Nested attribute of the following attributes:
2228 * %NL80211_ATTR_IFTYPE, %NL80211_ATTR_EXT_CAPA,
2229 * %NL80211_ATTR_EXT_CAPA_MASK, to specify the extended capabilities per
2230 * interface type.
2231 *
2232 * @NL80211_ATTR_MU_MIMO_GROUP_DATA: array of 24 bytes that defines a MU-MIMO
2233 * groupID for monitor mode.
2234 * The first 8 bytes are a mask that defines the membership in each
2235 * group (there are 64 groups, group 0 and 63 are reserved),
2236 * each bit represents a group and set to 1 for being a member in
2237 * that group and 0 for not being a member.
2238 * The remaining 16 bytes define the position in each group: 2 bits for
2239 * each group.
2240 * (smaller group numbers represented on most significant bits and bigger
2241 * group numbers on least significant bits.)
2242 * This attribute is used only if all interfaces are in monitor mode.
2243 * Set this attribute in order to monitor packets using the given MU-MIMO
2244 * groupID data.
2245 * to turn off that feature set all the bits of the groupID to zero.
2246 * @NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR: mac address for the sniffer to follow
2247 * when using MU-MIMO air sniffer.
2248 * to turn that feature off set an invalid mac address
2249 * (e.g. FF:FF:FF:FF:FF:FF)
2250 *
2251 * @NL80211_ATTR_SCAN_START_TIME_TSF: The time at which the scan was actually
2252 * started (u64). The time is the TSF of the BSS the interface that
2253 * requested the scan is connected to (if available, otherwise this
2254 * attribute must not be included).
2255 * @NL80211_ATTR_SCAN_START_TIME_TSF_BSSID: The BSS according to which
2256 * %NL80211_ATTR_SCAN_START_TIME_TSF is set.
2257 * @NL80211_ATTR_MEASUREMENT_DURATION: measurement duration in TUs (u16). If
2258 * %NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY is not set, this is the
2259 * maximum measurement duration allowed. This attribute is used with
2260 * measurement requests. It can also be used with %NL80211_CMD_TRIGGER_SCAN
2261 * if the scan is used for beacon report radio measurement.
2262 * @NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY: flag attribute that indicates
2263 * that the duration specified with %NL80211_ATTR_MEASUREMENT_DURATION is
2264 * mandatory. If this flag is not set, the duration is the maximum duration
2265 * and the actual measurement duration may be shorter.
2266 *
2267 * @NL80211_ATTR_MESH_PEER_AID: Association ID for the mesh peer (u16). This is
2268 * used to pull the stored data for mesh peer in power save state.
2269 *
2270 * @NL80211_ATTR_NAN_MASTER_PREF: the master preference to be used by
2271 * %NL80211_CMD_START_NAN and optionally with
2272 * %NL80211_CMD_CHANGE_NAN_CONFIG. Its type is u8 and it can't be 0.
2273 * Also, values 1 and 255 are reserved for certification purposes and
2274 * should not be used during a normal device operation.
8a9e0b30
JB
2275 * @NL80211_ATTR_BANDS: operating bands configuration. This is a u32
2276 * bitmask of BIT(NL80211_BAND_*) as described in %enum
2277 * nl80211_band. For instance, for NL80211_BAND_2GHZ, bit 0
2278 * would be set. This attribute is used with
2279 * %NL80211_CMD_START_NAN and %NL80211_CMD_CHANGE_NAN_CONFIG, and
2280 * it is optional. If no bands are set, it means don't-care and
2281 * the device will decide what to use.
a574be4b
JB
2282 * @NL80211_ATTR_NAN_FUNC: a function that can be added to NAN. See
2283 * &enum nl80211_nan_func_attributes for description of this nested
2284 * attribute.
2285 * @NL80211_ATTR_NAN_MATCH: used to report a match. This is a nested attribute.
2286 * See &enum nl80211_nan_match_attributes.
8a9e0b30
JB
2287 * @NL80211_ATTR_FILS_KEK: KEK for FILS (Re)Association Request/Response frame
2288 * protection.
2289 * @NL80211_ATTR_FILS_NONCES: Nonces (part of AAD) for FILS (Re)Association
2290 * Request/Response frame protection. This attribute contains the 16 octet
2291 * STA Nonce followed by 16 octets of AP Nonce.
2292 *
2293 * @NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED: Indicates whether or not multicast
2294 * packets should be send out as unicast to all stations (flag attribute).
2295 *
2296 * @NL80211_ATTR_BSSID: The BSSID of the AP. Note that %NL80211_ATTR_MAC is also
2297 * used in various commands/events for specifying the BSSID.
2298 *
2299 * @NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI: Relative RSSI threshold by which
2300 * other BSSs has to be better or slightly worse than the current
2301 * connected BSS so that they get reported to user space.
2302 * This will give an opportunity to userspace to consider connecting to
2303 * other matching BSSs which have better or slightly worse RSSI than
2304 * the current connected BSS by using an offloaded operation to avoid
2305 * unnecessary wakeups.
2306 *
2307 * @NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST: When present the RSSI level for BSSs in
2308 * the specified band is to be adjusted before doing
806bb9ac 2309 * %NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI based comparison to figure out
8a9e0b30
JB
2310 * better BSSs. The attribute value is a packed structure
2311 * value as specified by &struct nl80211_bss_select_rssi_adjust.
2312 *
2313 * @NL80211_ATTR_TIMEOUT_REASON: The reason for which an operation timed out.
2314 * u32 attribute with an &enum nl80211_timeout_reason value. This is used,
2315 * e.g., with %NL80211_CMD_CONNECT event.
a574be4b 2316 *
7e0a7c40
JB
2317 * @NL80211_ATTR_FILS_ERP_USERNAME: EAP Re-authentication Protocol (ERP)
2318 * username part of NAI used to refer keys rRK and rIK. This is used with
2319 * %NL80211_CMD_CONNECT.
2320 *
2321 * @NL80211_ATTR_FILS_ERP_REALM: EAP Re-authentication Protocol (ERP) realm part
2322 * of NAI specifying the domain name of the ER server. This is used with
2323 * %NL80211_CMD_CONNECT.
2324 *
2325 * @NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM: Unsigned 16-bit ERP next sequence number
2326 * to use in ERP messages. This is used in generating the FILS wrapped data
2327 * for FILS authentication and is used with %NL80211_CMD_CONNECT.
2328 *
2329 * @NL80211_ATTR_FILS_ERP_RRK: ERP re-authentication Root Key (rRK) for the
2330 * NAI specified by %NL80211_ATTR_FILS_ERP_USERNAME and
2331 * %NL80211_ATTR_FILS_ERP_REALM. This is used for generating rIK and rMSK
2332 * from successful FILS authentication and is used with
2333 * %NL80211_CMD_CONNECT.
2334 *
2335 * @NL80211_ATTR_FILS_CACHE_ID: A 2-octet identifier advertized by a FILS AP
2336 * identifying the scope of PMKSAs. This is used with
2337 * @NL80211_CMD_SET_PMKSA and @NL80211_CMD_DEL_PMKSA.
2338 *
2339 * @NL80211_ATTR_PMK: attribute for passing PMK key material. Used with
2340 * %NL80211_CMD_SET_PMKSA for the PMKSA identified by %NL80211_ATTR_PMKID.
2341 * For %NL80211_CMD_CONNECT it is used to provide PSK for offloading 4-way
2342 * handshake for WPA/WPA2-PSK networks. For 802.1X authentication it is
2343 * used with %NL80211_CMD_SET_PMK. For offloaded FT support this attribute
2344 * specifies the PMK-R0 if NL80211_ATTR_PMKR0_NAME is included as well.
2345 *
2346 * @NL80211_ATTR_SCHED_SCAN_MULTI: flag attribute which user-space shall use to
2347 * indicate that it supports multiple active scheduled scan requests.
2348 * @NL80211_ATTR_SCHED_SCAN_MAX_REQS: indicates maximum number of scheduled
2349 * scan request that may be active for the device (u32).
2350 *
2351 * @NL80211_ATTR_WANT_1X_4WAY_HS: flag attribute which user-space can include
2352 * in %NL80211_CMD_CONNECT to indicate that for 802.1X authentication it
2353 * wants to use the supported offload of the 4-way handshake.
2354 * @NL80211_ATTR_PMKR0_NAME: PMK-R0 Name for offloaded FT.
2355 * @NL80211_ATTR_PORT_AUTHORIZED: (reserved)
2356 *
e06485e8
JB
2357 * @NL80211_ATTR_EXTERNAL_AUTH_ACTION: Identify the requested external
2358 * authentication operation (u32 attribute with an
2359 * &enum nl80211_external_auth_action value). This is used with the
75b78ff8 2360 * %NL80211_CMD_EXTERNAL_AUTH request event.
e06485e8 2361 * @NL80211_ATTR_EXTERNAL_AUTH_SUPPORT: Flag attribute indicating that the user
691c5853
JB
2362 * space supports external authentication. This attribute shall be used
2363 * with %NL80211_CMD_CONNECT and %NL80211_CMD_START_AP request. The driver
2364 * may offload authentication processing to user space if this capability
2365 * is indicated in the respective requests from the user space.
e06485e8
JB
2366 *
2367 * @NL80211_ATTR_NSS: Station's New/updated RX_NSS value notified using this
2368 * u8 attribute. This is used with %NL80211_CMD_STA_OPMODE_CHANGED.
2369 *
71101080
JB
2370 * @NL80211_ATTR_TXQ_STATS: TXQ statistics (nested attribute, see &enum
2371 * nl80211_txq_stats)
2372 * @NL80211_ATTR_TXQ_LIMIT: Total packet limit for the TXQ queues for this phy.
2373 * The smaller of this and the memory limit is enforced.
2374 * @NL80211_ATTR_TXQ_MEMORY_LIMIT: Total memory memory limit (in bytes) for the
2375 * TXQ queues for this phy. The smaller of this and the packet limit is
2376 * enforced.
2377 * @NL80211_ATTR_TXQ_QUANTUM: TXQ scheduler quantum (bytes). Number of bytes
2378 * a flow is assigned on each round of the DRR scheduler.
75b78ff8
JB
2379 * @NL80211_ATTR_HE_CAPABILITY: HE Capability information element (from
2380 * association request when used with NL80211_CMD_NEW_STATION). Can be set
2381 * only if %NL80211_STA_FLAG_WME is set.
71101080 2382 *
806bb9ac
JB
2383 * @NL80211_ATTR_FTM_RESPONDER: nested attribute which user-space can include
2384 * in %NL80211_CMD_START_AP or %NL80211_CMD_SET_BEACON for fine timing
2385 * measurement (FTM) responder functionality and containing parameters as
2386 * possible, see &enum nl80211_ftm_responder_attr
2387 *
2388 * @NL80211_ATTR_FTM_RESPONDER_STATS: Nested attribute with FTM responder
2389 * statistics, see &enum nl80211_ftm_responder_stats.
2390 *
2391 * @NL80211_ATTR_TIMEOUT: Timeout for the given operation in milliseconds (u32),
2392 * if the attribute is not given no timeout is requested. Note that 0 is an
2393 * invalid value.
2394 *
2395 * @NL80211_ATTR_PEER_MEASUREMENTS: peer measurements request (and result)
2396 * data, uses nested attributes specified in
2397 * &enum nl80211_peer_measurement_attrs.
2398 * This is also used for capability advertisement in the wiphy information,
2399 * with the appropriate sub-attributes.
2400 *
691c5853
JB
2401 * @NL80211_ATTR_AIRTIME_WEIGHT: Station's weight when scheduled by the airtime
2402 * scheduler.
2403 *
2c8026de
JB
2404 * @NL80211_ATTR_STA_TX_POWER_SETTING: Transmit power setting type (u8) for
2405 * station associated with the AP. See &enum nl80211_tx_power_setting for
2406 * possible values.
2407 * @NL80211_ATTR_STA_TX_POWER: Transmit power level (s16) in dBm units. This
2408 * allows to set Tx power for a station. If this attribute is not included,
2409 * the default per-interface tx power setting will be overriding. Driver
2410 * should be picking up the lowest tx power, either tx power per-interface
2411 * or per-station.
2412 *
a0c07e4f
JB
2413 * @NL80211_ATTR_SAE_PASSWORD: attribute for passing SAE password material. It
2414 * is used with %NL80211_CMD_CONNECT to provide password for offloading
2415 * SAE authentication for WPA3-Personal networks.
2416 *
2417 * @NL80211_ATTR_TWT_RESPONDER: Enable target wait time responder support.
2418 *
2419 * @NL80211_ATTR_HE_OBSS_PD: nested attribute for OBSS Packet Detection
2420 * functionality.
2421 *
0c1a26b5
JB
2422 * @NL80211_ATTR_WIPHY_EDMG_CHANNELS: bitmap that indicates the 2.16 GHz
2423 * channel(s) that are allowed to be used for EDMG transmissions.
2424 * Defined by IEEE P802.11ay/D4.0 section 9.4.2.251. (u8 attribute)
2425 * @NL80211_ATTR_WIPHY_EDMG_BW_CONFIG: Channel BW Configuration subfield encodes
2426 * the allowed channel bandwidth configurations. (u8 attribute)
2427 * Defined by IEEE P802.11ay/D4.0 section 9.4.2.251, Table 13.
2428 *
e9b59588
JB
2429 * @NL80211_ATTR_VLAN_ID: VLAN ID (1..4094) for the station and VLAN group key
2430 * (u16).
2431 *
ba300c33
JB
2432 * @NL80211_ATTR_HE_BSS_COLOR: nested attribute for BSS Color Settings.
2433 *
2434 * @NL80211_ATTR_IFTYPE_AKM_SUITES: nested array attribute, with each entry
2435 * using attributes from &enum nl80211_iftype_akm_attributes. This
2436 * attribute is sent in a response to %NL80211_CMD_GET_WIPHY indicating
2437 * supported AKM suites capability per interface. AKMs advertised in
2438 * %NL80211_ATTR_AKM_SUITES are default capabilities if AKM suites not
2439 * advertised for a specific interface type.
2440 *
cb07eab1
JB
2441 * @NL80211_ATTR_TID_CONFIG: TID specific configuration in a
2442 * nested attribute with &enum nl80211_tid_config_attr sub-attributes;
2443 * on output (in wiphy attributes) it contains only the feature sub-
2444 * attributes.
2445 *
2446 * @NL80211_ATTR_CONTROL_PORT_NO_PREAUTH: disable preauth frame rx on control
2447 * port in order to forward/receive them as ordinary data frames.
2448 *
2449 * @NL80211_ATTR_PMK_LIFETIME: Maximum lifetime for PMKSA in seconds (u32,
2450 * dot11RSNAConfigPMKReauthThreshold; 0 is not a valid value).
2451 * An optional parameter configured through %NL80211_CMD_SET_PMKSA.
2452 * Drivers that trigger roaming need to know the lifetime of the
2453 * configured PMKSA for triggering the full vs. PMKSA caching based
2454 * authentication. This timeout helps authentication methods like SAE,
2455 * where PMK gets updated only by going through a full (new SAE)
2456 * authentication instead of getting updated during an association for EAP
2457 * authentication. No new full authentication within the PMK expiry shall
2458 * result in a disassociation at the end of the lifetime.
2459 *
2460 * @NL80211_ATTR_PMK_REAUTH_THRESHOLD: Reauthentication threshold time, in
2461 * terms of percentage of %NL80211_ATTR_PMK_LIFETIME
2462 * (u8, dot11RSNAConfigPMKReauthThreshold, 1..100). This is an optional
2463 * parameter configured through %NL80211_CMD_SET_PMKSA. Requests the
2464 * driver to trigger a full authentication roam (without PMKSA caching)
2465 * after the reauthentication threshold time, but before the PMK lifetime
2466 * has expired.
2467 *
2468 * Authentication methods like SAE need to be able to generate a new PMKSA
2469 * entry without having to force a disconnection after the PMK timeout. If
2470 * no roaming occurs between the reauth threshold and PMK expiration,
2471 * disassociation is still forced.
2472 *
f548a702 2473 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
f408e01b
JB
2474 * @NL80211_ATTR_MAX: highest attribute number currently defined
2475 * @__NL80211_ATTR_AFTER_LAST: internal use
2476 */
2477enum nl80211_attrs {
9b13eeba 2478/* don't change the order or add anything between, this is ABI! */
f408e01b
JB
2479 NL80211_ATTR_UNSPEC,
2480
2481 NL80211_ATTR_WIPHY,
2482 NL80211_ATTR_WIPHY_NAME,
2483
2484 NL80211_ATTR_IFINDEX,
2485 NL80211_ATTR_IFNAME,
2486 NL80211_ATTR_IFTYPE,
2487
2488 NL80211_ATTR_MAC,
2489
2490 NL80211_ATTR_KEY_DATA,
2491 NL80211_ATTR_KEY_IDX,
2492 NL80211_ATTR_KEY_CIPHER,
2493 NL80211_ATTR_KEY_SEQ,
2494 NL80211_ATTR_KEY_DEFAULT,
2495
2496 NL80211_ATTR_BEACON_INTERVAL,
2497 NL80211_ATTR_DTIM_PERIOD,
2498 NL80211_ATTR_BEACON_HEAD,
2499 NL80211_ATTR_BEACON_TAIL,
2500
2501 NL80211_ATTR_STA_AID,
2502 NL80211_ATTR_STA_FLAGS,
2503 NL80211_ATTR_STA_LISTEN_INTERVAL,
2504 NL80211_ATTR_STA_SUPPORTED_RATES,
2505 NL80211_ATTR_STA_VLAN,
2506 NL80211_ATTR_STA_INFO,
2507
2508 NL80211_ATTR_WIPHY_BANDS,
2509
2510 NL80211_ATTR_MNTR_FLAGS,
2511
2512 NL80211_ATTR_MESH_ID,
2513 NL80211_ATTR_STA_PLINK_ACTION,
2514 NL80211_ATTR_MPATH_NEXT_HOP,
2515 NL80211_ATTR_MPATH_INFO,
2516
2517 NL80211_ATTR_BSS_CTS_PROT,
2518 NL80211_ATTR_BSS_SHORT_PREAMBLE,
2519 NL80211_ATTR_BSS_SHORT_SLOT_TIME,
2520
2521 NL80211_ATTR_HT_CAPABILITY,
2522
2523 NL80211_ATTR_SUPPORTED_IFTYPES,
2524
2525 NL80211_ATTR_REG_ALPHA2,
2526 NL80211_ATTR_REG_RULES,
2527
15d71c1e 2528 NL80211_ATTR_MESH_CONFIG,
3dd781cc 2529
767eb647
JB
2530 NL80211_ATTR_BSS_BASIC_RATES,
2531
2532 NL80211_ATTR_WIPHY_TXQ_PARAMS,
2533 NL80211_ATTR_WIPHY_FREQ,
68632dc7 2534 NL80211_ATTR_WIPHY_CHANNEL_TYPE,
767eb647 2535
4e6d3cb8
JB
2536 NL80211_ATTR_KEY_DEFAULT_MGMT,
2537
2538 NL80211_ATTR_MGMT_SUBTYPE,
2539 NL80211_ATTR_IE,
2540
3dd781cc
JB
2541 NL80211_ATTR_MAX_NUM_SCAN_SSIDS,
2542
2543 NL80211_ATTR_SCAN_FREQUENCIES,
2544 NL80211_ATTR_SCAN_SSIDS,
748bdd1c 2545 NL80211_ATTR_GENERATION, /* replaces old SCAN_GENERATION */
3dd781cc
JB
2546 NL80211_ATTR_BSS,
2547
f527ad78
JB
2548 NL80211_ATTR_REG_INITIATOR,
2549 NL80211_ATTR_REG_TYPE,
2550
28566668
JB
2551 NL80211_ATTR_SUPPORTED_COMMANDS,
2552
2553 NL80211_ATTR_FRAME,
2554 NL80211_ATTR_SSID,
2555 NL80211_ATTR_AUTH_TYPE,
2556 NL80211_ATTR_REASON_CODE,
2557
2558 NL80211_ATTR_KEY_TYPE,
2559
2560 NL80211_ATTR_MAX_SCAN_IE_LEN,
2561 NL80211_ATTR_CIPHER_SUITES,
2562
2563 NL80211_ATTR_FREQ_BEFORE,
2564 NL80211_ATTR_FREQ_AFTER,
80e02110
JB
2565
2566 NL80211_ATTR_FREQ_FIXED,
2567
2568
2569 NL80211_ATTR_WIPHY_RETRY_SHORT,
2570 NL80211_ATTR_WIPHY_RETRY_LONG,
2571 NL80211_ATTR_WIPHY_FRAG_THRESHOLD,
2572 NL80211_ATTR_WIPHY_RTS_THRESHOLD,
2573
52868516
JB
2574 NL80211_ATTR_TIMED_OUT,
2575
2576 NL80211_ATTR_USE_MFP,
2577
d8004bdd
JB
2578 NL80211_ATTR_STA_FLAGS2,
2579
2580 NL80211_ATTR_CONTROL_PORT,
a13f19e4
JB
2581
2582 NL80211_ATTR_TESTDATA,
2583
1782c8a0 2584 NL80211_ATTR_PRIVACY,
d8004bdd 2585
99dde7aa
JB
2586 NL80211_ATTR_DISCONNECTED_BY_AP,
2587 NL80211_ATTR_STATUS_CODE,
2588
a13f19e4
JB
2589 NL80211_ATTR_CIPHER_SUITES_PAIRWISE,
2590 NL80211_ATTR_CIPHER_SUITE_GROUP,
2591 NL80211_ATTR_WPA_VERSIONS,
2592 NL80211_ATTR_AKM_SUITES,
2593
2594 NL80211_ATTR_REQ_IE,
2595 NL80211_ATTR_RESP_IE,
2596
b739493e
JB
2597 NL80211_ATTR_PREV_BSSID,
2598
b739493e
JB
2599 NL80211_ATTR_KEY,
2600 NL80211_ATTR_KEYS,
2601
748bdd1c
JB
2602 NL80211_ATTR_PID,
2603
39566cca
FF
2604 NL80211_ATTR_4ADDR,
2605
dd2605a0
JB
2606 NL80211_ATTR_SURVEY_INFO,
2607
d4350a3e
JB
2608 NL80211_ATTR_PMKID,
2609 NL80211_ATTR_MAX_NUM_PMKIDS,
2610
2611 NL80211_ATTR_DURATION,
2612
2613 NL80211_ATTR_COOKIE,
2614
2615 NL80211_ATTR_WIPHY_COVERAGE_CLASS,
2616
2617 NL80211_ATTR_TX_RATES,
2618
83037d1b
JB
2619 NL80211_ATTR_FRAME_MATCH,
2620
2621 NL80211_ATTR_ACK,
2622
03977c41
JB
2623 NL80211_ATTR_PS_STATE,
2624
7c9e7c7b
JB
2625 NL80211_ATTR_CQM,
2626
e1dbf1b8
JB
2627 NL80211_ATTR_LOCAL_STATE_CHANGE,
2628
2629 NL80211_ATTR_AP_ISOLATE,
2630
80ed81f7
JB
2631 NL80211_ATTR_WIPHY_TX_POWER_SETTING,
2632 NL80211_ATTR_WIPHY_TX_POWER_LEVEL,
2633
0c560ade
JB
2634 NL80211_ATTR_TX_FRAME_TYPES,
2635 NL80211_ATTR_RX_FRAME_TYPES,
2636 NL80211_ATTR_FRAME_TYPE,
2637
d07ec36a
JB
2638 NL80211_ATTR_CONTROL_PORT_ETHERTYPE,
2639 NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT,
2640
1cbe4a02
JB
2641 NL80211_ATTR_SUPPORT_IBSS_RSN,
2642
fb660ce4
JB
2643 NL80211_ATTR_WIPHY_ANTENNA_TX,
2644 NL80211_ATTR_WIPHY_ANTENNA_RX,
2645
2646 NL80211_ATTR_MCAST_RATE,
2647
2648 NL80211_ATTR_OFFCHANNEL_TX_OK,
2649
2650 NL80211_ATTR_BSS_HT_OPMODE,
2651
15d71c1e
JB
2652 NL80211_ATTR_KEY_DEFAULT_TYPES,
2653
2654 NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION,
2655
2656 NL80211_ATTR_MESH_SETUP,
2657
2658 NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX,
2659 NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX,
2660
9b13eeba 2661 NL80211_ATTR_SUPPORT_MESH_AUTH,
a3edacac 2662 NL80211_ATTR_STA_PLINK_STATE,
9b13eeba 2663
2d6b9d76
JB
2664 NL80211_ATTR_WOWLAN_TRIGGERS,
2665 NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED,
2666
a3edacac
JB
2667 NL80211_ATTR_SCHED_SCAN_INTERVAL,
2668
2669 NL80211_ATTR_INTERFACE_COMBINATIONS,
2670 NL80211_ATTR_SOFTWARE_IFTYPES,
2671
b47f6b48
JB
2672 NL80211_ATTR_REKEY_DATA,
2673
2674 NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS,
2675 NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN,
2676
bea987cd
JB
2677 NL80211_ATTR_SCAN_SUPP_RATES,
2678
2679 NL80211_ATTR_HIDDEN_SSID,
2680
2681 NL80211_ATTR_IE_PROBE_RESP,
2682 NL80211_ATTR_IE_ASSOC_RESP,
2683
2684 NL80211_ATTR_STA_WME,
fa1bdd00
JB
2685 NL80211_ATTR_SUPPORT_AP_UAPSD,
2686
2687 NL80211_ATTR_ROAM_SUPPORT,
2688
2689 NL80211_ATTR_SCHED_SCAN_MATCH,
2690 NL80211_ATTR_MAX_MATCH_SETS,
2691
2692 NL80211_ATTR_PMKSA_CANDIDATE,
2693
2694 NL80211_ATTR_TX_NO_CCK_RATE,
bea987cd 2695
03820325
JB
2696 NL80211_ATTR_TDLS_ACTION,
2697 NL80211_ATTR_TDLS_DIALOG_TOKEN,
2698 NL80211_ATTR_TDLS_OPERATION,
2699 NL80211_ATTR_TDLS_SUPPORT,
2700 NL80211_ATTR_TDLS_EXTERNAL_SETUP,
2701
d0da8195
JB
2702 NL80211_ATTR_DEVICE_AP_SME,
2703
2704 NL80211_ATTR_DONT_WAIT_FOR_ACK,
2705
2706 NL80211_ATTR_FEATURE_FLAGS,
2707
2708 NL80211_ATTR_PROBE_RESP_OFFLOAD,
2709
2710 NL80211_ATTR_PROBE_RESP,
2711
2712 NL80211_ATTR_DFS_REGION,
2713
2714 NL80211_ATTR_DISABLE_HT,
2715 NL80211_ATTR_HT_CAPABILITY_MASK,
2716
564eb405
JB
2717 NL80211_ATTR_NOACK_MAP,
2718
b78ae2b1
JB
2719 NL80211_ATTR_INACTIVITY_TIMEOUT,
2720
2721 NL80211_ATTR_RX_SIGNAL_DBM,
2722
2723 NL80211_ATTR_BG_SCAN_PERIOD,
2724
f1715630
JB
2725 NL80211_ATTR_WDEV,
2726
2727 NL80211_ATTR_USER_REG_HINT_TYPE,
2728
bec9a8e0
JB
2729 NL80211_ATTR_CONN_FAILED_REASON,
2730
8a9e0b30 2731 NL80211_ATTR_AUTH_DATA,
a614d505
JB
2732
2733 NL80211_ATTR_VHT_CAPABILITY,
2734
2735 NL80211_ATTR_SCAN_FLAGS,
2736
068ff94a
JB
2737 NL80211_ATTR_CHANNEL_WIDTH,
2738 NL80211_ATTR_CENTER_FREQ1,
2739 NL80211_ATTR_CENTER_FREQ2,
2740
1632b8e1
JB
2741 NL80211_ATTR_P2P_CTWINDOW,
2742 NL80211_ATTR_P2P_OPPPS,
2743
6ccd4979
JB
2744 NL80211_ATTR_LOCAL_MESH_POWER_MODE,
2745
d7bfeaa0
JB
2746 NL80211_ATTR_ACL_POLICY,
2747
2748 NL80211_ATTR_MAC_ADDRS,
2749
2750 NL80211_ATTR_MAC_ACL_MAX,
2751
2752 NL80211_ATTR_RADAR_EVENT,
2753
2754 NL80211_ATTR_EXT_CAPA,
2755 NL80211_ATTR_EXT_CAPA_MASK,
2756
2757 NL80211_ATTR_STA_CAPABILITY,
2758 NL80211_ATTR_STA_EXT_CAPABILITY,
2759
ac38f8ad
JB
2760 NL80211_ATTR_PROTOCOL_FEATURES,
2761 NL80211_ATTR_SPLIT_WIPHY_DUMP,
2762
2763 NL80211_ATTR_DISABLE_VHT,
2764 NL80211_ATTR_VHT_CAPABILITY_MASK,
2765
2766 NL80211_ATTR_MDID,
2767 NL80211_ATTR_IE_RIC,
2768
ae586a4e
JB
2769 NL80211_ATTR_CRIT_PROT_ID,
2770 NL80211_ATTR_MAX_CRIT_PROT_DURATION,
2771
0fd08e2e
JB
2772 NL80211_ATTR_PEER_AID,
2773
2774 NL80211_ATTR_COALESCE_RULE,
2775
320cfae1
JB
2776 NL80211_ATTR_CH_SWITCH_COUNT,
2777 NL80211_ATTR_CH_SWITCH_BLOCK_TX,
2778 NL80211_ATTR_CSA_IES,
2779 NL80211_ATTR_CSA_C_OFF_BEACON,
2780 NL80211_ATTR_CSA_C_OFF_PRESP,
2781
2782 NL80211_ATTR_RXMGMT_FLAGS,
2783
2784 NL80211_ATTR_STA_SUPPORTED_CHANNELS,
2785
2786 NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES,
2787
2788 NL80211_ATTR_HANDLE_DFS,
2789
63f94301
JB
2790 NL80211_ATTR_SUPPORT_5_MHZ,
2791 NL80211_ATTR_SUPPORT_10_MHZ,
2792
2793 NL80211_ATTR_OPMODE_NOTIF,
2794
2795 NL80211_ATTR_VENDOR_ID,
2796 NL80211_ATTR_VENDOR_SUBCMD,
2797 NL80211_ATTR_VENDOR_DATA,
2798 NL80211_ATTR_VENDOR_EVENTS,
2799
2800 NL80211_ATTR_QOS_MAP,
320cfae1 2801
da441d4f
JB
2802 NL80211_ATTR_MAC_HINT,
2803 NL80211_ATTR_WIPHY_FREQ_HINT,
2804
2805 NL80211_ATTR_MAX_AP_ASSOC_STA,
2806
0c28d3d5
JB
2807 NL80211_ATTR_TDLS_PEER_CAPABILITY,
2808
f548a702 2809 NL80211_ATTR_SOCKET_OWNER,
70f3fe99
JB
2810
2811 NL80211_ATTR_CSA_C_OFFSETS_TX,
2812 NL80211_ATTR_MAX_CSA_COUNTERS,
2813
034a7d2d
JB
2814 NL80211_ATTR_TDLS_INITIATOR,
2815
2816 NL80211_ATTR_USE_RRM,
2817
2818 NL80211_ATTR_WIPHY_DYN_ACK,
2819
2820 NL80211_ATTR_TSID,
2821 NL80211_ATTR_USER_PRIO,
2822 NL80211_ATTR_ADMITTED_TIME,
2823
2824 NL80211_ATTR_SMPS_MODE,
2825
f548a702
JB
2826 NL80211_ATTR_OPER_CLASS,
2827
2828 NL80211_ATTR_MAC_MASK,
2829
2ca8bfa0
JB
2830 NL80211_ATTR_WIPHY_SELF_MANAGED_REG,
2831
a67b2d9c
JB
2832 NL80211_ATTR_EXT_FEATURES,
2833
2834 NL80211_ATTR_SURVEY_RADIO_STATS,
2835
2836 NL80211_ATTR_NETNS_FD,
2837
2838 NL80211_ATTR_SCHED_SCAN_DELAY,
2839
a9e38041
JB
2840 NL80211_ATTR_REG_INDOOR,
2841
478438c0
JB
2842 NL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS,
2843 NL80211_ATTR_MAX_SCAN_PLAN_INTERVAL,
2844 NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS,
2845 NL80211_ATTR_SCHED_SCAN_PLANS,
2846
f45d4583
JB
2847 NL80211_ATTR_PBSS,
2848
2849 NL80211_ATTR_BSS_SELECT,
2850
2851 NL80211_ATTR_STA_SUPPORT_P2P_PS,
2852
a574be4b
JB
2853 NL80211_ATTR_PAD,
2854
2855 NL80211_ATTR_IFTYPE_EXT_CAPA,
2856
2857 NL80211_ATTR_MU_MIMO_GROUP_DATA,
2858 NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR,
2859
2860 NL80211_ATTR_SCAN_START_TIME_TSF,
2861 NL80211_ATTR_SCAN_START_TIME_TSF_BSSID,
2862 NL80211_ATTR_MEASUREMENT_DURATION,
2863 NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY,
2864
2865 NL80211_ATTR_MESH_PEER_AID,
2866
2867 NL80211_ATTR_NAN_MASTER_PREF,
8a9e0b30 2868 NL80211_ATTR_BANDS,
a574be4b
JB
2869 NL80211_ATTR_NAN_FUNC,
2870 NL80211_ATTR_NAN_MATCH,
2871
8a9e0b30
JB
2872 NL80211_ATTR_FILS_KEK,
2873 NL80211_ATTR_FILS_NONCES,
2874
2875 NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED,
2876
2877 NL80211_ATTR_BSSID,
2878
2879 NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI,
2880 NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST,
2881
2882 NL80211_ATTR_TIMEOUT_REASON,
2883
7e0a7c40
JB
2884 NL80211_ATTR_FILS_ERP_USERNAME,
2885 NL80211_ATTR_FILS_ERP_REALM,
2886 NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM,
2887 NL80211_ATTR_FILS_ERP_RRK,
2888 NL80211_ATTR_FILS_CACHE_ID,
2889
2890 NL80211_ATTR_PMK,
2891
2892 NL80211_ATTR_SCHED_SCAN_MULTI,
2893 NL80211_ATTR_SCHED_SCAN_MAX_REQS,
2894
2895 NL80211_ATTR_WANT_1X_4WAY_HS,
2896 NL80211_ATTR_PMKR0_NAME,
2897 NL80211_ATTR_PORT_AUTHORIZED,
2898
e06485e8
JB
2899 NL80211_ATTR_EXTERNAL_AUTH_ACTION,
2900 NL80211_ATTR_EXTERNAL_AUTH_SUPPORT,
2901
2902 NL80211_ATTR_NSS,
2903 NL80211_ATTR_ACK_SIGNAL,
2904
2905 NL80211_ATTR_CONTROL_PORT_OVER_NL80211,
2906
71101080
JB
2907 NL80211_ATTR_TXQ_STATS,
2908 NL80211_ATTR_TXQ_LIMIT,
2909 NL80211_ATTR_TXQ_MEMORY_LIMIT,
2910 NL80211_ATTR_TXQ_QUANTUM,
2911
75b78ff8
JB
2912 NL80211_ATTR_HE_CAPABILITY,
2913
806bb9ac
JB
2914 NL80211_ATTR_FTM_RESPONDER,
2915
2916 NL80211_ATTR_FTM_RESPONDER_STATS,
2917
2918 NL80211_ATTR_TIMEOUT,
2919
2920 NL80211_ATTR_PEER_MEASUREMENTS,
2921
691c5853 2922 NL80211_ATTR_AIRTIME_WEIGHT,
2c8026de
JB
2923 NL80211_ATTR_STA_TX_POWER_SETTING,
2924 NL80211_ATTR_STA_TX_POWER,
691c5853 2925
a0c07e4f
JB
2926 NL80211_ATTR_SAE_PASSWORD,
2927
2928 NL80211_ATTR_TWT_RESPONDER,
2929
2930 NL80211_ATTR_HE_OBSS_PD,
2931
0c1a26b5
JB
2932 NL80211_ATTR_WIPHY_EDMG_CHANNELS,
2933 NL80211_ATTR_WIPHY_EDMG_BW_CONFIG,
2934
e9b59588
JB
2935 NL80211_ATTR_VLAN_ID,
2936
ba300c33
JB
2937 NL80211_ATTR_HE_BSS_COLOR,
2938
2939 NL80211_ATTR_IFTYPE_AKM_SUITES,
2940
cb07eab1
JB
2941 NL80211_ATTR_TID_CONFIG,
2942
2943 NL80211_ATTR_CONTROL_PORT_NO_PREAUTH,
2944
2945 NL80211_ATTR_PMK_LIFETIME,
2946 NL80211_ATTR_PMK_REAUTH_THRESHOLD,
2947
f408e01b
JB
2948 /* add attributes here, update the policy in nl80211.c */
2949
2950 __NL80211_ATTR_AFTER_LAST,
f548a702 2951 NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
f408e01b
JB
2952 NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
2953};
2954
748bdd1c
JB
2955/* source-level API compatibility */
2956#define NL80211_ATTR_SCAN_GENERATION NL80211_ATTR_GENERATION
15d71c1e 2957#define NL80211_ATTR_MESH_PARAMS NL80211_ATTR_MESH_CONFIG
f548a702 2958#define NL80211_ATTR_IFACE_SOCKET_OWNER NL80211_ATTR_SOCKET_OWNER
8a9e0b30 2959#define NL80211_ATTR_SAE_DATA NL80211_ATTR_AUTH_DATA
748bdd1c 2960
f408e01b
JB
2961/*
2962 * Allow user space programs to use #ifdef on new attributes by defining them
2963 * here
2964 */
a13f19e4 2965#define NL80211_CMD_CONNECT NL80211_CMD_CONNECT
f408e01b 2966#define NL80211_ATTR_HT_CAPABILITY NL80211_ATTR_HT_CAPABILITY
767eb647
JB
2967#define NL80211_ATTR_BSS_BASIC_RATES NL80211_ATTR_BSS_BASIC_RATES
2968#define NL80211_ATTR_WIPHY_TXQ_PARAMS NL80211_ATTR_WIPHY_TXQ_PARAMS
2969#define NL80211_ATTR_WIPHY_FREQ NL80211_ATTR_WIPHY_FREQ
4e6d3cb8
JB
2970#define NL80211_ATTR_WIPHY_CHANNEL_TYPE NL80211_ATTR_WIPHY_CHANNEL_TYPE
2971#define NL80211_ATTR_MGMT_SUBTYPE NL80211_ATTR_MGMT_SUBTYPE
2972#define NL80211_ATTR_IE NL80211_ATTR_IE
f527ad78
JB
2973#define NL80211_ATTR_REG_INITIATOR NL80211_ATTR_REG_INITIATOR
2974#define NL80211_ATTR_REG_TYPE NL80211_ATTR_REG_TYPE
28566668
JB
2975#define NL80211_ATTR_FRAME NL80211_ATTR_FRAME
2976#define NL80211_ATTR_SSID NL80211_ATTR_SSID
2977#define NL80211_ATTR_AUTH_TYPE NL80211_ATTR_AUTH_TYPE
2978#define NL80211_ATTR_REASON_CODE NL80211_ATTR_REASON_CODE
a13f19e4
JB
2979#define NL80211_ATTR_CIPHER_SUITES_PAIRWISE NL80211_ATTR_CIPHER_SUITES_PAIRWISE
2980#define NL80211_ATTR_CIPHER_SUITE_GROUP NL80211_ATTR_CIPHER_SUITE_GROUP
2981#define NL80211_ATTR_WPA_VERSIONS NL80211_ATTR_WPA_VERSIONS
2982#define NL80211_ATTR_AKM_SUITES NL80211_ATTR_AKM_SUITES
5e0bc321
JB
2983#define NL80211_ATTR_KEY NL80211_ATTR_KEY
2984#define NL80211_ATTR_KEYS NL80211_ATTR_KEYS
d0da8195 2985#define NL80211_ATTR_FEATURE_FLAGS NL80211_ATTR_FEATURE_FLAGS
f408e01b 2986
75b78ff8
JB
2987#define NL80211_WIPHY_NAME_MAXLEN 64
2988
f408e01b 2989#define NL80211_MAX_SUPP_RATES 32
d456ac60 2990#define NL80211_MAX_SUPP_HT_RATES 77
2c8026de 2991#define NL80211_MAX_SUPP_REG_RULES 128
f408e01b
JB
2992#define NL80211_TKIP_DATA_OFFSET_ENCR_KEY 0
2993#define NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY 16
2994#define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24
2995#define NL80211_HT_CAPABILITY_LEN 26
a614d505 2996#define NL80211_VHT_CAPABILITY_LEN 12
75b78ff8 2997#define NL80211_HE_MIN_CAPABILITY_LEN 16
a0c07e4f 2998#define NL80211_HE_MAX_CAPABILITY_LEN 54
a13f19e4
JB
2999#define NL80211_MAX_NR_CIPHER_SUITES 5
3000#define NL80211_MAX_NR_AKM_SUITES 2
3001
869982f5
JB
3002#define NL80211_MIN_REMAIN_ON_CHANNEL_TIME 10
3003
3004/* default RSSI threshold for scan results if none specified. */
3005#define NL80211_SCAN_RSSI_THOLD_OFF -300
3006
f1715630
JB
3007#define NL80211_CQM_TXE_MAX_INTVL 1800
3008
f408e01b
JB
3009/**
3010 * enum nl80211_iftype - (virtual) interface types
3011 *
3012 * @NL80211_IFTYPE_UNSPECIFIED: unspecified type, driver decides
3013 * @NL80211_IFTYPE_ADHOC: independent BSS member
3014 * @NL80211_IFTYPE_STATION: managed BSS member
3015 * @NL80211_IFTYPE_AP: access point
a3edacac
JB
3016 * @NL80211_IFTYPE_AP_VLAN: VLAN interface for access points; VLAN interfaces
3017 * are a bit special in that they must always be tied to a pre-existing
3018 * AP type interface.
f408e01b
JB
3019 * @NL80211_IFTYPE_WDS: wireless distribution interface
3020 * @NL80211_IFTYPE_MONITOR: monitor interface receiving all frames
3021 * @NL80211_IFTYPE_MESH_POINT: mesh point
d07ec36a
JB
3022 * @NL80211_IFTYPE_P2P_CLIENT: P2P client
3023 * @NL80211_IFTYPE_P2P_GO: P2P group owner
bec9a8e0
JB
3024 * @NL80211_IFTYPE_P2P_DEVICE: P2P device interface type, this is not a netdev
3025 * and therefore can't be created in the normal ways, use the
3026 * %NL80211_CMD_START_P2P_DEVICE and %NL80211_CMD_STOP_P2P_DEVICE
3027 * commands to create and destroy one
b8820d2b
JB
3028 * @NL80211_IF_TYPE_OCB: Outside Context of a BSS
3029 * This mode corresponds to the MIB variable dot11OCBActivated=true
a574be4b 3030 * @NL80211_IFTYPE_NAN: NAN device interface type (not a netdev)
f408e01b 3031 * @NL80211_IFTYPE_MAX: highest interface type number currently defined
0c560ade 3032 * @NUM_NL80211_IFTYPES: number of defined interface types
f408e01b
JB
3033 *
3034 * These values are used with the %NL80211_ATTR_IFTYPE
3035 * to set the type of an interface.
3036 *
3037 */
3038enum nl80211_iftype {
3039 NL80211_IFTYPE_UNSPECIFIED,
3040 NL80211_IFTYPE_ADHOC,
3041 NL80211_IFTYPE_STATION,
3042 NL80211_IFTYPE_AP,
3043 NL80211_IFTYPE_AP_VLAN,
3044 NL80211_IFTYPE_WDS,
3045 NL80211_IFTYPE_MONITOR,
3046 NL80211_IFTYPE_MESH_POINT,
d07ec36a
JB
3047 NL80211_IFTYPE_P2P_CLIENT,
3048 NL80211_IFTYPE_P2P_GO,
bec9a8e0 3049 NL80211_IFTYPE_P2P_DEVICE,
b8820d2b 3050 NL80211_IFTYPE_OCB,
a574be4b 3051 NL80211_IFTYPE_NAN,
f408e01b
JB
3052
3053 /* keep last */
0c560ade
JB
3054 NUM_NL80211_IFTYPES,
3055 NL80211_IFTYPE_MAX = NUM_NL80211_IFTYPES - 1
f408e01b
JB
3056};
3057
3058/**
3059 * enum nl80211_sta_flags - station flags
3060 *
3061 * Station flags. When a station is added to an AP interface, it is
3062 * assumed to be already associated (and hence authenticated.)
3063 *
0c560ade 3064 * @__NL80211_STA_FLAG_INVALID: attribute number 0 is reserved
f408e01b
JB
3065 * @NL80211_STA_FLAG_AUTHORIZED: station is authorized (802.1X)
3066 * @NL80211_STA_FLAG_SHORT_PREAMBLE: station is capable of receiving frames
3067 * with short barker preamble
3068 * @NL80211_STA_FLAG_WME: station is WME/QoS capable
4e6d3cb8 3069 * @NL80211_STA_FLAG_MFP: station uses management frame protection
9b13eeba 3070 * @NL80211_STA_FLAG_AUTHENTICATED: station is authenticated
d456ac60
JB
3071 * @NL80211_STA_FLAG_TDLS_PEER: station is a TDLS peer -- this flag should
3072 * only be used in managed mode (even in the flags mask). Note that the
3073 * flag can't be changed, it is only valid while adding a station, and
3074 * attempts to change it will silently be ignored (rather than rejected
3075 * as errors.)
6ccd4979
JB
3076 * @NL80211_STA_FLAG_ASSOCIATED: station is associated; used with drivers
3077 * that support %NL80211_FEATURE_FULL_AP_CLIENT_STATE to transition a
3078 * previously added station into associated state
0c560ade
JB
3079 * @NL80211_STA_FLAG_MAX: highest station flag number currently defined
3080 * @__NL80211_STA_FLAG_AFTER_LAST: internal use
f408e01b
JB
3081 */
3082enum nl80211_sta_flags {
3083 __NL80211_STA_FLAG_INVALID,
3084 NL80211_STA_FLAG_AUTHORIZED,
3085 NL80211_STA_FLAG_SHORT_PREAMBLE,
3086 NL80211_STA_FLAG_WME,
4e6d3cb8 3087 NL80211_STA_FLAG_MFP,
9b13eeba 3088 NL80211_STA_FLAG_AUTHENTICATED,
03820325 3089 NL80211_STA_FLAG_TDLS_PEER,
6ccd4979 3090 NL80211_STA_FLAG_ASSOCIATED,
f408e01b
JB
3091
3092 /* keep last */
3093 __NL80211_STA_FLAG_AFTER_LAST,
3094 NL80211_STA_FLAG_MAX = __NL80211_STA_FLAG_AFTER_LAST - 1
3095};
3096
f45d4583
JB
3097/**
3098 * enum nl80211_sta_p2p_ps_status - station support of P2P PS
3099 *
3100 * @NL80211_P2P_PS_UNSUPPORTED: station doesn't support P2P PS mechanism
3101 * @@NL80211_P2P_PS_SUPPORTED: station supports P2P PS mechanism
3102 * @NUM_NL80211_P2P_PS_STATUS: number of values
3103 */
3104enum nl80211_sta_p2p_ps_status {
3105 NL80211_P2P_PS_UNSUPPORTED = 0,
3106 NL80211_P2P_PS_SUPPORTED,
3107
3108 NUM_NL80211_P2P_PS_STATUS,
3109};
3110
4a7e7218
JB
3111#define NL80211_STA_FLAG_MAX_OLD_API NL80211_STA_FLAG_TDLS_PEER
3112
d8004bdd
JB
3113/**
3114 * struct nl80211_sta_flag_update - station flags mask/set
3115 * @mask: mask of station flags to set
3116 * @set: which values to set them to
3117 *
3118 * Both mask and set contain bits as per &enum nl80211_sta_flags.
3119 */
3120struct nl80211_sta_flag_update {
3121 __u32 mask;
3122 __u32 set;
3123} __attribute__((packed));
3124
75b78ff8
JB
3125/**
3126 * enum nl80211_he_gi - HE guard interval
3127 * @NL80211_RATE_INFO_HE_GI_0_8: 0.8 usec
3128 * @NL80211_RATE_INFO_HE_GI_1_6: 1.6 usec
3129 * @NL80211_RATE_INFO_HE_GI_3_2: 3.2 usec
3130 */
3131enum nl80211_he_gi {
3132 NL80211_RATE_INFO_HE_GI_0_8,
3133 NL80211_RATE_INFO_HE_GI_1_6,
3134 NL80211_RATE_INFO_HE_GI_3_2,
3135};
3136
3137/**
3138 * enum nl80211_he_ru_alloc - HE RU allocation values
3139 * @NL80211_RATE_INFO_HE_RU_ALLOC_26: 26-tone RU allocation
3140 * @NL80211_RATE_INFO_HE_RU_ALLOC_52: 52-tone RU allocation
3141 * @NL80211_RATE_INFO_HE_RU_ALLOC_106: 106-tone RU allocation
3142 * @NL80211_RATE_INFO_HE_RU_ALLOC_242: 242-tone RU allocation
3143 * @NL80211_RATE_INFO_HE_RU_ALLOC_484: 484-tone RU allocation
3144 * @NL80211_RATE_INFO_HE_RU_ALLOC_996: 996-tone RU allocation
3145 * @NL80211_RATE_INFO_HE_RU_ALLOC_2x996: 2x996-tone RU allocation
3146 */
3147enum nl80211_he_ru_alloc {
3148 NL80211_RATE_INFO_HE_RU_ALLOC_26,
3149 NL80211_RATE_INFO_HE_RU_ALLOC_52,
3150 NL80211_RATE_INFO_HE_RU_ALLOC_106,
3151 NL80211_RATE_INFO_HE_RU_ALLOC_242,
3152 NL80211_RATE_INFO_HE_RU_ALLOC_484,
3153 NL80211_RATE_INFO_HE_RU_ALLOC_996,
3154 NL80211_RATE_INFO_HE_RU_ALLOC_2x996,
3155};
3156
68632dc7
JB
3157/**
3158 * enum nl80211_rate_info - bitrate information
3159 *
3160 * These attribute types are used with %NL80211_STA_INFO_TXRATE
3161 * when getting information about the bitrate of a station.
d6c6887a
JB
3162 * There are 2 attributes for bitrate, a legacy one that represents
3163 * a 16-bit value, and new one that represents a 32-bit value.
3164 * If the rate value fits into 16 bit, both attributes are reported
3165 * with the same value. If the rate is too high to fit into 16 bits
3166 * (>6.5535Gbps) only 32-bit attribute is included.
3167 * User space tools encouraged to use the 32-bit attribute and fall
3168 * back to the 16-bit one for compatibility with older kernels.
68632dc7
JB
3169 *
3170 * @__NL80211_RATE_INFO_INVALID: attribute number 0 is reserved
3171 * @NL80211_RATE_INFO_BITRATE: total bitrate (u16, 100kbit/s)
3172 * @NL80211_RATE_INFO_MCS: mcs index for 802.11n (u8)
068ff94a 3173 * @NL80211_RATE_INFO_40_MHZ_WIDTH: 40 MHz dualchannel bitrate
68632dc7 3174 * @NL80211_RATE_INFO_SHORT_GI: 400ns guard interval
d6c6887a 3175 * @NL80211_RATE_INFO_BITRATE32: total bitrate (u32, 100kbit/s)
68632dc7 3176 * @NL80211_RATE_INFO_MAX: highest rate_info number currently defined
068ff94a
JB
3177 * @NL80211_RATE_INFO_VHT_MCS: MCS index for VHT (u8)
3178 * @NL80211_RATE_INFO_VHT_NSS: number of streams in VHT (u8)
3179 * @NL80211_RATE_INFO_80_MHZ_WIDTH: 80 MHz VHT rate
a67b2d9c
JB
3180 * @NL80211_RATE_INFO_80P80_MHZ_WIDTH: unused - 80+80 is treated the
3181 * same as 160 for purposes of the bitrates
068ff94a 3182 * @NL80211_RATE_INFO_160_MHZ_WIDTH: 160 MHz VHT rate
a67b2d9c
JB
3183 * @NL80211_RATE_INFO_10_MHZ_WIDTH: 10 MHz width - note that this is
3184 * a legacy rate and will be reported as the actual bitrate, i.e.
3185 * half the base (20 MHz) rate
3186 * @NL80211_RATE_INFO_5_MHZ_WIDTH: 5 MHz width - note that this is
3187 * a legacy rate and will be reported as the actual bitrate, i.e.
3188 * a quarter of the base (20 MHz) rate
75b78ff8
JB
3189 * @NL80211_RATE_INFO_HE_MCS: HE MCS index (u8, 0-11)
3190 * @NL80211_RATE_INFO_HE_NSS: HE NSS value (u8, 1-8)
3191 * @NL80211_RATE_INFO_HE_GI: HE guard interval identifier
3192 * (u8, see &enum nl80211_he_gi)
3193 * @NL80211_RATE_INFO_HE_DCM: HE DCM value (u8, 0/1)
3194 * @NL80211_RATE_INFO_RU_ALLOC: HE RU allocation, if not present then
3195 * non-OFDMA was used (u8, see &enum nl80211_he_ru_alloc)
68632dc7
JB
3196 * @__NL80211_RATE_INFO_AFTER_LAST: internal use
3197 */
3198enum nl80211_rate_info {
3199 __NL80211_RATE_INFO_INVALID,
3200 NL80211_RATE_INFO_BITRATE,
3201 NL80211_RATE_INFO_MCS,
3202 NL80211_RATE_INFO_40_MHZ_WIDTH,
3203 NL80211_RATE_INFO_SHORT_GI,
d6c6887a 3204 NL80211_RATE_INFO_BITRATE32,
068ff94a
JB
3205 NL80211_RATE_INFO_VHT_MCS,
3206 NL80211_RATE_INFO_VHT_NSS,
3207 NL80211_RATE_INFO_80_MHZ_WIDTH,
3208 NL80211_RATE_INFO_80P80_MHZ_WIDTH,
3209 NL80211_RATE_INFO_160_MHZ_WIDTH,
a67b2d9c
JB
3210 NL80211_RATE_INFO_10_MHZ_WIDTH,
3211 NL80211_RATE_INFO_5_MHZ_WIDTH,
75b78ff8
JB
3212 NL80211_RATE_INFO_HE_MCS,
3213 NL80211_RATE_INFO_HE_NSS,
3214 NL80211_RATE_INFO_HE_GI,
3215 NL80211_RATE_INFO_HE_DCM,
3216 NL80211_RATE_INFO_HE_RU_ALLOC,
68632dc7
JB
3217
3218 /* keep last */
3219 __NL80211_RATE_INFO_AFTER_LAST,
3220 NL80211_RATE_INFO_MAX = __NL80211_RATE_INFO_AFTER_LAST - 1
3221};
3222
9b13eeba
JB
3223/**
3224 * enum nl80211_sta_bss_param - BSS information collected by STA
3225 *
3226 * These attribute types are used with %NL80211_STA_INFO_BSS_PARAM
3227 * when getting information about the bitrate of a station.
3228 *
3229 * @__NL80211_STA_BSS_PARAM_INVALID: attribute number 0 is reserved
3230 * @NL80211_STA_BSS_PARAM_CTS_PROT: whether CTS protection is enabled (flag)
3231 * @NL80211_STA_BSS_PARAM_SHORT_PREAMBLE: whether short preamble is enabled
3232 * (flag)
3233 * @NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME: whether short slot time is enabled
3234 * (flag)
3235 * @NL80211_STA_BSS_PARAM_DTIM_PERIOD: DTIM period for beaconing (u8)
3236 * @NL80211_STA_BSS_PARAM_BEACON_INTERVAL: Beacon interval (u16)
3237 * @NL80211_STA_BSS_PARAM_MAX: highest sta_bss_param number currently defined
3238 * @__NL80211_STA_BSS_PARAM_AFTER_LAST: internal use
3239 */
3240enum nl80211_sta_bss_param {
3241 __NL80211_STA_BSS_PARAM_INVALID,
3242 NL80211_STA_BSS_PARAM_CTS_PROT,
3243 NL80211_STA_BSS_PARAM_SHORT_PREAMBLE,
3244 NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME,
3245 NL80211_STA_BSS_PARAM_DTIM_PERIOD,
3246 NL80211_STA_BSS_PARAM_BEACON_INTERVAL,
3247
3248 /* keep last */
3249 __NL80211_STA_BSS_PARAM_AFTER_LAST,
3250 NL80211_STA_BSS_PARAM_MAX = __NL80211_STA_BSS_PARAM_AFTER_LAST - 1
3251};
3252
f408e01b
JB
3253/**
3254 * enum nl80211_sta_info - station information
3255 *
3256 * These attribute types are used with %NL80211_ATTR_STA_INFO
3257 * when getting information about a station.
3258 *
3259 * @__NL80211_STA_INFO_INVALID: attribute number 0 is reserved
3260 * @NL80211_STA_INFO_INACTIVE_TIME: time since last activity (u32, msecs)
a67b2d9c
JB
3261 * @NL80211_STA_INFO_RX_BYTES: total received bytes (MPDU length)
3262 * (u32, from this station)
3263 * @NL80211_STA_INFO_TX_BYTES: total transmitted bytes (MPDU length)
3264 * (u32, to this station)
3265 * @NL80211_STA_INFO_RX_BYTES64: total received bytes (MPDU length)
3266 * (u64, from this station)
3267 * @NL80211_STA_INFO_TX_BYTES64: total transmitted bytes (MPDU length)
3268 * (u64, to this station)
68632dc7
JB
3269 * @NL80211_STA_INFO_SIGNAL: signal strength of last received PPDU (u8, dBm)
3270 * @NL80211_STA_INFO_TX_BITRATE: current unicast tx rate, nested attribute
9b13eeba 3271 * containing info as possible, see &enum nl80211_rate_info
a67b2d9c
JB
3272 * @NL80211_STA_INFO_RX_PACKETS: total received packet (MSDUs and MMPDUs)
3273 * (u32, from this station)
3274 * @NL80211_STA_INFO_TX_PACKETS: total transmitted packets (MSDUs and MMPDUs)
3275 * (u32, to this station)
3276 * @NL80211_STA_INFO_TX_RETRIES: total retries (MPDUs) (u32, to this station)
3277 * @NL80211_STA_INFO_TX_FAILED: total failed packets (MPDUs)
3278 * (u32, to this station)
fb660ce4 3279 * @NL80211_STA_INFO_SIGNAL_AVG: signal strength average (u8, dBm)
9b13eeba
JB
3280 * @NL80211_STA_INFO_LLID: the station's mesh LLID
3281 * @NL80211_STA_INFO_PLID: the station's mesh PLID
3282 * @NL80211_STA_INFO_PLINK_STATE: peer link state for the station
a3edacac 3283 * (see %enum nl80211_plink_state)
9b13eeba
JB
3284 * @NL80211_STA_INFO_RX_BITRATE: last unicast data frame rx rate, nested
3285 * attribute, like NL80211_STA_INFO_TX_BITRATE.
3286 * @NL80211_STA_INFO_BSS_PARAM: current station's view of BSS, nested attribute
3287 * containing info as possible, see &enum nl80211_sta_bss_param
3288 * @NL80211_STA_INFO_CONNECTED_TIME: time since the station is last connected
03820325 3289 * @NL80211_STA_INFO_STA_FLAGS: Contains a struct nl80211_sta_flag_update.
d456ac60 3290 * @NL80211_STA_INFO_BEACON_LOSS: count of times beacon loss was detected (u32)
b0a3b5e3 3291 * @NL80211_STA_INFO_T_OFFSET: timing offset with respect to this STA (s64)
6ccd4979
JB
3292 * @NL80211_STA_INFO_LOCAL_PM: local mesh STA link-specific power mode
3293 * @NL80211_STA_INFO_PEER_PM: peer mesh STA link-specific power mode
3294 * @NL80211_STA_INFO_NONPEER_PM: neighbor mesh STA power save mode towards
3295 * non-peer STA
0fd08e2e
JB
3296 * @NL80211_STA_INFO_CHAIN_SIGNAL: per-chain signal strength of last PPDU
3297 * Contains a nested array of signal strength attributes (u8, dBm)
3298 * @NL80211_STA_INFO_CHAIN_SIGNAL_AVG: per-chain signal strength average
3299 * Same format as NL80211_STA_INFO_CHAIN_SIGNAL.
70f3fe99
JB
3300 * @NL80211_STA_EXPECTED_THROUGHPUT: expected throughput considering also the
3301 * 802.11 header (u32, kbps)
a67b2d9c
JB
3302 * @NL80211_STA_INFO_RX_DROP_MISC: RX packets dropped for unspecified reasons
3303 * (u64)
3304 * @NL80211_STA_INFO_BEACON_RX: number of beacons received from this peer (u64)
3305 * @NL80211_STA_INFO_BEACON_SIGNAL_AVG: signal strength average
3306 * for beacons only (u8, dBm)
3307 * @NL80211_STA_INFO_TID_STATS: per-TID statistics (see &enum nl80211_tid_stats)
3308 * This is a nested attribute where each the inner attribute number is the
3309 * TID+1 and the special TID 16 (i.e. value 17) is used for non-QoS frames;
3310 * each one of those is again nested with &enum nl80211_tid_stats
3311 * attributes carrying the actual values.
f45d4583
JB
3312 * @NL80211_STA_INFO_RX_DURATION: aggregate PPDU duration for all frames
3313 * received from the station (u64, usec)
a574be4b 3314 * @NL80211_STA_INFO_PAD: attribute used for padding for 64-bit alignment
e06485e8 3315 * @NL80211_STA_INFO_ACK_SIGNAL: signal strength of the last ACK frame(u8, dBm)
75b78ff8 3316 * @NL80211_STA_INFO_ACK_SIGNAL_AVG: avg signal strength of ACK frames (s8, dBm)
806bb9ac
JB
3317 * @NL80211_STA_INFO_RX_MPDUS: total number of received packets (MPDUs)
3318 * (u32, from this station)
3319 * @NL80211_STA_INFO_FCS_ERROR_COUNT: total number of packets (MPDUs) received
3320 * with an FCS error (u32, from this station). This count may not include
3321 * some packets with an FCS error due to TA corruption. Hence this counter
3322 * might not be fully accurate.
3323 * @NL80211_STA_INFO_CONNECTED_TO_GATE: set to true if STA has a path to a
3324 * mesh gate (u8, 0 or 1)
691c5853
JB
3325 * @NL80211_STA_INFO_TX_DURATION: aggregate PPDU duration for all frames
3326 * sent to the station (u64, usec)
3327 * @NL80211_STA_INFO_AIRTIME_WEIGHT: current airtime weight for station (u16)
2c8026de 3328 * @NL80211_STA_INFO_AIRTIME_LINK_METRIC: airtime link metric for mesh station
0c1a26b5
JB
3329 * @NL80211_STA_INFO_ASSOC_AT_BOOTTIME: Timestamp (CLOCK_BOOTTIME, nanoseconds)
3330 * of STA's association
9b13eeba
JB
3331 * @__NL80211_STA_INFO_AFTER_LAST: internal
3332 * @NL80211_STA_INFO_MAX: highest possible station info attribute
f408e01b
JB
3333 */
3334enum nl80211_sta_info {
3335 __NL80211_STA_INFO_INVALID,
3336 NL80211_STA_INFO_INACTIVE_TIME,
3337 NL80211_STA_INFO_RX_BYTES,
3338 NL80211_STA_INFO_TX_BYTES,
3339 NL80211_STA_INFO_LLID,
3340 NL80211_STA_INFO_PLID,
3341 NL80211_STA_INFO_PLINK_STATE,
68632dc7
JB
3342 NL80211_STA_INFO_SIGNAL,
3343 NL80211_STA_INFO_TX_BITRATE,
72ff4123
JB
3344 NL80211_STA_INFO_RX_PACKETS,
3345 NL80211_STA_INFO_TX_PACKETS,
1cbe4a02
JB
3346 NL80211_STA_INFO_TX_RETRIES,
3347 NL80211_STA_INFO_TX_FAILED,
fb660ce4 3348 NL80211_STA_INFO_SIGNAL_AVG,
9b13eeba
JB
3349 NL80211_STA_INFO_RX_BITRATE,
3350 NL80211_STA_INFO_BSS_PARAM,
3351 NL80211_STA_INFO_CONNECTED_TIME,
03820325 3352 NL80211_STA_INFO_STA_FLAGS,
d456ac60 3353 NL80211_STA_INFO_BEACON_LOSS,
b0a3b5e3 3354 NL80211_STA_INFO_T_OFFSET,
6ccd4979
JB
3355 NL80211_STA_INFO_LOCAL_PM,
3356 NL80211_STA_INFO_PEER_PM,
3357 NL80211_STA_INFO_NONPEER_PM,
d7bfeaa0
JB
3358 NL80211_STA_INFO_RX_BYTES64,
3359 NL80211_STA_INFO_TX_BYTES64,
0fd08e2e
JB
3360 NL80211_STA_INFO_CHAIN_SIGNAL,
3361 NL80211_STA_INFO_CHAIN_SIGNAL_AVG,
70f3fe99 3362 NL80211_STA_INFO_EXPECTED_THROUGHPUT,
a67b2d9c
JB
3363 NL80211_STA_INFO_RX_DROP_MISC,
3364 NL80211_STA_INFO_BEACON_RX,
3365 NL80211_STA_INFO_BEACON_SIGNAL_AVG,
3366 NL80211_STA_INFO_TID_STATS,
f45d4583 3367 NL80211_STA_INFO_RX_DURATION,
a574be4b 3368 NL80211_STA_INFO_PAD,
e06485e8 3369 NL80211_STA_INFO_ACK_SIGNAL,
75b78ff8 3370 NL80211_STA_INFO_ACK_SIGNAL_AVG,
806bb9ac
JB
3371 NL80211_STA_INFO_RX_MPDUS,
3372 NL80211_STA_INFO_FCS_ERROR_COUNT,
3373 NL80211_STA_INFO_CONNECTED_TO_GATE,
691c5853
JB
3374 NL80211_STA_INFO_TX_DURATION,
3375 NL80211_STA_INFO_AIRTIME_WEIGHT,
2c8026de 3376 NL80211_STA_INFO_AIRTIME_LINK_METRIC,
0c1a26b5 3377 NL80211_STA_INFO_ASSOC_AT_BOOTTIME,
f408e01b
JB
3378
3379 /* keep last */
3380 __NL80211_STA_INFO_AFTER_LAST,
3381 NL80211_STA_INFO_MAX = __NL80211_STA_INFO_AFTER_LAST - 1
3382};
3383
75b78ff8
JB
3384/* we renamed this - stay compatible */
3385#define NL80211_STA_INFO_DATA_ACK_SIGNAL_AVG NL80211_STA_INFO_ACK_SIGNAL_AVG
3386
3387
a67b2d9c
JB
3388/**
3389 * enum nl80211_tid_stats - per TID statistics attributes
3390 * @__NL80211_TID_STATS_INVALID: attribute number 0 is reserved
3391 * @NL80211_TID_STATS_RX_MSDU: number of MSDUs received (u64)
3392 * @NL80211_TID_STATS_TX_MSDU: number of MSDUs transmitted (or
3393 * attempted to transmit; u64)
3394 * @NL80211_TID_STATS_TX_MSDU_RETRIES: number of retries for
3395 * transmitted MSDUs (not counting the first attempt; u64)
3396 * @NL80211_TID_STATS_TX_MSDU_FAILED: number of failed transmitted
3397 * MSDUs (u64)
a574be4b 3398 * @NL80211_TID_STATS_PAD: attribute used for padding for 64-bit alignment
71101080 3399 * @NL80211_TID_STATS_TXQ_STATS: TXQ stats (nested attribute)
a67b2d9c
JB
3400 * @NUM_NL80211_TID_STATS: number of attributes here
3401 * @NL80211_TID_STATS_MAX: highest numbered attribute here
3402 */
3403enum nl80211_tid_stats {
3404 __NL80211_TID_STATS_INVALID,
3405 NL80211_TID_STATS_RX_MSDU,
3406 NL80211_TID_STATS_TX_MSDU,
3407 NL80211_TID_STATS_TX_MSDU_RETRIES,
3408 NL80211_TID_STATS_TX_MSDU_FAILED,
a574be4b 3409 NL80211_TID_STATS_PAD,
71101080 3410 NL80211_TID_STATS_TXQ_STATS,
a67b2d9c
JB
3411
3412 /* keep last */
3413 NUM_NL80211_TID_STATS,
3414 NL80211_TID_STATS_MAX = NUM_NL80211_TID_STATS - 1
3415};
3416
71101080
JB
3417/**
3418 * enum nl80211_txq_stats - per TXQ statistics attributes
3419 * @__NL80211_TXQ_STATS_INVALID: attribute number 0 is reserved
3420 * @NUM_NL80211_TXQ_STATS: number of attributes here
3421 * @NL80211_TXQ_STATS_BACKLOG_BYTES: number of bytes currently backlogged
3422 * @NL80211_TXQ_STATS_BACKLOG_PACKETS: number of packets currently
3423 * backlogged
3424 * @NL80211_TXQ_STATS_FLOWS: total number of new flows seen
3425 * @NL80211_TXQ_STATS_DROPS: total number of packet drops
3426 * @NL80211_TXQ_STATS_ECN_MARKS: total number of packet ECN marks
3427 * @NL80211_TXQ_STATS_OVERLIMIT: number of drops due to queue space overflow
3428 * @NL80211_TXQ_STATS_OVERMEMORY: number of drops due to memory limit overflow
3429 * (only for per-phy stats)
3430 * @NL80211_TXQ_STATS_COLLISIONS: number of hash collisions
3431 * @NL80211_TXQ_STATS_TX_BYTES: total number of bytes dequeued from TXQ
3432 * @NL80211_TXQ_STATS_TX_PACKETS: total number of packets dequeued from TXQ
3433 * @NL80211_TXQ_STATS_MAX_FLOWS: number of flow buckets for PHY
3434 * @NL80211_TXQ_STATS_MAX: highest numbered attribute here
3435 */
3436enum nl80211_txq_stats {
3437 __NL80211_TXQ_STATS_INVALID,
3438 NL80211_TXQ_STATS_BACKLOG_BYTES,
3439 NL80211_TXQ_STATS_BACKLOG_PACKETS,
3440 NL80211_TXQ_STATS_FLOWS,
3441 NL80211_TXQ_STATS_DROPS,
3442 NL80211_TXQ_STATS_ECN_MARKS,
3443 NL80211_TXQ_STATS_OVERLIMIT,
3444 NL80211_TXQ_STATS_OVERMEMORY,
3445 NL80211_TXQ_STATS_COLLISIONS,
3446 NL80211_TXQ_STATS_TX_BYTES,
3447 NL80211_TXQ_STATS_TX_PACKETS,
3448 NL80211_TXQ_STATS_MAX_FLOWS,
3449
3450 /* keep last */
3451 NUM_NL80211_TXQ_STATS,
3452 NL80211_TXQ_STATS_MAX = NUM_NL80211_TXQ_STATS - 1
3453};
3454
f408e01b
JB
3455/**
3456 * enum nl80211_mpath_flags - nl80211 mesh path flags
3457 *
3458 * @NL80211_MPATH_FLAG_ACTIVE: the mesh path is active
3459 * @NL80211_MPATH_FLAG_RESOLVING: the mesh path discovery process is running
dd2605a0 3460 * @NL80211_MPATH_FLAG_SN_VALID: the mesh path contains a valid SN
f408e01b
JB
3461 * @NL80211_MPATH_FLAG_FIXED: the mesh path has been manually set
3462 * @NL80211_MPATH_FLAG_RESOLVED: the mesh path discovery process succeeded
3463 */
3464enum nl80211_mpath_flags {
3465 NL80211_MPATH_FLAG_ACTIVE = 1<<0,
3466 NL80211_MPATH_FLAG_RESOLVING = 1<<1,
dd2605a0 3467 NL80211_MPATH_FLAG_SN_VALID = 1<<2,
f408e01b
JB
3468 NL80211_MPATH_FLAG_FIXED = 1<<3,
3469 NL80211_MPATH_FLAG_RESOLVED = 1<<4,
3470};
3471
3472/**
3473 * enum nl80211_mpath_info - mesh path information
3474 *
3475 * These attribute types are used with %NL80211_ATTR_MPATH_INFO when getting
3476 * information about a mesh path.
3477 *
3478 * @__NL80211_MPATH_INFO_INVALID: attribute number 0 is reserved
0c560ade
JB
3479 * @NL80211_MPATH_INFO_FRAME_QLEN: number of queued frames for this destination
3480 * @NL80211_MPATH_INFO_SN: destination sequence number
3481 * @NL80211_MPATH_INFO_METRIC: metric (cost) of this mesh path
3482 * @NL80211_MPATH_INFO_EXPTIME: expiration time for the path, in msec from now
3483 * @NL80211_MPATH_INFO_FLAGS: mesh path flags, enumerated in
f408e01b 3484 * &enum nl80211_mpath_flags;
0c560ade
JB
3485 * @NL80211_MPATH_INFO_DISCOVERY_TIMEOUT: total path discovery timeout, in msec
3486 * @NL80211_MPATH_INFO_DISCOVERY_RETRIES: mesh path discovery retries
691c5853
JB
3487 * @NL80211_MPATH_INFO_HOP_COUNT: hop count to destination
3488 * @NL80211_MPATH_INFO_PATH_CHANGE: total number of path changes to destination
0c560ade 3489 * @NL80211_MPATH_INFO_MAX: highest mesh path information attribute number
691c5853 3490 * currently defined
0c560ade 3491 * @__NL80211_MPATH_INFO_AFTER_LAST: internal use
f408e01b
JB
3492 */
3493enum nl80211_mpath_info {
3494 __NL80211_MPATH_INFO_INVALID,
3495 NL80211_MPATH_INFO_FRAME_QLEN,
dd2605a0 3496 NL80211_MPATH_INFO_SN,
f408e01b
JB
3497 NL80211_MPATH_INFO_METRIC,
3498 NL80211_MPATH_INFO_EXPTIME,
3499 NL80211_MPATH_INFO_FLAGS,
3500 NL80211_MPATH_INFO_DISCOVERY_TIMEOUT,
3501 NL80211_MPATH_INFO_DISCOVERY_RETRIES,
691c5853
JB
3502 NL80211_MPATH_INFO_HOP_COUNT,
3503 NL80211_MPATH_INFO_PATH_CHANGE,
f408e01b
JB
3504
3505 /* keep last */
3506 __NL80211_MPATH_INFO_AFTER_LAST,
3507 NL80211_MPATH_INFO_MAX = __NL80211_MPATH_INFO_AFTER_LAST - 1
3508};
3509
75b78ff8
JB
3510/**
3511 * enum nl80211_band_iftype_attr - Interface type data attributes
3512 *
3513 * @__NL80211_BAND_IFTYPE_ATTR_INVALID: attribute number 0 is reserved
3514 * @NL80211_BAND_IFTYPE_ATTR_IFTYPES: nested attribute containing a flag attribute
3515 * for each interface type that supports the band data
3516 * @NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC: HE MAC capabilities as in HE
3517 * capabilities IE
3518 * @NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY: HE PHY capabilities as in HE
3519 * capabilities IE
3520 * @NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET: HE supported NSS/MCS as in HE
3521 * capabilities IE
3522 * @NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE: HE PPE thresholds information as
3523 * defined in HE capabilities IE
3524 * @NL80211_BAND_IFTYPE_ATTR_MAX: highest band HE capability attribute currently
3525 * defined
3526 * @__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST: internal use
3527 */
3528enum nl80211_band_iftype_attr {
3529 __NL80211_BAND_IFTYPE_ATTR_INVALID,
3530
3531 NL80211_BAND_IFTYPE_ATTR_IFTYPES,
3532 NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC,
3533 NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY,
3534 NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET,
3535 NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
3536
3537 /* keep last */
3538 __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
3539 NL80211_BAND_IFTYPE_ATTR_MAX = __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST - 1
3540};
3541
f408e01b
JB
3542/**
3543 * enum nl80211_band_attr - band attributes
3544 * @__NL80211_BAND_ATTR_INVALID: attribute number 0 is reserved
3545 * @NL80211_BAND_ATTR_FREQS: supported frequencies in this band,
3546 * an array of nested frequency attributes
3547 * @NL80211_BAND_ATTR_RATES: supported bitrates in this band,
3548 * an array of nested bitrate attributes
3dd781cc
JB
3549 * @NL80211_BAND_ATTR_HT_MCS_SET: 16-byte attribute containing the MCS set as
3550 * defined in 802.11n
3551 * @NL80211_BAND_ATTR_HT_CAPA: HT capabilities, as in the HT information IE
3552 * @NL80211_BAND_ATTR_HT_AMPDU_FACTOR: A-MPDU factor, as in 11n
3553 * @NL80211_BAND_ATTR_HT_AMPDU_DENSITY: A-MPDU density, as in 11n
869982f5
JB
3554 * @NL80211_BAND_ATTR_VHT_MCS_SET: 32-byte attribute containing the MCS set as
3555 * defined in 802.11ac
3556 * @NL80211_BAND_ATTR_VHT_CAPA: VHT capabilities, as in the HT information IE
75b78ff8
JB
3557 * @NL80211_BAND_ATTR_IFTYPE_DATA: nested array attribute, with each entry using
3558 * attributes from &enum nl80211_band_iftype_attr
0c1a26b5
JB
3559 * @NL80211_BAND_ATTR_EDMG_CHANNELS: bitmap that indicates the 2.16 GHz
3560 * channel(s) that are allowed to be used for EDMG transmissions.
3561 * Defined by IEEE P802.11ay/D4.0 section 9.4.2.251.
3562 * @NL80211_BAND_ATTR_EDMG_BW_CONFIG: Channel BW Configuration subfield encodes
3563 * the allowed channel bandwidth configurations.
3564 * Defined by IEEE P802.11ay/D4.0 section 9.4.2.251, Table 13.
0c560ade
JB
3565 * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined
3566 * @__NL80211_BAND_ATTR_AFTER_LAST: internal use
f408e01b
JB
3567 */
3568enum nl80211_band_attr {
3569 __NL80211_BAND_ATTR_INVALID,
3570 NL80211_BAND_ATTR_FREQS,
3571 NL80211_BAND_ATTR_RATES,
3572
3dd781cc
JB
3573 NL80211_BAND_ATTR_HT_MCS_SET,
3574 NL80211_BAND_ATTR_HT_CAPA,
3575 NL80211_BAND_ATTR_HT_AMPDU_FACTOR,
3576 NL80211_BAND_ATTR_HT_AMPDU_DENSITY,
3577
869982f5
JB
3578 NL80211_BAND_ATTR_VHT_MCS_SET,
3579 NL80211_BAND_ATTR_VHT_CAPA,
75b78ff8 3580 NL80211_BAND_ATTR_IFTYPE_DATA,
869982f5 3581
0c1a26b5
JB
3582 NL80211_BAND_ATTR_EDMG_CHANNELS,
3583 NL80211_BAND_ATTR_EDMG_BW_CONFIG,
3584
f408e01b
JB
3585 /* keep last */
3586 __NL80211_BAND_ATTR_AFTER_LAST,
3587 NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1
3588};
3589
3dd781cc
JB
3590#define NL80211_BAND_ATTR_HT_CAPA NL80211_BAND_ATTR_HT_CAPA
3591
71101080
JB
3592/**
3593 * enum nl80211_wmm_rule - regulatory wmm rule
3594 *
3595 * @__NL80211_WMMR_INVALID: attribute number 0 is reserved
3596 * @NL80211_WMMR_CW_MIN: Minimum contention window slot.
3597 * @NL80211_WMMR_CW_MAX: Maximum contention window slot.
3598 * @NL80211_WMMR_AIFSN: Arbitration Inter Frame Space.
3599 * @NL80211_WMMR_TXOP: Maximum allowed tx operation time.
3600 * @nl80211_WMMR_MAX: highest possible wmm rule.
3601 * @__NL80211_WMMR_LAST: Internal use.
3602 */
3603enum nl80211_wmm_rule {
3604 __NL80211_WMMR_INVALID,
3605 NL80211_WMMR_CW_MIN,
3606 NL80211_WMMR_CW_MAX,
3607 NL80211_WMMR_AIFSN,
3608 NL80211_WMMR_TXOP,
3609
3610 /* keep last */
3611 __NL80211_WMMR_LAST,
3612 NL80211_WMMR_MAX = __NL80211_WMMR_LAST - 1
3613};
3614
f408e01b
JB
3615/**
3616 * enum nl80211_frequency_attr - frequency attributes
0c560ade 3617 * @__NL80211_FREQUENCY_ATTR_INVALID: attribute number 0 is reserved
f408e01b
JB
3618 * @NL80211_FREQUENCY_ATTR_FREQ: Frequency in MHz
3619 * @NL80211_FREQUENCY_ATTR_DISABLED: Channel is disabled in current
3620 * regulatory domain.
320cfae1
JB
3621 * @NL80211_FREQUENCY_ATTR_NO_IR: no mechanisms that initiate radiation
3622 * are permitted on this channel, this includes sending probe
3623 * requests, or modes of operation that require beaconing.
f408e01b
JB
3624 * @NL80211_FREQUENCY_ATTR_RADAR: Radar detection is mandatory
3625 * on this channel in current regulatory domain.
c1081c20
JB
3626 * @NL80211_FREQUENCY_ATTR_MAX_TX_POWER: Maximum transmission power in mBm
3627 * (100 * dBm).
d7bfeaa0
JB
3628 * @NL80211_FREQUENCY_ATTR_DFS_STATE: current state for DFS
3629 * (enum nl80211_dfs_state)
3630 * @NL80211_FREQUENCY_ATTR_DFS_TIME: time in miliseconds for how long
3631 * this channel is in this DFS state.
3632 * @NL80211_FREQUENCY_ATTR_NO_HT40_MINUS: HT40- isn't possible with this
3633 * channel as the control channel
3634 * @NL80211_FREQUENCY_ATTR_NO_HT40_PLUS: HT40+ isn't possible with this
3635 * channel as the control channel
3636 * @NL80211_FREQUENCY_ATTR_NO_80MHZ: any 80 MHz channel using this channel
3637 * as the primary or any of the secondary channels isn't possible,
3638 * this includes 80+80 channels
3639 * @NL80211_FREQUENCY_ATTR_NO_160MHZ: any 160 MHz (but not 80+80) channel
3640 * using this channel as the primary or any of the secondary channels
3641 * isn't possible
0c28d3d5 3642 * @NL80211_FREQUENCY_ATTR_DFS_CAC_TIME: DFS CAC time in milliseconds.
70f3fe99
JB
3643 * @NL80211_FREQUENCY_ATTR_INDOOR_ONLY: Only indoor use is permitted on this
3644 * channel. A channel that has the INDOOR_ONLY attribute can only be
3645 * used when there is a clear assessment that the device is operating in
3646 * an indoor surroundings, i.e., it is connected to AC power (and not
3647 * through portable DC inverters) or is under the control of a master
3648 * that is acting as an AP and is connected to AC power.
5c83c0e9 3649 * @NL80211_FREQUENCY_ATTR_IR_CONCURRENT: IR operation is allowed on this
70f3fe99
JB
3650 * channel if it's connected concurrently to a BSS on the same channel on
3651 * the 2 GHz band or to a channel in the same UNII band (on the 5 GHz
5c83c0e9
JB
3652 * band), and IEEE80211_CHAN_RADAR is not set. Instantiating a GO or TDLS
3653 * off-channel on a channel that has the IR_CONCURRENT attribute set can be
3654 * done when there is a clear assessment that the device is operating under
3655 * the guidance of an authorized master, i.e., setting up a GO or TDLS
3656 * off-channel while the device is also connected to an AP with DFS and
3657 * radar detection on the UNII band (it is up to user-space, i.e.,
3658 * wpa_supplicant to perform the required verifications). Using this
3659 * attribute for IR is disallowed for master interfaces (IBSS, AP).
70f3fe99
JB
3660 * @NL80211_FREQUENCY_ATTR_NO_20MHZ: 20 MHz operation is not allowed
3661 * on this channel in current regulatory domain.
3662 * @NL80211_FREQUENCY_ATTR_NO_10MHZ: 10 MHz operation is not allowed
3663 * on this channel in current regulatory domain.
71101080
JB
3664 * @NL80211_FREQUENCY_ATTR_WMM: this channel has wmm limitations.
3665 * This is a nested attribute that contains the wmm limitation per AC.
3666 * (see &enum nl80211_wmm_rule)
ba300c33
JB
3667 * @NL80211_FREQUENCY_ATTR_NO_HE: HE operation is not allowed on this channel
3668 * in current regulatory domain.
0c560ade
JB
3669 * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number
3670 * currently defined
3671 * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use
70f3fe99
JB
3672 *
3673 * See https://apps.fcc.gov/eas/comments/GetPublishedDocument.html?id=327&tn=528122
3674 * for more information on the FCC description of the relaxations allowed
3675 * by NL80211_FREQUENCY_ATTR_INDOOR_ONLY and
5c83c0e9 3676 * NL80211_FREQUENCY_ATTR_IR_CONCURRENT.
f408e01b
JB
3677 */
3678enum nl80211_frequency_attr {
3679 __NL80211_FREQUENCY_ATTR_INVALID,
3680 NL80211_FREQUENCY_ATTR_FREQ,
3681 NL80211_FREQUENCY_ATTR_DISABLED,
320cfae1
JB
3682 NL80211_FREQUENCY_ATTR_NO_IR,
3683 __NL80211_FREQUENCY_ATTR_NO_IBSS,
f408e01b 3684 NL80211_FREQUENCY_ATTR_RADAR,
c1081c20 3685 NL80211_FREQUENCY_ATTR_MAX_TX_POWER,
d7bfeaa0
JB
3686 NL80211_FREQUENCY_ATTR_DFS_STATE,
3687 NL80211_FREQUENCY_ATTR_DFS_TIME,
3688 NL80211_FREQUENCY_ATTR_NO_HT40_MINUS,
3689 NL80211_FREQUENCY_ATTR_NO_HT40_PLUS,
3690 NL80211_FREQUENCY_ATTR_NO_80MHZ,
3691 NL80211_FREQUENCY_ATTR_NO_160MHZ,
0c28d3d5 3692 NL80211_FREQUENCY_ATTR_DFS_CAC_TIME,
70f3fe99 3693 NL80211_FREQUENCY_ATTR_INDOOR_ONLY,
5c83c0e9 3694 NL80211_FREQUENCY_ATTR_IR_CONCURRENT,
70f3fe99
JB
3695 NL80211_FREQUENCY_ATTR_NO_20MHZ,
3696 NL80211_FREQUENCY_ATTR_NO_10MHZ,
71101080 3697 NL80211_FREQUENCY_ATTR_WMM,
ba300c33 3698 NL80211_FREQUENCY_ATTR_NO_HE,
f408e01b
JB
3699
3700 /* keep last */
3701 __NL80211_FREQUENCY_ATTR_AFTER_LAST,
3702 NL80211_FREQUENCY_ATTR_MAX = __NL80211_FREQUENCY_ATTR_AFTER_LAST - 1
3703};
3704
c1081c20 3705#define NL80211_FREQUENCY_ATTR_MAX_TX_POWER NL80211_FREQUENCY_ATTR_MAX_TX_POWER
320cfae1
JB
3706#define NL80211_FREQUENCY_ATTR_PASSIVE_SCAN NL80211_FREQUENCY_ATTR_NO_IR
3707#define NL80211_FREQUENCY_ATTR_NO_IBSS NL80211_FREQUENCY_ATTR_NO_IR
3708#define NL80211_FREQUENCY_ATTR_NO_IR NL80211_FREQUENCY_ATTR_NO_IR
5c83c0e9
JB
3709#define NL80211_FREQUENCY_ATTR_GO_CONCURRENT \
3710 NL80211_FREQUENCY_ATTR_IR_CONCURRENT
c1081c20 3711
f408e01b
JB
3712/**
3713 * enum nl80211_bitrate_attr - bitrate attributes
0c560ade 3714 * @__NL80211_BITRATE_ATTR_INVALID: attribute number 0 is reserved
f408e01b
JB
3715 * @NL80211_BITRATE_ATTR_RATE: Bitrate in units of 100 kbps
3716 * @NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE: Short preamble supported
3717 * in 2.4 GHz band.
0c560ade
JB
3718 * @NL80211_BITRATE_ATTR_MAX: highest bitrate attribute number
3719 * currently defined
3720 * @__NL80211_BITRATE_ATTR_AFTER_LAST: internal use
f408e01b
JB
3721 */
3722enum nl80211_bitrate_attr {
3723 __NL80211_BITRATE_ATTR_INVALID,
3724 NL80211_BITRATE_ATTR_RATE,
3725 NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE,
3726
3727 /* keep last */
3728 __NL80211_BITRATE_ATTR_AFTER_LAST,
3729 NL80211_BITRATE_ATTR_MAX = __NL80211_BITRATE_ATTR_AFTER_LAST - 1
3730};
3731
f527ad78
JB
3732/**
3733 * enum nl80211_initiator - Indicates the initiator of a reg domain request
3734 * @NL80211_REGDOM_SET_BY_CORE: Core queried CRDA for a dynamic world
3735 * regulatory domain.
3736 * @NL80211_REGDOM_SET_BY_USER: User asked the wireless core to set the
3737 * regulatory domain.
3738 * @NL80211_REGDOM_SET_BY_DRIVER: a wireless drivers has hinted to the
3739 * wireless core it thinks its knows the regulatory domain we should be in.
3740 * @NL80211_REGDOM_SET_BY_COUNTRY_IE: the wireless core has received an
3741 * 802.11 country information element with regulatory information it
fb660ce4
JB
3742 * thinks we should consider. cfg80211 only processes the country
3743 * code from the IE, and relies on the regulatory domain information
9b13eeba 3744 * structure passed by userspace (CRDA) from our wireless-regdb.
fb660ce4
JB
3745 * If a channel is enabled but the country code indicates it should
3746 * be disabled we disable the channel and re-enable it upon disassociation.
f527ad78
JB
3747 */
3748enum nl80211_reg_initiator {
3749 NL80211_REGDOM_SET_BY_CORE,
3750 NL80211_REGDOM_SET_BY_USER,
3751 NL80211_REGDOM_SET_BY_DRIVER,
3752 NL80211_REGDOM_SET_BY_COUNTRY_IE,
3753};
3754
3755/**
3756 * enum nl80211_reg_type - specifies the type of regulatory domain
3757 * @NL80211_REGDOM_TYPE_COUNTRY: the regulatory domain set is one that pertains
3758 * to a specific country. When this is set you can count on the
3759 * ISO / IEC 3166 alpha2 country code being valid.
3760 * @NL80211_REGDOM_TYPE_WORLD: the regulatory set domain is the world regulatory
3761 * domain.
3762 * @NL80211_REGDOM_TYPE_CUSTOM_WORLD: the regulatory domain set is a custom
3763 * driver specific world regulatory domain. These do not apply system-wide
3764 * and are only applicable to the individual devices which have requested
3765 * them to be applied.
3766 * @NL80211_REGDOM_TYPE_INTERSECTION: the regulatory domain set is the product
3767 * of an intersection between two regulatory domains -- the previously
3768 * set regulatory domain on the system and the last accepted regulatory
3769 * domain request to be processed.
3770 */
3771enum nl80211_reg_type {
3772 NL80211_REGDOM_TYPE_COUNTRY,
3773 NL80211_REGDOM_TYPE_WORLD,
3774 NL80211_REGDOM_TYPE_CUSTOM_WORLD,
3775 NL80211_REGDOM_TYPE_INTERSECTION,
3776};
3777
f408e01b
JB
3778/**
3779 * enum nl80211_reg_rule_attr - regulatory rule attributes
0c560ade 3780 * @__NL80211_REG_RULE_ATTR_INVALID: attribute number 0 is reserved
f408e01b
JB
3781 * @NL80211_ATTR_REG_RULE_FLAGS: a set of flags which specify additional
3782 * considerations for a given frequency range. These are the
3783 * &enum nl80211_reg_rule_flags.
3784 * @NL80211_ATTR_FREQ_RANGE_START: starting frequencry for the regulatory
3785 * rule in KHz. This is not a center of frequency but an actual regulatory
3786 * band edge.
3787 * @NL80211_ATTR_FREQ_RANGE_END: ending frequency for the regulatory rule
3788 * in KHz. This is not a center a frequency but an actual regulatory
3789 * band edge.
3790 * @NL80211_ATTR_FREQ_RANGE_MAX_BW: maximum allowed bandwidth for this
0c28d3d5 3791 * frequency range, in KHz.
f408e01b
JB
3792 * @NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN: the maximum allowed antenna gain
3793 * for a given frequency range. The value is in mBi (100 * dBi).
3794 * If you don't have one then don't send this.
3795 * @NL80211_ATTR_POWER_RULE_MAX_EIRP: the maximum allowed EIRP for
3796 * a given frequency range. The value is in mBm (100 * dBm).
0c28d3d5
JB
3797 * @NL80211_ATTR_DFS_CAC_TIME: DFS CAC time in milliseconds.
3798 * If not present or 0 default CAC time will be used.
0c560ade
JB
3799 * @NL80211_REG_RULE_ATTR_MAX: highest regulatory rule attribute number
3800 * currently defined
3801 * @__NL80211_REG_RULE_ATTR_AFTER_LAST: internal use
f408e01b
JB
3802 */
3803enum nl80211_reg_rule_attr {
3804 __NL80211_REG_RULE_ATTR_INVALID,
3805 NL80211_ATTR_REG_RULE_FLAGS,
3806
3807 NL80211_ATTR_FREQ_RANGE_START,
3808 NL80211_ATTR_FREQ_RANGE_END,
3809 NL80211_ATTR_FREQ_RANGE_MAX_BW,
3810
3811 NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN,
3812 NL80211_ATTR_POWER_RULE_MAX_EIRP,
3813
0c28d3d5
JB
3814 NL80211_ATTR_DFS_CAC_TIME,
3815
f408e01b
JB
3816 /* keep last */
3817 __NL80211_REG_RULE_ATTR_AFTER_LAST,
3818 NL80211_REG_RULE_ATTR_MAX = __NL80211_REG_RULE_ATTR_AFTER_LAST - 1
3819};
3820
fa1bdd00
JB
3821/**
3822 * enum nl80211_sched_scan_match_attr - scheduled scan match attributes
3823 * @__NL80211_SCHED_SCAN_MATCH_ATTR_INVALID: attribute number 0 is reserved
3824 * @NL80211_SCHED_SCAN_MATCH_ATTR_SSID: SSID to be used for matching,
da441d4f 3825 * only report BSS with matching SSID.
7e0a7c40 3826 * (This cannot be used together with BSSID.)
869982f5 3827 * @NL80211_SCHED_SCAN_MATCH_ATTR_RSSI: RSSI threshold (in dBm) for reporting a
da441d4f
JB
3828 * BSS in scan results. Filtering is turned off if not specified. Note that
3829 * if this attribute is in a match set of its own, then it is treated as
3830 * the default value for all matchsets with an SSID, rather than being a
3831 * matchset of its own without an RSSI filter. This is due to problems with
3832 * how this API was implemented in the past. Also, due to the same problem,
3833 * the only way to create a matchset with only an RSSI filter (with this
3834 * attribute) is if there's only a single matchset with the RSSI attribute.
8a9e0b30
JB
3835 * @NL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI: Flag indicating whether
3836 * %NL80211_SCHED_SCAN_MATCH_ATTR_RSSI to be used as absolute RSSI or
3837 * relative to current bss's RSSI.
3838 * @NL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST: When present the RSSI level for
3839 * BSS-es in the specified band is to be adjusted before doing
3840 * RSSI-based BSS selection. The attribute value is a packed structure
3841 * value as specified by &struct nl80211_bss_select_rssi_adjust.
7e0a7c40
JB
3842 * @NL80211_SCHED_SCAN_MATCH_ATTR_BSSID: BSSID to be used for matching
3843 * (this cannot be used together with SSID).
2c8026de
JB
3844 * @NL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI: Nested attribute that carries the
3845 * band specific minimum rssi thresholds for the bands defined in
3846 * enum nl80211_band. The minimum rssi threshold value(s32) specific to a
3847 * band shall be encapsulated in attribute with type value equals to one
3848 * of the NL80211_BAND_* defined in enum nl80211_band. For example, the
3849 * minimum rssi threshold value for 2.4GHZ band shall be encapsulated
3850 * within an attribute of type NL80211_BAND_2GHZ. And one or more of such
3851 * attributes will be nested within this attribute.
fa1bdd00
JB
3852 * @NL80211_SCHED_SCAN_MATCH_ATTR_MAX: highest scheduled scan filter
3853 * attribute number currently defined
3854 * @__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST: internal use
3855 */
3856enum nl80211_sched_scan_match_attr {
3857 __NL80211_SCHED_SCAN_MATCH_ATTR_INVALID,
3858
869982f5
JB
3859 NL80211_SCHED_SCAN_MATCH_ATTR_SSID,
3860 NL80211_SCHED_SCAN_MATCH_ATTR_RSSI,
8a9e0b30
JB
3861 NL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI,
3862 NL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST,
7e0a7c40 3863 NL80211_SCHED_SCAN_MATCH_ATTR_BSSID,
2c8026de 3864 NL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI,
fa1bdd00
JB
3865
3866 /* keep last */
3867 __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST,
3868 NL80211_SCHED_SCAN_MATCH_ATTR_MAX =
3869 __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST - 1
3870};
3871
869982f5
JB
3872/* only for backward compatibility */
3873#define NL80211_ATTR_SCHED_SCAN_MATCH_SSID NL80211_SCHED_SCAN_MATCH_ATTR_SSID
3874
f408e01b
JB
3875/**
3876 * enum nl80211_reg_rule_flags - regulatory rule flags
3877 *
3878 * @NL80211_RRF_NO_OFDM: OFDM modulation not allowed
3879 * @NL80211_RRF_NO_CCK: CCK modulation not allowed
3880 * @NL80211_RRF_NO_INDOOR: indoor operation not allowed
3881 * @NL80211_RRF_NO_OUTDOOR: outdoor operation not allowed
3882 * @NL80211_RRF_DFS: DFS support is required to be used
3883 * @NL80211_RRF_PTP_ONLY: this is only for Point To Point links
3884 * @NL80211_RRF_PTMP_ONLY: this is only for Point To Multi Point links
320cfae1
JB
3885 * @NL80211_RRF_NO_IR: no mechanisms that initiate radiation are allowed,
3886 * this includes probe requests or modes of operation that require
3887 * beaconing.
0c28d3d5
JB
3888 * @NL80211_RRF_AUTO_BW: maximum available bandwidth should be calculated
3889 * base on contiguous rules and wider channels will be allowed to cross
3890 * multiple contiguous/overlapping frequency ranges.
75b78ff8 3891 * @NL80211_RRF_IR_CONCURRENT: See %NL80211_FREQUENCY_ATTR_IR_CONCURRENT
b8820d2b
JB
3892 * @NL80211_RRF_NO_HT40MINUS: channels can't be used in HT40- operation
3893 * @NL80211_RRF_NO_HT40PLUS: channels can't be used in HT40+ operation
3894 * @NL80211_RRF_NO_80MHZ: 80MHz operation not allowed
3895 * @NL80211_RRF_NO_160MHZ: 160MHz operation not allowed
ba300c33 3896 * @NL80211_RRF_NO_HE: HE operation not allowed
f408e01b
JB
3897 */
3898enum nl80211_reg_rule_flags {
3899 NL80211_RRF_NO_OFDM = 1<<0,
3900 NL80211_RRF_NO_CCK = 1<<1,
3901 NL80211_RRF_NO_INDOOR = 1<<2,
3902 NL80211_RRF_NO_OUTDOOR = 1<<3,
3903 NL80211_RRF_DFS = 1<<4,
3904 NL80211_RRF_PTP_ONLY = 1<<5,
3905 NL80211_RRF_PTMP_ONLY = 1<<6,
320cfae1
JB
3906 NL80211_RRF_NO_IR = 1<<7,
3907 __NL80211_RRF_NO_IBSS = 1<<8,
0c28d3d5 3908 NL80211_RRF_AUTO_BW = 1<<11,
5c83c0e9 3909 NL80211_RRF_IR_CONCURRENT = 1<<12,
b8820d2b
JB
3910 NL80211_RRF_NO_HT40MINUS = 1<<13,
3911 NL80211_RRF_NO_HT40PLUS = 1<<14,
3912 NL80211_RRF_NO_80MHZ = 1<<15,
3913 NL80211_RRF_NO_160MHZ = 1<<16,
ba300c33 3914 NL80211_RRF_NO_HE = 1<<17,
f408e01b
JB
3915};
3916
320cfae1
JB
3917#define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
3918#define NL80211_RRF_NO_IBSS NL80211_RRF_NO_IR
3919#define NL80211_RRF_NO_IR NL80211_RRF_NO_IR
b8820d2b
JB
3920#define NL80211_RRF_NO_HT40 (NL80211_RRF_NO_HT40MINUS |\
3921 NL80211_RRF_NO_HT40PLUS)
5c83c0e9 3922#define NL80211_RRF_GO_CONCURRENT NL80211_RRF_IR_CONCURRENT
320cfae1
JB
3923
3924/* For backport compatibility with older userspace */
3925#define NL80211_RRF_NO_IR_ALL (NL80211_RRF_NO_IR | __NL80211_RRF_NO_IBSS)
3926
d0da8195
JB
3927/**
3928 * enum nl80211_dfs_regions - regulatory DFS regions
3929 *
3930 * @NL80211_DFS_UNSET: Country has no DFS master region specified
4a7e7218
JB
3931 * @NL80211_DFS_FCC: Country follows DFS master rules from FCC
3932 * @NL80211_DFS_ETSI: Country follows DFS master rules from ETSI
3933 * @NL80211_DFS_JP: Country follows DFS master rules from JP/MKK/Telec
d0da8195
JB
3934 */
3935enum nl80211_dfs_regions {
3936 NL80211_DFS_UNSET = 0,
3937 NL80211_DFS_FCC = 1,
3938 NL80211_DFS_ETSI = 2,
3939 NL80211_DFS_JP = 3,
3940};
3941
f1715630
JB
3942/**
3943 * enum nl80211_user_reg_hint_type - type of user regulatory hint
3944 *
3945 * @NL80211_USER_REG_HINT_USER: a user sent the hint. This is always
3946 * assumed if the attribute is not set.
3947 * @NL80211_USER_REG_HINT_CELL_BASE: the hint comes from a cellular
3948 * base station. Device drivers that have been tested to work
3949 * properly to support this type of hint can enable these hints
3950 * by setting the NL80211_FEATURE_CELL_BASE_REG_HINTS feature
3951 * capability on the struct wiphy. The wireless core will
3952 * ignore all cell base station hints until at least one device
3953 * present has been registered with the wireless core that
3954 * has listed NL80211_FEATURE_CELL_BASE_REG_HINTS as a
3955 * supported feature.
70f3fe99
JB
3956 * @NL80211_USER_REG_HINT_INDOOR: a user sent an hint indicating that the
3957 * platform is operating in an indoor environment.
f1715630
JB
3958 */
3959enum nl80211_user_reg_hint_type {
3960 NL80211_USER_REG_HINT_USER = 0,
3961 NL80211_USER_REG_HINT_CELL_BASE = 1,
70f3fe99 3962 NL80211_USER_REG_HINT_INDOOR = 2,
f1715630
JB
3963};
3964
dd2605a0
JB
3965/**
3966 * enum nl80211_survey_info - survey information
3967 *
3968 * These attribute types are used with %NL80211_ATTR_SURVEY_INFO
3969 * when getting information about a survey.
3970 *
3971 * @__NL80211_SURVEY_INFO_INVALID: attribute number 0 is reserved
3972 * @NL80211_SURVEY_INFO_FREQUENCY: center frequency of channel
3973 * @NL80211_SURVEY_INFO_NOISE: noise level of channel (u8, dBm)
1cbe4a02 3974 * @NL80211_SURVEY_INFO_IN_USE: channel is currently being used
a67b2d9c
JB
3975 * @NL80211_SURVEY_INFO_TIME: amount of time (in ms) that the radio
3976 * was turned on (on channel or globally)
3977 * @NL80211_SURVEY_INFO_TIME_BUSY: amount of the time the primary
fb660ce4 3978 * channel was sensed busy (either due to activity or energy detect)
a67b2d9c 3979 * @NL80211_SURVEY_INFO_TIME_EXT_BUSY: amount of time the extension
fb660ce4 3980 * channel was sensed busy
a67b2d9c
JB
3981 * @NL80211_SURVEY_INFO_TIME_RX: amount of time the radio spent
3982 * receiving data (on channel or globally)
3983 * @NL80211_SURVEY_INFO_TIME_TX: amount of time the radio spent
3984 * transmitting data (on channel or globally)
3985 * @NL80211_SURVEY_INFO_TIME_SCAN: time the radio spent for scan
3986 * (on this channel or globally)
a574be4b 3987 * @NL80211_SURVEY_INFO_PAD: attribute used for padding for 64-bit alignment
0c1a26b5
JB
3988 * @NL80211_SURVEY_INFO_TIME_BSS_RX: amount of time the radio spent
3989 * receiving frames destined to the local BSS
0c560ade
JB
3990 * @NL80211_SURVEY_INFO_MAX: highest survey info attribute number
3991 * currently defined
3992 * @__NL80211_SURVEY_INFO_AFTER_LAST: internal use
dd2605a0
JB
3993 */
3994enum nl80211_survey_info {
3995 __NL80211_SURVEY_INFO_INVALID,
3996 NL80211_SURVEY_INFO_FREQUENCY,
3997 NL80211_SURVEY_INFO_NOISE,
1cbe4a02 3998 NL80211_SURVEY_INFO_IN_USE,
a67b2d9c
JB
3999 NL80211_SURVEY_INFO_TIME,
4000 NL80211_SURVEY_INFO_TIME_BUSY,
4001 NL80211_SURVEY_INFO_TIME_EXT_BUSY,
4002 NL80211_SURVEY_INFO_TIME_RX,
4003 NL80211_SURVEY_INFO_TIME_TX,
4004 NL80211_SURVEY_INFO_TIME_SCAN,
a574be4b 4005 NL80211_SURVEY_INFO_PAD,
0c1a26b5 4006 NL80211_SURVEY_INFO_TIME_BSS_RX,
dd2605a0
JB
4007
4008 /* keep last */
4009 __NL80211_SURVEY_INFO_AFTER_LAST,
4010 NL80211_SURVEY_INFO_MAX = __NL80211_SURVEY_INFO_AFTER_LAST - 1
4011};
4012
a67b2d9c
JB
4013/* keep old names for compatibility */
4014#define NL80211_SURVEY_INFO_CHANNEL_TIME NL80211_SURVEY_INFO_TIME
4015#define NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY NL80211_SURVEY_INFO_TIME_BUSY
4016#define NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY NL80211_SURVEY_INFO_TIME_EXT_BUSY
4017#define NL80211_SURVEY_INFO_CHANNEL_TIME_RX NL80211_SURVEY_INFO_TIME_RX
4018#define NL80211_SURVEY_INFO_CHANNEL_TIME_TX NL80211_SURVEY_INFO_TIME_TX
4019
f408e01b
JB
4020/**
4021 * enum nl80211_mntr_flags - monitor configuration flags
4022 *
4023 * Monitor configuration flags.
4024 *
4025 * @__NL80211_MNTR_FLAG_INVALID: reserved
4026 *
4027 * @NL80211_MNTR_FLAG_FCSFAIL: pass frames with bad FCS
4028 * @NL80211_MNTR_FLAG_PLCPFAIL: pass frames with bad PLCP
4029 * @NL80211_MNTR_FLAG_CONTROL: pass control frames
4030 * @NL80211_MNTR_FLAG_OTHER_BSS: disable BSSID filtering
4031 * @NL80211_MNTR_FLAG_COOK_FRAMES: report frames after processing.
4032 * overrides all other flags.
0fd08e2e
JB
4033 * @NL80211_MNTR_FLAG_ACTIVE: use the configured MAC address
4034 * and ACK incoming unicast packets.
f408e01b
JB
4035 *
4036 * @__NL80211_MNTR_FLAG_AFTER_LAST: internal use
4037 * @NL80211_MNTR_FLAG_MAX: highest possible monitor flag
4038 */
4039enum nl80211_mntr_flags {
4040 __NL80211_MNTR_FLAG_INVALID,
4041 NL80211_MNTR_FLAG_FCSFAIL,
4042 NL80211_MNTR_FLAG_PLCPFAIL,
4043 NL80211_MNTR_FLAG_CONTROL,
4044 NL80211_MNTR_FLAG_OTHER_BSS,
4045 NL80211_MNTR_FLAG_COOK_FRAMES,
0fd08e2e 4046 NL80211_MNTR_FLAG_ACTIVE,
f408e01b
JB
4047
4048 /* keep last */
4049 __NL80211_MNTR_FLAG_AFTER_LAST,
4050 NL80211_MNTR_FLAG_MAX = __NL80211_MNTR_FLAG_AFTER_LAST - 1
4051};
4052
6ccd4979
JB
4053/**
4054 * enum nl80211_mesh_power_mode - mesh power save modes
4055 *
4056 * @NL80211_MESH_POWER_UNKNOWN: The mesh power mode of the mesh STA is
4057 * not known or has not been set yet.
4058 * @NL80211_MESH_POWER_ACTIVE: Active mesh power mode. The mesh STA is
4059 * in Awake state all the time.
4060 * @NL80211_MESH_POWER_LIGHT_SLEEP: Light sleep mode. The mesh STA will
4061 * alternate between Active and Doze states, but will wake up for
4062 * neighbor's beacons.
4063 * @NL80211_MESH_POWER_DEEP_SLEEP: Deep sleep mode. The mesh STA will
4064 * alternate between Active and Doze states, but may not wake up
4065 * for neighbor's beacons.
4066 *
4067 * @__NL80211_MESH_POWER_AFTER_LAST - internal use
4068 * @NL80211_MESH_POWER_MAX - highest possible power save level
4069 */
4070
4071enum nl80211_mesh_power_mode {
4072 NL80211_MESH_POWER_UNKNOWN,
4073 NL80211_MESH_POWER_ACTIVE,
4074 NL80211_MESH_POWER_LIGHT_SLEEP,
4075 NL80211_MESH_POWER_DEEP_SLEEP,
4076
4077 __NL80211_MESH_POWER_AFTER_LAST,
4078 NL80211_MESH_POWER_MAX = __NL80211_MESH_POWER_AFTER_LAST - 1
4079};
4080
46c1ad1f 4081/**
4082 * enum nl80211_meshconf_params - mesh configuration parameters
4083 *
15d71c1e
JB
4084 * Mesh configuration parameters. These can be changed while the mesh is
4085 * active.
46c1ad1f 4086 *
4087 * @__NL80211_MESHCONF_INVALID: internal use
4088 *
4089 * @NL80211_MESHCONF_RETRY_TIMEOUT: specifies the initial retry timeout in
869982f5 4090 * millisecond units, used by the Peer Link Open message
46c1ad1f 4091 *
9b13eeba 4092 * @NL80211_MESHCONF_CONFIRM_TIMEOUT: specifies the initial confirm timeout, in
869982f5 4093 * millisecond units, used by the peer link management to close a peer link
46c1ad1f 4094 *
4095 * @NL80211_MESHCONF_HOLDING_TIMEOUT: specifies the holding timeout, in
869982f5 4096 * millisecond units
46c1ad1f 4097 *
4098 * @NL80211_MESHCONF_MAX_PEER_LINKS: maximum number of peer links allowed
869982f5 4099 * on this mesh interface
46c1ad1f 4100 *
4101 * @NL80211_MESHCONF_MAX_RETRIES: specifies the maximum number of peer link
869982f5
JB
4102 * open retries that can be sent to establish a new peer link instance in a
4103 * mesh
46c1ad1f 4104 *
4105 * @NL80211_MESHCONF_TTL: specifies the value of TTL field set at a source mesh
869982f5 4106 * point.
46c1ad1f 4107 *
ac38f8ad
JB
4108 * @NL80211_MESHCONF_AUTO_OPEN_PLINKS: whether we should automatically open
4109 * peer links when we detect compatible mesh peers. Disabled if
4110 * @NL80211_MESH_SETUP_USERSPACE_MPM or @NL80211_MESH_SETUP_USERSPACE_AMPE are
4111 * set.
46c1ad1f 4112 *
4113 * @NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES: the number of action frames
869982f5
JB
4114 * containing a PREQ that an MP can send to a particular destination (path
4115 * target)
46c1ad1f 4116 *
4117 * @NL80211_MESHCONF_PATH_REFRESH_TIME: how frequently to refresh mesh paths
869982f5 4118 * (in milliseconds)
46c1ad1f 4119 *
4120 * @NL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT: minimum length of time to wait
869982f5 4121 * until giving up on a path discovery (in milliseconds)
46c1ad1f 4122 *
4123 * @NL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT: The time (in TUs) for which mesh
869982f5
JB
4124 * points receiving a PREQ shall consider the forwarding information from
4125 * the root to be valid. (TU = time unit)
46c1ad1f 4126 *
4127 * @NL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL: The minimum interval of time (in
869982f5
JB
4128 * TUs) during which an MP can send only one action frame containing a PREQ
4129 * reference element
46c1ad1f 4130 *
4131 * @NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME: The interval of time (in TUs)
869982f5
JB
4132 * that it takes for an HWMP information element to propagate across the
4133 * mesh
46c1ad1f 4134 *
9b13eeba 4135 * @NL80211_MESHCONF_HWMP_ROOTMODE: whether root mode is enabled or not
dd2605a0 4136 *
15d71c1e 4137 * @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a
869982f5 4138 * source mesh point for path selection elements.
15d71c1e 4139 *
bea987cd 4140 * @NL80211_MESHCONF_HWMP_RANN_INTERVAL: The interval of time (in TUs) between
869982f5 4141 * root announcements are transmitted.
bea987cd
JB
4142 *
4143 * @NL80211_MESHCONF_GATE_ANNOUNCEMENTS: Advertise that this mesh station has
869982f5
JB
4144 * access to a broader network beyond the MBSS. This is done via Root
4145 * Announcement frames.
bea987cd 4146 *
564eb405 4147 * @NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL: The minimum interval of time (in
869982f5
JB
4148 * TUs) during which a mesh STA can send only one Action frame containing a
4149 * PERR element.
564eb405 4150 *
d456ac60 4151 * @NL80211_MESHCONF_FORWARDING: set Mesh STA as forwarding or non-forwarding
869982f5 4152 * or forwarding entity (default is TRUE - forwarding entity)
d456ac60 4153 *
b78ae2b1 4154 * @NL80211_MESHCONF_RSSI_THRESHOLD: RSSI threshold in dBm. This specifies the
869982f5
JB
4155 * threshold for average signal strength of candidate station to establish
4156 * a peer link.
46c1ad1f 4157 *
b0a3b5e3 4158 * @NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR: maximum number of neighbors
869982f5
JB
4159 * to synchronize to for 11s default synchronization method
4160 * (see 11C.12.2.2)
b0a3b5e3 4161 *
4a7e7218
JB
4162 * @NL80211_MESHCONF_HT_OPMODE: set mesh HT protection mode.
4163 *
869982f5
JB
4164 * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute
4165 *
4166 * @NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT: The time (in TUs) for
4167 * which mesh STAs receiving a proactive PREQ shall consider the forwarding
4168 * information to the root mesh STA to be valid.
4169 *
4170 * @NL80211_MESHCONF_HWMP_ROOT_INTERVAL: The interval of time (in TUs) between
4171 * proactive PREQs are transmitted.
4172 *
4173 * @NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL: The minimum interval of time
4174 * (in TUs) during which a mesh STA can send only one Action frame
4175 * containing a PREQ element for root path confirmation.
4176 *
6ccd4979
JB
4177 * @NL80211_MESHCONF_POWER_MODE: Default mesh power mode for new peer links.
4178 * type &enum nl80211_mesh_power_mode (u32)
4179 *
4180 * @NL80211_MESHCONF_AWAKE_WINDOW: awake window duration (in TUs)
4181 *
0fd08e2e
JB
4182 * @NL80211_MESHCONF_PLINK_TIMEOUT: If no tx activity is seen from a STA we've
4183 * established peering with for longer than this time (in seconds), then
a9e38041
JB
4184 * remove it from the STA's list of peers. You may set this to 0 to disable
4185 * the removal of the STA. Default is 30 minutes.
0fd08e2e 4186 *
806bb9ac
JB
4187 * @NL80211_MESHCONF_CONNECTED_TO_GATE: If set to true then this mesh STA
4188 * will advertise that it is connected to a gate in the mesh formation
4189 * field. If left unset then the mesh formation field will only
4190 * advertise such if there is an active root mesh path.
4191 *
46c1ad1f 4192 * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use
4193 */
4194enum nl80211_meshconf_params {
4195 __NL80211_MESHCONF_INVALID,
4196 NL80211_MESHCONF_RETRY_TIMEOUT,
4197 NL80211_MESHCONF_CONFIRM_TIMEOUT,
4198 NL80211_MESHCONF_HOLDING_TIMEOUT,
4199 NL80211_MESHCONF_MAX_PEER_LINKS,
4200 NL80211_MESHCONF_MAX_RETRIES,
4201 NL80211_MESHCONF_TTL,
4202 NL80211_MESHCONF_AUTO_OPEN_PLINKS,
4203 NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES,
4204 NL80211_MESHCONF_PATH_REFRESH_TIME,
4205 NL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT,
4206 NL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT,
4207 NL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL,
4208 NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME,
dd2605a0 4209 NL80211_MESHCONF_HWMP_ROOTMODE,
fb660ce4 4210 NL80211_MESHCONF_ELEMENT_TTL,
bea987cd
JB
4211 NL80211_MESHCONF_HWMP_RANN_INTERVAL,
4212 NL80211_MESHCONF_GATE_ANNOUNCEMENTS,
564eb405 4213 NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL,
d456ac60 4214 NL80211_MESHCONF_FORWARDING,
b78ae2b1 4215 NL80211_MESHCONF_RSSI_THRESHOLD,
b0a3b5e3 4216 NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR,
4a7e7218 4217 NL80211_MESHCONF_HT_OPMODE,
869982f5
JB
4218 NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT,
4219 NL80211_MESHCONF_HWMP_ROOT_INTERVAL,
4220 NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL,
6ccd4979
JB
4221 NL80211_MESHCONF_POWER_MODE,
4222 NL80211_MESHCONF_AWAKE_WINDOW,
0fd08e2e 4223 NL80211_MESHCONF_PLINK_TIMEOUT,
806bb9ac 4224 NL80211_MESHCONF_CONNECTED_TO_GATE,
3dd781cc
JB
4225
4226 /* keep last */
46c1ad1f 4227 __NL80211_MESHCONF_ATTR_AFTER_LAST,
4228 NL80211_MESHCONF_ATTR_MAX = __NL80211_MESHCONF_ATTR_AFTER_LAST - 1
3dd781cc
JB
4229};
4230
15d71c1e
JB
4231/**
4232 * enum nl80211_mesh_setup_params - mesh setup parameters
4233 *
4234 * Mesh setup parameters. These are used to start/join a mesh and cannot be
4235 * changed while the mesh is active.
4236 *
4237 * @__NL80211_MESH_SETUP_INVALID: Internal use
4238 *
4239 * @NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL: Enable this option to use a
869982f5
JB
4240 * vendor specific path selection algorithm or disable it to use the
4241 * default HWMP.
15d71c1e
JB
4242 *
4243 * @NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC: Enable this option to use a
869982f5
JB
4244 * vendor specific path metric or disable it to use the default Airtime
4245 * metric.
15d71c1e 4246 *
9b13eeba 4247 * @NL80211_MESH_SETUP_IE: Information elements for this mesh, for instance, a
869982f5
JB
4248 * robust security network ie, or a vendor specific information element
4249 * that vendors will use to identify the path selection methods and
4250 * metrics in use.
9b13eeba
JB
4251 *
4252 * @NL80211_MESH_SETUP_USERSPACE_AUTH: Enable this option if an authentication
869982f5 4253 * daemon will be authenticating mesh candidates.
15d71c1e 4254 *
a3edacac 4255 * @NL80211_MESH_SETUP_USERSPACE_AMPE: Enable this option if an authentication
869982f5
JB
4256 * daemon will be securing peer link frames. AMPE is a secured version of
4257 * Mesh Peering Management (MPM) and is implemented with the assistance of
4258 * a userspace daemon. When this flag is set, the kernel will send peer
4259 * management frames to a userspace daemon that will implement AMPE
4260 * functionality (security capabilities selection, key confirmation, and
4261 * key management). When the flag is unset (default), the kernel can
4262 * autonomously complete (unsecured) mesh peering without the need of a
4263 * userspace daemon.
b0a3b5e3
JB
4264 *
4265 * @NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC: Enable this option to use a
869982f5
JB
4266 * vendor specific synchronization method or disable it to use the default
4267 * neighbor offset synchronization
4268 *
ac38f8ad
JB
4269 * @NL80211_MESH_SETUP_USERSPACE_MPM: Enable this option if userspace will
4270 * implement an MPM which handles peer allocation and state.
4271 *
0fd08e2e
JB
4272 * @NL80211_MESH_SETUP_AUTH_PROTOCOL: Inform the kernel of the authentication
4273 * method (u8, as defined in IEEE 8.4.2.100.6, e.g. 0x1 for SAE).
4274 * Default is no authentication method required.
4275 *
869982f5 4276 * @NL80211_MESH_SETUP_ATTR_MAX: highest possible mesh setup attribute number
b0a3b5e3 4277 *
15d71c1e
JB
4278 * @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use
4279 */
4280enum nl80211_mesh_setup_params {
4281 __NL80211_MESH_SETUP_INVALID,
4282 NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL,
4283 NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC,
9b13eeba
JB
4284 NL80211_MESH_SETUP_IE,
4285 NL80211_MESH_SETUP_USERSPACE_AUTH,
a3edacac 4286 NL80211_MESH_SETUP_USERSPACE_AMPE,
b0a3b5e3 4287 NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC,
ac38f8ad 4288 NL80211_MESH_SETUP_USERSPACE_MPM,
0fd08e2e 4289 NL80211_MESH_SETUP_AUTH_PROTOCOL,
15d71c1e
JB
4290
4291 /* keep last */
4292 __NL80211_MESH_SETUP_ATTR_AFTER_LAST,
4293 NL80211_MESH_SETUP_ATTR_MAX = __NL80211_MESH_SETUP_ATTR_AFTER_LAST - 1
4294};
4295
767eb647
JB
4296/**
4297 * enum nl80211_txq_attr - TX queue parameter attributes
4298 * @__NL80211_TXQ_ATTR_INVALID: Attribute number 0 is reserved
b0a3b5e3 4299 * @NL80211_TXQ_ATTR_AC: AC identifier (NL80211_AC_*)
767eb647
JB
4300 * @NL80211_TXQ_ATTR_TXOP: Maximum burst time in units of 32 usecs, 0 meaning
4301 * disabled
4302 * @NL80211_TXQ_ATTR_CWMIN: Minimum contention window [a value of the form
4303 * 2^n-1 in the range 1..32767]
4304 * @NL80211_TXQ_ATTR_CWMAX: Maximum contention window [a value of the form
4305 * 2^n-1 in the range 1..32767]
4306 * @NL80211_TXQ_ATTR_AIFS: Arbitration interframe space [0..255]
4307 * @__NL80211_TXQ_ATTR_AFTER_LAST: Internal
4308 * @NL80211_TXQ_ATTR_MAX: Maximum TXQ attribute number
4309 */
4310enum nl80211_txq_attr {
4311 __NL80211_TXQ_ATTR_INVALID,
b0a3b5e3 4312 NL80211_TXQ_ATTR_AC,
767eb647
JB
4313 NL80211_TXQ_ATTR_TXOP,
4314 NL80211_TXQ_ATTR_CWMIN,
4315 NL80211_TXQ_ATTR_CWMAX,
4316 NL80211_TXQ_ATTR_AIFS,
4317
4318 /* keep last */
4319 __NL80211_TXQ_ATTR_AFTER_LAST,
4320 NL80211_TXQ_ATTR_MAX = __NL80211_TXQ_ATTR_AFTER_LAST - 1
4321};
4322
b0a3b5e3
JB
4323enum nl80211_ac {
4324 NL80211_AC_VO,
4325 NL80211_AC_VI,
4326 NL80211_AC_BE,
4327 NL80211_AC_BK,
4328 NL80211_NUM_ACS
767eb647
JB
4329};
4330
b0a3b5e3
JB
4331/* backward compat */
4332#define NL80211_TXQ_ATTR_QUEUE NL80211_TXQ_ATTR_AC
4333#define NL80211_TXQ_Q_VO NL80211_AC_VO
4334#define NL80211_TXQ_Q_VI NL80211_AC_VI
4335#define NL80211_TXQ_Q_BE NL80211_AC_BE
4336#define NL80211_TXQ_Q_BK NL80211_AC_BK
4337
068ff94a
JB
4338/**
4339 * enum nl80211_channel_type - channel type
4340 * @NL80211_CHAN_NO_HT: 20 MHz, non-HT channel
4341 * @NL80211_CHAN_HT20: 20 MHz HT channel
4342 * @NL80211_CHAN_HT40MINUS: HT40 channel, secondary channel
4343 * below the control channel
4344 * @NL80211_CHAN_HT40PLUS: HT40 channel, secondary channel
4345 * above the control channel
4346 */
68632dc7
JB
4347enum nl80211_channel_type {
4348 NL80211_CHAN_NO_HT,
4349 NL80211_CHAN_HT20,
4350 NL80211_CHAN_HT40MINUS,
4351 NL80211_CHAN_HT40PLUS
767eb647 4352};
41759e47 4353
2c8026de
JB
4354/**
4355 * enum nl80211_key_mode - Key mode
4356 *
4357 * @NL80211_KEY_RX_TX: (Default)
4358 * Key can be used for Rx and Tx immediately
4359 *
4360 * The following modes can only be selected for unicast keys and when the
4361 * driver supports @NL80211_EXT_FEATURE_EXT_KEY_ID:
4362 *
4363 * @NL80211_KEY_NO_TX: Only allowed in combination with @NL80211_CMD_NEW_KEY:
4364 * Unicast key can only be used for Rx, Tx not allowed, yet
4365 * @NL80211_KEY_SET_TX: Only allowed in combination with @NL80211_CMD_SET_KEY:
4366 * The unicast key identified by idx and mac is cleared for Tx and becomes
4367 * the preferred Tx key for the station.
4368 */
4369enum nl80211_key_mode {
4370 NL80211_KEY_RX_TX,
4371 NL80211_KEY_NO_TX,
4372 NL80211_KEY_SET_TX
4373};
4374
068ff94a
JB
4375/**
4376 * enum nl80211_chan_width - channel width definitions
4377 *
4378 * These values are used with the %NL80211_ATTR_CHANNEL_WIDTH
4379 * attribute.
4380 *
4381 * @NL80211_CHAN_WIDTH_20_NOHT: 20 MHz, non-HT channel
4382 * @NL80211_CHAN_WIDTH_20: 20 MHz HT channel
4383 * @NL80211_CHAN_WIDTH_40: 40 MHz channel, the %NL80211_ATTR_CENTER_FREQ1
4384 * attribute must be provided as well
4385 * @NL80211_CHAN_WIDTH_80: 80 MHz channel, the %NL80211_ATTR_CENTER_FREQ1
4386 * attribute must be provided as well
4387 * @NL80211_CHAN_WIDTH_80P80: 80+80 MHz channel, the %NL80211_ATTR_CENTER_FREQ1
4388 * and %NL80211_ATTR_CENTER_FREQ2 attributes must be provided as well
4389 * @NL80211_CHAN_WIDTH_160: 160 MHz channel, the %NL80211_ATTR_CENTER_FREQ1
4390 * attribute must be provided as well
0fd08e2e
JB
4391 * @NL80211_CHAN_WIDTH_5: 5 MHz OFDM channel
4392 * @NL80211_CHAN_WIDTH_10: 10 MHz OFDM channel
068ff94a
JB
4393 */
4394enum nl80211_chan_width {
4395 NL80211_CHAN_WIDTH_20_NOHT,
4396 NL80211_CHAN_WIDTH_20,
4397 NL80211_CHAN_WIDTH_40,
4398 NL80211_CHAN_WIDTH_80,
4399 NL80211_CHAN_WIDTH_80P80,
4400 NL80211_CHAN_WIDTH_160,
0fd08e2e
JB
4401 NL80211_CHAN_WIDTH_5,
4402 NL80211_CHAN_WIDTH_10,
068ff94a
JB
4403};
4404
320cfae1
JB
4405/**
4406 * enum nl80211_bss_scan_width - control channel width for a BSS
4407 *
4408 * These values are used with the %NL80211_BSS_CHAN_WIDTH attribute.
4409 *
4410 * @NL80211_BSS_CHAN_WIDTH_20: control channel is 20 MHz wide or compatible
4411 * @NL80211_BSS_CHAN_WIDTH_10: control channel is 10 MHz wide
4412 * @NL80211_BSS_CHAN_WIDTH_5: control channel is 5 MHz wide
4413 */
4414enum nl80211_bss_scan_width {
4415 NL80211_BSS_CHAN_WIDTH_20,
4416 NL80211_BSS_CHAN_WIDTH_10,
4417 NL80211_BSS_CHAN_WIDTH_5,
4418};
4419
f2e17e1f
JB
4420/**
4421 * enum nl80211_bss - netlink attributes for a BSS
4422 *
4423 * @__NL80211_BSS_INVALID: invalid
0c560ade 4424 * @NL80211_BSS_BSSID: BSSID of the BSS (6 octets)
f2e17e1f
JB
4425 * @NL80211_BSS_FREQUENCY: frequency in MHz (u32)
4426 * @NL80211_BSS_TSF: TSF of the received probe response/beacon (u64)
034a7d2d
JB
4427 * (if @NL80211_BSS_PRESP_DATA is present then this is known to be
4428 * from a probe response, otherwise it may be from the same beacon
4429 * that the NL80211_BSS_BEACON_TSF will be from)
f2e17e1f
JB
4430 * @NL80211_BSS_BEACON_INTERVAL: beacon interval of the (I)BSS (u16)
4431 * @NL80211_BSS_CAPABILITY: capability field (CPU order, u16)
4432 * @NL80211_BSS_INFORMATION_ELEMENTS: binary attribute containing the
d4350a3e 4433 * raw information elements from the probe response/beacon (bin);
034a7d2d
JB
4434 * if the %NL80211_BSS_BEACON_IES attribute is present and the data is
4435 * different then the IEs here are from a Probe Response frame; otherwise
4436 * they are from a Beacon frame.
d4350a3e
JB
4437 * However, if the driver does not indicate the source of the IEs, these
4438 * IEs may be from either frame subtype.
034a7d2d
JB
4439 * If present, the @NL80211_BSS_PRESP_DATA attribute indicates that the
4440 * data here is known to be from a probe response, without any heuristics.
f2e17e1f
JB
4441 * @NL80211_BSS_SIGNAL_MBM: signal strength of probe response/beacon
4442 * in mBm (100 * dBm) (s32)
4443 * @NL80211_BSS_SIGNAL_UNSPEC: signal strength of the probe response/beacon
4444 * in unspecified units, scaled to 0..100 (u8)
a56117a6 4445 * @NL80211_BSS_STATUS: status, if this BSS is "used"
e17cb20c 4446 * @NL80211_BSS_SEEN_MS_AGO: age of this BSS entry in ms
d4350a3e
JB
4447 * @NL80211_BSS_BEACON_IES: binary attribute containing the raw information
4448 * elements from a Beacon frame (bin); not present if no Beacon frame has
4449 * yet been received
320cfae1
JB
4450 * @NL80211_BSS_CHAN_WIDTH: channel width of the control channel
4451 * (u32, enum nl80211_bss_scan_width)
034a7d2d
JB
4452 * @NL80211_BSS_BEACON_TSF: TSF of the last received beacon (u64)
4453 * (not present if no beacon frame has been received yet)
4454 * @NL80211_BSS_PRESP_DATA: the data in @NL80211_BSS_INFORMATION_ELEMENTS and
4455 * @NL80211_BSS_TSF is known to be from a probe response (flag attribute)
478438c0
JB
4456 * @NL80211_BSS_LAST_SEEN_BOOTTIME: CLOCK_BOOTTIME timestamp when this entry
4457 * was last updated by a received frame. The value is expected to be
4458 * accurate to about 10ms. (u64, nanoseconds)
a574be4b
JB
4459 * @NL80211_BSS_PAD: attribute used for padding for 64-bit alignment
4460 * @NL80211_BSS_PARENT_TSF: the time at the start of reception of the first
4461 * octet of the timestamp field of the last beacon/probe received for
4462 * this BSS. The time is the TSF of the BSS specified by
4463 * @NL80211_BSS_PARENT_BSSID. (u64).
4464 * @NL80211_BSS_PARENT_BSSID: the BSS according to which @NL80211_BSS_PARENT_TSF
4465 * is set.
45de0607
JB
4466 * @NL80211_BSS_CHAIN_SIGNAL: per-chain signal strength of last BSS update.
4467 * Contains a nested array of signal strength attributes (u8, dBm),
4468 * using the nesting index as the antenna number.
f2e17e1f
JB
4469 * @__NL80211_BSS_AFTER_LAST: internal
4470 * @NL80211_BSS_MAX: highest BSS attribute
4471 */
3dd781cc
JB
4472enum nl80211_bss {
4473 __NL80211_BSS_INVALID,
4474 NL80211_BSS_BSSID,
4475 NL80211_BSS_FREQUENCY,
4476 NL80211_BSS_TSF,
4477 NL80211_BSS_BEACON_INTERVAL,
4478 NL80211_BSS_CAPABILITY,
4479 NL80211_BSS_INFORMATION_ELEMENTS,
f2e17e1f
JB
4480 NL80211_BSS_SIGNAL_MBM,
4481 NL80211_BSS_SIGNAL_UNSPEC,
a56117a6 4482 NL80211_BSS_STATUS,
e17cb20c 4483 NL80211_BSS_SEEN_MS_AGO,
d4350a3e 4484 NL80211_BSS_BEACON_IES,
320cfae1 4485 NL80211_BSS_CHAN_WIDTH,
034a7d2d
JB
4486 NL80211_BSS_BEACON_TSF,
4487 NL80211_BSS_PRESP_DATA,
478438c0 4488 NL80211_BSS_LAST_SEEN_BOOTTIME,
a574be4b
JB
4489 NL80211_BSS_PAD,
4490 NL80211_BSS_PARENT_TSF,
4491 NL80211_BSS_PARENT_BSSID,
45de0607 4492 NL80211_BSS_CHAIN_SIGNAL,
3dd781cc
JB
4493
4494 /* keep last */
4495 __NL80211_BSS_AFTER_LAST,
4496 NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1
4497};
4498
a56117a6
JB
4499/**
4500 * enum nl80211_bss_status - BSS "status"
0c560ade 4501 * @NL80211_BSS_STATUS_AUTHENTICATED: Authenticated with this BSS.
a67b2d9c
JB
4502 * Note that this is no longer used since cfg80211 no longer
4503 * keeps track of whether or not authentication was done with
4504 * a given BSS.
0c560ade
JB
4505 * @NL80211_BSS_STATUS_ASSOCIATED: Associated with this BSS.
4506 * @NL80211_BSS_STATUS_IBSS_JOINED: Joined to this IBSS.
4507 *
4508 * The BSS status is a BSS attribute in scan dumps, which
4509 * indicates the status the interface has wrt. this BSS.
a56117a6
JB
4510 */
4511enum nl80211_bss_status {
4512 NL80211_BSS_STATUS_AUTHENTICATED,
4513 NL80211_BSS_STATUS_ASSOCIATED,
4514 NL80211_BSS_STATUS_IBSS_JOINED,
4515};
4516
28566668
JB
4517/**
4518 * enum nl80211_auth_type - AuthenticationType
4519 *
4520 * @NL80211_AUTHTYPE_OPEN_SYSTEM: Open System authentication
4521 * @NL80211_AUTHTYPE_SHARED_KEY: Shared Key authentication (WEP only)
4522 * @NL80211_AUTHTYPE_FT: Fast BSS Transition (IEEE 802.11r)
4523 * @NL80211_AUTHTYPE_NETWORK_EAP: Network EAP (some Cisco APs and mainly LEAP)
a614d505 4524 * @NL80211_AUTHTYPE_SAE: Simultaneous authentication of equals
8a9e0b30
JB
4525 * @NL80211_AUTHTYPE_FILS_SK: Fast Initial Link Setup shared key
4526 * @NL80211_AUTHTYPE_FILS_SK_PFS: Fast Initial Link Setup shared key with PFS
4527 * @NL80211_AUTHTYPE_FILS_PK: Fast Initial Link Setup public key
a13f19e4
JB
4528 * @__NL80211_AUTHTYPE_NUM: internal
4529 * @NL80211_AUTHTYPE_MAX: maximum valid auth algorithm
4530 * @NL80211_AUTHTYPE_AUTOMATIC: determine automatically (if necessary by
4531 * trying multiple times); this is invalid in netlink -- leave out
4532 * the attribute for this on CONNECT commands.
28566668
JB
4533 */
4534enum nl80211_auth_type {
4535 NL80211_AUTHTYPE_OPEN_SYSTEM,
4536 NL80211_AUTHTYPE_SHARED_KEY,
4537 NL80211_AUTHTYPE_FT,
4538 NL80211_AUTHTYPE_NETWORK_EAP,
a614d505 4539 NL80211_AUTHTYPE_SAE,
8a9e0b30
JB
4540 NL80211_AUTHTYPE_FILS_SK,
4541 NL80211_AUTHTYPE_FILS_SK_PFS,
4542 NL80211_AUTHTYPE_FILS_PK,
a13f19e4
JB
4543
4544 /* keep last */
4545 __NL80211_AUTHTYPE_NUM,
4546 NL80211_AUTHTYPE_MAX = __NL80211_AUTHTYPE_NUM - 1,
4547 NL80211_AUTHTYPE_AUTOMATIC
28566668
JB
4548};
4549
4550/**
4551 * enum nl80211_key_type - Key Type
4552 * @NL80211_KEYTYPE_GROUP: Group (broadcast/multicast) key
4553 * @NL80211_KEYTYPE_PAIRWISE: Pairwise (unicast/individual) key
4554 * @NL80211_KEYTYPE_PEERKEY: PeerKey (DLS)
1cbe4a02 4555 * @NUM_NL80211_KEYTYPES: number of defined key types
28566668
JB
4556 */
4557enum nl80211_key_type {
4558 NL80211_KEYTYPE_GROUP,
4559 NL80211_KEYTYPE_PAIRWISE,
4560 NL80211_KEYTYPE_PEERKEY,
1cbe4a02
JB
4561
4562 NUM_NL80211_KEYTYPES
28566668
JB
4563};
4564
52868516
JB
4565/**
4566 * enum nl80211_mfp - Management frame protection state
4567 * @NL80211_MFP_NO: Management frame protection not used
4568 * @NL80211_MFP_REQUIRED: Management frame protection required
7e0a7c40 4569 * @NL80211_MFP_OPTIONAL: Management frame protection is optional
52868516
JB
4570 */
4571enum nl80211_mfp {
4572 NL80211_MFP_NO,
4573 NL80211_MFP_REQUIRED,
7e0a7c40 4574 NL80211_MFP_OPTIONAL,
52868516
JB
4575};
4576
a13f19e4
JB
4577enum nl80211_wpa_versions {
4578 NL80211_WPA_VERSION_1 = 1 << 0,
4579 NL80211_WPA_VERSION_2 = 1 << 1,
a0c07e4f 4580 NL80211_WPA_VERSION_3 = 1 << 2,
a13f19e4
JB
4581};
4582
15d71c1e
JB
4583/**
4584 * enum nl80211_key_default_types - key default types
4585 * @__NL80211_KEY_DEFAULT_TYPE_INVALID: invalid
4586 * @NL80211_KEY_DEFAULT_TYPE_UNICAST: key should be used as default
4587 * unicast key
4588 * @NL80211_KEY_DEFAULT_TYPE_MULTICAST: key should be used as default
4589 * multicast key
4590 * @NUM_NL80211_KEY_DEFAULT_TYPES: number of default types
4591 */
4592enum nl80211_key_default_types {
4593 __NL80211_KEY_DEFAULT_TYPE_INVALID,
4594 NL80211_KEY_DEFAULT_TYPE_UNICAST,
4595 NL80211_KEY_DEFAULT_TYPE_MULTICAST,
4596
4597 NUM_NL80211_KEY_DEFAULT_TYPES
4598};
4599
b739493e
JB
4600/**
4601 * enum nl80211_key_attributes - key attributes
4602 * @__NL80211_KEY_INVALID: invalid
4603 * @NL80211_KEY_DATA: (temporal) key data; for TKIP this consists of
4604 * 16 bytes encryption key followed by 8 bytes each for TX and RX MIC
4605 * keys
4606 * @NL80211_KEY_IDX: key ID (u8, 0-3)
4607 * @NL80211_KEY_CIPHER: key cipher suite (u32, as defined by IEEE 802.11
4608 * section 7.3.2.25.1, e.g. 0x000FAC04)
4609 * @NL80211_KEY_SEQ: transmit key sequence number (IV/PN) for TKIP and
4610 * CCMP keys, each six bytes in little endian
4611 * @NL80211_KEY_DEFAULT: flag indicating default key
4612 * @NL80211_KEY_DEFAULT_MGMT: flag indicating default management key
1cbe4a02
JB
4613 * @NL80211_KEY_TYPE: the key type from enum nl80211_key_type, if not
4614 * specified the default depends on whether a MAC address was
4615 * given with the command using the key or not (u32)
15d71c1e
JB
4616 * @NL80211_KEY_DEFAULT_TYPES: A nested attribute containing flags
4617 * attributes, specifying what a key should be set as default as.
4618 * See &enum nl80211_key_default_types.
2c8026de
JB
4619 * @NL80211_KEY_MODE: the mode from enum nl80211_key_mode.
4620 * Defaults to @NL80211_KEY_RX_TX.
cb07eab1 4621 * @NL80211_KEY_DEFAULT_BEACON: flag indicating default Beacon frame key
2c8026de 4622 *
b739493e
JB
4623 * @__NL80211_KEY_AFTER_LAST: internal
4624 * @NL80211_KEY_MAX: highest key attribute
4625 */
4626enum nl80211_key_attributes {
4627 __NL80211_KEY_INVALID,
4628 NL80211_KEY_DATA,
4629 NL80211_KEY_IDX,
4630 NL80211_KEY_CIPHER,
4631 NL80211_KEY_SEQ,
4632 NL80211_KEY_DEFAULT,
4633 NL80211_KEY_DEFAULT_MGMT,
1cbe4a02 4634 NL80211_KEY_TYPE,
15d71c1e 4635 NL80211_KEY_DEFAULT_TYPES,
2c8026de 4636 NL80211_KEY_MODE,
cb07eab1 4637 NL80211_KEY_DEFAULT_BEACON,
b739493e
JB
4638
4639 /* keep last */
4640 __NL80211_KEY_AFTER_LAST,
4641 NL80211_KEY_MAX = __NL80211_KEY_AFTER_LAST - 1
4642};
4643
d4350a3e
JB
4644/**
4645 * enum nl80211_tx_rate_attributes - TX rate set attributes
4646 * @__NL80211_TXRATE_INVALID: invalid
4647 * @NL80211_TXRATE_LEGACY: Legacy (non-MCS) rates allowed for TX rate selection
4648 * in an array of rates as defined in IEEE 802.11 7.3.2.2 (u8 values with
4649 * 1 = 500 kbps) but without the IE length restriction (at most
4650 * %NL80211_MAX_SUPP_RATES in a single array).
63f94301 4651 * @NL80211_TXRATE_HT: HT (MCS) rates allowed for TX rate selection
d456ac60 4652 * in an array of MCS numbers.
63f94301
JB
4653 * @NL80211_TXRATE_VHT: VHT rates allowed for TX rate selection,
4654 * see &struct nl80211_txrate_vht
da441d4f 4655 * @NL80211_TXRATE_GI: configure GI, see &enum nl80211_txrate_gi
d4350a3e
JB
4656 * @__NL80211_TXRATE_AFTER_LAST: internal
4657 * @NL80211_TXRATE_MAX: highest TX rate attribute
4658 */
4659enum nl80211_tx_rate_attributes {
4660 __NL80211_TXRATE_INVALID,
4661 NL80211_TXRATE_LEGACY,
63f94301
JB
4662 NL80211_TXRATE_HT,
4663 NL80211_TXRATE_VHT,
da441d4f 4664 NL80211_TXRATE_GI,
d4350a3e
JB
4665
4666 /* keep last */
4667 __NL80211_TXRATE_AFTER_LAST,
4668 NL80211_TXRATE_MAX = __NL80211_TXRATE_AFTER_LAST - 1
4669};
4670
63f94301
JB
4671#define NL80211_TXRATE_MCS NL80211_TXRATE_HT
4672#define NL80211_VHT_NSS_MAX 8
4673
4674/**
4675 * struct nl80211_txrate_vht - VHT MCS/NSS txrate bitmap
4676 * @mcs: MCS bitmap table for each NSS (array index 0 for 1 stream, etc.)
4677 */
4678struct nl80211_txrate_vht {
4679 __u16 mcs[NL80211_VHT_NSS_MAX];
4680};
4681
da441d4f
JB
4682enum nl80211_txrate_gi {
4683 NL80211_TXRATE_DEFAULT_GI,
4684 NL80211_TXRATE_FORCE_SGI,
4685 NL80211_TXRATE_FORCE_LGI,
4686};
4687
d4350a3e
JB
4688/**
4689 * enum nl80211_band - Frequency band
0c560ade
JB
4690 * @NL80211_BAND_2GHZ: 2.4 GHz ISM band
4691 * @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz)
75b78ff8 4692 * @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 69.12 GHz)
0c1a26b5 4693 * @NL80211_BAND_6GHZ: around 6 GHz band (5.9 - 7.2 GHz)
f45d4583
JB
4694 * @NUM_NL80211_BANDS: number of bands, avoid using this in userspace
4695 * since newer kernel versions may support more bands
d4350a3e
JB
4696 */
4697enum nl80211_band {
4698 NL80211_BAND_2GHZ,
4699 NL80211_BAND_5GHZ,
869982f5 4700 NL80211_BAND_60GHZ,
0c1a26b5 4701 NL80211_BAND_6GHZ,
f45d4583
JB
4702
4703 NUM_NL80211_BANDS,
d4350a3e
JB
4704};
4705
869982f5
JB
4706/**
4707 * enum nl80211_ps_state - powersave state
4708 * @NL80211_PS_DISABLED: powersave is disabled
4709 * @NL80211_PS_ENABLED: powersave is enabled
4710 */
03977c41
JB
4711enum nl80211_ps_state {
4712 NL80211_PS_DISABLED,
4713 NL80211_PS_ENABLED,
4714};
4715
7c9e7c7b
JB
4716/**
4717 * enum nl80211_attr_cqm - connection quality monitor attributes
4718 * @__NL80211_ATTR_CQM_INVALID: invalid
4719 * @NL80211_ATTR_CQM_RSSI_THOLD: RSSI threshold in dBm. This value specifies
4720 * the threshold for the RSSI level at which an event will be sent. Zero
8a9e0b30
JB
4721 * to disable. Alternatively, if %NL80211_EXT_FEATURE_CQM_RSSI_LIST is
4722 * set, multiple values can be supplied as a low-to-high sorted array of
4723 * threshold values in dBm. Events will be sent when the RSSI value
4724 * crosses any of the thresholds.
7c9e7c7b
JB
4725 * @NL80211_ATTR_CQM_RSSI_HYST: RSSI hysteresis in dBm. This value specifies
4726 * the minimum amount the RSSI level must change after an event before a
4727 * new event may be issued (to reduce effects of RSSI oscillation).
4728 * @NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT: RSSI threshold event
fb660ce4
JB
4729 * @NL80211_ATTR_CQM_PKT_LOSS_EVENT: a u32 value indicating that this many
4730 * consecutive packets were not acknowledged by the peer
f1715630
JB
4731 * @NL80211_ATTR_CQM_TXE_RATE: TX error rate in %. Minimum % of TX failures
4732 * during the given %NL80211_ATTR_CQM_TXE_INTVL before an
4733 * %NL80211_CMD_NOTIFY_CQM with reported %NL80211_ATTR_CQM_TXE_RATE and
4734 * %NL80211_ATTR_CQM_TXE_PKTS is generated.
4735 * @NL80211_ATTR_CQM_TXE_PKTS: number of attempted packets in a given
4736 * %NL80211_ATTR_CQM_TXE_INTVL before %NL80211_ATTR_CQM_TXE_RATE is
4737 * checked.
4738 * @NL80211_ATTR_CQM_TXE_INTVL: interval in seconds. Specifies the periodic
4739 * interval in which %NL80211_ATTR_CQM_TXE_PKTS and
4740 * %NL80211_ATTR_CQM_TXE_RATE must be satisfied before generating an
4741 * %NL80211_CMD_NOTIFY_CQM. Set to 0 to turn off TX error reporting.
f548a702
JB
4742 * @NL80211_ATTR_CQM_BEACON_LOSS_EVENT: flag attribute that's set in a beacon
4743 * loss event
8a9e0b30
JB
4744 * @NL80211_ATTR_CQM_RSSI_LEVEL: the RSSI value in dBm that triggered the
4745 * RSSI threshold event.
7c9e7c7b
JB
4746 * @__NL80211_ATTR_CQM_AFTER_LAST: internal
4747 * @NL80211_ATTR_CQM_MAX: highest key attribute
4748 */
4749enum nl80211_attr_cqm {
4750 __NL80211_ATTR_CQM_INVALID,
4751 NL80211_ATTR_CQM_RSSI_THOLD,
4752 NL80211_ATTR_CQM_RSSI_HYST,
4753 NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT,
fb660ce4 4754 NL80211_ATTR_CQM_PKT_LOSS_EVENT,
f1715630
JB
4755 NL80211_ATTR_CQM_TXE_RATE,
4756 NL80211_ATTR_CQM_TXE_PKTS,
4757 NL80211_ATTR_CQM_TXE_INTVL,
f548a702 4758 NL80211_ATTR_CQM_BEACON_LOSS_EVENT,
8a9e0b30 4759 NL80211_ATTR_CQM_RSSI_LEVEL,
7c9e7c7b
JB
4760
4761 /* keep last */
4762 __NL80211_ATTR_CQM_AFTER_LAST,
4763 NL80211_ATTR_CQM_MAX = __NL80211_ATTR_CQM_AFTER_LAST - 1
4764};
4765
4766/**
4767 * enum nl80211_cqm_rssi_threshold_event - RSSI threshold event
0c560ade 4768 * @NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW: The RSSI level is lower than the
7c9e7c7b 4769 * configured threshold
0c560ade 4770 * @NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH: The RSSI is higher than the
7c9e7c7b 4771 * configured threshold
f548a702 4772 * @NL80211_CQM_RSSI_BEACON_LOSS_EVENT: (reserved, never sent)
7c9e7c7b
JB
4773 */
4774enum nl80211_cqm_rssi_threshold_event {
4775 NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW,
4776 NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH,
869982f5 4777 NL80211_CQM_RSSI_BEACON_LOSS_EVENT,
7c9e7c7b
JB
4778};
4779
80ed81f7
JB
4780
4781/**
4782 * enum nl80211_tx_power_setting - TX power adjustment
4783 * @NL80211_TX_POWER_AUTOMATIC: automatically determine transmit power
4784 * @NL80211_TX_POWER_LIMITED: limit TX power by the mBm parameter
4785 * @NL80211_TX_POWER_FIXED: fix TX power to the mBm parameter
4786 */
4787enum nl80211_tx_power_setting {
4788 NL80211_TX_POWER_AUTOMATIC,
4789 NL80211_TX_POWER_LIMITED,
4790 NL80211_TX_POWER_FIXED,
4791};
4792
cb07eab1
JB
4793/**
4794 * enum nl80211_tid_config - TID config state
4795 * @NL80211_TID_CONFIG_ENABLE: Enable config for the TID
4796 * @NL80211_TID_CONFIG_DISABLE: Disable config for the TID
4797 */
4798enum nl80211_tid_config {
4799 NL80211_TID_CONFIG_ENABLE,
4800 NL80211_TID_CONFIG_DISABLE,
4801};
4802
4803/* enum nl80211_tid_config_attr - TID specific configuration.
4804 * @NL80211_TID_CONFIG_ATTR_PAD: pad attribute for 64-bit values
4805 * @NL80211_TID_CONFIG_ATTR_VIF_SUPP: a bitmap (u64) of attributes supported
4806 * for per-vif configuration; doesn't list the ones that are generic
4807 * (%NL80211_TID_CONFIG_ATTR_TIDS, %NL80211_TID_CONFIG_ATTR_OVERRIDE).
4808 * @NL80211_TID_CONFIG_ATTR_PEER_SUPP: same as the previous per-vif one, but
4809 * per peer instead.
4810 * @NL80211_TID_CONFIG_ATTR_OVERRIDE: flag attribue, if no peer
4811 * is selected, if set indicates that the new configuration overrides
4812 * all previous peer configurations, otherwise previous peer specific
4813 * configurations should be left untouched. If peer is selected then
4814 * it will reset particular TID configuration of that peer and it will
4815 * not accept other TID config attributes along with peer.
4816 * @NL80211_TID_CONFIG_ATTR_TIDS: a bitmask value of TIDs (bit 0 to 7)
4817 * Its type is u16.
4818 * @NL80211_TID_CONFIG_ATTR_NOACK: Configure ack policy for the TID.
4819 * specified in %NL80211_TID_CONFIG_ATTR_TID. see %enum nl80211_tid_config.
4820 * Its type is u8.
4821 * @NL80211_TID_CONFIG_ATTR_RETRY_SHORT: Number of retries used with data frame
4822 * transmission, user-space sets this configuration in
4823 * &NL80211_CMD_SET_TID_CONFIG. It is u8 type, min value is 1 and
4824 * the max value is advertised by the driver in this attribute on
4825 * output in wiphy capabilities.
4826 * @NL80211_TID_CONFIG_ATTR_RETRY_LONG: Number of retries used with data frame
4827 * transmission, user-space sets this configuration in
4828 * &NL80211_CMD_SET_TID_CONFIG. Its type is u8, min value is 1 and
4829 * the max value is advertised by the driver in this attribute on
4830 * output in wiphy capabilities.
4831 * @NL80211_TID_CONFIG_ATTR_AMPDU_CTRL: Enable/Disable aggregation for the TIDs
4832 * specified in %NL80211_TID_CONFIG_ATTR_TIDS. Its type is u8, using
4833 * the values from &nl80211_tid_config.
4834 * @NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL: Enable/Disable RTS_CTS for the TIDs
4835 * specified in %NL80211_TID_CONFIG_ATTR_TIDS. It is u8 type, using
4836 * the values from &nl80211_tid_config.
4837 */
4838enum nl80211_tid_config_attr {
4839 __NL80211_TID_CONFIG_ATTR_INVALID,
4840 NL80211_TID_CONFIG_ATTR_PAD,
4841 NL80211_TID_CONFIG_ATTR_VIF_SUPP,
4842 NL80211_TID_CONFIG_ATTR_PEER_SUPP,
4843 NL80211_TID_CONFIG_ATTR_OVERRIDE,
4844 NL80211_TID_CONFIG_ATTR_TIDS,
4845 NL80211_TID_CONFIG_ATTR_NOACK,
4846 NL80211_TID_CONFIG_ATTR_RETRY_SHORT,
4847 NL80211_TID_CONFIG_ATTR_RETRY_LONG,
4848 NL80211_TID_CONFIG_ATTR_AMPDU_CTRL,
4849 NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL,
4850
4851 /* keep last */
4852 __NL80211_TID_CONFIG_ATTR_AFTER_LAST,
4853 NL80211_TID_CONFIG_ATTR_MAX = __NL80211_TID_CONFIG_ATTR_AFTER_LAST - 1
4854};
4855
2d6b9d76 4856/**
0fd08e2e
JB
4857 * enum nl80211_packet_pattern_attr - packet pattern attribute
4858 * @__NL80211_PKTPAT_INVALID: invalid number for nested attribute
4859 * @NL80211_PKTPAT_PATTERN: the pattern, values where the mask has
2d6b9d76 4860 * a zero bit are ignored
0fd08e2e 4861 * @NL80211_PKTPAT_MASK: pattern mask, must be long enough to have
2d6b9d76
JB
4862 * a bit for each byte in the pattern. The lowest-order bit corresponds
4863 * to the first byte of the pattern, but the bytes of the pattern are
4864 * in a little-endian-like format, i.e. the 9th byte of the pattern
4865 * corresponds to the lowest-order bit in the second byte of the mask.
4866 * For example: The match 00:xx:00:00:xx:00:00:00:00:xx:xx:xx (where
4867 * xx indicates "don't care") would be represented by a pattern of
d7bfeaa0 4868 * twelve zero bytes, and a mask of "0xed,0x01".
2d6b9d76
JB
4869 * Note that the pattern matching is done as though frames were not
4870 * 802.11 frames but 802.3 frames, i.e. the frame is fully unpacked
4871 * first (including SNAP header unpacking) and then matched.
0fd08e2e 4872 * @NL80211_PKTPAT_OFFSET: packet offset, pattern is matched after
d7bfeaa0 4873 * these fixed number of bytes of received packet
0fd08e2e
JB
4874 * @NUM_NL80211_PKTPAT: number of attributes
4875 * @MAX_NL80211_PKTPAT: max attribute number
2d6b9d76 4876 */
0fd08e2e
JB
4877enum nl80211_packet_pattern_attr {
4878 __NL80211_PKTPAT_INVALID,
4879 NL80211_PKTPAT_MASK,
4880 NL80211_PKTPAT_PATTERN,
4881 NL80211_PKTPAT_OFFSET,
2d6b9d76 4882
0fd08e2e
JB
4883 NUM_NL80211_PKTPAT,
4884 MAX_NL80211_PKTPAT = NUM_NL80211_PKTPAT - 1,
2d6b9d76
JB
4885};
4886
4887/**
0fd08e2e 4888 * struct nl80211_pattern_support - packet pattern support information
2d6b9d76
JB
4889 * @max_patterns: maximum number of patterns supported
4890 * @min_pattern_len: minimum length of each pattern
4891 * @max_pattern_len: maximum length of each pattern
d7bfeaa0 4892 * @max_pkt_offset: maximum Rx packet offset
2d6b9d76
JB
4893 *
4894 * This struct is carried in %NL80211_WOWLAN_TRIG_PKT_PATTERN when
0fd08e2e
JB
4895 * that is part of %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED or in
4896 * %NL80211_ATTR_COALESCE_RULE_PKT_PATTERN when that is part of
4897 * %NL80211_ATTR_COALESCE_RULE in the capability information given
4898 * by the kernel to userspace.
2d6b9d76 4899 */
0fd08e2e 4900struct nl80211_pattern_support {
2d6b9d76
JB
4901 __u32 max_patterns;
4902 __u32 min_pattern_len;
4903 __u32 max_pattern_len;
d7bfeaa0 4904 __u32 max_pkt_offset;
2d6b9d76
JB
4905} __attribute__((packed));
4906
0fd08e2e
JB
4907/* only for backward compatibility */
4908#define __NL80211_WOWLAN_PKTPAT_INVALID __NL80211_PKTPAT_INVALID
4909#define NL80211_WOWLAN_PKTPAT_MASK NL80211_PKTPAT_MASK
4910#define NL80211_WOWLAN_PKTPAT_PATTERN NL80211_PKTPAT_PATTERN
4911#define NL80211_WOWLAN_PKTPAT_OFFSET NL80211_PKTPAT_OFFSET
4912#define NUM_NL80211_WOWLAN_PKTPAT NUM_NL80211_PKTPAT
4913#define MAX_NL80211_WOWLAN_PKTPAT MAX_NL80211_PKTPAT
4914#define nl80211_wowlan_pattern_support nl80211_pattern_support
4915
2d6b9d76
JB
4916/**
4917 * enum nl80211_wowlan_triggers - WoWLAN trigger definitions
4918 * @__NL80211_WOWLAN_TRIG_INVALID: invalid number for nested attributes
4919 * @NL80211_WOWLAN_TRIG_ANY: wake up on any activity, do not really put
4920 * the chip into a special state -- works best with chips that have
4921 * support for low-power operation already (flag)
a9e38041
JB
4922 * Note that this mode is incompatible with all of the others, if
4923 * any others are even supported by the device.
2d6b9d76
JB
4924 * @NL80211_WOWLAN_TRIG_DISCONNECT: wake up on disconnect, the way disconnect
4925 * is detected is implementation-specific (flag)
4926 * @NL80211_WOWLAN_TRIG_MAGIC_PKT: wake up on magic packet (6x 0xff, followed
4927 * by 16 repetitions of MAC addr, anywhere in payload) (flag)
4928 * @NL80211_WOWLAN_TRIG_PKT_PATTERN: wake up on the specified packet patterns
4929 * which are passed in an array of nested attributes, each nested attribute
4930 * defining a with attributes from &struct nl80211_wowlan_trig_pkt_pattern.
d7bfeaa0
JB
4931 * Each pattern defines a wakeup packet. Packet offset is associated with
4932 * each pattern which is used while matching the pattern. The matching is
4933 * done on the MSDU, i.e. as though the packet was an 802.3 packet, so the
4934 * pattern matching is done after the packet is converted to the MSDU.
2d6b9d76
JB
4935 *
4936 * In %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED, it is a binary attribute
0fd08e2e 4937 * carrying a &struct nl80211_pattern_support.
d7bfeaa0
JB
4938 *
4939 * When reporting wakeup. it is a u32 attribute containing the 0-based
4940 * index of the pattern that caused the wakeup, in the patterns passed
4941 * to the kernel when configuring.
b47f6b48
JB
4942 * @NL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED: Not a real trigger, and cannot be
4943 * used when setting, used only to indicate that GTK rekeying is supported
4944 * by the device (flag)
4945 * @NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE: wake up on GTK rekey failure (if
4946 * done by the device) (flag)
4947 * @NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST: wake up on EAP Identity Request
4948 * packet (flag)
4949 * @NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE: wake up on 4-way handshake (flag)
4950 * @NL80211_WOWLAN_TRIG_RFKILL_RELEASE: wake up when rfkill is released
4951 * (on devices that have rfkill in the device) (flag)
d7bfeaa0
JB
4952 * @NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211: For wakeup reporting only, contains
4953 * the 802.11 packet that caused the wakeup, e.g. a deauth frame. The frame
4954 * may be truncated, the @NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN
4955 * attribute contains the original length.
4956 * @NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN: Original length of the 802.11
4957 * packet, may be bigger than the @NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211
4958 * attribute if the packet was truncated somewhere.
4959 * @NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023: For wakeup reporting only, contains the
4960 * 802.11 packet that caused the wakeup, e.g. a magic packet. The frame may
4961 * be truncated, the @NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN attribute
4962 * contains the original length.
4963 * @NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN: Original length of the 802.3
4964 * packet, may be bigger than the @NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023
4965 * attribute if the packet was truncated somewhere.
4966 * @NL80211_WOWLAN_TRIG_TCP_CONNECTION: TCP connection wake, see DOC section
4967 * "TCP connection wakeup" for more details. This is a nested attribute
4968 * containing the exact information for establishing and keeping alive
4969 * the TCP connection.
4970 * @NL80211_WOWLAN_TRIG_TCP_WAKEUP_MATCH: For wakeup reporting only, the
4971 * wakeup packet was received on the TCP connection
4972 * @NL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST: For wakeup reporting only, the
4973 * TCP connection was lost or failed to be established
4974 * @NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS: For wakeup reporting only,
4975 * the TCP connection ran out of tokens to use for data to send to the
4976 * service
f548a702
JB
4977 * @NL80211_WOWLAN_TRIG_NET_DETECT: wake up when a configured network
4978 * is detected. This is a nested attribute that contains the
4979 * same attributes used with @NL80211_CMD_START_SCHED_SCAN. It
a67b2d9c
JB
4980 * specifies how the scan is performed (e.g. the interval, the
4981 * channels to scan and the initial delay) as well as the scan
4982 * results that will trigger a wake (i.e. the matchsets). This
4983 * attribute is also sent in a response to
4984 * @NL80211_CMD_GET_WIPHY, indicating the number of match sets
4985 * supported by the driver (u32).
f548a702
JB
4986 * @NL80211_WOWLAN_TRIG_NET_DETECT_RESULTS: nested attribute
4987 * containing an array with information about what triggered the
4988 * wake up. If no elements are present in the array, it means
4989 * that the information is not available. If more than one
4990 * element is present, it means that more than one match
4991 * occurred.
4992 * Each element in the array is a nested attribute that contains
4993 * one optional %NL80211_ATTR_SSID attribute and one optional
4994 * %NL80211_ATTR_SCAN_FREQUENCIES attribute. At least one of
4995 * these attributes must be present. If
4996 * %NL80211_ATTR_SCAN_FREQUENCIES contains more than one
4997 * frequency, it means that the match occurred in more than one
4998 * channel.
2d6b9d76
JB
4999 * @NUM_NL80211_WOWLAN_TRIG: number of wake on wireless triggers
5000 * @MAX_NL80211_WOWLAN_TRIG: highest wowlan trigger attribute number
d7bfeaa0
JB
5001 *
5002 * These nested attributes are used to configure the wakeup triggers and
5003 * to report the wakeup reason(s).
2d6b9d76
JB
5004 */
5005enum nl80211_wowlan_triggers {
5006 __NL80211_WOWLAN_TRIG_INVALID,
5007 NL80211_WOWLAN_TRIG_ANY,
5008 NL80211_WOWLAN_TRIG_DISCONNECT,
5009 NL80211_WOWLAN_TRIG_MAGIC_PKT,
5010 NL80211_WOWLAN_TRIG_PKT_PATTERN,
b47f6b48
JB
5011 NL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED,
5012 NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE,
5013 NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST,
5014 NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE,
5015 NL80211_WOWLAN_TRIG_RFKILL_RELEASE,
d7bfeaa0
JB
5016 NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211,
5017 NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN,
5018 NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023,
5019 NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN,
5020 NL80211_WOWLAN_TRIG_TCP_CONNECTION,
5021 NL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH,
5022 NL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST,
5023 NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS,
f548a702
JB
5024 NL80211_WOWLAN_TRIG_NET_DETECT,
5025 NL80211_WOWLAN_TRIG_NET_DETECT_RESULTS,
2d6b9d76
JB
5026
5027 /* keep last */
5028 NUM_NL80211_WOWLAN_TRIG,
5029 MAX_NL80211_WOWLAN_TRIG = NUM_NL80211_WOWLAN_TRIG - 1
5030};
5031
d7bfeaa0
JB
5032/**
5033 * DOC: TCP connection wakeup
5034 *
5035 * Some devices can establish a TCP connection in order to be woken up by a
5036 * packet coming in from outside their network segment, or behind NAT. If
5037 * configured, the device will establish a TCP connection to the given
5038 * service, and periodically send data to that service. The first data
5039 * packet is usually transmitted after SYN/ACK, also ACKing the SYN/ACK.
5040 * The data packets can optionally include a (little endian) sequence
5041 * number (in the TCP payload!) that is generated by the device, and, also
5042 * optionally, a token from a list of tokens. This serves as a keep-alive
5043 * with the service, and for NATed connections, etc.
5044 *
5045 * During this keep-alive period, the server doesn't send any data to the
5046 * client. When receiving data, it is compared against the wakeup pattern
5047 * (and mask) and if it matches, the host is woken up. Similarly, if the
5048 * connection breaks or cannot be established to start with, the host is
5049 * also woken up.
5050 *
5051 * Developer's note: ARP offload is required for this, otherwise TCP
5052 * response packets might not go through correctly.
5053 */
5054
5055/**
5056 * struct nl80211_wowlan_tcp_data_seq - WoWLAN TCP data sequence
5057 * @start: starting value
5058 * @offset: offset of sequence number in packet
5059 * @len: length of the sequence value to write, 1 through 4
5060 *
5061 * Note: don't confuse with the TCP sequence number(s), this is for the
5062 * keepalive packet payload. The actual value is written into the packet
5063 * in little endian.
5064 */
5065struct nl80211_wowlan_tcp_data_seq {
5066 __u32 start, offset, len;
5067};
5068
5069/**
5070 * struct nl80211_wowlan_tcp_data_token - WoWLAN TCP data token config
5071 * @offset: offset of token in packet
5072 * @len: length of each token
5073 * @token_stream: stream of data to be used for the tokens, the length must
5074 * be a multiple of @len for this to make sense
5075 */
5076struct nl80211_wowlan_tcp_data_token {
5077 __u32 offset, len;
5078 __u8 token_stream[];
5079};
5080
5081/**
5082 * struct nl80211_wowlan_tcp_data_token_feature - data token features
5083 * @min_len: minimum token length
5084 * @max_len: maximum token length
5085 * @bufsize: total available token buffer size (max size of @token_stream)
5086 */
5087struct nl80211_wowlan_tcp_data_token_feature {
5088 __u32 min_len, max_len, bufsize;
5089};
5090
5091/**
5092 * enum nl80211_wowlan_tcp_attrs - WoWLAN TCP connection parameters
5093 * @__NL80211_WOWLAN_TCP_INVALID: invalid number for nested attributes
5094 * @NL80211_WOWLAN_TCP_SRC_IPV4: source IPv4 address (in network byte order)
5095 * @NL80211_WOWLAN_TCP_DST_IPV4: destination IPv4 address
5096 * (in network byte order)
5097 * @NL80211_WOWLAN_TCP_DST_MAC: destination MAC address, this is given because
5098 * route lookup when configured might be invalid by the time we suspend,
5099 * and doing a route lookup when suspending is no longer possible as it
5100 * might require ARP querying.
5101 * @NL80211_WOWLAN_TCP_SRC_PORT: source port (u16); optional, if not given a
5102 * socket and port will be allocated
5103 * @NL80211_WOWLAN_TCP_DST_PORT: destination port (u16)
5104 * @NL80211_WOWLAN_TCP_DATA_PAYLOAD: data packet payload, at least one byte.
5105 * For feature advertising, a u32 attribute holding the maximum length
5106 * of the data payload.
5107 * @NL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ: data packet sequence configuration
5108 * (if desired), a &struct nl80211_wowlan_tcp_data_seq. For feature
5109 * advertising it is just a flag
5110 * @NL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN: data packet token configuration,
5111 * see &struct nl80211_wowlan_tcp_data_token and for advertising see
5112 * &struct nl80211_wowlan_tcp_data_token_feature.
5113 * @NL80211_WOWLAN_TCP_DATA_INTERVAL: data interval in seconds, maximum
5114 * interval in feature advertising (u32)
5115 * @NL80211_WOWLAN_TCP_WAKE_PAYLOAD: wake packet payload, for advertising a
5116 * u32 attribute holding the maximum length
5117 * @NL80211_WOWLAN_TCP_WAKE_MASK: Wake packet payload mask, not used for
0fd08e2e 5118 * feature advertising. The mask works like @NL80211_PKTPAT_MASK
d7bfeaa0
JB
5119 * but on the TCP payload only.
5120 * @NUM_NL80211_WOWLAN_TCP: number of TCP attributes
5121 * @MAX_NL80211_WOWLAN_TCP: highest attribute number
5122 */
5123enum nl80211_wowlan_tcp_attrs {
5124 __NL80211_WOWLAN_TCP_INVALID,
5125 NL80211_WOWLAN_TCP_SRC_IPV4,
5126 NL80211_WOWLAN_TCP_DST_IPV4,
5127 NL80211_WOWLAN_TCP_DST_MAC,
5128 NL80211_WOWLAN_TCP_SRC_PORT,
5129 NL80211_WOWLAN_TCP_DST_PORT,
5130 NL80211_WOWLAN_TCP_DATA_PAYLOAD,
5131 NL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ,
5132 NL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN,
5133 NL80211_WOWLAN_TCP_DATA_INTERVAL,
5134 NL80211_WOWLAN_TCP_WAKE_PAYLOAD,
5135 NL80211_WOWLAN_TCP_WAKE_MASK,
5136
5137 /* keep last */
5138 NUM_NL80211_WOWLAN_TCP,
5139 MAX_NL80211_WOWLAN_TCP = NUM_NL80211_WOWLAN_TCP - 1
5140};
5141
0fd08e2e
JB
5142/**
5143 * struct nl80211_coalesce_rule_support - coalesce rule support information
5144 * @max_rules: maximum number of rules supported
5145 * @pat: packet pattern support information
5146 * @max_delay: maximum supported coalescing delay in msecs
5147 *
5148 * This struct is carried in %NL80211_ATTR_COALESCE_RULE in the
5149 * capability information given by the kernel to userspace.
5150 */
5151struct nl80211_coalesce_rule_support {
5152 __u32 max_rules;
5153 struct nl80211_pattern_support pat;
5154 __u32 max_delay;
5155} __attribute__((packed));
5156
5157/**
5158 * enum nl80211_attr_coalesce_rule - coalesce rule attribute
5159 * @__NL80211_COALESCE_RULE_INVALID: invalid number for nested attribute
5160 * @NL80211_ATTR_COALESCE_RULE_DELAY: delay in msecs used for packet coalescing
5161 * @NL80211_ATTR_COALESCE_RULE_CONDITION: condition for packet coalescence,
5162 * see &enum nl80211_coalesce_condition.
5163 * @NL80211_ATTR_COALESCE_RULE_PKT_PATTERN: packet offset, pattern is matched
5164 * after these fixed number of bytes of received packet
5165 * @NUM_NL80211_ATTR_COALESCE_RULE: number of attributes
5166 * @NL80211_ATTR_COALESCE_RULE_MAX: max attribute number
5167 */
5168enum nl80211_attr_coalesce_rule {
5169 __NL80211_COALESCE_RULE_INVALID,
5170 NL80211_ATTR_COALESCE_RULE_DELAY,
5171 NL80211_ATTR_COALESCE_RULE_CONDITION,
5172 NL80211_ATTR_COALESCE_RULE_PKT_PATTERN,
5173
5174 /* keep last */
5175 NUM_NL80211_ATTR_COALESCE_RULE,
5176 NL80211_ATTR_COALESCE_RULE_MAX = NUM_NL80211_ATTR_COALESCE_RULE - 1
5177};
5178
5179/**
5180 * enum nl80211_coalesce_condition - coalesce rule conditions
5181 * @NL80211_COALESCE_CONDITION_MATCH: coalaesce Rx packets when patterns
5182 * in a rule are matched.
5183 * @NL80211_COALESCE_CONDITION_NO_MATCH: coalesce Rx packets when patterns
5184 * in a rule are not matched.
5185 */
5186enum nl80211_coalesce_condition {
5187 NL80211_COALESCE_CONDITION_MATCH,
5188 NL80211_COALESCE_CONDITION_NO_MATCH
5189};
5190
a3edacac
JB
5191/**
5192 * enum nl80211_iface_limit_attrs - limit attributes
5193 * @NL80211_IFACE_LIMIT_UNSPEC: (reserved)
5194 * @NL80211_IFACE_LIMIT_MAX: maximum number of interfaces that
5195 * can be chosen from this set of interface types (u32)
5196 * @NL80211_IFACE_LIMIT_TYPES: nested attribute containing a
5197 * flag attribute for each interface type in this set
5198 * @NUM_NL80211_IFACE_LIMIT: number of attributes
5199 * @MAX_NL80211_IFACE_LIMIT: highest attribute number
5200 */
5201enum nl80211_iface_limit_attrs {
5202 NL80211_IFACE_LIMIT_UNSPEC,
5203 NL80211_IFACE_LIMIT_MAX,
5204 NL80211_IFACE_LIMIT_TYPES,
5205
5206 /* keep last */
5207 NUM_NL80211_IFACE_LIMIT,
5208 MAX_NL80211_IFACE_LIMIT = NUM_NL80211_IFACE_LIMIT - 1
5209};
5210
5211/**
5212 * enum nl80211_if_combination_attrs -- interface combination attributes
5213 *
5214 * @NL80211_IFACE_COMB_UNSPEC: (reserved)
5215 * @NL80211_IFACE_COMB_LIMITS: Nested attributes containing the limits
5216 * for given interface types, see &enum nl80211_iface_limit_attrs.
5217 * @NL80211_IFACE_COMB_MAXNUM: u32 attribute giving the total number of
5218 * interfaces that can be created in this group. This number doesn't
5219 * apply to interfaces purely managed in software, which are listed
5220 * in a separate attribute %NL80211_ATTR_INTERFACES_SOFTWARE.
5221 * @NL80211_IFACE_COMB_STA_AP_BI_MATCH: flag attribute specifying that
5222 * beacon intervals within this group must be all the same even for
5223 * infrastructure and AP/GO combinations, i.e. the GO(s) must adopt
5224 * the infrastructure network's beacon interval.
5225 * @NL80211_IFACE_COMB_NUM_CHANNELS: u32 attribute specifying how many
5226 * different channels may be used within this group.
6ccd4979
JB
5227 * @NL80211_IFACE_COMB_RADAR_DETECT_WIDTHS: u32 attribute containing the bitmap
5228 * of supported channel widths for radar detection.
70f3fe99
JB
5229 * @NL80211_IFACE_COMB_RADAR_DETECT_REGIONS: u32 attribute containing the bitmap
5230 * of supported regulatory regions for radar detection.
8a9e0b30
JB
5231 * @NL80211_IFACE_COMB_BI_MIN_GCD: u32 attribute specifying the minimum GCD of
5232 * different beacon intervals supported by all the interface combinations
5233 * in this group (if not present, all beacon intervals be identical).
a3edacac
JB
5234 * @NUM_NL80211_IFACE_COMB: number of attributes
5235 * @MAX_NL80211_IFACE_COMB: highest attribute number
5236 *
5237 * Examples:
5238 * limits = [ #{STA} <= 1, #{AP} <= 1 ], matching BI, channels = 1, max = 2
5239 * => allows an AP and a STA that must match BIs
5240 *
8a9e0b30
JB
5241 * numbers = [ #{AP, P2P-GO} <= 8 ], BI min gcd, channels = 1, max = 8,
5242 * => allows 8 of AP/GO that can have BI gcd >= min gcd
a3edacac
JB
5243 *
5244 * numbers = [ #{STA} <= 2 ], channels = 2, max = 2
5245 * => allows two STAs on different channels
5246 *
5247 * numbers = [ #{STA} <= 1, #{P2P-client,P2P-GO} <= 3 ], max = 4
5248 * => allows a STA plus three P2P interfaces
5249 *
806bb9ac 5250 * The list of these four possibilities could completely be contained
a3edacac
JB
5251 * within the %NL80211_ATTR_INTERFACE_COMBINATIONS attribute to indicate
5252 * that any of these groups must match.
5253 *
5254 * "Combinations" of just a single interface will not be listed here,
5255 * a single interface of any valid interface type is assumed to always
5256 * be possible by itself. This means that implicitly, for each valid
5257 * interface type, the following group always exists:
5258 * numbers = [ #{<type>} <= 1 ], channels = 1, max = 1
5259 */
5260enum nl80211_if_combination_attrs {
5261 NL80211_IFACE_COMB_UNSPEC,
5262 NL80211_IFACE_COMB_LIMITS,
5263 NL80211_IFACE_COMB_MAXNUM,
5264 NL80211_IFACE_COMB_STA_AP_BI_MATCH,
5265 NL80211_IFACE_COMB_NUM_CHANNELS,
6ccd4979 5266 NL80211_IFACE_COMB_RADAR_DETECT_WIDTHS,
70f3fe99 5267 NL80211_IFACE_COMB_RADAR_DETECT_REGIONS,
8a9e0b30 5268 NL80211_IFACE_COMB_BI_MIN_GCD,
a3edacac
JB
5269
5270 /* keep last */
5271 NUM_NL80211_IFACE_COMB,
5272 MAX_NL80211_IFACE_COMB = NUM_NL80211_IFACE_COMB - 1
5273};
5274
5275
5276/**
5277 * enum nl80211_plink_state - state of a mesh peer link finite state machine
5278 *
5279 * @NL80211_PLINK_LISTEN: initial state, considered the implicit
806bb9ac 5280 * state of non existent mesh peer links
a3edacac
JB
5281 * @NL80211_PLINK_OPN_SNT: mesh plink open frame has been sent to
5282 * this mesh peer
5283 * @NL80211_PLINK_OPN_RCVD: mesh plink open frame has been received
5284 * from this mesh peer
5285 * @NL80211_PLINK_CNF_RCVD: mesh plink confirm frame has been
5286 * received from this mesh peer
5287 * @NL80211_PLINK_ESTAB: mesh peer link is established
5288 * @NL80211_PLINK_HOLDING: mesh peer link is being closed or cancelled
5289 * @NL80211_PLINK_BLOCKED: all frames transmitted from this mesh
5290 * plink are discarded
5291 * @NUM_NL80211_PLINK_STATES: number of peer link states
5292 * @MAX_NL80211_PLINK_STATES: highest numerical value of plink states
5293 */
5294enum nl80211_plink_state {
5295 NL80211_PLINK_LISTEN,
5296 NL80211_PLINK_OPN_SNT,
5297 NL80211_PLINK_OPN_RCVD,
5298 NL80211_PLINK_CNF_RCVD,
5299 NL80211_PLINK_ESTAB,
5300 NL80211_PLINK_HOLDING,
5301 NL80211_PLINK_BLOCKED,
5302
5303 /* keep last */
5304 NUM_NL80211_PLINK_STATES,
5305 MAX_NL80211_PLINK_STATES = NUM_NL80211_PLINK_STATES - 1
5306};
5307
ac38f8ad
JB
5308/**
5309 * enum nl80211_plink_action - actions to perform in mesh peers
5310 *
5311 * @NL80211_PLINK_ACTION_NO_ACTION: perform no action
5312 * @NL80211_PLINK_ACTION_OPEN: start mesh peer link establishment
5313 * @NL80211_PLINK_ACTION_BLOCK: block traffic from this mesh peer
5314 * @NUM_NL80211_PLINK_ACTIONS: number of possible actions
5315 */
5316enum plink_actions {
5317 NL80211_PLINK_ACTION_NO_ACTION,
5318 NL80211_PLINK_ACTION_OPEN,
5319 NL80211_PLINK_ACTION_BLOCK,
5320
5321 NUM_NL80211_PLINK_ACTIONS,
5322};
5323
5324
b47f6b48
JB
5325#define NL80211_KCK_LEN 16
5326#define NL80211_KEK_LEN 16
5327#define NL80211_REPLAY_CTR_LEN 8
5328
5329/**
5330 * enum nl80211_rekey_data - attributes for GTK rekey offload
5331 * @__NL80211_REKEY_DATA_INVALID: invalid number for nested attributes
5332 * @NL80211_REKEY_DATA_KEK: key encryption key (binary)
5333 * @NL80211_REKEY_DATA_KCK: key confirmation key (binary)
5334 * @NL80211_REKEY_DATA_REPLAY_CTR: replay counter (binary)
5335 * @NUM_NL80211_REKEY_DATA: number of rekey attributes (internal)
5336 * @MAX_NL80211_REKEY_DATA: highest rekey attribute (internal)
5337 */
5338enum nl80211_rekey_data {
5339 __NL80211_REKEY_DATA_INVALID,
5340 NL80211_REKEY_DATA_KEK,
5341 NL80211_REKEY_DATA_KCK,
5342 NL80211_REKEY_DATA_REPLAY_CTR,
5343
5344 /* keep last */
5345 NUM_NL80211_REKEY_DATA,
5346 MAX_NL80211_REKEY_DATA = NUM_NL80211_REKEY_DATA - 1
5347};
5348
bea987cd
JB
5349/**
5350 * enum nl80211_hidden_ssid - values for %NL80211_ATTR_HIDDEN_SSID
5351 * @NL80211_HIDDEN_SSID_NOT_IN_USE: do not hide SSID (i.e., broadcast it in
5352 * Beacon frames)
5353 * @NL80211_HIDDEN_SSID_ZERO_LEN: hide SSID by using zero-length SSID element
5354 * in Beacon frames
5355 * @NL80211_HIDDEN_SSID_ZERO_CONTENTS: hide SSID by using correct length of SSID
5356 * element in Beacon frames but zero out each byte in the SSID
5357 */
5358enum nl80211_hidden_ssid {
5359 NL80211_HIDDEN_SSID_NOT_IN_USE,
5360 NL80211_HIDDEN_SSID_ZERO_LEN,
5361 NL80211_HIDDEN_SSID_ZERO_CONTENTS
5362};
5363
5364/**
5365 * enum nl80211_sta_wme_attr - station WME attributes
5366 * @__NL80211_STA_WME_INVALID: invalid number for nested attribute
fa1bdd00
JB
5367 * @NL80211_STA_WME_UAPSD_QUEUES: bitmap of uapsd queues. the format
5368 * is the same as the AC bitmap in the QoS info field.
5369 * @NL80211_STA_WME_MAX_SP: max service period. the format is the same
5370 * as the MAX_SP field in the QoS info field (but already shifted down).
bea987cd
JB
5371 * @__NL80211_STA_WME_AFTER_LAST: internal
5372 * @NL80211_STA_WME_MAX: highest station WME attribute
5373 */
5374enum nl80211_sta_wme_attr {
5375 __NL80211_STA_WME_INVALID,
5376 NL80211_STA_WME_UAPSD_QUEUES,
5377 NL80211_STA_WME_MAX_SP,
5378
5379 /* keep last */
5380 __NL80211_STA_WME_AFTER_LAST,
5381 NL80211_STA_WME_MAX = __NL80211_STA_WME_AFTER_LAST - 1
5382};
5383
fa1bdd00
JB
5384/**
5385 * enum nl80211_pmksa_candidate_attr - attributes for PMKSA caching candidates
5386 * @__NL80211_PMKSA_CANDIDATE_INVALID: invalid number for nested attributes
5387 * @NL80211_PMKSA_CANDIDATE_INDEX: candidate index (u32; the smaller, the higher
5388 * priority)
5389 * @NL80211_PMKSA_CANDIDATE_BSSID: candidate BSSID (6 octets)
5390 * @NL80211_PMKSA_CANDIDATE_PREAUTH: RSN pre-authentication supported (flag)
5391 * @NUM_NL80211_PMKSA_CANDIDATE: number of PMKSA caching candidate attributes
5392 * (internal)
5393 * @MAX_NL80211_PMKSA_CANDIDATE: highest PMKSA caching candidate attribute
5394 * (internal)
5395 */
5396enum nl80211_pmksa_candidate_attr {
5397 __NL80211_PMKSA_CANDIDATE_INVALID,
5398 NL80211_PMKSA_CANDIDATE_INDEX,
5399 NL80211_PMKSA_CANDIDATE_BSSID,
5400 NL80211_PMKSA_CANDIDATE_PREAUTH,
5401
5402 /* keep last */
5403 NUM_NL80211_PMKSA_CANDIDATE,
5404 MAX_NL80211_PMKSA_CANDIDATE = NUM_NL80211_PMKSA_CANDIDATE - 1
5405};
5406
03820325
JB
5407/**
5408 * enum nl80211_tdls_operation - values for %NL80211_ATTR_TDLS_OPERATION
5409 * @NL80211_TDLS_DISCOVERY_REQ: Send a TDLS discovery request
5410 * @NL80211_TDLS_SETUP: Setup TDLS link
5411 * @NL80211_TDLS_TEARDOWN: Teardown a TDLS link which is already established
5412 * @NL80211_TDLS_ENABLE_LINK: Enable TDLS link
5413 * @NL80211_TDLS_DISABLE_LINK: Disable TDLS link
5414 */
5415enum nl80211_tdls_operation {
5416 NL80211_TDLS_DISCOVERY_REQ,
5417 NL80211_TDLS_SETUP,
5418 NL80211_TDLS_TEARDOWN,
5419 NL80211_TDLS_ENABLE_LINK,
5420 NL80211_TDLS_DISABLE_LINK,
5421};
5422
d0da8195
JB
5423/*
5424 * enum nl80211_ap_sme_features - device-integrated AP features
5425 * Reserved for future use, no bits are defined in
5426 * NL80211_ATTR_DEVICE_AP_SME yet.
5427enum nl80211_ap_sme_features {
5428};
5429 */
5430
5431/**
5432 * enum nl80211_feature_flags - device/driver features
5433 * @NL80211_FEATURE_SK_TX_STATUS: This driver supports reflecting back
5434 * TX status to the socket error queue when requested with the
5435 * socket option.
6539cbf4 5436 * @NL80211_FEATURE_HT_IBSS: This driver supports IBSS with HT datarates.
b78ae2b1
JB
5437 * @NL80211_FEATURE_INACTIVITY_TIMER: This driver takes care of freeing up
5438 * the connected inactive stations in AP mode.
f1715630
JB
5439 * @NL80211_FEATURE_CELL_BASE_REG_HINTS: This driver has been tested
5440 * to work properly to suppport receiving regulatory hints from
5441 * cellular base stations.
0c28d3d5
JB
5442 * @NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL: (no longer available, only
5443 * here to reserve the value for API/ABI compatibility)
a614d505
JB
5444 * @NL80211_FEATURE_SAE: This driver supports simultaneous authentication of
5445 * equals (SAE) with user space SME (NL80211_CMD_AUTHENTICATE) in station
5446 * mode
5447 * @NL80211_FEATURE_LOW_PRIORITY_SCAN: This driver supports low priority scan
5448 * @NL80211_FEATURE_SCAN_FLUSH: Scan flush is supported
c11a130a 5449 * @NL80211_FEATURE_AP_SCAN: Support scanning using an AP vif
4c47175d 5450 * @NL80211_FEATURE_VIF_TXPOWER: The driver supports per-vif TX power setting
068ff94a
JB
5451 * @NL80211_FEATURE_NEED_OBSS_SCAN: The driver expects userspace to perform
5452 * OBSS scans and generate 20/40 BSS coex reports. This flag is used only
5453 * for drivers implementing the CONNECT API, for AUTH/ASSOC it is implied.
1632b8e1
JB
5454 * @NL80211_FEATURE_P2P_GO_CTWIN: P2P GO implementation supports CT Window
5455 * setting
5456 * @NL80211_FEATURE_P2P_GO_OPPPS: P2P GO implementation supports opportunistic
5457 * powersave
6ccd4979
JB
5458 * @NL80211_FEATURE_FULL_AP_CLIENT_STATE: The driver supports full state
5459 * transitions for AP clients. Without this flag (and if the driver
5460 * doesn't have the AP SME in the device) the driver supports adding
5461 * stations only when they're associated and adds them in associated
5462 * state (to later be transitioned into authorized), with this flag
5463 * they should be added before even sending the authentication reply
5464 * and then transitioned into authenticated, associated and authorized
5465 * states using station flags.
5466 * Note that even for drivers that support this, the default is to add
5467 * stations in authenticated/associated state, so to add unauthenticated
5468 * stations the authenticated/associated bits have to be set in the mask.
d7bfeaa0
JB
5469 * @NL80211_FEATURE_ADVERTISE_CHAN_LIMITS: cfg80211 advertises channel limits
5470 * (HT40, VHT 80/160 MHz) if this flag is set
ac38f8ad
JB
5471 * @NL80211_FEATURE_USERSPACE_MPM: This driver supports a userspace Mesh
5472 * Peering Management entity which may be implemented by registering for
5473 * beacons or NL80211_CMD_NEW_PEER_CANDIDATE events. The mesh beacon is
5474 * still generated by the driver.
0fd08e2e
JB
5475 * @NL80211_FEATURE_ACTIVE_MONITOR: This driver supports an active monitor
5476 * interface. An active monitor interface behaves like a normal monitor
5477 * interface, but gets added to the driver. It ensures that incoming
5478 * unicast packets directed at the configured interface address get ACKed.
70f3fe99
JB
5479 * @NL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE: This driver supports dynamic
5480 * channel bandwidth change (e.g., HT 20 <-> 40 MHz channel) during the
5481 * lifetime of a BSS.
034a7d2d
JB
5482 * @NL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES: This device adds a DS Parameter
5483 * Set IE to probe requests.
5484 * @NL80211_FEATURE_WFA_TPC_IE_IN_PROBES: This device adds a WFA TPC Report IE
5485 * to probe requests.
5486 * @NL80211_FEATURE_QUIET: This device, in client mode, supports Quiet Period
5487 * requests sent to it by an AP.
5488 * @NL80211_FEATURE_TX_POWER_INSERTION: This device is capable of inserting the
5489 * current tx power value into the TPC Report IE in the spectrum
5490 * management TPC Report action frame, and in the Radio Measurement Link
5491 * Measurement Report action frame.
5492 * @NL80211_FEATURE_ACKTO_ESTIMATION: This driver supports dynamic ACK timeout
5493 * estimation (dynack). %NL80211_ATTR_WIPHY_DYN_ACK flag attribute is used
5494 * to enable dynack.
5495 * @NL80211_FEATURE_STATIC_SMPS: Device supports static spatial
5496 * multiplexing powersave, ie. can turn off all but one chain
5497 * even on HT connections that should be using more chains.
5498 * @NL80211_FEATURE_DYNAMIC_SMPS: Device supports dynamic spatial
5499 * multiplexing powersave, ie. can turn off all but one chain
5500 * and then wake the rest up as required after, for example,
5501 * rts/cts handshake.
d1bc0ebc
JB
5502 * @NL80211_FEATURE_SUPPORTS_WMM_ADMISSION: the device supports setting up WMM
5503 * TSPEC sessions (TID aka TSID 0-7) with the %NL80211_CMD_ADD_TX_TS
5504 * command. Standard IEEE 802.11 TSPEC setup is not yet supported, it
5505 * needs to be able to handle Block-Ack agreements and other things.
5506 * @NL80211_FEATURE_MAC_ON_CREATE: Device supports configuring
5507 * the vif's MAC address upon creation.
5508 * See 'macaddr' field in the vif_params (cfg80211.h).
f548a702
JB
5509 * @NL80211_FEATURE_TDLS_CHANNEL_SWITCH: Driver supports channel switching when
5510 * operating as a TDLS peer.
5511 * @NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR: This device/driver supports using a
5512 * random MAC address during scan (if the device is unassociated); the
5513 * %NL80211_SCAN_FLAG_RANDOM_ADDR flag may be set for scans and the MAC
5514 * address mask/value will be used.
5515 * @NL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR: This device/driver supports
5516 * using a random MAC address for every scan iteration during scheduled
5517 * scan (while not associated), the %NL80211_SCAN_FLAG_RANDOM_ADDR may
5518 * be set for scheduled scan and the MAC address mask/value will be used.
5519 * @NL80211_FEATURE_ND_RANDOM_MAC_ADDR: This device/driver supports using a
5520 * random MAC address for every scan iteration during "net detect", i.e.
5521 * scan in unassociated WoWLAN, the %NL80211_SCAN_FLAG_RANDOM_ADDR may
5522 * be set for scheduled scan and the MAC address mask/value will be used.
d0da8195
JB
5523 */
5524enum nl80211_feature_flags {
bec9a8e0
JB
5525 NL80211_FEATURE_SK_TX_STATUS = 1 << 0,
5526 NL80211_FEATURE_HT_IBSS = 1 << 1,
5527 NL80211_FEATURE_INACTIVITY_TIMER = 1 << 2,
5528 NL80211_FEATURE_CELL_BASE_REG_HINTS = 1 << 3,
5529 NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL = 1 << 4,
a614d505
JB
5530 NL80211_FEATURE_SAE = 1 << 5,
5531 NL80211_FEATURE_LOW_PRIORITY_SCAN = 1 << 6,
5532 NL80211_FEATURE_SCAN_FLUSH = 1 << 7,
c11a130a 5533 NL80211_FEATURE_AP_SCAN = 1 << 8,
4c47175d 5534 NL80211_FEATURE_VIF_TXPOWER = 1 << 9,
068ff94a 5535 NL80211_FEATURE_NEED_OBSS_SCAN = 1 << 10,
1632b8e1
JB
5536 NL80211_FEATURE_P2P_GO_CTWIN = 1 << 11,
5537 NL80211_FEATURE_P2P_GO_OPPPS = 1 << 12,
d7bfeaa0
JB
5538 /* bit 13 is reserved */
5539 NL80211_FEATURE_ADVERTISE_CHAN_LIMITS = 1 << 14,
5540 NL80211_FEATURE_FULL_AP_CLIENT_STATE = 1 << 15,
ac38f8ad 5541 NL80211_FEATURE_USERSPACE_MPM = 1 << 16,
0fd08e2e 5542 NL80211_FEATURE_ACTIVE_MONITOR = 1 << 17,
70f3fe99 5543 NL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE = 1 << 18,
034a7d2d
JB
5544 NL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES = 1 << 19,
5545 NL80211_FEATURE_WFA_TPC_IE_IN_PROBES = 1 << 20,
5546 NL80211_FEATURE_QUIET = 1 << 21,
5547 NL80211_FEATURE_TX_POWER_INSERTION = 1 << 22,
5548 NL80211_FEATURE_ACKTO_ESTIMATION = 1 << 23,
5549 NL80211_FEATURE_STATIC_SMPS = 1 << 24,
5550 NL80211_FEATURE_DYNAMIC_SMPS = 1 << 25,
d1bc0ebc
JB
5551 NL80211_FEATURE_SUPPORTS_WMM_ADMISSION = 1 << 26,
5552 NL80211_FEATURE_MAC_ON_CREATE = 1 << 27,
f548a702
JB
5553 NL80211_FEATURE_TDLS_CHANNEL_SWITCH = 1 << 28,
5554 NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR = 1 << 29,
5555 NL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR = 1 << 30,
a0c07e4f 5556 NL80211_FEATURE_ND_RANDOM_MAC_ADDR = 1U << 31,
d0da8195
JB
5557};
5558
a67b2d9c
JB
5559/**
5560 * enum nl80211_ext_feature_index - bit index of extended features.
a9e38041 5561 * @NL80211_EXT_FEATURE_VHT_IBSS: This driver supports IBSS with VHT datarates.
f45d4583
JB
5562 * @NL80211_EXT_FEATURE_RRM: This driver supports RRM. When featured, user can
5563 * can request to use RRM (see %NL80211_ATTR_USE_RRM) with
5564 * %NL80211_CMD_ASSOCIATE and %NL80211_CMD_CONNECT requests, which will set
5565 * the ASSOC_REQ_USE_RRM flag in the association request even if
5566 * NL80211_FEATURE_QUIET is not advertized.
a574be4b
JB
5567 * @NL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER: This device supports MU-MIMO air
5568 * sniffer which means that it can be configured to hear packets from
5569 * certain groups which can be configured by the
5570 * %NL80211_ATTR_MU_MIMO_GROUP_DATA attribute,
5571 * or can be configured to follow a station by configuring the
5572 * %NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR attribute.
5573 * @NL80211_EXT_FEATURE_SCAN_START_TIME: This driver includes the actual
5574 * time the scan started in scan results event. The time is the TSF of
5575 * the BSS that the interface that requested the scan is connected to
5576 * (if available).
5577 * @NL80211_EXT_FEATURE_BSS_PARENT_TSF: Per BSS, this driver reports the
5578 * time the last beacon/probe was received. The time is the TSF of the
5579 * BSS that the interface that requested the scan is connected to
5580 * (if available).
5581 * @NL80211_EXT_FEATURE_SET_SCAN_DWELL: This driver supports configuration of
5582 * channel dwell time.
5583 * @NL80211_EXT_FEATURE_BEACON_RATE_LEGACY: Driver supports beacon rate
5584 * configuration (AP/mesh), supporting a legacy (non HT/VHT) rate.
5585 * @NL80211_EXT_FEATURE_BEACON_RATE_HT: Driver supports beacon rate
5586 * configuration (AP/mesh) with HT rates.
5587 * @NL80211_EXT_FEATURE_BEACON_RATE_VHT: Driver supports beacon rate
5588 * configuration (AP/mesh) with VHT rates.
8a9e0b30
JB
5589 * @NL80211_EXT_FEATURE_FILS_STA: This driver supports Fast Initial Link Setup
5590 * with user space SME (NL80211_CMD_AUTHENTICATE) in station mode.
5591 * @NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA: This driver supports randomized TA
5592 * in @NL80211_CMD_FRAME while not associated.
5593 * @NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED: This driver supports
5594 * randomized TA in @NL80211_CMD_FRAME while associated.
5595 * @NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI: The driver supports sched_scan
5596 * for reporting BSSs with better RSSI than the current connected BSS
5597 * (%NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI).
5598 * @NL80211_EXT_FEATURE_CQM_RSSI_LIST: With this driver the
5599 * %NL80211_ATTR_CQM_RSSI_THOLD attribute accepts a list of zero or more
5600 * RSSI threshold values to monitor rather than exactly one threshold.
7e0a7c40
JB
5601 * @NL80211_EXT_FEATURE_FILS_SK_OFFLOAD: Driver SME supports FILS shared key
5602 * authentication with %NL80211_CMD_CONNECT.
5603 * @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK: Device wants to do 4-way
5604 * handshake with PSK in station mode (PSK is passed as part of the connect
5605 * and associate commands), doing it in the host might not be supported.
5606 * @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X: Device wants to do doing 4-way
5607 * handshake with 802.1X in station mode (will pass EAP frames to the host
5608 * and accept the set_pmk/del_pmk commands), doing it in the host might not
5609 * be supported.
5610 * @NL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME: Driver is capable of overriding
5611 * the max channel attribute in the FILS request params IE with the
5612 * actual dwell time.
5613 * @NL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP: Driver accepts broadcast probe
5614 * response
5615 * @NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE: Driver supports sending
5616 * the first probe request in each channel at rate of at least 5.5Mbps.
5617 * @NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION: Driver supports
5618 * probe request tx deferral and suppression
5619 * @NL80211_EXT_FEATURE_MFP_OPTIONAL: Driver supports the %NL80211_MFP_OPTIONAL
5620 * value in %NL80211_ATTR_USE_MFP.
e06485e8
JB
5621 * @NL80211_EXT_FEATURE_LOW_SPAN_SCAN: Driver supports low span scan.
5622 * @NL80211_EXT_FEATURE_LOW_POWER_SCAN: Driver supports low power scan.
5623 * @NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN: Driver supports high accuracy scan.
5624 * @NL80211_EXT_FEATURE_DFS_OFFLOAD: HW/driver will offload DFS actions.
5625 * Device or driver will do all DFS-related actions by itself,
5626 * informing user-space about CAC progress, radar detection event,
5627 * channel change triggered by radar detection event.
5628 * No need to start CAC from user-space, no need to react to
5629 * "radar detected" event.
5630 * @NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211: Driver supports sending and
5631 * receiving control port frames over nl80211 instead of the netdevice.
75b78ff8
JB
5632 * @NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT: This driver/device supports
5633 * (average) ACK signal strength reporting.
71101080
JB
5634 * @NL80211_EXT_FEATURE_TXQS: Driver supports FQ-CoDel-enabled intermediate
5635 * TXQs.
75b78ff8
JB
5636 * @NL80211_EXT_FEATURE_SCAN_RANDOM_SN: Driver/device supports randomizing the
5637 * SN in probe request frames if requested by %NL80211_SCAN_FLAG_RANDOM_SN.
5638 * @NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT: Driver/device can omit all data
5639 * except for supported rates from the probe request content if requested
5640 * by the %NL80211_SCAN_FLAG_MIN_PREQ_CONTENT flag.
806bb9ac
JB
5641 * @NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER: Driver supports enabling fine
5642 * timing measurement responder role.
5643 *
5644 * @NL80211_EXT_FEATURE_CAN_REPLACE_PTK0: Driver/device confirm that they are
5645 * able to rekey an in-use key correctly. Userspace must not rekey PTK keys
5646 * if this flag is not set. Ignoring this can leak clear text packets and/or
5647 * freeze the connection.
2c8026de
JB
5648 * @NL80211_EXT_FEATURE_EXT_KEY_ID: Driver supports "Extended Key ID for
5649 * Individually Addressed Frames" from IEEE802.11-2016.
a67b2d9c 5650 *
691c5853
JB
5651 * @NL80211_EXT_FEATURE_AIRTIME_FAIRNESS: Driver supports getting airtime
5652 * fairness for transmitted packets and has enabled airtime fairness
5653 * scheduling.
5654 *
5655 * @NL80211_EXT_FEATURE_AP_PMKSA_CACHING: Driver/device supports PMKSA caching
5656 * (set/del PMKSA operations) in AP mode.
5657 *
2c8026de
JB
5658 * @NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD: Driver supports
5659 * filtering of sched scan results using band specific RSSI thresholds.
5660 *
5661 * @NL80211_EXT_FEATURE_STA_TX_PWR: This driver supports controlling tx power
5662 * to a station.
5663 *
a0c07e4f
JB
5664 * @NL80211_EXT_FEATURE_SAE_OFFLOAD: Device wants to do SAE authentication in
5665 * station mode (SAE password is passed as part of the connect command).
5666 *
e9b59588
JB
5667 * @NL80211_EXT_FEATURE_VLAN_OFFLOAD: The driver supports a single netdev
5668 * with VLAN tagged frames and separate VLAN-specific netdevs added using
5669 * vconfig similarly to the Ethernet case.
5670 *
5671 * @NL80211_EXT_FEATURE_AQL: The driver supports the Airtime Queue Limit (AQL)
5672 * feature, which prevents bufferbloat by using the expected transmission
5673 * time to limit the amount of data buffered in the hardware.
5674 *
cb07eab1
JB
5675 * @NL80211_EXT_FEATURE_BEACON_PROTECTION: The driver supports Beacon protection
5676 * and can receive key configuration for BIGTK using key indexes 6 and 7.
5677 *
5678 * @NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH: The driver can disable the
5679 * forwarding of preauth frames over the control port. They are then
5680 * handled as ordinary data frames.
5681 *
5682 * @NL80211_EXT_FEATURE_PROTECTED_TWT: Driver supports protected TWT frames
5683 *
5684 * @NL80211_EXT_FEATURE_DEL_IBSS_STA: The driver supports removing stations
5685 * in IBSS mode, essentially by dropping their state.
5686 *
a67b2d9c
JB
5687 * @NUM_NL80211_EXT_FEATURES: number of extended features.
5688 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
5689 */
5690enum nl80211_ext_feature_index {
a9e38041 5691 NL80211_EXT_FEATURE_VHT_IBSS,
f45d4583 5692 NL80211_EXT_FEATURE_RRM,
a574be4b
JB
5693 NL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER,
5694 NL80211_EXT_FEATURE_SCAN_START_TIME,
5695 NL80211_EXT_FEATURE_BSS_PARENT_TSF,
5696 NL80211_EXT_FEATURE_SET_SCAN_DWELL,
5697 NL80211_EXT_FEATURE_BEACON_RATE_LEGACY,
5698 NL80211_EXT_FEATURE_BEACON_RATE_HT,
5699 NL80211_EXT_FEATURE_BEACON_RATE_VHT,
8a9e0b30
JB
5700 NL80211_EXT_FEATURE_FILS_STA,
5701 NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA,
5702 NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED,
5703 NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI,
5704 NL80211_EXT_FEATURE_CQM_RSSI_LIST,
7e0a7c40
JB
5705 NL80211_EXT_FEATURE_FILS_SK_OFFLOAD,
5706 NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK,
5707 NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X,
5708 NL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME,
5709 NL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP,
5710 NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE,
5711 NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION,
5712 NL80211_EXT_FEATURE_MFP_OPTIONAL,
e06485e8
JB
5713 NL80211_EXT_FEATURE_LOW_SPAN_SCAN,
5714 NL80211_EXT_FEATURE_LOW_POWER_SCAN,
5715 NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN,
5716 NL80211_EXT_FEATURE_DFS_OFFLOAD,
5717 NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211,
75b78ff8
JB
5718 NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT,
5719 /* we renamed this - stay compatible */
5720 NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT = NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT,
71101080 5721 NL80211_EXT_FEATURE_TXQS,
75b78ff8
JB
5722 NL80211_EXT_FEATURE_SCAN_RANDOM_SN,
5723 NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT,
806bb9ac
JB
5724 NL80211_EXT_FEATURE_CAN_REPLACE_PTK0,
5725 NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER,
691c5853
JB
5726 NL80211_EXT_FEATURE_AIRTIME_FAIRNESS,
5727 NL80211_EXT_FEATURE_AP_PMKSA_CACHING,
2c8026de
JB
5728 NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD,
5729 NL80211_EXT_FEATURE_EXT_KEY_ID,
5730 NL80211_EXT_FEATURE_STA_TX_PWR,
a0c07e4f 5731 NL80211_EXT_FEATURE_SAE_OFFLOAD,
e9b59588
JB
5732 NL80211_EXT_FEATURE_VLAN_OFFLOAD,
5733 NL80211_EXT_FEATURE_AQL,
cb07eab1
JB
5734 NL80211_EXT_FEATURE_BEACON_PROTECTION,
5735 NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH,
5736 NL80211_EXT_FEATURE_PROTECTED_TWT,
5737 NL80211_EXT_FEATURE_DEL_IBSS_STA,
a67b2d9c
JB
5738
5739 /* add new features before the definition below */
5740 NUM_NL80211_EXT_FEATURES,
5741 MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
5742};
5743
d0da8195
JB
5744/**
5745 * enum nl80211_probe_resp_offload_support_attr - optional supported
5746 * protocols for probe-response offloading by the driver/FW.
5747 * To be used with the %NL80211_ATTR_PROBE_RESP_OFFLOAD attribute.
5748 * Each enum value represents a bit in the bitmap of supported
5749 * protocols. Typically a subset of probe-requests belonging to a
5750 * supported protocol will be excluded from offload and uploaded
5751 * to the host.
5752 *
5753 * @NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS: Support for WPS ver. 1
5754 * @NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2: Support for WPS ver. 2
5755 * @NL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P: Support for P2P
5756 * @NL80211_PROBE_RESP_OFFLOAD_SUPPORT_80211U: Support for 802.11u
5757 */
5758enum nl80211_probe_resp_offload_support_attr {
5759 NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS = 1<<0,
5760 NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2 = 1<<1,
5761 NL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P = 1<<2,
5762 NL80211_PROBE_RESP_OFFLOAD_SUPPORT_80211U = 1<<3,
5763};
5764
bec9a8e0
JB
5765/**
5766 * enum nl80211_connect_failed_reason - connection request failed reasons
5767 * @NL80211_CONN_FAIL_MAX_CLIENTS: Maximum number of clients that can be
5768 * handled by the AP is reached.
d7bfeaa0 5769 * @NL80211_CONN_FAIL_BLOCKED_CLIENT: Connection request is rejected due to ACL.
bec9a8e0
JB
5770 */
5771enum nl80211_connect_failed_reason {
5772 NL80211_CONN_FAIL_MAX_CLIENTS,
5773 NL80211_CONN_FAIL_BLOCKED_CLIENT,
5774};
5775
8a9e0b30
JB
5776/**
5777 * enum nl80211_timeout_reason - timeout reasons
5778 *
5779 * @NL80211_TIMEOUT_UNSPECIFIED: Timeout reason unspecified.
5780 * @NL80211_TIMEOUT_SCAN: Scan (AP discovery) timed out.
5781 * @NL80211_TIMEOUT_AUTH: Authentication timed out.
5782 * @NL80211_TIMEOUT_ASSOC: Association timed out.
5783 */
5784enum nl80211_timeout_reason {
5785 NL80211_TIMEOUT_UNSPECIFIED,
5786 NL80211_TIMEOUT_SCAN,
5787 NL80211_TIMEOUT_AUTH,
5788 NL80211_TIMEOUT_ASSOC,
5789};
5790
a614d505
JB
5791/**
5792 * enum nl80211_scan_flags - scan request control flags
5793 *
5794 * Scan request control flags are used to control the handling
5795 * of NL80211_CMD_TRIGGER_SCAN and NL80211_CMD_START_SCHED_SCAN
5796 * requests.
5797 *
e06485e8
JB
5798 * NL80211_SCAN_FLAG_LOW_SPAN, NL80211_SCAN_FLAG_LOW_POWER, and
5799 * NL80211_SCAN_FLAG_HIGH_ACCURACY flags are exclusive of each other, i.e., only
5800 * one of them can be used in the request.
5801 *
a614d505
JB
5802 * @NL80211_SCAN_FLAG_LOW_PRIORITY: scan request has low priority
5803 * @NL80211_SCAN_FLAG_FLUSH: flush cache before scanning
c11a130a
JB
5804 * @NL80211_SCAN_FLAG_AP: force a scan even if the interface is configured
5805 * as AP and the beaconing has already been configured. This attribute is
5806 * dangerous because will destroy stations performance as a lot of frames
5807 * will be lost while scanning off-channel, therefore it must be used only
5808 * when really needed
f548a702
JB
5809 * @NL80211_SCAN_FLAG_RANDOM_ADDR: use a random MAC address for this scan (or
5810 * for scheduled scan: a different one for every scan iteration). When the
5811 * flag is set, depending on device capabilities the @NL80211_ATTR_MAC and
5812 * @NL80211_ATTR_MAC_MASK attributes may also be given in which case only
5813 * the masked bits will be preserved from the MAC address and the remainder
5814 * randomised. If the attributes are not given full randomisation (46 bits,
5815 * locally administered 1, multicast 0) is assumed.
5816 * This flag must not be requested when the feature isn't supported, check
5817 * the nl80211 feature flags for the device.
7e0a7c40
JB
5818 * @NL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME: fill the dwell time in the FILS
5819 * request parameters IE in the probe request
5820 * @NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP: accept broadcast probe responses
5821 * @NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE: send probe request frames at
806bb9ac 5822 * rate of at least 5.5M. In case non OCE AP is discovered in the channel,
7e0a7c40
JB
5823 * only the first probe req in the channel will be sent in high rate.
5824 * @NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION: allow probe request
5825 * tx deferral (dot11FILSProbeDelay shall be set to 15ms)
5826 * and suppression (if it has received a broadcast Probe Response frame,
5827 * Beacon frame or FILS Discovery frame from an AP that the STA considers
5828 * a suitable candidate for (re-)association - suitable in terms of
e06485e8
JB
5829 * SSID and/or RSSI.
5830 * @NL80211_SCAN_FLAG_LOW_SPAN: Span corresponds to the total time taken to
5831 * accomplish the scan. Thus, this flag intends the driver to perform the
5832 * scan request with lesser span/duration. It is specific to the driver
5833 * implementations on how this is accomplished. Scan accuracy may get
5834 * impacted with this flag.
5835 * @NL80211_SCAN_FLAG_LOW_POWER: This flag intends the scan attempts to consume
5836 * optimal possible power. Drivers can resort to their specific means to
5837 * optimize the power. Scan accuracy may get impacted with this flag.
5838 * @NL80211_SCAN_FLAG_HIGH_ACCURACY: Accuracy here intends to the extent of scan
5839 * results obtained. Thus HIGH_ACCURACY scan flag aims to get maximum
5840 * possible scan results. This flag hints the driver to use the best
5841 * possible scan configuration to improve the accuracy in scanning.
5842 * Latency and power use may get impacted with this flag.
75b78ff8
JB
5843 * @NL80211_SCAN_FLAG_RANDOM_SN: randomize the sequence number in probe
5844 * request frames from this scan to avoid correlation/tracking being
5845 * possible.
5846 * @NL80211_SCAN_FLAG_MIN_PREQ_CONTENT: minimize probe request content to
5847 * only have supported rates and no additional capabilities (unless
5848 * added by userspace explicitly.)
a614d505
JB
5849 */
5850enum nl80211_scan_flags {
7e0a7c40
JB
5851 NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0,
5852 NL80211_SCAN_FLAG_FLUSH = 1<<1,
5853 NL80211_SCAN_FLAG_AP = 1<<2,
5854 NL80211_SCAN_FLAG_RANDOM_ADDR = 1<<3,
5855 NL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME = 1<<4,
5856 NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP = 1<<5,
5857 NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE = 1<<6,
5858 NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 1<<7,
e06485e8
JB
5859 NL80211_SCAN_FLAG_LOW_SPAN = 1<<8,
5860 NL80211_SCAN_FLAG_LOW_POWER = 1<<9,
5861 NL80211_SCAN_FLAG_HIGH_ACCURACY = 1<<10,
75b78ff8
JB
5862 NL80211_SCAN_FLAG_RANDOM_SN = 1<<11,
5863 NL80211_SCAN_FLAG_MIN_PREQ_CONTENT = 1<<12,
a614d505
JB
5864};
5865
d7bfeaa0
JB
5866/**
5867 * enum nl80211_acl_policy - access control policy
5868 *
5869 * Access control policy is applied on a MAC list set by
5870 * %NL80211_CMD_START_AP and %NL80211_CMD_SET_MAC_ACL, to
5871 * be used with %NL80211_ATTR_ACL_POLICY.
5872 *
5873 * @NL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED: Deny stations which are
5874 * listed in ACL, i.e. allow all the stations which are not listed
5875 * in ACL to authenticate.
5876 * @NL80211_ACL_POLICY_DENY_UNLESS_LISTED: Allow the stations which are listed
5877 * in ACL, i.e. deny all the stations which are not listed in ACL.
5878 */
5879enum nl80211_acl_policy {
5880 NL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED,
5881 NL80211_ACL_POLICY_DENY_UNLESS_LISTED,
5882};
5883
034a7d2d
JB
5884/**
5885 * enum nl80211_smps_mode - SMPS mode
5886 *
5887 * Requested SMPS mode (for AP mode)
5888 *
5889 * @NL80211_SMPS_OFF: SMPS off (use all antennas).
5890 * @NL80211_SMPS_STATIC: static SMPS (use a single antenna)
5891 * @NL80211_SMPS_DYNAMIC: dynamic smps (start with a single antenna and
5892 * turn on other antennas after CTS/RTS).
5893 */
5894enum nl80211_smps_mode {
5895 NL80211_SMPS_OFF,
5896 NL80211_SMPS_STATIC,
5897 NL80211_SMPS_DYNAMIC,
5898
5899 __NL80211_SMPS_AFTER_LAST,
5900 NL80211_SMPS_MAX = __NL80211_SMPS_AFTER_LAST - 1
5901};
5902
d7bfeaa0
JB
5903/**
5904 * enum nl80211_radar_event - type of radar event for DFS operation
5905 *
5906 * Type of event to be used with NL80211_ATTR_RADAR_EVENT to inform userspace
5907 * about detected radars or success of the channel available check (CAC)
5908 *
5909 * @NL80211_RADAR_DETECTED: A radar pattern has been detected. The channel is
5910 * now unusable.
5911 * @NL80211_RADAR_CAC_FINISHED: Channel Availability Check has been finished,
5912 * the channel is now available.
5913 * @NL80211_RADAR_CAC_ABORTED: Channel Availability Check has been aborted, no
5914 * change to the channel status.
5915 * @NL80211_RADAR_NOP_FINISHED: The Non-Occupancy Period for this channel is
5916 * over, channel becomes usable.
8a9e0b30
JB
5917 * @NL80211_RADAR_PRE_CAC_EXPIRED: Channel Availability Check done on this
5918 * non-operating channel is expired and no longer valid. New CAC must
5919 * be done on this channel before starting the operation. This is not
5920 * applicable for ETSI dfs domain where pre-CAC is valid for ever.
e06485e8
JB
5921 * @NL80211_RADAR_CAC_STARTED: Channel Availability Check has been started,
5922 * should be generated by HW if NL80211_EXT_FEATURE_DFS_OFFLOAD is enabled.
d7bfeaa0
JB
5923 */
5924enum nl80211_radar_event {
5925 NL80211_RADAR_DETECTED,
5926 NL80211_RADAR_CAC_FINISHED,
5927 NL80211_RADAR_CAC_ABORTED,
5928 NL80211_RADAR_NOP_FINISHED,
8a9e0b30 5929 NL80211_RADAR_PRE_CAC_EXPIRED,
e06485e8 5930 NL80211_RADAR_CAC_STARTED,
d7bfeaa0
JB
5931};
5932
5933/**
5934 * enum nl80211_dfs_state - DFS states for channels
5935 *
5936 * Channel states used by the DFS code.
5937 *
320cfae1 5938 * @NL80211_DFS_USABLE: The channel can be used, but channel availability
d7bfeaa0 5939 * check (CAC) must be performed before using it for AP or IBSS.
320cfae1 5940 * @NL80211_DFS_UNAVAILABLE: A radar has been detected on this channel, it
d7bfeaa0 5941 * is therefore marked as not available.
320cfae1 5942 * @NL80211_DFS_AVAILABLE: The channel has been CAC checked and is available.
d7bfeaa0 5943 */
d7bfeaa0
JB
5944enum nl80211_dfs_state {
5945 NL80211_DFS_USABLE,
5946 NL80211_DFS_UNAVAILABLE,
5947 NL80211_DFS_AVAILABLE,
5948};
5949
ac38f8ad
JB
5950/**
5951 * enum enum nl80211_protocol_features - nl80211 protocol features
5952 * @NL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP: nl80211 supports splitting
5953 * wiphy dumps (if requested by the application with the attribute
5954 * %NL80211_ATTR_SPLIT_WIPHY_DUMP. Also supported is filtering the
5955 * wiphy dump by %NL80211_ATTR_WIPHY, %NL80211_ATTR_IFINDEX or
5956 * %NL80211_ATTR_WDEV.
5957 */
5958enum nl80211_protocol_features {
5959 NL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP = 1 << 0,
5960};
5961
ae586a4e
JB
5962/**
5963 * enum nl80211_crit_proto_id - nl80211 critical protocol identifiers
5964 *
5965 * @NL80211_CRIT_PROTO_UNSPEC: protocol unspecified.
5966 * @NL80211_CRIT_PROTO_DHCP: BOOTP or DHCPv6 protocol.
5967 * @NL80211_CRIT_PROTO_EAPOL: EAPOL protocol.
5968 * @NL80211_CRIT_PROTO_APIPA: APIPA protocol.
5969 * @NUM_NL80211_CRIT_PROTO: must be kept last.
5970 */
5971enum nl80211_crit_proto_id {
5972 NL80211_CRIT_PROTO_UNSPEC,
5973 NL80211_CRIT_PROTO_DHCP,
5974 NL80211_CRIT_PROTO_EAPOL,
5975 NL80211_CRIT_PROTO_APIPA,
5976 /* add other protocols before this one */
5977 NUM_NL80211_CRIT_PROTO
5978};
5979
5980/* maximum duration for critical protocol measures */
5981#define NL80211_CRIT_PROTO_MAX_DURATION 5000 /* msec */
5982
320cfae1
JB
5983/**
5984 * enum nl80211_rxmgmt_flags - flags for received management frame.
5985 *
5986 * Used by cfg80211_rx_mgmt()
5987 *
5988 * @NL80211_RXMGMT_FLAG_ANSWERED: frame was answered by device/driver.
691c5853
JB
5989 * @NL80211_RXMGMT_FLAG_EXTERNAL_AUTH: Host driver intends to offload
5990 * the authentication. Exclusively defined for host drivers that
5991 * advertises the SME functionality but would like the userspace
5992 * to handle certain authentication algorithms (e.g. SAE).
320cfae1
JB
5993 */
5994enum nl80211_rxmgmt_flags {
5995 NL80211_RXMGMT_FLAG_ANSWERED = 1 << 0,
691c5853 5996 NL80211_RXMGMT_FLAG_EXTERNAL_AUTH = 1 << 1,
320cfae1
JB
5997};
5998
63f94301
JB
5999/*
6000 * If this flag is unset, the lower 24 bits are an OUI, if set
6001 * a Linux nl80211 vendor ID is used (no such IDs are allocated
6002 * yet, so that's not valid so far)
6003 */
6004#define NL80211_VENDOR_ID_IS_LINUX 0x80000000
6005
6006/**
6007 * struct nl80211_vendor_cmd_info - vendor command data
6008 * @vendor_id: If the %NL80211_VENDOR_ID_IS_LINUX flag is clear, then the
6009 * value is a 24-bit OUI; if it is set then a separately allocated ID
6010 * may be used, but no such IDs are allocated yet. New IDs should be
6011 * added to this file when needed.
6012 * @subcmd: sub-command ID for the command
6013 */
6014struct nl80211_vendor_cmd_info {
6015 __u32 vendor_id;
6016 __u32 subcmd;
6017};
6018
0c28d3d5
JB
6019/**
6020 * enum nl80211_tdls_peer_capability - TDLS peer flags.
6021 *
6022 * Used by tdls_mgmt() to determine which conditional elements need
6023 * to be added to TDLS Setup frames.
6024 *
6025 * @NL80211_TDLS_PEER_HT: TDLS peer is HT capable.
6026 * @NL80211_TDLS_PEER_VHT: TDLS peer is VHT capable.
6027 * @NL80211_TDLS_PEER_WMM: TDLS peer is WMM capable.
6028 */
6029enum nl80211_tdls_peer_capability {
6030 NL80211_TDLS_PEER_HT = 1<<0,
6031 NL80211_TDLS_PEER_VHT = 1<<1,
6032 NL80211_TDLS_PEER_WMM = 1<<2,
6033};
6034
478438c0
JB
6035/**
6036 * enum nl80211_sched_scan_plan - scanning plan for scheduled scan
6037 * @__NL80211_SCHED_SCAN_PLAN_INVALID: attribute number 0 is reserved
6038 * @NL80211_SCHED_SCAN_PLAN_INTERVAL: interval between scan iterations. In
6039 * seconds (u32).
6040 * @NL80211_SCHED_SCAN_PLAN_ITERATIONS: number of scan iterations in this
6041 * scan plan (u32). The last scan plan must not specify this attribute
6042 * because it will run infinitely. A value of zero is invalid as it will
6043 * make the scan plan meaningless.
6044 * @NL80211_SCHED_SCAN_PLAN_MAX: highest scheduled scan plan attribute number
6045 * currently defined
6046 * @__NL80211_SCHED_SCAN_PLAN_AFTER_LAST: internal use
6047 */
6048enum nl80211_sched_scan_plan {
6049 __NL80211_SCHED_SCAN_PLAN_INVALID,
6050 NL80211_SCHED_SCAN_PLAN_INTERVAL,
6051 NL80211_SCHED_SCAN_PLAN_ITERATIONS,
6052
6053 /* keep last */
6054 __NL80211_SCHED_SCAN_PLAN_AFTER_LAST,
6055 NL80211_SCHED_SCAN_PLAN_MAX =
6056 __NL80211_SCHED_SCAN_PLAN_AFTER_LAST - 1
6057};
6058
f45d4583
JB
6059/**
6060 * struct nl80211_bss_select_rssi_adjust - RSSI adjustment parameters.
6061 *
8a9e0b30
JB
6062 * @band: band of BSS that must match for RSSI value adjustment. The value
6063 * of this field is according to &enum nl80211_band.
6064 * @delta: value used to adjust the RSSI value of matching BSS in dB.
f45d4583
JB
6065 */
6066struct nl80211_bss_select_rssi_adjust {
6067 __u8 band;
6068 __s8 delta;
6069} __attribute__((packed));
6070
6071/**
6072 * enum nl80211_bss_select_attr - attributes for bss selection.
6073 *
6074 * @__NL80211_BSS_SELECT_ATTR_INVALID: reserved.
6075 * @NL80211_BSS_SELECT_ATTR_RSSI: Flag indicating only RSSI-based BSS selection
6076 * is requested.
6077 * @NL80211_BSS_SELECT_ATTR_BAND_PREF: attribute indicating BSS
6078 * selection should be done such that the specified band is preferred.
6079 * When there are multiple BSS-es in the preferred band, the driver
6080 * shall use RSSI-based BSS selection as a second step. The value of
6081 * this attribute is according to &enum nl80211_band (u32).
6082 * @NL80211_BSS_SELECT_ATTR_RSSI_ADJUST: When present the RSSI level for
6083 * BSS-es in the specified band is to be adjusted before doing
6084 * RSSI-based BSS selection. The attribute value is a packed structure
6085 * value as specified by &struct nl80211_bss_select_rssi_adjust.
6086 * @NL80211_BSS_SELECT_ATTR_MAX: highest bss select attribute number.
6087 * @__NL80211_BSS_SELECT_ATTR_AFTER_LAST: internal use.
6088 *
6089 * One and only one of these attributes are found within %NL80211_ATTR_BSS_SELECT
6090 * for %NL80211_CMD_CONNECT. It specifies the required BSS selection behaviour
6091 * which the driver shall use.
6092 */
6093enum nl80211_bss_select_attr {
6094 __NL80211_BSS_SELECT_ATTR_INVALID,
6095 NL80211_BSS_SELECT_ATTR_RSSI,
6096 NL80211_BSS_SELECT_ATTR_BAND_PREF,
6097 NL80211_BSS_SELECT_ATTR_RSSI_ADJUST,
6098
6099 /* keep last */
6100 __NL80211_BSS_SELECT_ATTR_AFTER_LAST,
6101 NL80211_BSS_SELECT_ATTR_MAX = __NL80211_BSS_SELECT_ATTR_AFTER_LAST - 1
6102};
6103
a574be4b
JB
6104/**
6105 * enum nl80211_nan_function_type - NAN function type
6106 *
6107 * Defines the function type of a NAN function
6108 *
6109 * @NL80211_NAN_FUNC_PUBLISH: function is publish
6110 * @NL80211_NAN_FUNC_SUBSCRIBE: function is subscribe
6111 * @NL80211_NAN_FUNC_FOLLOW_UP: function is follow-up
6112 */
6113enum nl80211_nan_function_type {
6114 NL80211_NAN_FUNC_PUBLISH,
6115 NL80211_NAN_FUNC_SUBSCRIBE,
6116 NL80211_NAN_FUNC_FOLLOW_UP,
6117
6118 /* keep last */
6119 __NL80211_NAN_FUNC_TYPE_AFTER_LAST,
6120 NL80211_NAN_FUNC_MAX_TYPE = __NL80211_NAN_FUNC_TYPE_AFTER_LAST - 1,
6121};
6122
6123/**
6124 * enum nl80211_nan_publish_type - NAN publish tx type
6125 *
6126 * Defines how to send publish Service Discovery Frames
6127 *
6128 * @NL80211_NAN_SOLICITED_PUBLISH: publish function is solicited
6129 * @NL80211_NAN_UNSOLICITED_PUBLISH: publish function is unsolicited
6130 */
6131enum nl80211_nan_publish_type {
6132 NL80211_NAN_SOLICITED_PUBLISH = 1 << 0,
6133 NL80211_NAN_UNSOLICITED_PUBLISH = 1 << 1,
6134};
6135
6136/**
6137 * enum nl80211_nan_func_term_reason - NAN functions termination reason
6138 *
6139 * Defines termination reasons of a NAN function
6140 *
6141 * @NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST: requested by user
6142 * @NL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED: timeout
6143 * @NL80211_NAN_FUNC_TERM_REASON_ERROR: errored
6144 */
6145enum nl80211_nan_func_term_reason {
6146 NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST,
6147 NL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED,
6148 NL80211_NAN_FUNC_TERM_REASON_ERROR,
6149};
6150
6151#define NL80211_NAN_FUNC_SERVICE_ID_LEN 6
6152#define NL80211_NAN_FUNC_SERVICE_SPEC_INFO_MAX_LEN 0xff
6153#define NL80211_NAN_FUNC_SRF_MAX_LEN 0xff
6154
6155/**
6156 * enum nl80211_nan_func_attributes - NAN function attributes
6157 * @__NL80211_NAN_FUNC_INVALID: invalid
6158 * @NL80211_NAN_FUNC_TYPE: &enum nl80211_nan_function_type (u8).
6159 * @NL80211_NAN_FUNC_SERVICE_ID: 6 bytes of the service ID hash as
6160 * specified in NAN spec. This is a binary attribute.
6161 * @NL80211_NAN_FUNC_PUBLISH_TYPE: relevant if the function's type is
6162 * publish. Defines the transmission type for the publish Service Discovery
6163 * Frame, see &enum nl80211_nan_publish_type. Its type is u8.
6164 * @NL80211_NAN_FUNC_PUBLISH_BCAST: relevant if the function is a solicited
6165 * publish. Should the solicited publish Service Discovery Frame be sent to
6166 * the NAN Broadcast address. This is a flag.
6167 * @NL80211_NAN_FUNC_SUBSCRIBE_ACTIVE: relevant if the function's type is
6168 * subscribe. Is the subscribe active. This is a flag.
6169 * @NL80211_NAN_FUNC_FOLLOW_UP_ID: relevant if the function's type is follow up.
6170 * The instance ID for the follow up Service Discovery Frame. This is u8.
6171 * @NL80211_NAN_FUNC_FOLLOW_UP_REQ_ID: relevant if the function's type
6172 * is follow up. This is a u8.
6173 * The requestor instance ID for the follow up Service Discovery Frame.
6174 * @NL80211_NAN_FUNC_FOLLOW_UP_DEST: the MAC address of the recipient of the
6175 * follow up Service Discovery Frame. This is a binary attribute.
6176 * @NL80211_NAN_FUNC_CLOSE_RANGE: is this function limited for devices in a
6177 * close range. The range itself (RSSI) is defined by the device.
6178 * This is a flag.
6179 * @NL80211_NAN_FUNC_TTL: strictly positive number of DWs this function should
6180 * stay active. If not present infinite TTL is assumed. This is a u32.
6181 * @NL80211_NAN_FUNC_SERVICE_INFO: array of bytes describing the service
6182 * specific info. This is a binary attribute.
6183 * @NL80211_NAN_FUNC_SRF: Service Receive Filter. This is a nested attribute.
6184 * See &enum nl80211_nan_srf_attributes.
6185 * @NL80211_NAN_FUNC_RX_MATCH_FILTER: Receive Matching filter. This is a nested
6186 * attribute. It is a list of binary values.
6187 * @NL80211_NAN_FUNC_TX_MATCH_FILTER: Transmit Matching filter. This is a
6188 * nested attribute. It is a list of binary values.
6189 * @NL80211_NAN_FUNC_INSTANCE_ID: The instance ID of the function.
6190 * Its type is u8 and it cannot be 0.
6191 * @NL80211_NAN_FUNC_TERM_REASON: NAN function termination reason.
6192 * See &enum nl80211_nan_func_term_reason.
6193 *
6194 * @NUM_NL80211_NAN_FUNC_ATTR: internal
6195 * @NL80211_NAN_FUNC_ATTR_MAX: highest NAN function attribute
6196 */
6197enum nl80211_nan_func_attributes {
6198 __NL80211_NAN_FUNC_INVALID,
6199 NL80211_NAN_FUNC_TYPE,
6200 NL80211_NAN_FUNC_SERVICE_ID,
6201 NL80211_NAN_FUNC_PUBLISH_TYPE,
6202 NL80211_NAN_FUNC_PUBLISH_BCAST,
6203 NL80211_NAN_FUNC_SUBSCRIBE_ACTIVE,
6204 NL80211_NAN_FUNC_FOLLOW_UP_ID,
6205 NL80211_NAN_FUNC_FOLLOW_UP_REQ_ID,
6206 NL80211_NAN_FUNC_FOLLOW_UP_DEST,
6207 NL80211_NAN_FUNC_CLOSE_RANGE,
6208 NL80211_NAN_FUNC_TTL,
6209 NL80211_NAN_FUNC_SERVICE_INFO,
6210 NL80211_NAN_FUNC_SRF,
6211 NL80211_NAN_FUNC_RX_MATCH_FILTER,
6212 NL80211_NAN_FUNC_TX_MATCH_FILTER,
6213 NL80211_NAN_FUNC_INSTANCE_ID,
6214 NL80211_NAN_FUNC_TERM_REASON,
6215
6216 /* keep last */
6217 NUM_NL80211_NAN_FUNC_ATTR,
6218 NL80211_NAN_FUNC_ATTR_MAX = NUM_NL80211_NAN_FUNC_ATTR - 1
6219};
6220
6221/**
6222 * enum nl80211_nan_srf_attributes - NAN Service Response filter attributes
6223 * @__NL80211_NAN_SRF_INVALID: invalid
6224 * @NL80211_NAN_SRF_INCLUDE: present if the include bit of the SRF set.
6225 * This is a flag.
6226 * @NL80211_NAN_SRF_BF: Bloom Filter. Present if and only if
75b78ff8 6227 * %NL80211_NAN_SRF_MAC_ADDRS isn't present. This attribute is binary.
a574be4b 6228 * @NL80211_NAN_SRF_BF_IDX: index of the Bloom Filter. Mandatory if
75b78ff8 6229 * %NL80211_NAN_SRF_BF is present. This is a u8.
a574be4b 6230 * @NL80211_NAN_SRF_MAC_ADDRS: list of MAC addresses for the SRF. Present if
75b78ff8 6231 * and only if %NL80211_NAN_SRF_BF isn't present. This is a nested
a574be4b
JB
6232 * attribute. Each nested attribute is a MAC address.
6233 * @NUM_NL80211_NAN_SRF_ATTR: internal
6234 * @NL80211_NAN_SRF_ATTR_MAX: highest NAN SRF attribute
6235 */
6236enum nl80211_nan_srf_attributes {
6237 __NL80211_NAN_SRF_INVALID,
6238 NL80211_NAN_SRF_INCLUDE,
6239 NL80211_NAN_SRF_BF,
6240 NL80211_NAN_SRF_BF_IDX,
6241 NL80211_NAN_SRF_MAC_ADDRS,
6242
6243 /* keep last */
6244 NUM_NL80211_NAN_SRF_ATTR,
6245 NL80211_NAN_SRF_ATTR_MAX = NUM_NL80211_NAN_SRF_ATTR - 1,
6246};
6247
6248/**
6249 * enum nl80211_nan_match_attributes - NAN match attributes
6250 * @__NL80211_NAN_MATCH_INVALID: invalid
6251 * @NL80211_NAN_MATCH_FUNC_LOCAL: the local function that had the
6252 * match. This is a nested attribute.
6253 * See &enum nl80211_nan_func_attributes.
6254 * @NL80211_NAN_MATCH_FUNC_PEER: the peer function
6255 * that caused the match. This is a nested attribute.
6256 * See &enum nl80211_nan_func_attributes.
6257 *
6258 * @NUM_NL80211_NAN_MATCH_ATTR: internal
6259 * @NL80211_NAN_MATCH_ATTR_MAX: highest NAN match attribute
6260 */
6261enum nl80211_nan_match_attributes {
6262 __NL80211_NAN_MATCH_INVALID,
6263 NL80211_NAN_MATCH_FUNC_LOCAL,
6264 NL80211_NAN_MATCH_FUNC_PEER,
6265
6266 /* keep last */
6267 NUM_NL80211_NAN_MATCH_ATTR,
6268 NL80211_NAN_MATCH_ATTR_MAX = NUM_NL80211_NAN_MATCH_ATTR - 1
6269};
6270
e06485e8
JB
6271/**
6272 * nl80211_external_auth_action - Action to perform with external
6273 * authentication request. Used by NL80211_ATTR_EXTERNAL_AUTH_ACTION.
6274 * @NL80211_EXTERNAL_AUTH_START: Start the authentication.
6275 * @NL80211_EXTERNAL_AUTH_ABORT: Abort the ongoing authentication.
6276 */
6277enum nl80211_external_auth_action {
6278 NL80211_EXTERNAL_AUTH_START,
6279 NL80211_EXTERNAL_AUTH_ABORT,
6280};
6281
806bb9ac
JB
6282/**
6283 * enum nl80211_ftm_responder_attributes - fine timing measurement
6284 * responder attributes
6285 * @__NL80211_FTM_RESP_ATTR_INVALID: Invalid
6286 * @NL80211_FTM_RESP_ATTR_ENABLED: FTM responder is enabled
6287 * @NL80211_FTM_RESP_ATTR_LCI: The content of Measurement Report Element
6288 * (9.4.2.22 in 802.11-2016) with type 8 - LCI (9.4.2.22.10),
6289 * i.e. starting with the measurement token
6290 * @NL80211_FTM_RESP_ATTR_CIVIC: The content of Measurement Report Element
6291 * (9.4.2.22 in 802.11-2016) with type 11 - Civic (Section 9.4.2.22.13),
6292 * i.e. starting with the measurement token
6293 * @__NL80211_FTM_RESP_ATTR_LAST: Internal
6294 * @NL80211_FTM_RESP_ATTR_MAX: highest FTM responder attribute.
6295 */
6296enum nl80211_ftm_responder_attributes {
6297 __NL80211_FTM_RESP_ATTR_INVALID,
6298
6299 NL80211_FTM_RESP_ATTR_ENABLED,
6300 NL80211_FTM_RESP_ATTR_LCI,
6301 NL80211_FTM_RESP_ATTR_CIVICLOC,
6302
6303 /* keep last */
6304 __NL80211_FTM_RESP_ATTR_LAST,
6305 NL80211_FTM_RESP_ATTR_MAX = __NL80211_FTM_RESP_ATTR_LAST - 1,
6306};
6307
6308/*
6309 * enum nl80211_ftm_responder_stats - FTM responder statistics
6310 *
6311 * These attribute types are used with %NL80211_ATTR_FTM_RESPONDER_STATS
6312 * when getting FTM responder statistics.
6313 *
6314 * @__NL80211_FTM_STATS_INVALID: attribute number 0 is reserved
6315 * @NL80211_FTM_STATS_SUCCESS_NUM: number of FTM sessions in which all frames
6316 * were ssfully answered (u32)
6317 * @NL80211_FTM_STATS_PARTIAL_NUM: number of FTM sessions in which part of the
6318 * frames were successfully answered (u32)
6319 * @NL80211_FTM_STATS_FAILED_NUM: number of failed FTM sessions (u32)
6320 * @NL80211_FTM_STATS_ASAP_NUM: number of ASAP sessions (u32)
6321 * @NL80211_FTM_STATS_NON_ASAP_NUM: number of non-ASAP sessions (u32)
6322 * @NL80211_FTM_STATS_TOTAL_DURATION_MSEC: total sessions durations - gives an
6323 * indication of how much time the responder was busy (u64, msec)
6324 * @NL80211_FTM_STATS_UNKNOWN_TRIGGERS_NUM: number of unknown FTM triggers -
6325 * triggers from initiators that didn't finish successfully the negotiation
6326 * phase with the responder (u32)
6327 * @NL80211_FTM_STATS_RESCHEDULE_REQUESTS_NUM: number of FTM reschedule requests
6328 * - initiator asks for a new scheduling although it already has scheduled
6329 * FTM slot (u32)
6330 * @NL80211_FTM_STATS_OUT_OF_WINDOW_TRIGGERS_NUM: number of FTM triggers out of
6331 * scheduled window (u32)
6332 * @NL80211_FTM_STATS_PAD: used for padding, ignore
6333 * @__NL80211_TXQ_ATTR_AFTER_LAST: Internal
6334 * @NL80211_FTM_STATS_MAX: highest possible FTM responder stats attribute
6335 */
6336enum nl80211_ftm_responder_stats {
6337 __NL80211_FTM_STATS_INVALID,
6338 NL80211_FTM_STATS_SUCCESS_NUM,
6339 NL80211_FTM_STATS_PARTIAL_NUM,
6340 NL80211_FTM_STATS_FAILED_NUM,
6341 NL80211_FTM_STATS_ASAP_NUM,
6342 NL80211_FTM_STATS_NON_ASAP_NUM,
6343 NL80211_FTM_STATS_TOTAL_DURATION_MSEC,
6344 NL80211_FTM_STATS_UNKNOWN_TRIGGERS_NUM,
6345 NL80211_FTM_STATS_RESCHEDULE_REQUESTS_NUM,
6346 NL80211_FTM_STATS_OUT_OF_WINDOW_TRIGGERS_NUM,
6347 NL80211_FTM_STATS_PAD,
6348
6349 /* keep last */
6350 __NL80211_FTM_STATS_AFTER_LAST,
6351 NL80211_FTM_STATS_MAX = __NL80211_FTM_STATS_AFTER_LAST - 1
6352};
6353
6354/**
6355 * enum nl80211_preamble - frame preamble types
6356 * @NL80211_PREAMBLE_LEGACY: legacy (HR/DSSS, OFDM, ERP PHY) preamble
6357 * @NL80211_PREAMBLE_HT: HT preamble
6358 * @NL80211_PREAMBLE_VHT: VHT preamble
6359 * @NL80211_PREAMBLE_DMG: DMG preamble
cb07eab1 6360 * @NL80211_PREAMBLE_HE: HE preamble
806bb9ac
JB
6361 */
6362enum nl80211_preamble {
6363 NL80211_PREAMBLE_LEGACY,
6364 NL80211_PREAMBLE_HT,
6365 NL80211_PREAMBLE_VHT,
6366 NL80211_PREAMBLE_DMG,
cb07eab1 6367 NL80211_PREAMBLE_HE,
806bb9ac
JB
6368};
6369
6370/**
6371 * enum nl80211_peer_measurement_type - peer measurement types
6372 * @NL80211_PMSR_TYPE_INVALID: invalid/unused, needed as we use
6373 * these numbers also for attributes
6374 *
6375 * @NL80211_PMSR_TYPE_FTM: flight time measurement
6376 *
6377 * @NUM_NL80211_PMSR_TYPES: internal
6378 * @NL80211_PMSR_TYPE_MAX: highest type number
6379 */
6380enum nl80211_peer_measurement_type {
6381 NL80211_PMSR_TYPE_INVALID,
6382
6383 NL80211_PMSR_TYPE_FTM,
6384
6385 NUM_NL80211_PMSR_TYPES,
6386 NL80211_PMSR_TYPE_MAX = NUM_NL80211_PMSR_TYPES - 1
6387};
6388
6389/**
6390 * enum nl80211_peer_measurement_status - peer measurement status
6391 * @NL80211_PMSR_STATUS_SUCCESS: measurement completed successfully
6392 * @NL80211_PMSR_STATUS_REFUSED: measurement was locally refused
6393 * @NL80211_PMSR_STATUS_TIMEOUT: measurement timed out
6394 * @NL80211_PMSR_STATUS_FAILURE: measurement failed, a type-dependent
6395 * reason may be available in the response data
6396 */
6397enum nl80211_peer_measurement_status {
6398 NL80211_PMSR_STATUS_SUCCESS,
6399 NL80211_PMSR_STATUS_REFUSED,
6400 NL80211_PMSR_STATUS_TIMEOUT,
6401 NL80211_PMSR_STATUS_FAILURE,
6402};
6403
6404/**
6405 * enum nl80211_peer_measurement_req - peer measurement request attributes
6406 * @__NL80211_PMSR_REQ_ATTR_INVALID: invalid
6407 *
6408 * @NL80211_PMSR_REQ_ATTR_DATA: This is a nested attribute with measurement
6409 * type-specific request data inside. The attributes used are from the
6410 * enums named nl80211_peer_measurement_<type>_req.
6411 * @NL80211_PMSR_REQ_ATTR_GET_AP_TSF: include AP TSF timestamp, if supported
6412 * (flag attribute)
6413 *
6414 * @NUM_NL80211_PMSR_REQ_ATTRS: internal
6415 * @NL80211_PMSR_REQ_ATTR_MAX: highest attribute number
6416 */
6417enum nl80211_peer_measurement_req {
6418 __NL80211_PMSR_REQ_ATTR_INVALID,
6419
6420 NL80211_PMSR_REQ_ATTR_DATA,
6421 NL80211_PMSR_REQ_ATTR_GET_AP_TSF,
6422
6423 /* keep last */
6424 NUM_NL80211_PMSR_REQ_ATTRS,
6425 NL80211_PMSR_REQ_ATTR_MAX = NUM_NL80211_PMSR_REQ_ATTRS - 1
6426};
6427
6428/**
6429 * enum nl80211_peer_measurement_resp - peer measurement response attributes
6430 * @__NL80211_PMSR_RESP_ATTR_INVALID: invalid
6431 *
6432 * @NL80211_PMSR_RESP_ATTR_DATA: This is a nested attribute with measurement
6433 * type-specific results inside. The attributes used are from the enums
6434 * named nl80211_peer_measurement_<type>_resp.
6435 * @NL80211_PMSR_RESP_ATTR_STATUS: u32 value with the measurement status
6436 * (using values from &enum nl80211_peer_measurement_status.)
6437 * @NL80211_PMSR_RESP_ATTR_HOST_TIME: host time (%CLOCK_BOOTTIME) when the
6438 * result was measured; this value is not expected to be accurate to
6439 * more than 20ms. (u64, nanoseconds)
6440 * @NL80211_PMSR_RESP_ATTR_AP_TSF: TSF of the AP that the interface
6441 * doing the measurement is connected to when the result was measured.
6442 * This shall be accurately reported if supported and requested
6443 * (u64, usec)
6444 * @NL80211_PMSR_RESP_ATTR_FINAL: If results are sent to the host partially
6445 * (*e.g. with FTM per-burst data) this flag will be cleared on all but
6446 * the last result; if all results are combined it's set on the single
6447 * result.
6448 * @NL80211_PMSR_RESP_ATTR_PAD: padding for 64-bit attributes, ignore
6449 *
6450 * @NUM_NL80211_PMSR_RESP_ATTRS: internal
6451 * @NL80211_PMSR_RESP_ATTR_MAX: highest attribute number
6452 */
6453enum nl80211_peer_measurement_resp {
6454 __NL80211_PMSR_RESP_ATTR_INVALID,
6455
6456 NL80211_PMSR_RESP_ATTR_DATA,
6457 NL80211_PMSR_RESP_ATTR_STATUS,
6458 NL80211_PMSR_RESP_ATTR_HOST_TIME,
6459 NL80211_PMSR_RESP_ATTR_AP_TSF,
6460 NL80211_PMSR_RESP_ATTR_FINAL,
6461 NL80211_PMSR_RESP_ATTR_PAD,
6462
6463 /* keep last */
6464 NUM_NL80211_PMSR_RESP_ATTRS,
6465 NL80211_PMSR_RESP_ATTR_MAX = NUM_NL80211_PMSR_RESP_ATTRS - 1
6466};
6467
6468/**
6469 * enum nl80211_peer_measurement_peer_attrs - peer attributes for measurement
6470 * @__NL80211_PMSR_PEER_ATTR_INVALID: invalid
6471 *
6472 * @NL80211_PMSR_PEER_ATTR_ADDR: peer's MAC address
6473 * @NL80211_PMSR_PEER_ATTR_CHAN: channel definition, nested, using top-level
6474 * attributes like %NL80211_ATTR_WIPHY_FREQ etc.
6475 * @NL80211_PMSR_PEER_ATTR_REQ: This is a nested attribute indexed by
6476 * measurement type, with attributes from the
6477 * &enum nl80211_peer_measurement_req inside.
6478 * @NL80211_PMSR_PEER_ATTR_RESP: This is a nested attribute indexed by
6479 * measurement type, with attributes from the
6480 * &enum nl80211_peer_measurement_resp inside.
6481 *
6482 * @NUM_NL80211_PMSR_PEER_ATTRS: internal
6483 * @NL80211_PMSR_PEER_ATTR_MAX: highest attribute number
6484 */
6485enum nl80211_peer_measurement_peer_attrs {
6486 __NL80211_PMSR_PEER_ATTR_INVALID,
6487
6488 NL80211_PMSR_PEER_ATTR_ADDR,
6489 NL80211_PMSR_PEER_ATTR_CHAN,
6490 NL80211_PMSR_PEER_ATTR_REQ,
6491 NL80211_PMSR_PEER_ATTR_RESP,
6492
6493 /* keep last */
6494 NUM_NL80211_PMSR_PEER_ATTRS,
6495 NL80211_PMSR_PEER_ATTR_MAX = NUM_NL80211_PMSR_PEER_ATTRS - 1,
6496};
6497
6498/**
6499 * enum nl80211_peer_measurement_attrs - peer measurement attributes
6500 * @__NL80211_PMSR_ATTR_INVALID: invalid
6501 *
6502 * @NL80211_PMSR_ATTR_MAX_PEERS: u32 attribute used for capability
6503 * advertisement only, indicates the maximum number of peers
6504 * measurements can be done with in a single request
6505 * @NL80211_PMSR_ATTR_REPORT_AP_TSF: flag attribute in capability
6506 * indicating that the connected AP's TSF can be reported in
6507 * measurement results
6508 * @NL80211_PMSR_ATTR_RANDOMIZE_MAC_ADDR: flag attribute in capability
6509 * indicating that MAC address randomization is supported.
6510 * @NL80211_PMSR_ATTR_TYPE_CAPA: capabilities reported by the device,
6511 * this contains a nesting indexed by measurement type, and
6512 * type-specific capabilities inside, which are from the enums
6513 * named nl80211_peer_measurement_<type>_capa.
6514 * @NL80211_PMSR_ATTR_PEERS: nested attribute, the nesting index is
6515 * meaningless, just a list of peers to measure with, with the
6516 * sub-attributes taken from
6517 * &enum nl80211_peer_measurement_peer_attrs.
6518 *
6519 * @NUM_NL80211_PMSR_ATTR: internal
6520 * @NL80211_PMSR_ATTR_MAX: highest attribute number
6521 */
6522enum nl80211_peer_measurement_attrs {
6523 __NL80211_PMSR_ATTR_INVALID,
6524
6525 NL80211_PMSR_ATTR_MAX_PEERS,
6526 NL80211_PMSR_ATTR_REPORT_AP_TSF,
6527 NL80211_PMSR_ATTR_RANDOMIZE_MAC_ADDR,
6528 NL80211_PMSR_ATTR_TYPE_CAPA,
6529 NL80211_PMSR_ATTR_PEERS,
6530
6531 /* keep last */
6532 NUM_NL80211_PMSR_ATTR,
6533 NL80211_PMSR_ATTR_MAX = NUM_NL80211_PMSR_ATTR - 1
6534};
6535
6536/**
6537 * enum nl80211_peer_measurement_ftm_capa - FTM capabilities
6538 * @__NL80211_PMSR_FTM_CAPA_ATTR_INVALID: invalid
6539 *
6540 * @NL80211_PMSR_FTM_CAPA_ATTR_ASAP: flag attribute indicating ASAP mode
6541 * is supported
6542 * @NL80211_PMSR_FTM_CAPA_ATTR_NON_ASAP: flag attribute indicating non-ASAP
6543 * mode is supported
6544 * @NL80211_PMSR_FTM_CAPA_ATTR_REQ_LCI: flag attribute indicating if LCI
6545 * data can be requested during the measurement
6546 * @NL80211_PMSR_FTM_CAPA_ATTR_REQ_CIVICLOC: flag attribute indicating if civic
6547 * location data can be requested during the measurement
6548 * @NL80211_PMSR_FTM_CAPA_ATTR_PREAMBLES: u32 bitmap attribute of bits
6549 * from &enum nl80211_preamble.
6550 * @NL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS: bitmap of values from
6551 * &enum nl80211_chan_width indicating the supported channel
6552 * bandwidths for FTM. Note that a higher channel bandwidth may be
6553 * configured to allow for other measurements types with different
6554 * bandwidth requirement in the same measurement.
6555 * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT: u32 attribute indicating
6556 * the maximum bursts exponent that can be used (if not present anything
6557 * is valid)
6558 * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST: u32 attribute indicating
6559 * the maximum FTMs per burst (if not present anything is valid)
cb07eab1
JB
6560 * @NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED: flag attribute indicating if
6561 * trigger based ranging measurement is supported
6562 * @NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED: flag attribute indicating
6563 * if non trigger based ranging measurement is supported
806bb9ac
JB
6564 *
6565 * @NUM_NL80211_PMSR_FTM_CAPA_ATTR: internal
6566 * @NL80211_PMSR_FTM_CAPA_ATTR_MAX: highest attribute number
6567 */
6568enum nl80211_peer_measurement_ftm_capa {
6569 __NL80211_PMSR_FTM_CAPA_ATTR_INVALID,
6570
6571 NL80211_PMSR_FTM_CAPA_ATTR_ASAP,
6572 NL80211_PMSR_FTM_CAPA_ATTR_NON_ASAP,
6573 NL80211_PMSR_FTM_CAPA_ATTR_REQ_LCI,
6574 NL80211_PMSR_FTM_CAPA_ATTR_REQ_CIVICLOC,
6575 NL80211_PMSR_FTM_CAPA_ATTR_PREAMBLES,
6576 NL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS,
6577 NL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT,
6578 NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST,
cb07eab1
JB
6579 NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED,
6580 NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED,
806bb9ac
JB
6581
6582 /* keep last */
6583 NUM_NL80211_PMSR_FTM_CAPA_ATTR,
6584 NL80211_PMSR_FTM_CAPA_ATTR_MAX = NUM_NL80211_PMSR_FTM_CAPA_ATTR - 1
6585};
6586
6587/**
6588 * enum nl80211_peer_measurement_ftm_req - FTM request attributes
6589 * @__NL80211_PMSR_FTM_REQ_ATTR_INVALID: invalid
6590 *
6591 * @NL80211_PMSR_FTM_REQ_ATTR_ASAP: ASAP mode requested (flag)
6592 * @NL80211_PMSR_FTM_REQ_ATTR_PREAMBLE: preamble type (see
6593 * &enum nl80211_preamble), optional for DMG (u32)
6594 * @NL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP: number of bursts exponent as in
6595 * 802.11-2016 9.4.2.168 "Fine Timing Measurement Parameters element"
6596 * (u8, 0-15, optional with default 15 i.e. "no preference")
6597 * @NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD: interval between bursts in units
6598 * of 100ms (u16, optional with default 0)
6599 * @NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION: burst duration, as in 802.11-2016
6600 * Table 9-257 "Burst Duration field encoding" (u8, 0-15, optional with
6601 * default 15 i.e. "no preference")
6602 * @NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST: number of successful FTM frames
6603 * requested per burst
6604 * (u8, 0-31, optional with default 0 i.e. "no preference")
6605 * @NL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES: number of FTMR frame retries
6606 * (u8, default 3)
6607 * @NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI: request LCI data (flag)
6608 * @NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC: request civic location data
6609 * (flag)
cb07eab1
JB
6610 * @NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED: request trigger based ranging
6611 * measurement (flag).
6612 * This attribute and %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED are
6613 * mutually exclusive.
6614 * if neither %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED nor
6615 * %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED is set, EDCA based
6616 * ranging will be used.
6617 * @NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED: request non trigger based
6618 * ranging measurement (flag)
6619 * This attribute and %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED are
6620 * mutually exclusive.
6621 * if neither %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED nor
6622 * %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED is set, EDCA based
6623 * ranging will be used.
806bb9ac
JB
6624 *
6625 * @NUM_NL80211_PMSR_FTM_REQ_ATTR: internal
6626 * @NL80211_PMSR_FTM_REQ_ATTR_MAX: highest attribute number
6627 */
6628enum nl80211_peer_measurement_ftm_req {
6629 __NL80211_PMSR_FTM_REQ_ATTR_INVALID,
6630
6631 NL80211_PMSR_FTM_REQ_ATTR_ASAP,
6632 NL80211_PMSR_FTM_REQ_ATTR_PREAMBLE,
6633 NL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP,
6634 NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD,
6635 NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION,
6636 NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST,
6637 NL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES,
6638 NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI,
6639 NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC,
cb07eab1
JB
6640 NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED,
6641 NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED,
806bb9ac
JB
6642
6643 /* keep last */
6644 NUM_NL80211_PMSR_FTM_REQ_ATTR,
6645 NL80211_PMSR_FTM_REQ_ATTR_MAX = NUM_NL80211_PMSR_FTM_REQ_ATTR - 1
6646};
6647
6648/**
6649 * enum nl80211_peer_measurement_ftm_failure_reasons - FTM failure reasons
6650 * @NL80211_PMSR_FTM_FAILURE_UNSPECIFIED: unspecified failure, not used
6651 * @NL80211_PMSR_FTM_FAILURE_NO_RESPONSE: no response from the FTM responder
6652 * @NL80211_PMSR_FTM_FAILURE_REJECTED: FTM responder rejected measurement
6653 * @NL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL: we already know the peer is
6654 * on a different channel, so can't measure (if we didn't know, we'd
6655 * try and get no response)
6656 * @NL80211_PMSR_FTM_FAILURE_PEER_NOT_CAPABLE: peer can't actually do FTM
6657 * @NL80211_PMSR_FTM_FAILURE_INVALID_TIMESTAMP: invalid T1/T4 timestamps
6658 * received
6659 * @NL80211_PMSR_FTM_FAILURE_PEER_BUSY: peer reports busy, you may retry
6660 * later (see %NL80211_PMSR_FTM_RESP_ATTR_BUSY_RETRY_TIME)
6661 * @NL80211_PMSR_FTM_FAILURE_BAD_CHANGED_PARAMS: parameters were changed
6662 * by the peer and are no longer supported
6663 */
6664enum nl80211_peer_measurement_ftm_failure_reasons {
6665 NL80211_PMSR_FTM_FAILURE_UNSPECIFIED,
6666 NL80211_PMSR_FTM_FAILURE_NO_RESPONSE,
6667 NL80211_PMSR_FTM_FAILURE_REJECTED,
6668 NL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL,
6669 NL80211_PMSR_FTM_FAILURE_PEER_NOT_CAPABLE,
6670 NL80211_PMSR_FTM_FAILURE_INVALID_TIMESTAMP,
6671 NL80211_PMSR_FTM_FAILURE_PEER_BUSY,
6672 NL80211_PMSR_FTM_FAILURE_BAD_CHANGED_PARAMS,
6673};
6674
6675/**
6676 * enum nl80211_peer_measurement_ftm_resp - FTM response attributes
6677 * @__NL80211_PMSR_FTM_RESP_ATTR_INVALID: invalid
6678 *
6679 * @NL80211_PMSR_FTM_RESP_ATTR_FAIL_REASON: FTM-specific failure reason
6680 * (u32, optional)
6681 * @NL80211_PMSR_FTM_RESP_ATTR_BURST_INDEX: optional, if bursts are reported
6682 * as separate results then it will be the burst index 0...(N-1) and
6683 * the top level will indicate partial results (u32)
6684 * @NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_ATTEMPTS: number of FTM Request frames
6685 * transmitted (u32, optional)
6686 * @NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_SUCCESSES: number of FTM Request frames
6687 * that were acknowleged (u32, optional)
6688 * @NL80211_PMSR_FTM_RESP_ATTR_BUSY_RETRY_TIME: retry time received from the
6689 * busy peer (u32, seconds)
6690 * @NL80211_PMSR_FTM_RESP_ATTR_NUM_BURSTS_EXP: actual number of bursts exponent
6691 * used by the responder (similar to request, u8)
6692 * @NL80211_PMSR_FTM_RESP_ATTR_BURST_DURATION: actual burst duration used by
6693 * the responder (similar to request, u8)
6694 * @NL80211_PMSR_FTM_RESP_ATTR_FTMS_PER_BURST: actual FTMs per burst used
6695 * by the responder (similar to request, u8)
6696 * @NL80211_PMSR_FTM_RESP_ATTR_RSSI_AVG: average RSSI across all FTM action
6697 * frames (optional, s32, 1/2 dBm)
6698 * @NL80211_PMSR_FTM_RESP_ATTR_RSSI_SPREAD: RSSI spread across all FTM action
6699 * frames (optional, s32, 1/2 dBm)
6700 * @NL80211_PMSR_FTM_RESP_ATTR_TX_RATE: bitrate we used for the response to the
6701 * FTM action frame (optional, nested, using &enum nl80211_rate_info
6702 * attributes)
6703 * @NL80211_PMSR_FTM_RESP_ATTR_RX_RATE: bitrate the responder used for the FTM
6704 * action frame (optional, nested, using &enum nl80211_rate_info attrs)
6705 * @NL80211_PMSR_FTM_RESP_ATTR_RTT_AVG: average RTT (s64, picoseconds, optional
6706 * but one of RTT/DIST must be present)
6707 * @NL80211_PMSR_FTM_RESP_ATTR_RTT_VARIANCE: RTT variance (u64, ps^2, note that
6708 * standard deviation is the square root of variance, optional)
6709 * @NL80211_PMSR_FTM_RESP_ATTR_RTT_SPREAD: RTT spread (u64, picoseconds,
6710 * optional)
6711 * @NL80211_PMSR_FTM_RESP_ATTR_DIST_AVG: average distance (s64, mm, optional
6712 * but one of RTT/DIST must be present)
6713 * @NL80211_PMSR_FTM_RESP_ATTR_DIST_VARIANCE: distance variance (u64, mm^2, note
6714 * that standard deviation is the square root of variance, optional)
6715 * @NL80211_PMSR_FTM_RESP_ATTR_DIST_SPREAD: distance spread (u64, mm, optional)
6716 * @NL80211_PMSR_FTM_RESP_ATTR_LCI: LCI data from peer (binary, optional);
6717 * this is the contents of the Measurement Report Element (802.11-2016
6718 * 9.4.2.22.1) starting with the Measurement Token, with Measurement
6719 * Type 8.
6720 * @NL80211_PMSR_FTM_RESP_ATTR_CIVICLOC: civic location data from peer
6721 * (binary, optional);
6722 * this is the contents of the Measurement Report Element (802.11-2016
6723 * 9.4.2.22.1) starting with the Measurement Token, with Measurement
6724 * Type 11.
6725 * @NL80211_PMSR_FTM_RESP_ATTR_PAD: ignore, for u64/s64 padding only
6726 *
6727 * @NUM_NL80211_PMSR_FTM_RESP_ATTR: internal
6728 * @NL80211_PMSR_FTM_RESP_ATTR_MAX: highest attribute number
6729 */
6730enum nl80211_peer_measurement_ftm_resp {
6731 __NL80211_PMSR_FTM_RESP_ATTR_INVALID,
6732
6733 NL80211_PMSR_FTM_RESP_ATTR_FAIL_REASON,
6734 NL80211_PMSR_FTM_RESP_ATTR_BURST_INDEX,
6735 NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_ATTEMPTS,
6736 NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_SUCCESSES,
6737 NL80211_PMSR_FTM_RESP_ATTR_BUSY_RETRY_TIME,
6738 NL80211_PMSR_FTM_RESP_ATTR_NUM_BURSTS_EXP,
6739 NL80211_PMSR_FTM_RESP_ATTR_BURST_DURATION,
6740 NL80211_PMSR_FTM_RESP_ATTR_FTMS_PER_BURST,
6741 NL80211_PMSR_FTM_RESP_ATTR_RSSI_AVG,
6742 NL80211_PMSR_FTM_RESP_ATTR_RSSI_SPREAD,
6743 NL80211_PMSR_FTM_RESP_ATTR_TX_RATE,
6744 NL80211_PMSR_FTM_RESP_ATTR_RX_RATE,
6745 NL80211_PMSR_FTM_RESP_ATTR_RTT_AVG,
6746 NL80211_PMSR_FTM_RESP_ATTR_RTT_VARIANCE,
6747 NL80211_PMSR_FTM_RESP_ATTR_RTT_SPREAD,
6748 NL80211_PMSR_FTM_RESP_ATTR_DIST_AVG,
6749 NL80211_PMSR_FTM_RESP_ATTR_DIST_VARIANCE,
6750 NL80211_PMSR_FTM_RESP_ATTR_DIST_SPREAD,
6751 NL80211_PMSR_FTM_RESP_ATTR_LCI,
6752 NL80211_PMSR_FTM_RESP_ATTR_CIVICLOC,
6753 NL80211_PMSR_FTM_RESP_ATTR_PAD,
6754
6755 /* keep last */
6756 NUM_NL80211_PMSR_FTM_RESP_ATTR,
6757 NL80211_PMSR_FTM_RESP_ATTR_MAX = NUM_NL80211_PMSR_FTM_RESP_ATTR - 1
6758};
6759
a0c07e4f
JB
6760/**
6761 * enum nl80211_obss_pd_attributes - OBSS packet detection attributes
6762 * @__NL80211_HE_OBSS_PD_ATTR_INVALID: Invalid
6763 *
6764 * @NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET: the OBSS PD minimum tx power offset.
6765 * @NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET: the OBSS PD maximum tx power offset.
6766 *
6767 * @__NL80211_HE_OBSS_PD_ATTR_LAST: Internal
6768 * @NL80211_HE_OBSS_PD_ATTR_MAX: highest OBSS PD attribute.
6769 */
6770enum nl80211_obss_pd_attributes {
6771 __NL80211_HE_OBSS_PD_ATTR_INVALID,
6772
6773 NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET,
6774 NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET,
6775
6776 /* keep last */
6777 __NL80211_HE_OBSS_PD_ATTR_LAST,
6778 NL80211_HE_OBSS_PD_ATTR_MAX = __NL80211_HE_OBSS_PD_ATTR_LAST - 1,
6779};
6780
ba300c33
JB
6781/**
6782 * enum nl80211_bss_color_attributes - BSS Color attributes
6783 * @__NL80211_HE_BSS_COLOR_ATTR_INVALID: Invalid
6784 *
6785 * @NL80211_HE_BSS_COLOR_ATTR_COLOR: the current BSS Color.
6786 * @NL80211_HE_BSS_COLOR_ATTR_DISABLED: is BSS coloring disabled.
6787 * @NL80211_HE_BSS_COLOR_ATTR_PARTIAL: the AID equation to be used..
6788 *
6789 * @__NL80211_HE_BSS_COLOR_ATTR_LAST: Internal
6790 * @NL80211_HE_BSS_COLOR_ATTR_MAX: highest BSS Color attribute.
6791 */
6792enum nl80211_bss_color_attributes {
6793 __NL80211_HE_BSS_COLOR_ATTR_INVALID,
6794
6795 NL80211_HE_BSS_COLOR_ATTR_COLOR,
6796 NL80211_HE_BSS_COLOR_ATTR_DISABLED,
6797 NL80211_HE_BSS_COLOR_ATTR_PARTIAL,
6798
6799 /* keep last */
6800 __NL80211_HE_BSS_COLOR_ATTR_LAST,
6801 NL80211_HE_BSS_COLOR_ATTR_MAX = __NL80211_HE_BSS_COLOR_ATTR_LAST - 1,
6802};
6803
6804/**
6805 * enum nl80211_iftype_akm_attributes - interface type AKM attributes
6806 * @__NL80211_IFTYPE_AKM_ATTR_INVALID: Invalid
6807 *
6808 * @NL80211_IFTYPE_AKM_ATTR_IFTYPES: nested attribute containing a flag
6809 * attribute for each interface type that supports AKM suites specified in
6810 * %NL80211_IFTYPE_AKM_ATTR_SUITES
6811 * @NL80211_IFTYPE_AKM_ATTR_SUITES: an array of u32. Used to indicate supported
6812 * AKM suites for the specified interface types.
6813 *
6814 * @__NL80211_IFTYPE_AKM_ATTR_LAST: Internal
6815 * @NL80211_IFTYPE_AKM_ATTR_MAX: highest interface type AKM attribute.
6816 */
6817enum nl80211_iftype_akm_attributes {
6818 __NL80211_IFTYPE_AKM_ATTR_INVALID,
6819
6820 NL80211_IFTYPE_AKM_ATTR_IFTYPES,
6821 NL80211_IFTYPE_AKM_ATTR_SUITES,
6822
6823 /* keep last */
6824 __NL80211_IFTYPE_AKM_ATTR_LAST,
6825 NL80211_IFTYPE_AKM_ATTR_MAX = __NL80211_IFTYPE_AKM_ATTR_LAST - 1,
6826};
a0c07e4f 6827
f408e01b 6828#endif /* __LINUX_NL80211_H */