12be7d22fSVladimir Kondratiev /* 2b874ddecSLior David * Copyright (c) 2012-2016 Qualcomm Atheros, Inc. 3b874ddecSLior David * Copyright (c) 2006-2012 Wilocity 42be7d22fSVladimir Kondratiev * 52be7d22fSVladimir Kondratiev * Permission to use, copy, modify, and/or distribute this software for any 62be7d22fSVladimir Kondratiev * purpose with or without fee is hereby granted, provided that the above 72be7d22fSVladimir Kondratiev * copyright notice and this permission notice appear in all copies. 82be7d22fSVladimir Kondratiev * 92be7d22fSVladimir Kondratiev * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 102be7d22fSVladimir Kondratiev * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 112be7d22fSVladimir Kondratiev * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 122be7d22fSVladimir Kondratiev * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 132be7d22fSVladimir Kondratiev * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 142be7d22fSVladimir Kondratiev * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 152be7d22fSVladimir Kondratiev * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 162be7d22fSVladimir Kondratiev */ 172be7d22fSVladimir Kondratiev 182be7d22fSVladimir Kondratiev /* 192be7d22fSVladimir Kondratiev * This file contains the definitions of the WMI protocol specified in the 20b874ddecSLior David * Wireless Module Interface (WMI) for the Qualcomm 21b874ddecSLior David * 60 GHz wireless solution. 222be7d22fSVladimir Kondratiev * It includes definitions of all the commands and events. 232be7d22fSVladimir Kondratiev * Commands are messages from the host to the WM. 242be7d22fSVladimir Kondratiev * Events are messages from the WM to the host. 25b874ddecSLior David * 26b874ddecSLior David * This is an automatically generated file. 272be7d22fSVladimir Kondratiev */ 282be7d22fSVladimir Kondratiev 292be7d22fSVladimir Kondratiev #ifndef __WILOCITY_WMI_H__ 302be7d22fSVladimir Kondratiev #define __WILOCITY_WMI_H__ 312be7d22fSVladimir Kondratiev 322be7d22fSVladimir Kondratiev /* General */ 33b874ddecSLior David #define WMI_MAX_ASSOC_STA (8) 34b874ddecSLior David #define WMI_DEFAULT_ASSOC_STA (1) 352be7d22fSVladimir Kondratiev #define WMI_MAC_LEN (6) 362be7d22fSVladimir Kondratiev #define WMI_PROX_RANGE_NUM (3) 37b874ddecSLior David #define WMI_MAX_LOSS_DMG_BEACONS (20) 38b874ddecSLior David 39b874ddecSLior David /* Mailbox interface 40b874ddecSLior David * used for commands and events 41b874ddecSLior David */ 42b874ddecSLior David enum wmi_mid { 43b874ddecSLior David MID_DEFAULT = 0x00, 44b874ddecSLior David FIRST_DBG_MID_ID = 0x10, 45b874ddecSLior David LAST_DBG_MID_ID = 0xFE, 46b874ddecSLior David MID_BROADCAST = 0xFF, 47b874ddecSLior David }; 48b874ddecSLior David 49b874ddecSLior David /* WMI_CMD_HDR */ 50b874ddecSLior David struct wmi_cmd_hdr { 51b874ddecSLior David u8 mid; 52b874ddecSLior David u8 reserved; 53b874ddecSLior David __le16 command_id; 54b874ddecSLior David __le32 fw_timestamp; 55b874ddecSLior David } __packed; 562be7d22fSVladimir Kondratiev 572be7d22fSVladimir Kondratiev /* List of Commands */ 582be7d22fSVladimir Kondratiev enum wmi_command_id { 59b874ddecSLior David WMI_CONNECT_CMDID = 0x01, 60b874ddecSLior David WMI_DISCONNECT_CMDID = 0x03, 61b874ddecSLior David WMI_DISCONNECT_STA_CMDID = 0x04, 62b874ddecSLior David WMI_START_SCAN_CMDID = 0x07, 63b874ddecSLior David WMI_SET_BSS_FILTER_CMDID = 0x09, 64b874ddecSLior David WMI_SET_PROBED_SSID_CMDID = 0x0A, 65b874ddecSLior David WMI_SET_LISTEN_INT_CMDID = 0x0B, 66b874ddecSLior David WMI_BCON_CTRL_CMDID = 0x0F, 67b874ddecSLior David WMI_ADD_CIPHER_KEY_CMDID = 0x16, 68b874ddecSLior David WMI_DELETE_CIPHER_KEY_CMDID = 0x17, 69b874ddecSLior David WMI_PCP_CONF_CMDID = 0x18, 70b874ddecSLior David WMI_SET_APPIE_CMDID = 0x3F, 71b874ddecSLior David WMI_SET_WSC_STATUS_CMDID = 0x41, 72b874ddecSLior David WMI_PXMT_RANGE_CFG_CMDID = 0x42, 73b874ddecSLior David WMI_PXMT_SNR2_RANGE_CFG_CMDID = 0x43, 74b874ddecSLior David WMI_MEM_READ_CMDID = 0x800, 75b874ddecSLior David WMI_MEM_WR_CMDID = 0x801, 76b874ddecSLior David WMI_ECHO_CMDID = 0x803, 77b874ddecSLior David WMI_DEEP_ECHO_CMDID = 0x804, 78b874ddecSLior David WMI_CONFIG_MAC_CMDID = 0x805, 79b874ddecSLior David WMI_CONFIG_PHY_DEBUG_CMDID = 0x806, 80b874ddecSLior David WMI_ADD_DEBUG_TX_PCKT_CMDID = 0x808, 81b874ddecSLior David WMI_PHY_GET_STATISTICS_CMDID = 0x809, 82b874ddecSLior David WMI_FS_TUNE_CMDID = 0x80A, 83b874ddecSLior David WMI_CORR_MEASURE_CMDID = 0x80B, 84b874ddecSLior David WMI_READ_RSSI_CMDID = 0x80C, 85b874ddecSLior David WMI_TEMP_SENSE_CMDID = 0x80E, 86b874ddecSLior David WMI_DC_CALIB_CMDID = 0x80F, 87b874ddecSLior David WMI_SEND_TONE_CMDID = 0x810, 88b874ddecSLior David WMI_IQ_TX_CALIB_CMDID = 0x811, 89b874ddecSLior David WMI_IQ_RX_CALIB_CMDID = 0x812, 90b874ddecSLior David WMI_SET_UCODE_IDLE_CMDID = 0x813, 91b874ddecSLior David WMI_SET_WORK_MODE_CMDID = 0x815, 92b874ddecSLior David WMI_LO_LEAKAGE_CALIB_CMDID = 0x816, 93b874ddecSLior David WMI_MARLON_R_READ_CMDID = 0x818, 94b874ddecSLior David WMI_MARLON_R_WRITE_CMDID = 0x819, 95b874ddecSLior David WMI_MARLON_R_TXRX_SEL_CMDID = 0x81A, 96b874ddecSLior David MAC_IO_STATIC_PARAMS_CMDID = 0x81B, 97b874ddecSLior David MAC_IO_DYNAMIC_PARAMS_CMDID = 0x81C, 98b874ddecSLior David WMI_SILENT_RSSI_CALIB_CMDID = 0x81D, 99b874ddecSLior David WMI_RF_RX_TEST_CMDID = 0x81E, 100b874ddecSLior David WMI_CFG_RX_CHAIN_CMDID = 0x820, 101b874ddecSLior David WMI_VRING_CFG_CMDID = 0x821, 102b874ddecSLior David WMI_BCAST_VRING_CFG_CMDID = 0x822, 103b874ddecSLior David WMI_VRING_BA_EN_CMDID = 0x823, 104b874ddecSLior David WMI_VRING_BA_DIS_CMDID = 0x824, 105b874ddecSLior David WMI_RCP_ADDBA_RESP_CMDID = 0x825, 106b874ddecSLior David WMI_RCP_DELBA_CMDID = 0x826, 107b874ddecSLior David WMI_SET_SSID_CMDID = 0x827, 108b874ddecSLior David WMI_GET_SSID_CMDID = 0x828, 109b874ddecSLior David WMI_SET_PCP_CHANNEL_CMDID = 0x829, 110b874ddecSLior David WMI_GET_PCP_CHANNEL_CMDID = 0x82A, 111b874ddecSLior David WMI_SW_TX_REQ_CMDID = 0x82B, 112b874ddecSLior David WMI_READ_MAC_RXQ_CMDID = 0x830, 113b874ddecSLior David WMI_READ_MAC_TXQ_CMDID = 0x831, 114b874ddecSLior David WMI_WRITE_MAC_RXQ_CMDID = 0x832, 115b874ddecSLior David WMI_WRITE_MAC_TXQ_CMDID = 0x833, 116b874ddecSLior David WMI_WRITE_MAC_XQ_FIELD_CMDID = 0x834, 117b874ddecSLior David WMI_MLME_PUSH_CMDID = 0x835, 118b874ddecSLior David WMI_BEAMFORMING_MGMT_CMDID = 0x836, 119b874ddecSLior David WMI_BF_TXSS_MGMT_CMDID = 0x837, 120b874ddecSLior David WMI_BF_SM_MGMT_CMDID = 0x838, 121b874ddecSLior David WMI_BF_RXSS_MGMT_CMDID = 0x839, 122b874ddecSLior David WMI_BF_TRIG_CMDID = 0x83A, 123b874ddecSLior David WMI_SET_SECTORS_CMDID = 0x849, 124b874ddecSLior David WMI_MAINTAIN_PAUSE_CMDID = 0x850, 125b874ddecSLior David WMI_MAINTAIN_RESUME_CMDID = 0x851, 126b874ddecSLior David WMI_RS_MGMT_CMDID = 0x852, 127b874ddecSLior David WMI_RF_MGMT_CMDID = 0x853, 128b874ddecSLior David WMI_THERMAL_THROTTLING_CTRL_CMDID = 0x854, 129b874ddecSLior David WMI_THERMAL_THROTTLING_GET_STATUS_CMDID = 0x855, 130b874ddecSLior David WMI_OTP_READ_CMDID = 0x856, 131b874ddecSLior David WMI_OTP_WRITE_CMDID = 0x857, 132*10d599adSMaya Erez WMI_LED_CFG_CMDID = 0x858, 1332be7d22fSVladimir Kondratiev /* Performance monitoring commands */ 134b874ddecSLior David WMI_BF_CTRL_CMDID = 0x862, 135b874ddecSLior David WMI_NOTIFY_REQ_CMDID = 0x863, 136b874ddecSLior David WMI_GET_STATUS_CMDID = 0x864, 137b874ddecSLior David WMI_UNIT_TEST_CMDID = 0x900, 138b874ddecSLior David WMI_HICCUP_CMDID = 0x901, 139b874ddecSLior David WMI_FLASH_READ_CMDID = 0x902, 140b874ddecSLior David WMI_FLASH_WRITE_CMDID = 0x903, 141b8023177SVladimir Kondratiev /* P2P */ 142b874ddecSLior David WMI_P2P_CFG_CMDID = 0x910, 143b874ddecSLior David WMI_PORT_ALLOCATE_CMDID = 0x911, 144b874ddecSLior David WMI_PORT_DELETE_CMDID = 0x912, 145b874ddecSLior David WMI_POWER_MGMT_CFG_CMDID = 0x913, 146b874ddecSLior David WMI_START_LISTEN_CMDID = 0x914, 147b874ddecSLior David WMI_START_SEARCH_CMDID = 0x915, 148b874ddecSLior David WMI_DISCOVERY_START_CMDID = 0x916, 149b874ddecSLior David WMI_DISCOVERY_STOP_CMDID = 0x917, 150b874ddecSLior David WMI_PCP_START_CMDID = 0x918, 151b874ddecSLior David WMI_PCP_STOP_CMDID = 0x919, 152b874ddecSLior David WMI_GET_PCP_FACTOR_CMDID = 0x91B, 153b874ddecSLior David WMI_SET_MAC_ADDRESS_CMDID = 0xF003, 154b874ddecSLior David WMI_ABORT_SCAN_CMDID = 0xF007, 155b874ddecSLior David WMI_SET_PROMISCUOUS_MODE_CMDID = 0xF041, 156b874ddecSLior David WMI_GET_PMK_CMDID = 0xF048, 157b874ddecSLior David WMI_SET_PASSPHRASE_CMDID = 0xF049, 158b874ddecSLior David WMI_SEND_ASSOC_RES_CMDID = 0xF04A, 159b874ddecSLior David WMI_SET_ASSOC_REQ_RELAY_CMDID = 0xF04B, 160b874ddecSLior David WMI_MAC_ADDR_REQ_CMDID = 0xF04D, 161b874ddecSLior David WMI_FW_VER_CMDID = 0xF04E, 162b874ddecSLior David WMI_PMC_CMDID = 0xF04F, 1632be7d22fSVladimir Kondratiev }; 1642be7d22fSVladimir Kondratiev 165b874ddecSLior David /* WMI_CONNECT_CMDID */ 1662be7d22fSVladimir Kondratiev enum wmi_network_type { 1672be7d22fSVladimir Kondratiev WMI_NETTYPE_INFRA = 0x01, 1682be7d22fSVladimir Kondratiev WMI_NETTYPE_ADHOC = 0x02, 1692be7d22fSVladimir Kondratiev WMI_NETTYPE_ADHOC_CREATOR = 0x04, 1702be7d22fSVladimir Kondratiev WMI_NETTYPE_AP = 0x10, 1712be7d22fSVladimir Kondratiev WMI_NETTYPE_P2P = 0x20, 172b874ddecSLior David /* PCIE over 60g */ 173b874ddecSLior David WMI_NETTYPE_WBE = 0x40, 1742be7d22fSVladimir Kondratiev }; 1752be7d22fSVladimir Kondratiev 1762be7d22fSVladimir Kondratiev enum wmi_dot11_auth_mode { 1772be7d22fSVladimir Kondratiev WMI_AUTH11_OPEN = 0x01, 1782be7d22fSVladimir Kondratiev WMI_AUTH11_SHARED = 0x02, 1792be7d22fSVladimir Kondratiev WMI_AUTH11_LEAP = 0x04, 1802be7d22fSVladimir Kondratiev WMI_AUTH11_WSC = 0x08, 1812be7d22fSVladimir Kondratiev }; 1822be7d22fSVladimir Kondratiev 1832be7d22fSVladimir Kondratiev enum wmi_auth_mode { 1842be7d22fSVladimir Kondratiev WMI_AUTH_NONE = 0x01, 1852be7d22fSVladimir Kondratiev WMI_AUTH_WPA = 0x02, 1862be7d22fSVladimir Kondratiev WMI_AUTH_WPA2 = 0x04, 1872be7d22fSVladimir Kondratiev WMI_AUTH_WPA_PSK = 0x08, 1882be7d22fSVladimir Kondratiev WMI_AUTH_WPA2_PSK = 0x10, 1892be7d22fSVladimir Kondratiev WMI_AUTH_WPA_CCKM = 0x20, 1902be7d22fSVladimir Kondratiev WMI_AUTH_WPA2_CCKM = 0x40, 1912be7d22fSVladimir Kondratiev }; 1922be7d22fSVladimir Kondratiev 1932be7d22fSVladimir Kondratiev enum wmi_crypto_type { 1942be7d22fSVladimir Kondratiev WMI_CRYPT_NONE = 0x01, 1952be7d22fSVladimir Kondratiev WMI_CRYPT_AES_GCMP = 0x20, 1962be7d22fSVladimir Kondratiev }; 1972be7d22fSVladimir Kondratiev 1982be7d22fSVladimir Kondratiev enum wmi_connect_ctrl_flag_bits { 199b874ddecSLior David WMI_CONNECT_ASSOC_POLICY_USER = 0x01, 200b874ddecSLior David WMI_CONNECT_SEND_REASSOC = 0x02, 201b874ddecSLior David WMI_CONNECT_IGNORE_WPA_GROUP_CIPHER = 0x04, 202b874ddecSLior David WMI_CONNECT_PROFILE_MATCH_DONE = 0x08, 203b874ddecSLior David WMI_CONNECT_IGNORE_AAC_BEACON = 0x10, 204b874ddecSLior David WMI_CONNECT_CSA_FOLLOW_BSS = 0x20, 205b874ddecSLior David WMI_CONNECT_DO_WPA_OFFLOAD = 0x40, 206b874ddecSLior David WMI_CONNECT_DO_NOT_DEAUTH = 0x80, 2072be7d22fSVladimir Kondratiev }; 2082be7d22fSVladimir Kondratiev 2092be7d22fSVladimir Kondratiev #define WMI_MAX_SSID_LEN (32) 2102be7d22fSVladimir Kondratiev 211b874ddecSLior David /* WMI_CONNECT_CMDID */ 2122be7d22fSVladimir Kondratiev struct wmi_connect_cmd { 2132be7d22fSVladimir Kondratiev u8 network_type; 2142be7d22fSVladimir Kondratiev u8 dot11_auth_mode; 2152be7d22fSVladimir Kondratiev u8 auth_mode; 2162be7d22fSVladimir Kondratiev u8 pairwise_crypto_type; 2172be7d22fSVladimir Kondratiev u8 pairwise_crypto_len; 2182be7d22fSVladimir Kondratiev u8 group_crypto_type; 2192be7d22fSVladimir Kondratiev u8 group_crypto_len; 2202be7d22fSVladimir Kondratiev u8 ssid_len; 2212be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 2222be7d22fSVladimir Kondratiev u8 channel; 2232be7d22fSVladimir Kondratiev u8 reserved0; 2242be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 2252be7d22fSVladimir Kondratiev __le32 ctrl_flags; 2262be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 2272be7d22fSVladimir Kondratiev u8 reserved1[2]; 2282be7d22fSVladimir Kondratiev } __packed; 2292be7d22fSVladimir Kondratiev 230b874ddecSLior David /* WMI_DISCONNECT_STA_CMDID */ 231b8023177SVladimir Kondratiev struct wmi_disconnect_sta_cmd { 232b8023177SVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 233b8023177SVladimir Kondratiev __le16 disconnect_reason; 234b8023177SVladimir Kondratiev } __packed; 2352be7d22fSVladimir Kondratiev 2362be7d22fSVladimir Kondratiev #define WMI_MAX_KEY_INDEX (3) 2372be7d22fSVladimir Kondratiev #define WMI_MAX_KEY_LEN (32) 2382be7d22fSVladimir Kondratiev #define WMI_PASSPHRASE_LEN (64) 2392be7d22fSVladimir Kondratiev 240b874ddecSLior David /* WMI_SET_PASSPHRASE_CMDID */ 2412be7d22fSVladimir Kondratiev struct wmi_set_passphrase_cmd { 2422be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 2432be7d22fSVladimir Kondratiev u8 passphrase[WMI_PASSPHRASE_LEN]; 2442be7d22fSVladimir Kondratiev u8 ssid_len; 2452be7d22fSVladimir Kondratiev u8 passphrase_len; 2462be7d22fSVladimir Kondratiev } __packed; 2472be7d22fSVladimir Kondratiev 248b874ddecSLior David /* WMI_ADD_CIPHER_KEY_CMDID */ 2492be7d22fSVladimir Kondratiev enum wmi_key_usage { 250b874ddecSLior David WMI_KEY_USE_PAIRWISE = 0x00, 251b874ddecSLior David WMI_KEY_USE_RX_GROUP = 0x01, 252b874ddecSLior David WMI_KEY_USE_TX_GROUP = 0x02, 2532be7d22fSVladimir Kondratiev }; 2542be7d22fSVladimir Kondratiev 2552be7d22fSVladimir Kondratiev struct wmi_add_cipher_key_cmd { 2562be7d22fSVladimir Kondratiev u8 key_index; 2572be7d22fSVladimir Kondratiev u8 key_type; 258b874ddecSLior David /* enum wmi_key_usage */ 259b874ddecSLior David u8 key_usage; 2602be7d22fSVladimir Kondratiev u8 key_len; 261b874ddecSLior David /* key replay sequence counter */ 262b874ddecSLior David u8 key_rsc[8]; 2632be7d22fSVladimir Kondratiev u8 key[WMI_MAX_KEY_LEN]; 264b874ddecSLior David /* Additional Key Control information */ 265b874ddecSLior David u8 key_op_ctrl; 2662be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 2672be7d22fSVladimir Kondratiev } __packed; 2682be7d22fSVladimir Kondratiev 269b874ddecSLior David /* WMI_DELETE_CIPHER_KEY_CMDID */ 2702be7d22fSVladimir Kondratiev struct wmi_delete_cipher_key_cmd { 2712be7d22fSVladimir Kondratiev u8 key_index; 2722be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 2732be7d22fSVladimir Kondratiev } __packed; 2742be7d22fSVladimir Kondratiev 275b874ddecSLior David /* WMI_START_SCAN_CMDID 2762be7d22fSVladimir Kondratiev * 2772be7d22fSVladimir Kondratiev * Start L1 scan operation 2782be7d22fSVladimir Kondratiev * 2792be7d22fSVladimir Kondratiev * Returned events: 2802be7d22fSVladimir Kondratiev * - WMI_RX_MGMT_PACKET_EVENTID - for every probe resp. 2812be7d22fSVladimir Kondratiev * - WMI_SCAN_COMPLETE_EVENTID 2822be7d22fSVladimir Kondratiev */ 2832be7d22fSVladimir Kondratiev enum wmi_scan_type { 284b874ddecSLior David WMI_ACTIVE_SCAN = 0x00, 285b874ddecSLior David WMI_SHORT_SCAN = 0x01, 286b874ddecSLior David WMI_PASSIVE_SCAN = 0x02, 287b874ddecSLior David WMI_DIRECT_SCAN = 0x03, 288b874ddecSLior David WMI_LONG_SCAN = 0x04, 2892be7d22fSVladimir Kondratiev }; 2902be7d22fSVladimir Kondratiev 291b874ddecSLior David /* WMI_START_SCAN_CMDID */ 2922be7d22fSVladimir Kondratiev struct wmi_start_scan_cmd { 293b874ddecSLior David u8 direct_scan_mac_addr[WMI_MAC_LEN]; 294b874ddecSLior David /* DMG Beacon frame is transmitted during active scanning */ 29574997a53SLior David u8 discovery_mode; 296b874ddecSLior David /* reserved */ 29774997a53SLior David u8 reserved; 298b874ddecSLior David /* Max duration in the home channel(ms) */ 299b874ddecSLior David __le32 dwell_time; 300b874ddecSLior David /* Time interval between scans (ms) */ 301b874ddecSLior David __le32 force_scan_interval; 302b874ddecSLior David /* enum wmi_scan_type */ 303b874ddecSLior David u8 scan_type; 304b874ddecSLior David /* how many channels follow */ 305b874ddecSLior David u8 num_channels; 306b874ddecSLior David /* channels ID's: 307b874ddecSLior David * 0 - 58320 MHz 308b874ddecSLior David * 1 - 60480 MHz 309b874ddecSLior David * 2 - 62640 MHz 310b874ddecSLior David */ 3112be7d22fSVladimir Kondratiev struct { 3122be7d22fSVladimir Kondratiev u8 channel; 3132be7d22fSVladimir Kondratiev u8 reserved; 314b874ddecSLior David } channel_list[0]; 3152be7d22fSVladimir Kondratiev } __packed; 3162be7d22fSVladimir Kondratiev 317b874ddecSLior David /* WMI_SET_PROBED_SSID_CMDID */ 318b8023177SVladimir Kondratiev #define MAX_PROBED_SSID_INDEX (3) 3192be7d22fSVladimir Kondratiev 3202be7d22fSVladimir Kondratiev enum wmi_ssid_flag { 321b874ddecSLior David /* disables entry */ 322b874ddecSLior David WMI_SSID_FLAG_DISABLE = 0x00, 323b874ddecSLior David /* probes specified ssid */ 324b874ddecSLior David WMI_SSID_FLAG_SPECIFIC = 0x01, 325b874ddecSLior David /* probes for any ssid */ 326b874ddecSLior David WMI_SSID_FLAG_ANY = 0x02, 3272be7d22fSVladimir Kondratiev }; 3282be7d22fSVladimir Kondratiev 3292be7d22fSVladimir Kondratiev struct wmi_probed_ssid_cmd { 330b874ddecSLior David /* 0 to MAX_PROBED_SSID_INDEX */ 331b874ddecSLior David u8 entry_index; 332b874ddecSLior David /* enum wmi_ssid_flag */ 333b874ddecSLior David u8 flag; 3342be7d22fSVladimir Kondratiev u8 ssid_len; 3352be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 3362be7d22fSVladimir Kondratiev } __packed; 3372be7d22fSVladimir Kondratiev 338b874ddecSLior David /* WMI_SET_APPIE_CMDID 3392be7d22fSVladimir Kondratiev * Add Application specified IE to a management frame 3402be7d22fSVladimir Kondratiev */ 341b8023177SVladimir Kondratiev #define WMI_MAX_IE_LEN (1024) 342b8023177SVladimir Kondratiev 343b874ddecSLior David /* Frame Types */ 344b8023177SVladimir Kondratiev enum wmi_mgmt_frame_type { 345b874ddecSLior David WMI_FRAME_BEACON = 0x00, 346b874ddecSLior David WMI_FRAME_PROBE_REQ = 0x01, 347b874ddecSLior David WMI_FRAME_PROBE_RESP = 0x02, 348b874ddecSLior David WMI_FRAME_ASSOC_REQ = 0x03, 349b874ddecSLior David WMI_FRAME_ASSOC_RESP = 0x04, 350b874ddecSLior David WMI_NUM_MGMT_FRAME = 0x05, 351b8023177SVladimir Kondratiev }; 352b8023177SVladimir Kondratiev 3532be7d22fSVladimir Kondratiev struct wmi_set_appie_cmd { 354b874ddecSLior David /* enum wmi_mgmt_frame_type */ 355b874ddecSLior David u8 mgmt_frm_type; 3562be7d22fSVladimir Kondratiev u8 reserved; 357b874ddecSLior David /* Length of the IE to be added to MGMT frame */ 358b874ddecSLior David __le16 ie_len; 3592be7d22fSVladimir Kondratiev u8 ie_info[0]; 3602be7d22fSVladimir Kondratiev } __packed; 3612be7d22fSVladimir Kondratiev 362b874ddecSLior David /* WMI_PXMT_RANGE_CFG_CMDID */ 3632be7d22fSVladimir Kondratiev struct wmi_pxmt_range_cfg_cmd { 3642be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 3652be7d22fSVladimir Kondratiev __le16 range; 3662be7d22fSVladimir Kondratiev } __packed; 3672be7d22fSVladimir Kondratiev 368b874ddecSLior David /* WMI_PXMT_SNR2_RANGE_CFG_CMDID */ 3692be7d22fSVladimir Kondratiev struct wmi_pxmt_snr2_range_cfg_cmd { 370b874ddecSLior David s8 snr2range_arr[2]; 3712be7d22fSVladimir Kondratiev } __packed; 3722be7d22fSVladimir Kondratiev 373b874ddecSLior David /* WMI_RF_MGMT_CMDID */ 3742be7d22fSVladimir Kondratiev enum wmi_rf_mgmt_type { 375b874ddecSLior David WMI_RF_MGMT_W_DISABLE = 0x00, 376b874ddecSLior David WMI_RF_MGMT_W_ENABLE = 0x01, 377b874ddecSLior David WMI_RF_MGMT_GET_STATUS = 0x02, 3782be7d22fSVladimir Kondratiev }; 3792be7d22fSVladimir Kondratiev 380b874ddecSLior David /* WMI_RF_MGMT_CMDID */ 3812be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_cmd { 3822be7d22fSVladimir Kondratiev __le32 rf_mgmt_type; 3832be7d22fSVladimir Kondratiev } __packed; 3842be7d22fSVladimir Kondratiev 385b874ddecSLior David /* WMI_THERMAL_THROTTLING_CTRL_CMDID */ 3868c679675SVladimir Kondratiev #define THERMAL_THROTTLING_USE_DEFAULT_MAX_TXOP_LENGTH (0xFFFFFFFF) 3878c679675SVladimir Kondratiev 388b874ddecSLior David /* WMI_THERMAL_THROTTLING_CTRL_CMDID */ 3898c679675SVladimir Kondratiev struct wmi_thermal_throttling_ctrl_cmd { 3908c679675SVladimir Kondratiev __le32 time_on_usec; 3918c679675SVladimir Kondratiev __le32 time_off_usec; 3928c679675SVladimir Kondratiev __le32 max_txop_length_usec; 3938c679675SVladimir Kondratiev } __packed; 3948c679675SVladimir Kondratiev 395b874ddecSLior David /* WMI_RF_RX_TEST_CMDID */ 396b8023177SVladimir Kondratiev struct wmi_rf_rx_test_cmd { 397b8023177SVladimir Kondratiev __le32 sector; 398b8023177SVladimir Kondratiev } __packed; 399b8023177SVladimir Kondratiev 400b874ddecSLior David /* WMI_CORR_MEASURE_CMDID */ 401b8023177SVladimir Kondratiev struct wmi_corr_measure_cmd { 402b874ddecSLior David __le32 freq_mhz; 403b8023177SVladimir Kondratiev __le32 length_samples; 404b8023177SVladimir Kondratiev __le32 iterations; 405b8023177SVladimir Kondratiev } __packed; 406b8023177SVladimir Kondratiev 407b874ddecSLior David /* WMI_SET_SSID_CMDID */ 4082be7d22fSVladimir Kondratiev struct wmi_set_ssid_cmd { 4092be7d22fSVladimir Kondratiev __le32 ssid_len; 4102be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 4112be7d22fSVladimir Kondratiev } __packed; 4122be7d22fSVladimir Kondratiev 413b874ddecSLior David /* WMI_SET_PCP_CHANNEL_CMDID */ 4142be7d22fSVladimir Kondratiev struct wmi_set_pcp_channel_cmd { 4152be7d22fSVladimir Kondratiev u8 channel; 4162be7d22fSVladimir Kondratiev u8 reserved[3]; 4172be7d22fSVladimir Kondratiev } __packed; 4182be7d22fSVladimir Kondratiev 419b874ddecSLior David /* WMI_BCON_CTRL_CMDID */ 4202be7d22fSVladimir Kondratiev struct wmi_bcon_ctrl_cmd { 4212be7d22fSVladimir Kondratiev __le16 bcon_interval; 4222be7d22fSVladimir Kondratiev __le16 frag_num; 4232be7d22fSVladimir Kondratiev __le64 ss_mask; 4242be7d22fSVladimir Kondratiev u8 network_type; 4256c2faf09SVladimir Kondratiev u8 pcp_max_assoc_sta; 4262be7d22fSVladimir Kondratiev u8 disable_sec_offload; 4272be7d22fSVladimir Kondratiev u8 disable_sec; 428b874ddecSLior David u8 hidden_ssid; 429b874ddecSLior David u8 is_go; 430b874ddecSLior David u8 reserved[2]; 4312be7d22fSVladimir Kondratiev } __packed; 4322be7d22fSVladimir Kondratiev 433b874ddecSLior David /* WMI_PORT_ALLOCATE_CMDID */ 434b8023177SVladimir Kondratiev enum wmi_port_role { 435b874ddecSLior David WMI_PORT_STA = 0x00, 436b874ddecSLior David WMI_PORT_PCP = 0x01, 437b874ddecSLior David WMI_PORT_AP = 0x02, 438b874ddecSLior David WMI_PORT_P2P_DEV = 0x03, 439b874ddecSLior David WMI_PORT_P2P_CLIENT = 0x04, 440b874ddecSLior David WMI_PORT_P2P_GO = 0x05, 441b8023177SVladimir Kondratiev }; 442b8023177SVladimir Kondratiev 443b874ddecSLior David /* WMI_PORT_ALLOCATE_CMDID */ 444b8023177SVladimir Kondratiev struct wmi_port_allocate_cmd { 445b8023177SVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 446b8023177SVladimir Kondratiev u8 port_role; 4476c2faf09SVladimir Kondratiev u8 mid; 448b8023177SVladimir Kondratiev } __packed; 449b8023177SVladimir Kondratiev 450b874ddecSLior David /* WMI_PORT_DELETE_CMDID */ 451b874ddecSLior David struct wmi_port_delete_cmd { 452b8023177SVladimir Kondratiev u8 mid; 453b8023177SVladimir Kondratiev u8 reserved[3]; 454b8023177SVladimir Kondratiev } __packed; 455b8023177SVladimir Kondratiev 456b874ddecSLior David /* WMI_P2P_CFG_CMDID */ 457b8023177SVladimir Kondratiev enum wmi_discovery_mode { 458b874ddecSLior David WMI_DISCOVERY_MODE_NON_OFFLOAD = 0x00, 459b874ddecSLior David WMI_DISCOVERY_MODE_OFFLOAD = 0x01, 460b874ddecSLior David WMI_DISCOVERY_MODE_PEER2PEER = 0x02, 461b8023177SVladimir Kondratiev }; 462b8023177SVladimir Kondratiev 463b8023177SVladimir Kondratiev struct wmi_p2p_cfg_cmd { 464b874ddecSLior David /* enum wmi_discovery_mode */ 465b874ddecSLior David u8 discovery_mode; 466b8023177SVladimir Kondratiev u8 channel; 467b874ddecSLior David /* base to listen/search duration calculation */ 468b874ddecSLior David __le16 bcon_interval; 469b8023177SVladimir Kondratiev } __packed; 470b8023177SVladimir Kondratiev 471b874ddecSLior David /* WMI_POWER_MGMT_CFG_CMDID */ 472b8023177SVladimir Kondratiev enum wmi_power_source_type { 473b874ddecSLior David WMI_POWER_SOURCE_BATTERY = 0x00, 474b874ddecSLior David WMI_POWER_SOURCE_OTHER = 0x01, 475b8023177SVladimir Kondratiev }; 476b8023177SVladimir Kondratiev 477b8023177SVladimir Kondratiev struct wmi_power_mgmt_cfg_cmd { 478b874ddecSLior David /* enum wmi_power_source_type */ 479b874ddecSLior David u8 power_source; 480b8023177SVladimir Kondratiev u8 reserved[3]; 481b8023177SVladimir Kondratiev } __packed; 482b8023177SVladimir Kondratiev 483b874ddecSLior David /* WMI_PCP_START_CMDID */ 484b8023177SVladimir Kondratiev struct wmi_pcp_start_cmd { 485b8023177SVladimir Kondratiev __le16 bcon_interval; 4866c2faf09SVladimir Kondratiev u8 pcp_max_assoc_sta; 4878e52fe30SHamad Kadmany u8 hidden_ssid; 488b874ddecSLior David u8 is_go; 489b874ddecSLior David u8 reserved0[7]; 490b8023177SVladimir Kondratiev u8 network_type; 491b8023177SVladimir Kondratiev u8 channel; 492b8023177SVladimir Kondratiev u8 disable_sec_offload; 493b8023177SVladimir Kondratiev u8 disable_sec; 494b8023177SVladimir Kondratiev } __packed; 495b8023177SVladimir Kondratiev 496b874ddecSLior David /* WMI_SW_TX_REQ_CMDID */ 4972be7d22fSVladimir Kondratiev struct wmi_sw_tx_req_cmd { 4982be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 4992be7d22fSVladimir Kondratiev __le16 len; 5002be7d22fSVladimir Kondratiev u8 payload[0]; 5012be7d22fSVladimir Kondratiev } __packed; 5022be7d22fSVladimir Kondratiev 5032be7d22fSVladimir Kondratiev struct wmi_sw_ring_cfg { 5042be7d22fSVladimir Kondratiev __le64 ring_mem_base; 5052be7d22fSVladimir Kondratiev __le16 ring_size; 5062be7d22fSVladimir Kondratiev __le16 max_mpdu_size; 5072be7d22fSVladimir Kondratiev } __packed; 5082be7d22fSVladimir Kondratiev 509b874ddecSLior David /* wmi_vring_cfg_schd */ 5102be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd { 5112be7d22fSVladimir Kondratiev __le16 priority; 5122be7d22fSVladimir Kondratiev __le16 timeslot_us; 5132be7d22fSVladimir Kondratiev } __packed; 5142be7d22fSVladimir Kondratiev 5152be7d22fSVladimir Kondratiev enum wmi_vring_cfg_encap_trans_type { 516b874ddecSLior David WMI_VRING_ENC_TYPE_802_3 = 0x00, 517b874ddecSLior David WMI_VRING_ENC_TYPE_NATIVE_WIFI = 0x01, 5182be7d22fSVladimir Kondratiev }; 5192be7d22fSVladimir Kondratiev 5202be7d22fSVladimir Kondratiev enum wmi_vring_cfg_ds_cfg { 521b874ddecSLior David WMI_VRING_DS_PBSS = 0x00, 522b874ddecSLior David WMI_VRING_DS_STATION = 0x01, 523b874ddecSLior David WMI_VRING_DS_AP = 0x02, 524b874ddecSLior David WMI_VRING_DS_ADDR4 = 0x03, 5252be7d22fSVladimir Kondratiev }; 5262be7d22fSVladimir Kondratiev 5272be7d22fSVladimir Kondratiev enum wmi_vring_cfg_nwifi_ds_trans_type { 528b874ddecSLior David WMI_NWIFI_TX_TRANS_MODE_NO = 0x00, 529b874ddecSLior David WMI_NWIFI_TX_TRANS_MODE_AP2PBSS = 0x01, 530b874ddecSLior David WMI_NWIFI_TX_TRANS_MODE_STA2PBSS = 0x02, 5312be7d22fSVladimir Kondratiev }; 5322be7d22fSVladimir Kondratiev 5332be7d22fSVladimir Kondratiev enum wmi_vring_cfg_schd_params_priority { 534b874ddecSLior David WMI_SCH_PRIO_REGULAR = 0x00, 535b874ddecSLior David WMI_SCH_PRIO_HIGH = 0x01, 5362be7d22fSVladimir Kondratiev }; 5372be7d22fSVladimir Kondratiev 5382be7d22fSVladimir Kondratiev #define CIDXTID_CID_POS (0) 5392be7d22fSVladimir Kondratiev #define CIDXTID_CID_LEN (4) 5402be7d22fSVladimir Kondratiev #define CIDXTID_CID_MSK (0xF) 5412be7d22fSVladimir Kondratiev #define CIDXTID_TID_POS (4) 5422be7d22fSVladimir Kondratiev #define CIDXTID_TID_LEN (4) 5432be7d22fSVladimir Kondratiev #define CIDXTID_TID_MSK (0xF0) 5442be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_POS (0) 5452be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_LEN (1) 5462be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_MSK (0x1) 5472be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_POS (1) 5482be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_LEN (1) 5492be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_MSK (0x2) 5502be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_POS (0) 5512be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_LEN (6) 5522be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_MSK (0x3F) 553b874ddecSLior David 554b874ddecSLior David struct wmi_vring_cfg { 555b874ddecSLior David struct wmi_sw_ring_cfg tx_sw_ring; 556b874ddecSLior David /* 0-23 vrings */ 557b874ddecSLior David u8 ringid; 558b874ddecSLior David u8 cidxtid; 559b874ddecSLior David u8 encap_trans_type; 560b874ddecSLior David /* 802.3 DS cfg */ 561b874ddecSLior David u8 ds_cfg; 562b874ddecSLior David u8 nwifi_ds_trans_type; 563b874ddecSLior David u8 mac_ctrl; 5642be7d22fSVladimir Kondratiev u8 to_resolution; 5652be7d22fSVladimir Kondratiev u8 agg_max_wsize; 5662be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd schd_params; 5672be7d22fSVladimir Kondratiev } __packed; 5682be7d22fSVladimir Kondratiev 5692be7d22fSVladimir Kondratiev enum wmi_vring_cfg_cmd_action { 570b874ddecSLior David WMI_VRING_CMD_ADD = 0x00, 571b874ddecSLior David WMI_VRING_CMD_MODIFY = 0x01, 572b874ddecSLior David WMI_VRING_CMD_DELETE = 0x02, 5732be7d22fSVladimir Kondratiev }; 5742be7d22fSVladimir Kondratiev 575b874ddecSLior David /* WMI_VRING_CFG_CMDID */ 5762be7d22fSVladimir Kondratiev struct wmi_vring_cfg_cmd { 5772be7d22fSVladimir Kondratiev __le32 action; 5782be7d22fSVladimir Kondratiev struct wmi_vring_cfg vring_cfg; 5792be7d22fSVladimir Kondratiev } __packed; 5802be7d22fSVladimir Kondratiev 58162bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg { 58262bfd300SVladimir Kondratiev struct wmi_sw_ring_cfg tx_sw_ring; 583b874ddecSLior David /* 0-23 vrings */ 584b874ddecSLior David u8 ringid; 58562bfd300SVladimir Kondratiev u8 encap_trans_type; 586b874ddecSLior David /* 802.3 DS cfg */ 587b874ddecSLior David u8 ds_cfg; 58862bfd300SVladimir Kondratiev u8 nwifi_ds_trans_type; 58962bfd300SVladimir Kondratiev } __packed; 59062bfd300SVladimir Kondratiev 591b874ddecSLior David /* WMI_BCAST_VRING_CFG_CMDID */ 59262bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg_cmd { 59362bfd300SVladimir Kondratiev __le32 action; 59462bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg vring_cfg; 59562bfd300SVladimir Kondratiev } __packed; 59662bfd300SVladimir Kondratiev 597b874ddecSLior David /* WMI_VRING_BA_EN_CMDID */ 5982be7d22fSVladimir Kondratiev struct wmi_vring_ba_en_cmd { 5992be7d22fSVladimir Kondratiev u8 ringid; 6002be7d22fSVladimir Kondratiev u8 agg_max_wsize; 6012be7d22fSVladimir Kondratiev __le16 ba_timeout; 602cbcf5866SVladimir Kondratiev u8 amsdu; 603b874ddecSLior David u8 reserved[3]; 6042be7d22fSVladimir Kondratiev } __packed; 6052be7d22fSVladimir Kondratiev 606b874ddecSLior David /* WMI_VRING_BA_DIS_CMDID */ 6072be7d22fSVladimir Kondratiev struct wmi_vring_ba_dis_cmd { 6082be7d22fSVladimir Kondratiev u8 ringid; 6092be7d22fSVladimir Kondratiev u8 reserved; 6102be7d22fSVladimir Kondratiev __le16 reason; 6112be7d22fSVladimir Kondratiev } __packed; 6122be7d22fSVladimir Kondratiev 613b874ddecSLior David /* WMI_NOTIFY_REQ_CMDID */ 6142be7d22fSVladimir Kondratiev struct wmi_notify_req_cmd { 6152be7d22fSVladimir Kondratiev u8 cid; 616b8023177SVladimir Kondratiev u8 year; 617b8023177SVladimir Kondratiev u8 month; 618b8023177SVladimir Kondratiev u8 day; 6192be7d22fSVladimir Kondratiev __le32 interval_usec; 620b8023177SVladimir Kondratiev u8 hour; 621b8023177SVladimir Kondratiev u8 minute; 622b8023177SVladimir Kondratiev u8 second; 623b8023177SVladimir Kondratiev u8 miliseconds; 6242be7d22fSVladimir Kondratiev } __packed; 6252be7d22fSVladimir Kondratiev 626b874ddecSLior David /* WMI_CFG_RX_CHAIN_CMDID */ 6272be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_mode { 628b874ddecSLior David WMI_SNIFFER_OFF = 0x00, 629b874ddecSLior David WMI_SNIFFER_ON = 0x01, 6302be7d22fSVladimir Kondratiev }; 6312be7d22fSVladimir Kondratiev 6322be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_info_mode { 633b874ddecSLior David WMI_SNIFFER_PHY_INFO_DISABLED = 0x00, 634b874ddecSLior David WMI_SNIFFER_PHY_INFO_ENABLED = 0x01, 6352be7d22fSVladimir Kondratiev }; 6362be7d22fSVladimir Kondratiev 6372be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_support { 638b874ddecSLior David WMI_SNIFFER_CP = 0x00, 639b874ddecSLior David WMI_SNIFFER_DP = 0x01, 640b874ddecSLior David WMI_SNIFFER_BOTH_PHYS = 0x02, 6412be7d22fSVladimir Kondratiev }; 6422be7d22fSVladimir Kondratiev 643b874ddecSLior David /* wmi_sniffer_cfg */ 6442be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg { 645b874ddecSLior David /* enum wmi_sniffer_cfg_mode */ 646b874ddecSLior David __le32 mode; 647b874ddecSLior David /* enum wmi_sniffer_cfg_phy_info_mode */ 648b874ddecSLior David __le32 phy_info_mode; 649b874ddecSLior David /* enum wmi_sniffer_cfg_phy_support */ 650b874ddecSLior David __le32 phy_support; 6512be7d22fSVladimir Kondratiev u8 channel; 6522be7d22fSVladimir Kondratiev u8 reserved[3]; 6532be7d22fSVladimir Kondratiev } __packed; 6542be7d22fSVladimir Kondratiev 6552be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_action { 656b874ddecSLior David WMI_RX_CHAIN_ADD = 0x00, 657b874ddecSLior David WMI_RX_CHAIN_DEL = 0x01, 6582be7d22fSVladimir Kondratiev }; 6592be7d22fSVladimir Kondratiev 6602be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_decap_trans_type { 661b874ddecSLior David WMI_DECAP_TYPE_802_3 = 0x00, 662b874ddecSLior David WMI_DECAP_TYPE_NATIVE_WIFI = 0x01, 663b874ddecSLior David WMI_DECAP_TYPE_NONE = 0x02, 6642be7d22fSVladimir Kondratiev }; 6652be7d22fSVladimir Kondratiev 6662be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_nwifi_ds_trans_type { 667b874ddecSLior David WMI_NWIFI_RX_TRANS_MODE_NO = 0x00, 668b874ddecSLior David WMI_NWIFI_RX_TRANS_MODE_PBSS2AP = 0x01, 669b874ddecSLior David WMI_NWIFI_RX_TRANS_MODE_PBSS2STA = 0x02, 6702be7d22fSVladimir Kondratiev }; 6712be7d22fSVladimir Kondratiev 672b8023177SVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_reorder_type { 673b874ddecSLior David WMI_RX_HW_REORDER = 0x00, 674b874ddecSLior David WMI_RX_SW_REORDER = 0x01, 675b8023177SVladimir Kondratiev }; 676b8023177SVladimir Kondratiev 6772be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_POS (0) 6782be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_LEN (1) 6792be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_MSK (0x1) 680c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_POS (1) 681c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_LEN (1) 682c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_MSK (0x2) 6832be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_POS (0) 6842be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_LEN (1) 6852be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_MSK (0x1) 6862be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_POS (1) 6872be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_LEN (1) 6882be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_MSK (0x2) 6892be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_POS (0) 6902be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_LEN (1) 6912be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_MSK (0x1) 6922be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_POS (1) 6932be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_LEN (1) 6942be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_MSK (0x2) 6952be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_POS (0) 6962be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_LEN (1) 6972be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_MSK (0x1) 6982be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_POS (1) 6992be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_LEN (1) 7002be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_MSK (0x2) 7012be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_POS (2) 7022be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_LEN (1) 7032be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_MSK (0x4) 7042be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_POS (3) 7052be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_LEN (1) 7062be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_MSK (0x8) 7072be7d22fSVladimir Kondratiev 708b874ddecSLior David /* WMI_CFG_RX_CHAIN_CMDID */ 709b874ddecSLior David struct wmi_cfg_rx_chain_cmd { 710b874ddecSLior David __le32 action; 711b874ddecSLior David struct wmi_sw_ring_cfg rx_sw_ring; 712b874ddecSLior David u8 mid; 713b874ddecSLior David u8 decap_trans_type; 714b874ddecSLior David u8 l2_802_3_offload_ctrl; 715b874ddecSLior David u8 l2_nwifi_offload_ctrl; 716b874ddecSLior David u8 vlan_id; 717b874ddecSLior David u8 nwifi_ds_trans_type; 718b874ddecSLior David u8 l3_l4_ctrl; 719b874ddecSLior David u8 ring_ctrl; 7202be7d22fSVladimir Kondratiev __le16 prefetch_thrsh; 7212be7d22fSVladimir Kondratiev __le16 wb_thrsh; 7222be7d22fSVladimir Kondratiev __le32 itr_value; 7232be7d22fSVladimir Kondratiev __le16 host_thrsh; 724b8023177SVladimir Kondratiev u8 reorder_type; 725b8023177SVladimir Kondratiev u8 reserved; 7262be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg sniffer_cfg; 727b874ddecSLior David __le16 max_rx_pl_per_desc; 7282be7d22fSVladimir Kondratiev } __packed; 7292be7d22fSVladimir Kondratiev 730b874ddecSLior David /* WMI_RCP_ADDBA_RESP_CMDID */ 7312be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_cmd { 7322be7d22fSVladimir Kondratiev u8 cidxtid; 7332be7d22fSVladimir Kondratiev u8 dialog_token; 7342be7d22fSVladimir Kondratiev __le16 status_code; 735b874ddecSLior David /* ieee80211_ba_parameterset field to send */ 736b874ddecSLior David __le16 ba_param_set; 7372be7d22fSVladimir Kondratiev __le16 ba_timeout; 7382be7d22fSVladimir Kondratiev } __packed; 7392be7d22fSVladimir Kondratiev 740b874ddecSLior David /* WMI_RCP_DELBA_CMDID */ 7412be7d22fSVladimir Kondratiev struct wmi_rcp_delba_cmd { 7422be7d22fSVladimir Kondratiev u8 cidxtid; 7432be7d22fSVladimir Kondratiev u8 reserved; 7442be7d22fSVladimir Kondratiev __le16 reason; 7452be7d22fSVladimir Kondratiev } __packed; 7462be7d22fSVladimir Kondratiev 747b874ddecSLior David /* WMI_RCP_ADDBA_REQ_CMDID */ 7482be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_cmd { 7492be7d22fSVladimir Kondratiev u8 cidxtid; 7502be7d22fSVladimir Kondratiev u8 dialog_token; 7512be7d22fSVladimir Kondratiev /* ieee80211_ba_parameterset field as it received */ 7522be7d22fSVladimir Kondratiev __le16 ba_param_set; 7532be7d22fSVladimir Kondratiev __le16 ba_timeout; 7542be7d22fSVladimir Kondratiev /* ieee80211_ba_seqstrl field as it received */ 7552be7d22fSVladimir Kondratiev __le16 ba_seq_ctrl; 7562be7d22fSVladimir Kondratiev } __packed; 7572be7d22fSVladimir Kondratiev 758b874ddecSLior David /* WMI_SET_MAC_ADDRESS_CMDID */ 7592be7d22fSVladimir Kondratiev struct wmi_set_mac_address_cmd { 7602be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 7612be7d22fSVladimir Kondratiev u8 reserved[2]; 7622be7d22fSVladimir Kondratiev } __packed; 7632be7d22fSVladimir Kondratiev 764b874ddecSLior David /* WMI_ECHO_CMDID 7652be7d22fSVladimir Kondratiev * Check FW is alive 7662be7d22fSVladimir Kondratiev * WMI_DEEP_ECHO_CMDID 7672be7d22fSVladimir Kondratiev * Check FW and ucode are alive 7682be7d22fSVladimir Kondratiev * Returned event: WMI_ECHO_RSP_EVENTID 7692be7d22fSVladimir Kondratiev * same event for both commands 7702be7d22fSVladimir Kondratiev */ 7712be7d22fSVladimir Kondratiev struct wmi_echo_cmd { 7722be7d22fSVladimir Kondratiev __le32 value; 7732be7d22fSVladimir Kondratiev } __packed; 7742be7d22fSVladimir Kondratiev 775b874ddecSLior David /* WMI_OTP_READ_CMDID */ 776b874ddecSLior David struct wmi_otp_read_cmd { 777b874ddecSLior David __le32 addr; 778b874ddecSLior David __le32 size; 779b874ddecSLior David __le32 values; 780b874ddecSLior David } __packed; 781b874ddecSLior David 782b874ddecSLior David /* WMI_OTP_WRITE_CMDID */ 783b874ddecSLior David struct wmi_otp_write_cmd { 784b874ddecSLior David __le32 addr; 785b874ddecSLior David __le32 size; 786b874ddecSLior David __le32 values; 787b874ddecSLior David } __packed; 788b874ddecSLior David 789b874ddecSLior David /* WMI_TEMP_SENSE_CMDID 790b8023177SVladimir Kondratiev * 791b8023177SVladimir Kondratiev * Measure MAC and radio temperatures 792b874ddecSLior David * 793b874ddecSLior David * Possible modes for temperature measurement 794b8023177SVladimir Kondratiev */ 7958c679675SVladimir Kondratiev enum wmi_temperature_measure_mode { 796b874ddecSLior David TEMPERATURE_USE_OLD_VALUE = 0x01, 797b874ddecSLior David TEMPERATURE_MEASURE_NOW = 0x02, 7988c679675SVladimir Kondratiev }; 7998c679675SVladimir Kondratiev 800b874ddecSLior David /* WMI_TEMP_SENSE_CMDID */ 801b8023177SVladimir Kondratiev struct wmi_temp_sense_cmd { 8028c679675SVladimir Kondratiev __le32 measure_baseband_en; 8038c679675SVladimir Kondratiev __le32 measure_rf_en; 8048c679675SVladimir Kondratiev __le32 measure_mode; 805b8023177SVladimir Kondratiev } __packed; 806b8023177SVladimir Kondratiev 807b874ddecSLior David enum wmi_pmc_op { 808b874ddecSLior David WMI_PMC_ALLOCATE = 0x00, 809b874ddecSLior David WMI_PMC_RELEASE = 0x01, 810dc16427bSVladimir Kondratiev }; 811dc16427bSVladimir Kondratiev 812b874ddecSLior David /* WMI_PMC_CMDID */ 813dc16427bSVladimir Kondratiev struct wmi_pmc_cmd { 814b874ddecSLior David /* enum wmi_pmc_cmd_op_type */ 815b874ddecSLior David u8 op; 816dc16427bSVladimir Kondratiev u8 reserved; 817dc16427bSVladimir Kondratiev __le16 ring_size; 818dc16427bSVladimir Kondratiev __le64 mem_base; 819dc16427bSVladimir Kondratiev } __packed; 820dc16427bSVladimir Kondratiev 821b874ddecSLior David /* WMI Events 8222be7d22fSVladimir Kondratiev * List of Events (target to host) 8232be7d22fSVladimir Kondratiev */ 8242be7d22fSVladimir Kondratiev enum wmi_event_id { 8252be7d22fSVladimir Kondratiev WMI_READY_EVENTID = 0x1001, 8262be7d22fSVladimir Kondratiev WMI_CONNECT_EVENTID = 0x1002, 8272be7d22fSVladimir Kondratiev WMI_DISCONNECT_EVENTID = 0x1003, 828b874ddecSLior David WMI_SCAN_COMPLETE_EVENTID = 0x100A, 829b874ddecSLior David WMI_REPORT_STATISTICS_EVENTID = 0x100B, 8302be7d22fSVladimir Kondratiev WMI_RD_MEM_RSP_EVENTID = 0x1800, 8312be7d22fSVladimir Kondratiev WMI_FW_READY_EVENTID = 0x1801, 832b874ddecSLior David WMI_EXIT_FAST_MEM_ACC_MODE_EVENTID = 0x200, 8332be7d22fSVladimir Kondratiev WMI_ECHO_RSP_EVENTID = 0x1803, 834b874ddecSLior David WMI_FS_TUNE_DONE_EVENTID = 0x180A, 835b874ddecSLior David WMI_CORR_MEASURE_EVENTID = 0x180B, 836b874ddecSLior David WMI_READ_RSSI_EVENTID = 0x180C, 837b874ddecSLior David WMI_TEMP_SENSE_DONE_EVENTID = 0x180E, 838b874ddecSLior David WMI_DC_CALIB_DONE_EVENTID = 0x180F, 8392be7d22fSVladimir Kondratiev WMI_IQ_TX_CALIB_DONE_EVENTID = 0x1811, 8402be7d22fSVladimir Kondratiev WMI_IQ_RX_CALIB_DONE_EVENTID = 0x1812, 8412be7d22fSVladimir Kondratiev WMI_SET_WORK_MODE_DONE_EVENTID = 0x1815, 8422be7d22fSVladimir Kondratiev WMI_LO_LEAKAGE_CALIB_DONE_EVENTID = 0x1816, 8432be7d22fSVladimir Kondratiev WMI_MARLON_R_READ_DONE_EVENTID = 0x1818, 8442be7d22fSVladimir Kondratiev WMI_MARLON_R_WRITE_DONE_EVENTID = 0x1819, 845b874ddecSLior David WMI_MARLON_R_TXRX_SEL_DONE_EVENTID = 0x181A, 846b874ddecSLior David WMI_SILENT_RSSI_CALIB_DONE_EVENTID = 0x181D, 847b874ddecSLior David WMI_RF_RX_TEST_DONE_EVENTID = 0x181E, 8482be7d22fSVladimir Kondratiev WMI_CFG_RX_CHAIN_DONE_EVENTID = 0x1820, 8492be7d22fSVladimir Kondratiev WMI_VRING_CFG_DONE_EVENTID = 0x1821, 8502be7d22fSVladimir Kondratiev WMI_BA_STATUS_EVENTID = 0x1823, 8512be7d22fSVladimir Kondratiev WMI_RCP_ADDBA_REQ_EVENTID = 0x1824, 852230d8442SVladimir Kondratiev WMI_RCP_ADDBA_RESP_SENT_EVENTID = 0x1825, 8532be7d22fSVladimir Kondratiev WMI_DELBA_EVENTID = 0x1826, 8542be7d22fSVladimir Kondratiev WMI_GET_SSID_EVENTID = 0x1828, 855b874ddecSLior David WMI_GET_PCP_CHANNEL_EVENTID = 0x182A, 856b874ddecSLior David WMI_SW_TX_COMPLETE_EVENTID = 0x182B, 8572be7d22fSVladimir Kondratiev WMI_READ_MAC_RXQ_EVENTID = 0x1830, 8582be7d22fSVladimir Kondratiev WMI_READ_MAC_TXQ_EVENTID = 0x1831, 8592be7d22fSVladimir Kondratiev WMI_WRITE_MAC_RXQ_EVENTID = 0x1832, 8602be7d22fSVladimir Kondratiev WMI_WRITE_MAC_TXQ_EVENTID = 0x1833, 8612be7d22fSVladimir Kondratiev WMI_WRITE_MAC_XQ_FIELD_EVENTID = 0x1834, 862230d8442SVladimir Kondratiev WMI_BEAMFORMING_MGMT_DONE_EVENTID = 0x1836, 8632be7d22fSVladimir Kondratiev WMI_BF_TXSS_MGMT_DONE_EVENTID = 0x1837, 8642be7d22fSVladimir Kondratiev WMI_BF_RXSS_MGMT_DONE_EVENTID = 0x1839, 8652be7d22fSVladimir Kondratiev WMI_RS_MGMT_DONE_EVENTID = 0x1852, 8662be7d22fSVladimir Kondratiev WMI_RF_MGMT_STATUS_EVENTID = 0x1853, 8678c679675SVladimir Kondratiev WMI_THERMAL_THROTTLING_STATUS_EVENTID = 0x1855, 8682be7d22fSVladimir Kondratiev WMI_BF_SM_MGMT_DONE_EVENTID = 0x1838, 8692be7d22fSVladimir Kondratiev WMI_RX_MGMT_PACKET_EVENTID = 0x1840, 8706c2faf09SVladimir Kondratiev WMI_TX_MGMT_PACKET_EVENTID = 0x1841, 871b874ddecSLior David WMI_OTP_READ_RESULT_EVENTID = 0x1856, 872*10d599adSMaya Erez WMI_LED_CFG_DONE_EVENTID = 0x1858, 8732be7d22fSVladimir Kondratiev /* Performance monitoring events */ 8742be7d22fSVladimir Kondratiev WMI_DATA_PORT_OPEN_EVENTID = 0x1860, 875230d8442SVladimir Kondratiev WMI_WBE_LINK_DOWN_EVENTID = 0x1861, 8762be7d22fSVladimir Kondratiev WMI_BF_CTRL_DONE_EVENTID = 0x1862, 8772be7d22fSVladimir Kondratiev WMI_NOTIFY_REQ_DONE_EVENTID = 0x1863, 8782be7d22fSVladimir Kondratiev WMI_GET_STATUS_DONE_EVENTID = 0x1864, 879230d8442SVladimir Kondratiev WMI_VRING_EN_EVENTID = 0x1865, 8802be7d22fSVladimir Kondratiev WMI_UNIT_TEST_EVENTID = 0x1900, 8812be7d22fSVladimir Kondratiev WMI_FLASH_READ_DONE_EVENTID = 0x1902, 8822be7d22fSVladimir Kondratiev WMI_FLASH_WRITE_DONE_EVENTID = 0x1903, 883b8023177SVladimir Kondratiev /* P2P */ 8848c679675SVladimir Kondratiev WMI_P2P_CFG_DONE_EVENTID = 0x1910, 885b8023177SVladimir Kondratiev WMI_PORT_ALLOCATED_EVENTID = 0x1911, 886b8023177SVladimir Kondratiev WMI_PORT_DELETED_EVENTID = 0x1912, 887b8023177SVladimir Kondratiev WMI_LISTEN_STARTED_EVENTID = 0x1914, 888b8023177SVladimir Kondratiev WMI_SEARCH_STARTED_EVENTID = 0x1915, 889b8023177SVladimir Kondratiev WMI_DISCOVERY_STARTED_EVENTID = 0x1916, 890b8023177SVladimir Kondratiev WMI_DISCOVERY_STOPPED_EVENTID = 0x1917, 891b8023177SVladimir Kondratiev WMI_PCP_STARTED_EVENTID = 0x1918, 892b8023177SVladimir Kondratiev WMI_PCP_STOPPED_EVENTID = 0x1919, 893b874ddecSLior David WMI_PCP_FACTOR_EVENTID = 0x191A, 8942be7d22fSVladimir Kondratiev WMI_SET_CHANNEL_EVENTID = 0x9000, 8952be7d22fSVladimir Kondratiev WMI_ASSOC_REQ_EVENTID = 0x9001, 8962be7d22fSVladimir Kondratiev WMI_EAPOL_RX_EVENTID = 0x9002, 8972be7d22fSVladimir Kondratiev WMI_MAC_ADDR_RESP_EVENTID = 0x9003, 8982be7d22fSVladimir Kondratiev WMI_FW_VER_EVENTID = 0x9004, 899b874ddecSLior David WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENTID = 0x9005, 9002be7d22fSVladimir Kondratiev }; 9012be7d22fSVladimir Kondratiev 902b874ddecSLior David /* Events data structures */ 903b8023177SVladimir Kondratiev enum wmi_fw_status { 904b874ddecSLior David WMI_FW_STATUS_SUCCESS = 0x00, 905b874ddecSLior David WMI_FW_STATUS_FAILURE = 0x01, 906b8023177SVladimir Kondratiev }; 907b8023177SVladimir Kondratiev 908b874ddecSLior David /* WMI_RF_MGMT_STATUS_EVENTID */ 9092be7d22fSVladimir Kondratiev enum wmi_rf_status { 910b874ddecSLior David WMI_RF_ENABLED = 0x00, 911b874ddecSLior David WMI_RF_DISABLED_HW = 0x01, 912b874ddecSLior David WMI_RF_DISABLED_SW = 0x02, 913b874ddecSLior David WMI_RF_DISABLED_HW_SW = 0x03, 9142be7d22fSVladimir Kondratiev }; 9152be7d22fSVladimir Kondratiev 916b874ddecSLior David /* WMI_RF_MGMT_STATUS_EVENTID */ 9172be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_status_event { 9182be7d22fSVladimir Kondratiev __le32 rf_status; 9192be7d22fSVladimir Kondratiev } __packed; 9202be7d22fSVladimir Kondratiev 921b874ddecSLior David /* WMI_THERMAL_THROTTLING_STATUS_EVENTID */ 9228c679675SVladimir Kondratiev struct wmi_thermal_throttling_status_event { 9238c679675SVladimir Kondratiev __le32 time_on_usec; 9248c679675SVladimir Kondratiev __le32 time_off_usec; 9258c679675SVladimir Kondratiev __le32 max_txop_length_usec; 9268c679675SVladimir Kondratiev } __packed; 9278c679675SVladimir Kondratiev 928b874ddecSLior David /* WMI_GET_STATUS_DONE_EVENTID */ 9292be7d22fSVladimir Kondratiev struct wmi_get_status_done_event { 9302be7d22fSVladimir Kondratiev __le32 is_associated; 9312be7d22fSVladimir Kondratiev u8 cid; 9322be7d22fSVladimir Kondratiev u8 reserved0[3]; 9332be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 9342be7d22fSVladimir Kondratiev u8 channel; 9352be7d22fSVladimir Kondratiev u8 reserved1; 9362be7d22fSVladimir Kondratiev u8 network_type; 9372be7d22fSVladimir Kondratiev u8 reserved2[3]; 9382be7d22fSVladimir Kondratiev __le32 ssid_len; 9392be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 9402be7d22fSVladimir Kondratiev __le32 rf_status; 9412be7d22fSVladimir Kondratiev __le32 is_secured; 9422be7d22fSVladimir Kondratiev } __packed; 9432be7d22fSVladimir Kondratiev 944b874ddecSLior David /* WMI_FW_VER_EVENTID */ 9452be7d22fSVladimir Kondratiev struct wmi_fw_ver_event { 9462be7d22fSVladimir Kondratiev u8 major; 9472be7d22fSVladimir Kondratiev u8 minor; 9482be7d22fSVladimir Kondratiev __le16 subminor; 9492be7d22fSVladimir Kondratiev __le16 build; 9502be7d22fSVladimir Kondratiev } __packed; 9512be7d22fSVladimir Kondratiev 952b874ddecSLior David /* WMI_MAC_ADDR_RESP_EVENTID */ 9532be7d22fSVladimir Kondratiev struct wmi_mac_addr_resp_event { 9542be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 9552be7d22fSVladimir Kondratiev u8 auth_mode; 9562be7d22fSVladimir Kondratiev u8 crypt_mode; 9572be7d22fSVladimir Kondratiev __le32 offload_mode; 9582be7d22fSVladimir Kondratiev } __packed; 9592be7d22fSVladimir Kondratiev 960b874ddecSLior David /* WMI_EAPOL_RX_EVENTID */ 9612be7d22fSVladimir Kondratiev struct wmi_eapol_rx_event { 9622be7d22fSVladimir Kondratiev u8 src_mac[WMI_MAC_LEN]; 9632be7d22fSVladimir Kondratiev __le16 eapol_len; 9642be7d22fSVladimir Kondratiev u8 eapol[0]; 9652be7d22fSVladimir Kondratiev } __packed; 9662be7d22fSVladimir Kondratiev 967b874ddecSLior David /* WMI_READY_EVENTID */ 9682be7d22fSVladimir Kondratiev enum wmi_phy_capability { 969b874ddecSLior David WMI_11A_CAPABILITY = 0x01, 970b874ddecSLior David WMI_11G_CAPABILITY = 0x02, 971b874ddecSLior David WMI_11AG_CAPABILITY = 0x03, 972b874ddecSLior David WMI_11NA_CAPABILITY = 0x04, 973b874ddecSLior David WMI_11NG_CAPABILITY = 0x05, 974b874ddecSLior David WMI_11NAG_CAPABILITY = 0x06, 975b874ddecSLior David WMI_11AD_CAPABILITY = 0x07, 976b874ddecSLior David WMI_11N_CAPABILITY_OFFSET = 0x03, 9772be7d22fSVladimir Kondratiev }; 9782be7d22fSVladimir Kondratiev 9792be7d22fSVladimir Kondratiev struct wmi_ready_event { 9802be7d22fSVladimir Kondratiev __le32 sw_version; 9812be7d22fSVladimir Kondratiev __le32 abi_version; 9822be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 983b874ddecSLior David /* enum wmi_phy_capability */ 984b874ddecSLior David u8 phy_capability; 985b8023177SVladimir Kondratiev u8 numof_additional_mids; 9862be7d22fSVladimir Kondratiev } __packed; 9872be7d22fSVladimir Kondratiev 988b874ddecSLior David /* WMI_NOTIFY_REQ_DONE_EVENTID */ 9892be7d22fSVladimir Kondratiev struct wmi_notify_req_done_event { 990b874ddecSLior David /* beamforming status, 0: fail; 1: OK; 2: retrying */ 991b874ddecSLior David __le32 status; 9922be7d22fSVladimir Kondratiev __le64 tsf; 9932be7d22fSVladimir Kondratiev __le32 snr_val; 9942be7d22fSVladimir Kondratiev __le32 tx_tpt; 9952be7d22fSVladimir Kondratiev __le32 tx_goodput; 9962be7d22fSVladimir Kondratiev __le32 rx_goodput; 9972be7d22fSVladimir Kondratiev __le16 bf_mcs; 9982be7d22fSVladimir Kondratiev __le16 my_rx_sector; 9992be7d22fSVladimir Kondratiev __le16 my_tx_sector; 10002be7d22fSVladimir Kondratiev __le16 other_rx_sector; 10012be7d22fSVladimir Kondratiev __le16 other_tx_sector; 10022be7d22fSVladimir Kondratiev __le16 range; 1003b8023177SVladimir Kondratiev u8 sqi; 1004b8023177SVladimir Kondratiev u8 reserved[3]; 10052be7d22fSVladimir Kondratiev } __packed; 10062be7d22fSVladimir Kondratiev 1007b874ddecSLior David /* WMI_CONNECT_EVENTID */ 10082be7d22fSVladimir Kondratiev struct wmi_connect_event { 10092be7d22fSVladimir Kondratiev u8 channel; 10102be7d22fSVladimir Kondratiev u8 reserved0; 10112be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 10122be7d22fSVladimir Kondratiev __le16 listen_interval; 10132be7d22fSVladimir Kondratiev __le16 beacon_interval; 10142be7d22fSVladimir Kondratiev u8 network_type; 10152be7d22fSVladimir Kondratiev u8 reserved1[3]; 10162be7d22fSVladimir Kondratiev u8 beacon_ie_len; 10172be7d22fSVladimir Kondratiev u8 assoc_req_len; 10182be7d22fSVladimir Kondratiev u8 assoc_resp_len; 10192be7d22fSVladimir Kondratiev u8 cid; 10202be7d22fSVladimir Kondratiev u8 reserved2[3]; 1021b874ddecSLior David /* not in use */ 10222be7d22fSVladimir Kondratiev u8 assoc_info[0]; 10232be7d22fSVladimir Kondratiev } __packed; 10242be7d22fSVladimir Kondratiev 1025b874ddecSLior David /* WMI_DISCONNECT_EVENTID */ 10262be7d22fSVladimir Kondratiev enum wmi_disconnect_reason { 1027b874ddecSLior David WMI_DIS_REASON_NO_NETWORK_AVAIL = 0x01, 1028b874ddecSLior David /* bmiss */ 1029b874ddecSLior David WMI_DIS_REASON_LOST_LINK = 0x02, 1030b874ddecSLior David WMI_DIS_REASON_DISCONNECT_CMD = 0x03, 1031b874ddecSLior David WMI_DIS_REASON_BSS_DISCONNECTED = 0x04, 1032b874ddecSLior David WMI_DIS_REASON_AUTH_FAILED = 0x05, 1033b874ddecSLior David WMI_DIS_REASON_ASSOC_FAILED = 0x06, 1034b874ddecSLior David WMI_DIS_REASON_NO_RESOURCES_AVAIL = 0x07, 1035b874ddecSLior David WMI_DIS_REASON_CSERV_DISCONNECT = 0x08, 1036b874ddecSLior David WMI_DIS_REASON_INVALID_PROFILE = 0x0A, 1037b874ddecSLior David WMI_DIS_REASON_DOT11H_CHANNEL_SWITCH = 0x0B, 1038b874ddecSLior David WMI_DIS_REASON_PROFILE_MISMATCH = 0x0C, 1039b874ddecSLior David WMI_DIS_REASON_CONNECTION_EVICTED = 0x0D, 1040b874ddecSLior David WMI_DIS_REASON_IBSS_MERGE = 0x0E, 10412be7d22fSVladimir Kondratiev }; 10422be7d22fSVladimir Kondratiev 10432be7d22fSVladimir Kondratiev struct wmi_disconnect_event { 1044b874ddecSLior David /* reason code, see 802.11 spec. */ 1045b874ddecSLior David __le16 protocol_reason_status; 1046b874ddecSLior David /* set if known */ 1047b874ddecSLior David u8 bssid[WMI_MAC_LEN]; 1048b874ddecSLior David /* see enum wmi_disconnect_reason */ 1049b874ddecSLior David u8 disconnect_reason; 1050b874ddecSLior David /* last assoc req may passed to host - not in used */ 1051b874ddecSLior David u8 assoc_resp_len; 1052b874ddecSLior David /* last assoc req may passed to host - not in used */ 1053b874ddecSLior David u8 assoc_info[0]; 10542be7d22fSVladimir Kondratiev } __packed; 10552be7d22fSVladimir Kondratiev 1056b874ddecSLior David /* WMI_SCAN_COMPLETE_EVENTID */ 10576c2faf09SVladimir Kondratiev enum scan_status { 1058b874ddecSLior David WMI_SCAN_SUCCESS = 0x00, 1059b874ddecSLior David WMI_SCAN_FAILED = 0x01, 1060b874ddecSLior David WMI_SCAN_ABORTED = 0x02, 1061b874ddecSLior David WMI_SCAN_REJECTED = 0x03, 1062b874ddecSLior David WMI_SCAN_ABORT_REJECTED = 0x04, 10636c2faf09SVladimir Kondratiev }; 10646c2faf09SVladimir Kondratiev 10652be7d22fSVladimir Kondratiev struct wmi_scan_complete_event { 1066b874ddecSLior David /* enum scan_status */ 1067b874ddecSLior David __le32 status; 10682be7d22fSVladimir Kondratiev } __packed; 10692be7d22fSVladimir Kondratiev 1070b874ddecSLior David /* WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENT */ 1071b874ddecSLior David enum wmi_acs_info_bitmask { 1072b874ddecSLior David WMI_ACS_INFO_BITMASK_BEACON_FOUND = 0x01, 1073b874ddecSLior David WMI_ACS_INFO_BITMASK_BUSY_TIME = 0x02, 1074b874ddecSLior David WMI_ACS_INFO_BITMASK_TX_TIME = 0x04, 1075b874ddecSLior David WMI_ACS_INFO_BITMASK_RX_TIME = 0x08, 1076b874ddecSLior David WMI_ACS_INFO_BITMASK_NOISE = 0x10, 10772be7d22fSVladimir Kondratiev }; 10782be7d22fSVladimir Kondratiev 1079b874ddecSLior David struct scan_acs_info { 1080b874ddecSLior David u8 channel; 1081b874ddecSLior David u8 beacon_found; 1082b874ddecSLior David /* msec */ 1083b874ddecSLior David __le16 busy_time; 1084b874ddecSLior David __le16 tx_time; 1085b874ddecSLior David __le16 rx_time; 1086b874ddecSLior David u8 noise; 1087b874ddecSLior David u8 reserved[3]; 1088b874ddecSLior David } __packed; 1089b874ddecSLior David 1090b874ddecSLior David struct wmi_acs_passive_scan_complete_event { 1091b874ddecSLior David __le32 dwell_time; 1092b874ddecSLior David /* valid fields within channel info according to 1093b874ddecSLior David * their appearance in struct order 1094b874ddecSLior David */ 1095b874ddecSLior David __le16 filled; 1096b874ddecSLior David u8 num_scanned_channels; 1097b874ddecSLior David u8 reserved; 1098b874ddecSLior David struct scan_acs_info scan_info_list[0]; 1099b874ddecSLior David } __packed; 1100b874ddecSLior David 1101b874ddecSLior David /* WMI_BA_STATUS_EVENTID */ 1102b874ddecSLior David enum wmi_vring_ba_status { 1103b874ddecSLior David WMI_BA_AGREED = 0x00, 1104b874ddecSLior David WMI_BA_NON_AGREED = 0x01, 1105b874ddecSLior David /* BA_EN in middle of teardown flow */ 1106b874ddecSLior David WMI_BA_TD_WIP = 0x02, 1107b874ddecSLior David /* BA_DIS or BA_EN in middle of BA SETUP flow */ 1108b874ddecSLior David WMI_BA_SETUP_WIP = 0x03, 1109b874ddecSLior David /* BA_EN when the BA session is already active */ 1110b874ddecSLior David WMI_BA_SESSION_ACTIVE = 0x04, 1111b874ddecSLior David /* BA_DIS when the BA session is not active */ 1112b874ddecSLior David WMI_BA_SESSION_NOT_ACTIVE = 0x05, 1113b874ddecSLior David }; 1114b874ddecSLior David 1115b874ddecSLior David struct wmi_ba_status_event { 1116b874ddecSLior David /* enum wmi_vring_ba_status */ 1117b874ddecSLior David __le16 status; 11182be7d22fSVladimir Kondratiev u8 reserved[2]; 11192be7d22fSVladimir Kondratiev u8 ringid; 11202be7d22fSVladimir Kondratiev u8 agg_wsize; 11212be7d22fSVladimir Kondratiev __le16 ba_timeout; 1122cbcf5866SVladimir Kondratiev u8 amsdu; 11232be7d22fSVladimir Kondratiev } __packed; 11242be7d22fSVladimir Kondratiev 1125b874ddecSLior David /* WMI_DELBA_EVENTID */ 11262be7d22fSVladimir Kondratiev struct wmi_delba_event { 11272be7d22fSVladimir Kondratiev u8 cidxtid; 11282be7d22fSVladimir Kondratiev u8 from_initiator; 11292be7d22fSVladimir Kondratiev __le16 reason; 11302be7d22fSVladimir Kondratiev } __packed; 11312be7d22fSVladimir Kondratiev 1132b874ddecSLior David /* WMI_VRING_CFG_DONE_EVENTID */ 11332be7d22fSVladimir Kondratiev struct wmi_vring_cfg_done_event { 11342be7d22fSVladimir Kondratiev u8 ringid; 11352be7d22fSVladimir Kondratiev u8 status; 11362be7d22fSVladimir Kondratiev u8 reserved[2]; 11372be7d22fSVladimir Kondratiev __le32 tx_vring_tail_ptr; 11382be7d22fSVladimir Kondratiev } __packed; 11392be7d22fSVladimir Kondratiev 1140b874ddecSLior David /* WMI_RCP_ADDBA_RESP_SENT_EVENTID */ 11412be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_sent_event { 11422be7d22fSVladimir Kondratiev u8 cidxtid; 11432be7d22fSVladimir Kondratiev u8 reserved; 11442be7d22fSVladimir Kondratiev __le16 status; 11452be7d22fSVladimir Kondratiev } __packed; 11462be7d22fSVladimir Kondratiev 1147b874ddecSLior David /* WMI_RCP_ADDBA_REQ_EVENTID */ 11482be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_event { 11492be7d22fSVladimir Kondratiev u8 cidxtid; 11502be7d22fSVladimir Kondratiev u8 dialog_token; 1151b874ddecSLior David /* ieee80211_ba_parameterset as it received */ 1152b874ddecSLior David __le16 ba_param_set; 11532be7d22fSVladimir Kondratiev __le16 ba_timeout; 1154b874ddecSLior David /* ieee80211_ba_seqstrl field as it received */ 1155b874ddecSLior David __le16 ba_seq_ctrl; 11562be7d22fSVladimir Kondratiev } __packed; 11572be7d22fSVladimir Kondratiev 1158b874ddecSLior David /* WMI_CFG_RX_CHAIN_DONE_EVENTID */ 11592be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_done_event_status { 1160b874ddecSLior David WMI_CFG_RX_CHAIN_SUCCESS = 0x01, 11612be7d22fSVladimir Kondratiev }; 11622be7d22fSVladimir Kondratiev 11632be7d22fSVladimir Kondratiev struct wmi_cfg_rx_chain_done_event { 1164b874ddecSLior David /* V-Ring Tail pointer */ 1165b874ddecSLior David __le32 rx_ring_tail_ptr; 11662be7d22fSVladimir Kondratiev __le32 status; 11672be7d22fSVladimir Kondratiev } __packed; 11682be7d22fSVladimir Kondratiev 1169b874ddecSLior David /* WMI_WBE_LINK_DOWN_EVENTID */ 11702be7d22fSVladimir Kondratiev enum wmi_wbe_link_down_event_reason { 1171b874ddecSLior David WMI_WBE_REASON_USER_REQUEST = 0x00, 1172b874ddecSLior David WMI_WBE_REASON_RX_DISASSOC = 0x01, 1173b874ddecSLior David WMI_WBE_REASON_BAD_PHY_LINK = 0x02, 11742be7d22fSVladimir Kondratiev }; 11752be7d22fSVladimir Kondratiev 1176b874ddecSLior David /* WMI_WBE_LINK_DOWN_EVENTID */ 11772be7d22fSVladimir Kondratiev struct wmi_wbe_link_down_event { 11782be7d22fSVladimir Kondratiev u8 cid; 11792be7d22fSVladimir Kondratiev u8 reserved[3]; 11802be7d22fSVladimir Kondratiev __le32 reason; 11812be7d22fSVladimir Kondratiev } __packed; 11822be7d22fSVladimir Kondratiev 1183b874ddecSLior David /* WMI_DATA_PORT_OPEN_EVENTID */ 11842be7d22fSVladimir Kondratiev struct wmi_data_port_open_event { 11852be7d22fSVladimir Kondratiev u8 cid; 11862be7d22fSVladimir Kondratiev u8 reserved[3]; 11872be7d22fSVladimir Kondratiev } __packed; 11882be7d22fSVladimir Kondratiev 1189b874ddecSLior David /* WMI_VRING_EN_EVENTID */ 1190230d8442SVladimir Kondratiev struct wmi_vring_en_event { 1191230d8442SVladimir Kondratiev u8 vring_index; 1192230d8442SVladimir Kondratiev u8 reserved[3]; 1193230d8442SVladimir Kondratiev } __packed; 1194230d8442SVladimir Kondratiev 1195b874ddecSLior David /* WMI_GET_PCP_CHANNEL_EVENTID */ 11962be7d22fSVladimir Kondratiev struct wmi_get_pcp_channel_event { 11972be7d22fSVladimir Kondratiev u8 channel; 11982be7d22fSVladimir Kondratiev u8 reserved[3]; 11992be7d22fSVladimir Kondratiev } __packed; 12002be7d22fSVladimir Kondratiev 1201b874ddecSLior David /* WMI_P2P_CFG_DONE_EVENTID */ 12028c679675SVladimir Kondratiev struct wmi_p2p_cfg_done_event { 1203b874ddecSLior David /* wmi_fw_status */ 1204b874ddecSLior David u8 status; 12058c679675SVladimir Kondratiev u8 reserved[3]; 12068c679675SVladimir Kondratiev } __packed; 12078c679675SVladimir Kondratiev 1208b874ddecSLior David /* WMI_PORT_ALLOCATED_EVENTID */ 1209b8023177SVladimir Kondratiev struct wmi_port_allocated_event { 1210b874ddecSLior David /* wmi_fw_status */ 1211b874ddecSLior David u8 status; 1212b8023177SVladimir Kondratiev u8 reserved[3]; 1213b8023177SVladimir Kondratiev } __packed; 1214b8023177SVladimir Kondratiev 1215b874ddecSLior David /* WMI_PORT_DELETED_EVENTID */ 1216b8023177SVladimir Kondratiev struct wmi_port_deleted_event { 1217b874ddecSLior David /* wmi_fw_status */ 1218b874ddecSLior David u8 status; 1219b8023177SVladimir Kondratiev u8 reserved[3]; 1220b8023177SVladimir Kondratiev } __packed; 1221b8023177SVladimir Kondratiev 1222b874ddecSLior David /* WMI_LISTEN_STARTED_EVENTID */ 1223b8023177SVladimir Kondratiev struct wmi_listen_started_event { 1224b874ddecSLior David /* wmi_fw_status */ 1225b874ddecSLior David u8 status; 1226b8023177SVladimir Kondratiev u8 reserved[3]; 1227b8023177SVladimir Kondratiev } __packed; 1228b8023177SVladimir Kondratiev 1229b874ddecSLior David /* WMI_SEARCH_STARTED_EVENTID */ 1230b8023177SVladimir Kondratiev struct wmi_search_started_event { 1231b874ddecSLior David /* wmi_fw_status */ 1232b874ddecSLior David u8 status; 1233b8023177SVladimir Kondratiev u8 reserved[3]; 1234b8023177SVladimir Kondratiev } __packed; 1235b8023177SVladimir Kondratiev 1236b874ddecSLior David /* WMI_PCP_STARTED_EVENTID */ 1237b8023177SVladimir Kondratiev struct wmi_pcp_started_event { 1238b874ddecSLior David /* wmi_fw_status */ 1239b874ddecSLior David u8 status; 1240b8023177SVladimir Kondratiev u8 reserved[3]; 1241b8023177SVladimir Kondratiev } __packed; 1242b8023177SVladimir Kondratiev 1243b874ddecSLior David /* WMI_PCP_FACTOR_EVENTID */ 1244b8023177SVladimir Kondratiev struct wmi_pcp_factor_event { 1245b8023177SVladimir Kondratiev __le32 pcp_factor; 1246b8023177SVladimir Kondratiev } __packed; 1247b8023177SVladimir Kondratiev 12482be7d22fSVladimir Kondratiev enum wmi_sw_tx_status { 1249b874ddecSLior David WMI_TX_SW_STATUS_SUCCESS = 0x00, 1250b874ddecSLior David WMI_TX_SW_STATUS_FAILED_NO_RESOURCES = 0x01, 1251b874ddecSLior David WMI_TX_SW_STATUS_FAILED_TX = 0x02, 12522be7d22fSVladimir Kondratiev }; 12532be7d22fSVladimir Kondratiev 1254b874ddecSLior David /* WMI_SW_TX_COMPLETE_EVENTID */ 12552be7d22fSVladimir Kondratiev struct wmi_sw_tx_complete_event { 1256b874ddecSLior David /* enum wmi_sw_tx_status */ 1257b874ddecSLior David u8 status; 12582be7d22fSVladimir Kondratiev u8 reserved[3]; 12592be7d22fSVladimir Kondratiev } __packed; 12602be7d22fSVladimir Kondratiev 1261b874ddecSLior David /* WMI_CORR_MEASURE_EVENTID */ 1262b8023177SVladimir Kondratiev struct wmi_corr_measure_event { 1263b874ddecSLior David /* signed */ 1264b874ddecSLior David __le32 i; 1265b874ddecSLior David /* signed */ 1266b874ddecSLior David __le32 q; 1267b874ddecSLior David /* signed */ 1268b874ddecSLior David __le32 image_i; 1269b874ddecSLior David /* signed */ 1270b874ddecSLior David __le32 image_q; 1271b8023177SVladimir Kondratiev } __packed; 1272b8023177SVladimir Kondratiev 1273b874ddecSLior David /* WMI_READ_RSSI_EVENTID */ 1274b8023177SVladimir Kondratiev struct wmi_read_rssi_event { 1275b8023177SVladimir Kondratiev __le32 ina_rssi_adc_dbm; 1276b8023177SVladimir Kondratiev } __packed; 1277b8023177SVladimir Kondratiev 1278b874ddecSLior David /* WMI_GET_SSID_EVENTID */ 12792be7d22fSVladimir Kondratiev struct wmi_get_ssid_event { 12802be7d22fSVladimir Kondratiev __le32 ssid_len; 12812be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 12822be7d22fSVladimir Kondratiev } __packed; 12832be7d22fSVladimir Kondratiev 1284b874ddecSLior David /* wmi_rx_mgmt_info */ 12852be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_info { 12862be7d22fSVladimir Kondratiev u8 mcs; 12872be7d22fSVladimir Kondratiev s8 snr; 1288b8023177SVladimir Kondratiev u8 range; 1289b8023177SVladimir Kondratiev u8 sqi; 12902be7d22fSVladimir Kondratiev __le16 stype; 12912be7d22fSVladimir Kondratiev __le16 status; 12922be7d22fSVladimir Kondratiev __le32 len; 1293b874ddecSLior David /* Not resolved when == 0xFFFFFFFF ==> Broadcast to all MIDS */ 12942be7d22fSVladimir Kondratiev u8 qid; 1295b874ddecSLior David /* Not resolved when == 0xFFFFFFFF ==> Broadcast to all MIDS */ 12962be7d22fSVladimir Kondratiev u8 mid; 12972be7d22fSVladimir Kondratiev u8 cid; 1298b874ddecSLior David /* From Radio MNGR */ 1299b874ddecSLior David u8 channel; 13002be7d22fSVladimir Kondratiev } __packed; 13012be7d22fSVladimir Kondratiev 1302b874ddecSLior David /* wmi_otp_read_write_cmd */ 1303b874ddecSLior David struct wmi_otp_read_write_cmd { 1304b874ddecSLior David __le32 addr; 1305b874ddecSLior David __le32 size; 1306b874ddecSLior David u8 values[0]; 1307b874ddecSLior David } __packed; 1308b874ddecSLior David 1309b874ddecSLior David /* WMI_OTP_READ_RESULT_EVENTID */ 1310b874ddecSLior David struct wmi_otp_read_result_event { 1311b874ddecSLior David u8 payload[0]; 1312b874ddecSLior David } __packed; 1313b874ddecSLior David 1314b874ddecSLior David /* WMI_TX_MGMT_PACKET_EVENTID */ 13156c2faf09SVladimir Kondratiev struct wmi_tx_mgmt_packet_event { 13166c2faf09SVladimir Kondratiev u8 payload[0]; 13176c2faf09SVladimir Kondratiev } __packed; 13186c2faf09SVladimir Kondratiev 1319b874ddecSLior David /* WMI_RX_MGMT_PACKET_EVENTID */ 13202be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_packet_event { 13212be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_info info; 13222be7d22fSVladimir Kondratiev u8 payload[0]; 13232be7d22fSVladimir Kondratiev } __packed; 13242be7d22fSVladimir Kondratiev 1325b874ddecSLior David /* WMI_ECHO_RSP_EVENTID */ 1326b874ddecSLior David struct wmi_echo_rsp_event { 13272be7d22fSVladimir Kondratiev __le32 echoed_value; 13282be7d22fSVladimir Kondratiev } __packed; 13292be7d22fSVladimir Kondratiev 1330b874ddecSLior David /* WMI_TEMP_SENSE_DONE_EVENTID 1331b8023177SVladimir Kondratiev * 1332b8023177SVladimir Kondratiev * Measure MAC and radio temperatures 1333b8023177SVladimir Kondratiev */ 1334b8023177SVladimir Kondratiev struct wmi_temp_sense_done_event { 1335b874ddecSLior David /* Temperature times 1000 (actual temperature will be achieved by 1336b874ddecSLior David * dividing the value by 1000) 1337b874ddecSLior David */ 13388c679675SVladimir Kondratiev __le32 baseband_t1000; 1339b874ddecSLior David /* Temperature times 1000 (actual temperature will be achieved by 1340b874ddecSLior David * dividing the value by 1000) 1341b874ddecSLior David */ 13428c679675SVladimir Kondratiev __le32 rf_t1000; 1343b8023177SVladimir Kondratiev } __packed; 1344b8023177SVladimir Kondratiev 1345b874ddecSLior David #define WMI_SCAN_DWELL_TIME_MS (100) 1346b874ddecSLior David #define WMI_SURVEY_TIMEOUT_MS (10000) 1347b874ddecSLior David 1348b874ddecSLior David enum wmi_hidden_ssid { 1349b874ddecSLior David WMI_HIDDEN_SSID_DISABLED = 0x00, 1350b874ddecSLior David WMI_HIDDEN_SSID_SEND_EMPTY = 0x10, 1351b874ddecSLior David WMI_HIDDEN_SSID_CLEAR = 0xFE, 1352b874ddecSLior David }; 1353b874ddecSLior David 1354*10d599adSMaya Erez /* WMI_LED_CFG_CMDID 1355*10d599adSMaya Erez * 1356*10d599adSMaya Erez * Configure LED On\Off\Blinking operation 1357*10d599adSMaya Erez * 1358*10d599adSMaya Erez * Returned events: 1359*10d599adSMaya Erez * - WMI_LED_CFG_DONE_EVENTID 1360*10d599adSMaya Erez */ 1361*10d599adSMaya Erez enum led_mode { 1362*10d599adSMaya Erez LED_DISABLE = 0x00, 1363*10d599adSMaya Erez LED_ENABLE = 0x01, 1364*10d599adSMaya Erez }; 1365*10d599adSMaya Erez 1366*10d599adSMaya Erez /* The names of the led as 1367*10d599adSMaya Erez * described on HW schemes. 1368*10d599adSMaya Erez */ 1369*10d599adSMaya Erez enum wmi_led_id { 1370*10d599adSMaya Erez WMI_LED_WLAN = 0x00, 1371*10d599adSMaya Erez WMI_LED_WPAN = 0x01, 1372*10d599adSMaya Erez WMI_LED_WWAN = 0x02, 1373*10d599adSMaya Erez }; 1374*10d599adSMaya Erez 1375*10d599adSMaya Erez /* Led polarity mode. */ 1376*10d599adSMaya Erez enum wmi_led_polarity { 1377*10d599adSMaya Erez LED_POLARITY_HIGH_ACTIVE = 0x00, 1378*10d599adSMaya Erez LED_POLARITY_LOW_ACTIVE = 0x01, 1379*10d599adSMaya Erez }; 1380*10d599adSMaya Erez 1381*10d599adSMaya Erez /* Combination of on and off 1382*10d599adSMaya Erez * creates the blinking period 1383*10d599adSMaya Erez */ 1384*10d599adSMaya Erez struct wmi_led_blink_mode { 1385*10d599adSMaya Erez __le32 blink_on; 1386*10d599adSMaya Erez __le32 blink_off; 1387*10d599adSMaya Erez } __packed; 1388*10d599adSMaya Erez 1389*10d599adSMaya Erez /* WMI_LED_CFG_CMDID */ 1390*10d599adSMaya Erez struct wmi_led_cfg_cmd { 1391*10d599adSMaya Erez /* enum led_mode_e */ 1392*10d599adSMaya Erez u8 led_mode; 1393*10d599adSMaya Erez /* enum wmi_led_id_e */ 1394*10d599adSMaya Erez u8 id; 1395*10d599adSMaya Erez /* slow speed blinking combination */ 1396*10d599adSMaya Erez struct wmi_led_blink_mode slow_blink_cfg; 1397*10d599adSMaya Erez /* medium speed blinking combination */ 1398*10d599adSMaya Erez struct wmi_led_blink_mode medium_blink_cfg; 1399*10d599adSMaya Erez /* high speed blinking combination */ 1400*10d599adSMaya Erez struct wmi_led_blink_mode fast_blink_cfg; 1401*10d599adSMaya Erez /* polarity of the led */ 1402*10d599adSMaya Erez u8 led_polarity; 1403*10d599adSMaya Erez /* reserved */ 1404*10d599adSMaya Erez u8 reserved; 1405*10d599adSMaya Erez } __packed; 1406*10d599adSMaya Erez 1407*10d599adSMaya Erez /* WMI_LED_CFG_DONE_EVENTID */ 1408*10d599adSMaya Erez struct wmi_led_cfg_done_event { 1409*10d599adSMaya Erez /* led config status */ 1410*10d599adSMaya Erez __le32 status; 1411*10d599adSMaya Erez } __packed; 1412*10d599adSMaya Erez 14132be7d22fSVladimir Kondratiev #endif /* __WILOCITY_WMI_H__ */ 1414