Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
0002 /*
0003  * Copyright (C) 2012-2014, 2018-2021 Intel Corporation
0004  * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
0005  * Copyright (C) 2016-2017 Intel Deutschland GmbH
0006  */
0007 #ifndef __VENDOR_CMD_INTEL_H__
0008 #define __VENDOR_CMD_INTEL_H__
0009 
0010 #define INTEL_OUI   0x001735
0011 
0012 /**
0013  * enum iwl_mvm_vendor_cmd - supported vendor commands
0014  * @IWL_MVM_VENDOR_CMD_GET_CSME_CONN_INFO: reports CSME connection info.
0015  * @IWL_MVM_VENDOR_CMD_HOST_GET_OWNERSHIP: asks for ownership on the device.
0016  *  This is useful when the CSME firmware owns the device and the kernel
0017  *  wants to use it. In case the CSME firmware has no connection active the
0018  *  kernel will manage on its own to get ownership of the device.
0019  *  When the CSME firmware has an active connection, the user space
0020  *  involvement is required. The kernel will assert the RFKILL signal with
0021  *  the "device not owned" reason so that nobody can touch the device. Then
0022  *  the user space can run the following flow to be able to get connected
0023  *  to the very same AP the CSME firmware is currently connected to:
0024  *
0025  *  1) The user space (NetworkManager) boots and sees that the device is
0026  *      in RFKILL because the host doesn't own the device
0027  *  2) The user space asks the kernel what AP the CSME firmware is
0028  *     connected to (with %IWL_MVM_VENDOR_CMD_GET_CSME_CONN_INFO)
0029  *  3) The user space checks if it has a profile that matches the reply
0030  *     from the CSME firmware
0031  *  4) The user space installs a network to the wpa_supplicant with a
0032  *     specific BSSID and a specific frequency
0033  *  5) The user space prevents any type of full scan
0034  *  6) The user space asks iwlmei to request ownership on the device (with
0035  *     this command)
0036  *  7) iwlmei requests ownership from the CSME firmware
0037  *  8) The CSME firmware grants ownership
0038  *  9) iwlmei tells iwlwifi to lift the RFKILL
0039  *  10) RFKILL OFF is reported to user space
0040  *  11) The host boots the device, loads the firwmare, and connects to a
0041  *      specific BSSID without scanning including IP as fast as it can
0042  *  12) The host reports to the CSME firmware that there is a connection
0043  *  13) The TCP connection is preserved and the host has connectivity
0044  *
0045  * @IWL_MVM_VENDOR_CMD_ROAMING_FORBIDDEN_EVENT: notifies if roaming is allowed.
0046  *  It contains a &IWL_MVM_VENDOR_ATTR_ROAMING_FORBIDDEN and a
0047  *  &IWL_MVM_VENDOR_ATTR_VIF_ADDR attributes.
0048  */
0049 
0050 enum iwl_mvm_vendor_cmd {
0051     IWL_MVM_VENDOR_CMD_GET_CSME_CONN_INFO           = 0x2d,
0052     IWL_MVM_VENDOR_CMD_HOST_GET_OWNERSHIP           = 0x30,
0053     IWL_MVM_VENDOR_CMD_ROAMING_FORBIDDEN_EVENT      = 0x32,
0054 };
0055 
0056 enum iwl_vendor_auth_akm_mode {
0057     IWL_VENDOR_AUTH_OPEN,
0058     IWL_VENDOR_AUTH_RSNA = 0x6,
0059     IWL_VENDOR_AUTH_RSNA_PSK,
0060     IWL_VENDOR_AUTH_SAE = 0x9,
0061     IWL_VENDOR_AUTH_MAX,
0062 };
0063 
0064 /**
0065  * enum iwl_mvm_vendor_attr - attributes used in vendor commands
0066  * @__IWL_MVM_VENDOR_ATTR_INVALID: attribute 0 is invalid
0067  * @IWL_MVM_VENDOR_ATTR_VIF_ADDR: interface MAC address
0068  * @IWL_MVM_VENDOR_ATTR_ADDR: MAC address
0069  * @IWL_MVM_VENDOR_ATTR_SSID: SSID (binary attribute, 0..32 octets)
0070  * @IWL_MVM_VENDOR_ATTR_STA_CIPHER: the cipher to use for the station with the
0071  *  mac address specified in &IWL_MVM_VENDOR_ATTR_ADDR.
0072  * @IWL_MVM_VENDOR_ATTR_ROAMING_FORBIDDEN: u8 attribute. Indicates whether
0073  *  roaming is forbidden or not. Value 1 means roaming is forbidden,
0074  *  0 mean roaming is allowed.
0075  * @IWL_MVM_VENDOR_ATTR_AUTH_MODE: u32 attribute. Authentication mode type
0076  *  as specified in &enum iwl_vendor_auth_akm_mode.
0077  * @IWL_MVM_VENDOR_ATTR_CHANNEL_NUM: u8 attribute. Contains channel number.
0078  * @IWL_MVM_VENDOR_ATTR_BAND: u8 attribute.
0079  *  0 for 2.4 GHz band, 1 for 5.2GHz band and 2 for 6GHz band.
0080  * @IWL_MVM_VENDOR_ATTR_COLLOC_CHANNEL: u32 attribute. Channel number of
0081  *  collocated AP. Relevant for 6GHz AP info.
0082  * @IWL_MVM_VENDOR_ATTR_COLLOC_ADDR: MAC address of a collocated AP.
0083  *  Relevant for 6GHz AP info.
0084  *
0085  * @NUM_IWL_MVM_VENDOR_ATTR: number of vendor attributes
0086  * @MAX_IWL_MVM_VENDOR_ATTR: highest vendor attribute number
0087 
0088  */
0089 enum iwl_mvm_vendor_attr {
0090     __IWL_MVM_VENDOR_ATTR_INVALID               = 0x00,
0091     IWL_MVM_VENDOR_ATTR_VIF_ADDR                = 0x02,
0092     IWL_MVM_VENDOR_ATTR_ADDR                = 0x0a,
0093     IWL_MVM_VENDOR_ATTR_SSID                = 0x3d,
0094     IWL_MVM_VENDOR_ATTR_STA_CIPHER              = 0x51,
0095     IWL_MVM_VENDOR_ATTR_ROAMING_FORBIDDEN           = 0x64,
0096     IWL_MVM_VENDOR_ATTR_AUTH_MODE               = 0x65,
0097     IWL_MVM_VENDOR_ATTR_CHANNEL_NUM             = 0x66,
0098     IWL_MVM_VENDOR_ATTR_BAND                = 0x69,
0099     IWL_MVM_VENDOR_ATTR_COLLOC_CHANNEL          = 0x70,
0100     IWL_MVM_VENDOR_ATTR_COLLOC_ADDR             = 0x71,
0101 
0102     NUM_IWL_MVM_VENDOR_ATTR,
0103     MAX_IWL_MVM_VENDOR_ATTR = NUM_IWL_MVM_VENDOR_ATTR - 1,
0104 };
0105 
0106 #endif /* __VENDOR_CMD_INTEL_H__ */