GNU Linux-libre 6.0.15-gnu
[releases.git] / include / uapi / linux / nl80211-vnd-intel.h
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 /*
3  * Copyright (C) 2012-2014, 2018-2021 Intel Corporation
4  * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
5  * Copyright (C) 2016-2017 Intel Deutschland GmbH
6  */
7 #ifndef __VENDOR_CMD_INTEL_H__
8 #define __VENDOR_CMD_INTEL_H__
9
10 #define INTEL_OUI       0x001735
11
12 /**
13  * enum iwl_mvm_vendor_cmd - supported vendor commands
14  * @IWL_MVM_VENDOR_CMD_GET_CSME_CONN_INFO: reports CSME connection info.
15  * @IWL_MVM_VENDOR_CMD_HOST_GET_OWNERSHIP: asks for ownership on the device.
16  *      This is useful when the CSME firmware owns the device and the kernel
17  *      wants to use it. In case the CSME firmware has no connection active the
18  *      kernel will manage on its own to get ownership of the device.
19  *      When the CSME firmware has an active connection, the user space
20  *      involvement is required. The kernel will assert the RFKILL signal with
21  *      the "device not owned" reason so that nobody can touch the device. Then
22  *      the user space can run the following flow to be able to get connected
23  *      to the very same AP the CSME firmware is currently connected to:
24  *
25  *      1) The user space (NetworkManager) boots and sees that the device is
26  *          in RFKILL because the host doesn't own the device
27  *      2) The user space asks the kernel what AP the CSME firmware is
28  *         connected to (with %IWL_MVM_VENDOR_CMD_GET_CSME_CONN_INFO)
29  *      3) The user space checks if it has a profile that matches the reply
30  *         from the CSME firmware
31  *      4) The user space installs a network to the wpa_supplicant with a
32  *         specific BSSID and a specific frequency
33  *      5) The user space prevents any type of full scan
34  *      6) The user space asks iwlmei to request ownership on the device (with
35  *         this command)
36  *      7) iwlmei requests ownership from the CSME firmware
37  *      8) The CSME firmware grants ownership
38  *      9) iwlmei tells iwlwifi to lift the RFKILL
39  *      10) RFKILL OFF is reported to user space
40  *      11) The host boots the device, loads the firwmare, and connects to a
41  *          specific BSSID without scanning including IP as fast as it can
42  *      12) The host reports to the CSME firmware that there is a connection
43  *      13) The TCP connection is preserved and the host has connectivity
44  *
45  * @IWL_MVM_VENDOR_CMD_ROAMING_FORBIDDEN_EVENT: notifies if roaming is allowed.
46  *      It contains a &IWL_MVM_VENDOR_ATTR_ROAMING_FORBIDDEN and a
47  *      &IWL_MVM_VENDOR_ATTR_VIF_ADDR attributes.
48  */
49
50 enum iwl_mvm_vendor_cmd {
51         IWL_MVM_VENDOR_CMD_GET_CSME_CONN_INFO                   = 0x2d,
52         IWL_MVM_VENDOR_CMD_HOST_GET_OWNERSHIP                   = 0x30,
53         IWL_MVM_VENDOR_CMD_ROAMING_FORBIDDEN_EVENT              = 0x32,
54 };
55
56 enum iwl_vendor_auth_akm_mode {
57         IWL_VENDOR_AUTH_OPEN,
58         IWL_VENDOR_AUTH_RSNA = 0x6,
59         IWL_VENDOR_AUTH_RSNA_PSK,
60         IWL_VENDOR_AUTH_SAE = 0x9,
61         IWL_VENDOR_AUTH_MAX,
62 };
63
64 /**
65  * enum iwl_mvm_vendor_attr - attributes used in vendor commands
66  * @__IWL_MVM_VENDOR_ATTR_INVALID: attribute 0 is invalid
67  * @IWL_MVM_VENDOR_ATTR_VIF_ADDR: interface MAC address
68  * @IWL_MVM_VENDOR_ATTR_ADDR: MAC address
69  * @IWL_MVM_VENDOR_ATTR_SSID: SSID (binary attribute, 0..32 octets)
70  * @IWL_MVM_VENDOR_ATTR_STA_CIPHER: the cipher to use for the station with the
71  *      mac address specified in &IWL_MVM_VENDOR_ATTR_ADDR.
72  * @IWL_MVM_VENDOR_ATTR_ROAMING_FORBIDDEN: u8 attribute. Indicates whether
73  *      roaming is forbidden or not. Value 1 means roaming is forbidden,
74  *      0 mean roaming is allowed.
75  * @IWL_MVM_VENDOR_ATTR_AUTH_MODE: u32 attribute. Authentication mode type
76  *      as specified in &enum iwl_vendor_auth_akm_mode.
77  * @IWL_MVM_VENDOR_ATTR_CHANNEL_NUM: u8 attribute. Contains channel number.
78  * @IWL_MVM_VENDOR_ATTR_BAND: u8 attribute.
79  *      0 for 2.4 GHz band, 1 for 5.2GHz band and 2 for 6GHz band.
80  * @IWL_MVM_VENDOR_ATTR_COLLOC_CHANNEL: u32 attribute. Channel number of
81  *      collocated AP. Relevant for 6GHz AP info.
82  * @IWL_MVM_VENDOR_ATTR_COLLOC_ADDR: MAC address of a collocated AP.
83  *      Relevant for 6GHz AP info.
84  *
85  * @NUM_IWL_MVM_VENDOR_ATTR: number of vendor attributes
86  * @MAX_IWL_MVM_VENDOR_ATTR: highest vendor attribute number
87
88  */
89 enum iwl_mvm_vendor_attr {
90         __IWL_MVM_VENDOR_ATTR_INVALID                           = 0x00,
91         IWL_MVM_VENDOR_ATTR_VIF_ADDR                            = 0x02,
92         IWL_MVM_VENDOR_ATTR_ADDR                                = 0x0a,
93         IWL_MVM_VENDOR_ATTR_SSID                                = 0x3d,
94         IWL_MVM_VENDOR_ATTR_STA_CIPHER                          = 0x51,
95         IWL_MVM_VENDOR_ATTR_ROAMING_FORBIDDEN                   = 0x64,
96         IWL_MVM_VENDOR_ATTR_AUTH_MODE                           = 0x65,
97         IWL_MVM_VENDOR_ATTR_CHANNEL_NUM                         = 0x66,
98         IWL_MVM_VENDOR_ATTR_BAND                                = 0x69,
99         IWL_MVM_VENDOR_ATTR_COLLOC_CHANNEL                      = 0x70,
100         IWL_MVM_VENDOR_ATTR_COLLOC_ADDR                         = 0x71,
101
102         NUM_IWL_MVM_VENDOR_ATTR,
103         MAX_IWL_MVM_VENDOR_ATTR = NUM_IWL_MVM_VENDOR_ATTR - 1,
104 };
105
106 #endif /* __VENDOR_CMD_INTEL_H__ */