xref: /openbmc/linux/drivers/net/wireless/ath/wil6210/wmi.h (revision 96c93589e2dfd43ad16b92e6677ceaf279ae5062)
12be7d22fSVladimir Kondratiev /*
28a4fa214SAhmad Masri  * Copyright (c) 2018, The Linux Foundation. All rights reserved.
3849a564bSDedy Lansky  * Copyright (c) 2012-2017 Qualcomm Atheros, Inc.
4b874ddecSLior David  * Copyright (c) 2006-2012 Wilocity
52be7d22fSVladimir Kondratiev  *
62be7d22fSVladimir Kondratiev  * Permission to use, copy, modify, and/or distribute this software for any
72be7d22fSVladimir Kondratiev  * purpose with or without fee is hereby granted, provided that the above
82be7d22fSVladimir Kondratiev  * copyright notice and this permission notice appear in all copies.
92be7d22fSVladimir Kondratiev  *
102be7d22fSVladimir Kondratiev  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
112be7d22fSVladimir Kondratiev  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
122be7d22fSVladimir Kondratiev  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
132be7d22fSVladimir Kondratiev  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
142be7d22fSVladimir Kondratiev  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
152be7d22fSVladimir Kondratiev  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
162be7d22fSVladimir Kondratiev  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
172be7d22fSVladimir Kondratiev  */
182be7d22fSVladimir Kondratiev 
192be7d22fSVladimir Kondratiev /*
202be7d22fSVladimir Kondratiev  * This file contains the definitions of the WMI protocol specified in the
21b874ddecSLior David  * Wireless Module Interface (WMI) for the Qualcomm
22b874ddecSLior David  * 60 GHz wireless solution.
232be7d22fSVladimir Kondratiev  * It includes definitions of all the commands and events.
242be7d22fSVladimir Kondratiev  * Commands are messages from the host to the WM.
252be7d22fSVladimir Kondratiev  * Events are messages from the WM to the host.
26b874ddecSLior David  *
27b874ddecSLior David  * This is an automatically generated file.
282be7d22fSVladimir Kondratiev  */
292be7d22fSVladimir Kondratiev 
302be7d22fSVladimir Kondratiev #ifndef __WILOCITY_WMI_H__
312be7d22fSVladimir Kondratiev #define __WILOCITY_WMI_H__
322be7d22fSVladimir Kondratiev 
33b874ddecSLior David #define WMI_DEFAULT_ASSOC_STA		(1)
342be7d22fSVladimir Kondratiev #define WMI_MAC_LEN			(6)
352be7d22fSVladimir Kondratiev #define WMI_PROX_RANGE_NUM		(3)
36b874ddecSLior David #define WMI_MAX_LOSS_DMG_BEACONS	(20)
378ae5d62cSLior David #define MAX_NUM_OF_SECTORS		(128)
38761f8e4dSLazar Alexei #define WMI_SCHED_MAX_ALLOCS_PER_CMD	(4)
39761f8e4dSLazar Alexei #define WMI_RF_DTYPE_LENGTH		(3)
40761f8e4dSLazar Alexei #define WMI_RF_ETYPE_LENGTH		(3)
41761f8e4dSLazar Alexei #define WMI_RF_RX2TX_LENGTH		(3)
42761f8e4dSLazar Alexei #define WMI_RF_ETYPE_VAL_PER_RANGE	(5)
438a4fa214SAhmad Masri /* DTYPE configuration array size
448a4fa214SAhmad Masri  * must always be kept equal to (WMI_RF_DTYPE_LENGTH+1)
458a4fa214SAhmad Masri  */
468a4fa214SAhmad Masri #define WMI_RF_DTYPE_CONF_LENGTH	(4)
478a4fa214SAhmad Masri /* ETYPE configuration array size
488a4fa214SAhmad Masri  * must always be kept equal to
498a4fa214SAhmad Masri  * (WMI_RF_ETYPE_LENGTH+WMI_RF_ETYPE_VAL_PER_RANGE)
508a4fa214SAhmad Masri  */
518a4fa214SAhmad Masri #define WMI_RF_ETYPE_CONF_LENGTH	(8)
528a4fa214SAhmad Masri /* RX2TX configuration array size
538a4fa214SAhmad Masri  * must always be kept equal to (WMI_RF_RX2TX_LENGTH+1)
548a4fa214SAhmad Masri  */
558a4fa214SAhmad Masri #define WMI_RF_RX2TX_CONF_LENGTH	(4)
56b874ddecSLior David 
57b874ddecSLior David /* Mailbox interface
58b874ddecSLior David  * used for commands and events
59b874ddecSLior David  */
60b874ddecSLior David enum wmi_mid {
61b874ddecSLior David 	MID_DEFAULT		= 0x00,
62b874ddecSLior David 	FIRST_DBG_MID_ID	= 0x10,
63b874ddecSLior David 	LAST_DBG_MID_ID		= 0xFE,
64b874ddecSLior David 	MID_BROADCAST		= 0xFF,
65b874ddecSLior David };
66b874ddecSLior David 
6708989f96SLior David /* FW capability IDs
6808989f96SLior David  * Each ID maps to a bit in a 32-bit bitmask value provided by the FW to
6908989f96SLior David  * the host
7008989f96SLior David  */
7108989f96SLior David enum wmi_fw_capability {
7208989f96SLior David 	WMI_FW_CAPABILITY_FTM				= 0,
7308989f96SLior David 	WMI_FW_CAPABILITY_PS_CONFIG			= 1,
74cbf795c1SLior David 	WMI_FW_CAPABILITY_RF_SECTORS			= 2,
75cbf795c1SLior David 	WMI_FW_CAPABILITY_MGMT_RETRY_LIMIT		= 3,
768a4fa214SAhmad Masri 	WMI_FW_CAPABILITY_AP_SME_OFFLOAD_PARTIAL	= 4,
770d2370e9SDedy Lansky 	WMI_FW_CAPABILITY_WMI_ONLY			= 5,
7890ffabb0SDedy Lansky 	WMI_FW_CAPABILITY_THERMAL_THROTTLING		= 7,
79fe9ee51eSMaya Erez 	WMI_FW_CAPABILITY_D3_SUSPEND			= 8,
80761f8e4dSLazar Alexei 	WMI_FW_CAPABILITY_LONG_RANGE			= 9,
81761f8e4dSLazar Alexei 	WMI_FW_CAPABILITY_FIXED_SCHEDULING		= 10,
82761f8e4dSLazar Alexei 	WMI_FW_CAPABILITY_MULTI_DIRECTED_OMNIS		= 11,
8330868f5dSDedy Lansky 	WMI_FW_CAPABILITY_RSSI_REPORTING		= 12,
84761f8e4dSLazar Alexei 	WMI_FW_CAPABILITY_SET_SILENT_RSSI_TABLE		= 13,
85761f8e4dSLazar Alexei 	WMI_FW_CAPABILITY_LO_POWER_CALIB_FROM_OTP	= 14,
86a5dc6883SDedy Lansky 	WMI_FW_CAPABILITY_PNO				= 15,
87594b59ecSMaya Erez 	WMI_FW_CAPABILITY_REF_CLOCK_CONTROL		= 18,
888a4fa214SAhmad Masri 	WMI_FW_CAPABILITY_AP_SME_OFFLOAD_NONE		= 19,
8908989f96SLior David 	WMI_FW_CAPABILITY_MAX,
9008989f96SLior David };
9108989f96SLior David 
92b874ddecSLior David /* WMI_CMD_HDR */
93b874ddecSLior David struct wmi_cmd_hdr {
94b874ddecSLior David 	u8 mid;
95b874ddecSLior David 	u8 reserved;
96b874ddecSLior David 	__le16 command_id;
97b874ddecSLior David 	__le32 fw_timestamp;
98b874ddecSLior David } __packed;
992be7d22fSVladimir Kondratiev 
1002be7d22fSVladimir Kondratiev /* List of Commands */
1012be7d22fSVladimir Kondratiev enum wmi_command_id {
102b874ddecSLior David 	WMI_CONNECT_CMDID				= 0x01,
103b874ddecSLior David 	WMI_DISCONNECT_CMDID				= 0x03,
104b874ddecSLior David 	WMI_DISCONNECT_STA_CMDID			= 0x04,
105a5dc6883SDedy Lansky 	WMI_START_SCHED_SCAN_CMDID			= 0x05,
106a5dc6883SDedy Lansky 	WMI_STOP_SCHED_SCAN_CMDID			= 0x06,
107b874ddecSLior David 	WMI_START_SCAN_CMDID				= 0x07,
108b874ddecSLior David 	WMI_SET_BSS_FILTER_CMDID			= 0x09,
109b874ddecSLior David 	WMI_SET_PROBED_SSID_CMDID			= 0x0A,
110761f8e4dSLazar Alexei 	/* deprecated */
111b874ddecSLior David 	WMI_SET_LISTEN_INT_CMDID			= 0x0B,
112b874ddecSLior David 	WMI_BCON_CTRL_CMDID				= 0x0F,
113b874ddecSLior David 	WMI_ADD_CIPHER_KEY_CMDID			= 0x16,
114b874ddecSLior David 	WMI_DELETE_CIPHER_KEY_CMDID			= 0x17,
115b874ddecSLior David 	WMI_PCP_CONF_CMDID				= 0x18,
116b874ddecSLior David 	WMI_SET_APPIE_CMDID				= 0x3F,
117b874ddecSLior David 	WMI_SET_WSC_STATUS_CMDID			= 0x41,
118b874ddecSLior David 	WMI_PXMT_RANGE_CFG_CMDID			= 0x42,
119b874ddecSLior David 	WMI_PXMT_SNR2_RANGE_CFG_CMDID			= 0x43,
120b874ddecSLior David 	WMI_MEM_READ_CMDID				= 0x800,
121b874ddecSLior David 	WMI_MEM_WR_CMDID				= 0x801,
122b874ddecSLior David 	WMI_ECHO_CMDID					= 0x803,
123b874ddecSLior David 	WMI_DEEP_ECHO_CMDID				= 0x804,
124b874ddecSLior David 	WMI_CONFIG_MAC_CMDID				= 0x805,
125761f8e4dSLazar Alexei 	/* deprecated */
126b874ddecSLior David 	WMI_CONFIG_PHY_DEBUG_CMDID			= 0x806,
127b874ddecSLior David 	WMI_ADD_DEBUG_TX_PCKT_CMDID			= 0x808,
128b874ddecSLior David 	WMI_PHY_GET_STATISTICS_CMDID			= 0x809,
129761f8e4dSLazar Alexei 	/* deprecated */
130b874ddecSLior David 	WMI_FS_TUNE_CMDID				= 0x80A,
131761f8e4dSLazar Alexei 	/* deprecated */
132b874ddecSLior David 	WMI_CORR_MEASURE_CMDID				= 0x80B,
133b874ddecSLior David 	WMI_READ_RSSI_CMDID				= 0x80C,
134b874ddecSLior David 	WMI_TEMP_SENSE_CMDID				= 0x80E,
135b874ddecSLior David 	WMI_DC_CALIB_CMDID				= 0x80F,
136761f8e4dSLazar Alexei 	/* deprecated */
137b874ddecSLior David 	WMI_SEND_TONE_CMDID				= 0x810,
138761f8e4dSLazar Alexei 	/* deprecated */
139b874ddecSLior David 	WMI_IQ_TX_CALIB_CMDID				= 0x811,
140761f8e4dSLazar Alexei 	/* deprecated */
141b874ddecSLior David 	WMI_IQ_RX_CALIB_CMDID				= 0x812,
142b874ddecSLior David 	WMI_SET_WORK_MODE_CMDID				= 0x815,
143b874ddecSLior David 	WMI_LO_LEAKAGE_CALIB_CMDID			= 0x816,
144761f8e4dSLazar Alexei 	WMI_LO_POWER_CALIB_FROM_OTP_CMDID		= 0x817,
145b874ddecSLior David 	WMI_SILENT_RSSI_CALIB_CMDID			= 0x81D,
146761f8e4dSLazar Alexei 	/* deprecated */
147b874ddecSLior David 	WMI_RF_RX_TEST_CMDID				= 0x81E,
148b874ddecSLior David 	WMI_CFG_RX_CHAIN_CMDID				= 0x820,
149b874ddecSLior David 	WMI_VRING_CFG_CMDID				= 0x821,
150b874ddecSLior David 	WMI_BCAST_VRING_CFG_CMDID			= 0x822,
151*96c93589SGidon Studinski 	WMI_RING_BA_EN_CMDID				= 0x823,
152*96c93589SGidon Studinski 	WMI_RING_BA_DIS_CMDID				= 0x824,
153b874ddecSLior David 	WMI_RCP_ADDBA_RESP_CMDID			= 0x825,
154b874ddecSLior David 	WMI_RCP_DELBA_CMDID				= 0x826,
155b874ddecSLior David 	WMI_SET_SSID_CMDID				= 0x827,
156b874ddecSLior David 	WMI_GET_SSID_CMDID				= 0x828,
157b874ddecSLior David 	WMI_SET_PCP_CHANNEL_CMDID			= 0x829,
158b874ddecSLior David 	WMI_GET_PCP_CHANNEL_CMDID			= 0x82A,
159b874ddecSLior David 	WMI_SW_TX_REQ_CMDID				= 0x82B,
160b874ddecSLior David 	WMI_MLME_PUSH_CMDID				= 0x835,
161b874ddecSLior David 	WMI_BEAMFORMING_MGMT_CMDID			= 0x836,
162b874ddecSLior David 	WMI_BF_TXSS_MGMT_CMDID				= 0x837,
163b874ddecSLior David 	WMI_BF_SM_MGMT_CMDID				= 0x838,
164b874ddecSLior David 	WMI_BF_RXSS_MGMT_CMDID				= 0x839,
165b874ddecSLior David 	WMI_BF_TRIG_CMDID				= 0x83A,
166*96c93589SGidon Studinski 	WMI_RCP_ADDBA_RESP_EDMA_CMDID			= 0x83B,
1670163b031SMaya Erez 	WMI_LINK_MAINTAIN_CFG_WRITE_CMDID		= 0x842,
1680163b031SMaya Erez 	WMI_LINK_MAINTAIN_CFG_READ_CMDID		= 0x843,
169b874ddecSLior David 	WMI_SET_SECTORS_CMDID				= 0x849,
170b874ddecSLior David 	WMI_MAINTAIN_PAUSE_CMDID			= 0x850,
171b874ddecSLior David 	WMI_MAINTAIN_RESUME_CMDID			= 0x851,
172b874ddecSLior David 	WMI_RS_MGMT_CMDID				= 0x852,
173b874ddecSLior David 	WMI_RF_MGMT_CMDID				= 0x853,
174761f8e4dSLazar Alexei 	WMI_RF_XPM_READ_CMDID				= 0x856,
175761f8e4dSLazar Alexei 	WMI_RF_XPM_WRITE_CMDID				= 0x857,
17610d599adSMaya Erez 	WMI_LED_CFG_CMDID				= 0x858,
177761f8e4dSLazar Alexei 	WMI_SET_CONNECT_SNR_THR_CMDID			= 0x85B,
178761f8e4dSLazar Alexei 	WMI_SET_ACTIVE_SILENT_RSSI_TABLE_CMDID		= 0x85C,
179761f8e4dSLazar Alexei 	WMI_RF_PWR_ON_DELAY_CMDID			= 0x85D,
180761f8e4dSLazar Alexei 	WMI_SET_HIGH_POWER_TABLE_PARAMS_CMDID		= 0x85E,
1818a4fa214SAhmad Masri 	WMI_FIXED_SCHEDULING_UL_CONFIG_CMDID		= 0x85F,
1822be7d22fSVladimir Kondratiev 	/* Performance monitoring commands */
183b874ddecSLior David 	WMI_BF_CTRL_CMDID				= 0x862,
184b874ddecSLior David 	WMI_NOTIFY_REQ_CMDID				= 0x863,
185b874ddecSLior David 	WMI_GET_STATUS_CMDID				= 0x864,
1860163b031SMaya Erez 	WMI_GET_RF_STATUS_CMDID				= 0x866,
1870163b031SMaya Erez 	WMI_GET_BASEBAND_TYPE_CMDID			= 0x867,
1888a4fa214SAhmad Masri 	WMI_VRING_SWITCH_TIMING_CONFIG_CMDID		= 0x868,
189b874ddecSLior David 	WMI_UNIT_TEST_CMDID				= 0x900,
190b874ddecSLior David 	WMI_FLASH_READ_CMDID				= 0x902,
191b874ddecSLior David 	WMI_FLASH_WRITE_CMDID				= 0x903,
1920163b031SMaya Erez 	/* Power management */
193fe9ee51eSMaya Erez 	WMI_TRAFFIC_SUSPEND_CMDID			= 0x904,
1940163b031SMaya Erez 	WMI_TRAFFIC_RESUME_CMDID			= 0x905,
195b8023177SVladimir Kondratiev 	/* P2P */
196b874ddecSLior David 	WMI_P2P_CFG_CMDID				= 0x910,
197b874ddecSLior David 	WMI_PORT_ALLOCATE_CMDID				= 0x911,
198b874ddecSLior David 	WMI_PORT_DELETE_CMDID				= 0x912,
199b874ddecSLior David 	WMI_POWER_MGMT_CFG_CMDID			= 0x913,
200b874ddecSLior David 	WMI_START_LISTEN_CMDID				= 0x914,
201b874ddecSLior David 	WMI_START_SEARCH_CMDID				= 0x915,
202b874ddecSLior David 	WMI_DISCOVERY_START_CMDID			= 0x916,
203b874ddecSLior David 	WMI_DISCOVERY_STOP_CMDID			= 0x917,
204b874ddecSLior David 	WMI_PCP_START_CMDID				= 0x918,
205b874ddecSLior David 	WMI_PCP_STOP_CMDID				= 0x919,
206b874ddecSLior David 	WMI_GET_PCP_FACTOR_CMDID			= 0x91B,
2070163b031SMaya Erez 	/* Power Save Configuration Commands */
2080163b031SMaya Erez 	WMI_PS_DEV_PROFILE_CFG_CMDID			= 0x91C,
2090163b031SMaya Erez 	WMI_RS_CFG_CMDID				= 0x921,
21008989f96SLior David 	WMI_GET_DETAILED_RS_RES_CMDID			= 0x922,
21108989f96SLior David 	WMI_AOA_MEAS_CMDID				= 0x923,
212a52fb913SLior David 	WMI_BRP_SET_ANT_LIMIT_CMDID			= 0x924,
213cbf795c1SLior David 	WMI_SET_MGMT_RETRY_LIMIT_CMDID			= 0x930,
214cbf795c1SLior David 	WMI_GET_MGMT_RETRY_LIMIT_CMDID			= 0x931,
215849a564bSDedy Lansky 	WMI_NEW_STA_CMDID				= 0x935,
216849a564bSDedy Lansky 	WMI_DEL_STA_CMDID				= 0x936,
21790ffabb0SDedy Lansky 	WMI_SET_THERMAL_THROTTLING_CFG_CMDID		= 0x940,
21890ffabb0SDedy Lansky 	WMI_GET_THERMAL_THROTTLING_CFG_CMDID		= 0x941,
219761f8e4dSLazar Alexei 	/* Read Power Save profile type */
220761f8e4dSLazar Alexei 	WMI_PS_DEV_PROFILE_CFG_READ_CMDID		= 0x942,
2218a4fa214SAhmad Masri 	WMI_TSF_SYNC_CMDID				= 0x973,
22208989f96SLior David 	WMI_TOF_SESSION_START_CMDID			= 0x991,
22308989f96SLior David 	WMI_TOF_GET_CAPABILITIES_CMDID			= 0x992,
22408989f96SLior David 	WMI_TOF_SET_LCR_CMDID				= 0x993,
22508989f96SLior David 	WMI_TOF_SET_LCI_CMDID				= 0x994,
226761f8e4dSLazar Alexei 	WMI_TOF_CFG_RESPONDER_CMDID			= 0x996,
2278ae5d62cSLior David 	WMI_TOF_SET_TX_RX_OFFSET_CMDID			= 0x997,
2288ae5d62cSLior David 	WMI_TOF_GET_TX_RX_OFFSET_CMDID			= 0x998,
229761f8e4dSLazar Alexei 	WMI_TOF_CHANNEL_INFO_CMDID			= 0x999,
230cbf795c1SLior David 	WMI_GET_RF_SECTOR_PARAMS_CMDID			= 0x9A0,
231cbf795c1SLior David 	WMI_SET_RF_SECTOR_PARAMS_CMDID			= 0x9A1,
232cbf795c1SLior David 	WMI_GET_SELECTED_RF_SECTOR_INDEX_CMDID		= 0x9A2,
233cbf795c1SLior David 	WMI_SET_SELECTED_RF_SECTOR_INDEX_CMDID		= 0x9A3,
234cbf795c1SLior David 	WMI_SET_RF_SECTOR_ON_CMDID			= 0x9A4,
2358ae5d62cSLior David 	WMI_PRIO_TX_SECTORS_ORDER_CMDID			= 0x9A5,
2368ae5d62cSLior David 	WMI_PRIO_TX_SECTORS_NUMBER_CMDID		= 0x9A6,
2378ae5d62cSLior David 	WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_CMDID	= 0x9A7,
2388a4fa214SAhmad Masri 	WMI_BF_CONTROL_CMDID				= 0x9AA,
239*96c93589SGidon Studinski 	WMI_TX_STATUS_RING_ADD_CMDID			= 0x9C0,
240*96c93589SGidon Studinski 	WMI_RX_STATUS_RING_ADD_CMDID			= 0x9C1,
241*96c93589SGidon Studinski 	WMI_TX_DESC_RING_ADD_CMDID			= 0x9C2,
242*96c93589SGidon Studinski 	WMI_RX_DESC_RING_ADD_CMDID			= 0x9C3,
243*96c93589SGidon Studinski 	WMI_BCAST_DESC_RING_ADD_CMDID			= 0x9C4,
244*96c93589SGidon Studinski 	WMI_CFG_DEF_RX_OFFLOAD_CMDID			= 0x9C5,
245761f8e4dSLazar Alexei 	WMI_SCHEDULING_SCHEME_CMDID			= 0xA01,
246761f8e4dSLazar Alexei 	WMI_FIXED_SCHEDULING_CONFIG_CMDID		= 0xA02,
247761f8e4dSLazar Alexei 	WMI_ENABLE_FIXED_SCHEDULING_CMDID		= 0xA03,
248761f8e4dSLazar Alexei 	WMI_SET_MULTI_DIRECTED_OMNIS_CONFIG_CMDID	= 0xA04,
249761f8e4dSLazar Alexei 	WMI_SET_LONG_RANGE_CONFIG_CMDID			= 0xA05,
2508a4fa214SAhmad Masri 	WMI_GET_ASSOC_LIST_CMDID			= 0xA06,
2518a4fa214SAhmad Masri 	WMI_GET_CCA_INDICATIONS_CMDID			= 0xA07,
2528a4fa214SAhmad Masri 	WMI_SET_CCA_INDICATIONS_BI_AVG_NUM_CMDID	= 0xA08,
2538a4fa214SAhmad Masri 	WMI_INTERNAL_FW_IOCTL_CMDID			= 0xA0B,
254b874ddecSLior David 	WMI_SET_MAC_ADDRESS_CMDID			= 0xF003,
255b874ddecSLior David 	WMI_ABORT_SCAN_CMDID				= 0xF007,
256b874ddecSLior David 	WMI_SET_PROMISCUOUS_MODE_CMDID			= 0xF041,
257761f8e4dSLazar Alexei 	/* deprecated */
258b874ddecSLior David 	WMI_GET_PMK_CMDID				= 0xF048,
259b874ddecSLior David 	WMI_SET_PASSPHRASE_CMDID			= 0xF049,
260761f8e4dSLazar Alexei 	/* deprecated */
261b874ddecSLior David 	WMI_SEND_ASSOC_RES_CMDID			= 0xF04A,
262761f8e4dSLazar Alexei 	/* deprecated */
263b874ddecSLior David 	WMI_SET_ASSOC_REQ_RELAY_CMDID			= 0xF04B,
264b874ddecSLior David 	WMI_MAC_ADDR_REQ_CMDID				= 0xF04D,
265b874ddecSLior David 	WMI_FW_VER_CMDID				= 0xF04E,
266b874ddecSLior David 	WMI_PMC_CMDID					= 0xF04F,
2672be7d22fSVladimir Kondratiev };
2682be7d22fSVladimir Kondratiev 
269b874ddecSLior David /* WMI_CONNECT_CMDID */
2702be7d22fSVladimir Kondratiev enum wmi_network_type {
2712be7d22fSVladimir Kondratiev 	WMI_NETTYPE_INFRA		= 0x01,
2722be7d22fSVladimir Kondratiev 	WMI_NETTYPE_ADHOC		= 0x02,
2732be7d22fSVladimir Kondratiev 	WMI_NETTYPE_ADHOC_CREATOR	= 0x04,
2742be7d22fSVladimir Kondratiev 	WMI_NETTYPE_AP			= 0x10,
2752be7d22fSVladimir Kondratiev 	WMI_NETTYPE_P2P			= 0x20,
276b874ddecSLior David 	/* PCIE over 60g */
277b874ddecSLior David 	WMI_NETTYPE_WBE			= 0x40,
2782be7d22fSVladimir Kondratiev };
2792be7d22fSVladimir Kondratiev 
2802be7d22fSVladimir Kondratiev enum wmi_dot11_auth_mode {
2812be7d22fSVladimir Kondratiev 	WMI_AUTH11_OPEN		= 0x01,
2822be7d22fSVladimir Kondratiev 	WMI_AUTH11_SHARED	= 0x02,
2832be7d22fSVladimir Kondratiev 	WMI_AUTH11_LEAP		= 0x04,
2842be7d22fSVladimir Kondratiev 	WMI_AUTH11_WSC		= 0x08,
2852be7d22fSVladimir Kondratiev };
2862be7d22fSVladimir Kondratiev 
2872be7d22fSVladimir Kondratiev enum wmi_auth_mode {
2882be7d22fSVladimir Kondratiev 	WMI_AUTH_NONE		= 0x01,
2892be7d22fSVladimir Kondratiev 	WMI_AUTH_WPA		= 0x02,
2902be7d22fSVladimir Kondratiev 	WMI_AUTH_WPA2		= 0x04,
2912be7d22fSVladimir Kondratiev 	WMI_AUTH_WPA_PSK	= 0x08,
2922be7d22fSVladimir Kondratiev 	WMI_AUTH_WPA2_PSK	= 0x10,
2932be7d22fSVladimir Kondratiev 	WMI_AUTH_WPA_CCKM	= 0x20,
2942be7d22fSVladimir Kondratiev 	WMI_AUTH_WPA2_CCKM	= 0x40,
2952be7d22fSVladimir Kondratiev };
2962be7d22fSVladimir Kondratiev 
2972be7d22fSVladimir Kondratiev enum wmi_crypto_type {
2982be7d22fSVladimir Kondratiev 	WMI_CRYPT_NONE		= 0x01,
2992be7d22fSVladimir Kondratiev 	WMI_CRYPT_AES_GCMP	= 0x20,
3002be7d22fSVladimir Kondratiev };
3012be7d22fSVladimir Kondratiev 
3022be7d22fSVladimir Kondratiev enum wmi_connect_ctrl_flag_bits {
303b874ddecSLior David 	WMI_CONNECT_ASSOC_POLICY_USER		= 0x01,
304b874ddecSLior David 	WMI_CONNECT_SEND_REASSOC		= 0x02,
305b874ddecSLior David 	WMI_CONNECT_IGNORE_WPA_GROUP_CIPHER	= 0x04,
306b874ddecSLior David 	WMI_CONNECT_PROFILE_MATCH_DONE		= 0x08,
307b874ddecSLior David 	WMI_CONNECT_IGNORE_AAC_BEACON		= 0x10,
308b874ddecSLior David 	WMI_CONNECT_CSA_FOLLOW_BSS		= 0x20,
309b874ddecSLior David 	WMI_CONNECT_DO_WPA_OFFLOAD		= 0x40,
310b874ddecSLior David 	WMI_CONNECT_DO_NOT_DEAUTH		= 0x80,
3112be7d22fSVladimir Kondratiev };
3122be7d22fSVladimir Kondratiev 
3132be7d22fSVladimir Kondratiev #define WMI_MAX_SSID_LEN	(32)
3142be7d22fSVladimir Kondratiev 
315b874ddecSLior David /* WMI_CONNECT_CMDID */
3162be7d22fSVladimir Kondratiev struct wmi_connect_cmd {
3172be7d22fSVladimir Kondratiev 	u8 network_type;
3182be7d22fSVladimir Kondratiev 	u8 dot11_auth_mode;
3192be7d22fSVladimir Kondratiev 	u8 auth_mode;
3202be7d22fSVladimir Kondratiev 	u8 pairwise_crypto_type;
3212be7d22fSVladimir Kondratiev 	u8 pairwise_crypto_len;
3222be7d22fSVladimir Kondratiev 	u8 group_crypto_type;
3232be7d22fSVladimir Kondratiev 	u8 group_crypto_len;
3242be7d22fSVladimir Kondratiev 	u8 ssid_len;
3252be7d22fSVladimir Kondratiev 	u8 ssid[WMI_MAX_SSID_LEN];
3262be7d22fSVladimir Kondratiev 	u8 channel;
3272be7d22fSVladimir Kondratiev 	u8 reserved0;
3282be7d22fSVladimir Kondratiev 	u8 bssid[WMI_MAC_LEN];
3292be7d22fSVladimir Kondratiev 	__le32 ctrl_flags;
3302be7d22fSVladimir Kondratiev 	u8 dst_mac[WMI_MAC_LEN];
3312be7d22fSVladimir Kondratiev 	u8 reserved1[2];
3322be7d22fSVladimir Kondratiev } __packed;
3332be7d22fSVladimir Kondratiev 
334b874ddecSLior David /* WMI_DISCONNECT_STA_CMDID */
335b8023177SVladimir Kondratiev struct wmi_disconnect_sta_cmd {
336b8023177SVladimir Kondratiev 	u8 dst_mac[WMI_MAC_LEN];
337b8023177SVladimir Kondratiev 	__le16 disconnect_reason;
338b8023177SVladimir Kondratiev } __packed;
3392be7d22fSVladimir Kondratiev 
3402be7d22fSVladimir Kondratiev #define WMI_MAX_KEY_INDEX	(3)
3412be7d22fSVladimir Kondratiev #define WMI_MAX_KEY_LEN		(32)
3422be7d22fSVladimir Kondratiev #define WMI_PASSPHRASE_LEN	(64)
3432be7d22fSVladimir Kondratiev 
344b874ddecSLior David /* WMI_SET_PASSPHRASE_CMDID */
3452be7d22fSVladimir Kondratiev struct wmi_set_passphrase_cmd {
3462be7d22fSVladimir Kondratiev 	u8 ssid[WMI_MAX_SSID_LEN];
3472be7d22fSVladimir Kondratiev 	u8 passphrase[WMI_PASSPHRASE_LEN];
3482be7d22fSVladimir Kondratiev 	u8 ssid_len;
3492be7d22fSVladimir Kondratiev 	u8 passphrase_len;
3502be7d22fSVladimir Kondratiev } __packed;
3512be7d22fSVladimir Kondratiev 
352b874ddecSLior David /* WMI_ADD_CIPHER_KEY_CMDID */
3532be7d22fSVladimir Kondratiev enum wmi_key_usage {
354b874ddecSLior David 	WMI_KEY_USE_PAIRWISE	= 0x00,
355b874ddecSLior David 	WMI_KEY_USE_RX_GROUP	= 0x01,
356b874ddecSLior David 	WMI_KEY_USE_TX_GROUP	= 0x02,
3572be7d22fSVladimir Kondratiev };
3582be7d22fSVladimir Kondratiev 
3592be7d22fSVladimir Kondratiev struct wmi_add_cipher_key_cmd {
3602be7d22fSVladimir Kondratiev 	u8 key_index;
3612be7d22fSVladimir Kondratiev 	u8 key_type;
362b874ddecSLior David 	/* enum wmi_key_usage */
363b874ddecSLior David 	u8 key_usage;
3642be7d22fSVladimir Kondratiev 	u8 key_len;
365b874ddecSLior David 	/* key replay sequence counter */
366b874ddecSLior David 	u8 key_rsc[8];
3672be7d22fSVladimir Kondratiev 	u8 key[WMI_MAX_KEY_LEN];
368b874ddecSLior David 	/* Additional Key Control information */
369b874ddecSLior David 	u8 key_op_ctrl;
3702be7d22fSVladimir Kondratiev 	u8 mac[WMI_MAC_LEN];
3712be7d22fSVladimir Kondratiev } __packed;
3722be7d22fSVladimir Kondratiev 
373b874ddecSLior David /* WMI_DELETE_CIPHER_KEY_CMDID */
3742be7d22fSVladimir Kondratiev struct wmi_delete_cipher_key_cmd {
3752be7d22fSVladimir Kondratiev 	u8 key_index;
3762be7d22fSVladimir Kondratiev 	u8 mac[WMI_MAC_LEN];
3772be7d22fSVladimir Kondratiev } __packed;
3782be7d22fSVladimir Kondratiev 
379b874ddecSLior David /* WMI_START_SCAN_CMDID
3802be7d22fSVladimir Kondratiev  *
3812be7d22fSVladimir Kondratiev  * Start L1 scan operation
3822be7d22fSVladimir Kondratiev  *
3832be7d22fSVladimir Kondratiev  * Returned events:
3842be7d22fSVladimir Kondratiev  * - WMI_RX_MGMT_PACKET_EVENTID - for every probe resp.
3852be7d22fSVladimir Kondratiev  * - WMI_SCAN_COMPLETE_EVENTID
3862be7d22fSVladimir Kondratiev  */
3872be7d22fSVladimir Kondratiev enum wmi_scan_type {
388b874ddecSLior David 	WMI_ACTIVE_SCAN		= 0x00,
389b874ddecSLior David 	WMI_SHORT_SCAN		= 0x01,
390b874ddecSLior David 	WMI_PASSIVE_SCAN	= 0x02,
391b874ddecSLior David 	WMI_DIRECT_SCAN		= 0x03,
392b874ddecSLior David 	WMI_LONG_SCAN		= 0x04,
3932be7d22fSVladimir Kondratiev };
3942be7d22fSVladimir Kondratiev 
395b874ddecSLior David /* WMI_START_SCAN_CMDID */
3962be7d22fSVladimir Kondratiev struct wmi_start_scan_cmd {
397b874ddecSLior David 	u8 direct_scan_mac_addr[WMI_MAC_LEN];
3980163b031SMaya Erez 	/* run scan with discovery beacon. Relevant for ACTIVE scan only. */
39974997a53SLior David 	u8 discovery_mode;
40074997a53SLior David 	u8 reserved;
401b874ddecSLior David 	/* Max duration in the home channel(ms) */
402b874ddecSLior David 	__le32 dwell_time;
403b874ddecSLior David 	/* Time interval between scans (ms) */
404b874ddecSLior David 	__le32 force_scan_interval;
405b874ddecSLior David 	/* enum wmi_scan_type */
406b874ddecSLior David 	u8 scan_type;
407b874ddecSLior David 	/* how many channels follow */
408b874ddecSLior David 	u8 num_channels;
409b874ddecSLior David 	/* channels ID's:
410b874ddecSLior David 	 * 0 - 58320 MHz
411b874ddecSLior David 	 * 1 - 60480 MHz
412b874ddecSLior David 	 * 2 - 62640 MHz
413b874ddecSLior David 	 */
4142be7d22fSVladimir Kondratiev 	struct {
4152be7d22fSVladimir Kondratiev 		u8 channel;
4162be7d22fSVladimir Kondratiev 		u8 reserved;
417b874ddecSLior David 	} channel_list[0];
4182be7d22fSVladimir Kondratiev } __packed;
4192be7d22fSVladimir Kondratiev 
420a5dc6883SDedy Lansky #define WMI_MAX_PNO_SSID_NUM	(16)
421a5dc6883SDedy Lansky #define WMI_MAX_CHANNEL_NUM	(6)
422a5dc6883SDedy Lansky #define WMI_MAX_PLANS_NUM	(2)
423a5dc6883SDedy Lansky 
424a5dc6883SDedy Lansky /* WMI_START_SCHED_SCAN_CMDID */
425a5dc6883SDedy Lansky struct wmi_sched_scan_ssid_match {
426a5dc6883SDedy Lansky 	u8 ssid_len;
427a5dc6883SDedy Lansky 	u8 ssid[WMI_MAX_SSID_LEN];
428a5dc6883SDedy Lansky 	s8 rssi_threshold;
429a5dc6883SDedy Lansky 	/* boolean */
430a5dc6883SDedy Lansky 	u8 add_ssid_to_probe;
431a5dc6883SDedy Lansky 	u8 reserved;
432a5dc6883SDedy Lansky } __packed;
433a5dc6883SDedy Lansky 
434a5dc6883SDedy Lansky /* WMI_START_SCHED_SCAN_CMDID */
435a5dc6883SDedy Lansky struct wmi_sched_scan_plan {
436a5dc6883SDedy Lansky 	__le16 interval_sec;
437a5dc6883SDedy Lansky 	__le16 num_of_iterations;
438a5dc6883SDedy Lansky } __packed;
439a5dc6883SDedy Lansky 
440a5dc6883SDedy Lansky /* WMI_START_SCHED_SCAN_CMDID */
441a5dc6883SDedy Lansky struct wmi_start_sched_scan_cmd {
442a5dc6883SDedy Lansky 	struct wmi_sched_scan_ssid_match ssid_for_match[WMI_MAX_PNO_SSID_NUM];
443a5dc6883SDedy Lansky 	u8 num_of_ssids;
444a5dc6883SDedy Lansky 	s8 min_rssi_threshold;
445a5dc6883SDedy Lansky 	u8 channel_list[WMI_MAX_CHANNEL_NUM];
446a5dc6883SDedy Lansky 	u8 num_of_channels;
447a5dc6883SDedy Lansky 	u8 reserved;
448a5dc6883SDedy Lansky 	__le16 initial_delay_sec;
449a5dc6883SDedy Lansky 	struct wmi_sched_scan_plan scan_plans[WMI_MAX_PLANS_NUM];
450a5dc6883SDedy Lansky } __packed;
451a5dc6883SDedy Lansky 
452b874ddecSLior David /* WMI_SET_PROBED_SSID_CMDID */
453b8023177SVladimir Kondratiev #define MAX_PROBED_SSID_INDEX	(3)
4542be7d22fSVladimir Kondratiev 
4552be7d22fSVladimir Kondratiev enum wmi_ssid_flag {
456b874ddecSLior David 	/* disables entry */
457b874ddecSLior David 	WMI_SSID_FLAG_DISABLE	= 0x00,
458b874ddecSLior David 	/* probes specified ssid */
459b874ddecSLior David 	WMI_SSID_FLAG_SPECIFIC	= 0x01,
460b874ddecSLior David 	/* probes for any ssid */
461b874ddecSLior David 	WMI_SSID_FLAG_ANY	= 0x02,
4622be7d22fSVladimir Kondratiev };
4632be7d22fSVladimir Kondratiev 
4642be7d22fSVladimir Kondratiev struct wmi_probed_ssid_cmd {
465b874ddecSLior David 	/* 0 to MAX_PROBED_SSID_INDEX */
466b874ddecSLior David 	u8 entry_index;
467b874ddecSLior David 	/* enum wmi_ssid_flag */
468b874ddecSLior David 	u8 flag;
4692be7d22fSVladimir Kondratiev 	u8 ssid_len;
4702be7d22fSVladimir Kondratiev 	u8 ssid[WMI_MAX_SSID_LEN];
4712be7d22fSVladimir Kondratiev } __packed;
4722be7d22fSVladimir Kondratiev 
473b874ddecSLior David /* WMI_SET_APPIE_CMDID
4742be7d22fSVladimir Kondratiev  * Add Application specified IE to a management frame
4752be7d22fSVladimir Kondratiev  */
476b8023177SVladimir Kondratiev #define WMI_MAX_IE_LEN	(1024)
477b8023177SVladimir Kondratiev 
478b874ddecSLior David /* Frame Types */
479b8023177SVladimir Kondratiev enum wmi_mgmt_frame_type {
480b874ddecSLior David 	WMI_FRAME_BEACON	= 0x00,
481b874ddecSLior David 	WMI_FRAME_PROBE_REQ	= 0x01,
482b874ddecSLior David 	WMI_FRAME_PROBE_RESP	= 0x02,
483b874ddecSLior David 	WMI_FRAME_ASSOC_REQ	= 0x03,
484b874ddecSLior David 	WMI_FRAME_ASSOC_RESP	= 0x04,
485b874ddecSLior David 	WMI_NUM_MGMT_FRAME	= 0x05,
486b8023177SVladimir Kondratiev };
487b8023177SVladimir Kondratiev 
4882be7d22fSVladimir Kondratiev struct wmi_set_appie_cmd {
489b874ddecSLior David 	/* enum wmi_mgmt_frame_type */
490b874ddecSLior David 	u8 mgmt_frm_type;
4912be7d22fSVladimir Kondratiev 	u8 reserved;
492b874ddecSLior David 	/* Length of the IE to be added to MGMT frame */
493b874ddecSLior David 	__le16 ie_len;
4942be7d22fSVladimir Kondratiev 	u8 ie_info[0];
4952be7d22fSVladimir Kondratiev } __packed;
4962be7d22fSVladimir Kondratiev 
497b874ddecSLior David /* WMI_PXMT_RANGE_CFG_CMDID */
4982be7d22fSVladimir Kondratiev struct wmi_pxmt_range_cfg_cmd {
4992be7d22fSVladimir Kondratiev 	u8 dst_mac[WMI_MAC_LEN];
5002be7d22fSVladimir Kondratiev 	__le16 range;
5012be7d22fSVladimir Kondratiev } __packed;
5022be7d22fSVladimir Kondratiev 
503b874ddecSLior David /* WMI_PXMT_SNR2_RANGE_CFG_CMDID */
5042be7d22fSVladimir Kondratiev struct wmi_pxmt_snr2_range_cfg_cmd {
505b874ddecSLior David 	s8 snr2range_arr[2];
5062be7d22fSVladimir Kondratiev } __packed;
5072be7d22fSVladimir Kondratiev 
508b874ddecSLior David /* WMI_RF_MGMT_CMDID */
5092be7d22fSVladimir Kondratiev enum wmi_rf_mgmt_type {
510b874ddecSLior David 	WMI_RF_MGMT_W_DISABLE	= 0x00,
511b874ddecSLior David 	WMI_RF_MGMT_W_ENABLE	= 0x01,
512b874ddecSLior David 	WMI_RF_MGMT_GET_STATUS	= 0x02,
5132be7d22fSVladimir Kondratiev };
5142be7d22fSVladimir Kondratiev 
5158a4fa214SAhmad Masri /* WMI_BF_CONTROL_CMDID */
5168a4fa214SAhmad Masri enum wmi_bf_triggers {
5178a4fa214SAhmad Masri 	WMI_BF_TRIGGER_RS_MCS1_TH_FAILURE		= 0x01,
5188a4fa214SAhmad Masri 	WMI_BF_TRIGGER_RS_MCS1_NO_BACK_FAILURE		= 0x02,
5198a4fa214SAhmad Masri 	WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_TXOP		= 0x04,
5208a4fa214SAhmad Masri 	WMI_BF_TRIGGER_MAX_BACK_FAILURE			= 0x08,
5218a4fa214SAhmad Masri 	WMI_BF_TRIGGER_FW				= 0x10,
5228a4fa214SAhmad Masri 	WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_KEEP_ALIVE	= 0x20,
5238a4fa214SAhmad Masri 	WMI_BF_TRIGGER_AOA				= 0x40,
5248a4fa214SAhmad Masri 	WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_UPM		= 0x80,
5258a4fa214SAhmad Masri };
5268a4fa214SAhmad Masri 
527b874ddecSLior David /* WMI_RF_MGMT_CMDID */
5282be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_cmd {
5292be7d22fSVladimir Kondratiev 	__le32 rf_mgmt_type;
5302be7d22fSVladimir Kondratiev } __packed;
5312be7d22fSVladimir Kondratiev 
532b874ddecSLior David /* WMI_CORR_MEASURE_CMDID */
533b8023177SVladimir Kondratiev struct wmi_corr_measure_cmd {
534b874ddecSLior David 	__le32 freq_mhz;
535b8023177SVladimir Kondratiev 	__le32 length_samples;
536b8023177SVladimir Kondratiev 	__le32 iterations;
537b8023177SVladimir Kondratiev } __packed;
538b8023177SVladimir Kondratiev 
539b874ddecSLior David /* WMI_SET_SSID_CMDID */
5402be7d22fSVladimir Kondratiev struct wmi_set_ssid_cmd {
5412be7d22fSVladimir Kondratiev 	__le32 ssid_len;
5422be7d22fSVladimir Kondratiev 	u8 ssid[WMI_MAX_SSID_LEN];
5432be7d22fSVladimir Kondratiev } __packed;
5442be7d22fSVladimir Kondratiev 
545b874ddecSLior David /* WMI_SET_PCP_CHANNEL_CMDID */
5462be7d22fSVladimir Kondratiev struct wmi_set_pcp_channel_cmd {
5472be7d22fSVladimir Kondratiev 	u8 channel;
5482be7d22fSVladimir Kondratiev 	u8 reserved[3];
5492be7d22fSVladimir Kondratiev } __packed;
5502be7d22fSVladimir Kondratiev 
551b874ddecSLior David /* WMI_BCON_CTRL_CMDID */
5522be7d22fSVladimir Kondratiev struct wmi_bcon_ctrl_cmd {
5532be7d22fSVladimir Kondratiev 	__le16 bcon_interval;
5542be7d22fSVladimir Kondratiev 	__le16 frag_num;
5552be7d22fSVladimir Kondratiev 	__le64 ss_mask;
5562be7d22fSVladimir Kondratiev 	u8 network_type;
5576c2faf09SVladimir Kondratiev 	u8 pcp_max_assoc_sta;
5582be7d22fSVladimir Kondratiev 	u8 disable_sec_offload;
5592be7d22fSVladimir Kondratiev 	u8 disable_sec;
560b874ddecSLior David 	u8 hidden_ssid;
561b874ddecSLior David 	u8 is_go;
5628a4fa214SAhmad Masri 	/* A-BFT length override if non-0 */
5638a4fa214SAhmad Masri 	u8 abft_len;
5648a4fa214SAhmad Masri 	u8 reserved;
5652be7d22fSVladimir Kondratiev } __packed;
5662be7d22fSVladimir Kondratiev 
567b874ddecSLior David /* WMI_PORT_ALLOCATE_CMDID */
568b8023177SVladimir Kondratiev enum wmi_port_role {
569b874ddecSLior David 	WMI_PORT_STA		= 0x00,
570b874ddecSLior David 	WMI_PORT_PCP		= 0x01,
571b874ddecSLior David 	WMI_PORT_AP		= 0x02,
572b874ddecSLior David 	WMI_PORT_P2P_DEV	= 0x03,
573b874ddecSLior David 	WMI_PORT_P2P_CLIENT	= 0x04,
574b874ddecSLior David 	WMI_PORT_P2P_GO		= 0x05,
575b8023177SVladimir Kondratiev };
576b8023177SVladimir Kondratiev 
577b874ddecSLior David /* WMI_PORT_ALLOCATE_CMDID */
578b8023177SVladimir Kondratiev struct wmi_port_allocate_cmd {
579b8023177SVladimir Kondratiev 	u8 mac[WMI_MAC_LEN];
580b8023177SVladimir Kondratiev 	u8 port_role;
5816c2faf09SVladimir Kondratiev 	u8 mid;
582b8023177SVladimir Kondratiev } __packed;
583b8023177SVladimir Kondratiev 
584b874ddecSLior David /* WMI_PORT_DELETE_CMDID */
585b874ddecSLior David struct wmi_port_delete_cmd {
586b8023177SVladimir Kondratiev 	u8 mid;
587b8023177SVladimir Kondratiev 	u8 reserved[3];
588b8023177SVladimir Kondratiev } __packed;
589b8023177SVladimir Kondratiev 
590fe9ee51eSMaya Erez /* WMI_TRAFFIC_SUSPEND_CMD wakeup trigger bit mask values */
591fe9ee51eSMaya Erez enum wmi_wakeup_trigger {
592fe9ee51eSMaya Erez 	WMI_WAKEUP_TRIGGER_UCAST	= 0x01,
593fe9ee51eSMaya Erez 	WMI_WAKEUP_TRIGGER_BCAST	= 0x02,
594fe9ee51eSMaya Erez };
595fe9ee51eSMaya Erez 
596fe9ee51eSMaya Erez /* WMI_TRAFFIC_SUSPEND_CMDID */
597fe9ee51eSMaya Erez struct wmi_traffic_suspend_cmd {
5980163b031SMaya Erez 	/* Bit vector: bit[0] - wake on Unicast, bit[1] - wake on Broadcast */
5990163b031SMaya Erez 	u8 wakeup_trigger;
6000163b031SMaya Erez } __packed;
6010163b031SMaya Erez 
602b874ddecSLior David /* WMI_P2P_CFG_CMDID */
603b8023177SVladimir Kondratiev enum wmi_discovery_mode {
604b874ddecSLior David 	WMI_DISCOVERY_MODE_NON_OFFLOAD	= 0x00,
605b874ddecSLior David 	WMI_DISCOVERY_MODE_OFFLOAD	= 0x01,
606b874ddecSLior David 	WMI_DISCOVERY_MODE_PEER2PEER	= 0x02,
607b8023177SVladimir Kondratiev };
608b8023177SVladimir Kondratiev 
609b8023177SVladimir Kondratiev struct wmi_p2p_cfg_cmd {
610b874ddecSLior David 	/* enum wmi_discovery_mode */
611b874ddecSLior David 	u8 discovery_mode;
612b8023177SVladimir Kondratiev 	u8 channel;
613b874ddecSLior David 	/* base to listen/search duration calculation */
614b874ddecSLior David 	__le16 bcon_interval;
615b8023177SVladimir Kondratiev } __packed;
616b8023177SVladimir Kondratiev 
617b874ddecSLior David /* WMI_POWER_MGMT_CFG_CMDID */
618b8023177SVladimir Kondratiev enum wmi_power_source_type {
619b874ddecSLior David 	WMI_POWER_SOURCE_BATTERY	= 0x00,
620b874ddecSLior David 	WMI_POWER_SOURCE_OTHER		= 0x01,
621b8023177SVladimir Kondratiev };
622b8023177SVladimir Kondratiev 
623b8023177SVladimir Kondratiev struct wmi_power_mgmt_cfg_cmd {
624b874ddecSLior David 	/* enum wmi_power_source_type */
625b874ddecSLior David 	u8 power_source;
626b8023177SVladimir Kondratiev 	u8 reserved[3];
627b8023177SVladimir Kondratiev } __packed;
628b8023177SVladimir Kondratiev 
629b874ddecSLior David /* WMI_PCP_START_CMDID */
6308a4fa214SAhmad Masri enum wmi_ap_sme_offload_mode {
6318a4fa214SAhmad Masri 	/* Full AP SME in FW */
6328a4fa214SAhmad Masri 	WMI_AP_SME_OFFLOAD_FULL		= 0x00,
6338a4fa214SAhmad Masri 	/* Probe AP SME in FW */
6348a4fa214SAhmad Masri 	WMI_AP_SME_OFFLOAD_PARTIAL	= 0x01,
6358a4fa214SAhmad Masri 	/* AP SME in host */
6368a4fa214SAhmad Masri 	WMI_AP_SME_OFFLOAD_NONE		= 0x02,
6378a4fa214SAhmad Masri };
6388a4fa214SAhmad Masri 
6398a4fa214SAhmad Masri /* WMI_PCP_START_CMDID */
640b8023177SVladimir Kondratiev struct wmi_pcp_start_cmd {
641b8023177SVladimir Kondratiev 	__le16 bcon_interval;
6426c2faf09SVladimir Kondratiev 	u8 pcp_max_assoc_sta;
6438e52fe30SHamad Kadmany 	u8 hidden_ssid;
644b874ddecSLior David 	u8 is_go;
645a52fb913SLior David 	u8 reserved0[5];
64690ffabb0SDedy Lansky 	/* A-BFT length override if non-0 */
647a52fb913SLior David 	u8 abft_len;
6488a4fa214SAhmad Masri 	/* enum wmi_ap_sme_offload_mode_e */
6498a4fa214SAhmad Masri 	u8 ap_sme_offload_mode;
650b8023177SVladimir Kondratiev 	u8 network_type;
651b8023177SVladimir Kondratiev 	u8 channel;
652b8023177SVladimir Kondratiev 	u8 disable_sec_offload;
653b8023177SVladimir Kondratiev 	u8 disable_sec;
654b8023177SVladimir Kondratiev } __packed;
655b8023177SVladimir Kondratiev 
656b874ddecSLior David /* WMI_SW_TX_REQ_CMDID */
6572be7d22fSVladimir Kondratiev struct wmi_sw_tx_req_cmd {
6582be7d22fSVladimir Kondratiev 	u8 dst_mac[WMI_MAC_LEN];
6592be7d22fSVladimir Kondratiev 	__le16 len;
6602be7d22fSVladimir Kondratiev 	u8 payload[0];
6612be7d22fSVladimir Kondratiev } __packed;
6622be7d22fSVladimir Kondratiev 
6638a4fa214SAhmad Masri /* WMI_VRING_SWITCH_TIMING_CONFIG_CMDID */
6648a4fa214SAhmad Masri struct wmi_vring_switch_timing_config_cmd {
6658a4fa214SAhmad Masri 	/* Set vring timing configuration:
6668a4fa214SAhmad Masri 	 *
6678a4fa214SAhmad Masri 	 * defined interval for vring switch
6688a4fa214SAhmad Masri 	 */
6698a4fa214SAhmad Masri 	__le32 interval_usec;
6708a4fa214SAhmad Masri 	/* vring inactivity threshold */
6718a4fa214SAhmad Masri 	__le32 idle_th_usec;
6728a4fa214SAhmad Masri } __packed;
6738a4fa214SAhmad Masri 
6742be7d22fSVladimir Kondratiev struct wmi_sw_ring_cfg {
6752be7d22fSVladimir Kondratiev 	__le64 ring_mem_base;
6762be7d22fSVladimir Kondratiev 	__le16 ring_size;
6772be7d22fSVladimir Kondratiev 	__le16 max_mpdu_size;
6782be7d22fSVladimir Kondratiev } __packed;
6792be7d22fSVladimir Kondratiev 
680b874ddecSLior David /* wmi_vring_cfg_schd */
6812be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd {
6822be7d22fSVladimir Kondratiev 	__le16 priority;
6832be7d22fSVladimir Kondratiev 	__le16 timeslot_us;
6842be7d22fSVladimir Kondratiev } __packed;
6852be7d22fSVladimir Kondratiev 
6862be7d22fSVladimir Kondratiev enum wmi_vring_cfg_encap_trans_type {
687b874ddecSLior David 	WMI_VRING_ENC_TYPE_802_3	= 0x00,
688b874ddecSLior David 	WMI_VRING_ENC_TYPE_NATIVE_WIFI	= 0x01,
6892be7d22fSVladimir Kondratiev };
6902be7d22fSVladimir Kondratiev 
6912be7d22fSVladimir Kondratiev enum wmi_vring_cfg_ds_cfg {
692b874ddecSLior David 	WMI_VRING_DS_PBSS	= 0x00,
693b874ddecSLior David 	WMI_VRING_DS_STATION	= 0x01,
694b874ddecSLior David 	WMI_VRING_DS_AP		= 0x02,
695b874ddecSLior David 	WMI_VRING_DS_ADDR4	= 0x03,
6962be7d22fSVladimir Kondratiev };
6972be7d22fSVladimir Kondratiev 
6982be7d22fSVladimir Kondratiev enum wmi_vring_cfg_nwifi_ds_trans_type {
699b874ddecSLior David 	WMI_NWIFI_TX_TRANS_MODE_NO		= 0x00,
700b874ddecSLior David 	WMI_NWIFI_TX_TRANS_MODE_AP2PBSS		= 0x01,
701b874ddecSLior David 	WMI_NWIFI_TX_TRANS_MODE_STA2PBSS	= 0x02,
7022be7d22fSVladimir Kondratiev };
7032be7d22fSVladimir Kondratiev 
7042be7d22fSVladimir Kondratiev enum wmi_vring_cfg_schd_params_priority {
705b874ddecSLior David 	WMI_SCH_PRIO_REGULAR	= 0x00,
706b874ddecSLior David 	WMI_SCH_PRIO_HIGH	= 0x01,
7072be7d22fSVladimir Kondratiev };
7082be7d22fSVladimir Kondratiev 
7098a4fa214SAhmad Masri #define CIDXTID_EXTENDED_CID_TID		(0xFF)
7102be7d22fSVladimir Kondratiev #define CIDXTID_CID_POS				(0)
7112be7d22fSVladimir Kondratiev #define CIDXTID_CID_LEN				(4)
7122be7d22fSVladimir Kondratiev #define CIDXTID_CID_MSK				(0xF)
7132be7d22fSVladimir Kondratiev #define CIDXTID_TID_POS				(4)
7142be7d22fSVladimir Kondratiev #define CIDXTID_TID_LEN				(4)
7152be7d22fSVladimir Kondratiev #define CIDXTID_TID_MSK				(0xF0)
7162be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_POS	(0)
7172be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_LEN	(1)
7182be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_MSK	(0x1)
7192be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_POS		(1)
7202be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_LEN		(1)
7212be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_MSK		(0x2)
7222be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_POS	(0)
7232be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_LEN	(6)
7242be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_MSK	(0x3F)
725b874ddecSLior David 
726b874ddecSLior David struct wmi_vring_cfg {
727b874ddecSLior David 	struct wmi_sw_ring_cfg tx_sw_ring;
728b874ddecSLior David 	/* 0-23 vrings */
729b874ddecSLior David 	u8 ringid;
7308a4fa214SAhmad Masri 	/* Used for cid less than 8. For higher cid set
7318a4fa214SAhmad Masri 	 * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead
7328a4fa214SAhmad Masri 	 */
733b874ddecSLior David 	u8 cidxtid;
734b874ddecSLior David 	u8 encap_trans_type;
735b874ddecSLior David 	/* 802.3 DS cfg */
736b874ddecSLior David 	u8 ds_cfg;
737b874ddecSLior David 	u8 nwifi_ds_trans_type;
738b874ddecSLior David 	u8 mac_ctrl;
7392be7d22fSVladimir Kondratiev 	u8 to_resolution;
7402be7d22fSVladimir Kondratiev 	u8 agg_max_wsize;
7412be7d22fSVladimir Kondratiev 	struct wmi_vring_cfg_schd schd_params;
7428a4fa214SAhmad Masri 	/* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
7438a4fa214SAhmad Masri 	u8 cid;
7448a4fa214SAhmad Masri 	/* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
7458a4fa214SAhmad Masri 	u8 tid;
7468a4fa214SAhmad Masri 	u8 reserved[2];
7472be7d22fSVladimir Kondratiev } __packed;
7482be7d22fSVladimir Kondratiev 
7492be7d22fSVladimir Kondratiev enum wmi_vring_cfg_cmd_action {
750b874ddecSLior David 	WMI_VRING_CMD_ADD	= 0x00,
751b874ddecSLior David 	WMI_VRING_CMD_MODIFY	= 0x01,
752b874ddecSLior David 	WMI_VRING_CMD_DELETE	= 0x02,
7532be7d22fSVladimir Kondratiev };
7542be7d22fSVladimir Kondratiev 
755b874ddecSLior David /* WMI_VRING_CFG_CMDID */
7562be7d22fSVladimir Kondratiev struct wmi_vring_cfg_cmd {
7572be7d22fSVladimir Kondratiev 	__le32 action;
7582be7d22fSVladimir Kondratiev 	struct wmi_vring_cfg vring_cfg;
7592be7d22fSVladimir Kondratiev } __packed;
7602be7d22fSVladimir Kondratiev 
76162bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg {
76262bfd300SVladimir Kondratiev 	struct wmi_sw_ring_cfg tx_sw_ring;
763b874ddecSLior David 	/* 0-23 vrings */
764b874ddecSLior David 	u8 ringid;
76562bfd300SVladimir Kondratiev 	u8 encap_trans_type;
766b874ddecSLior David 	/* 802.3 DS cfg */
767b874ddecSLior David 	u8 ds_cfg;
76862bfd300SVladimir Kondratiev 	u8 nwifi_ds_trans_type;
76962bfd300SVladimir Kondratiev } __packed;
77062bfd300SVladimir Kondratiev 
771b874ddecSLior David /* WMI_BCAST_VRING_CFG_CMDID */
77262bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg_cmd {
77362bfd300SVladimir Kondratiev 	__le32 action;
77462bfd300SVladimir Kondratiev 	struct wmi_bcast_vring_cfg vring_cfg;
77562bfd300SVladimir Kondratiev } __packed;
77662bfd300SVladimir Kondratiev 
777761f8e4dSLazar Alexei /* WMI_LO_POWER_CALIB_FROM_OTP_CMDID */
778761f8e4dSLazar Alexei struct wmi_lo_power_calib_from_otp_cmd {
779761f8e4dSLazar Alexei 	/* index to read from OTP. zero based */
780761f8e4dSLazar Alexei 	u8 index;
781761f8e4dSLazar Alexei 	u8 reserved[3];
782761f8e4dSLazar Alexei } __packed;
783761f8e4dSLazar Alexei 
784761f8e4dSLazar Alexei /* WMI_LO_POWER_CALIB_FROM_OTP_EVENTID */
785761f8e4dSLazar Alexei struct wmi_lo_power_calib_from_otp_event {
786761f8e4dSLazar Alexei 	/* wmi_fw_status */
787761f8e4dSLazar Alexei 	u8 status;
788761f8e4dSLazar Alexei 	u8 reserved[3];
789761f8e4dSLazar Alexei } __packed;
790761f8e4dSLazar Alexei 
791*96c93589SGidon Studinski struct wmi_edma_ring_cfg {
792*96c93589SGidon Studinski 	__le64 ring_mem_base;
793*96c93589SGidon Studinski 	/* size in number of items */
794*96c93589SGidon Studinski 	__le16 ring_size;
795*96c93589SGidon Studinski 	u8 ring_id;
796*96c93589SGidon Studinski 	u8 reserved;
797*96c93589SGidon Studinski } __packed;
798*96c93589SGidon Studinski 
799*96c93589SGidon Studinski enum wmi_rx_msg_type {
800*96c93589SGidon Studinski 	WMI_RX_MSG_TYPE_COMPRESSED	= 0x00,
801*96c93589SGidon Studinski 	WMI_RX_MSG_TYPE_EXTENDED	= 0x01,
802*96c93589SGidon Studinski };
803*96c93589SGidon Studinski 
804*96c93589SGidon Studinski struct wmi_tx_status_ring_add_cmd {
805*96c93589SGidon Studinski 	struct wmi_edma_ring_cfg ring_cfg;
806*96c93589SGidon Studinski 	u8 irq_index;
807*96c93589SGidon Studinski 	u8 reserved[3];
808*96c93589SGidon Studinski } __packed;
809*96c93589SGidon Studinski 
810*96c93589SGidon Studinski struct wmi_rx_status_ring_add_cmd {
811*96c93589SGidon Studinski 	struct wmi_edma_ring_cfg ring_cfg;
812*96c93589SGidon Studinski 	u8 irq_index;
813*96c93589SGidon Studinski 	/* wmi_rx_msg_type */
814*96c93589SGidon Studinski 	u8 rx_msg_type;
815*96c93589SGidon Studinski 	u8 reserved[2];
816*96c93589SGidon Studinski } __packed;
817*96c93589SGidon Studinski 
818*96c93589SGidon Studinski struct wmi_cfg_def_rx_offload_cmd {
819*96c93589SGidon Studinski 	__le16 max_msdu_size;
820*96c93589SGidon Studinski 	__le16 max_rx_pl_per_desc;
821*96c93589SGidon Studinski 	u8 decap_trans_type;
822*96c93589SGidon Studinski 	u8 l2_802_3_offload_ctrl;
823*96c93589SGidon Studinski 	u8 l2_nwifi_offload_ctrl;
824*96c93589SGidon Studinski 	u8 vlan_id;
825*96c93589SGidon Studinski 	u8 nwifi_ds_trans_type;
826*96c93589SGidon Studinski 	u8 l3_l4_ctrl;
827*96c93589SGidon Studinski 	u8 reserved[6];
828*96c93589SGidon Studinski } __packed;
829*96c93589SGidon Studinski 
830*96c93589SGidon Studinski struct wmi_tx_desc_ring_add_cmd {
831*96c93589SGidon Studinski 	struct wmi_edma_ring_cfg ring_cfg;
832*96c93589SGidon Studinski 	__le16 max_msdu_size;
833*96c93589SGidon Studinski 	/* Correlated status ring (0-63) */
834*96c93589SGidon Studinski 	u8 status_ring_id;
835*96c93589SGidon Studinski 	u8 cid;
836*96c93589SGidon Studinski 	u8 tid;
837*96c93589SGidon Studinski 	u8 encap_trans_type;
838*96c93589SGidon Studinski 	u8 mac_ctrl;
839*96c93589SGidon Studinski 	u8 to_resolution;
840*96c93589SGidon Studinski 	u8 agg_max_wsize;
841*96c93589SGidon Studinski 	u8 reserved[3];
842*96c93589SGidon Studinski 	struct wmi_vring_cfg_schd schd_params;
843*96c93589SGidon Studinski } __packed;
844*96c93589SGidon Studinski 
845*96c93589SGidon Studinski struct wmi_rx_desc_ring_add_cmd {
846*96c93589SGidon Studinski 	struct wmi_edma_ring_cfg ring_cfg;
847*96c93589SGidon Studinski 	u8 irq_index;
848*96c93589SGidon Studinski 	/* 0-63 status rings */
849*96c93589SGidon Studinski 	u8 status_ring_id;
850*96c93589SGidon Studinski 	u8 reserved[2];
851*96c93589SGidon Studinski 	__le64 sw_tail_host_addr;
852*96c93589SGidon Studinski } __packed;
853*96c93589SGidon Studinski 
854*96c93589SGidon Studinski struct wmi_bcast_desc_ring_add_cmd {
855*96c93589SGidon Studinski 	struct wmi_edma_ring_cfg ring_cfg;
856*96c93589SGidon Studinski 	__le16 max_msdu_size;
857*96c93589SGidon Studinski 	/* Correlated status ring (0-63) */
858*96c93589SGidon Studinski 	u8 status_ring_id;
859*96c93589SGidon Studinski 	u8 encap_trans_type;
860*96c93589SGidon Studinski 	u8 reserved[4];
861*96c93589SGidon Studinski } __packed;
862*96c93589SGidon Studinski 
863*96c93589SGidon Studinski /* WMI_RING_BA_EN_CMDID */
864*96c93589SGidon Studinski struct wmi_ring_ba_en_cmd {
865*96c93589SGidon Studinski 	u8 ring_id;
8662be7d22fSVladimir Kondratiev 	u8 agg_max_wsize;
8672be7d22fSVladimir Kondratiev 	__le16 ba_timeout;
868cbcf5866SVladimir Kondratiev 	u8 amsdu;
869b874ddecSLior David 	u8 reserved[3];
8702be7d22fSVladimir Kondratiev } __packed;
8712be7d22fSVladimir Kondratiev 
872*96c93589SGidon Studinski /* WMI_RING_BA_DIS_CMDID */
873*96c93589SGidon Studinski struct wmi_ring_ba_dis_cmd {
874*96c93589SGidon Studinski 	u8 ring_id;
8752be7d22fSVladimir Kondratiev 	u8 reserved;
8762be7d22fSVladimir Kondratiev 	__le16 reason;
8772be7d22fSVladimir Kondratiev } __packed;
8782be7d22fSVladimir Kondratiev 
879b874ddecSLior David /* WMI_NOTIFY_REQ_CMDID */
8802be7d22fSVladimir Kondratiev struct wmi_notify_req_cmd {
8812be7d22fSVladimir Kondratiev 	u8 cid;
882b8023177SVladimir Kondratiev 	u8 year;
883b8023177SVladimir Kondratiev 	u8 month;
884b8023177SVladimir Kondratiev 	u8 day;
8852be7d22fSVladimir Kondratiev 	__le32 interval_usec;
886b8023177SVladimir Kondratiev 	u8 hour;
887b8023177SVladimir Kondratiev 	u8 minute;
888b8023177SVladimir Kondratiev 	u8 second;
889b8023177SVladimir Kondratiev 	u8 miliseconds;
8902be7d22fSVladimir Kondratiev } __packed;
8912be7d22fSVladimir Kondratiev 
892b874ddecSLior David /* WMI_CFG_RX_CHAIN_CMDID */
8932be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_mode {
894b874ddecSLior David 	WMI_SNIFFER_OFF	= 0x00,
895b874ddecSLior David 	WMI_SNIFFER_ON	= 0x01,
8962be7d22fSVladimir Kondratiev };
8972be7d22fSVladimir Kondratiev 
898761f8e4dSLazar Alexei /* WMI_SILENT_RSSI_TABLE */
899761f8e4dSLazar Alexei enum wmi_silent_rssi_table {
900761f8e4dSLazar Alexei 	RF_TEMPERATURE_CALIB_DEFAULT_DB		= 0x00,
901761f8e4dSLazar Alexei 	RF_TEMPERATURE_CALIB_HIGH_POWER_DB	= 0x01,
902761f8e4dSLazar Alexei };
903761f8e4dSLazar Alexei 
904761f8e4dSLazar Alexei /* WMI_SILENT_RSSI_STATUS */
905761f8e4dSLazar Alexei enum wmi_silent_rssi_status {
906761f8e4dSLazar Alexei 	SILENT_RSSI_SUCCESS	= 0x00,
907761f8e4dSLazar Alexei 	SILENT_RSSI_FAILURE	= 0x01,
908761f8e4dSLazar Alexei };
909761f8e4dSLazar Alexei 
910761f8e4dSLazar Alexei /* WMI_SET_ACTIVE_SILENT_RSSI_TABLE_CMDID */
911761f8e4dSLazar Alexei struct wmi_set_active_silent_rssi_table_cmd {
912761f8e4dSLazar Alexei 	/* enum wmi_silent_rssi_table */
913761f8e4dSLazar Alexei 	__le32 table;
914761f8e4dSLazar Alexei } __packed;
915761f8e4dSLazar Alexei 
9162be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_info_mode {
917b874ddecSLior David 	WMI_SNIFFER_PHY_INFO_DISABLED	= 0x00,
918b874ddecSLior David 	WMI_SNIFFER_PHY_INFO_ENABLED	= 0x01,
9192be7d22fSVladimir Kondratiev };
9202be7d22fSVladimir Kondratiev 
9212be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_support {
922b874ddecSLior David 	WMI_SNIFFER_CP		= 0x00,
923b874ddecSLior David 	WMI_SNIFFER_DP		= 0x01,
924b874ddecSLior David 	WMI_SNIFFER_BOTH_PHYS	= 0x02,
9252be7d22fSVladimir Kondratiev };
9262be7d22fSVladimir Kondratiev 
927b874ddecSLior David /* wmi_sniffer_cfg */
9282be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg {
929b874ddecSLior David 	/* enum wmi_sniffer_cfg_mode */
930b874ddecSLior David 	__le32 mode;
931b874ddecSLior David 	/* enum wmi_sniffer_cfg_phy_info_mode */
932b874ddecSLior David 	__le32 phy_info_mode;
933b874ddecSLior David 	/* enum wmi_sniffer_cfg_phy_support */
934b874ddecSLior David 	__le32 phy_support;
9352be7d22fSVladimir Kondratiev 	u8 channel;
9362be7d22fSVladimir Kondratiev 	u8 reserved[3];
9372be7d22fSVladimir Kondratiev } __packed;
9382be7d22fSVladimir Kondratiev 
9392be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_action {
940b874ddecSLior David 	WMI_RX_CHAIN_ADD	= 0x00,
941b874ddecSLior David 	WMI_RX_CHAIN_DEL	= 0x01,
9422be7d22fSVladimir Kondratiev };
9432be7d22fSVladimir Kondratiev 
9442be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_decap_trans_type {
945b874ddecSLior David 	WMI_DECAP_TYPE_802_3		= 0x00,
946b874ddecSLior David 	WMI_DECAP_TYPE_NATIVE_WIFI	= 0x01,
947b874ddecSLior David 	WMI_DECAP_TYPE_NONE		= 0x02,
9482be7d22fSVladimir Kondratiev };
9492be7d22fSVladimir Kondratiev 
9502be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_nwifi_ds_trans_type {
951b874ddecSLior David 	WMI_NWIFI_RX_TRANS_MODE_NO		= 0x00,
952b874ddecSLior David 	WMI_NWIFI_RX_TRANS_MODE_PBSS2AP		= 0x01,
953b874ddecSLior David 	WMI_NWIFI_RX_TRANS_MODE_PBSS2STA	= 0x02,
9542be7d22fSVladimir Kondratiev };
9552be7d22fSVladimir Kondratiev 
956b8023177SVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_reorder_type {
957b874ddecSLior David 	WMI_RX_HW_REORDER	= 0x00,
958b874ddecSLior David 	WMI_RX_SW_REORDER	= 0x01,
959b8023177SVladimir Kondratiev };
960b8023177SVladimir Kondratiev 
9612be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_POS	(0)
9622be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_LEN	(1)
9632be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_MSK	(0x1)
964c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_POS		(1)
965c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_LEN		(1)
966c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_MSK		(0x2)
9672be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_POS		(0)
9682be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_LEN		(1)
9692be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_MSK		(0x1)
9702be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_POS		(1)
9712be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_LEN		(1)
9722be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_MSK		(0x2)
9732be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_POS			(0)
9742be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_LEN			(1)
9752be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_MSK			(0x1)
9762be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_POS		(1)
9772be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_LEN		(1)
9782be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_MSK		(0x2)
9792be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_POS		(0)
9802be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_LEN		(1)
9812be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_MSK		(0x1)
9822be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_POS			(1)
9832be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_LEN			(1)
9842be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_MSK			(0x2)
9852be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_POS		(2)
9862be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_LEN		(1)
9872be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_MSK		(0x4)
9882be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_POS		(3)
9892be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_LEN		(1)
9902be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_MSK		(0x8)
9912be7d22fSVladimir Kondratiev 
992b874ddecSLior David /* WMI_CFG_RX_CHAIN_CMDID */
993b874ddecSLior David struct wmi_cfg_rx_chain_cmd {
994b874ddecSLior David 	__le32 action;
995b874ddecSLior David 	struct wmi_sw_ring_cfg rx_sw_ring;
996b874ddecSLior David 	u8 mid;
997b874ddecSLior David 	u8 decap_trans_type;
998b874ddecSLior David 	u8 l2_802_3_offload_ctrl;
999b874ddecSLior David 	u8 l2_nwifi_offload_ctrl;
1000b874ddecSLior David 	u8 vlan_id;
1001b874ddecSLior David 	u8 nwifi_ds_trans_type;
1002b874ddecSLior David 	u8 l3_l4_ctrl;
1003b874ddecSLior David 	u8 ring_ctrl;
10042be7d22fSVladimir Kondratiev 	__le16 prefetch_thrsh;
10052be7d22fSVladimir Kondratiev 	__le16 wb_thrsh;
10062be7d22fSVladimir Kondratiev 	__le32 itr_value;
10072be7d22fSVladimir Kondratiev 	__le16 host_thrsh;
1008b8023177SVladimir Kondratiev 	u8 reorder_type;
1009b8023177SVladimir Kondratiev 	u8 reserved;
10102be7d22fSVladimir Kondratiev 	struct wmi_sniffer_cfg sniffer_cfg;
1011b874ddecSLior David 	__le16 max_rx_pl_per_desc;
10122be7d22fSVladimir Kondratiev } __packed;
10132be7d22fSVladimir Kondratiev 
1014b874ddecSLior David /* WMI_RCP_ADDBA_RESP_CMDID */
10152be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_cmd {
10168a4fa214SAhmad Masri 	/* Used for cid less than 8. For higher cid set
10178a4fa214SAhmad Masri 	 * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead
10188a4fa214SAhmad Masri 	 */
10192be7d22fSVladimir Kondratiev 	u8 cidxtid;
10202be7d22fSVladimir Kondratiev 	u8 dialog_token;
10212be7d22fSVladimir Kondratiev 	__le16 status_code;
1022b874ddecSLior David 	/* ieee80211_ba_parameterset field to send */
1023b874ddecSLior David 	__le16 ba_param_set;
10242be7d22fSVladimir Kondratiev 	__le16 ba_timeout;
10258a4fa214SAhmad Masri 	/* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
10268a4fa214SAhmad Masri 	u8 cid;
10278a4fa214SAhmad Masri 	/* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
10288a4fa214SAhmad Masri 	u8 tid;
10298a4fa214SAhmad Masri 	u8 reserved[2];
10302be7d22fSVladimir Kondratiev } __packed;
10312be7d22fSVladimir Kondratiev 
1032*96c93589SGidon Studinski /* WMI_RCP_ADDBA_RESP_EDMA_CMDID */
1033*96c93589SGidon Studinski struct wmi_rcp_addba_resp_edma_cmd {
1034*96c93589SGidon Studinski 	u8 cid;
1035*96c93589SGidon Studinski 	u8 tid;
1036*96c93589SGidon Studinski 	u8 dialog_token;
1037*96c93589SGidon Studinski 	u8 reserved;
1038*96c93589SGidon Studinski 	__le16 status_code;
1039*96c93589SGidon Studinski 	/* ieee80211_ba_parameterset field to send */
1040*96c93589SGidon Studinski 	__le16 ba_param_set;
1041*96c93589SGidon Studinski 	__le16 ba_timeout;
1042*96c93589SGidon Studinski 	u8 status_ring_id;
1043*96c93589SGidon Studinski 	/* wmi_cfg_rx_chain_cmd_reorder_type */
1044*96c93589SGidon Studinski 	u8 reorder_type;
1045*96c93589SGidon Studinski } __packed;
1046*96c93589SGidon Studinski 
1047b874ddecSLior David /* WMI_RCP_DELBA_CMDID */
10482be7d22fSVladimir Kondratiev struct wmi_rcp_delba_cmd {
10498a4fa214SAhmad Masri 	/* Used for cid less than 8. For higher cid set
10508a4fa214SAhmad Masri 	 * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead
10518a4fa214SAhmad Masri 	 */
10522be7d22fSVladimir Kondratiev 	u8 cidxtid;
10532be7d22fSVladimir Kondratiev 	u8 reserved;
10542be7d22fSVladimir Kondratiev 	__le16 reason;
10558a4fa214SAhmad Masri 	/* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
10568a4fa214SAhmad Masri 	u8 cid;
10578a4fa214SAhmad Masri 	/* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
10588a4fa214SAhmad Masri 	u8 tid;
10598a4fa214SAhmad Masri 	u8 reserved2[2];
10602be7d22fSVladimir Kondratiev } __packed;
10612be7d22fSVladimir Kondratiev 
1062b874ddecSLior David /* WMI_RCP_ADDBA_REQ_CMDID */
10632be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_cmd {
10648a4fa214SAhmad Masri 	/* Used for cid less than 8. For higher cid set
10658a4fa214SAhmad Masri 	 * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead
10668a4fa214SAhmad Masri 	 */
10672be7d22fSVladimir Kondratiev 	u8 cidxtid;
10682be7d22fSVladimir Kondratiev 	u8 dialog_token;
10692be7d22fSVladimir Kondratiev 	/* ieee80211_ba_parameterset field as it received */
10702be7d22fSVladimir Kondratiev 	__le16 ba_param_set;
10712be7d22fSVladimir Kondratiev 	__le16 ba_timeout;
10722be7d22fSVladimir Kondratiev 	/* ieee80211_ba_seqstrl field as it received */
10732be7d22fSVladimir Kondratiev 	__le16 ba_seq_ctrl;
10748a4fa214SAhmad Masri 	/* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
10758a4fa214SAhmad Masri 	u8 cid;
10768a4fa214SAhmad Masri 	/* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
10778a4fa214SAhmad Masri 	u8 tid;
10788a4fa214SAhmad Masri 	u8 reserved[2];
10792be7d22fSVladimir Kondratiev } __packed;
10802be7d22fSVladimir Kondratiev 
1081b874ddecSLior David /* WMI_SET_MAC_ADDRESS_CMDID */
10822be7d22fSVladimir Kondratiev struct wmi_set_mac_address_cmd {
10832be7d22fSVladimir Kondratiev 	u8 mac[WMI_MAC_LEN];
10842be7d22fSVladimir Kondratiev 	u8 reserved[2];
10852be7d22fSVladimir Kondratiev } __packed;
10862be7d22fSVladimir Kondratiev 
1087b874ddecSLior David /* WMI_ECHO_CMDID
10882be7d22fSVladimir Kondratiev  * Check FW is alive
10892be7d22fSVladimir Kondratiev  * Returned event: WMI_ECHO_RSP_EVENTID
10902be7d22fSVladimir Kondratiev  */
10912be7d22fSVladimir Kondratiev struct wmi_echo_cmd {
10922be7d22fSVladimir Kondratiev 	__le32 value;
10932be7d22fSVladimir Kondratiev } __packed;
10942be7d22fSVladimir Kondratiev 
10958a4fa214SAhmad Masri /* WMI_DEEP_ECHO_CMDID
10968a4fa214SAhmad Masri  * Check FW and ucode are alive
10978a4fa214SAhmad Masri  * Returned event: WMI_ECHO_RSP_EVENTID
10988a4fa214SAhmad Masri  */
10998a4fa214SAhmad Masri struct wmi_deep_echo_cmd {
11008a4fa214SAhmad Masri 	__le32 value;
11018a4fa214SAhmad Masri } __packed;
11028a4fa214SAhmad Masri 
1103761f8e4dSLazar Alexei /* WMI_RF_PWR_ON_DELAY_CMDID
1104761f8e4dSLazar Alexei  * set FW time parameters used through RF resetting
1105761f8e4dSLazar Alexei  *  RF reset consists of bringing its power down for a period of time, then
1106761f8e4dSLazar Alexei  * bringing the power up
1107761f8e4dSLazar Alexei  * Returned event: WMI_RF_PWR_ON_DELAY_RSP_EVENTID
1108761f8e4dSLazar Alexei  */
1109761f8e4dSLazar Alexei struct wmi_rf_pwr_on_delay_cmd {
1110761f8e4dSLazar Alexei 	/* time in usec the FW waits after bringing the RF PWR down,
1111761f8e4dSLazar Alexei 	 * set 0 for default
1112761f8e4dSLazar Alexei 	 */
1113761f8e4dSLazar Alexei 	__le16 down_delay_usec;
1114761f8e4dSLazar Alexei 	/* time in usec the FW waits after bringing the RF PWR up,
1115761f8e4dSLazar Alexei 	 * set 0 for default
1116761f8e4dSLazar Alexei 	 */
1117761f8e4dSLazar Alexei 	__le16 up_delay_usec;
1118b874ddecSLior David } __packed;
1119b874ddecSLior David 
11208a4fa214SAhmad Masri /* WMI_SET_HIGH_POWER_TABLE_PARAMS_CMDID
1121761f8e4dSLazar Alexei  * This API controls the Tx and Rx gain over temperature.
1122761f8e4dSLazar Alexei  * It controls the Tx D-type, Rx D-type and Rx E-type amplifiers.
1123761f8e4dSLazar Alexei  * It also controls the Tx gain index, by controlling the Rx to Tx gain index
1124761f8e4dSLazar Alexei  * offset.
1125761f8e4dSLazar Alexei  * The control is divided by 3 temperature values to 4 temperature ranges.
1126761f8e4dSLazar Alexei  * Each parameter uses its own temperature values.
1127761f8e4dSLazar Alexei  * Returned event: WMI_SET_HIGH_POWER_TABLE_PARAMS_EVENTID
1128761f8e4dSLazar Alexei  */
1129761f8e4dSLazar Alexei struct wmi_set_high_power_table_params_cmd {
1130761f8e4dSLazar Alexei 	/* Temperature range for Tx D-type parameters */
1131761f8e4dSLazar Alexei 	u8 tx_dtype_temp[WMI_RF_DTYPE_LENGTH];
1132761f8e4dSLazar Alexei 	u8 reserved0;
1133761f8e4dSLazar Alexei 	/* Tx D-type values to be used for each temperature range */
11348a4fa214SAhmad Masri 	__le32 tx_dtype_conf[WMI_RF_DTYPE_CONF_LENGTH];
11358a4fa214SAhmad Masri 	/* Temperature range for Tx E-type parameters */
11368a4fa214SAhmad Masri 	u8 tx_etype_temp[WMI_RF_ETYPE_LENGTH];
11378a4fa214SAhmad Masri 	u8 reserved1;
11388a4fa214SAhmad Masri 	/* Tx E-type values to be used for each temperature range.
11398a4fa214SAhmad Masri 	 * The last 4 values of any range are the first 4 values of the next
11408a4fa214SAhmad Masri 	 * range and so on
11418a4fa214SAhmad Masri 	 */
11428a4fa214SAhmad Masri 	__le32 tx_etype_conf[WMI_RF_ETYPE_CONF_LENGTH];
1143761f8e4dSLazar Alexei 	/* Temperature range for Rx D-type parameters */
1144761f8e4dSLazar Alexei 	u8 rx_dtype_temp[WMI_RF_DTYPE_LENGTH];
11458a4fa214SAhmad Masri 	u8 reserved2;
1146761f8e4dSLazar Alexei 	/* Rx D-type values to be used for each temperature range */
11478a4fa214SAhmad Masri 	__le32 rx_dtype_conf[WMI_RF_DTYPE_CONF_LENGTH];
1148761f8e4dSLazar Alexei 	/* Temperature range for Rx E-type parameters */
1149761f8e4dSLazar Alexei 	u8 rx_etype_temp[WMI_RF_ETYPE_LENGTH];
11508a4fa214SAhmad Masri 	u8 reserved3;
1151761f8e4dSLazar Alexei 	/* Rx E-type values to be used for each temperature range.
1152761f8e4dSLazar Alexei 	 * The last 4 values of any range are the first 4 values of the next
1153761f8e4dSLazar Alexei 	 * range and so on
1154761f8e4dSLazar Alexei 	 */
11558a4fa214SAhmad Masri 	__le32 rx_etype_conf[WMI_RF_ETYPE_CONF_LENGTH];
1156761f8e4dSLazar Alexei 	/* Temperature range for rx_2_tx_offs parameters */
1157761f8e4dSLazar Alexei 	u8 rx_2_tx_temp[WMI_RF_RX2TX_LENGTH];
11588a4fa214SAhmad Masri 	u8 reserved4;
1159761f8e4dSLazar Alexei 	/* Rx to Tx gain index offset */
11608a4fa214SAhmad Masri 	s8 rx_2_tx_offs[WMI_RF_RX2TX_CONF_LENGTH];
11618a4fa214SAhmad Masri } __packed;
11628a4fa214SAhmad Masri 
11638a4fa214SAhmad Masri /* WMI_FIXED_SCHEDULING_UL_CONFIG_CMDID
11648a4fa214SAhmad Masri  * This API sets rd parameter per mcs.
11658a4fa214SAhmad Masri  * Relevant only in Fixed Scheduling mode.
11668a4fa214SAhmad Masri  * Returned event: WMI_FIXED_SCHEDULING_UL_CONFIG_EVENTID
11678a4fa214SAhmad Masri  */
11688a4fa214SAhmad Masri struct wmi_fixed_scheduling_ul_config_cmd {
11698a4fa214SAhmad Masri 	/* Use mcs -1 to set for every mcs */
11708a4fa214SAhmad Masri 	s8 mcs;
11718a4fa214SAhmad Masri 	/* Number of frames with rd bit set in a single virtual slot */
11728a4fa214SAhmad Masri 	u8 rd_count_per_slot;
11738a4fa214SAhmad Masri 	u8 reserved[2];
1174761f8e4dSLazar Alexei } __packed;
1175761f8e4dSLazar Alexei 
1176761f8e4dSLazar Alexei /* CMD: WMI_RF_XPM_READ_CMDID */
1177761f8e4dSLazar Alexei struct wmi_rf_xpm_read_cmd {
1178761f8e4dSLazar Alexei 	u8 rf_id;
1179761f8e4dSLazar Alexei 	u8 reserved[3];
1180761f8e4dSLazar Alexei 	/* XPM bit start address in range [0,8191]bits - rounded by FW to
1181761f8e4dSLazar Alexei 	 * multiple of 8bits
1182761f8e4dSLazar Alexei 	 */
1183761f8e4dSLazar Alexei 	__le32 xpm_bit_address;
1184761f8e4dSLazar Alexei 	__le32 num_bytes;
1185761f8e4dSLazar Alexei } __packed;
1186761f8e4dSLazar Alexei 
1187761f8e4dSLazar Alexei /* CMD: WMI_RF_XPM_WRITE_CMDID */
1188761f8e4dSLazar Alexei struct wmi_rf_xpm_write_cmd {
1189761f8e4dSLazar Alexei 	u8 rf_id;
1190761f8e4dSLazar Alexei 	u8 reserved0[3];
1191761f8e4dSLazar Alexei 	/* XPM bit start address in range [0,8191]bits - rounded by FW to
1192761f8e4dSLazar Alexei 	 * multiple of 8bits
1193761f8e4dSLazar Alexei 	 */
1194761f8e4dSLazar Alexei 	__le32 xpm_bit_address;
1195761f8e4dSLazar Alexei 	__le32 num_bytes;
1196761f8e4dSLazar Alexei 	/* boolean flag indicating whether FW should verify the write
1197761f8e4dSLazar Alexei 	 * operation
1198761f8e4dSLazar Alexei 	 */
1199761f8e4dSLazar Alexei 	u8 verify;
1200761f8e4dSLazar Alexei 	u8 reserved1[3];
1201761f8e4dSLazar Alexei 	/* actual size=num_bytes */
1202761f8e4dSLazar Alexei 	u8 data_bytes[0];
1203b874ddecSLior David } __packed;
1204b874ddecSLior David 
1205b874ddecSLior David /* WMI_TEMP_SENSE_CMDID
1206b8023177SVladimir Kondratiev  *
1207b8023177SVladimir Kondratiev  * Measure MAC and radio temperatures
1208b874ddecSLior David  *
1209b874ddecSLior David  * Possible modes for temperature measurement
1210b8023177SVladimir Kondratiev  */
12118c679675SVladimir Kondratiev enum wmi_temperature_measure_mode {
1212b874ddecSLior David 	TEMPERATURE_USE_OLD_VALUE	= 0x01,
1213b874ddecSLior David 	TEMPERATURE_MEASURE_NOW		= 0x02,
12148c679675SVladimir Kondratiev };
12158c679675SVladimir Kondratiev 
1216b874ddecSLior David /* WMI_TEMP_SENSE_CMDID */
1217b8023177SVladimir Kondratiev struct wmi_temp_sense_cmd {
12188c679675SVladimir Kondratiev 	__le32 measure_baseband_en;
12198c679675SVladimir Kondratiev 	__le32 measure_rf_en;
12208c679675SVladimir Kondratiev 	__le32 measure_mode;
1221b8023177SVladimir Kondratiev } __packed;
1222b8023177SVladimir Kondratiev 
1223b874ddecSLior David enum wmi_pmc_op {
1224b874ddecSLior David 	WMI_PMC_ALLOCATE	= 0x00,
1225b874ddecSLior David 	WMI_PMC_RELEASE		= 0x01,
1226dc16427bSVladimir Kondratiev };
1227dc16427bSVladimir Kondratiev 
1228b874ddecSLior David /* WMI_PMC_CMDID */
1229dc16427bSVladimir Kondratiev struct wmi_pmc_cmd {
1230b874ddecSLior David 	/* enum wmi_pmc_cmd_op_type */
1231b874ddecSLior David 	u8 op;
1232dc16427bSVladimir Kondratiev 	u8 reserved;
1233dc16427bSVladimir Kondratiev 	__le16 ring_size;
1234dc16427bSVladimir Kondratiev 	__le64 mem_base;
1235dc16427bSVladimir Kondratiev } __packed;
1236dc16427bSVladimir Kondratiev 
123708989f96SLior David enum wmi_aoa_meas_type {
123808989f96SLior David 	WMI_AOA_PHASE_MEAS	= 0x00,
123908989f96SLior David 	WMI_AOA_PHASE_AMP_MEAS	= 0x01,
124008989f96SLior David };
124108989f96SLior David 
124208989f96SLior David /* WMI_AOA_MEAS_CMDID */
124308989f96SLior David struct wmi_aoa_meas_cmd {
124408989f96SLior David 	u8 mac_addr[WMI_MAC_LEN];
124508989f96SLior David 	/* channels IDs:
124608989f96SLior David 	 * 0 - 58320 MHz
124708989f96SLior David 	 * 1 - 60480 MHz
124808989f96SLior David 	 * 2 - 62640 MHz
124908989f96SLior David 	 */
125008989f96SLior David 	u8 channel;
125108989f96SLior David 	/* enum wmi_aoa_meas_type */
125208989f96SLior David 	u8 aoa_meas_type;
125308989f96SLior David 	__le32 meas_rf_mask;
125408989f96SLior David } __packed;
125508989f96SLior David 
1256cbf795c1SLior David /* WMI_SET_MGMT_RETRY_LIMIT_CMDID */
1257cbf795c1SLior David struct wmi_set_mgmt_retry_limit_cmd {
1258cbf795c1SLior David 	/* MAC retransmit limit for mgmt frames */
1259cbf795c1SLior David 	u8 mgmt_retry_limit;
1260cbf795c1SLior David 	/* alignment to 32b */
1261cbf795c1SLior David 	u8 reserved[3];
1262cbf795c1SLior David } __packed;
1263cbf795c1SLior David 
126490ffabb0SDedy Lansky /* Zones: HIGH, MAX, CRITICAL */
126590ffabb0SDedy Lansky #define WMI_NUM_OF_TT_ZONES	(3)
126690ffabb0SDedy Lansky 
126790ffabb0SDedy Lansky struct wmi_tt_zone_limits {
126890ffabb0SDedy Lansky 	/* Above this temperature this zone is active */
126990ffabb0SDedy Lansky 	u8 temperature_high;
127090ffabb0SDedy Lansky 	/* Below this temperature the adjacent lower zone is active */
127190ffabb0SDedy Lansky 	u8 temperature_low;
127290ffabb0SDedy Lansky 	u8 reserved[2];
127390ffabb0SDedy Lansky } __packed;
127490ffabb0SDedy Lansky 
127590ffabb0SDedy Lansky /* Struct used for both configuration and status commands of thermal
127690ffabb0SDedy Lansky  * throttling
127790ffabb0SDedy Lansky  */
127890ffabb0SDedy Lansky struct wmi_tt_data {
127990ffabb0SDedy Lansky 	/* Enable/Disable TT algorithm for baseband */
128090ffabb0SDedy Lansky 	u8 bb_enabled;
128190ffabb0SDedy Lansky 	u8 reserved0[3];
128290ffabb0SDedy Lansky 	/* Define zones for baseband */
128390ffabb0SDedy Lansky 	struct wmi_tt_zone_limits bb_zones[WMI_NUM_OF_TT_ZONES];
128490ffabb0SDedy Lansky 	/* Enable/Disable TT algorithm for radio */
128590ffabb0SDedy Lansky 	u8 rf_enabled;
128690ffabb0SDedy Lansky 	u8 reserved1[3];
128790ffabb0SDedy Lansky 	/* Define zones for all radio chips */
128890ffabb0SDedy Lansky 	struct wmi_tt_zone_limits rf_zones[WMI_NUM_OF_TT_ZONES];
128990ffabb0SDedy Lansky } __packed;
129090ffabb0SDedy Lansky 
129190ffabb0SDedy Lansky /* WMI_SET_THERMAL_THROTTLING_CFG_CMDID */
129290ffabb0SDedy Lansky struct wmi_set_thermal_throttling_cfg_cmd {
129390ffabb0SDedy Lansky 	/* Command data */
129490ffabb0SDedy Lansky 	struct wmi_tt_data tt_data;
129590ffabb0SDedy Lansky } __packed;
129690ffabb0SDedy Lansky 
1297849a564bSDedy Lansky /* WMI_NEW_STA_CMDID */
1298849a564bSDedy Lansky struct wmi_new_sta_cmd {
1299849a564bSDedy Lansky 	u8 dst_mac[WMI_MAC_LEN];
1300849a564bSDedy Lansky 	u8 aid;
1301849a564bSDedy Lansky } __packed;
1302849a564bSDedy Lansky 
1303849a564bSDedy Lansky /* WMI_DEL_STA_CMDID */
1304849a564bSDedy Lansky struct wmi_del_sta_cmd {
1305849a564bSDedy Lansky 	u8 dst_mac[WMI_MAC_LEN];
1306849a564bSDedy Lansky 	__le16 disconnect_reason;
1307849a564bSDedy Lansky } __packed;
1308849a564bSDedy Lansky 
130908989f96SLior David enum wmi_tof_burst_duration {
131008989f96SLior David 	WMI_TOF_BURST_DURATION_250_USEC		= 2,
131108989f96SLior David 	WMI_TOF_BURST_DURATION_500_USEC		= 3,
131208989f96SLior David 	WMI_TOF_BURST_DURATION_1_MSEC		= 4,
131308989f96SLior David 	WMI_TOF_BURST_DURATION_2_MSEC		= 5,
131408989f96SLior David 	WMI_TOF_BURST_DURATION_4_MSEC		= 6,
131508989f96SLior David 	WMI_TOF_BURST_DURATION_8_MSEC		= 7,
131608989f96SLior David 	WMI_TOF_BURST_DURATION_16_MSEC		= 8,
131708989f96SLior David 	WMI_TOF_BURST_DURATION_32_MSEC		= 9,
131808989f96SLior David 	WMI_TOF_BURST_DURATION_64_MSEC		= 10,
131908989f96SLior David 	WMI_TOF_BURST_DURATION_128_MSEC		= 11,
132008989f96SLior David 	WMI_TOF_BURST_DURATION_NO_PREFERENCES	= 15,
132108989f96SLior David };
132208989f96SLior David 
132308989f96SLior David enum wmi_tof_session_start_flags {
132408989f96SLior David 	WMI_TOF_SESSION_START_FLAG_SECURED	= 0x1,
132508989f96SLior David 	WMI_TOF_SESSION_START_FLAG_ASAP		= 0x2,
132608989f96SLior David 	WMI_TOF_SESSION_START_FLAG_LCI_REQ	= 0x4,
132708989f96SLior David 	WMI_TOF_SESSION_START_FLAG_LCR_REQ	= 0x8,
132808989f96SLior David };
132908989f96SLior David 
133008989f96SLior David /* WMI_TOF_SESSION_START_CMDID */
133108989f96SLior David struct wmi_ftm_dest_info {
133208989f96SLior David 	u8 channel;
133308989f96SLior David 	/* wmi_tof_session_start_flags_e */
133408989f96SLior David 	u8 flags;
133508989f96SLior David 	u8 initial_token;
133608989f96SLior David 	u8 num_of_ftm_per_burst;
133708989f96SLior David 	u8 num_of_bursts_exp;
133808989f96SLior David 	/* wmi_tof_burst_duration_e */
133908989f96SLior David 	u8 burst_duration;
134008989f96SLior David 	/* Burst Period indicate interval between two consecutive burst
134108989f96SLior David 	 * instances, in units of 100 ms
134208989f96SLior David 	 */
134308989f96SLior David 	__le16 burst_period;
134408989f96SLior David 	u8 dst_mac[WMI_MAC_LEN];
1345761f8e4dSLazar Alexei 	u8 reserved;
1346761f8e4dSLazar Alexei 	u8 num_burst_per_aoa_meas;
134708989f96SLior David } __packed;
134808989f96SLior David 
134908989f96SLior David /* WMI_TOF_SESSION_START_CMDID */
135008989f96SLior David struct wmi_tof_session_start_cmd {
135108989f96SLior David 	__le32 session_id;
1352761f8e4dSLazar Alexei 	u8 reserved1;
135308989f96SLior David 	u8 aoa_type;
135408989f96SLior David 	__le16 num_of_dest;
135508989f96SLior David 	u8 reserved[4];
135608989f96SLior David 	struct wmi_ftm_dest_info ftm_dest_info[0];
135708989f96SLior David } __packed;
135808989f96SLior David 
1359761f8e4dSLazar Alexei /* WMI_TOF_CFG_RESPONDER_CMDID */
1360761f8e4dSLazar Alexei struct wmi_tof_cfg_responder_cmd {
1361761f8e4dSLazar Alexei 	u8 enable;
1362761f8e4dSLazar Alexei 	u8 reserved[3];
1363761f8e4dSLazar Alexei } __packed;
1364761f8e4dSLazar Alexei 
136508989f96SLior David enum wmi_tof_channel_info_report_type {
136608989f96SLior David 	WMI_TOF_CHANNEL_INFO_TYPE_CIR			= 0x1,
136708989f96SLior David 	WMI_TOF_CHANNEL_INFO_TYPE_RSSI			= 0x2,
136808989f96SLior David 	WMI_TOF_CHANNEL_INFO_TYPE_SNR			= 0x4,
136908989f96SLior David 	WMI_TOF_CHANNEL_INFO_TYPE_DEBUG_DATA		= 0x8,
137008989f96SLior David 	WMI_TOF_CHANNEL_INFO_TYPE_VENDOR_SPECIFIC	= 0x10,
137108989f96SLior David };
137208989f96SLior David 
137308989f96SLior David /* WMI_TOF_CHANNEL_INFO_CMDID */
137408989f96SLior David struct wmi_tof_channel_info_cmd {
137508989f96SLior David 	/* wmi_tof_channel_info_report_type_e */
137608989f96SLior David 	__le32 channel_info_report_request;
137708989f96SLior David } __packed;
137808989f96SLior David 
13798ae5d62cSLior David /* WMI_TOF_SET_TX_RX_OFFSET_CMDID */
13808ae5d62cSLior David struct wmi_tof_set_tx_rx_offset_cmd {
13818ae5d62cSLior David 	/* TX delay offset */
13828ae5d62cSLior David 	__le32 tx_offset;
13838ae5d62cSLior David 	/* RX delay offset */
13848ae5d62cSLior David 	__le32 rx_offset;
1385761f8e4dSLazar Alexei 	/* Mask to define which RFs to configure. 0 means all RFs */
1386761f8e4dSLazar Alexei 	__le32 rf_mask;
1387761f8e4dSLazar Alexei 	/* Offset to strongest tap of CIR */
1388761f8e4dSLazar Alexei 	__le32 precursor;
1389761f8e4dSLazar Alexei } __packed;
1390761f8e4dSLazar Alexei 
1391761f8e4dSLazar Alexei /* WMI_TOF_GET_TX_RX_OFFSET_CMDID */
1392761f8e4dSLazar Alexei struct wmi_tof_get_tx_rx_offset_cmd {
1393761f8e4dSLazar Alexei 	/* rf index to read offsets from */
1394761f8e4dSLazar Alexei 	u8 rf_index;
1395761f8e4dSLazar Alexei 	u8 reserved[3];
1396761f8e4dSLazar Alexei } __packed;
1397761f8e4dSLazar Alexei 
1398761f8e4dSLazar Alexei /* WMI_FIXED_SCHEDULING_CONFIG_CMDID */
1399761f8e4dSLazar Alexei struct wmi_map_mcs_to_schd_params {
1400761f8e4dSLazar Alexei 	u8 mcs;
1401761f8e4dSLazar Alexei 	/* time in usec from start slot to start tx flow - default 15 */
1402761f8e4dSLazar Alexei 	u8 time_in_usec_before_initiate_tx;
1403761f8e4dSLazar Alexei 	/* RD enable - if yes consider RD according to STA mcs */
1404761f8e4dSLazar Alexei 	u8 rd_enabled;
1405761f8e4dSLazar Alexei 	u8 reserved;
1406761f8e4dSLazar Alexei 	/* time in usec from start slot to stop vring */
1407761f8e4dSLazar Alexei 	__le16 time_in_usec_to_stop_vring;
1408761f8e4dSLazar Alexei 	/* timeout to force flush from start of slot */
1409761f8e4dSLazar Alexei 	__le16 flush_to_in_usec;
1410761f8e4dSLazar Alexei 	/* per mcs the mac buffer limit size in bytes */
1411761f8e4dSLazar Alexei 	__le32 mac_buff_size_in_bytes;
1412761f8e4dSLazar Alexei } __packed;
1413761f8e4dSLazar Alexei 
1414761f8e4dSLazar Alexei /* WMI_FIXED_SCHEDULING_CONFIG_COMPLETE_EVENTID */
1415761f8e4dSLazar Alexei struct wmi_fixed_scheduling_config_complete_event {
1416761f8e4dSLazar Alexei 	/* wmi_fw_status */
1417761f8e4dSLazar Alexei 	u8 status;
1418761f8e4dSLazar Alexei 	u8 reserved[3];
1419761f8e4dSLazar Alexei } __packed;
1420761f8e4dSLazar Alexei 
1421761f8e4dSLazar Alexei #define WMI_NUM_MCS	(13)
1422761f8e4dSLazar Alexei 
1423761f8e4dSLazar Alexei /* WMI_FIXED_SCHEDULING_CONFIG_CMDID */
1424761f8e4dSLazar Alexei struct wmi_fixed_scheduling_config_cmd {
1425761f8e4dSLazar Alexei 	/* defaults in the SAS table */
1426761f8e4dSLazar Alexei 	struct wmi_map_mcs_to_schd_params mcs_to_schd_params_map[WMI_NUM_MCS];
1427761f8e4dSLazar Alexei 	/* default 150 uSec */
1428761f8e4dSLazar Alexei 	__le16 max_sta_rd_ppdu_duration_in_usec;
1429761f8e4dSLazar Alexei 	/* default 300 uSec */
1430761f8e4dSLazar Alexei 	__le16 max_sta_grant_ppdu_duration_in_usec;
1431761f8e4dSLazar Alexei 	/* default 1000 uSec */
1432761f8e4dSLazar Alexei 	__le16 assoc_slot_duration_in_usec;
1433761f8e4dSLazar Alexei 	/* default 360 uSec */
1434761f8e4dSLazar Alexei 	__le16 virtual_slot_duration_in_usec;
1435761f8e4dSLazar Alexei 	/* each this field value slots start with grant frame to the station
1436761f8e4dSLazar Alexei 	 * - default 2
1437761f8e4dSLazar Alexei 	 */
1438761f8e4dSLazar Alexei 	u8 number_of_ap_slots_for_initiate_grant;
1439761f8e4dSLazar Alexei 	u8 reserved[3];
1440761f8e4dSLazar Alexei } __packed;
1441761f8e4dSLazar Alexei 
1442761f8e4dSLazar Alexei /* WMI_ENABLE_FIXED_SCHEDULING_CMDID */
1443761f8e4dSLazar Alexei struct wmi_enable_fixed_scheduling_cmd {
1444761f8e4dSLazar Alexei 	__le32 reserved;
1445761f8e4dSLazar Alexei } __packed;
1446761f8e4dSLazar Alexei 
1447761f8e4dSLazar Alexei /* WMI_ENABLE_FIXED_SCHEDULING_COMPLETE_EVENTID */
1448761f8e4dSLazar Alexei struct wmi_enable_fixed_scheduling_complete_event {
1449761f8e4dSLazar Alexei 	/* wmi_fw_status */
1450761f8e4dSLazar Alexei 	u8 status;
1451761f8e4dSLazar Alexei 	u8 reserved[3];
1452761f8e4dSLazar Alexei } __packed;
1453761f8e4dSLazar Alexei 
1454761f8e4dSLazar Alexei /* WMI_SET_MULTI_DIRECTED_OMNIS_CONFIG_CMDID */
1455761f8e4dSLazar Alexei struct wmi_set_multi_directed_omnis_config_cmd {
1456761f8e4dSLazar Alexei 	/* number of directed omnis at destination AP */
1457761f8e4dSLazar Alexei 	u8 dest_ap_num_directed_omnis;
1458761f8e4dSLazar Alexei 	u8 reserved[3];
1459761f8e4dSLazar Alexei } __packed;
1460761f8e4dSLazar Alexei 
1461761f8e4dSLazar Alexei /* WMI_SET_MULTI_DIRECTED_OMNIS_CONFIG_EVENTID */
1462761f8e4dSLazar Alexei struct wmi_set_multi_directed_omnis_config_event {
1463761f8e4dSLazar Alexei 	/* wmi_fw_status */
1464761f8e4dSLazar Alexei 	u8 status;
1465761f8e4dSLazar Alexei 	u8 reserved[3];
1466761f8e4dSLazar Alexei } __packed;
1467761f8e4dSLazar Alexei 
1468761f8e4dSLazar Alexei /* WMI_SET_LONG_RANGE_CONFIG_CMDID */
1469761f8e4dSLazar Alexei struct wmi_set_long_range_config_cmd {
1470761f8e4dSLazar Alexei 	__le32 reserved;
1471761f8e4dSLazar Alexei } __packed;
1472761f8e4dSLazar Alexei 
1473761f8e4dSLazar Alexei /* WMI_SET_LONG_RANGE_CONFIG_COMPLETE_EVENTID */
1474761f8e4dSLazar Alexei struct wmi_set_long_range_config_complete_event {
1475761f8e4dSLazar Alexei 	/* wmi_fw_status */
1476761f8e4dSLazar Alexei 	u8 status;
1477761f8e4dSLazar Alexei 	u8 reserved[3];
14788ae5d62cSLior David } __packed;
14798ae5d62cSLior David 
14808a4fa214SAhmad Masri /* payload max size is 236 bytes: max event buffer size (256) - WMI headers
14818a4fa214SAhmad Masri  * (16) - prev struct field size (4)
14828a4fa214SAhmad Masri  */
14838a4fa214SAhmad Masri #define WMI_MAX_IOCTL_PAYLOAD_SIZE		(236)
14848a4fa214SAhmad Masri #define WMI_MAX_IOCTL_REPLY_PAYLOAD_SIZE	(236)
14858a4fa214SAhmad Masri #define WMI_MAX_INTERNAL_EVENT_PAYLOAD_SIZE	(236)
14868a4fa214SAhmad Masri 
14878a4fa214SAhmad Masri enum wmi_internal_fw_ioctl_code {
14888a4fa214SAhmad Masri 	WMI_INTERNAL_FW_CODE_NONE	= 0x0,
14898a4fa214SAhmad Masri 	WMI_INTERNAL_FW_CODE_QCOM	= 0x1,
14908a4fa214SAhmad Masri };
14918a4fa214SAhmad Masri 
14928a4fa214SAhmad Masri /* WMI_INTERNAL_FW_IOCTL_CMDID */
14938a4fa214SAhmad Masri struct wmi_internal_fw_ioctl_cmd {
14948a4fa214SAhmad Masri 	/* enum wmi_internal_fw_ioctl_code */
14958a4fa214SAhmad Masri 	__le16 code;
14968a4fa214SAhmad Masri 	__le16 length;
14978a4fa214SAhmad Masri 	/* payload max size is WMI_MAX_IOCTL_PAYLOAD_SIZE
14988a4fa214SAhmad Masri 	 * Must be the last member of the struct
14998a4fa214SAhmad Masri 	 */
15008a4fa214SAhmad Masri 	__le32 payload[0];
15018a4fa214SAhmad Masri } __packed;
15028a4fa214SAhmad Masri 
15038a4fa214SAhmad Masri /* WMI_INTERNAL_FW_IOCTL_EVENTID */
15048a4fa214SAhmad Masri struct wmi_internal_fw_ioctl_event {
15058a4fa214SAhmad Masri 	/* wmi_fw_status */
15068a4fa214SAhmad Masri 	u8 status;
15078a4fa214SAhmad Masri 	u8 reserved;
15088a4fa214SAhmad Masri 	__le16 length;
15098a4fa214SAhmad Masri 	/* payload max size is WMI_MAX_IOCTL_REPLY_PAYLOAD_SIZE
15108a4fa214SAhmad Masri 	 * Must be the last member of the struct
15118a4fa214SAhmad Masri 	 */
15128a4fa214SAhmad Masri 	__le32 payload[0];
15138a4fa214SAhmad Masri } __packed;
15148a4fa214SAhmad Masri 
15158a4fa214SAhmad Masri /* WMI_INTERNAL_FW_EVENT_EVENTID */
15168a4fa214SAhmad Masri struct wmi_internal_fw_event_event {
15178a4fa214SAhmad Masri 	__le16 id;
15188a4fa214SAhmad Masri 	__le16 length;
15198a4fa214SAhmad Masri 	/* payload max size is WMI_MAX_INTERNAL_EVENT_PAYLOAD_SIZE
15208a4fa214SAhmad Masri 	 * Must be the last member of the struct
15218a4fa214SAhmad Masri 	 */
15228a4fa214SAhmad Masri 	__le32 payload[0];
15238a4fa214SAhmad Masri } __packed;
15248a4fa214SAhmad Masri 
15258a4fa214SAhmad Masri /* WMI_BF_CONTROL_CMDID */
15268a4fa214SAhmad Masri struct wmi_bf_control_cmd {
15278a4fa214SAhmad Masri 	/* wmi_bf_triggers */
15288a4fa214SAhmad Masri 	__le32 triggers;
15298a4fa214SAhmad Masri 	u8 cid;
15308a4fa214SAhmad Masri 	/* DISABLED = 0, ENABLED = 1 , DRY_RUN = 2 */
15318a4fa214SAhmad Masri 	u8 txss_mode;
15328a4fa214SAhmad Masri 	/* DISABLED = 0, ENABLED = 1, DRY_RUN = 2 */
15338a4fa214SAhmad Masri 	u8 brp_mode;
15348a4fa214SAhmad Masri 	/* Max cts threshold (correspond to
15358a4fa214SAhmad Masri 	 * WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_TXOP)
15368a4fa214SAhmad Masri 	 */
15378a4fa214SAhmad Masri 	u8 bf_trigger_max_cts_failure_thr;
15388a4fa214SAhmad Masri 	/* Max cts threshold in dense (correspond to
15398a4fa214SAhmad Masri 	 * WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_TXOP)
15408a4fa214SAhmad Masri 	 */
15418a4fa214SAhmad Masri 	u8 bf_trigger_max_cts_failure_dense_thr;
15428a4fa214SAhmad Masri 	/* Max b-ack threshold (correspond to
15438a4fa214SAhmad Masri 	 * WMI_BF_TRIGGER_MAX_BACK_FAILURE)
15448a4fa214SAhmad Masri 	 */
15458a4fa214SAhmad Masri 	u8 bf_trigger_max_back_failure_thr;
15468a4fa214SAhmad Masri 	/* Max b-ack threshold in dense (correspond to
15478a4fa214SAhmad Masri 	 * WMI_BF_TRIGGER_MAX_BACK_FAILURE)
15488a4fa214SAhmad Masri 	 */
15498a4fa214SAhmad Masri 	u8 bf_trigger_max_back_failure_dense_thr;
15508a4fa214SAhmad Masri 	u8 reserved0;
15518a4fa214SAhmad Masri 	/* Wrong sectors threshold */
15528a4fa214SAhmad Masri 	__le32 wrong_sector_bis_thr;
15538a4fa214SAhmad Masri 	/* BOOL to enable/disable long term trigger */
15548a4fa214SAhmad Masri 	u8 long_term_enable;
15558a4fa214SAhmad Masri 	/* 1 = Update long term thresholds from the long_term_mbps_th_tbl and
15568a4fa214SAhmad Masri 	 * long_term_trig_timeout_per_mcs arrays, 0 = Ignore
15578a4fa214SAhmad Masri 	 */
15588a4fa214SAhmad Masri 	u8 long_term_update_thr;
15598a4fa214SAhmad Masri 	/* Long term throughput threshold [Mbps] */
15608a4fa214SAhmad Masri 	u8 long_term_mbps_th_tbl[WMI_NUM_MCS];
15618a4fa214SAhmad Masri 	u8 reserved1;
15628a4fa214SAhmad Masri 	/* Long term timeout threshold table [msec] */
15638a4fa214SAhmad Masri 	__le16 long_term_trig_timeout_per_mcs[WMI_NUM_MCS];
15648a4fa214SAhmad Masri 	u8 reserved2[2];
15658a4fa214SAhmad Masri } __packed;
15668a4fa214SAhmad Masri 
1567b874ddecSLior David /* WMI Events
15682be7d22fSVladimir Kondratiev  * List of Events (target to host)
15692be7d22fSVladimir Kondratiev  */
15702be7d22fSVladimir Kondratiev enum wmi_event_id {
15712be7d22fSVladimir Kondratiev 	WMI_READY_EVENTID				= 0x1001,
15722be7d22fSVladimir Kondratiev 	WMI_CONNECT_EVENTID				= 0x1002,
15732be7d22fSVladimir Kondratiev 	WMI_DISCONNECT_EVENTID				= 0x1003,
1574a5dc6883SDedy Lansky 	WMI_START_SCHED_SCAN_EVENTID			= 0x1005,
1575a5dc6883SDedy Lansky 	WMI_STOP_SCHED_SCAN_EVENTID			= 0x1006,
1576a5dc6883SDedy Lansky 	WMI_SCHED_SCAN_RESULT_EVENTID			= 0x1007,
1577b874ddecSLior David 	WMI_SCAN_COMPLETE_EVENTID			= 0x100A,
1578b874ddecSLior David 	WMI_REPORT_STATISTICS_EVENTID			= 0x100B,
15792be7d22fSVladimir Kondratiev 	WMI_RD_MEM_RSP_EVENTID				= 0x1800,
15802be7d22fSVladimir Kondratiev 	WMI_FW_READY_EVENTID				= 0x1801,
1581b874ddecSLior David 	WMI_EXIT_FAST_MEM_ACC_MODE_EVENTID		= 0x200,
15822be7d22fSVladimir Kondratiev 	WMI_ECHO_RSP_EVENTID				= 0x1803,
1583761f8e4dSLazar Alexei 	/* deprecated */
1584b874ddecSLior David 	WMI_FS_TUNE_DONE_EVENTID			= 0x180A,
1585761f8e4dSLazar Alexei 	/* deprecated */
1586b874ddecSLior David 	WMI_CORR_MEASURE_EVENTID			= 0x180B,
1587b874ddecSLior David 	WMI_READ_RSSI_EVENTID				= 0x180C,
1588b874ddecSLior David 	WMI_TEMP_SENSE_DONE_EVENTID			= 0x180E,
1589b874ddecSLior David 	WMI_DC_CALIB_DONE_EVENTID			= 0x180F,
1590761f8e4dSLazar Alexei 	/* deprecated */
15912be7d22fSVladimir Kondratiev 	WMI_IQ_TX_CALIB_DONE_EVENTID			= 0x1811,
1592761f8e4dSLazar Alexei 	/* deprecated */
15932be7d22fSVladimir Kondratiev 	WMI_IQ_RX_CALIB_DONE_EVENTID			= 0x1812,
15942be7d22fSVladimir Kondratiev 	WMI_SET_WORK_MODE_DONE_EVENTID			= 0x1815,
15952be7d22fSVladimir Kondratiev 	WMI_LO_LEAKAGE_CALIB_DONE_EVENTID		= 0x1816,
1596761f8e4dSLazar Alexei 	WMI_LO_POWER_CALIB_FROM_OTP_EVENTID		= 0x1817,
1597b874ddecSLior David 	WMI_SILENT_RSSI_CALIB_DONE_EVENTID		= 0x181D,
1598761f8e4dSLazar Alexei 	/* deprecated */
1599b874ddecSLior David 	WMI_RF_RX_TEST_DONE_EVENTID			= 0x181E,
16002be7d22fSVladimir Kondratiev 	WMI_CFG_RX_CHAIN_DONE_EVENTID			= 0x1820,
16012be7d22fSVladimir Kondratiev 	WMI_VRING_CFG_DONE_EVENTID			= 0x1821,
16022be7d22fSVladimir Kondratiev 	WMI_BA_STATUS_EVENTID				= 0x1823,
16032be7d22fSVladimir Kondratiev 	WMI_RCP_ADDBA_REQ_EVENTID			= 0x1824,
1604230d8442SVladimir Kondratiev 	WMI_RCP_ADDBA_RESP_SENT_EVENTID			= 0x1825,
16052be7d22fSVladimir Kondratiev 	WMI_DELBA_EVENTID				= 0x1826,
16062be7d22fSVladimir Kondratiev 	WMI_GET_SSID_EVENTID				= 0x1828,
1607b874ddecSLior David 	WMI_GET_PCP_CHANNEL_EVENTID			= 0x182A,
1608b874ddecSLior David 	WMI_SW_TX_COMPLETE_EVENTID			= 0x182B,
1609230d8442SVladimir Kondratiev 	WMI_BEAMFORMING_MGMT_DONE_EVENTID		= 0x1836,
16102be7d22fSVladimir Kondratiev 	WMI_BF_TXSS_MGMT_DONE_EVENTID			= 0x1837,
16112be7d22fSVladimir Kondratiev 	WMI_BF_RXSS_MGMT_DONE_EVENTID			= 0x1839,
16122be7d22fSVladimir Kondratiev 	WMI_RS_MGMT_DONE_EVENTID			= 0x1852,
16132be7d22fSVladimir Kondratiev 	WMI_RF_MGMT_STATUS_EVENTID			= 0x1853,
16142be7d22fSVladimir Kondratiev 	WMI_BF_SM_MGMT_DONE_EVENTID			= 0x1838,
16152be7d22fSVladimir Kondratiev 	WMI_RX_MGMT_PACKET_EVENTID			= 0x1840,
16166c2faf09SVladimir Kondratiev 	WMI_TX_MGMT_PACKET_EVENTID			= 0x1841,
16170163b031SMaya Erez 	WMI_LINK_MAINTAIN_CFG_WRITE_DONE_EVENTID	= 0x1842,
16180163b031SMaya Erez 	WMI_LINK_MAINTAIN_CFG_READ_DONE_EVENTID		= 0x1843,
1619761f8e4dSLazar Alexei 	WMI_RF_XPM_READ_RESULT_EVENTID			= 0x1856,
1620761f8e4dSLazar Alexei 	WMI_RF_XPM_WRITE_RESULT_EVENTID			= 0x1857,
162110d599adSMaya Erez 	WMI_LED_CFG_DONE_EVENTID			= 0x1858,
1622761f8e4dSLazar Alexei 	WMI_SET_SILENT_RSSI_TABLE_DONE_EVENTID		= 0x185C,
1623761f8e4dSLazar Alexei 	WMI_RF_PWR_ON_DELAY_RSP_EVENTID			= 0x185D,
1624761f8e4dSLazar Alexei 	WMI_SET_HIGH_POWER_TABLE_PARAMS_EVENTID		= 0x185E,
16258a4fa214SAhmad Masri 	WMI_FIXED_SCHEDULING_UL_CONFIG_EVENTID		= 0x185F,
16262be7d22fSVladimir Kondratiev 	/* Performance monitoring events */
16272be7d22fSVladimir Kondratiev 	WMI_DATA_PORT_OPEN_EVENTID			= 0x1860,
1628230d8442SVladimir Kondratiev 	WMI_WBE_LINK_DOWN_EVENTID			= 0x1861,
16292be7d22fSVladimir Kondratiev 	WMI_BF_CTRL_DONE_EVENTID			= 0x1862,
16302be7d22fSVladimir Kondratiev 	WMI_NOTIFY_REQ_DONE_EVENTID			= 0x1863,
16312be7d22fSVladimir Kondratiev 	WMI_GET_STATUS_DONE_EVENTID			= 0x1864,
1632*96c93589SGidon Studinski 	WMI_RING_EN_EVENTID				= 0x1865,
16330163b031SMaya Erez 	WMI_GET_RF_STATUS_EVENTID			= 0x1866,
16340163b031SMaya Erez 	WMI_GET_BASEBAND_TYPE_EVENTID			= 0x1867,
16358a4fa214SAhmad Masri 	WMI_VRING_SWITCH_TIMING_CONFIG_EVENTID		= 0x1868,
16362be7d22fSVladimir Kondratiev 	WMI_UNIT_TEST_EVENTID				= 0x1900,
16372be7d22fSVladimir Kondratiev 	WMI_FLASH_READ_DONE_EVENTID			= 0x1902,
16382be7d22fSVladimir Kondratiev 	WMI_FLASH_WRITE_DONE_EVENTID			= 0x1903,
16390163b031SMaya Erez 	/* Power management */
1640fe9ee51eSMaya Erez 	WMI_TRAFFIC_SUSPEND_EVENTID			= 0x1904,
16410163b031SMaya Erez 	WMI_TRAFFIC_RESUME_EVENTID			= 0x1905,
1642b8023177SVladimir Kondratiev 	/* P2P */
16438c679675SVladimir Kondratiev 	WMI_P2P_CFG_DONE_EVENTID			= 0x1910,
1644b8023177SVladimir Kondratiev 	WMI_PORT_ALLOCATED_EVENTID			= 0x1911,
1645b8023177SVladimir Kondratiev 	WMI_PORT_DELETED_EVENTID			= 0x1912,
1646b8023177SVladimir Kondratiev 	WMI_LISTEN_STARTED_EVENTID			= 0x1914,
1647b8023177SVladimir Kondratiev 	WMI_SEARCH_STARTED_EVENTID			= 0x1915,
1648b8023177SVladimir Kondratiev 	WMI_DISCOVERY_STARTED_EVENTID			= 0x1916,
1649b8023177SVladimir Kondratiev 	WMI_DISCOVERY_STOPPED_EVENTID			= 0x1917,
1650b8023177SVladimir Kondratiev 	WMI_PCP_STARTED_EVENTID				= 0x1918,
1651b8023177SVladimir Kondratiev 	WMI_PCP_STOPPED_EVENTID				= 0x1919,
1652b874ddecSLior David 	WMI_PCP_FACTOR_EVENTID				= 0x191A,
16530163b031SMaya Erez 	/* Power Save Configuration Events */
16540163b031SMaya Erez 	WMI_PS_DEV_PROFILE_CFG_EVENTID			= 0x191C,
16550163b031SMaya Erez 	WMI_RS_CFG_DONE_EVENTID				= 0x1921,
165608989f96SLior David 	WMI_GET_DETAILED_RS_RES_EVENTID			= 0x1922,
165708989f96SLior David 	WMI_AOA_MEAS_EVENTID				= 0x1923,
1658a52fb913SLior David 	WMI_BRP_SET_ANT_LIMIT_EVENTID			= 0x1924,
1659cbf795c1SLior David 	WMI_SET_MGMT_RETRY_LIMIT_EVENTID		= 0x1930,
1660cbf795c1SLior David 	WMI_GET_MGMT_RETRY_LIMIT_EVENTID		= 0x1931,
166190ffabb0SDedy Lansky 	WMI_SET_THERMAL_THROTTLING_CFG_EVENTID		= 0x1940,
166290ffabb0SDedy Lansky 	WMI_GET_THERMAL_THROTTLING_CFG_EVENTID		= 0x1941,
1663761f8e4dSLazar Alexei 	/* return the Power Save profile */
1664761f8e4dSLazar Alexei 	WMI_PS_DEV_PROFILE_CFG_READ_EVENTID		= 0x1942,
16658a4fa214SAhmad Masri 	WMI_TSF_SYNC_STATUS_EVENTID			= 0x1973,
166608989f96SLior David 	WMI_TOF_SESSION_END_EVENTID			= 0x1991,
166708989f96SLior David 	WMI_TOF_GET_CAPABILITIES_EVENTID		= 0x1992,
166808989f96SLior David 	WMI_TOF_SET_LCR_EVENTID				= 0x1993,
166908989f96SLior David 	WMI_TOF_SET_LCI_EVENTID				= 0x1994,
167008989f96SLior David 	WMI_TOF_FTM_PER_DEST_RES_EVENTID		= 0x1995,
1671761f8e4dSLazar Alexei 	WMI_TOF_CFG_RESPONDER_EVENTID			= 0x1996,
16728ae5d62cSLior David 	WMI_TOF_SET_TX_RX_OFFSET_EVENTID		= 0x1997,
16738ae5d62cSLior David 	WMI_TOF_GET_TX_RX_OFFSET_EVENTID		= 0x1998,
1674761f8e4dSLazar Alexei 	WMI_TOF_CHANNEL_INFO_EVENTID			= 0x1999,
1675cbf795c1SLior David 	WMI_GET_RF_SECTOR_PARAMS_DONE_EVENTID		= 0x19A0,
1676cbf795c1SLior David 	WMI_SET_RF_SECTOR_PARAMS_DONE_EVENTID		= 0x19A1,
1677cbf795c1SLior David 	WMI_GET_SELECTED_RF_SECTOR_INDEX_DONE_EVENTID	= 0x19A2,
1678cbf795c1SLior David 	WMI_SET_SELECTED_RF_SECTOR_INDEX_DONE_EVENTID	= 0x19A3,
1679cbf795c1SLior David 	WMI_SET_RF_SECTOR_ON_DONE_EVENTID		= 0x19A4,
16808ae5d62cSLior David 	WMI_PRIO_TX_SECTORS_ORDER_EVENTID		= 0x19A5,
16818ae5d62cSLior David 	WMI_PRIO_TX_SECTORS_NUMBER_EVENTID		= 0x19A6,
16828ae5d62cSLior David 	WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_EVENTID	= 0x19A7,
16838a4fa214SAhmad Masri 	WMI_BF_CONTROL_EVENTID				= 0x19AA,
1684*96c93589SGidon Studinski 	WMI_TX_STATUS_RING_CFG_DONE_EVENTID		= 0x19C0,
1685*96c93589SGidon Studinski 	WMI_RX_STATUS_RING_CFG_DONE_EVENTID		= 0x19C1,
1686*96c93589SGidon Studinski 	WMI_TX_DESC_RING_CFG_DONE_EVENTID		= 0x19C2,
1687*96c93589SGidon Studinski 	WMI_RX_DESC_RING_CFG_DONE_EVENTID		= 0x19C3,
1688*96c93589SGidon Studinski 	WMI_CFG_DEF_RX_OFFLOAD_DONE_EVENTID		= 0x19C5,
1689761f8e4dSLazar Alexei 	WMI_SCHEDULING_SCHEME_EVENTID			= 0x1A01,
1690761f8e4dSLazar Alexei 	WMI_FIXED_SCHEDULING_CONFIG_COMPLETE_EVENTID	= 0x1A02,
1691761f8e4dSLazar Alexei 	WMI_ENABLE_FIXED_SCHEDULING_COMPLETE_EVENTID	= 0x1A03,
1692761f8e4dSLazar Alexei 	WMI_SET_MULTI_DIRECTED_OMNIS_CONFIG_EVENTID	= 0x1A04,
1693761f8e4dSLazar Alexei 	WMI_SET_LONG_RANGE_CONFIG_COMPLETE_EVENTID	= 0x1A05,
16948a4fa214SAhmad Masri 	WMI_GET_ASSOC_LIST_RES_EVENTID			= 0x1A06,
16958a4fa214SAhmad Masri 	WMI_GET_CCA_INDICATIONS_EVENTID			= 0x1A07,
16968a4fa214SAhmad Masri 	WMI_SET_CCA_INDICATIONS_BI_AVG_NUM_EVENTID	= 0x1A08,
16978a4fa214SAhmad Masri 	WMI_INTERNAL_FW_EVENT_EVENTID			= 0x1A0A,
16988a4fa214SAhmad Masri 	WMI_INTERNAL_FW_IOCTL_EVENTID			= 0x1A0B,
16992be7d22fSVladimir Kondratiev 	WMI_SET_CHANNEL_EVENTID				= 0x9000,
17002be7d22fSVladimir Kondratiev 	WMI_ASSOC_REQ_EVENTID				= 0x9001,
17012be7d22fSVladimir Kondratiev 	WMI_EAPOL_RX_EVENTID				= 0x9002,
17022be7d22fSVladimir Kondratiev 	WMI_MAC_ADDR_RESP_EVENTID			= 0x9003,
17032be7d22fSVladimir Kondratiev 	WMI_FW_VER_EVENTID				= 0x9004,
1704b874ddecSLior David 	WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENTID		= 0x9005,
17058a4fa214SAhmad Masri 	WMI_INTERNAL_FW_SET_CHANNEL			= 0x9006,
1706761f8e4dSLazar Alexei 	WMI_COMMAND_NOT_SUPPORTED_EVENTID		= 0xFFFF,
17072be7d22fSVladimir Kondratiev };
17082be7d22fSVladimir Kondratiev 
1709b874ddecSLior David /* Events data structures */
1710b8023177SVladimir Kondratiev enum wmi_fw_status {
1711b874ddecSLior David 	WMI_FW_STATUS_SUCCESS	= 0x00,
1712b874ddecSLior David 	WMI_FW_STATUS_FAILURE	= 0x01,
1713b8023177SVladimir Kondratiev };
1714b8023177SVladimir Kondratiev 
1715b874ddecSLior David /* WMI_RF_MGMT_STATUS_EVENTID */
17162be7d22fSVladimir Kondratiev enum wmi_rf_status {
1717b874ddecSLior David 	WMI_RF_ENABLED		= 0x00,
1718b874ddecSLior David 	WMI_RF_DISABLED_HW	= 0x01,
1719b874ddecSLior David 	WMI_RF_DISABLED_SW	= 0x02,
1720b874ddecSLior David 	WMI_RF_DISABLED_HW_SW	= 0x03,
17212be7d22fSVladimir Kondratiev };
17222be7d22fSVladimir Kondratiev 
1723b874ddecSLior David /* WMI_RF_MGMT_STATUS_EVENTID */
17242be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_status_event {
17252be7d22fSVladimir Kondratiev 	__le32 rf_status;
17262be7d22fSVladimir Kondratiev } __packed;
17272be7d22fSVladimir Kondratiev 
1728b874ddecSLior David /* WMI_GET_STATUS_DONE_EVENTID */
17292be7d22fSVladimir Kondratiev struct wmi_get_status_done_event {
17302be7d22fSVladimir Kondratiev 	__le32 is_associated;
17312be7d22fSVladimir Kondratiev 	u8 cid;
17322be7d22fSVladimir Kondratiev 	u8 reserved0[3];
17332be7d22fSVladimir Kondratiev 	u8 bssid[WMI_MAC_LEN];
17342be7d22fSVladimir Kondratiev 	u8 channel;
17352be7d22fSVladimir Kondratiev 	u8 reserved1;
17362be7d22fSVladimir Kondratiev 	u8 network_type;
17372be7d22fSVladimir Kondratiev 	u8 reserved2[3];
17382be7d22fSVladimir Kondratiev 	__le32 ssid_len;
17392be7d22fSVladimir Kondratiev 	u8 ssid[WMI_MAX_SSID_LEN];
17402be7d22fSVladimir Kondratiev 	__le32 rf_status;
17412be7d22fSVladimir Kondratiev 	__le32 is_secured;
17422be7d22fSVladimir Kondratiev } __packed;
17432be7d22fSVladimir Kondratiev 
1744b874ddecSLior David /* WMI_FW_VER_EVENTID */
17452be7d22fSVladimir Kondratiev struct wmi_fw_ver_event {
17460163b031SMaya Erez 	/* FW image version */
17470163b031SMaya Erez 	__le32 fw_major;
17480163b031SMaya Erez 	__le32 fw_minor;
17490163b031SMaya Erez 	__le32 fw_subminor;
17500163b031SMaya Erez 	__le32 fw_build;
17510163b031SMaya Erez 	/* FW image build time stamp */
17520163b031SMaya Erez 	__le32 hour;
17530163b031SMaya Erez 	__le32 minute;
17540163b031SMaya Erez 	__le32 second;
17550163b031SMaya Erez 	__le32 day;
17560163b031SMaya Erez 	__le32 month;
17570163b031SMaya Erez 	__le32 year;
17580163b031SMaya Erez 	/* Boot Loader image version */
17590163b031SMaya Erez 	__le32 bl_major;
17600163b031SMaya Erez 	__le32 bl_minor;
17610163b031SMaya Erez 	__le32 bl_subminor;
17620163b031SMaya Erez 	__le32 bl_build;
1763761f8e4dSLazar Alexei 	/* The number of entries in the FW capabilities array */
176408989f96SLior David 	u8 fw_capabilities_len;
176508989f96SLior David 	u8 reserved[3];
176608989f96SLior David 	/* FW capabilities info
176708989f96SLior David 	 * Must be the last member of the struct
176808989f96SLior David 	 */
176908989f96SLior David 	__le32 fw_capabilities[0];
17700163b031SMaya Erez } __packed;
17710163b031SMaya Erez 
17720163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */
17730163b031SMaya Erez enum rf_type {
17740163b031SMaya Erez 	RF_UNKNOWN	= 0x00,
17750163b031SMaya Erez 	RF_MARLON	= 0x01,
17760163b031SMaya Erez 	RF_SPARROW	= 0x02,
17778a4fa214SAhmad Masri 	RF_TALYNA1	= 0x03,
17788a4fa214SAhmad Masri 	RF_TALYNA2	= 0x04,
17790163b031SMaya Erez };
17800163b031SMaya Erez 
17810163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */
17820163b031SMaya Erez enum board_file_rf_type {
17830163b031SMaya Erez 	BF_RF_MARLON	= 0x00,
17840163b031SMaya Erez 	BF_RF_SPARROW	= 0x01,
17858a4fa214SAhmad Masri 	BF_RF_TALYNA1	= 0x02,
17868a4fa214SAhmad Masri 	BF_RF_TALYNA2	= 0x03,
17870163b031SMaya Erez };
17880163b031SMaya Erez 
17890163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */
17900163b031SMaya Erez enum rf_status {
17910163b031SMaya Erez 	RF_OK			= 0x00,
17920163b031SMaya Erez 	RF_NO_COMM		= 0x01,
17930163b031SMaya Erez 	RF_WRONG_BOARD_FILE	= 0x02,
17940163b031SMaya Erez };
17950163b031SMaya Erez 
17960163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */
17970163b031SMaya Erez struct wmi_get_rf_status_event {
17980163b031SMaya Erez 	/* enum rf_type */
17990163b031SMaya Erez 	__le32 rf_type;
18000163b031SMaya Erez 	/* attached RFs bit vector */
18010163b031SMaya Erez 	__le32 attached_rf_vector;
18020163b031SMaya Erez 	/* enabled RFs bit vector */
18030163b031SMaya Erez 	__le32 enabled_rf_vector;
18040163b031SMaya Erez 	/* enum rf_status, refers to enabled RFs */
18050163b031SMaya Erez 	u8 rf_status[32];
18060163b031SMaya Erez 	/* enum board file RF type */
18070163b031SMaya Erez 	__le32 board_file_rf_type;
18080163b031SMaya Erez 	/* board file platform type */
18090163b031SMaya Erez 	__le32 board_file_platform_type;
18100163b031SMaya Erez 	/* board file version */
18110163b031SMaya Erez 	__le32 board_file_version;
1812761f8e4dSLazar Alexei 	/* enabled XIFs bit vector */
1813761f8e4dSLazar Alexei 	__le32 enabled_xif_vector;
1814761f8e4dSLazar Alexei 	__le32 reserved;
18150163b031SMaya Erez } __packed;
18160163b031SMaya Erez 
18170163b031SMaya Erez /* WMI_GET_BASEBAND_TYPE_EVENTID */
18180163b031SMaya Erez enum baseband_type {
18190163b031SMaya Erez 	BASEBAND_UNKNOWN	= 0x00,
18200163b031SMaya Erez 	BASEBAND_SPARROW_M_A0	= 0x03,
18210163b031SMaya Erez 	BASEBAND_SPARROW_M_A1	= 0x04,
18220163b031SMaya Erez 	BASEBAND_SPARROW_M_B0	= 0x05,
18230163b031SMaya Erez 	BASEBAND_SPARROW_M_C0	= 0x06,
18240163b031SMaya Erez 	BASEBAND_SPARROW_M_D0	= 0x07,
18258ae5d62cSLior David 	BASEBAND_TALYN_M_A0	= 0x08,
18268a4fa214SAhmad Masri 	BASEBAND_TALYN_M_B0	= 0x09,
18270163b031SMaya Erez };
18280163b031SMaya Erez 
18290163b031SMaya Erez /* WMI_GET_BASEBAND_TYPE_EVENTID */
18300163b031SMaya Erez struct wmi_get_baseband_type_event {
18310163b031SMaya Erez 	/* enum baseband_type */
18320163b031SMaya Erez 	__le32 baseband_type;
18332be7d22fSVladimir Kondratiev } __packed;
18342be7d22fSVladimir Kondratiev 
1835b874ddecSLior David /* WMI_MAC_ADDR_RESP_EVENTID */
18362be7d22fSVladimir Kondratiev struct wmi_mac_addr_resp_event {
18372be7d22fSVladimir Kondratiev 	u8 mac[WMI_MAC_LEN];
18382be7d22fSVladimir Kondratiev 	u8 auth_mode;
18392be7d22fSVladimir Kondratiev 	u8 crypt_mode;
18402be7d22fSVladimir Kondratiev 	__le32 offload_mode;
18412be7d22fSVladimir Kondratiev } __packed;
18422be7d22fSVladimir Kondratiev 
1843b874ddecSLior David /* WMI_EAPOL_RX_EVENTID */
18442be7d22fSVladimir Kondratiev struct wmi_eapol_rx_event {
18452be7d22fSVladimir Kondratiev 	u8 src_mac[WMI_MAC_LEN];
18462be7d22fSVladimir Kondratiev 	__le16 eapol_len;
18472be7d22fSVladimir Kondratiev 	u8 eapol[0];
18482be7d22fSVladimir Kondratiev } __packed;
18492be7d22fSVladimir Kondratiev 
1850b874ddecSLior David /* WMI_READY_EVENTID */
18512be7d22fSVladimir Kondratiev enum wmi_phy_capability {
1852b874ddecSLior David 	WMI_11A_CAPABILITY		= 0x01,
1853b874ddecSLior David 	WMI_11G_CAPABILITY		= 0x02,
1854b874ddecSLior David 	WMI_11AG_CAPABILITY		= 0x03,
1855b874ddecSLior David 	WMI_11NA_CAPABILITY		= 0x04,
1856b874ddecSLior David 	WMI_11NG_CAPABILITY		= 0x05,
1857b874ddecSLior David 	WMI_11NAG_CAPABILITY		= 0x06,
1858b874ddecSLior David 	WMI_11AD_CAPABILITY		= 0x07,
1859b874ddecSLior David 	WMI_11N_CAPABILITY_OFFSET	= 0x03,
18602be7d22fSVladimir Kondratiev };
18612be7d22fSVladimir Kondratiev 
18622be7d22fSVladimir Kondratiev struct wmi_ready_event {
18632be7d22fSVladimir Kondratiev 	__le32 sw_version;
18642be7d22fSVladimir Kondratiev 	__le32 abi_version;
18652be7d22fSVladimir Kondratiev 	u8 mac[WMI_MAC_LEN];
1866b874ddecSLior David 	/* enum wmi_phy_capability */
1867b874ddecSLior David 	u8 phy_capability;
1868b8023177SVladimir Kondratiev 	u8 numof_additional_mids;
1869761f8e4dSLazar Alexei 	/* rfc read calibration result. 5..15 */
1870eb4c0215SDedy Lansky 	u8 rfc_read_calib_result;
18718a4fa214SAhmad Masri 	/* Max associated STAs supported by FW in AP mode (default 0 means 8
18728a4fa214SAhmad Masri 	 * STA)
18738a4fa214SAhmad Masri 	 */
18748a4fa214SAhmad Masri 	u8 max_assoc_sta;
18758a4fa214SAhmad Masri 	u8 reserved[2];
18762be7d22fSVladimir Kondratiev } __packed;
18772be7d22fSVladimir Kondratiev 
1878b874ddecSLior David /* WMI_NOTIFY_REQ_DONE_EVENTID */
18792be7d22fSVladimir Kondratiev struct wmi_notify_req_done_event {
1880b874ddecSLior David 	/* beamforming status, 0: fail; 1: OK; 2: retrying */
1881b874ddecSLior David 	__le32 status;
18822be7d22fSVladimir Kondratiev 	__le64 tsf;
188330868f5dSDedy Lansky 	s8 rssi;
188430868f5dSDedy Lansky 	u8 reserved0[3];
18852be7d22fSVladimir Kondratiev 	__le32 tx_tpt;
18862be7d22fSVladimir Kondratiev 	__le32 tx_goodput;
18872be7d22fSVladimir Kondratiev 	__le32 rx_goodput;
18882be7d22fSVladimir Kondratiev 	__le16 bf_mcs;
18892be7d22fSVladimir Kondratiev 	__le16 my_rx_sector;
18902be7d22fSVladimir Kondratiev 	__le16 my_tx_sector;
18912be7d22fSVladimir Kondratiev 	__le16 other_rx_sector;
18922be7d22fSVladimir Kondratiev 	__le16 other_tx_sector;
18932be7d22fSVladimir Kondratiev 	__le16 range;
1894b8023177SVladimir Kondratiev 	u8 sqi;
1895b8023177SVladimir Kondratiev 	u8 reserved[3];
18962be7d22fSVladimir Kondratiev } __packed;
18972be7d22fSVladimir Kondratiev 
1898b874ddecSLior David /* WMI_CONNECT_EVENTID */
18992be7d22fSVladimir Kondratiev struct wmi_connect_event {
19002be7d22fSVladimir Kondratiev 	u8 channel;
19012be7d22fSVladimir Kondratiev 	u8 reserved0;
19022be7d22fSVladimir Kondratiev 	u8 bssid[WMI_MAC_LEN];
19032be7d22fSVladimir Kondratiev 	__le16 listen_interval;
19042be7d22fSVladimir Kondratiev 	__le16 beacon_interval;
19052be7d22fSVladimir Kondratiev 	u8 network_type;
19062be7d22fSVladimir Kondratiev 	u8 reserved1[3];
19072be7d22fSVladimir Kondratiev 	u8 beacon_ie_len;
19082be7d22fSVladimir Kondratiev 	u8 assoc_req_len;
19092be7d22fSVladimir Kondratiev 	u8 assoc_resp_len;
19102be7d22fSVladimir Kondratiev 	u8 cid;
1911a52fb913SLior David 	u8 aid;
1912a52fb913SLior David 	u8 reserved2[2];
1913b874ddecSLior David 	/* not in use */
19142be7d22fSVladimir Kondratiev 	u8 assoc_info[0];
19152be7d22fSVladimir Kondratiev } __packed;
19162be7d22fSVladimir Kondratiev 
1917849a564bSDedy Lansky /* disconnect_reason */
19182be7d22fSVladimir Kondratiev enum wmi_disconnect_reason {
1919b874ddecSLior David 	WMI_DIS_REASON_NO_NETWORK_AVAIL		= 0x01,
1920b874ddecSLior David 	/* bmiss */
1921b874ddecSLior David 	WMI_DIS_REASON_LOST_LINK		= 0x02,
1922b874ddecSLior David 	WMI_DIS_REASON_DISCONNECT_CMD		= 0x03,
1923b874ddecSLior David 	WMI_DIS_REASON_BSS_DISCONNECTED		= 0x04,
1924b874ddecSLior David 	WMI_DIS_REASON_AUTH_FAILED		= 0x05,
1925b874ddecSLior David 	WMI_DIS_REASON_ASSOC_FAILED		= 0x06,
1926b874ddecSLior David 	WMI_DIS_REASON_NO_RESOURCES_AVAIL	= 0x07,
1927b874ddecSLior David 	WMI_DIS_REASON_CSERV_DISCONNECT		= 0x08,
1928b874ddecSLior David 	WMI_DIS_REASON_INVALID_PROFILE		= 0x0A,
1929b874ddecSLior David 	WMI_DIS_REASON_DOT11H_CHANNEL_SWITCH	= 0x0B,
1930b874ddecSLior David 	WMI_DIS_REASON_PROFILE_MISMATCH		= 0x0C,
1931b874ddecSLior David 	WMI_DIS_REASON_CONNECTION_EVICTED	= 0x0D,
1932b874ddecSLior David 	WMI_DIS_REASON_IBSS_MERGE		= 0x0E,
19332be7d22fSVladimir Kondratiev };
19342be7d22fSVladimir Kondratiev 
1935849a564bSDedy Lansky /* WMI_DISCONNECT_EVENTID */
19362be7d22fSVladimir Kondratiev struct wmi_disconnect_event {
1937b874ddecSLior David 	/* reason code, see 802.11 spec. */
1938b874ddecSLior David 	__le16 protocol_reason_status;
1939b874ddecSLior David 	/* set if known */
1940b874ddecSLior David 	u8 bssid[WMI_MAC_LEN];
1941b874ddecSLior David 	/* see enum wmi_disconnect_reason */
1942b874ddecSLior David 	u8 disconnect_reason;
1943b874ddecSLior David 	/* last assoc req may passed to host - not in used */
1944b874ddecSLior David 	u8 assoc_resp_len;
1945b874ddecSLior David 	/* last assoc req may passed to host - not in used */
1946b874ddecSLior David 	u8 assoc_info[0];
19472be7d22fSVladimir Kondratiev } __packed;
19482be7d22fSVladimir Kondratiev 
1949b874ddecSLior David /* WMI_SCAN_COMPLETE_EVENTID */
19506c2faf09SVladimir Kondratiev enum scan_status {
1951b874ddecSLior David 	WMI_SCAN_SUCCESS	= 0x00,
1952b874ddecSLior David 	WMI_SCAN_FAILED		= 0x01,
1953b874ddecSLior David 	WMI_SCAN_ABORTED	= 0x02,
1954b874ddecSLior David 	WMI_SCAN_REJECTED	= 0x03,
1955b874ddecSLior David 	WMI_SCAN_ABORT_REJECTED	= 0x04,
19566c2faf09SVladimir Kondratiev };
19576c2faf09SVladimir Kondratiev 
19582be7d22fSVladimir Kondratiev struct wmi_scan_complete_event {
1959b874ddecSLior David 	/* enum scan_status */
1960b874ddecSLior David 	__le32 status;
19612be7d22fSVladimir Kondratiev } __packed;
19622be7d22fSVladimir Kondratiev 
1963a5dc6883SDedy Lansky /* wmi_rx_mgmt_info */
1964a5dc6883SDedy Lansky struct wmi_rx_mgmt_info {
1965a5dc6883SDedy Lansky 	u8 mcs;
1966a5dc6883SDedy Lansky 	s8 rssi;
1967a5dc6883SDedy Lansky 	u8 range;
1968a5dc6883SDedy Lansky 	u8 sqi;
1969a5dc6883SDedy Lansky 	__le16 stype;
1970a5dc6883SDedy Lansky 	__le16 status;
1971a5dc6883SDedy Lansky 	__le32 len;
1972a5dc6883SDedy Lansky 	/* Not resolved when == 0xFFFFFFFF == > Broadcast to all MIDS */
1973a5dc6883SDedy Lansky 	u8 qid;
1974a5dc6883SDedy Lansky 	/* Not resolved when == 0xFFFFFFFF == > Broadcast to all MIDS */
1975a5dc6883SDedy Lansky 	u8 mid;
1976a5dc6883SDedy Lansky 	u8 cid;
1977a5dc6883SDedy Lansky 	/* From Radio MNGR */
1978a5dc6883SDedy Lansky 	u8 channel;
1979a5dc6883SDedy Lansky } __packed;
1980a5dc6883SDedy Lansky 
1981a5dc6883SDedy Lansky /* WMI_START_SCHED_SCAN_EVENTID */
1982a5dc6883SDedy Lansky enum wmi_pno_result {
1983a5dc6883SDedy Lansky 	WMI_PNO_SUCCESS			= 0x00,
1984a5dc6883SDedy Lansky 	WMI_PNO_REJECT			= 0x01,
1985a5dc6883SDedy Lansky 	WMI_PNO_INVALID_PARAMETERS	= 0x02,
1986a5dc6883SDedy Lansky 	WMI_PNO_NOT_ENABLED		= 0x03,
1987a5dc6883SDedy Lansky };
1988a5dc6883SDedy Lansky 
1989a5dc6883SDedy Lansky struct wmi_start_sched_scan_event {
19908a4fa214SAhmad Masri 	/* wmi_pno_result */
1991a5dc6883SDedy Lansky 	u8 result;
1992a5dc6883SDedy Lansky 	u8 reserved[3];
1993a5dc6883SDedy Lansky } __packed;
1994a5dc6883SDedy Lansky 
1995a5dc6883SDedy Lansky struct wmi_stop_sched_scan_event {
19968a4fa214SAhmad Masri 	/* wmi_pno_result */
1997a5dc6883SDedy Lansky 	u8 result;
1998a5dc6883SDedy Lansky 	u8 reserved[3];
1999a5dc6883SDedy Lansky } __packed;
2000a5dc6883SDedy Lansky 
2001a5dc6883SDedy Lansky struct wmi_sched_scan_result_event {
2002a5dc6883SDedy Lansky 	struct wmi_rx_mgmt_info info;
2003a5dc6883SDedy Lansky 	u8 payload[0];
2004a5dc6883SDedy Lansky } __packed;
2005a5dc6883SDedy Lansky 
2006b874ddecSLior David /* WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENT */
2007b874ddecSLior David enum wmi_acs_info_bitmask {
2008b874ddecSLior David 	WMI_ACS_INFO_BITMASK_BEACON_FOUND	= 0x01,
2009b874ddecSLior David 	WMI_ACS_INFO_BITMASK_BUSY_TIME		= 0x02,
2010b874ddecSLior David 	WMI_ACS_INFO_BITMASK_TX_TIME		= 0x04,
2011b874ddecSLior David 	WMI_ACS_INFO_BITMASK_RX_TIME		= 0x08,
2012b874ddecSLior David 	WMI_ACS_INFO_BITMASK_NOISE		= 0x10,
20132be7d22fSVladimir Kondratiev };
20142be7d22fSVladimir Kondratiev 
2015b874ddecSLior David struct scan_acs_info {
2016b874ddecSLior David 	u8 channel;
2017b874ddecSLior David 	u8 beacon_found;
2018b874ddecSLior David 	/* msec */
2019b874ddecSLior David 	__le16 busy_time;
2020b874ddecSLior David 	__le16 tx_time;
2021b874ddecSLior David 	__le16 rx_time;
2022b874ddecSLior David 	u8 noise;
2023b874ddecSLior David 	u8 reserved[3];
2024b874ddecSLior David } __packed;
2025b874ddecSLior David 
2026b874ddecSLior David struct wmi_acs_passive_scan_complete_event {
2027b874ddecSLior David 	__le32 dwell_time;
2028b874ddecSLior David 	/* valid fields within channel info according to
2029b874ddecSLior David 	 * their appearance in struct order
2030b874ddecSLior David 	 */
2031b874ddecSLior David 	__le16 filled;
2032b874ddecSLior David 	u8 num_scanned_channels;
2033b874ddecSLior David 	u8 reserved;
2034b874ddecSLior David 	struct scan_acs_info scan_info_list[0];
2035b874ddecSLior David } __packed;
2036b874ddecSLior David 
2037b874ddecSLior David /* WMI_BA_STATUS_EVENTID */
2038b874ddecSLior David enum wmi_vring_ba_status {
2039b874ddecSLior David 	WMI_BA_AGREED			= 0x00,
2040b874ddecSLior David 	WMI_BA_NON_AGREED		= 0x01,
2041b874ddecSLior David 	/* BA_EN in middle of teardown flow */
2042b874ddecSLior David 	WMI_BA_TD_WIP			= 0x02,
2043b874ddecSLior David 	/* BA_DIS or BA_EN in middle of BA SETUP flow */
2044b874ddecSLior David 	WMI_BA_SETUP_WIP		= 0x03,
2045b874ddecSLior David 	/* BA_EN when the BA session is already active */
2046b874ddecSLior David 	WMI_BA_SESSION_ACTIVE		= 0x04,
2047b874ddecSLior David 	/* BA_DIS when the BA session is not active */
2048b874ddecSLior David 	WMI_BA_SESSION_NOT_ACTIVE	= 0x05,
2049b874ddecSLior David };
2050b874ddecSLior David 
2051b874ddecSLior David struct wmi_ba_status_event {
2052b874ddecSLior David 	/* enum wmi_vring_ba_status */
2053b874ddecSLior David 	__le16 status;
20542be7d22fSVladimir Kondratiev 	u8 reserved[2];
20552be7d22fSVladimir Kondratiev 	u8 ringid;
20562be7d22fSVladimir Kondratiev 	u8 agg_wsize;
20572be7d22fSVladimir Kondratiev 	__le16 ba_timeout;
2058cbcf5866SVladimir Kondratiev 	u8 amsdu;
20592be7d22fSVladimir Kondratiev } __packed;
20602be7d22fSVladimir Kondratiev 
2061b874ddecSLior David /* WMI_DELBA_EVENTID */
20622be7d22fSVladimir Kondratiev struct wmi_delba_event {
20638a4fa214SAhmad Masri 	/* Used for cid less than 8. For higher cid set
20648a4fa214SAhmad Masri 	 * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead
20658a4fa214SAhmad Masri 	 */
20662be7d22fSVladimir Kondratiev 	u8 cidxtid;
20672be7d22fSVladimir Kondratiev 	u8 from_initiator;
20682be7d22fSVladimir Kondratiev 	__le16 reason;
20698a4fa214SAhmad Masri 	/* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
20708a4fa214SAhmad Masri 	u8 cid;
20718a4fa214SAhmad Masri 	/* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
20728a4fa214SAhmad Masri 	u8 tid;
20738a4fa214SAhmad Masri 	u8 reserved[2];
20742be7d22fSVladimir Kondratiev } __packed;
20752be7d22fSVladimir Kondratiev 
2076b874ddecSLior David /* WMI_VRING_CFG_DONE_EVENTID */
20772be7d22fSVladimir Kondratiev struct wmi_vring_cfg_done_event {
20782be7d22fSVladimir Kondratiev 	u8 ringid;
20792be7d22fSVladimir Kondratiev 	u8 status;
20802be7d22fSVladimir Kondratiev 	u8 reserved[2];
20812be7d22fSVladimir Kondratiev 	__le32 tx_vring_tail_ptr;
20822be7d22fSVladimir Kondratiev } __packed;
20832be7d22fSVladimir Kondratiev 
2084b874ddecSLior David /* WMI_RCP_ADDBA_RESP_SENT_EVENTID */
20852be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_sent_event {
20868a4fa214SAhmad Masri 	/* Used for cid less than 8. For higher cid set
20878a4fa214SAhmad Masri 	 * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead
20888a4fa214SAhmad Masri 	 */
20892be7d22fSVladimir Kondratiev 	u8 cidxtid;
20902be7d22fSVladimir Kondratiev 	u8 reserved;
20912be7d22fSVladimir Kondratiev 	__le16 status;
20928a4fa214SAhmad Masri 	/* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
20938a4fa214SAhmad Masri 	u8 cid;
20948a4fa214SAhmad Masri 	/* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
20958a4fa214SAhmad Masri 	u8 tid;
20968a4fa214SAhmad Masri 	u8 reserved2[2];
20972be7d22fSVladimir Kondratiev } __packed;
20982be7d22fSVladimir Kondratiev 
2099*96c93589SGidon Studinski /* WMI_TX_STATUS_RING_CFG_DONE_EVENTID */
2100*96c93589SGidon Studinski struct wmi_tx_status_ring_cfg_done_event {
2101*96c93589SGidon Studinski 	u8 ring_id;
2102*96c93589SGidon Studinski 	/* wmi_fw_status */
2103*96c93589SGidon Studinski 	u8 status;
2104*96c93589SGidon Studinski 	u8 reserved[2];
2105*96c93589SGidon Studinski 	__le32 ring_tail_ptr;
2106*96c93589SGidon Studinski } __packed;
2107*96c93589SGidon Studinski 
2108*96c93589SGidon Studinski /* WMI_RX_STATUS_RING_CFG_DONE_EVENTID */
2109*96c93589SGidon Studinski struct wmi_rx_status_ring_cfg_done_event {
2110*96c93589SGidon Studinski 	u8 ring_id;
2111*96c93589SGidon Studinski 	/* wmi_fw_status */
2112*96c93589SGidon Studinski 	u8 status;
2113*96c93589SGidon Studinski 	u8 reserved[2];
2114*96c93589SGidon Studinski 	__le32 ring_tail_ptr;
2115*96c93589SGidon Studinski } __packed;
2116*96c93589SGidon Studinski 
2117*96c93589SGidon Studinski /* WMI_CFG_DEF_RX_OFFLOAD_DONE_EVENTID */
2118*96c93589SGidon Studinski struct wmi_cfg_def_rx_offload_done_event {
2119*96c93589SGidon Studinski 	/* wmi_fw_status */
2120*96c93589SGidon Studinski 	u8 status;
2121*96c93589SGidon Studinski 	u8 reserved[3];
2122*96c93589SGidon Studinski } __packed;
2123*96c93589SGidon Studinski 
2124*96c93589SGidon Studinski /* WMI_TX_DESC_RING_CFG_DONE_EVENTID */
2125*96c93589SGidon Studinski struct wmi_tx_desc_ring_cfg_done_event {
2126*96c93589SGidon Studinski 	u8 ring_id;
2127*96c93589SGidon Studinski 	/* wmi_fw_status */
2128*96c93589SGidon Studinski 	u8 status;
2129*96c93589SGidon Studinski 	u8 reserved[2];
2130*96c93589SGidon Studinski 	__le32 ring_tail_ptr;
2131*96c93589SGidon Studinski } __packed;
2132*96c93589SGidon Studinski 
2133*96c93589SGidon Studinski /* WMI_RX_DESC_RING_CFG_DONE_EVENTID */
2134*96c93589SGidon Studinski struct wmi_rx_desc_ring_cfg_done_event {
2135*96c93589SGidon Studinski 	u8 ring_id;
2136*96c93589SGidon Studinski 	/* wmi_fw_status */
2137*96c93589SGidon Studinski 	u8 status;
2138*96c93589SGidon Studinski 	u8 reserved[2];
2139*96c93589SGidon Studinski 	__le32 ring_tail_ptr;
2140*96c93589SGidon Studinski } __packed;
2141*96c93589SGidon Studinski 
2142b874ddecSLior David /* WMI_RCP_ADDBA_REQ_EVENTID */
21432be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_event {
21448a4fa214SAhmad Masri 	/* Used for cid less than 8. For higher cid set
21458a4fa214SAhmad Masri 	 * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead
21468a4fa214SAhmad Masri 	 */
21472be7d22fSVladimir Kondratiev 	u8 cidxtid;
21482be7d22fSVladimir Kondratiev 	u8 dialog_token;
2149b874ddecSLior David 	/* ieee80211_ba_parameterset as it received */
2150b874ddecSLior David 	__le16 ba_param_set;
21512be7d22fSVladimir Kondratiev 	__le16 ba_timeout;
2152b874ddecSLior David 	/* ieee80211_ba_seqstrl field as it received */
2153b874ddecSLior David 	__le16 ba_seq_ctrl;
21548a4fa214SAhmad Masri 	/* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
21558a4fa214SAhmad Masri 	u8 cid;
21568a4fa214SAhmad Masri 	/* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
21578a4fa214SAhmad Masri 	u8 tid;
21588a4fa214SAhmad Masri 	u8 reserved[2];
21592be7d22fSVladimir Kondratiev } __packed;
21602be7d22fSVladimir Kondratiev 
2161b874ddecSLior David /* WMI_CFG_RX_CHAIN_DONE_EVENTID */
21622be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_done_event_status {
2163b874ddecSLior David 	WMI_CFG_RX_CHAIN_SUCCESS	= 0x01,
21642be7d22fSVladimir Kondratiev };
21652be7d22fSVladimir Kondratiev 
21662be7d22fSVladimir Kondratiev struct wmi_cfg_rx_chain_done_event {
2167b874ddecSLior David 	/* V-Ring Tail pointer */
2168b874ddecSLior David 	__le32 rx_ring_tail_ptr;
21692be7d22fSVladimir Kondratiev 	__le32 status;
21702be7d22fSVladimir Kondratiev } __packed;
21712be7d22fSVladimir Kondratiev 
2172b874ddecSLior David /* WMI_WBE_LINK_DOWN_EVENTID */
21732be7d22fSVladimir Kondratiev enum wmi_wbe_link_down_event_reason {
2174b874ddecSLior David 	WMI_WBE_REASON_USER_REQUEST	= 0x00,
2175b874ddecSLior David 	WMI_WBE_REASON_RX_DISASSOC	= 0x01,
2176b874ddecSLior David 	WMI_WBE_REASON_BAD_PHY_LINK	= 0x02,
21772be7d22fSVladimir Kondratiev };
21782be7d22fSVladimir Kondratiev 
2179b874ddecSLior David /* WMI_WBE_LINK_DOWN_EVENTID */
21802be7d22fSVladimir Kondratiev struct wmi_wbe_link_down_event {
21812be7d22fSVladimir Kondratiev 	u8 cid;
21822be7d22fSVladimir Kondratiev 	u8 reserved[3];
21832be7d22fSVladimir Kondratiev 	__le32 reason;
21842be7d22fSVladimir Kondratiev } __packed;
21852be7d22fSVladimir Kondratiev 
2186b874ddecSLior David /* WMI_DATA_PORT_OPEN_EVENTID */
21872be7d22fSVladimir Kondratiev struct wmi_data_port_open_event {
21882be7d22fSVladimir Kondratiev 	u8 cid;
21892be7d22fSVladimir Kondratiev 	u8 reserved[3];
21902be7d22fSVladimir Kondratiev } __packed;
21912be7d22fSVladimir Kondratiev 
2192*96c93589SGidon Studinski /* WMI_RING_EN_EVENTID */
2193*96c93589SGidon Studinski struct wmi_ring_en_event {
2194*96c93589SGidon Studinski 	u8 ring_index;
2195230d8442SVladimir Kondratiev 	u8 reserved[3];
2196230d8442SVladimir Kondratiev } __packed;
2197230d8442SVladimir Kondratiev 
2198b874ddecSLior David /* WMI_GET_PCP_CHANNEL_EVENTID */
21992be7d22fSVladimir Kondratiev struct wmi_get_pcp_channel_event {
22002be7d22fSVladimir Kondratiev 	u8 channel;
22012be7d22fSVladimir Kondratiev 	u8 reserved[3];
22022be7d22fSVladimir Kondratiev } __packed;
22032be7d22fSVladimir Kondratiev 
2204b874ddecSLior David /* WMI_P2P_CFG_DONE_EVENTID */
22058c679675SVladimir Kondratiev struct wmi_p2p_cfg_done_event {
2206b874ddecSLior David 	/* wmi_fw_status */
2207b874ddecSLior David 	u8 status;
22088c679675SVladimir Kondratiev 	u8 reserved[3];
22098c679675SVladimir Kondratiev } __packed;
22108c679675SVladimir Kondratiev 
2211b874ddecSLior David /* WMI_PORT_ALLOCATED_EVENTID */
2212b8023177SVladimir Kondratiev struct wmi_port_allocated_event {
2213b874ddecSLior David 	/* wmi_fw_status */
2214b874ddecSLior David 	u8 status;
2215b8023177SVladimir Kondratiev 	u8 reserved[3];
2216b8023177SVladimir Kondratiev } __packed;
2217b8023177SVladimir Kondratiev 
2218b874ddecSLior David /* WMI_PORT_DELETED_EVENTID */
2219b8023177SVladimir Kondratiev struct wmi_port_deleted_event {
2220b874ddecSLior David 	/* wmi_fw_status */
2221b874ddecSLior David 	u8 status;
2222b8023177SVladimir Kondratiev 	u8 reserved[3];
2223b8023177SVladimir Kondratiev } __packed;
2224b8023177SVladimir Kondratiev 
2225b874ddecSLior David /* WMI_LISTEN_STARTED_EVENTID */
2226b8023177SVladimir Kondratiev struct wmi_listen_started_event {
2227b874ddecSLior David 	/* wmi_fw_status */
2228b874ddecSLior David 	u8 status;
2229b8023177SVladimir Kondratiev 	u8 reserved[3];
2230b8023177SVladimir Kondratiev } __packed;
2231b8023177SVladimir Kondratiev 
2232b874ddecSLior David /* WMI_SEARCH_STARTED_EVENTID */
2233b8023177SVladimir Kondratiev struct wmi_search_started_event {
2234b874ddecSLior David 	/* wmi_fw_status */
2235b874ddecSLior David 	u8 status;
2236b8023177SVladimir Kondratiev 	u8 reserved[3];
2237b8023177SVladimir Kondratiev } __packed;
2238b8023177SVladimir Kondratiev 
2239b874ddecSLior David /* WMI_PCP_STARTED_EVENTID */
2240b8023177SVladimir Kondratiev struct wmi_pcp_started_event {
2241b874ddecSLior David 	/* wmi_fw_status */
2242b874ddecSLior David 	u8 status;
2243b8023177SVladimir Kondratiev 	u8 reserved[3];
2244b8023177SVladimir Kondratiev } __packed;
2245b8023177SVladimir Kondratiev 
2246b874ddecSLior David /* WMI_PCP_FACTOR_EVENTID */
2247b8023177SVladimir Kondratiev struct wmi_pcp_factor_event {
2248b8023177SVladimir Kondratiev 	__le32 pcp_factor;
2249b8023177SVladimir Kondratiev } __packed;
2250b8023177SVladimir Kondratiev 
22512be7d22fSVladimir Kondratiev enum wmi_sw_tx_status {
2252b874ddecSLior David 	WMI_TX_SW_STATUS_SUCCESS		= 0x00,
2253b874ddecSLior David 	WMI_TX_SW_STATUS_FAILED_NO_RESOURCES	= 0x01,
2254b874ddecSLior David 	WMI_TX_SW_STATUS_FAILED_TX		= 0x02,
22552be7d22fSVladimir Kondratiev };
22562be7d22fSVladimir Kondratiev 
2257b874ddecSLior David /* WMI_SW_TX_COMPLETE_EVENTID */
22582be7d22fSVladimir Kondratiev struct wmi_sw_tx_complete_event {
2259b874ddecSLior David 	/* enum wmi_sw_tx_status */
2260b874ddecSLior David 	u8 status;
22612be7d22fSVladimir Kondratiev 	u8 reserved[3];
22622be7d22fSVladimir Kondratiev } __packed;
22632be7d22fSVladimir Kondratiev 
2264761f8e4dSLazar Alexei /* WMI_CORR_MEASURE_EVENTID - deprecated */
2265b8023177SVladimir Kondratiev struct wmi_corr_measure_event {
2266b874ddecSLior David 	/* signed */
2267b874ddecSLior David 	__le32 i;
2268b874ddecSLior David 	/* signed */
2269b874ddecSLior David 	__le32 q;
2270b874ddecSLior David 	/* signed */
2271b874ddecSLior David 	__le32 image_i;
2272b874ddecSLior David 	/* signed */
2273b874ddecSLior David 	__le32 image_q;
2274b8023177SVladimir Kondratiev } __packed;
2275b8023177SVladimir Kondratiev 
2276b874ddecSLior David /* WMI_READ_RSSI_EVENTID */
2277b8023177SVladimir Kondratiev struct wmi_read_rssi_event {
2278b8023177SVladimir Kondratiev 	__le32 ina_rssi_adc_dbm;
2279b8023177SVladimir Kondratiev } __packed;
2280b8023177SVladimir Kondratiev 
2281b874ddecSLior David /* WMI_GET_SSID_EVENTID */
22822be7d22fSVladimir Kondratiev struct wmi_get_ssid_event {
22832be7d22fSVladimir Kondratiev 	__le32 ssid_len;
22842be7d22fSVladimir Kondratiev 	u8 ssid[WMI_MAX_SSID_LEN];
22852be7d22fSVladimir Kondratiev } __packed;
22862be7d22fSVladimir Kondratiev 
2287761f8e4dSLazar Alexei /* EVENT: WMI_RF_XPM_READ_RESULT_EVENTID */
2288761f8e4dSLazar Alexei struct wmi_rf_xpm_read_result_event {
2289761f8e4dSLazar Alexei 	/* enum wmi_fw_status_e - success=0 or fail=1 */
2290761f8e4dSLazar Alexei 	u8 status;
2291761f8e4dSLazar Alexei 	u8 reserved[3];
2292761f8e4dSLazar Alexei 	/* requested num_bytes of data */
2293761f8e4dSLazar Alexei 	u8 data_bytes[0];
2294b874ddecSLior David } __packed;
2295b874ddecSLior David 
2296761f8e4dSLazar Alexei /* EVENT: WMI_RF_XPM_WRITE_RESULT_EVENTID */
2297761f8e4dSLazar Alexei struct wmi_rf_xpm_write_result_event {
2298761f8e4dSLazar Alexei 	/* enum wmi_fw_status_e - success=0 or fail=1 */
2299761f8e4dSLazar Alexei 	u8 status;
2300761f8e4dSLazar Alexei 	u8 reserved[3];
2301b874ddecSLior David } __packed;
2302b874ddecSLior David 
2303b874ddecSLior David /* WMI_TX_MGMT_PACKET_EVENTID */
23046c2faf09SVladimir Kondratiev struct wmi_tx_mgmt_packet_event {
23056c2faf09SVladimir Kondratiev 	u8 payload[0];
23066c2faf09SVladimir Kondratiev } __packed;
23076c2faf09SVladimir Kondratiev 
2308b874ddecSLior David /* WMI_RX_MGMT_PACKET_EVENTID */
23092be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_packet_event {
23102be7d22fSVladimir Kondratiev 	struct wmi_rx_mgmt_info info;
23112be7d22fSVladimir Kondratiev 	u8 payload[0];
23122be7d22fSVladimir Kondratiev } __packed;
23132be7d22fSVladimir Kondratiev 
2314b874ddecSLior David /* WMI_ECHO_RSP_EVENTID */
2315b874ddecSLior David struct wmi_echo_rsp_event {
23162be7d22fSVladimir Kondratiev 	__le32 echoed_value;
23172be7d22fSVladimir Kondratiev } __packed;
23182be7d22fSVladimir Kondratiev 
2319761f8e4dSLazar Alexei /* WMI_RF_PWR_ON_DELAY_RSP_EVENTID */
2320761f8e4dSLazar Alexei struct wmi_rf_pwr_on_delay_rsp_event {
2321761f8e4dSLazar Alexei 	/* wmi_fw_status */
2322761f8e4dSLazar Alexei 	u8 status;
2323761f8e4dSLazar Alexei 	u8 reserved[3];
2324761f8e4dSLazar Alexei } __packed;
2325761f8e4dSLazar Alexei 
2326761f8e4dSLazar Alexei /* WMI_SET_HIGH_POWER_TABLE_PARAMS_EVENTID */
2327761f8e4dSLazar Alexei struct wmi_set_high_power_table_params_event {
2328761f8e4dSLazar Alexei 	/* wmi_fw_status */
2329761f8e4dSLazar Alexei 	u8 status;
2330761f8e4dSLazar Alexei 	u8 reserved[3];
2331761f8e4dSLazar Alexei } __packed;
2332761f8e4dSLazar Alexei 
23338a4fa214SAhmad Masri /* WMI_FIXED_SCHEDULING_UL_CONFIG_EVENTID */
23348a4fa214SAhmad Masri struct wmi_fixed_scheduling_ul_config_event {
23358a4fa214SAhmad Masri 	/* wmi_fw_status */
23368a4fa214SAhmad Masri 	u8 status;
23378a4fa214SAhmad Masri 	u8 reserved[3];
23388a4fa214SAhmad Masri } __packed;
23398a4fa214SAhmad Masri 
2340b874ddecSLior David /* WMI_TEMP_SENSE_DONE_EVENTID
2341b8023177SVladimir Kondratiev  *
2342b8023177SVladimir Kondratiev  * Measure MAC and radio temperatures
2343b8023177SVladimir Kondratiev  */
2344b8023177SVladimir Kondratiev struct wmi_temp_sense_done_event {
2345b874ddecSLior David 	/* Temperature times 1000 (actual temperature will be achieved by
2346b874ddecSLior David 	 * dividing the value by 1000)
2347b874ddecSLior David 	 */
23488c679675SVladimir Kondratiev 	__le32 baseband_t1000;
2349b874ddecSLior David 	/* Temperature times 1000 (actual temperature will be achieved by
2350b874ddecSLior David 	 * dividing the value by 1000)
2351b874ddecSLior David 	 */
23528c679675SVladimir Kondratiev 	__le32 rf_t1000;
2353b8023177SVladimir Kondratiev } __packed;
2354b8023177SVladimir Kondratiev 
2355b874ddecSLior David #define WMI_SCAN_DWELL_TIME_MS	(100)
2356b874ddecSLior David #define WMI_SURVEY_TIMEOUT_MS	(10000)
2357b874ddecSLior David 
2358b874ddecSLior David enum wmi_hidden_ssid {
2359b874ddecSLior David 	WMI_HIDDEN_SSID_DISABLED	= 0x00,
2360b874ddecSLior David 	WMI_HIDDEN_SSID_SEND_EMPTY	= 0x10,
2361b874ddecSLior David 	WMI_HIDDEN_SSID_CLEAR		= 0xFE,
2362b874ddecSLior David };
2363b874ddecSLior David 
236410d599adSMaya Erez /* WMI_LED_CFG_CMDID
236510d599adSMaya Erez  *
236610d599adSMaya Erez  * Configure LED On\Off\Blinking operation
236710d599adSMaya Erez  *
236810d599adSMaya Erez  * Returned events:
236910d599adSMaya Erez  * - WMI_LED_CFG_DONE_EVENTID
237010d599adSMaya Erez  */
237110d599adSMaya Erez enum led_mode {
237210d599adSMaya Erez 	LED_DISABLE	= 0x00,
237310d599adSMaya Erez 	LED_ENABLE	= 0x01,
237410d599adSMaya Erez };
237510d599adSMaya Erez 
237610d599adSMaya Erez /* The names of the led as
237710d599adSMaya Erez  * described on HW schemes.
237810d599adSMaya Erez  */
237910d599adSMaya Erez enum wmi_led_id {
238010d599adSMaya Erez 	WMI_LED_WLAN	= 0x00,
238110d599adSMaya Erez 	WMI_LED_WPAN	= 0x01,
238210d599adSMaya Erez 	WMI_LED_WWAN	= 0x02,
238310d599adSMaya Erez };
238410d599adSMaya Erez 
238510d599adSMaya Erez /* Led polarity mode. */
238610d599adSMaya Erez enum wmi_led_polarity {
238710d599adSMaya Erez 	LED_POLARITY_HIGH_ACTIVE	= 0x00,
238810d599adSMaya Erez 	LED_POLARITY_LOW_ACTIVE		= 0x01,
238910d599adSMaya Erez };
239010d599adSMaya Erez 
239110d599adSMaya Erez /* Combination of on and off
239210d599adSMaya Erez  * creates the blinking period
239310d599adSMaya Erez  */
239410d599adSMaya Erez struct wmi_led_blink_mode {
239510d599adSMaya Erez 	__le32 blink_on;
239610d599adSMaya Erez 	__le32 blink_off;
239710d599adSMaya Erez } __packed;
239810d599adSMaya Erez 
239910d599adSMaya Erez /* WMI_LED_CFG_CMDID */
240010d599adSMaya Erez struct wmi_led_cfg_cmd {
240110d599adSMaya Erez 	/* enum led_mode_e */
240210d599adSMaya Erez 	u8 led_mode;
240310d599adSMaya Erez 	/* enum wmi_led_id_e */
240410d599adSMaya Erez 	u8 id;
240510d599adSMaya Erez 	/* slow speed blinking combination */
240610d599adSMaya Erez 	struct wmi_led_blink_mode slow_blink_cfg;
240710d599adSMaya Erez 	/* medium speed blinking combination */
240810d599adSMaya Erez 	struct wmi_led_blink_mode medium_blink_cfg;
240910d599adSMaya Erez 	/* high speed blinking combination */
241010d599adSMaya Erez 	struct wmi_led_blink_mode fast_blink_cfg;
241110d599adSMaya Erez 	/* polarity of the led */
241210d599adSMaya Erez 	u8 led_polarity;
241310d599adSMaya Erez 	/* reserved */
241410d599adSMaya Erez 	u8 reserved;
241510d599adSMaya Erez } __packed;
241610d599adSMaya Erez 
2417761f8e4dSLazar Alexei /* \WMI_SET_CONNECT_SNR_THR_CMDID */
2418761f8e4dSLazar Alexei struct wmi_set_connect_snr_thr_cmd {
2419761f8e4dSLazar Alexei 	u8 enable;
2420761f8e4dSLazar Alexei 	u8 reserved;
2421761f8e4dSLazar Alexei 	/* 1/4 Db units */
2422761f8e4dSLazar Alexei 	__le16 omni_snr_thr;
2423761f8e4dSLazar Alexei 	/* 1/4 Db units */
2424761f8e4dSLazar Alexei 	__le16 direct_snr_thr;
2425761f8e4dSLazar Alexei } __packed;
2426761f8e4dSLazar Alexei 
242710d599adSMaya Erez /* WMI_LED_CFG_DONE_EVENTID */
242810d599adSMaya Erez struct wmi_led_cfg_done_event {
242910d599adSMaya Erez 	/* led config status */
243010d599adSMaya Erez 	__le32 status;
243110d599adSMaya Erez } __packed;
243210d599adSMaya Erez 
24330163b031SMaya Erez /* Rate search parameters configuration per connection */
24340163b031SMaya Erez struct wmi_rs_cfg {
24350163b031SMaya Erez 	/* The maximal allowed PER for each MCS
24360163b031SMaya Erez 	 * MCS will be considered as failed if PER during RS is higher
24370163b031SMaya Erez 	 */
24380163b031SMaya Erez 	u8 per_threshold[WMI_NUM_MCS];
24390163b031SMaya Erez 	/* Number of MPDUs for each MCS
24400163b031SMaya Erez 	 * this is the minimal statistic required to make an educated
24410163b031SMaya Erez 	 * decision
24420163b031SMaya Erez 	 */
24430163b031SMaya Erez 	u8 min_frame_cnt[WMI_NUM_MCS];
24440163b031SMaya Erez 	/* stop threshold [0-100] */
24450163b031SMaya Erez 	u8 stop_th;
24460163b031SMaya Erez 	/* MCS1 stop threshold [0-100] */
24470163b031SMaya Erez 	u8 mcs1_fail_th;
24480163b031SMaya Erez 	u8 max_back_failure_th;
24490163b031SMaya Erez 	/* Debug feature for disabling internal RS trigger (which is
24500163b031SMaya Erez 	 * currently triggered by BF Done)
24510163b031SMaya Erez 	 */
24520163b031SMaya Erez 	u8 dbg_disable_internal_trigger;
24530163b031SMaya Erez 	__le32 back_failure_mask;
24540163b031SMaya Erez 	__le32 mcs_en_vec;
24550163b031SMaya Erez } __packed;
24560163b031SMaya Erez 
2457761f8e4dSLazar Alexei /* Slot types */
2458761f8e4dSLazar Alexei enum wmi_sched_scheme_slot_type {
2459761f8e4dSLazar Alexei 	WMI_SCHED_SLOT_SP		= 0x0,
2460761f8e4dSLazar Alexei 	WMI_SCHED_SLOT_CBAP		= 0x1,
2461761f8e4dSLazar Alexei 	WMI_SCHED_SLOT_IDLE		= 0x2,
2462761f8e4dSLazar Alexei 	WMI_SCHED_SLOT_ANNOUNCE_NO_ACK	= 0x3,
2463761f8e4dSLazar Alexei 	WMI_SCHED_SLOT_DISCOVERY	= 0x4,
2464761f8e4dSLazar Alexei };
2465761f8e4dSLazar Alexei 
2466761f8e4dSLazar Alexei enum wmi_sched_scheme_slot_flags {
2467761f8e4dSLazar Alexei 	WMI_SCHED_SCHEME_SLOT_PERIODIC	= 0x1,
2468761f8e4dSLazar Alexei };
2469761f8e4dSLazar Alexei 
2470761f8e4dSLazar Alexei struct wmi_sched_scheme_slot {
2471761f8e4dSLazar Alexei 	/* in microsecond */
2472761f8e4dSLazar Alexei 	__le32 tbtt_offset;
2473761f8e4dSLazar Alexei 	/* wmi_sched_scheme_slot_flags */
2474761f8e4dSLazar Alexei 	u8 flags;
2475761f8e4dSLazar Alexei 	/* wmi_sched_scheme_slot_type */
2476761f8e4dSLazar Alexei 	u8 type;
2477761f8e4dSLazar Alexei 	/* in microsecond */
2478761f8e4dSLazar Alexei 	__le16 duration;
2479761f8e4dSLazar Alexei 	/* frame_exchange_sequence_duration */
2480761f8e4dSLazar Alexei 	__le16 tx_op;
2481761f8e4dSLazar Alexei 	/* time in microseconds between two consecutive slots
2482761f8e4dSLazar Alexei 	 * relevant only if flag WMI_SCHED_SCHEME_SLOT_PERIODIC set
2483761f8e4dSLazar Alexei 	 */
2484761f8e4dSLazar Alexei 	__le16 period;
2485761f8e4dSLazar Alexei 	/* relevant only if flag WMI_SCHED_SCHEME_SLOT_PERIODIC set
2486761f8e4dSLazar Alexei 	 * number of times to repeat allocation
2487761f8e4dSLazar Alexei 	 */
2488761f8e4dSLazar Alexei 	u8 num_of_blocks;
2489761f8e4dSLazar Alexei 	/* relevant only if flag WMI_SCHED_SCHEME_SLOT_PERIODIC set
2490761f8e4dSLazar Alexei 	 * every idle_period allocation will be idle
2491761f8e4dSLazar Alexei 	 */
2492761f8e4dSLazar Alexei 	u8 idle_period;
2493761f8e4dSLazar Alexei 	u8 src_aid;
2494761f8e4dSLazar Alexei 	u8 dest_aid;
2495761f8e4dSLazar Alexei 	__le32 reserved;
2496761f8e4dSLazar Alexei } __packed;
2497761f8e4dSLazar Alexei 
2498761f8e4dSLazar Alexei enum wmi_sched_scheme_flags {
2499761f8e4dSLazar Alexei 	/* should not be set when clearing scheduling scheme */
2500761f8e4dSLazar Alexei 	WMI_SCHED_SCHEME_ENABLE		= 0x01,
2501761f8e4dSLazar Alexei 	WMI_SCHED_PROTECTED_SP		= 0x02,
2502761f8e4dSLazar Alexei 	/* should be set only on first WMI fragment of scheme */
2503761f8e4dSLazar Alexei 	WMI_SCHED_FIRST			= 0x04,
2504761f8e4dSLazar Alexei 	/* should be set only on last WMI fragment of scheme */
2505761f8e4dSLazar Alexei 	WMI_SCHED_LAST			= 0x08,
2506761f8e4dSLazar Alexei 	WMI_SCHED_IMMEDIATE_START	= 0x10,
2507761f8e4dSLazar Alexei };
2508761f8e4dSLazar Alexei 
2509761f8e4dSLazar Alexei enum wmi_sched_scheme_advertisment {
2510761f8e4dSLazar Alexei 	/* ESE is not advertised at all, STA has to be configured with WMI
2511761f8e4dSLazar Alexei 	 * also
2512761f8e4dSLazar Alexei 	 */
2513761f8e4dSLazar Alexei 	WMI_ADVERTISE_ESE_DISABLED		= 0x0,
2514761f8e4dSLazar Alexei 	WMI_ADVERTISE_ESE_IN_BEACON		= 0x1,
2515761f8e4dSLazar Alexei 	WMI_ADVERTISE_ESE_IN_ANNOUNCE_FRAME	= 0x2,
2516761f8e4dSLazar Alexei };
2517761f8e4dSLazar Alexei 
2518761f8e4dSLazar Alexei /* WMI_SCHEDULING_SCHEME_CMD */
2519761f8e4dSLazar Alexei struct wmi_scheduling_scheme_cmd {
2520761f8e4dSLazar Alexei 	u8 serial_num;
2521761f8e4dSLazar Alexei 	/* wmi_sched_scheme_advertisment */
2522761f8e4dSLazar Alexei 	u8 ese_advertisment;
2523761f8e4dSLazar Alexei 	/* wmi_sched_scheme_flags */
2524761f8e4dSLazar Alexei 	__le16 flags;
2525761f8e4dSLazar Alexei 	u8 num_allocs;
2526761f8e4dSLazar Alexei 	u8 reserved[3];
2527761f8e4dSLazar Alexei 	__le64 start_tbtt;
2528761f8e4dSLazar Alexei 	/* allocations list */
2529761f8e4dSLazar Alexei 	struct wmi_sched_scheme_slot allocs[WMI_SCHED_MAX_ALLOCS_PER_CMD];
2530761f8e4dSLazar Alexei } __packed;
2531761f8e4dSLazar Alexei 
2532761f8e4dSLazar Alexei enum wmi_sched_scheme_failure_type {
2533761f8e4dSLazar Alexei 	WMI_SCHED_SCHEME_FAILURE_NO_ERROR		= 0x00,
2534761f8e4dSLazar Alexei 	WMI_SCHED_SCHEME_FAILURE_OLD_START_TSF_ERR	= 0x01,
2535761f8e4dSLazar Alexei };
2536761f8e4dSLazar Alexei 
2537761f8e4dSLazar Alexei /* WMI_SCHEDULING_SCHEME_EVENTID */
2538761f8e4dSLazar Alexei struct wmi_scheduling_scheme_event {
2539761f8e4dSLazar Alexei 	/* wmi_fw_status_e */
2540761f8e4dSLazar Alexei 	u8 status;
2541761f8e4dSLazar Alexei 	/* serial number given in command */
2542761f8e4dSLazar Alexei 	u8 serial_num;
2543761f8e4dSLazar Alexei 	/* wmi_sched_scheme_failure_type */
2544761f8e4dSLazar Alexei 	u8 failure_type;
2545761f8e4dSLazar Alexei 	/* alignment to 32b */
2546761f8e4dSLazar Alexei 	u8 reserved[1];
2547761f8e4dSLazar Alexei } __packed;
2548761f8e4dSLazar Alexei 
25490163b031SMaya Erez /* WMI_RS_CFG_CMDID */
25500163b031SMaya Erez struct wmi_rs_cfg_cmd {
25510163b031SMaya Erez 	/* connection id */
25520163b031SMaya Erez 	u8 cid;
25530163b031SMaya Erez 	/* enable or disable rate search */
25540163b031SMaya Erez 	u8 rs_enable;
25550163b031SMaya Erez 	/* rate search configuration */
25560163b031SMaya Erez 	struct wmi_rs_cfg rs_cfg;
25570163b031SMaya Erez } __packed;
25580163b031SMaya Erez 
25590163b031SMaya Erez /* WMI_RS_CFG_DONE_EVENTID */
25600163b031SMaya Erez struct wmi_rs_cfg_done_event {
25610163b031SMaya Erez 	u8 cid;
25620163b031SMaya Erez 	/* enum wmi_fw_status */
25630163b031SMaya Erez 	u8 status;
25640163b031SMaya Erez 	u8 reserved[2];
25650163b031SMaya Erez } __packed;
25660163b031SMaya Erez 
256708989f96SLior David /* WMI_GET_DETAILED_RS_RES_CMDID */
256808989f96SLior David struct wmi_get_detailed_rs_res_cmd {
256908989f96SLior David 	/* connection id */
257008989f96SLior David 	u8 cid;
257108989f96SLior David 	u8 reserved[3];
257208989f96SLior David } __packed;
257308989f96SLior David 
257408989f96SLior David /* RS results status */
257508989f96SLior David enum wmi_rs_results_status {
257608989f96SLior David 	WMI_RS_RES_VALID	= 0x00,
257708989f96SLior David 	WMI_RS_RES_INVALID	= 0x01,
257808989f96SLior David };
257908989f96SLior David 
258008989f96SLior David /* Rate search results */
258108989f96SLior David struct wmi_rs_results {
258208989f96SLior David 	/* number of sent MPDUs */
258308989f96SLior David 	u8 num_of_tx_pkt[WMI_NUM_MCS];
258408989f96SLior David 	/* number of non-acked MPDUs */
258508989f96SLior David 	u8 num_of_non_acked_pkt[WMI_NUM_MCS];
258608989f96SLior David 	/* RS timestamp */
258708989f96SLior David 	__le32 tsf;
258808989f96SLior David 	/* RS selected MCS */
258908989f96SLior David 	u8 mcs;
259008989f96SLior David } __packed;
259108989f96SLior David 
259208989f96SLior David /* WMI_GET_DETAILED_RS_RES_EVENTID */
259308989f96SLior David struct wmi_get_detailed_rs_res_event {
259408989f96SLior David 	u8 cid;
259508989f96SLior David 	/* enum wmi_rs_results_status */
259608989f96SLior David 	u8 status;
259708989f96SLior David 	/* detailed rs results */
259808989f96SLior David 	struct wmi_rs_results rs_results;
259908989f96SLior David 	u8 reserved[3];
260008989f96SLior David } __packed;
260108989f96SLior David 
2602a52fb913SLior David /* BRP antenna limit mode */
2603a52fb913SLior David enum wmi_brp_ant_limit_mode {
2604a52fb913SLior David 	/* Disable BRP force antenna limit */
2605a52fb913SLior David 	WMI_BRP_ANT_LIMIT_MODE_DISABLE		= 0x00,
2606a52fb913SLior David 	/* Define maximal antennas limit. Only effective antennas will be
2607a52fb913SLior David 	 * actually used
2608a52fb913SLior David 	 */
2609a52fb913SLior David 	WMI_BRP_ANT_LIMIT_MODE_EFFECTIVE	= 0x01,
2610a52fb913SLior David 	/* Force a specific number of antennas */
2611a52fb913SLior David 	WMI_BRP_ANT_LIMIT_MODE_FORCE		= 0x02,
2612a52fb913SLior David 	/* number of BRP antenna limit modes */
2613a52fb913SLior David 	WMI_BRP_ANT_LIMIT_MODES_NUM		= 0x03,
2614a52fb913SLior David };
2615a52fb913SLior David 
2616a52fb913SLior David /* WMI_BRP_SET_ANT_LIMIT_CMDID */
2617a52fb913SLior David struct wmi_brp_set_ant_limit_cmd {
2618a52fb913SLior David 	/* connection id */
2619a52fb913SLior David 	u8 cid;
2620a52fb913SLior David 	/* enum wmi_brp_ant_limit_mode */
2621a52fb913SLior David 	u8 limit_mode;
2622a52fb913SLior David 	/* antenna limit count, 1-27
2623a52fb913SLior David 	 * disable_mode - ignored
2624a52fb913SLior David 	 * effective_mode - upper limit to number of antennas to be used
2625a52fb913SLior David 	 * force_mode - exact number of antennas to be used
2626a52fb913SLior David 	 */
2627a52fb913SLior David 	u8 ant_limit;
2628a52fb913SLior David 	u8 reserved;
2629a52fb913SLior David } __packed;
2630a52fb913SLior David 
2631a52fb913SLior David /* WMI_BRP_SET_ANT_LIMIT_EVENTID */
2632a52fb913SLior David struct wmi_brp_set_ant_limit_event {
2633a52fb913SLior David 	/* wmi_fw_status */
2634a52fb913SLior David 	u8 status;
2635a52fb913SLior David 	u8 reserved[3];
2636a52fb913SLior David } __packed;
2637a52fb913SLior David 
26380163b031SMaya Erez /* broadcast connection ID */
26390163b031SMaya Erez #define WMI_LINK_MAINTAIN_CFG_CID_BROADCAST	(0xFFFFFFFF)
26400163b031SMaya Erez 
26410163b031SMaya Erez /* Types wmi_link_maintain_cfg presets for WMI_LINK_MAINTAIN_CFG_WRITE_CMD */
26420163b031SMaya Erez enum wmi_link_maintain_cfg_type {
26430163b031SMaya Erez 	/* AP/PCP default normal (non-FST) configuration settings */
26440163b031SMaya Erez 	WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_NORMAL_AP	= 0x00,
26450163b031SMaya Erez 	/* AP/PCP  default FST configuration settings */
26460163b031SMaya Erez 	WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_FST_AP	= 0x01,
26470163b031SMaya Erez 	/* STA default normal (non-FST) configuration settings */
26480163b031SMaya Erez 	WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_NORMAL_STA	= 0x02,
26490163b031SMaya Erez 	/* STA default FST configuration settings */
26500163b031SMaya Erez 	WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_FST_STA	= 0x03,
26510163b031SMaya Erez 	/* custom configuration settings */
26520163b031SMaya Erez 	WMI_LINK_MAINTAIN_CFG_TYPE_CUSTOM		= 0x04,
26530163b031SMaya Erez 	/* number of defined configuration types */
26540163b031SMaya Erez 	WMI_LINK_MAINTAIN_CFG_TYPES_NUM			= 0x05,
26550163b031SMaya Erez };
26560163b031SMaya Erez 
26570163b031SMaya Erez /* Response status codes for WMI_LINK_MAINTAIN_CFG_WRITE/READ commands */
26580163b031SMaya Erez enum wmi_link_maintain_cfg_response_status {
26590163b031SMaya Erez 	/* WMI_LINK_MAINTAIN_CFG_WRITE/READ command successfully accomplished
26600163b031SMaya Erez 	 */
26610163b031SMaya Erez 	WMI_LINK_MAINTAIN_CFG_RESPONSE_STATUS_OK		= 0x00,
26620163b031SMaya Erez 	/* ERROR due to bad argument in WMI_LINK_MAINTAIN_CFG_WRITE/READ
26630163b031SMaya Erez 	 * command request
26640163b031SMaya Erez 	 */
26650163b031SMaya Erez 	WMI_LINK_MAINTAIN_CFG_RESPONSE_STATUS_BAD_ARGUMENT	= 0x01,
26660163b031SMaya Erez };
26670163b031SMaya Erez 
26680163b031SMaya Erez /* Link Loss and Keep Alive configuration */
26690163b031SMaya Erez struct wmi_link_maintain_cfg {
26700163b031SMaya Erez 	/* link_loss_enable_detectors_vec */
26710163b031SMaya Erez 	__le32 link_loss_enable_detectors_vec;
26720163b031SMaya Erez 	/* detectors check period usec */
26730163b031SMaya Erez 	__le32 check_link_loss_period_usec;
26740163b031SMaya Erez 	/* max allowed tx ageing */
26750163b031SMaya Erez 	__le32 tx_ageing_threshold_usec;
26760163b031SMaya Erez 	/* keep alive period for high SNR */
26770163b031SMaya Erez 	__le32 keep_alive_period_usec_high_snr;
26780163b031SMaya Erez 	/* keep alive period for low SNR */
26790163b031SMaya Erez 	__le32 keep_alive_period_usec_low_snr;
26800163b031SMaya Erez 	/* lower snr limit for keep alive period update */
26810163b031SMaya Erez 	__le32 keep_alive_snr_threshold_low_db;
26820163b031SMaya Erez 	/* upper snr limit for keep alive period update */
26830163b031SMaya Erez 	__le32 keep_alive_snr_threshold_high_db;
26840163b031SMaya Erez 	/* num of successive bad bcons causing link-loss */
26850163b031SMaya Erez 	__le32 bad_beacons_num_threshold;
26860163b031SMaya Erez 	/* SNR limit for bad_beacons_detector */
26870163b031SMaya Erez 	__le32 bad_beacons_snr_threshold_db;
26888a4fa214SAhmad Masri 	/* timeout for disassoc response frame in uSec */
26898a4fa214SAhmad Masri 	__le32 disconnect_timeout;
26900163b031SMaya Erez } __packed;
26910163b031SMaya Erez 
26920163b031SMaya Erez /* WMI_LINK_MAINTAIN_CFG_WRITE_CMDID */
26930163b031SMaya Erez struct wmi_link_maintain_cfg_write_cmd {
26940163b031SMaya Erez 	/* enum wmi_link_maintain_cfg_type_e - type of requested default
26950163b031SMaya Erez 	 * configuration to be applied
26960163b031SMaya Erez 	 */
26970163b031SMaya Erez 	__le32 cfg_type;
26980163b031SMaya Erez 	/* requested connection ID or WMI_LINK_MAINTAIN_CFG_CID_BROADCAST */
26990163b031SMaya Erez 	__le32 cid;
27000163b031SMaya Erez 	/* custom configuration settings to be applied (relevant only if
27010163b031SMaya Erez 	 * cfg_type==WMI_LINK_MAINTAIN_CFG_TYPE_CUSTOM)
27020163b031SMaya Erez 	 */
27030163b031SMaya Erez 	struct wmi_link_maintain_cfg lm_cfg;
27040163b031SMaya Erez } __packed;
27050163b031SMaya Erez 
27060163b031SMaya Erez /* WMI_LINK_MAINTAIN_CFG_READ_CMDID */
27070163b031SMaya Erez struct wmi_link_maintain_cfg_read_cmd {
27080163b031SMaya Erez 	/* connection ID which configuration settings are requested */
27090163b031SMaya Erez 	__le32 cid;
27100163b031SMaya Erez } __packed;
27110163b031SMaya Erez 
27120163b031SMaya Erez /* WMI_LINK_MAINTAIN_CFG_WRITE_DONE_EVENTID */
27130163b031SMaya Erez struct wmi_link_maintain_cfg_write_done_event {
27140163b031SMaya Erez 	/* requested connection ID */
27150163b031SMaya Erez 	__le32 cid;
27160163b031SMaya Erez 	/* wmi_link_maintain_cfg_response_status_e - write status */
27170163b031SMaya Erez 	__le32 status;
27180163b031SMaya Erez } __packed;
27190163b031SMaya Erez 
27200163b031SMaya Erez /* \WMI_LINK_MAINTAIN_CFG_READ_DONE_EVENT */
27210163b031SMaya Erez struct wmi_link_maintain_cfg_read_done_event {
27220163b031SMaya Erez 	/* requested connection ID */
27230163b031SMaya Erez 	__le32 cid;
27240163b031SMaya Erez 	/* wmi_link_maintain_cfg_response_status_e - read status */
27250163b031SMaya Erez 	__le32 status;
27260163b031SMaya Erez 	/* Retrieved configuration settings */
27270163b031SMaya Erez 	struct wmi_link_maintain_cfg lm_cfg;
27280163b031SMaya Erez } __packed;
27290163b031SMaya Erez 
2730fe9ee51eSMaya Erez enum wmi_traffic_suspend_status {
2731fe9ee51eSMaya Erez 	WMI_TRAFFIC_SUSPEND_APPROVED			= 0x0,
27326804cd10SLazar Alexei 	WMI_TRAFFIC_SUSPEND_REJECTED_LINK_NOT_IDLE	= 0x1,
27330163b031SMaya Erez };
27340163b031SMaya Erez 
2735fe9ee51eSMaya Erez /* WMI_TRAFFIC_SUSPEND_EVENTID */
2736fe9ee51eSMaya Erez struct wmi_traffic_suspend_event {
2737fe9ee51eSMaya Erez 	/* enum wmi_traffic_suspend_status_e */
27380163b031SMaya Erez 	u8 status;
27390163b031SMaya Erez } __packed;
27400163b031SMaya Erez 
27410163b031SMaya Erez enum wmi_traffic_resume_status {
27420163b031SMaya Erez 	WMI_TRAFFIC_RESUME_SUCCESS	= 0x0,
27430163b031SMaya Erez 	WMI_TRAFFIC_RESUME_FAILED	= 0x1,
27440163b031SMaya Erez };
27450163b031SMaya Erez 
27466804cd10SLazar Alexei enum wmi_resume_trigger {
27476804cd10SLazar Alexei 	WMI_RESUME_TRIGGER_UNKNOWN	= 0x0,
27486804cd10SLazar Alexei 	WMI_RESUME_TRIGGER_HOST		= 0x1,
27496804cd10SLazar Alexei 	WMI_RESUME_TRIGGER_UCAST_RX	= 0x2,
27506804cd10SLazar Alexei 	WMI_RESUME_TRIGGER_BCAST_RX	= 0x4,
27516804cd10SLazar Alexei 	WMI_RESUME_TRIGGER_WMI_EVT	= 0x8,
27526804cd10SLazar Alexei };
27536804cd10SLazar Alexei 
27540163b031SMaya Erez /* WMI_TRAFFIC_RESUME_EVENTID */
27550163b031SMaya Erez struct wmi_traffic_resume_event {
27566804cd10SLazar Alexei 	/* enum wmi_traffic_resume_status */
27570163b031SMaya Erez 	u8 status;
27586804cd10SLazar Alexei 	u8 reserved[3];
27596804cd10SLazar Alexei 	/* enum wmi_resume_trigger bitmap */
27606804cd10SLazar Alexei 	__le32 resume_triggers;
27610163b031SMaya Erez } __packed;
27620163b031SMaya Erez 
27630163b031SMaya Erez /* Power Save command completion status codes */
27640163b031SMaya Erez enum wmi_ps_cfg_cmd_status {
27650163b031SMaya Erez 	WMI_PS_CFG_CMD_STATUS_SUCCESS	= 0x00,
27660163b031SMaya Erez 	WMI_PS_CFG_CMD_STATUS_BAD_PARAM	= 0x01,
27670163b031SMaya Erez 	/* other error */
27680163b031SMaya Erez 	WMI_PS_CFG_CMD_STATUS_ERROR	= 0x02,
27690163b031SMaya Erez };
27700163b031SMaya Erez 
27710163b031SMaya Erez /* Device Power Save Profiles */
27720163b031SMaya Erez enum wmi_ps_profile_type {
27730163b031SMaya Erez 	WMI_PS_PROFILE_TYPE_DEFAULT		= 0x00,
27740163b031SMaya Erez 	WMI_PS_PROFILE_TYPE_PS_DISABLED		= 0x01,
27750163b031SMaya Erez 	WMI_PS_PROFILE_TYPE_MAX_PS		= 0x02,
27760163b031SMaya Erez 	WMI_PS_PROFILE_TYPE_LOW_LATENCY_PS	= 0x03,
27770163b031SMaya Erez };
27780163b031SMaya Erez 
2779761f8e4dSLazar Alexei /* WMI_PS_DEV_PROFILE_CFG_READ_CMDID */
2780761f8e4dSLazar Alexei struct wmi_ps_dev_profile_cfg_read_cmd {
2781761f8e4dSLazar Alexei 	/* reserved */
2782761f8e4dSLazar Alexei 	__le32 reserved;
2783761f8e4dSLazar Alexei } __packed;
2784761f8e4dSLazar Alexei 
2785761f8e4dSLazar Alexei /* WMI_PS_DEV_PROFILE_CFG_READ_EVENTID */
2786761f8e4dSLazar Alexei struct wmi_ps_dev_profile_cfg_read_event {
2787761f8e4dSLazar Alexei 	/* wmi_ps_profile_type_e */
2788761f8e4dSLazar Alexei 	u8 ps_profile;
2789761f8e4dSLazar Alexei 	u8 reserved[3];
2790761f8e4dSLazar Alexei } __packed;
2791761f8e4dSLazar Alexei 
27920163b031SMaya Erez /* WMI_PS_DEV_PROFILE_CFG_CMDID
27930163b031SMaya Erez  *
27940163b031SMaya Erez  * Power save profile to be used by the device
27950163b031SMaya Erez  *
27960163b031SMaya Erez  * Returned event:
27970163b031SMaya Erez  * - WMI_PS_DEV_PROFILE_CFG_EVENTID
27980163b031SMaya Erez  */
27990163b031SMaya Erez struct wmi_ps_dev_profile_cfg_cmd {
28000163b031SMaya Erez 	/* wmi_ps_profile_type_e */
28010163b031SMaya Erez 	u8 ps_profile;
28020163b031SMaya Erez 	u8 reserved[3];
28030163b031SMaya Erez } __packed;
28040163b031SMaya Erez 
28050163b031SMaya Erez /* WMI_PS_DEV_PROFILE_CFG_EVENTID */
28060163b031SMaya Erez struct wmi_ps_dev_profile_cfg_event {
28070163b031SMaya Erez 	/* wmi_ps_cfg_cmd_status_e */
28080163b031SMaya Erez 	__le32 status;
28090163b031SMaya Erez } __packed;
28100163b031SMaya Erez 
28110163b031SMaya Erez enum wmi_ps_level {
28120163b031SMaya Erez 	WMI_PS_LEVEL_DEEP_SLEEP		= 0x00,
28130163b031SMaya Erez 	WMI_PS_LEVEL_SHALLOW_SLEEP	= 0x01,
28140163b031SMaya Erez 	/* awake = all PS mechanisms are disabled */
28150163b031SMaya Erez 	WMI_PS_LEVEL_AWAKE		= 0x02,
28160163b031SMaya Erez };
28170163b031SMaya Erez 
28180163b031SMaya Erez enum wmi_ps_deep_sleep_clk_level {
28190163b031SMaya Erez 	/* 33k */
28200163b031SMaya Erez 	WMI_PS_DEEP_SLEEP_CLK_LEVEL_RTC		= 0x00,
28210163b031SMaya Erez 	/* 10k */
28220163b031SMaya Erez 	WMI_PS_DEEP_SLEEP_CLK_LEVEL_OSC		= 0x01,
28230163b031SMaya Erez 	/* @RTC Low latency */
28240163b031SMaya Erez 	WMI_PS_DEEP_SLEEP_CLK_LEVEL_RTC_LT	= 0x02,
28250163b031SMaya Erez 	WMI_PS_DEEP_SLEEP_CLK_LEVEL_XTAL	= 0x03,
28260163b031SMaya Erez 	WMI_PS_DEEP_SLEEP_CLK_LEVEL_SYSCLK	= 0x04,
28270163b031SMaya Erez 	/* Not Applicable */
28280163b031SMaya Erez 	WMI_PS_DEEP_SLEEP_CLK_LEVEL_N_A		= 0xFF,
28290163b031SMaya Erez };
28300163b031SMaya Erez 
28310163b031SMaya Erez /* Response by the FW to a D3 entry request */
28320163b031SMaya Erez enum wmi_ps_d3_resp_policy {
28330163b031SMaya Erez 	WMI_PS_D3_RESP_POLICY_DEFAULT	= 0x00,
28340163b031SMaya Erez 	/* debug -D3 req is always denied */
28350163b031SMaya Erez 	WMI_PS_D3_RESP_POLICY_DENIED	= 0x01,
28360163b031SMaya Erez 	/* debug -D3 req is always approved */
28370163b031SMaya Erez 	WMI_PS_D3_RESP_POLICY_APPROVED	= 0x02,
28380163b031SMaya Erez };
28390163b031SMaya Erez 
284008989f96SLior David #define WMI_AOA_MAX_DATA_SIZE	(128)
284108989f96SLior David 
284208989f96SLior David enum wmi_aoa_meas_status {
284308989f96SLior David 	WMI_AOA_MEAS_SUCCESS		= 0x00,
284408989f96SLior David 	WMI_AOA_MEAS_PEER_INCAPABLE	= 0x01,
284508989f96SLior David 	WMI_AOA_MEAS_FAILURE		= 0x02,
284608989f96SLior David };
284708989f96SLior David 
284808989f96SLior David /* WMI_AOA_MEAS_EVENTID */
284908989f96SLior David struct wmi_aoa_meas_event {
285008989f96SLior David 	u8 mac_addr[WMI_MAC_LEN];
285108989f96SLior David 	/* channels IDs:
285208989f96SLior David 	 * 0 - 58320 MHz
285308989f96SLior David 	 * 1 - 60480 MHz
285408989f96SLior David 	 * 2 - 62640 MHz
285508989f96SLior David 	 */
285608989f96SLior David 	u8 channel;
285708989f96SLior David 	/* enum wmi_aoa_meas_type */
285808989f96SLior David 	u8 aoa_meas_type;
285908989f96SLior David 	/* Measurments are from RFs, defined by the mask */
286008989f96SLior David 	__le32 meas_rf_mask;
286108989f96SLior David 	/* enum wmi_aoa_meas_status */
286208989f96SLior David 	u8 meas_status;
286308989f96SLior David 	u8 reserved;
286408989f96SLior David 	/* Length of meas_data in bytes */
286508989f96SLior David 	__le16 length;
286608989f96SLior David 	u8 meas_data[WMI_AOA_MAX_DATA_SIZE];
286708989f96SLior David } __packed;
286808989f96SLior David 
2869cbf795c1SLior David /* WMI_SET_MGMT_RETRY_LIMIT_EVENTID */
2870cbf795c1SLior David struct wmi_set_mgmt_retry_limit_event {
2871cbf795c1SLior David 	/* enum wmi_fw_status */
2872cbf795c1SLior David 	u8 status;
2873cbf795c1SLior David 	/* alignment to 32b */
2874cbf795c1SLior David 	u8 reserved[3];
2875cbf795c1SLior David } __packed;
2876cbf795c1SLior David 
2877cbf795c1SLior David /* WMI_GET_MGMT_RETRY_LIMIT_EVENTID */
2878cbf795c1SLior David struct wmi_get_mgmt_retry_limit_event {
2879cbf795c1SLior David 	/* MAC retransmit limit for mgmt frames */
2880cbf795c1SLior David 	u8 mgmt_retry_limit;
2881cbf795c1SLior David 	/* alignment to 32b */
2882cbf795c1SLior David 	u8 reserved[3];
2883cbf795c1SLior David } __packed;
2884cbf795c1SLior David 
288508989f96SLior David /* WMI_TOF_GET_CAPABILITIES_EVENTID */
288608989f96SLior David struct wmi_tof_get_capabilities_event {
288708989f96SLior David 	u8 ftm_capability;
288808989f96SLior David 	/* maximum supported number of destination to start TOF */
288908989f96SLior David 	u8 max_num_of_dest;
289008989f96SLior David 	/* maximum supported number of measurements per burst */
289108989f96SLior David 	u8 max_num_of_meas_per_burst;
289208989f96SLior David 	u8 reserved;
289308989f96SLior David 	/* maximum supported multi bursts */
289408989f96SLior David 	__le16 max_multi_bursts_sessions;
289508989f96SLior David 	/* maximum supported FTM burst duration , wmi_tof_burst_duration_e */
289608989f96SLior David 	__le16 max_ftm_burst_duration;
289708989f96SLior David 	/* AOA supported types */
289808989f96SLior David 	__le32 aoa_supported_types;
289908989f96SLior David } __packed;
290008989f96SLior David 
290190ffabb0SDedy Lansky /* WMI_SET_THERMAL_THROTTLING_CFG_EVENTID */
290290ffabb0SDedy Lansky struct wmi_set_thermal_throttling_cfg_event {
290390ffabb0SDedy Lansky 	/* wmi_fw_status */
290490ffabb0SDedy Lansky 	u8 status;
290590ffabb0SDedy Lansky 	u8 reserved[3];
290690ffabb0SDedy Lansky } __packed;
290790ffabb0SDedy Lansky 
290890ffabb0SDedy Lansky /* WMI_GET_THERMAL_THROTTLING_CFG_EVENTID */
290990ffabb0SDedy Lansky struct wmi_get_thermal_throttling_cfg_event {
291090ffabb0SDedy Lansky 	/* Status data */
291190ffabb0SDedy Lansky 	struct wmi_tt_data tt_data;
291290ffabb0SDedy Lansky } __packed;
291390ffabb0SDedy Lansky 
291408989f96SLior David enum wmi_tof_session_end_status {
291508989f96SLior David 	WMI_TOF_SESSION_END_NO_ERROR		= 0x00,
291608989f96SLior David 	WMI_TOF_SESSION_END_FAIL		= 0x01,
291708989f96SLior David 	WMI_TOF_SESSION_END_PARAMS_ERROR	= 0x02,
291808989f96SLior David 	WMI_TOF_SESSION_END_ABORTED		= 0x03,
29198a4fa214SAhmad Masri 	WMI_TOF_SESSION_END_BUSY		= 0x04,
292008989f96SLior David };
292108989f96SLior David 
292208989f96SLior David /* WMI_TOF_SESSION_END_EVENTID */
292308989f96SLior David struct wmi_tof_session_end_event {
292408989f96SLior David 	/* FTM session ID */
292508989f96SLior David 	__le32 session_id;
292608989f96SLior David 	/* wmi_tof_session_end_status_e */
292708989f96SLior David 	u8 status;
292808989f96SLior David 	u8 reserved[3];
292908989f96SLior David } __packed;
293008989f96SLior David 
2931761f8e4dSLazar Alexei /* WMI_TOF_SET_LCI_EVENTID */
2932761f8e4dSLazar Alexei struct wmi_tof_set_lci_event {
2933761f8e4dSLazar Alexei 	/* enum wmi_fw_status */
2934761f8e4dSLazar Alexei 	u8 status;
2935761f8e4dSLazar Alexei 	u8 reserved[3];
2936761f8e4dSLazar Alexei } __packed;
2937761f8e4dSLazar Alexei 
2938761f8e4dSLazar Alexei /* WMI_TOF_SET_LCR_EVENTID */
2939761f8e4dSLazar Alexei struct wmi_tof_set_lcr_event {
2940761f8e4dSLazar Alexei 	/* enum wmi_fw_status */
2941761f8e4dSLazar Alexei 	u8 status;
2942761f8e4dSLazar Alexei 	u8 reserved[3];
2943761f8e4dSLazar Alexei } __packed;
2944761f8e4dSLazar Alexei 
294508989f96SLior David /* Responder FTM Results */
294608989f96SLior David struct wmi_responder_ftm_res {
294708989f96SLior David 	u8 t1[6];
294808989f96SLior David 	u8 t2[6];
294908989f96SLior David 	u8 t3[6];
295008989f96SLior David 	u8 t4[6];
295108989f96SLior David 	__le16 tod_err;
295208989f96SLior David 	__le16 toa_err;
295308989f96SLior David 	__le16 tod_err_initiator;
295408989f96SLior David 	__le16 toa_err_initiator;
295508989f96SLior David } __packed;
295608989f96SLior David 
295708989f96SLior David enum wmi_tof_ftm_per_dest_res_status {
295808989f96SLior David 	WMI_PER_DEST_RES_NO_ERROR		= 0x00,
295908989f96SLior David 	WMI_PER_DEST_RES_TX_RX_FAIL		= 0x01,
296008989f96SLior David 	WMI_PER_DEST_RES_PARAM_DONT_MATCH	= 0x02,
296108989f96SLior David };
296208989f96SLior David 
296308989f96SLior David enum wmi_tof_ftm_per_dest_res_flags {
296408989f96SLior David 	WMI_PER_DEST_RES_REQ_START		= 0x01,
296508989f96SLior David 	WMI_PER_DEST_RES_BURST_REPORT_END	= 0x02,
296608989f96SLior David 	WMI_PER_DEST_RES_REQ_END		= 0x04,
296708989f96SLior David 	WMI_PER_DEST_RES_PARAM_UPDATE		= 0x08,
296808989f96SLior David };
296908989f96SLior David 
297008989f96SLior David /* WMI_TOF_FTM_PER_DEST_RES_EVENTID */
297108989f96SLior David struct wmi_tof_ftm_per_dest_res_event {
297208989f96SLior David 	/* FTM session ID */
297308989f96SLior David 	__le32 session_id;
297408989f96SLior David 	/* destination MAC address */
297508989f96SLior David 	u8 dst_mac[WMI_MAC_LEN];
297608989f96SLior David 	/* wmi_tof_ftm_per_dest_res_flags_e */
297708989f96SLior David 	u8 flags;
297808989f96SLior David 	/* wmi_tof_ftm_per_dest_res_status_e */
297908989f96SLior David 	u8 status;
298008989f96SLior David 	/* responder ASAP */
298108989f96SLior David 	u8 responder_asap;
298208989f96SLior David 	/* responder number of FTM per burst */
298308989f96SLior David 	u8 responder_num_ftm_per_burst;
298408989f96SLior David 	/* responder number of FTM burst exponent */
298508989f96SLior David 	u8 responder_num_ftm_bursts_exp;
298608989f96SLior David 	/* responder burst duration ,wmi_tof_burst_duration_e */
298708989f96SLior David 	u8 responder_burst_duration;
298808989f96SLior David 	/* responder burst period, indicate interval between two consecutive
298908989f96SLior David 	 * burst instances, in units of 100 ms
299008989f96SLior David 	 */
299108989f96SLior David 	__le16 responder_burst_period;
299208989f96SLior David 	/* receive burst counter */
299308989f96SLior David 	__le16 bursts_cnt;
299408989f96SLior David 	/* tsf of responder start burst */
299508989f96SLior David 	__le32 tsf_sync;
299608989f96SLior David 	/* actual received ftm per burst */
299708989f96SLior David 	u8 actual_ftm_per_burst;
2998761f8e4dSLazar Alexei 	/* Measurments are from RFs, defined by the mask */
2999761f8e4dSLazar Alexei 	__le32 meas_rf_mask;
3000761f8e4dSLazar Alexei 	u8 reserved0[3];
300108989f96SLior David 	struct wmi_responder_ftm_res responder_ftm_res[0];
300208989f96SLior David } __packed;
300308989f96SLior David 
3004761f8e4dSLazar Alexei /* WMI_TOF_CFG_RESPONDER_EVENTID */
3005761f8e4dSLazar Alexei struct wmi_tof_cfg_responder_event {
3006761f8e4dSLazar Alexei 	/* enum wmi_fw_status */
3007761f8e4dSLazar Alexei 	u8 status;
3008761f8e4dSLazar Alexei 	u8 reserved[3];
3009761f8e4dSLazar Alexei } __packed;
3010761f8e4dSLazar Alexei 
301108989f96SLior David enum wmi_tof_channel_info_type {
301208989f96SLior David 	WMI_TOF_CHANNEL_INFO_AOA		= 0x00,
301308989f96SLior David 	WMI_TOF_CHANNEL_INFO_LCI		= 0x01,
301408989f96SLior David 	WMI_TOF_CHANNEL_INFO_LCR		= 0x02,
301508989f96SLior David 	WMI_TOF_CHANNEL_INFO_VENDOR_SPECIFIC	= 0x03,
301608989f96SLior David 	WMI_TOF_CHANNEL_INFO_CIR		= 0x04,
301708989f96SLior David 	WMI_TOF_CHANNEL_INFO_RSSI		= 0x05,
301808989f96SLior David 	WMI_TOF_CHANNEL_INFO_SNR		= 0x06,
301908989f96SLior David 	WMI_TOF_CHANNEL_INFO_DEBUG		= 0x07,
302008989f96SLior David };
302108989f96SLior David 
302208989f96SLior David /* WMI_TOF_CHANNEL_INFO_EVENTID */
302308989f96SLior David struct wmi_tof_channel_info_event {
302408989f96SLior David 	/* FTM session ID */
302508989f96SLior David 	__le32 session_id;
302608989f96SLior David 	/* destination MAC address */
302708989f96SLior David 	u8 dst_mac[WMI_MAC_LEN];
302808989f96SLior David 	/* wmi_tof_channel_info_type_e */
302908989f96SLior David 	u8 type;
303008989f96SLior David 	/* data report length */
303108989f96SLior David 	u8 len;
303208989f96SLior David 	/* data report payload */
303308989f96SLior David 	u8 report[0];
303408989f96SLior David } __packed;
303508989f96SLior David 
30368ae5d62cSLior David /* WMI_TOF_SET_TX_RX_OFFSET_EVENTID */
30378ae5d62cSLior David struct wmi_tof_set_tx_rx_offset_event {
30388ae5d62cSLior David 	/* enum wmi_fw_status */
30398ae5d62cSLior David 	u8 status;
30408ae5d62cSLior David 	u8 reserved[3];
30418ae5d62cSLior David } __packed;
30428ae5d62cSLior David 
30438ae5d62cSLior David /* WMI_TOF_GET_TX_RX_OFFSET_EVENTID */
30448ae5d62cSLior David struct wmi_tof_get_tx_rx_offset_event {
30458ae5d62cSLior David 	/* enum wmi_fw_status */
30468ae5d62cSLior David 	u8 status;
3047761f8e4dSLazar Alexei 	/* RF index used to read the offsets */
3048761f8e4dSLazar Alexei 	u8 rf_index;
3049761f8e4dSLazar Alexei 	u8 reserved1[2];
30508ae5d62cSLior David 	/* TX delay offset */
30518ae5d62cSLior David 	__le32 tx_offset;
30528ae5d62cSLior David 	/* RX delay offset */
30538ae5d62cSLior David 	__le32 rx_offset;
3054761f8e4dSLazar Alexei 	/* Offset to strongest tap of CIR */
3055761f8e4dSLazar Alexei 	__le32 precursor;
30568ae5d62cSLior David } __packed;
30578ae5d62cSLior David 
3058cbf795c1SLior David /* Result status codes for WMI commands */
3059cbf795c1SLior David enum wmi_rf_sector_status {
3060cbf795c1SLior David 	WMI_RF_SECTOR_STATUS_SUCCESS			= 0x00,
3061cbf795c1SLior David 	WMI_RF_SECTOR_STATUS_BAD_PARAMETERS_ERROR	= 0x01,
3062cbf795c1SLior David 	WMI_RF_SECTOR_STATUS_BUSY_ERROR			= 0x02,
3063cbf795c1SLior David 	WMI_RF_SECTOR_STATUS_NOT_SUPPORTED_ERROR	= 0x03,
3064cbf795c1SLior David };
3065cbf795c1SLior David 
3066cbf795c1SLior David /* Types of the RF sector (TX,RX) */
3067cbf795c1SLior David enum wmi_rf_sector_type {
3068cbf795c1SLior David 	WMI_RF_SECTOR_TYPE_RX	= 0x00,
3069cbf795c1SLior David 	WMI_RF_SECTOR_TYPE_TX	= 0x01,
3070cbf795c1SLior David };
3071cbf795c1SLior David 
3072cbf795c1SLior David /* Content of RF Sector (six 32-bits registers) */
3073cbf795c1SLior David struct wmi_rf_sector_info {
3074cbf795c1SLior David 	/* Phase values for RF Chains[15-0] (2bits per RF chain) */
3075cbf795c1SLior David 	__le32 psh_hi;
3076cbf795c1SLior David 	/* Phase values for RF Chains[31-16] (2bits per RF chain) */
3077cbf795c1SLior David 	__le32 psh_lo;
3078cbf795c1SLior David 	/* ETYPE Bit0 for all RF chains[31-0] - bit0 of Edge amplifier gain
3079cbf795c1SLior David 	 * index
3080cbf795c1SLior David 	 */
3081cbf795c1SLior David 	__le32 etype0;
3082cbf795c1SLior David 	/* ETYPE Bit1 for all RF chains[31-0] - bit1 of Edge amplifier gain
3083cbf795c1SLior David 	 * index
3084cbf795c1SLior David 	 */
3085cbf795c1SLior David 	__le32 etype1;
3086cbf795c1SLior David 	/* ETYPE Bit2 for all RF chains[31-0] - bit2 of Edge amplifier gain
3087cbf795c1SLior David 	 * index
3088cbf795c1SLior David 	 */
3089cbf795c1SLior David 	__le32 etype2;
3090cbf795c1SLior David 	/* D-Type values (3bits each) for 8 Distribution amplifiers + X16
3091cbf795c1SLior David 	 * switch bits
3092cbf795c1SLior David 	 */
3093cbf795c1SLior David 	__le32 dtype_swch_off;
3094cbf795c1SLior David } __packed;
3095cbf795c1SLior David 
3096cbf795c1SLior David #define WMI_INVALID_RF_SECTOR_INDEX	(0xFFFF)
3097cbf795c1SLior David #define WMI_MAX_RF_MODULES_NUM		(8)
3098cbf795c1SLior David 
3099cbf795c1SLior David /* WMI_GET_RF_SECTOR_PARAMS_CMD */
3100cbf795c1SLior David struct wmi_get_rf_sector_params_cmd {
3101cbf795c1SLior David 	/* Sector number to be retrieved */
3102cbf795c1SLior David 	__le16 sector_idx;
3103cbf795c1SLior David 	/* enum wmi_rf_sector_type - type of requested RF sector */
3104cbf795c1SLior David 	u8 sector_type;
3105cbf795c1SLior David 	/* bitmask vector specifying destination RF modules */
3106cbf795c1SLior David 	u8 rf_modules_vec;
3107cbf795c1SLior David } __packed;
3108cbf795c1SLior David 
3109cbf795c1SLior David /* \WMI_GET_RF_SECTOR_PARAMS_DONE_EVENT */
3110cbf795c1SLior David struct wmi_get_rf_sector_params_done_event {
3111cbf795c1SLior David 	/* result status of WMI_GET_RF_SECTOR_PARAMS_CMD (enum
3112cbf795c1SLior David 	 * wmi_rf_sector_status)
3113cbf795c1SLior David 	 */
3114cbf795c1SLior David 	u8 status;
3115cbf795c1SLior David 	/* align next field to U64 boundary */
3116cbf795c1SLior David 	u8 reserved[7];
3117cbf795c1SLior David 	/* TSF timestamp when RF sectors where retrieved */
3118cbf795c1SLior David 	__le64 tsf;
3119cbf795c1SLior David 	/* Content of RF sector retrieved from each RF module */
3120cbf795c1SLior David 	struct wmi_rf_sector_info sectors_info[WMI_MAX_RF_MODULES_NUM];
3121cbf795c1SLior David } __packed;
3122cbf795c1SLior David 
3123cbf795c1SLior David /* WMI_SET_RF_SECTOR_PARAMS_CMD */
3124cbf795c1SLior David struct wmi_set_rf_sector_params_cmd {
3125cbf795c1SLior David 	/* Sector number to be retrieved */
3126cbf795c1SLior David 	__le16 sector_idx;
3127cbf795c1SLior David 	/* enum wmi_rf_sector_type - type of requested RF sector */
3128cbf795c1SLior David 	u8 sector_type;
3129cbf795c1SLior David 	/* bitmask vector specifying destination RF modules */
3130cbf795c1SLior David 	u8 rf_modules_vec;
3131cbf795c1SLior David 	/* Content of RF sector to be written to each RF module */
3132cbf795c1SLior David 	struct wmi_rf_sector_info sectors_info[WMI_MAX_RF_MODULES_NUM];
3133cbf795c1SLior David } __packed;
3134cbf795c1SLior David 
3135cbf795c1SLior David /* \WMI_SET_RF_SECTOR_PARAMS_DONE_EVENT */
3136cbf795c1SLior David struct wmi_set_rf_sector_params_done_event {
3137cbf795c1SLior David 	/* result status of WMI_SET_RF_SECTOR_PARAMS_CMD (enum
3138cbf795c1SLior David 	 * wmi_rf_sector_status)
3139cbf795c1SLior David 	 */
3140cbf795c1SLior David 	u8 status;
3141cbf795c1SLior David } __packed;
3142cbf795c1SLior David 
3143cbf795c1SLior David /* WMI_GET_SELECTED_RF_SECTOR_INDEX_CMD - Get RF sector index selected by
3144cbf795c1SLior David  * TXSS/BRP for communication with specified CID
3145cbf795c1SLior David  */
3146cbf795c1SLior David struct wmi_get_selected_rf_sector_index_cmd {
3147cbf795c1SLior David 	/* Connection/Station ID in [0:7] range */
3148cbf795c1SLior David 	u8 cid;
3149cbf795c1SLior David 	/* type of requested RF sector (enum wmi_rf_sector_type) */
3150cbf795c1SLior David 	u8 sector_type;
3151cbf795c1SLior David 	/* align to U32 boundary */
3152cbf795c1SLior David 	u8 reserved[2];
3153cbf795c1SLior David } __packed;
3154cbf795c1SLior David 
3155cbf795c1SLior David /* \WMI_GET_SELECTED_RF_SECTOR_INDEX_DONE_EVENT - Returns retrieved RF sector
3156cbf795c1SLior David  * index selected by TXSS/BRP for communication with specified CID
3157cbf795c1SLior David  */
3158cbf795c1SLior David struct wmi_get_selected_rf_sector_index_done_event {
3159cbf795c1SLior David 	/* Retrieved sector index selected in TXSS (for TX sector request) or
3160cbf795c1SLior David 	 * BRP (for RX sector request)
3161cbf795c1SLior David 	 */
3162cbf795c1SLior David 	__le16 sector_idx;
3163cbf795c1SLior David 	/* result status of WMI_GET_SELECTED_RF_SECTOR_INDEX_CMD (enum
3164cbf795c1SLior David 	 * wmi_rf_sector_status)
3165cbf795c1SLior David 	 */
3166cbf795c1SLior David 	u8 status;
3167cbf795c1SLior David 	/* align next field to U64 boundary */
3168cbf795c1SLior David 	u8 reserved[5];
3169cbf795c1SLior David 	/* TSF timestamp when result was retrieved */
3170cbf795c1SLior David 	__le64 tsf;
3171cbf795c1SLior David } __packed;
3172cbf795c1SLior David 
3173cbf795c1SLior David /* WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD - Force RF sector index for
3174cbf795c1SLior David  * communication with specified CID. Assumes that TXSS/BRP is disabled by
3175cbf795c1SLior David  * other command
3176cbf795c1SLior David  */
3177cbf795c1SLior David struct wmi_set_selected_rf_sector_index_cmd {
3178cbf795c1SLior David 	/* Connection/Station ID in [0:7] range */
3179cbf795c1SLior David 	u8 cid;
3180cbf795c1SLior David 	/* type of requested RF sector (enum wmi_rf_sector_type) */
3181cbf795c1SLior David 	u8 sector_type;
3182cbf795c1SLior David 	/* Forced sector index */
3183cbf795c1SLior David 	__le16 sector_idx;
3184cbf795c1SLior David } __packed;
3185cbf795c1SLior David 
3186cbf795c1SLior David /* \WMI_SET_SELECTED_RF_SECTOR_INDEX_DONE_EVENT - Success/Fail status for
3187cbf795c1SLior David  * WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD
3188cbf795c1SLior David  */
3189cbf795c1SLior David struct wmi_set_selected_rf_sector_index_done_event {
3190cbf795c1SLior David 	/* result status of WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD (enum
3191cbf795c1SLior David 	 * wmi_rf_sector_status)
3192cbf795c1SLior David 	 */
3193cbf795c1SLior David 	u8 status;
3194cbf795c1SLior David 	/* align to U32 boundary */
3195cbf795c1SLior David 	u8 reserved[3];
3196cbf795c1SLior David } __packed;
3197cbf795c1SLior David 
3198cbf795c1SLior David /* WMI_SET_RF_SECTOR_ON_CMD - Activates specified sector for specified rf
3199cbf795c1SLior David  * modules
3200cbf795c1SLior David  */
3201cbf795c1SLior David struct wmi_set_rf_sector_on_cmd {
3202cbf795c1SLior David 	/* Sector index to be activated */
3203cbf795c1SLior David 	__le16 sector_idx;
3204cbf795c1SLior David 	/* type of requested RF sector (enum wmi_rf_sector_type) */
3205cbf795c1SLior David 	u8 sector_type;
3206cbf795c1SLior David 	/* bitmask vector specifying destination RF modules */
3207cbf795c1SLior David 	u8 rf_modules_vec;
3208cbf795c1SLior David } __packed;
3209cbf795c1SLior David 
3210cbf795c1SLior David /* \WMI_SET_RF_SECTOR_ON_DONE_EVENT - Success/Fail status for
3211cbf795c1SLior David  * WMI_SET_RF_SECTOR_ON_CMD
3212cbf795c1SLior David  */
3213cbf795c1SLior David struct wmi_set_rf_sector_on_done_event {
3214cbf795c1SLior David 	/* result status of WMI_SET_RF_SECTOR_ON_CMD (enum
3215cbf795c1SLior David 	 * wmi_rf_sector_status)
3216cbf795c1SLior David 	 */
3217cbf795c1SLior David 	u8 status;
3218cbf795c1SLior David 	/* align to U32 boundary */
3219cbf795c1SLior David 	u8 reserved[3];
3220cbf795c1SLior David } __packed;
3221cbf795c1SLior David 
32228ae5d62cSLior David enum wmi_sector_sweep_type {
32238ae5d62cSLior David 	WMI_SECTOR_SWEEP_TYPE_TXSS		= 0x00,
32248ae5d62cSLior David 	WMI_SECTOR_SWEEP_TYPE_BCON		= 0x01,
32258ae5d62cSLior David 	WMI_SECTOR_SWEEP_TYPE_TXSS_AND_BCON	= 0x02,
32268ae5d62cSLior David 	WMI_SECTOR_SWEEP_TYPE_NUM		= 0x03,
32278ae5d62cSLior David };
32288ae5d62cSLior David 
32298ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_ORDER_CMDID
32308ae5d62cSLior David  *
32318ae5d62cSLior David  * Set the order of TX sectors in TXSS and/or Beacon(AP).
32328ae5d62cSLior David  *
32338ae5d62cSLior David  * Returned event:
32348ae5d62cSLior David  * - WMI_PRIO_TX_SECTORS_ORDER_EVENTID
32358ae5d62cSLior David  */
32368ae5d62cSLior David struct wmi_prio_tx_sectors_order_cmd {
32378ae5d62cSLior David 	/* tx sectors order to be applied, 0xFF for end of array */
32388ae5d62cSLior David 	u8 tx_sectors_priority_array[MAX_NUM_OF_SECTORS];
32398ae5d62cSLior David 	/* enum wmi_sector_sweep_type, TXSS and/or Beacon */
32408ae5d62cSLior David 	u8 sector_sweep_type;
32418ae5d62cSLior David 	/* needed only for TXSS configuration */
32428ae5d62cSLior David 	u8 cid;
32438ae5d62cSLior David 	/* alignment to 32b */
32448ae5d62cSLior David 	u8 reserved[2];
32458ae5d62cSLior David } __packed;
32468ae5d62cSLior David 
32478ae5d62cSLior David /* completion status codes */
32488ae5d62cSLior David enum wmi_prio_tx_sectors_cmd_status {
32498ae5d62cSLior David 	WMI_PRIO_TX_SECT_CMD_STATUS_SUCCESS	= 0x00,
32508ae5d62cSLior David 	WMI_PRIO_TX_SECT_CMD_STATUS_BAD_PARAM	= 0x01,
32518ae5d62cSLior David 	/* other error */
32528ae5d62cSLior David 	WMI_PRIO_TX_SECT_CMD_STATUS_ERROR	= 0x02,
32538ae5d62cSLior David };
32548ae5d62cSLior David 
32558ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_ORDER_EVENTID */
32568ae5d62cSLior David struct wmi_prio_tx_sectors_order_event {
32578ae5d62cSLior David 	/* enum wmi_prio_tx_sectors_cmd_status */
32588ae5d62cSLior David 	u8 status;
32598ae5d62cSLior David 	/* alignment to 32b */
32608ae5d62cSLior David 	u8 reserved[3];
32618ae5d62cSLior David } __packed;
32628ae5d62cSLior David 
32638ae5d62cSLior David struct wmi_prio_tx_sectors_num_cmd {
32648ae5d62cSLior David 	/* [0-128], 0 = No changes */
32658ae5d62cSLior David 	u8 beacon_number_of_sectors;
32668ae5d62cSLior David 	/* [0-128], 0 = No changes */
32678ae5d62cSLior David 	u8 txss_number_of_sectors;
32688ae5d62cSLior David 	/* [0-8] needed only for TXSS configuration */
32698ae5d62cSLior David 	u8 cid;
32708ae5d62cSLior David } __packed;
32718ae5d62cSLior David 
32728ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_NUMBER_CMDID
32738ae5d62cSLior David  *
32748ae5d62cSLior David  * Set the number of active sectors in TXSS and/or Beacon.
32758ae5d62cSLior David  *
32768ae5d62cSLior David  * Returned event:
32778ae5d62cSLior David  * - WMI_PRIO_TX_SECTORS_NUMBER_EVENTID
32788ae5d62cSLior David  */
32798ae5d62cSLior David struct wmi_prio_tx_sectors_number_cmd {
32808ae5d62cSLior David 	struct wmi_prio_tx_sectors_num_cmd active_sectors_num;
32818ae5d62cSLior David 	/* alignment to 32b */
32828ae5d62cSLior David 	u8 reserved;
32838ae5d62cSLior David } __packed;
32848ae5d62cSLior David 
32858ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_NUMBER_EVENTID */
32868ae5d62cSLior David struct wmi_prio_tx_sectors_number_event {
32878ae5d62cSLior David 	/* enum wmi_prio_tx_sectors_cmd_status */
32888ae5d62cSLior David 	u8 status;
32898ae5d62cSLior David 	/* alignment to 32b */
32908ae5d62cSLior David 	u8 reserved[3];
32918ae5d62cSLior David } __packed;
32928ae5d62cSLior David 
32938ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_CMDID
32948ae5d62cSLior David  *
32958ae5d62cSLior David  * Set default sectors order and number (hard coded in board file)
32968ae5d62cSLior David  * in TXSS and/or Beacon.
32978ae5d62cSLior David  *
32988ae5d62cSLior David  * Returned event:
32998ae5d62cSLior David  * - WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_EVENTID
33008ae5d62cSLior David  */
33018ae5d62cSLior David struct wmi_prio_tx_sectors_set_default_cfg_cmd {
33028ae5d62cSLior David 	/* enum wmi_sector_sweep_type, TXSS and/or Beacon */
33038ae5d62cSLior David 	u8 sector_sweep_type;
33048ae5d62cSLior David 	/* needed only for TXSS configuration */
33058ae5d62cSLior David 	u8 cid;
33068ae5d62cSLior David 	/* alignment to 32b */
33078ae5d62cSLior David 	u8 reserved[2];
33088ae5d62cSLior David } __packed;
33098ae5d62cSLior David 
33108ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_EVENTID */
33118ae5d62cSLior David struct wmi_prio_tx_sectors_set_default_cfg_event {
33128ae5d62cSLior David 	/* enum wmi_prio_tx_sectors_cmd_status */
33138ae5d62cSLior David 	u8 status;
33148ae5d62cSLior David 	/* alignment to 32b */
33158ae5d62cSLior David 	u8 reserved[3];
33168ae5d62cSLior David } __packed;
33178ae5d62cSLior David 
3318761f8e4dSLazar Alexei /* WMI_SET_SILENT_RSSI_TABLE_DONE_EVENTID */
3319761f8e4dSLazar Alexei struct wmi_set_silent_rssi_table_done_event {
3320761f8e4dSLazar Alexei 	/* enum wmi_silent_rssi_status */
3321761f8e4dSLazar Alexei 	__le32 status;
3322761f8e4dSLazar Alexei 	/* enum wmi_silent_rssi_table */
3323761f8e4dSLazar Alexei 	__le32 table;
3324761f8e4dSLazar Alexei } __packed;
3325761f8e4dSLazar Alexei 
33268a4fa214SAhmad Masri /* WMI_VRING_SWITCH_TIMING_CONFIG_EVENTID */
33278a4fa214SAhmad Masri struct wmi_vring_switch_timing_config_event {
33288a4fa214SAhmad Masri 	/* enum wmi_fw_status */
33298a4fa214SAhmad Masri 	u8 status;
33308a4fa214SAhmad Masri 	u8 reserved[3];
33318a4fa214SAhmad Masri } __packed;
33328a4fa214SAhmad Masri 
33338a4fa214SAhmad Masri /* WMI_GET_ASSOC_LIST_RES_EVENTID */
33348a4fa214SAhmad Masri struct wmi_assoc_sta_info {
33358a4fa214SAhmad Masri 	u8 mac[WMI_MAC_LEN];
33368a4fa214SAhmad Masri 	u8 omni_index_address;
33378a4fa214SAhmad Masri 	u8 reserved;
33388a4fa214SAhmad Masri } __packed;
33398a4fa214SAhmad Masri 
33408a4fa214SAhmad Masri #define WMI_GET_ASSOC_LIST_SIZE	(8)
33418a4fa214SAhmad Masri 
33428a4fa214SAhmad Masri /* WMI_GET_ASSOC_LIST_RES_EVENTID
33438a4fa214SAhmad Masri  * Returns up to MAX_ASSOC_STA_LIST_SIZE associated STAs
33448a4fa214SAhmad Masri  */
33458a4fa214SAhmad Masri struct wmi_get_assoc_list_res_event {
33468a4fa214SAhmad Masri 	struct wmi_assoc_sta_info assoc_sta_list[WMI_GET_ASSOC_LIST_SIZE];
33478a4fa214SAhmad Masri 	/* STA count */
33488a4fa214SAhmad Masri 	u8 count;
33498a4fa214SAhmad Masri 	u8 reserved[3];
33508a4fa214SAhmad Masri } __packed;
33518a4fa214SAhmad Masri 
33528a4fa214SAhmad Masri /* WMI_BF_CONTROL_EVENTID */
33538a4fa214SAhmad Masri struct wmi_bf_control_event {
33548a4fa214SAhmad Masri 	/* wmi_fw_status */
33558a4fa214SAhmad Masri 	u8 status;
33568a4fa214SAhmad Masri 	u8 reserved[3];
33578a4fa214SAhmad Masri } __packed;
33588a4fa214SAhmad Masri 
33598a4fa214SAhmad Masri /* WMI_COMMAND_NOT_SUPPORTED_EVENTID */
3360761f8e4dSLazar Alexei struct wmi_command_not_supported_event {
3361761f8e4dSLazar Alexei 	/* device id */
3362761f8e4dSLazar Alexei 	u8 mid;
3363761f8e4dSLazar Alexei 	u8 reserved0;
3364761f8e4dSLazar Alexei 	__le16 command_id;
3365761f8e4dSLazar Alexei 	/* for UT command only, otherwise reserved */
3366761f8e4dSLazar Alexei 	__le16 command_subtype;
3367761f8e4dSLazar Alexei 	__le16 reserved1;
3368761f8e4dSLazar Alexei } __packed;
3369761f8e4dSLazar Alexei 
33708a4fa214SAhmad Masri /* WMI_TSF_SYNC_CMDID */
33718a4fa214SAhmad Masri struct wmi_tsf_sync_cmd {
33728a4fa214SAhmad Masri 	/* The time interval to send announce frame in one BI */
33738a4fa214SAhmad Masri 	u8 interval_ms;
33748a4fa214SAhmad Masri 	/* The mcs to send announce frame */
33758a4fa214SAhmad Masri 	u8 mcs;
33768a4fa214SAhmad Masri 	u8 reserved[6];
33778a4fa214SAhmad Masri } __packed;
33788a4fa214SAhmad Masri 
33798a4fa214SAhmad Masri /* WMI_TSF_SYNC_STATUS_EVENTID */
33808a4fa214SAhmad Masri enum wmi_tsf_sync_status {
33818a4fa214SAhmad Masri 	WMI_TSF_SYNC_SUCCESS	= 0x00,
33828a4fa214SAhmad Masri 	WMI_TSF_SYNC_FAILED	= 0x01,
33838a4fa214SAhmad Masri 	WMI_TSF_SYNC_REJECTED	= 0x02,
33848a4fa214SAhmad Masri };
33858a4fa214SAhmad Masri 
33868a4fa214SAhmad Masri /* WMI_TSF_SYNC_STATUS_EVENTID */
33878a4fa214SAhmad Masri struct wmi_tsf_sync_status_event {
33888a4fa214SAhmad Masri 	/* enum wmi_tsf_sync_status */
33898a4fa214SAhmad Masri 	u8 status;
33908a4fa214SAhmad Masri 	u8 reserved[3];
33918a4fa214SAhmad Masri } __packed;
33928a4fa214SAhmad Masri 
33938a4fa214SAhmad Masri /* WMI_GET_CCA_INDICATIONS_EVENTID */
33948a4fa214SAhmad Masri struct wmi_get_cca_indications_event {
33958a4fa214SAhmad Masri 	/* wmi_fw_status */
33968a4fa214SAhmad Masri 	u8 status;
33978a4fa214SAhmad Masri 	/* CCA-Energy Detect in percentage over last BI (0..100) */
33988a4fa214SAhmad Masri 	u8 cca_ed_percent;
33998a4fa214SAhmad Masri 	/* Averaged CCA-Energy Detect in percent over number of BIs (0..100) */
34008a4fa214SAhmad Masri 	u8 cca_ed_avg_percent;
34018a4fa214SAhmad Masri 	/* NAV percent over last BI (0..100) */
34028a4fa214SAhmad Masri 	u8 nav_percent;
34038a4fa214SAhmad Masri 	/* Averaged NAV percent over number of BIs (0..100) */
34048a4fa214SAhmad Masri 	u8 nav_avg_percent;
34058a4fa214SAhmad Masri 	u8 reserved[3];
34068a4fa214SAhmad Masri } __packed;
34078a4fa214SAhmad Masri 
34088a4fa214SAhmad Masri /* WMI_SET_CCA_INDICATIONS_BI_AVG_NUM_CMDID */
34098a4fa214SAhmad Masri struct wmi_set_cca_indications_bi_avg_num_cmd {
34108a4fa214SAhmad Masri 	/* set the number of bis to average cca_ed (0..255) */
34118a4fa214SAhmad Masri 	u8 bi_number;
34128a4fa214SAhmad Masri 	u8 reserved[3];
34138a4fa214SAhmad Masri } __packed;
34148a4fa214SAhmad Masri 
34158a4fa214SAhmad Masri /* WMI_SET_CCA_INDICATIONS_BI_AVG_NUM_EVENTID */
34168a4fa214SAhmad Masri struct wmi_set_cca_indications_bi_avg_num_event {
34178a4fa214SAhmad Masri 	/* wmi_fw_status */
34188a4fa214SAhmad Masri 	u8 status;
34198a4fa214SAhmad Masri 	u8 reserved[3];
34208a4fa214SAhmad Masri } __packed;
34218a4fa214SAhmad Masri 
34228a4fa214SAhmad Masri /* WMI_INTERNAL_FW_SET_CHANNEL */
34238a4fa214SAhmad Masri struct wmi_internal_fw_set_channel_event {
34248a4fa214SAhmad Masri 	u8 channel_num;
34258a4fa214SAhmad Masri 	u8 reserved[3];
34268a4fa214SAhmad Masri } __packed;
34278a4fa214SAhmad Masri 
34282be7d22fSVladimir Kondratiev #endif /* __WILOCITY_WMI_H__ */
3429