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