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