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
50enum 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
56enum 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 */
89enum 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__ */
107

source code of linux/include/uapi/linux/nl80211-vnd-intel.h