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