xref: /openbmc/linux/drivers/net/wireless/ath/wil6210/wmi.h (revision b874ddecae0a087aee024ef808c63060434a2d50)
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