12be7d22fSVladimir Kondratiev /* 2*b874ddecSLior David * Copyright (c) 2012-2016 Qualcomm Atheros, Inc. 3*b874ddecSLior 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 20*b874ddecSLior David * Wireless Module Interface (WMI) for the Qualcomm 21*b874ddecSLior 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. 25*b874ddecSLior David * 26*b874ddecSLior 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 */ 33*b874ddecSLior David #define WMI_MAX_ASSOC_STA (8) 34*b874ddecSLior David #define WMI_DEFAULT_ASSOC_STA (1) 352be7d22fSVladimir Kondratiev #define WMI_MAC_LEN (6) 362be7d22fSVladimir Kondratiev #define WMI_PROX_RANGE_NUM (3) 37*b874ddecSLior David #define WMI_MAX_LOSS_DMG_BEACONS (20) 38*b874ddecSLior David 39*b874ddecSLior David /* Mailbox interface 40*b874ddecSLior David * used for commands and events 41*b874ddecSLior David */ 42*b874ddecSLior David enum wmi_mid { 43*b874ddecSLior David MID_DEFAULT = 0x00, 44*b874ddecSLior David FIRST_DBG_MID_ID = 0x10, 45*b874ddecSLior David LAST_DBG_MID_ID = 0xFE, 46*b874ddecSLior David MID_BROADCAST = 0xFF, 47*b874ddecSLior David }; 48*b874ddecSLior David 49*b874ddecSLior David /* WMI_CMD_HDR */ 50*b874ddecSLior David struct wmi_cmd_hdr { 51*b874ddecSLior David u8 mid; 52*b874ddecSLior David u8 reserved; 53*b874ddecSLior David __le16 command_id; 54*b874ddecSLior David __le32 fw_timestamp; 55*b874ddecSLior David } __packed; 562be7d22fSVladimir Kondratiev 572be7d22fSVladimir Kondratiev /* List of Commands */ 582be7d22fSVladimir Kondratiev enum wmi_command_id { 59*b874ddecSLior David WMI_CONNECT_CMDID = 0x01, 60*b874ddecSLior David WMI_DISCONNECT_CMDID = 0x03, 61*b874ddecSLior David WMI_DISCONNECT_STA_CMDID = 0x04, 62*b874ddecSLior David WMI_START_SCAN_CMDID = 0x07, 63*b874ddecSLior David WMI_SET_BSS_FILTER_CMDID = 0x09, 64*b874ddecSLior David WMI_SET_PROBED_SSID_CMDID = 0x0A, 65*b874ddecSLior David WMI_SET_LISTEN_INT_CMDID = 0x0B, 66*b874ddecSLior David WMI_BCON_CTRL_CMDID = 0x0F, 67*b874ddecSLior David WMI_ADD_CIPHER_KEY_CMDID = 0x16, 68*b874ddecSLior David WMI_DELETE_CIPHER_KEY_CMDID = 0x17, 69*b874ddecSLior David WMI_PCP_CONF_CMDID = 0x18, 70*b874ddecSLior David WMI_SET_APPIE_CMDID = 0x3F, 71*b874ddecSLior David WMI_SET_WSC_STATUS_CMDID = 0x41, 72*b874ddecSLior David WMI_PXMT_RANGE_CFG_CMDID = 0x42, 73*b874ddecSLior David WMI_PXMT_SNR2_RANGE_CFG_CMDID = 0x43, 74*b874ddecSLior David WMI_MEM_READ_CMDID = 0x800, 75*b874ddecSLior David WMI_MEM_WR_CMDID = 0x801, 76*b874ddecSLior David WMI_ECHO_CMDID = 0x803, 77*b874ddecSLior David WMI_DEEP_ECHO_CMDID = 0x804, 78*b874ddecSLior David WMI_CONFIG_MAC_CMDID = 0x805, 79*b874ddecSLior David WMI_CONFIG_PHY_DEBUG_CMDID = 0x806, 80*b874ddecSLior David WMI_ADD_DEBUG_TX_PCKT_CMDID = 0x808, 81*b874ddecSLior David WMI_PHY_GET_STATISTICS_CMDID = 0x809, 82*b874ddecSLior David WMI_FS_TUNE_CMDID = 0x80A, 83*b874ddecSLior David WMI_CORR_MEASURE_CMDID = 0x80B, 84*b874ddecSLior David WMI_READ_RSSI_CMDID = 0x80C, 85*b874ddecSLior David WMI_TEMP_SENSE_CMDID = 0x80E, 86*b874ddecSLior David WMI_DC_CALIB_CMDID = 0x80F, 87*b874ddecSLior David WMI_SEND_TONE_CMDID = 0x810, 88*b874ddecSLior David WMI_IQ_TX_CALIB_CMDID = 0x811, 89*b874ddecSLior David WMI_IQ_RX_CALIB_CMDID = 0x812, 90*b874ddecSLior David WMI_SET_UCODE_IDLE_CMDID = 0x813, 91*b874ddecSLior David WMI_SET_WORK_MODE_CMDID = 0x815, 92*b874ddecSLior David WMI_LO_LEAKAGE_CALIB_CMDID = 0x816, 93*b874ddecSLior David WMI_MARLON_R_READ_CMDID = 0x818, 94*b874ddecSLior David WMI_MARLON_R_WRITE_CMDID = 0x819, 95*b874ddecSLior David WMI_MARLON_R_TXRX_SEL_CMDID = 0x81A, 96*b874ddecSLior David MAC_IO_STATIC_PARAMS_CMDID = 0x81B, 97*b874ddecSLior David MAC_IO_DYNAMIC_PARAMS_CMDID = 0x81C, 98*b874ddecSLior David WMI_SILENT_RSSI_CALIB_CMDID = 0x81D, 99*b874ddecSLior David WMI_RF_RX_TEST_CMDID = 0x81E, 100*b874ddecSLior David WMI_CFG_RX_CHAIN_CMDID = 0x820, 101*b874ddecSLior David WMI_VRING_CFG_CMDID = 0x821, 102*b874ddecSLior David WMI_BCAST_VRING_CFG_CMDID = 0x822, 103*b874ddecSLior David WMI_VRING_BA_EN_CMDID = 0x823, 104*b874ddecSLior David WMI_VRING_BA_DIS_CMDID = 0x824, 105*b874ddecSLior David WMI_RCP_ADDBA_RESP_CMDID = 0x825, 106*b874ddecSLior David WMI_RCP_DELBA_CMDID = 0x826, 107*b874ddecSLior David WMI_SET_SSID_CMDID = 0x827, 108*b874ddecSLior David WMI_GET_SSID_CMDID = 0x828, 109*b874ddecSLior David WMI_SET_PCP_CHANNEL_CMDID = 0x829, 110*b874ddecSLior David WMI_GET_PCP_CHANNEL_CMDID = 0x82A, 111*b874ddecSLior David WMI_SW_TX_REQ_CMDID = 0x82B, 112*b874ddecSLior David WMI_READ_MAC_RXQ_CMDID = 0x830, 113*b874ddecSLior David WMI_READ_MAC_TXQ_CMDID = 0x831, 114*b874ddecSLior David WMI_WRITE_MAC_RXQ_CMDID = 0x832, 115*b874ddecSLior David WMI_WRITE_MAC_TXQ_CMDID = 0x833, 116*b874ddecSLior David WMI_WRITE_MAC_XQ_FIELD_CMDID = 0x834, 117*b874ddecSLior David WMI_MLME_PUSH_CMDID = 0x835, 118*b874ddecSLior David WMI_BEAMFORMING_MGMT_CMDID = 0x836, 119*b874ddecSLior David WMI_BF_TXSS_MGMT_CMDID = 0x837, 120*b874ddecSLior David WMI_BF_SM_MGMT_CMDID = 0x838, 121*b874ddecSLior David WMI_BF_RXSS_MGMT_CMDID = 0x839, 122*b874ddecSLior David WMI_BF_TRIG_CMDID = 0x83A, 123*b874ddecSLior David WMI_SET_SECTORS_CMDID = 0x849, 124*b874ddecSLior David WMI_MAINTAIN_PAUSE_CMDID = 0x850, 125*b874ddecSLior David WMI_MAINTAIN_RESUME_CMDID = 0x851, 126*b874ddecSLior David WMI_RS_MGMT_CMDID = 0x852, 127*b874ddecSLior David WMI_RF_MGMT_CMDID = 0x853, 128*b874ddecSLior David WMI_THERMAL_THROTTLING_CTRL_CMDID = 0x854, 129*b874ddecSLior David WMI_THERMAL_THROTTLING_GET_STATUS_CMDID = 0x855, 130*b874ddecSLior David WMI_OTP_READ_CMDID = 0x856, 131*b874ddecSLior David WMI_OTP_WRITE_CMDID = 0x857, 1322be7d22fSVladimir Kondratiev /* Performance monitoring commands */ 133*b874ddecSLior David WMI_BF_CTRL_CMDID = 0x862, 134*b874ddecSLior David WMI_NOTIFY_REQ_CMDID = 0x863, 135*b874ddecSLior David WMI_GET_STATUS_CMDID = 0x864, 136*b874ddecSLior David WMI_UNIT_TEST_CMDID = 0x900, 137*b874ddecSLior David WMI_HICCUP_CMDID = 0x901, 138*b874ddecSLior David WMI_FLASH_READ_CMDID = 0x902, 139*b874ddecSLior David WMI_FLASH_WRITE_CMDID = 0x903, 140b8023177SVladimir Kondratiev /* P2P */ 141*b874ddecSLior David WMI_P2P_CFG_CMDID = 0x910, 142*b874ddecSLior David WMI_PORT_ALLOCATE_CMDID = 0x911, 143*b874ddecSLior David WMI_PORT_DELETE_CMDID = 0x912, 144*b874ddecSLior David WMI_POWER_MGMT_CFG_CMDID = 0x913, 145*b874ddecSLior David WMI_START_LISTEN_CMDID = 0x914, 146*b874ddecSLior David WMI_START_SEARCH_CMDID = 0x915, 147*b874ddecSLior David WMI_DISCOVERY_START_CMDID = 0x916, 148*b874ddecSLior David WMI_DISCOVERY_STOP_CMDID = 0x917, 149*b874ddecSLior David WMI_PCP_START_CMDID = 0x918, 150*b874ddecSLior David WMI_PCP_STOP_CMDID = 0x919, 151*b874ddecSLior David WMI_GET_PCP_FACTOR_CMDID = 0x91B, 152*b874ddecSLior David WMI_SET_MAC_ADDRESS_CMDID = 0xF003, 153*b874ddecSLior David WMI_ABORT_SCAN_CMDID = 0xF007, 154*b874ddecSLior David WMI_SET_PROMISCUOUS_MODE_CMDID = 0xF041, 155*b874ddecSLior David WMI_GET_PMK_CMDID = 0xF048, 156*b874ddecSLior David WMI_SET_PASSPHRASE_CMDID = 0xF049, 157*b874ddecSLior David WMI_SEND_ASSOC_RES_CMDID = 0xF04A, 158*b874ddecSLior David WMI_SET_ASSOC_REQ_RELAY_CMDID = 0xF04B, 159*b874ddecSLior David WMI_MAC_ADDR_REQ_CMDID = 0xF04D, 160*b874ddecSLior David WMI_FW_VER_CMDID = 0xF04E, 161*b874ddecSLior David WMI_PMC_CMDID = 0xF04F, 1622be7d22fSVladimir Kondratiev }; 1632be7d22fSVladimir Kondratiev 164*b874ddecSLior David /* WMI_CONNECT_CMDID */ 1652be7d22fSVladimir Kondratiev enum wmi_network_type { 1662be7d22fSVladimir Kondratiev WMI_NETTYPE_INFRA = 0x01, 1672be7d22fSVladimir Kondratiev WMI_NETTYPE_ADHOC = 0x02, 1682be7d22fSVladimir Kondratiev WMI_NETTYPE_ADHOC_CREATOR = 0x04, 1692be7d22fSVladimir Kondratiev WMI_NETTYPE_AP = 0x10, 1702be7d22fSVladimir Kondratiev WMI_NETTYPE_P2P = 0x20, 171*b874ddecSLior David /* PCIE over 60g */ 172*b874ddecSLior David WMI_NETTYPE_WBE = 0x40, 1732be7d22fSVladimir Kondratiev }; 1742be7d22fSVladimir Kondratiev 1752be7d22fSVladimir Kondratiev enum wmi_dot11_auth_mode { 1762be7d22fSVladimir Kondratiev WMI_AUTH11_OPEN = 0x01, 1772be7d22fSVladimir Kondratiev WMI_AUTH11_SHARED = 0x02, 1782be7d22fSVladimir Kondratiev WMI_AUTH11_LEAP = 0x04, 1792be7d22fSVladimir Kondratiev WMI_AUTH11_WSC = 0x08, 1802be7d22fSVladimir Kondratiev }; 1812be7d22fSVladimir Kondratiev 1822be7d22fSVladimir Kondratiev enum wmi_auth_mode { 1832be7d22fSVladimir Kondratiev WMI_AUTH_NONE = 0x01, 1842be7d22fSVladimir Kondratiev WMI_AUTH_WPA = 0x02, 1852be7d22fSVladimir Kondratiev WMI_AUTH_WPA2 = 0x04, 1862be7d22fSVladimir Kondratiev WMI_AUTH_WPA_PSK = 0x08, 1872be7d22fSVladimir Kondratiev WMI_AUTH_WPA2_PSK = 0x10, 1882be7d22fSVladimir Kondratiev WMI_AUTH_WPA_CCKM = 0x20, 1892be7d22fSVladimir Kondratiev WMI_AUTH_WPA2_CCKM = 0x40, 1902be7d22fSVladimir Kondratiev }; 1912be7d22fSVladimir Kondratiev 1922be7d22fSVladimir Kondratiev enum wmi_crypto_type { 1932be7d22fSVladimir Kondratiev WMI_CRYPT_NONE = 0x01, 1942be7d22fSVladimir Kondratiev WMI_CRYPT_AES_GCMP = 0x20, 1952be7d22fSVladimir Kondratiev }; 1962be7d22fSVladimir Kondratiev 1972be7d22fSVladimir Kondratiev enum wmi_connect_ctrl_flag_bits { 198*b874ddecSLior David WMI_CONNECT_ASSOC_POLICY_USER = 0x01, 199*b874ddecSLior David WMI_CONNECT_SEND_REASSOC = 0x02, 200*b874ddecSLior David WMI_CONNECT_IGNORE_WPA_GROUP_CIPHER = 0x04, 201*b874ddecSLior David WMI_CONNECT_PROFILE_MATCH_DONE = 0x08, 202*b874ddecSLior David WMI_CONNECT_IGNORE_AAC_BEACON = 0x10, 203*b874ddecSLior David WMI_CONNECT_CSA_FOLLOW_BSS = 0x20, 204*b874ddecSLior David WMI_CONNECT_DO_WPA_OFFLOAD = 0x40, 205*b874ddecSLior David WMI_CONNECT_DO_NOT_DEAUTH = 0x80, 2062be7d22fSVladimir Kondratiev }; 2072be7d22fSVladimir Kondratiev 2082be7d22fSVladimir Kondratiev #define WMI_MAX_SSID_LEN (32) 2092be7d22fSVladimir Kondratiev 210*b874ddecSLior David /* WMI_CONNECT_CMDID */ 2112be7d22fSVladimir Kondratiev struct wmi_connect_cmd { 2122be7d22fSVladimir Kondratiev u8 network_type; 2132be7d22fSVladimir Kondratiev u8 dot11_auth_mode; 2142be7d22fSVladimir Kondratiev u8 auth_mode; 2152be7d22fSVladimir Kondratiev u8 pairwise_crypto_type; 2162be7d22fSVladimir Kondratiev u8 pairwise_crypto_len; 2172be7d22fSVladimir Kondratiev u8 group_crypto_type; 2182be7d22fSVladimir Kondratiev u8 group_crypto_len; 2192be7d22fSVladimir Kondratiev u8 ssid_len; 2202be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 2212be7d22fSVladimir Kondratiev u8 channel; 2222be7d22fSVladimir Kondratiev u8 reserved0; 2232be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 2242be7d22fSVladimir Kondratiev __le32 ctrl_flags; 2252be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 2262be7d22fSVladimir Kondratiev u8 reserved1[2]; 2272be7d22fSVladimir Kondratiev } __packed; 2282be7d22fSVladimir Kondratiev 229*b874ddecSLior David /* WMI_DISCONNECT_STA_CMDID */ 230b8023177SVladimir Kondratiev struct wmi_disconnect_sta_cmd { 231b8023177SVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 232b8023177SVladimir Kondratiev __le16 disconnect_reason; 233b8023177SVladimir Kondratiev } __packed; 2342be7d22fSVladimir Kondratiev 2352be7d22fSVladimir Kondratiev #define WMI_MAX_KEY_INDEX (3) 2362be7d22fSVladimir Kondratiev #define WMI_MAX_KEY_LEN (32) 2372be7d22fSVladimir Kondratiev #define WMI_PASSPHRASE_LEN (64) 2382be7d22fSVladimir Kondratiev 239*b874ddecSLior David /* WMI_SET_PASSPHRASE_CMDID */ 2402be7d22fSVladimir Kondratiev struct wmi_set_passphrase_cmd { 2412be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 2422be7d22fSVladimir Kondratiev u8 passphrase[WMI_PASSPHRASE_LEN]; 2432be7d22fSVladimir Kondratiev u8 ssid_len; 2442be7d22fSVladimir Kondratiev u8 passphrase_len; 2452be7d22fSVladimir Kondratiev } __packed; 2462be7d22fSVladimir Kondratiev 247*b874ddecSLior David /* WMI_ADD_CIPHER_KEY_CMDID */ 2482be7d22fSVladimir Kondratiev enum wmi_key_usage { 249*b874ddecSLior David WMI_KEY_USE_PAIRWISE = 0x00, 250*b874ddecSLior David WMI_KEY_USE_RX_GROUP = 0x01, 251*b874ddecSLior David WMI_KEY_USE_TX_GROUP = 0x02, 2522be7d22fSVladimir Kondratiev }; 2532be7d22fSVladimir Kondratiev 2542be7d22fSVladimir Kondratiev struct wmi_add_cipher_key_cmd { 2552be7d22fSVladimir Kondratiev u8 key_index; 2562be7d22fSVladimir Kondratiev u8 key_type; 257*b874ddecSLior David /* enum wmi_key_usage */ 258*b874ddecSLior David u8 key_usage; 2592be7d22fSVladimir Kondratiev u8 key_len; 260*b874ddecSLior David /* key replay sequence counter */ 261*b874ddecSLior David u8 key_rsc[8]; 2622be7d22fSVladimir Kondratiev u8 key[WMI_MAX_KEY_LEN]; 263*b874ddecSLior David /* Additional Key Control information */ 264*b874ddecSLior David u8 key_op_ctrl; 2652be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 2662be7d22fSVladimir Kondratiev } __packed; 2672be7d22fSVladimir Kondratiev 268*b874ddecSLior David /* WMI_DELETE_CIPHER_KEY_CMDID */ 2692be7d22fSVladimir Kondratiev struct wmi_delete_cipher_key_cmd { 2702be7d22fSVladimir Kondratiev u8 key_index; 2712be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 2722be7d22fSVladimir Kondratiev } __packed; 2732be7d22fSVladimir Kondratiev 274*b874ddecSLior David /* WMI_START_SCAN_CMDID 2752be7d22fSVladimir Kondratiev * 2762be7d22fSVladimir Kondratiev * Start L1 scan operation 2772be7d22fSVladimir Kondratiev * 2782be7d22fSVladimir Kondratiev * Returned events: 2792be7d22fSVladimir Kondratiev * - WMI_RX_MGMT_PACKET_EVENTID - for every probe resp. 2802be7d22fSVladimir Kondratiev * - WMI_SCAN_COMPLETE_EVENTID 2812be7d22fSVladimir Kondratiev */ 2822be7d22fSVladimir Kondratiev enum wmi_scan_type { 283*b874ddecSLior David WMI_ACTIVE_SCAN = 0x00, 284*b874ddecSLior David WMI_SHORT_SCAN = 0x01, 285*b874ddecSLior David WMI_PASSIVE_SCAN = 0x02, 286*b874ddecSLior David WMI_DIRECT_SCAN = 0x03, 287*b874ddecSLior David WMI_LONG_SCAN = 0x04, 2882be7d22fSVladimir Kondratiev }; 2892be7d22fSVladimir Kondratiev 290*b874ddecSLior David /* WMI_START_SCAN_CMDID */ 2912be7d22fSVladimir Kondratiev struct wmi_start_scan_cmd { 292*b874ddecSLior David u8 direct_scan_mac_addr[WMI_MAC_LEN]; 293*b874ddecSLior David /* DMG Beacon frame is transmitted during active scanning */ 29474997a53SLior David u8 discovery_mode; 295*b874ddecSLior David /* reserved */ 29674997a53SLior David u8 reserved; 297*b874ddecSLior David /* Max duration in the home channel(ms) */ 298*b874ddecSLior David __le32 dwell_time; 299*b874ddecSLior David /* Time interval between scans (ms) */ 300*b874ddecSLior David __le32 force_scan_interval; 301*b874ddecSLior David /* enum wmi_scan_type */ 302*b874ddecSLior David u8 scan_type; 303*b874ddecSLior David /* how many channels follow */ 304*b874ddecSLior David u8 num_channels; 305*b874ddecSLior David /* channels ID's: 306*b874ddecSLior David * 0 - 58320 MHz 307*b874ddecSLior David * 1 - 60480 MHz 308*b874ddecSLior David * 2 - 62640 MHz 309*b874ddecSLior David */ 3102be7d22fSVladimir Kondratiev struct { 3112be7d22fSVladimir Kondratiev u8 channel; 3122be7d22fSVladimir Kondratiev u8 reserved; 313*b874ddecSLior David } channel_list[0]; 3142be7d22fSVladimir Kondratiev } __packed; 3152be7d22fSVladimir Kondratiev 316*b874ddecSLior David /* WMI_SET_PROBED_SSID_CMDID */ 317b8023177SVladimir Kondratiev #define MAX_PROBED_SSID_INDEX (3) 3182be7d22fSVladimir Kondratiev 3192be7d22fSVladimir Kondratiev enum wmi_ssid_flag { 320*b874ddecSLior David /* disables entry */ 321*b874ddecSLior David WMI_SSID_FLAG_DISABLE = 0x00, 322*b874ddecSLior David /* probes specified ssid */ 323*b874ddecSLior David WMI_SSID_FLAG_SPECIFIC = 0x01, 324*b874ddecSLior David /* probes for any ssid */ 325*b874ddecSLior David WMI_SSID_FLAG_ANY = 0x02, 3262be7d22fSVladimir Kondratiev }; 3272be7d22fSVladimir Kondratiev 3282be7d22fSVladimir Kondratiev struct wmi_probed_ssid_cmd { 329*b874ddecSLior David /* 0 to MAX_PROBED_SSID_INDEX */ 330*b874ddecSLior David u8 entry_index; 331*b874ddecSLior David /* enum wmi_ssid_flag */ 332*b874ddecSLior David u8 flag; 3332be7d22fSVladimir Kondratiev u8 ssid_len; 3342be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 3352be7d22fSVladimir Kondratiev } __packed; 3362be7d22fSVladimir Kondratiev 337*b874ddecSLior David /* WMI_SET_APPIE_CMDID 3382be7d22fSVladimir Kondratiev * Add Application specified IE to a management frame 3392be7d22fSVladimir Kondratiev */ 340b8023177SVladimir Kondratiev #define WMI_MAX_IE_LEN (1024) 341b8023177SVladimir Kondratiev 342*b874ddecSLior David /* Frame Types */ 343b8023177SVladimir Kondratiev enum wmi_mgmt_frame_type { 344*b874ddecSLior David WMI_FRAME_BEACON = 0x00, 345*b874ddecSLior David WMI_FRAME_PROBE_REQ = 0x01, 346*b874ddecSLior David WMI_FRAME_PROBE_RESP = 0x02, 347*b874ddecSLior David WMI_FRAME_ASSOC_REQ = 0x03, 348*b874ddecSLior David WMI_FRAME_ASSOC_RESP = 0x04, 349*b874ddecSLior David WMI_NUM_MGMT_FRAME = 0x05, 350b8023177SVladimir Kondratiev }; 351b8023177SVladimir Kondratiev 3522be7d22fSVladimir Kondratiev struct wmi_set_appie_cmd { 353*b874ddecSLior David /* enum wmi_mgmt_frame_type */ 354*b874ddecSLior David u8 mgmt_frm_type; 3552be7d22fSVladimir Kondratiev u8 reserved; 356*b874ddecSLior David /* Length of the IE to be added to MGMT frame */ 357*b874ddecSLior David __le16 ie_len; 3582be7d22fSVladimir Kondratiev u8 ie_info[0]; 3592be7d22fSVladimir Kondratiev } __packed; 3602be7d22fSVladimir Kondratiev 361*b874ddecSLior David /* WMI_PXMT_RANGE_CFG_CMDID */ 3622be7d22fSVladimir Kondratiev struct wmi_pxmt_range_cfg_cmd { 3632be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 3642be7d22fSVladimir Kondratiev __le16 range; 3652be7d22fSVladimir Kondratiev } __packed; 3662be7d22fSVladimir Kondratiev 367*b874ddecSLior David /* WMI_PXMT_SNR2_RANGE_CFG_CMDID */ 3682be7d22fSVladimir Kondratiev struct wmi_pxmt_snr2_range_cfg_cmd { 369*b874ddecSLior David s8 snr2range_arr[2]; 3702be7d22fSVladimir Kondratiev } __packed; 3712be7d22fSVladimir Kondratiev 372*b874ddecSLior David /* WMI_RF_MGMT_CMDID */ 3732be7d22fSVladimir Kondratiev enum wmi_rf_mgmt_type { 374*b874ddecSLior David WMI_RF_MGMT_W_DISABLE = 0x00, 375*b874ddecSLior David WMI_RF_MGMT_W_ENABLE = 0x01, 376*b874ddecSLior David WMI_RF_MGMT_GET_STATUS = 0x02, 3772be7d22fSVladimir Kondratiev }; 3782be7d22fSVladimir Kondratiev 379*b874ddecSLior David /* WMI_RF_MGMT_CMDID */ 3802be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_cmd { 3812be7d22fSVladimir Kondratiev __le32 rf_mgmt_type; 3822be7d22fSVladimir Kondratiev } __packed; 3832be7d22fSVladimir Kondratiev 384*b874ddecSLior David /* WMI_THERMAL_THROTTLING_CTRL_CMDID */ 3858c679675SVladimir Kondratiev #define THERMAL_THROTTLING_USE_DEFAULT_MAX_TXOP_LENGTH (0xFFFFFFFF) 3868c679675SVladimir Kondratiev 387*b874ddecSLior David /* WMI_THERMAL_THROTTLING_CTRL_CMDID */ 3888c679675SVladimir Kondratiev struct wmi_thermal_throttling_ctrl_cmd { 3898c679675SVladimir Kondratiev __le32 time_on_usec; 3908c679675SVladimir Kondratiev __le32 time_off_usec; 3918c679675SVladimir Kondratiev __le32 max_txop_length_usec; 3928c679675SVladimir Kondratiev } __packed; 3938c679675SVladimir Kondratiev 394*b874ddecSLior David /* WMI_RF_RX_TEST_CMDID */ 395b8023177SVladimir Kondratiev struct wmi_rf_rx_test_cmd { 396b8023177SVladimir Kondratiev __le32 sector; 397b8023177SVladimir Kondratiev } __packed; 398b8023177SVladimir Kondratiev 399*b874ddecSLior David /* WMI_CORR_MEASURE_CMDID */ 400b8023177SVladimir Kondratiev struct wmi_corr_measure_cmd { 401*b874ddecSLior David __le32 freq_mhz; 402b8023177SVladimir Kondratiev __le32 length_samples; 403b8023177SVladimir Kondratiev __le32 iterations; 404b8023177SVladimir Kondratiev } __packed; 405b8023177SVladimir Kondratiev 406*b874ddecSLior David /* WMI_SET_SSID_CMDID */ 4072be7d22fSVladimir Kondratiev struct wmi_set_ssid_cmd { 4082be7d22fSVladimir Kondratiev __le32 ssid_len; 4092be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 4102be7d22fSVladimir Kondratiev } __packed; 4112be7d22fSVladimir Kondratiev 412*b874ddecSLior David /* WMI_SET_PCP_CHANNEL_CMDID */ 4132be7d22fSVladimir Kondratiev struct wmi_set_pcp_channel_cmd { 4142be7d22fSVladimir Kondratiev u8 channel; 4152be7d22fSVladimir Kondratiev u8 reserved[3]; 4162be7d22fSVladimir Kondratiev } __packed; 4172be7d22fSVladimir Kondratiev 418*b874ddecSLior David /* WMI_BCON_CTRL_CMDID */ 4192be7d22fSVladimir Kondratiev struct wmi_bcon_ctrl_cmd { 4202be7d22fSVladimir Kondratiev __le16 bcon_interval; 4212be7d22fSVladimir Kondratiev __le16 frag_num; 4222be7d22fSVladimir Kondratiev __le64 ss_mask; 4232be7d22fSVladimir Kondratiev u8 network_type; 4246c2faf09SVladimir Kondratiev u8 pcp_max_assoc_sta; 4252be7d22fSVladimir Kondratiev u8 disable_sec_offload; 4262be7d22fSVladimir Kondratiev u8 disable_sec; 427*b874ddecSLior David u8 hidden_ssid; 428*b874ddecSLior David u8 is_go; 429*b874ddecSLior David u8 reserved[2]; 4302be7d22fSVladimir Kondratiev } __packed; 4312be7d22fSVladimir Kondratiev 432*b874ddecSLior David /* WMI_PORT_ALLOCATE_CMDID */ 433b8023177SVladimir Kondratiev enum wmi_port_role { 434*b874ddecSLior David WMI_PORT_STA = 0x00, 435*b874ddecSLior David WMI_PORT_PCP = 0x01, 436*b874ddecSLior David WMI_PORT_AP = 0x02, 437*b874ddecSLior David WMI_PORT_P2P_DEV = 0x03, 438*b874ddecSLior David WMI_PORT_P2P_CLIENT = 0x04, 439*b874ddecSLior David WMI_PORT_P2P_GO = 0x05, 440b8023177SVladimir Kondratiev }; 441b8023177SVladimir Kondratiev 442*b874ddecSLior David /* WMI_PORT_ALLOCATE_CMDID */ 443b8023177SVladimir Kondratiev struct wmi_port_allocate_cmd { 444b8023177SVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 445b8023177SVladimir Kondratiev u8 port_role; 4466c2faf09SVladimir Kondratiev u8 mid; 447b8023177SVladimir Kondratiev } __packed; 448b8023177SVladimir Kondratiev 449*b874ddecSLior David /* WMI_PORT_DELETE_CMDID */ 450*b874ddecSLior David struct wmi_port_delete_cmd { 451b8023177SVladimir Kondratiev u8 mid; 452b8023177SVladimir Kondratiev u8 reserved[3]; 453b8023177SVladimir Kondratiev } __packed; 454b8023177SVladimir Kondratiev 455*b874ddecSLior David /* WMI_P2P_CFG_CMDID */ 456b8023177SVladimir Kondratiev enum wmi_discovery_mode { 457*b874ddecSLior David WMI_DISCOVERY_MODE_NON_OFFLOAD = 0x00, 458*b874ddecSLior David WMI_DISCOVERY_MODE_OFFLOAD = 0x01, 459*b874ddecSLior David WMI_DISCOVERY_MODE_PEER2PEER = 0x02, 460b8023177SVladimir Kondratiev }; 461b8023177SVladimir Kondratiev 462b8023177SVladimir Kondratiev struct wmi_p2p_cfg_cmd { 463*b874ddecSLior David /* enum wmi_discovery_mode */ 464*b874ddecSLior David u8 discovery_mode; 465b8023177SVladimir Kondratiev u8 channel; 466*b874ddecSLior David /* base to listen/search duration calculation */ 467*b874ddecSLior David __le16 bcon_interval; 468b8023177SVladimir Kondratiev } __packed; 469b8023177SVladimir Kondratiev 470*b874ddecSLior David /* WMI_POWER_MGMT_CFG_CMDID */ 471b8023177SVladimir Kondratiev enum wmi_power_source_type { 472*b874ddecSLior David WMI_POWER_SOURCE_BATTERY = 0x00, 473*b874ddecSLior David WMI_POWER_SOURCE_OTHER = 0x01, 474b8023177SVladimir Kondratiev }; 475b8023177SVladimir Kondratiev 476b8023177SVladimir Kondratiev struct wmi_power_mgmt_cfg_cmd { 477*b874ddecSLior David /* enum wmi_power_source_type */ 478*b874ddecSLior David u8 power_source; 479b8023177SVladimir Kondratiev u8 reserved[3]; 480b8023177SVladimir Kondratiev } __packed; 481b8023177SVladimir Kondratiev 482*b874ddecSLior David /* WMI_PCP_START_CMDID */ 483b8023177SVladimir Kondratiev struct wmi_pcp_start_cmd { 484b8023177SVladimir Kondratiev __le16 bcon_interval; 4856c2faf09SVladimir Kondratiev u8 pcp_max_assoc_sta; 4868e52fe30SHamad Kadmany u8 hidden_ssid; 487*b874ddecSLior David u8 is_go; 488*b874ddecSLior David u8 reserved0[7]; 489b8023177SVladimir Kondratiev u8 network_type; 490b8023177SVladimir Kondratiev u8 channel; 491b8023177SVladimir Kondratiev u8 disable_sec_offload; 492b8023177SVladimir Kondratiev u8 disable_sec; 493b8023177SVladimir Kondratiev } __packed; 494b8023177SVladimir Kondratiev 495*b874ddecSLior David /* WMI_SW_TX_REQ_CMDID */ 4962be7d22fSVladimir Kondratiev struct wmi_sw_tx_req_cmd { 4972be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 4982be7d22fSVladimir Kondratiev __le16 len; 4992be7d22fSVladimir Kondratiev u8 payload[0]; 5002be7d22fSVladimir Kondratiev } __packed; 5012be7d22fSVladimir Kondratiev 5022be7d22fSVladimir Kondratiev struct wmi_sw_ring_cfg { 5032be7d22fSVladimir Kondratiev __le64 ring_mem_base; 5042be7d22fSVladimir Kondratiev __le16 ring_size; 5052be7d22fSVladimir Kondratiev __le16 max_mpdu_size; 5062be7d22fSVladimir Kondratiev } __packed; 5072be7d22fSVladimir Kondratiev 508*b874ddecSLior David /* wmi_vring_cfg_schd */ 5092be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd { 5102be7d22fSVladimir Kondratiev __le16 priority; 5112be7d22fSVladimir Kondratiev __le16 timeslot_us; 5122be7d22fSVladimir Kondratiev } __packed; 5132be7d22fSVladimir Kondratiev 5142be7d22fSVladimir Kondratiev enum wmi_vring_cfg_encap_trans_type { 515*b874ddecSLior David WMI_VRING_ENC_TYPE_802_3 = 0x00, 516*b874ddecSLior David WMI_VRING_ENC_TYPE_NATIVE_WIFI = 0x01, 5172be7d22fSVladimir Kondratiev }; 5182be7d22fSVladimir Kondratiev 5192be7d22fSVladimir Kondratiev enum wmi_vring_cfg_ds_cfg { 520*b874ddecSLior David WMI_VRING_DS_PBSS = 0x00, 521*b874ddecSLior David WMI_VRING_DS_STATION = 0x01, 522*b874ddecSLior David WMI_VRING_DS_AP = 0x02, 523*b874ddecSLior David WMI_VRING_DS_ADDR4 = 0x03, 5242be7d22fSVladimir Kondratiev }; 5252be7d22fSVladimir Kondratiev 5262be7d22fSVladimir Kondratiev enum wmi_vring_cfg_nwifi_ds_trans_type { 527*b874ddecSLior David WMI_NWIFI_TX_TRANS_MODE_NO = 0x00, 528*b874ddecSLior David WMI_NWIFI_TX_TRANS_MODE_AP2PBSS = 0x01, 529*b874ddecSLior David WMI_NWIFI_TX_TRANS_MODE_STA2PBSS = 0x02, 5302be7d22fSVladimir Kondratiev }; 5312be7d22fSVladimir Kondratiev 5322be7d22fSVladimir Kondratiev enum wmi_vring_cfg_schd_params_priority { 533*b874ddecSLior David WMI_SCH_PRIO_REGULAR = 0x00, 534*b874ddecSLior David WMI_SCH_PRIO_HIGH = 0x01, 5352be7d22fSVladimir Kondratiev }; 5362be7d22fSVladimir Kondratiev 5372be7d22fSVladimir Kondratiev #define CIDXTID_CID_POS (0) 5382be7d22fSVladimir Kondratiev #define CIDXTID_CID_LEN (4) 5392be7d22fSVladimir Kondratiev #define CIDXTID_CID_MSK (0xF) 5402be7d22fSVladimir Kondratiev #define CIDXTID_TID_POS (4) 5412be7d22fSVladimir Kondratiev #define CIDXTID_TID_LEN (4) 5422be7d22fSVladimir Kondratiev #define CIDXTID_TID_MSK (0xF0) 5432be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_POS (0) 5442be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_LEN (1) 5452be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_MSK (0x1) 5462be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_POS (1) 5472be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_LEN (1) 5482be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_MSK (0x2) 5492be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_POS (0) 5502be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_LEN (6) 5512be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_MSK (0x3F) 552*b874ddecSLior David 553*b874ddecSLior David struct wmi_vring_cfg { 554*b874ddecSLior David struct wmi_sw_ring_cfg tx_sw_ring; 555*b874ddecSLior David /* 0-23 vrings */ 556*b874ddecSLior David u8 ringid; 557*b874ddecSLior David u8 cidxtid; 558*b874ddecSLior David u8 encap_trans_type; 559*b874ddecSLior David /* 802.3 DS cfg */ 560*b874ddecSLior David u8 ds_cfg; 561*b874ddecSLior David u8 nwifi_ds_trans_type; 562*b874ddecSLior David u8 mac_ctrl; 5632be7d22fSVladimir Kondratiev u8 to_resolution; 5642be7d22fSVladimir Kondratiev u8 agg_max_wsize; 5652be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd schd_params; 5662be7d22fSVladimir Kondratiev } __packed; 5672be7d22fSVladimir Kondratiev 5682be7d22fSVladimir Kondratiev enum wmi_vring_cfg_cmd_action { 569*b874ddecSLior David WMI_VRING_CMD_ADD = 0x00, 570*b874ddecSLior David WMI_VRING_CMD_MODIFY = 0x01, 571*b874ddecSLior David WMI_VRING_CMD_DELETE = 0x02, 5722be7d22fSVladimir Kondratiev }; 5732be7d22fSVladimir Kondratiev 574*b874ddecSLior David /* WMI_VRING_CFG_CMDID */ 5752be7d22fSVladimir Kondratiev struct wmi_vring_cfg_cmd { 5762be7d22fSVladimir Kondratiev __le32 action; 5772be7d22fSVladimir Kondratiev struct wmi_vring_cfg vring_cfg; 5782be7d22fSVladimir Kondratiev } __packed; 5792be7d22fSVladimir Kondratiev 58062bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg { 58162bfd300SVladimir Kondratiev struct wmi_sw_ring_cfg tx_sw_ring; 582*b874ddecSLior David /* 0-23 vrings */ 583*b874ddecSLior David u8 ringid; 58462bfd300SVladimir Kondratiev u8 encap_trans_type; 585*b874ddecSLior David /* 802.3 DS cfg */ 586*b874ddecSLior David u8 ds_cfg; 58762bfd300SVladimir Kondratiev u8 nwifi_ds_trans_type; 58862bfd300SVladimir Kondratiev } __packed; 58962bfd300SVladimir Kondratiev 590*b874ddecSLior David /* WMI_BCAST_VRING_CFG_CMDID */ 59162bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg_cmd { 59262bfd300SVladimir Kondratiev __le32 action; 59362bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg vring_cfg; 59462bfd300SVladimir Kondratiev } __packed; 59562bfd300SVladimir Kondratiev 596*b874ddecSLior David /* WMI_VRING_BA_EN_CMDID */ 5972be7d22fSVladimir Kondratiev struct wmi_vring_ba_en_cmd { 5982be7d22fSVladimir Kondratiev u8 ringid; 5992be7d22fSVladimir Kondratiev u8 agg_max_wsize; 6002be7d22fSVladimir Kondratiev __le16 ba_timeout; 601cbcf5866SVladimir Kondratiev u8 amsdu; 602*b874ddecSLior David u8 reserved[3]; 6032be7d22fSVladimir Kondratiev } __packed; 6042be7d22fSVladimir Kondratiev 605*b874ddecSLior David /* WMI_VRING_BA_DIS_CMDID */ 6062be7d22fSVladimir Kondratiev struct wmi_vring_ba_dis_cmd { 6072be7d22fSVladimir Kondratiev u8 ringid; 6082be7d22fSVladimir Kondratiev u8 reserved; 6092be7d22fSVladimir Kondratiev __le16 reason; 6102be7d22fSVladimir Kondratiev } __packed; 6112be7d22fSVladimir Kondratiev 612*b874ddecSLior David /* WMI_NOTIFY_REQ_CMDID */ 6132be7d22fSVladimir Kondratiev struct wmi_notify_req_cmd { 6142be7d22fSVladimir Kondratiev u8 cid; 615b8023177SVladimir Kondratiev u8 year; 616b8023177SVladimir Kondratiev u8 month; 617b8023177SVladimir Kondratiev u8 day; 6182be7d22fSVladimir Kondratiev __le32 interval_usec; 619b8023177SVladimir Kondratiev u8 hour; 620b8023177SVladimir Kondratiev u8 minute; 621b8023177SVladimir Kondratiev u8 second; 622b8023177SVladimir Kondratiev u8 miliseconds; 6232be7d22fSVladimir Kondratiev } __packed; 6242be7d22fSVladimir Kondratiev 625*b874ddecSLior David /* WMI_CFG_RX_CHAIN_CMDID */ 6262be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_mode { 627*b874ddecSLior David WMI_SNIFFER_OFF = 0x00, 628*b874ddecSLior David WMI_SNIFFER_ON = 0x01, 6292be7d22fSVladimir Kondratiev }; 6302be7d22fSVladimir Kondratiev 6312be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_info_mode { 632*b874ddecSLior David WMI_SNIFFER_PHY_INFO_DISABLED = 0x00, 633*b874ddecSLior David WMI_SNIFFER_PHY_INFO_ENABLED = 0x01, 6342be7d22fSVladimir Kondratiev }; 6352be7d22fSVladimir Kondratiev 6362be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_support { 637*b874ddecSLior David WMI_SNIFFER_CP = 0x00, 638*b874ddecSLior David WMI_SNIFFER_DP = 0x01, 639*b874ddecSLior David WMI_SNIFFER_BOTH_PHYS = 0x02, 6402be7d22fSVladimir Kondratiev }; 6412be7d22fSVladimir Kondratiev 642*b874ddecSLior David /* wmi_sniffer_cfg */ 6432be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg { 644*b874ddecSLior David /* enum wmi_sniffer_cfg_mode */ 645*b874ddecSLior David __le32 mode; 646*b874ddecSLior David /* enum wmi_sniffer_cfg_phy_info_mode */ 647*b874ddecSLior David __le32 phy_info_mode; 648*b874ddecSLior David /* enum wmi_sniffer_cfg_phy_support */ 649*b874ddecSLior David __le32 phy_support; 6502be7d22fSVladimir Kondratiev u8 channel; 6512be7d22fSVladimir Kondratiev u8 reserved[3]; 6522be7d22fSVladimir Kondratiev } __packed; 6532be7d22fSVladimir Kondratiev 6542be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_action { 655*b874ddecSLior David WMI_RX_CHAIN_ADD = 0x00, 656*b874ddecSLior David WMI_RX_CHAIN_DEL = 0x01, 6572be7d22fSVladimir Kondratiev }; 6582be7d22fSVladimir Kondratiev 6592be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_decap_trans_type { 660*b874ddecSLior David WMI_DECAP_TYPE_802_3 = 0x00, 661*b874ddecSLior David WMI_DECAP_TYPE_NATIVE_WIFI = 0x01, 662*b874ddecSLior David WMI_DECAP_TYPE_NONE = 0x02, 6632be7d22fSVladimir Kondratiev }; 6642be7d22fSVladimir Kondratiev 6652be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_nwifi_ds_trans_type { 666*b874ddecSLior David WMI_NWIFI_RX_TRANS_MODE_NO = 0x00, 667*b874ddecSLior David WMI_NWIFI_RX_TRANS_MODE_PBSS2AP = 0x01, 668*b874ddecSLior David WMI_NWIFI_RX_TRANS_MODE_PBSS2STA = 0x02, 6692be7d22fSVladimir Kondratiev }; 6702be7d22fSVladimir Kondratiev 671b8023177SVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_reorder_type { 672*b874ddecSLior David WMI_RX_HW_REORDER = 0x00, 673*b874ddecSLior David WMI_RX_SW_REORDER = 0x01, 674b8023177SVladimir Kondratiev }; 675b8023177SVladimir Kondratiev 6762be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_POS (0) 6772be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_LEN (1) 6782be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_MSK (0x1) 679c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_POS (1) 680c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_LEN (1) 681c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_MSK (0x2) 6822be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_POS (0) 6832be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_LEN (1) 6842be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_MSK (0x1) 6852be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_POS (1) 6862be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_LEN (1) 6872be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_MSK (0x2) 6882be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_POS (0) 6892be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_LEN (1) 6902be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_MSK (0x1) 6912be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_POS (1) 6922be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_LEN (1) 6932be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_MSK (0x2) 6942be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_POS (0) 6952be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_LEN (1) 6962be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_MSK (0x1) 6972be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_POS (1) 6982be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_LEN (1) 6992be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_MSK (0x2) 7002be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_POS (2) 7012be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_LEN (1) 7022be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_MSK (0x4) 7032be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_POS (3) 7042be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_LEN (1) 7052be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_MSK (0x8) 7062be7d22fSVladimir Kondratiev 707*b874ddecSLior David /* WMI_CFG_RX_CHAIN_CMDID */ 708*b874ddecSLior David struct wmi_cfg_rx_chain_cmd { 709*b874ddecSLior David __le32 action; 710*b874ddecSLior David struct wmi_sw_ring_cfg rx_sw_ring; 711*b874ddecSLior David u8 mid; 712*b874ddecSLior David u8 decap_trans_type; 713*b874ddecSLior David u8 l2_802_3_offload_ctrl; 714*b874ddecSLior David u8 l2_nwifi_offload_ctrl; 715*b874ddecSLior David u8 vlan_id; 716*b874ddecSLior David u8 nwifi_ds_trans_type; 717*b874ddecSLior David u8 l3_l4_ctrl; 718*b874ddecSLior David u8 ring_ctrl; 7192be7d22fSVladimir Kondratiev __le16 prefetch_thrsh; 7202be7d22fSVladimir Kondratiev __le16 wb_thrsh; 7212be7d22fSVladimir Kondratiev __le32 itr_value; 7222be7d22fSVladimir Kondratiev __le16 host_thrsh; 723b8023177SVladimir Kondratiev u8 reorder_type; 724b8023177SVladimir Kondratiev u8 reserved; 7252be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg sniffer_cfg; 726*b874ddecSLior David __le16 max_rx_pl_per_desc; 7272be7d22fSVladimir Kondratiev } __packed; 7282be7d22fSVladimir Kondratiev 729*b874ddecSLior David /* WMI_RCP_ADDBA_RESP_CMDID */ 7302be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_cmd { 7312be7d22fSVladimir Kondratiev u8 cidxtid; 7322be7d22fSVladimir Kondratiev u8 dialog_token; 7332be7d22fSVladimir Kondratiev __le16 status_code; 734*b874ddecSLior David /* ieee80211_ba_parameterset field to send */ 735*b874ddecSLior David __le16 ba_param_set; 7362be7d22fSVladimir Kondratiev __le16 ba_timeout; 7372be7d22fSVladimir Kondratiev } __packed; 7382be7d22fSVladimir Kondratiev 739*b874ddecSLior David /* WMI_RCP_DELBA_CMDID */ 7402be7d22fSVladimir Kondratiev struct wmi_rcp_delba_cmd { 7412be7d22fSVladimir Kondratiev u8 cidxtid; 7422be7d22fSVladimir Kondratiev u8 reserved; 7432be7d22fSVladimir Kondratiev __le16 reason; 7442be7d22fSVladimir Kondratiev } __packed; 7452be7d22fSVladimir Kondratiev 746*b874ddecSLior David /* WMI_RCP_ADDBA_REQ_CMDID */ 7472be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_cmd { 7482be7d22fSVladimir Kondratiev u8 cidxtid; 7492be7d22fSVladimir Kondratiev u8 dialog_token; 7502be7d22fSVladimir Kondratiev /* ieee80211_ba_parameterset field as it received */ 7512be7d22fSVladimir Kondratiev __le16 ba_param_set; 7522be7d22fSVladimir Kondratiev __le16 ba_timeout; 7532be7d22fSVladimir Kondratiev /* ieee80211_ba_seqstrl field as it received */ 7542be7d22fSVladimir Kondratiev __le16 ba_seq_ctrl; 7552be7d22fSVladimir Kondratiev } __packed; 7562be7d22fSVladimir Kondratiev 757*b874ddecSLior David /* WMI_SET_MAC_ADDRESS_CMDID */ 7582be7d22fSVladimir Kondratiev struct wmi_set_mac_address_cmd { 7592be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 7602be7d22fSVladimir Kondratiev u8 reserved[2]; 7612be7d22fSVladimir Kondratiev } __packed; 7622be7d22fSVladimir Kondratiev 763*b874ddecSLior David /* WMI_ECHO_CMDID 7642be7d22fSVladimir Kondratiev * Check FW is alive 7652be7d22fSVladimir Kondratiev * WMI_DEEP_ECHO_CMDID 7662be7d22fSVladimir Kondratiev * Check FW and ucode are alive 7672be7d22fSVladimir Kondratiev * Returned event: WMI_ECHO_RSP_EVENTID 7682be7d22fSVladimir Kondratiev * same event for both commands 7692be7d22fSVladimir Kondratiev */ 7702be7d22fSVladimir Kondratiev struct wmi_echo_cmd { 7712be7d22fSVladimir Kondratiev __le32 value; 7722be7d22fSVladimir Kondratiev } __packed; 7732be7d22fSVladimir Kondratiev 774*b874ddecSLior David /* WMI_OTP_READ_CMDID */ 775*b874ddecSLior David struct wmi_otp_read_cmd { 776*b874ddecSLior David __le32 addr; 777*b874ddecSLior David __le32 size; 778*b874ddecSLior David __le32 values; 779*b874ddecSLior David } __packed; 780*b874ddecSLior David 781*b874ddecSLior David /* WMI_OTP_WRITE_CMDID */ 782*b874ddecSLior David struct wmi_otp_write_cmd { 783*b874ddecSLior David __le32 addr; 784*b874ddecSLior David __le32 size; 785*b874ddecSLior David __le32 values; 786*b874ddecSLior David } __packed; 787*b874ddecSLior David 788*b874ddecSLior David /* WMI_TEMP_SENSE_CMDID 789b8023177SVladimir Kondratiev * 790b8023177SVladimir Kondratiev * Measure MAC and radio temperatures 791*b874ddecSLior David * 792*b874ddecSLior David * Possible modes for temperature measurement 793b8023177SVladimir Kondratiev */ 7948c679675SVladimir Kondratiev enum wmi_temperature_measure_mode { 795*b874ddecSLior David TEMPERATURE_USE_OLD_VALUE = 0x01, 796*b874ddecSLior David TEMPERATURE_MEASURE_NOW = 0x02, 7978c679675SVladimir Kondratiev }; 7988c679675SVladimir Kondratiev 799*b874ddecSLior David /* WMI_TEMP_SENSE_CMDID */ 800b8023177SVladimir Kondratiev struct wmi_temp_sense_cmd { 8018c679675SVladimir Kondratiev __le32 measure_baseband_en; 8028c679675SVladimir Kondratiev __le32 measure_rf_en; 8038c679675SVladimir Kondratiev __le32 measure_mode; 804b8023177SVladimir Kondratiev } __packed; 805b8023177SVladimir Kondratiev 806*b874ddecSLior David enum wmi_pmc_op { 807*b874ddecSLior David WMI_PMC_ALLOCATE = 0x00, 808*b874ddecSLior David WMI_PMC_RELEASE = 0x01, 809dc16427bSVladimir Kondratiev }; 810dc16427bSVladimir Kondratiev 811*b874ddecSLior David /* WMI_PMC_CMDID */ 812dc16427bSVladimir Kondratiev struct wmi_pmc_cmd { 813*b874ddecSLior David /* enum wmi_pmc_cmd_op_type */ 814*b874ddecSLior David u8 op; 815dc16427bSVladimir Kondratiev u8 reserved; 816dc16427bSVladimir Kondratiev __le16 ring_size; 817dc16427bSVladimir Kondratiev __le64 mem_base; 818dc16427bSVladimir Kondratiev } __packed; 819dc16427bSVladimir Kondratiev 820*b874ddecSLior David /* WMI Events 8212be7d22fSVladimir Kondratiev * List of Events (target to host) 8222be7d22fSVladimir Kondratiev */ 8232be7d22fSVladimir Kondratiev enum wmi_event_id { 8242be7d22fSVladimir Kondratiev WMI_READY_EVENTID = 0x1001, 8252be7d22fSVladimir Kondratiev WMI_CONNECT_EVENTID = 0x1002, 8262be7d22fSVladimir Kondratiev WMI_DISCONNECT_EVENTID = 0x1003, 827*b874ddecSLior David WMI_SCAN_COMPLETE_EVENTID = 0x100A, 828*b874ddecSLior David WMI_REPORT_STATISTICS_EVENTID = 0x100B, 8292be7d22fSVladimir Kondratiev WMI_RD_MEM_RSP_EVENTID = 0x1800, 8302be7d22fSVladimir Kondratiev WMI_FW_READY_EVENTID = 0x1801, 831*b874ddecSLior David WMI_EXIT_FAST_MEM_ACC_MODE_EVENTID = 0x200, 8322be7d22fSVladimir Kondratiev WMI_ECHO_RSP_EVENTID = 0x1803, 833*b874ddecSLior David WMI_FS_TUNE_DONE_EVENTID = 0x180A, 834*b874ddecSLior David WMI_CORR_MEASURE_EVENTID = 0x180B, 835*b874ddecSLior David WMI_READ_RSSI_EVENTID = 0x180C, 836*b874ddecSLior David WMI_TEMP_SENSE_DONE_EVENTID = 0x180E, 837*b874ddecSLior David WMI_DC_CALIB_DONE_EVENTID = 0x180F, 8382be7d22fSVladimir Kondratiev WMI_IQ_TX_CALIB_DONE_EVENTID = 0x1811, 8392be7d22fSVladimir Kondratiev WMI_IQ_RX_CALIB_DONE_EVENTID = 0x1812, 8402be7d22fSVladimir Kondratiev WMI_SET_WORK_MODE_DONE_EVENTID = 0x1815, 8412be7d22fSVladimir Kondratiev WMI_LO_LEAKAGE_CALIB_DONE_EVENTID = 0x1816, 8422be7d22fSVladimir Kondratiev WMI_MARLON_R_READ_DONE_EVENTID = 0x1818, 8432be7d22fSVladimir Kondratiev WMI_MARLON_R_WRITE_DONE_EVENTID = 0x1819, 844*b874ddecSLior David WMI_MARLON_R_TXRX_SEL_DONE_EVENTID = 0x181A, 845*b874ddecSLior David WMI_SILENT_RSSI_CALIB_DONE_EVENTID = 0x181D, 846*b874ddecSLior David WMI_RF_RX_TEST_DONE_EVENTID = 0x181E, 8472be7d22fSVladimir Kondratiev WMI_CFG_RX_CHAIN_DONE_EVENTID = 0x1820, 8482be7d22fSVladimir Kondratiev WMI_VRING_CFG_DONE_EVENTID = 0x1821, 8492be7d22fSVladimir Kondratiev WMI_BA_STATUS_EVENTID = 0x1823, 8502be7d22fSVladimir Kondratiev WMI_RCP_ADDBA_REQ_EVENTID = 0x1824, 851230d8442SVladimir Kondratiev WMI_RCP_ADDBA_RESP_SENT_EVENTID = 0x1825, 8522be7d22fSVladimir Kondratiev WMI_DELBA_EVENTID = 0x1826, 8532be7d22fSVladimir Kondratiev WMI_GET_SSID_EVENTID = 0x1828, 854*b874ddecSLior David WMI_GET_PCP_CHANNEL_EVENTID = 0x182A, 855*b874ddecSLior David WMI_SW_TX_COMPLETE_EVENTID = 0x182B, 8562be7d22fSVladimir Kondratiev WMI_READ_MAC_RXQ_EVENTID = 0x1830, 8572be7d22fSVladimir Kondratiev WMI_READ_MAC_TXQ_EVENTID = 0x1831, 8582be7d22fSVladimir Kondratiev WMI_WRITE_MAC_RXQ_EVENTID = 0x1832, 8592be7d22fSVladimir Kondratiev WMI_WRITE_MAC_TXQ_EVENTID = 0x1833, 8602be7d22fSVladimir Kondratiev WMI_WRITE_MAC_XQ_FIELD_EVENTID = 0x1834, 861230d8442SVladimir Kondratiev WMI_BEAMFORMING_MGMT_DONE_EVENTID = 0x1836, 8622be7d22fSVladimir Kondratiev WMI_BF_TXSS_MGMT_DONE_EVENTID = 0x1837, 8632be7d22fSVladimir Kondratiev WMI_BF_RXSS_MGMT_DONE_EVENTID = 0x1839, 8642be7d22fSVladimir Kondratiev WMI_RS_MGMT_DONE_EVENTID = 0x1852, 8652be7d22fSVladimir Kondratiev WMI_RF_MGMT_STATUS_EVENTID = 0x1853, 8668c679675SVladimir Kondratiev WMI_THERMAL_THROTTLING_STATUS_EVENTID = 0x1855, 8672be7d22fSVladimir Kondratiev WMI_BF_SM_MGMT_DONE_EVENTID = 0x1838, 8682be7d22fSVladimir Kondratiev WMI_RX_MGMT_PACKET_EVENTID = 0x1840, 8696c2faf09SVladimir Kondratiev WMI_TX_MGMT_PACKET_EVENTID = 0x1841, 870*b874ddecSLior David WMI_OTP_READ_RESULT_EVENTID = 0x1856, 8712be7d22fSVladimir Kondratiev /* Performance monitoring events */ 8722be7d22fSVladimir Kondratiev WMI_DATA_PORT_OPEN_EVENTID = 0x1860, 873230d8442SVladimir Kondratiev WMI_WBE_LINK_DOWN_EVENTID = 0x1861, 8742be7d22fSVladimir Kondratiev WMI_BF_CTRL_DONE_EVENTID = 0x1862, 8752be7d22fSVladimir Kondratiev WMI_NOTIFY_REQ_DONE_EVENTID = 0x1863, 8762be7d22fSVladimir Kondratiev WMI_GET_STATUS_DONE_EVENTID = 0x1864, 877230d8442SVladimir Kondratiev WMI_VRING_EN_EVENTID = 0x1865, 8782be7d22fSVladimir Kondratiev WMI_UNIT_TEST_EVENTID = 0x1900, 8792be7d22fSVladimir Kondratiev WMI_FLASH_READ_DONE_EVENTID = 0x1902, 8802be7d22fSVladimir Kondratiev WMI_FLASH_WRITE_DONE_EVENTID = 0x1903, 881b8023177SVladimir Kondratiev /* P2P */ 8828c679675SVladimir Kondratiev WMI_P2P_CFG_DONE_EVENTID = 0x1910, 883b8023177SVladimir Kondratiev WMI_PORT_ALLOCATED_EVENTID = 0x1911, 884b8023177SVladimir Kondratiev WMI_PORT_DELETED_EVENTID = 0x1912, 885b8023177SVladimir Kondratiev WMI_LISTEN_STARTED_EVENTID = 0x1914, 886b8023177SVladimir Kondratiev WMI_SEARCH_STARTED_EVENTID = 0x1915, 887b8023177SVladimir Kondratiev WMI_DISCOVERY_STARTED_EVENTID = 0x1916, 888b8023177SVladimir Kondratiev WMI_DISCOVERY_STOPPED_EVENTID = 0x1917, 889b8023177SVladimir Kondratiev WMI_PCP_STARTED_EVENTID = 0x1918, 890b8023177SVladimir Kondratiev WMI_PCP_STOPPED_EVENTID = 0x1919, 891*b874ddecSLior David WMI_PCP_FACTOR_EVENTID = 0x191A, 8922be7d22fSVladimir Kondratiev WMI_SET_CHANNEL_EVENTID = 0x9000, 8932be7d22fSVladimir Kondratiev WMI_ASSOC_REQ_EVENTID = 0x9001, 8942be7d22fSVladimir Kondratiev WMI_EAPOL_RX_EVENTID = 0x9002, 8952be7d22fSVladimir Kondratiev WMI_MAC_ADDR_RESP_EVENTID = 0x9003, 8962be7d22fSVladimir Kondratiev WMI_FW_VER_EVENTID = 0x9004, 897*b874ddecSLior David WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENTID = 0x9005, 8982be7d22fSVladimir Kondratiev }; 8992be7d22fSVladimir Kondratiev 900*b874ddecSLior David /* Events data structures */ 901b8023177SVladimir Kondratiev enum wmi_fw_status { 902*b874ddecSLior David WMI_FW_STATUS_SUCCESS = 0x00, 903*b874ddecSLior David WMI_FW_STATUS_FAILURE = 0x01, 904b8023177SVladimir Kondratiev }; 905b8023177SVladimir Kondratiev 906*b874ddecSLior David /* WMI_RF_MGMT_STATUS_EVENTID */ 9072be7d22fSVladimir Kondratiev enum wmi_rf_status { 908*b874ddecSLior David WMI_RF_ENABLED = 0x00, 909*b874ddecSLior David WMI_RF_DISABLED_HW = 0x01, 910*b874ddecSLior David WMI_RF_DISABLED_SW = 0x02, 911*b874ddecSLior David WMI_RF_DISABLED_HW_SW = 0x03, 9122be7d22fSVladimir Kondratiev }; 9132be7d22fSVladimir Kondratiev 914*b874ddecSLior David /* WMI_RF_MGMT_STATUS_EVENTID */ 9152be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_status_event { 9162be7d22fSVladimir Kondratiev __le32 rf_status; 9172be7d22fSVladimir Kondratiev } __packed; 9182be7d22fSVladimir Kondratiev 919*b874ddecSLior David /* WMI_THERMAL_THROTTLING_STATUS_EVENTID */ 9208c679675SVladimir Kondratiev struct wmi_thermal_throttling_status_event { 9218c679675SVladimir Kondratiev __le32 time_on_usec; 9228c679675SVladimir Kondratiev __le32 time_off_usec; 9238c679675SVladimir Kondratiev __le32 max_txop_length_usec; 9248c679675SVladimir Kondratiev } __packed; 9258c679675SVladimir Kondratiev 926*b874ddecSLior David /* WMI_GET_STATUS_DONE_EVENTID */ 9272be7d22fSVladimir Kondratiev struct wmi_get_status_done_event { 9282be7d22fSVladimir Kondratiev __le32 is_associated; 9292be7d22fSVladimir Kondratiev u8 cid; 9302be7d22fSVladimir Kondratiev u8 reserved0[3]; 9312be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 9322be7d22fSVladimir Kondratiev u8 channel; 9332be7d22fSVladimir Kondratiev u8 reserved1; 9342be7d22fSVladimir Kondratiev u8 network_type; 9352be7d22fSVladimir Kondratiev u8 reserved2[3]; 9362be7d22fSVladimir Kondratiev __le32 ssid_len; 9372be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 9382be7d22fSVladimir Kondratiev __le32 rf_status; 9392be7d22fSVladimir Kondratiev __le32 is_secured; 9402be7d22fSVladimir Kondratiev } __packed; 9412be7d22fSVladimir Kondratiev 942*b874ddecSLior David /* WMI_FW_VER_EVENTID */ 9432be7d22fSVladimir Kondratiev struct wmi_fw_ver_event { 9442be7d22fSVladimir Kondratiev u8 major; 9452be7d22fSVladimir Kondratiev u8 minor; 9462be7d22fSVladimir Kondratiev __le16 subminor; 9472be7d22fSVladimir Kondratiev __le16 build; 9482be7d22fSVladimir Kondratiev } __packed; 9492be7d22fSVladimir Kondratiev 950*b874ddecSLior David /* WMI_MAC_ADDR_RESP_EVENTID */ 9512be7d22fSVladimir Kondratiev struct wmi_mac_addr_resp_event { 9522be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 9532be7d22fSVladimir Kondratiev u8 auth_mode; 9542be7d22fSVladimir Kondratiev u8 crypt_mode; 9552be7d22fSVladimir Kondratiev __le32 offload_mode; 9562be7d22fSVladimir Kondratiev } __packed; 9572be7d22fSVladimir Kondratiev 958*b874ddecSLior David /* WMI_EAPOL_RX_EVENTID */ 9592be7d22fSVladimir Kondratiev struct wmi_eapol_rx_event { 9602be7d22fSVladimir Kondratiev u8 src_mac[WMI_MAC_LEN]; 9612be7d22fSVladimir Kondratiev __le16 eapol_len; 9622be7d22fSVladimir Kondratiev u8 eapol[0]; 9632be7d22fSVladimir Kondratiev } __packed; 9642be7d22fSVladimir Kondratiev 965*b874ddecSLior David /* WMI_READY_EVENTID */ 9662be7d22fSVladimir Kondratiev enum wmi_phy_capability { 967*b874ddecSLior David WMI_11A_CAPABILITY = 0x01, 968*b874ddecSLior David WMI_11G_CAPABILITY = 0x02, 969*b874ddecSLior David WMI_11AG_CAPABILITY = 0x03, 970*b874ddecSLior David WMI_11NA_CAPABILITY = 0x04, 971*b874ddecSLior David WMI_11NG_CAPABILITY = 0x05, 972*b874ddecSLior David WMI_11NAG_CAPABILITY = 0x06, 973*b874ddecSLior David WMI_11AD_CAPABILITY = 0x07, 974*b874ddecSLior David WMI_11N_CAPABILITY_OFFSET = 0x03, 9752be7d22fSVladimir Kondratiev }; 9762be7d22fSVladimir Kondratiev 9772be7d22fSVladimir Kondratiev struct wmi_ready_event { 9782be7d22fSVladimir Kondratiev __le32 sw_version; 9792be7d22fSVladimir Kondratiev __le32 abi_version; 9802be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 981*b874ddecSLior David /* enum wmi_phy_capability */ 982*b874ddecSLior David u8 phy_capability; 983b8023177SVladimir Kondratiev u8 numof_additional_mids; 9842be7d22fSVladimir Kondratiev } __packed; 9852be7d22fSVladimir Kondratiev 986*b874ddecSLior David /* WMI_NOTIFY_REQ_DONE_EVENTID */ 9872be7d22fSVladimir Kondratiev struct wmi_notify_req_done_event { 988*b874ddecSLior David /* beamforming status, 0: fail; 1: OK; 2: retrying */ 989*b874ddecSLior David __le32 status; 9902be7d22fSVladimir Kondratiev __le64 tsf; 9912be7d22fSVladimir Kondratiev __le32 snr_val; 9922be7d22fSVladimir Kondratiev __le32 tx_tpt; 9932be7d22fSVladimir Kondratiev __le32 tx_goodput; 9942be7d22fSVladimir Kondratiev __le32 rx_goodput; 9952be7d22fSVladimir Kondratiev __le16 bf_mcs; 9962be7d22fSVladimir Kondratiev __le16 my_rx_sector; 9972be7d22fSVladimir Kondratiev __le16 my_tx_sector; 9982be7d22fSVladimir Kondratiev __le16 other_rx_sector; 9992be7d22fSVladimir Kondratiev __le16 other_tx_sector; 10002be7d22fSVladimir Kondratiev __le16 range; 1001b8023177SVladimir Kondratiev u8 sqi; 1002b8023177SVladimir Kondratiev u8 reserved[3]; 10032be7d22fSVladimir Kondratiev } __packed; 10042be7d22fSVladimir Kondratiev 1005*b874ddecSLior David /* WMI_CONNECT_EVENTID */ 10062be7d22fSVladimir Kondratiev struct wmi_connect_event { 10072be7d22fSVladimir Kondratiev u8 channel; 10082be7d22fSVladimir Kondratiev u8 reserved0; 10092be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 10102be7d22fSVladimir Kondratiev __le16 listen_interval; 10112be7d22fSVladimir Kondratiev __le16 beacon_interval; 10122be7d22fSVladimir Kondratiev u8 network_type; 10132be7d22fSVladimir Kondratiev u8 reserved1[3]; 10142be7d22fSVladimir Kondratiev u8 beacon_ie_len; 10152be7d22fSVladimir Kondratiev u8 assoc_req_len; 10162be7d22fSVladimir Kondratiev u8 assoc_resp_len; 10172be7d22fSVladimir Kondratiev u8 cid; 10182be7d22fSVladimir Kondratiev u8 reserved2[3]; 1019*b874ddecSLior David /* not in use */ 10202be7d22fSVladimir Kondratiev u8 assoc_info[0]; 10212be7d22fSVladimir Kondratiev } __packed; 10222be7d22fSVladimir Kondratiev 1023*b874ddecSLior David /* WMI_DISCONNECT_EVENTID */ 10242be7d22fSVladimir Kondratiev enum wmi_disconnect_reason { 1025*b874ddecSLior David WMI_DIS_REASON_NO_NETWORK_AVAIL = 0x01, 1026*b874ddecSLior David /* bmiss */ 1027*b874ddecSLior David WMI_DIS_REASON_LOST_LINK = 0x02, 1028*b874ddecSLior David WMI_DIS_REASON_DISCONNECT_CMD = 0x03, 1029*b874ddecSLior David WMI_DIS_REASON_BSS_DISCONNECTED = 0x04, 1030*b874ddecSLior David WMI_DIS_REASON_AUTH_FAILED = 0x05, 1031*b874ddecSLior David WMI_DIS_REASON_ASSOC_FAILED = 0x06, 1032*b874ddecSLior David WMI_DIS_REASON_NO_RESOURCES_AVAIL = 0x07, 1033*b874ddecSLior David WMI_DIS_REASON_CSERV_DISCONNECT = 0x08, 1034*b874ddecSLior David WMI_DIS_REASON_INVALID_PROFILE = 0x0A, 1035*b874ddecSLior David WMI_DIS_REASON_DOT11H_CHANNEL_SWITCH = 0x0B, 1036*b874ddecSLior David WMI_DIS_REASON_PROFILE_MISMATCH = 0x0C, 1037*b874ddecSLior David WMI_DIS_REASON_CONNECTION_EVICTED = 0x0D, 1038*b874ddecSLior David WMI_DIS_REASON_IBSS_MERGE = 0x0E, 10392be7d22fSVladimir Kondratiev }; 10402be7d22fSVladimir Kondratiev 10412be7d22fSVladimir Kondratiev struct wmi_disconnect_event { 1042*b874ddecSLior David /* reason code, see 802.11 spec. */ 1043*b874ddecSLior David __le16 protocol_reason_status; 1044*b874ddecSLior David /* set if known */ 1045*b874ddecSLior David u8 bssid[WMI_MAC_LEN]; 1046*b874ddecSLior David /* see enum wmi_disconnect_reason */ 1047*b874ddecSLior David u8 disconnect_reason; 1048*b874ddecSLior David /* last assoc req may passed to host - not in used */ 1049*b874ddecSLior David u8 assoc_resp_len; 1050*b874ddecSLior David /* last assoc req may passed to host - not in used */ 1051*b874ddecSLior David u8 assoc_info[0]; 10522be7d22fSVladimir Kondratiev } __packed; 10532be7d22fSVladimir Kondratiev 1054*b874ddecSLior David /* WMI_SCAN_COMPLETE_EVENTID */ 10556c2faf09SVladimir Kondratiev enum scan_status { 1056*b874ddecSLior David WMI_SCAN_SUCCESS = 0x00, 1057*b874ddecSLior David WMI_SCAN_FAILED = 0x01, 1058*b874ddecSLior David WMI_SCAN_ABORTED = 0x02, 1059*b874ddecSLior David WMI_SCAN_REJECTED = 0x03, 1060*b874ddecSLior David WMI_SCAN_ABORT_REJECTED = 0x04, 10616c2faf09SVladimir Kondratiev }; 10626c2faf09SVladimir Kondratiev 10632be7d22fSVladimir Kondratiev struct wmi_scan_complete_event { 1064*b874ddecSLior David /* enum scan_status */ 1065*b874ddecSLior David __le32 status; 10662be7d22fSVladimir Kondratiev } __packed; 10672be7d22fSVladimir Kondratiev 1068*b874ddecSLior David /* WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENT */ 1069*b874ddecSLior David enum wmi_acs_info_bitmask { 1070*b874ddecSLior David WMI_ACS_INFO_BITMASK_BEACON_FOUND = 0x01, 1071*b874ddecSLior David WMI_ACS_INFO_BITMASK_BUSY_TIME = 0x02, 1072*b874ddecSLior David WMI_ACS_INFO_BITMASK_TX_TIME = 0x04, 1073*b874ddecSLior David WMI_ACS_INFO_BITMASK_RX_TIME = 0x08, 1074*b874ddecSLior David WMI_ACS_INFO_BITMASK_NOISE = 0x10, 10752be7d22fSVladimir Kondratiev }; 10762be7d22fSVladimir Kondratiev 1077*b874ddecSLior David struct scan_acs_info { 1078*b874ddecSLior David u8 channel; 1079*b874ddecSLior David u8 beacon_found; 1080*b874ddecSLior David /* msec */ 1081*b874ddecSLior David __le16 busy_time; 1082*b874ddecSLior David __le16 tx_time; 1083*b874ddecSLior David __le16 rx_time; 1084*b874ddecSLior David u8 noise; 1085*b874ddecSLior David u8 reserved[3]; 1086*b874ddecSLior David } __packed; 1087*b874ddecSLior David 1088*b874ddecSLior David struct wmi_acs_passive_scan_complete_event { 1089*b874ddecSLior David __le32 dwell_time; 1090*b874ddecSLior David /* valid fields within channel info according to 1091*b874ddecSLior David * their appearance in struct order 1092*b874ddecSLior David */ 1093*b874ddecSLior David __le16 filled; 1094*b874ddecSLior David u8 num_scanned_channels; 1095*b874ddecSLior David u8 reserved; 1096*b874ddecSLior David struct scan_acs_info scan_info_list[0]; 1097*b874ddecSLior David } __packed; 1098*b874ddecSLior David 1099*b874ddecSLior David /* WMI_BA_STATUS_EVENTID */ 1100*b874ddecSLior David enum wmi_vring_ba_status { 1101*b874ddecSLior David WMI_BA_AGREED = 0x00, 1102*b874ddecSLior David WMI_BA_NON_AGREED = 0x01, 1103*b874ddecSLior David /* BA_EN in middle of teardown flow */ 1104*b874ddecSLior David WMI_BA_TD_WIP = 0x02, 1105*b874ddecSLior David /* BA_DIS or BA_EN in middle of BA SETUP flow */ 1106*b874ddecSLior David WMI_BA_SETUP_WIP = 0x03, 1107*b874ddecSLior David /* BA_EN when the BA session is already active */ 1108*b874ddecSLior David WMI_BA_SESSION_ACTIVE = 0x04, 1109*b874ddecSLior David /* BA_DIS when the BA session is not active */ 1110*b874ddecSLior David WMI_BA_SESSION_NOT_ACTIVE = 0x05, 1111*b874ddecSLior David }; 1112*b874ddecSLior David 1113*b874ddecSLior David struct wmi_ba_status_event { 1114*b874ddecSLior David /* enum wmi_vring_ba_status */ 1115*b874ddecSLior David __le16 status; 11162be7d22fSVladimir Kondratiev u8 reserved[2]; 11172be7d22fSVladimir Kondratiev u8 ringid; 11182be7d22fSVladimir Kondratiev u8 agg_wsize; 11192be7d22fSVladimir Kondratiev __le16 ba_timeout; 1120cbcf5866SVladimir Kondratiev u8 amsdu; 11212be7d22fSVladimir Kondratiev } __packed; 11222be7d22fSVladimir Kondratiev 1123*b874ddecSLior David /* WMI_DELBA_EVENTID */ 11242be7d22fSVladimir Kondratiev struct wmi_delba_event { 11252be7d22fSVladimir Kondratiev u8 cidxtid; 11262be7d22fSVladimir Kondratiev u8 from_initiator; 11272be7d22fSVladimir Kondratiev __le16 reason; 11282be7d22fSVladimir Kondratiev } __packed; 11292be7d22fSVladimir Kondratiev 1130*b874ddecSLior David /* WMI_VRING_CFG_DONE_EVENTID */ 11312be7d22fSVladimir Kondratiev struct wmi_vring_cfg_done_event { 11322be7d22fSVladimir Kondratiev u8 ringid; 11332be7d22fSVladimir Kondratiev u8 status; 11342be7d22fSVladimir Kondratiev u8 reserved[2]; 11352be7d22fSVladimir Kondratiev __le32 tx_vring_tail_ptr; 11362be7d22fSVladimir Kondratiev } __packed; 11372be7d22fSVladimir Kondratiev 1138*b874ddecSLior David /* WMI_RCP_ADDBA_RESP_SENT_EVENTID */ 11392be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_sent_event { 11402be7d22fSVladimir Kondratiev u8 cidxtid; 11412be7d22fSVladimir Kondratiev u8 reserved; 11422be7d22fSVladimir Kondratiev __le16 status; 11432be7d22fSVladimir Kondratiev } __packed; 11442be7d22fSVladimir Kondratiev 1145*b874ddecSLior David /* WMI_RCP_ADDBA_REQ_EVENTID */ 11462be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_event { 11472be7d22fSVladimir Kondratiev u8 cidxtid; 11482be7d22fSVladimir Kondratiev u8 dialog_token; 1149*b874ddecSLior David /* ieee80211_ba_parameterset as it received */ 1150*b874ddecSLior David __le16 ba_param_set; 11512be7d22fSVladimir Kondratiev __le16 ba_timeout; 1152*b874ddecSLior David /* ieee80211_ba_seqstrl field as it received */ 1153*b874ddecSLior David __le16 ba_seq_ctrl; 11542be7d22fSVladimir Kondratiev } __packed; 11552be7d22fSVladimir Kondratiev 1156*b874ddecSLior David /* WMI_CFG_RX_CHAIN_DONE_EVENTID */ 11572be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_done_event_status { 1158*b874ddecSLior David WMI_CFG_RX_CHAIN_SUCCESS = 0x01, 11592be7d22fSVladimir Kondratiev }; 11602be7d22fSVladimir Kondratiev 11612be7d22fSVladimir Kondratiev struct wmi_cfg_rx_chain_done_event { 1162*b874ddecSLior David /* V-Ring Tail pointer */ 1163*b874ddecSLior David __le32 rx_ring_tail_ptr; 11642be7d22fSVladimir Kondratiev __le32 status; 11652be7d22fSVladimir Kondratiev } __packed; 11662be7d22fSVladimir Kondratiev 1167*b874ddecSLior David /* WMI_WBE_LINK_DOWN_EVENTID */ 11682be7d22fSVladimir Kondratiev enum wmi_wbe_link_down_event_reason { 1169*b874ddecSLior David WMI_WBE_REASON_USER_REQUEST = 0x00, 1170*b874ddecSLior David WMI_WBE_REASON_RX_DISASSOC = 0x01, 1171*b874ddecSLior David WMI_WBE_REASON_BAD_PHY_LINK = 0x02, 11722be7d22fSVladimir Kondratiev }; 11732be7d22fSVladimir Kondratiev 1174*b874ddecSLior David /* WMI_WBE_LINK_DOWN_EVENTID */ 11752be7d22fSVladimir Kondratiev struct wmi_wbe_link_down_event { 11762be7d22fSVladimir Kondratiev u8 cid; 11772be7d22fSVladimir Kondratiev u8 reserved[3]; 11782be7d22fSVladimir Kondratiev __le32 reason; 11792be7d22fSVladimir Kondratiev } __packed; 11802be7d22fSVladimir Kondratiev 1181*b874ddecSLior David /* WMI_DATA_PORT_OPEN_EVENTID */ 11822be7d22fSVladimir Kondratiev struct wmi_data_port_open_event { 11832be7d22fSVladimir Kondratiev u8 cid; 11842be7d22fSVladimir Kondratiev u8 reserved[3]; 11852be7d22fSVladimir Kondratiev } __packed; 11862be7d22fSVladimir Kondratiev 1187*b874ddecSLior David /* WMI_VRING_EN_EVENTID */ 1188230d8442SVladimir Kondratiev struct wmi_vring_en_event { 1189230d8442SVladimir Kondratiev u8 vring_index; 1190230d8442SVladimir Kondratiev u8 reserved[3]; 1191230d8442SVladimir Kondratiev } __packed; 1192230d8442SVladimir Kondratiev 1193*b874ddecSLior David /* WMI_GET_PCP_CHANNEL_EVENTID */ 11942be7d22fSVladimir Kondratiev struct wmi_get_pcp_channel_event { 11952be7d22fSVladimir Kondratiev u8 channel; 11962be7d22fSVladimir Kondratiev u8 reserved[3]; 11972be7d22fSVladimir Kondratiev } __packed; 11982be7d22fSVladimir Kondratiev 1199*b874ddecSLior David /* WMI_P2P_CFG_DONE_EVENTID */ 12008c679675SVladimir Kondratiev struct wmi_p2p_cfg_done_event { 1201*b874ddecSLior David /* wmi_fw_status */ 1202*b874ddecSLior David u8 status; 12038c679675SVladimir Kondratiev u8 reserved[3]; 12048c679675SVladimir Kondratiev } __packed; 12058c679675SVladimir Kondratiev 1206*b874ddecSLior David /* WMI_PORT_ALLOCATED_EVENTID */ 1207b8023177SVladimir Kondratiev struct wmi_port_allocated_event { 1208*b874ddecSLior David /* wmi_fw_status */ 1209*b874ddecSLior David u8 status; 1210b8023177SVladimir Kondratiev u8 reserved[3]; 1211b8023177SVladimir Kondratiev } __packed; 1212b8023177SVladimir Kondratiev 1213*b874ddecSLior David /* WMI_PORT_DELETED_EVENTID */ 1214b8023177SVladimir Kondratiev struct wmi_port_deleted_event { 1215*b874ddecSLior David /* wmi_fw_status */ 1216*b874ddecSLior David u8 status; 1217b8023177SVladimir Kondratiev u8 reserved[3]; 1218b8023177SVladimir Kondratiev } __packed; 1219b8023177SVladimir Kondratiev 1220*b874ddecSLior David /* WMI_LISTEN_STARTED_EVENTID */ 1221b8023177SVladimir Kondratiev struct wmi_listen_started_event { 1222*b874ddecSLior David /* wmi_fw_status */ 1223*b874ddecSLior David u8 status; 1224b8023177SVladimir Kondratiev u8 reserved[3]; 1225b8023177SVladimir Kondratiev } __packed; 1226b8023177SVladimir Kondratiev 1227*b874ddecSLior David /* WMI_SEARCH_STARTED_EVENTID */ 1228b8023177SVladimir Kondratiev struct wmi_search_started_event { 1229*b874ddecSLior David /* wmi_fw_status */ 1230*b874ddecSLior David u8 status; 1231b8023177SVladimir Kondratiev u8 reserved[3]; 1232b8023177SVladimir Kondratiev } __packed; 1233b8023177SVladimir Kondratiev 1234*b874ddecSLior David /* WMI_PCP_STARTED_EVENTID */ 1235b8023177SVladimir Kondratiev struct wmi_pcp_started_event { 1236*b874ddecSLior David /* wmi_fw_status */ 1237*b874ddecSLior David u8 status; 1238b8023177SVladimir Kondratiev u8 reserved[3]; 1239b8023177SVladimir Kondratiev } __packed; 1240b8023177SVladimir Kondratiev 1241*b874ddecSLior David /* WMI_PCP_FACTOR_EVENTID */ 1242b8023177SVladimir Kondratiev struct wmi_pcp_factor_event { 1243b8023177SVladimir Kondratiev __le32 pcp_factor; 1244b8023177SVladimir Kondratiev } __packed; 1245b8023177SVladimir Kondratiev 12462be7d22fSVladimir Kondratiev enum wmi_sw_tx_status { 1247*b874ddecSLior David WMI_TX_SW_STATUS_SUCCESS = 0x00, 1248*b874ddecSLior David WMI_TX_SW_STATUS_FAILED_NO_RESOURCES = 0x01, 1249*b874ddecSLior David WMI_TX_SW_STATUS_FAILED_TX = 0x02, 12502be7d22fSVladimir Kondratiev }; 12512be7d22fSVladimir Kondratiev 1252*b874ddecSLior David /* WMI_SW_TX_COMPLETE_EVENTID */ 12532be7d22fSVladimir Kondratiev struct wmi_sw_tx_complete_event { 1254*b874ddecSLior David /* enum wmi_sw_tx_status */ 1255*b874ddecSLior David u8 status; 12562be7d22fSVladimir Kondratiev u8 reserved[3]; 12572be7d22fSVladimir Kondratiev } __packed; 12582be7d22fSVladimir Kondratiev 1259*b874ddecSLior David /* WMI_CORR_MEASURE_EVENTID */ 1260b8023177SVladimir Kondratiev struct wmi_corr_measure_event { 1261*b874ddecSLior David /* signed */ 1262*b874ddecSLior David __le32 i; 1263*b874ddecSLior David /* signed */ 1264*b874ddecSLior David __le32 q; 1265*b874ddecSLior David /* signed */ 1266*b874ddecSLior David __le32 image_i; 1267*b874ddecSLior David /* signed */ 1268*b874ddecSLior David __le32 image_q; 1269b8023177SVladimir Kondratiev } __packed; 1270b8023177SVladimir Kondratiev 1271*b874ddecSLior David /* WMI_READ_RSSI_EVENTID */ 1272b8023177SVladimir Kondratiev struct wmi_read_rssi_event { 1273b8023177SVladimir Kondratiev __le32 ina_rssi_adc_dbm; 1274b8023177SVladimir Kondratiev } __packed; 1275b8023177SVladimir Kondratiev 1276*b874ddecSLior David /* WMI_GET_SSID_EVENTID */ 12772be7d22fSVladimir Kondratiev struct wmi_get_ssid_event { 12782be7d22fSVladimir Kondratiev __le32 ssid_len; 12792be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 12802be7d22fSVladimir Kondratiev } __packed; 12812be7d22fSVladimir Kondratiev 1282*b874ddecSLior David /* wmi_rx_mgmt_info */ 12832be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_info { 12842be7d22fSVladimir Kondratiev u8 mcs; 12852be7d22fSVladimir Kondratiev s8 snr; 1286b8023177SVladimir Kondratiev u8 range; 1287b8023177SVladimir Kondratiev u8 sqi; 12882be7d22fSVladimir Kondratiev __le16 stype; 12892be7d22fSVladimir Kondratiev __le16 status; 12902be7d22fSVladimir Kondratiev __le32 len; 1291*b874ddecSLior David /* Not resolved when == 0xFFFFFFFF ==> Broadcast to all MIDS */ 12922be7d22fSVladimir Kondratiev u8 qid; 1293*b874ddecSLior David /* Not resolved when == 0xFFFFFFFF ==> Broadcast to all MIDS */ 12942be7d22fSVladimir Kondratiev u8 mid; 12952be7d22fSVladimir Kondratiev u8 cid; 1296*b874ddecSLior David /* From Radio MNGR */ 1297*b874ddecSLior David u8 channel; 12982be7d22fSVladimir Kondratiev } __packed; 12992be7d22fSVladimir Kondratiev 1300*b874ddecSLior David /* wmi_otp_read_write_cmd */ 1301*b874ddecSLior David struct wmi_otp_read_write_cmd { 1302*b874ddecSLior David __le32 addr; 1303*b874ddecSLior David __le32 size; 1304*b874ddecSLior David u8 values[0]; 1305*b874ddecSLior David } __packed; 1306*b874ddecSLior David 1307*b874ddecSLior David /* WMI_OTP_READ_RESULT_EVENTID */ 1308*b874ddecSLior David struct wmi_otp_read_result_event { 1309*b874ddecSLior David u8 payload[0]; 1310*b874ddecSLior David } __packed; 1311*b874ddecSLior David 1312*b874ddecSLior David /* WMI_TX_MGMT_PACKET_EVENTID */ 13136c2faf09SVladimir Kondratiev struct wmi_tx_mgmt_packet_event { 13146c2faf09SVladimir Kondratiev u8 payload[0]; 13156c2faf09SVladimir Kondratiev } __packed; 13166c2faf09SVladimir Kondratiev 1317*b874ddecSLior David /* WMI_RX_MGMT_PACKET_EVENTID */ 13182be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_packet_event { 13192be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_info info; 13202be7d22fSVladimir Kondratiev u8 payload[0]; 13212be7d22fSVladimir Kondratiev } __packed; 13222be7d22fSVladimir Kondratiev 1323*b874ddecSLior David /* WMI_ECHO_RSP_EVENTID */ 1324*b874ddecSLior David struct wmi_echo_rsp_event { 13252be7d22fSVladimir Kondratiev __le32 echoed_value; 13262be7d22fSVladimir Kondratiev } __packed; 13272be7d22fSVladimir Kondratiev 1328*b874ddecSLior David /* WMI_TEMP_SENSE_DONE_EVENTID 1329b8023177SVladimir Kondratiev * 1330b8023177SVladimir Kondratiev * Measure MAC and radio temperatures 1331b8023177SVladimir Kondratiev */ 1332b8023177SVladimir Kondratiev struct wmi_temp_sense_done_event { 1333*b874ddecSLior David /* Temperature times 1000 (actual temperature will be achieved by 1334*b874ddecSLior David * dividing the value by 1000) 1335*b874ddecSLior David */ 13368c679675SVladimir Kondratiev __le32 baseband_t1000; 1337*b874ddecSLior David /* Temperature times 1000 (actual temperature will be achieved by 1338*b874ddecSLior David * dividing the value by 1000) 1339*b874ddecSLior David */ 13408c679675SVladimir Kondratiev __le32 rf_t1000; 1341b8023177SVladimir Kondratiev } __packed; 1342b8023177SVladimir Kondratiev 1343*b874ddecSLior David #define WMI_SCAN_DWELL_TIME_MS (100) 1344*b874ddecSLior David #define WMI_SURVEY_TIMEOUT_MS (10000) 1345*b874ddecSLior David 1346*b874ddecSLior David enum wmi_hidden_ssid { 1347*b874ddecSLior David WMI_HIDDEN_SSID_DISABLED = 0x00, 1348*b874ddecSLior David WMI_HIDDEN_SSID_SEND_EMPTY = 0x10, 1349*b874ddecSLior David WMI_HIDDEN_SSID_CLEAR = 0xFE, 1350*b874ddecSLior David }; 1351*b874ddecSLior David 13522be7d22fSVladimir Kondratiev #endif /* __WILOCITY_WMI_H__ */ 1353