]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/compat/linuxkpi/common/include/linux/nl80211.h
LinuxKPI: update 802.11 headers
[FreeBSD/FreeBSD.git] / sys / compat / linuxkpi / common / include / linux / nl80211.h
1 /*-
2  * Copyright (c) 2020-2021 The FreeBSD Foundation
3  *
4  * This software was developed by Björn Zeeb under sponsorship from
5  * the FreeBSD Foundation.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26  * SUCH DAMAGE.
27  *
28  * $FreeBSD$
29  */
30
31 #ifndef _LINUXKPI_LINUX_NL80211_H
32 #define _LINUXKPI_LINUX_NL80211_H
33
34 #include <linux/bitops.h>
35
36 enum nl80211_feature_flags {
37         NL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE       = BIT(0),
38         NL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES       = BIT(1),
39         NL80211_FEATURE_HT_IBSS                         = BIT(2),
40         NL80211_FEATURE_LOW_PRIORITY_SCAN               = BIT(3),
41         NL80211_FEATURE_ND_RANDOM_MAC_ADDR              = BIT(4),
42         NL80211_FEATURE_P2P_GO_CTWIN                    = BIT(5),
43         NL80211_FEATURE_P2P_GO_OPPPS                    = BIT(6),
44         NL80211_FEATURE_QUIET                           = BIT(7),
45         NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR            = BIT(8),
46         NL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR      = BIT(9),
47         NL80211_FEATURE_DYNAMIC_SMPS                    = BIT(10),
48         NL80211_FEATURE_STATIC_SMPS                     = BIT(11),
49         NL80211_FEATURE_SUPPORTS_WMM_ADMISSION          = BIT(12),
50         NL80211_FEATURE_TDLS_CHANNEL_SWITCH             = BIT(13),
51         NL80211_FEATURE_TX_POWER_INSERTION              = BIT(14),
52         NL80211_FEATURE_WFA_TPC_IE_IN_PROBES            = BIT(15),
53         NL80211_FEATURE_AP_SCAN                         = BIT(16),
54 };
55
56 enum nl80211_pmsr_ftm_failure_flags {
57         NL80211_PMSR_FTM_FAILURE_NO_RESPONSE            = BIT(0),
58         NL80211_PMSR_FTM_FAILURE_PEER_BUSY              = BIT(1),
59         NL80211_PMSR_FTM_FAILURE_UNSPECIFIED            = BIT(2),
60 };
61
62 enum nl80211_pmsr_status_flags {
63         NL80211_PMSR_STATUS_FAILURE                     = BIT(0),
64         NL80211_PMSR_STATUS_SUCCESS                     = BIT(1),
65         NL80211_PMSR_STATUS_TIMEOUT                     = BIT(2),
66 };
67
68 #define NL80211_PMSR_TYPE_FTM                           1
69
70 enum nl80211_reg_rule_flags {
71         NL80211_RRF_AUTO_BW                             = BIT(0),
72         NL80211_RRF_DFS                                 = BIT(1),
73         NL80211_RRF_GO_CONCURRENT                       = BIT(2),
74         NL80211_RRF_NO_IR                               = BIT(3),
75         NL80211_RRF_NO_OUTDOOR                          = BIT(4),
76         NL80211_RRF_NO_HT40MINUS                        = BIT(5),
77         NL80211_RRF_NO_HT40PLUS                         = BIT(6),
78         NL80211_RRF_NO_80MHZ                            = BIT(7),
79         NL80211_RRF_NO_160MHZ                           = BIT(8),
80         NL80211_RRF_NO_HE                               = BIT(9),
81         NL80211_RRF_NO_OFDM                             = BIT(10),
82 };
83 #define NL80211_RRF_NO_HT40     (NL80211_RRF_NO_HT40MINUS|NL80211_RRF_NO_HT40PLUS)
84
85 enum nl80211_scan_flags {
86         NL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME         = BIT(0),
87         NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION    = BIT(1),
88         NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE    = BIT(2),
89         NL80211_SCAN_FLAG_RANDOM_ADDR                   = BIT(3),
90         NL80211_SCAN_FLAG_COLOCATED_6GHZ                = BIT(4),
91         NL80211_SCAN_FLAG_RANDOM_SN                     = BIT(5),
92         NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP       = BIT(6),
93 };
94
95 #define NL80211_MAX_SUPP_REG_RULES                      512     /* TODO FIXME, random */
96
97 #define NL80211_BSS_CHAN_WIDTH_20                       __LINE__ /* TODO FIXME, brcmfmac */
98
99 enum nl80211_wpa_versions {
100         NL80211_WPA_VERSION_1   = 1,
101         NL80211_WPA_VERSION_2,
102         NL80211_WPA_VERSION_3,
103 };
104
105 enum nl80211_bss_select_attr {
106         __NL80211_BSS_SELECT_ATTR_INVALID       = 0,
107         NL80211_BSS_SELECT_ATTR_BAND_PREF,
108         NL80211_BSS_SELECT_ATTR_RSSI,
109         NL80211_BSS_SELECT_ATTR_RSSI_ADJUST,
110 };
111
112 enum nl80211_sta_flag {
113         /* XXX TODO */
114         NL80211_STA_FLAG_ASSOCIATED,
115         NL80211_STA_FLAG_AUTHENTICATED,
116         NL80211_STA_FLAG_AUTHORIZED,
117         NL80211_STA_FLAG_TDLS_PEER,
118         NL80211_STA_FLAG_WME,
119 };
120
121 enum nl80211_band {
122         /* XXX TODO */
123         NL80211_BAND_2GHZ       = 0,
124         NL80211_BAND_5GHZ,
125         NL80211_BAND_60GHZ,
126         NL80211_BAND_6GHZ,
127
128         /* Keep this last. */
129         NUM_NL80211_BANDS
130 };
131
132 enum nl80211_chan_flags {
133         /* XXX TODO */
134         NL80211_CHAN_NO_HT,
135 };
136
137 enum nl80211_chan_width {
138         /* XXX TODO */
139         NL80211_CHAN_WIDTH_20_NOHT,
140         NL80211_CHAN_WIDTH_20,
141         NL80211_CHAN_WIDTH_40,
142         NL80211_CHAN_WIDTH_80,
143         NL80211_CHAN_WIDTH_80P80,
144         NL80211_CHAN_WIDTH_160,
145         NL80211_CHAN_WIDTH_5,
146         NL80211_CHAN_WIDTH_10,
147 };
148
149 enum nl80211_iftype {
150         /* XXX TODO */
151         NL80211_IFTYPE_UNSPECIFIED,
152         NL80211_IFTYPE_ADHOC,
153         NL80211_IFTYPE_STATION,
154         NL80211_IFTYPE_AP,
155         NL80211_IFTYPE_AP_VLAN,
156         NL80211_IFTYPE_MONITOR,
157         NL80211_IFTYPE_P2P_CLIENT,
158         NL80211_IFTYPE_P2P_DEVICE,
159         NL80211_IFTYPE_P2P_GO,
160         NL80211_IFTYPE_MESH_POINT,
161         NL80211_IFTYPE_WDS,
162
163         /* Keep this last. */
164         NUM_NL80211_IFTYPES
165 };
166
167 enum nl80211_preamble {
168         /* XXX TODO */
169         NL80211_PREAMBLE_LEGACY,
170         NL80211_PREAMBLE_HT,
171         NL80211_PREAMBLE_VHT,
172         NL80211_PREAMBLE_HE,
173 };
174
175 enum nl80211_tdls_operation {
176         /* XXX TODO */
177         NL80211_TDLS_SETUP,
178         NL80211_TDLS_TEARDOWN,
179         NL80211_TDLS_ENABLE_LINK,
180         NL80211_TDLS_DISABLE_LINK,
181         NL80211_TDLS_DISCOVERY_REQ,
182         NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY,
183         NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY,
184 };
185
186 enum nl80211_cqm_rssi_threshold_event {
187         /* XXX TODO */
188         NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW,
189         NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH,
190 };
191
192 enum nl80211_ext_feature {
193         /* XXX TODO */
194         NL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP,
195         NL80211_EXT_FEATURE_BSS_PARENT_TSF,
196         NL80211_EXT_FEATURE_CAN_REPLACE_PTK0,
197         NL80211_EXT_FEATURE_DFS_OFFLOAD,
198         NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER,
199         NL80211_EXT_FEATURE_EXT_KEY_ID,
200         NL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME,
201         NL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER,
202         NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION,
203         NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE,
204         NL80211_EXT_FEATURE_PROTECTED_TWT,
205         NL80211_EXT_FEATURE_SAE_OFFLOAD,
206         NL80211_EXT_FEATURE_SCAN_START_TIME,
207         NL80211_EXT_FEATURE_SET_SCAN_DWELL,
208         NL80211_EXT_FEATURE_VHT_IBSS,
209         NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X,
210         NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK,
211         NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT,
212         NL80211_EXT_FEATURE_SCAN_RANDOM_SN,
213         NL80211_EXT_FEATURE_STA_TX_PWR,
214         NL80211_EXT_FEATURE_CQM_RSSI_LIST,
215         NL80211_EXT_FEATURE_AQL,
216         NL80211_EXT_FEATURE_AIRTIME_FAIRNESS,
217         NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT,
218
219         /* Keep this last. */
220         NUM_NL80211_EXT_FEATURES
221 };
222
223 enum nl80211_sta_info {
224         /* XXX TODO */
225         NL80211_STA_INFO_BEACON_RX,
226         NL80211_STA_INFO_BEACON_SIGNAL_AVG,
227         NL80211_STA_INFO_BSS_PARAM,
228         NL80211_STA_INFO_CHAIN_SIGNAL,
229         NL80211_STA_INFO_CONNECTED_TIME,
230         NL80211_STA_INFO_INACTIVE_TIME,
231         NL80211_STA_INFO_SIGNAL,
232         NL80211_STA_INFO_SIGNAL_AVG,
233         NL80211_STA_INFO_STA_FLAGS,
234         NL80211_STA_INFO_RX_BITRATE,
235         NL80211_STA_INFO_RX_PACKETS,
236         NL80211_STA_INFO_RX_BYTES,
237         NL80211_STA_INFO_RX_DROP_MISC,
238         NL80211_STA_INFO_TX_BITRATE,
239         NL80211_STA_INFO_TX_PACKETS,
240         NL80211_STA_INFO_TX_BYTES,
241         NL80211_STA_INFO_TX_FAILED,
242         NL80211_STA_INFO_TX_RETRIES,
243         NL80211_STA_INFO_RX_DURATION,
244 };
245
246 enum nl80211_ftm_stats {
247         /* XXX TODO */
248         NL80211_FTM_STATS_ASAP_NUM,
249         NL80211_FTM_STATS_FAILED_NUM,
250         NL80211_FTM_STATS_NON_ASAP_NUM,
251         NL80211_FTM_STATS_OUT_OF_WINDOW_TRIGGERS_NUM,
252         NL80211_FTM_STATS_PARTIAL_NUM,
253         NL80211_FTM_STATS_RESCHEDULE_REQUESTS_NUM,
254         NL80211_FTM_STATS_SUCCESS_NUM,
255         NL80211_FTM_STATS_TOTAL_DURATION_MSEC,
256         NL80211_FTM_STATS_UNKNOWN_TRIGGERS_NUM,
257 };
258
259 enum nl80211_reg_initiator {
260         /* XXX TODO */
261         NL80211_REGDOM_SET_BY_USER,
262         NL80211_REGDOM_SET_BY_DRIVER,
263         NL80211_REGDOM_SET_BY_CORE,
264         NL80211_REGDOM_SET_BY_COUNTRY_IE,
265 };
266
267 struct nl80211_sta_flag_update {
268         /* XXX TODO */
269         int     mask, set;
270
271 };
272
273 enum nl80211_tx_power_setting {
274         /* XXX TODO */
275         NL80211_TX_POWER_AUTOMATIC,
276         NL80211_TX_POWER_FIXED,
277         NL80211_TX_POWER_LIMITED,
278 };
279
280 enum nl80211_crit_proto_id {
281         /* XXX TODO */
282         NL80211_CRIT_PROTO_DHCP,
283 };
284
285 enum nl80211_auth_type {
286         NL80211_AUTHTYPE_AUTOMATIC,
287         NL80211_AUTHTYPE_OPEN_SYSTEM,
288         NL80211_AUTHTYPE_SHARED_KEY,
289         NL80211_AUTHTYPE_SAE,
290 };
291
292 enum nl80211_key_type {
293         NL80211_KEYTYPE_GROUP,
294         NL80211_KEYTYPE_PAIRWISE,
295 };
296
297 enum nl80211_rate_info_he_ru_alloc {
298         NL80211_RATE_INFO_HE_RU_ALLOC_26,
299         NL80211_RATE_INFO_HE_RU_ALLOC_52,
300         NL80211_RATE_INFO_HE_RU_ALLOC_106,
301         NL80211_RATE_INFO_HE_RU_ALLOC_242,
302         NL80211_RATE_INFO_HE_RU_ALLOC_484,
303         NL80211_RATE_INFO_HE_RU_ALLOC_996,
304         NL80211_RATE_INFO_HE_RU_ALLOC_2x996,
305 };
306
307 enum nl80211_rate_info_he_gi {
308         NL80211_RATE_INFO_HE_GI_0_8,
309         NL80211_RATE_INFO_HE_GI_1_6,
310         NL80211_RATE_INFO_HE_GI_3_2,
311 };
312
313 enum nl80211_dfs_regions {
314         NL80211_DFS_UNSET,
315         NL80211_DFS_FCC,
316         NL80211_DFS_ETSI,
317         NL80211_DFS_JP,
318 };
319
320 enum nl80211_sar_type {
321         NL80211_SAR_TYPE_POWER,
322 };
323
324 #define NL80211_VHT_NSS_MAX                     8
325
326 enum nl80211_tid_cfg_attr {
327         NL80211_TID_CONFIG_ATTR_NOACK,
328         NL80211_TID_CONFIG_ATTR_RETRY_SHORT,
329         NL80211_TID_CONFIG_ATTR_TX_RATE_TYPE,
330         NL80211_TID_CONFIG_ATTR_TX_RATE,
331         NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL,
332         NL80211_TID_CONFIG_ATTR_RETRY_LONG,
333         NL80211_TID_CONFIG_ATTR_AMPDU_CTRL,
334 };
335
336 enum nl80211_tid_config {
337         NL80211_TID_CONFIG_ENABLE,
338 };
339
340 enum nl80211_tx_rate_setting {
341         NL80211_TX_RATE_AUTOMATIC,
342         NL80211_TX_RATE_FIXED,
343         NL80211_TX_RATE_LIMITED,
344 };
345
346 enum nl80211_txrate_gi {
347         NL80211_TXRATE_FORCE_LGI,
348 };
349
350 enum nl80211_probe_resp_offload_support {
351         NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2,
352         NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS,
353         NL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P,
354 };
355
356 #endif  /* _LINUXKPI_LINUX_NL80211_H */