xref: /openbmc/linux/drivers/net/wireless/ath/wil6210/wmi.h (revision 8e52fe3088138dcc1cbb718fb65a6a96cdd65249)
12be7d22fSVladimir Kondratiev /*
2230d8442SVladimir Kondratiev  * Copyright (c) 2012-2015 Qualcomm Atheros, Inc.
32be7d22fSVladimir Kondratiev  * Copyright (c) 2006-2012 Wilocity .
42be7d22fSVladimir Kondratiev  *
52be7d22fSVladimir Kondratiev  * Permission to use, copy, modify, and/or distribute this software for any
62be7d22fSVladimir Kondratiev  * purpose with or without fee is hereby granted, provided that the above
72be7d22fSVladimir Kondratiev  * copyright notice and this permission notice appear in all copies.
82be7d22fSVladimir Kondratiev  *
92be7d22fSVladimir Kondratiev  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
102be7d22fSVladimir Kondratiev  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
112be7d22fSVladimir Kondratiev  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
122be7d22fSVladimir Kondratiev  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
132be7d22fSVladimir Kondratiev  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
142be7d22fSVladimir Kondratiev  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
152be7d22fSVladimir Kondratiev  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
162be7d22fSVladimir Kondratiev  */
172be7d22fSVladimir Kondratiev 
182be7d22fSVladimir Kondratiev /*
192be7d22fSVladimir Kondratiev  * This file contains the definitions of the WMI protocol specified in the
202be7d22fSVladimir Kondratiev  * Wireless Module Interface (WMI) for the Wilocity
212be7d22fSVladimir Kondratiev  * MARLON 60 Gigabit wireless solution.
222be7d22fSVladimir Kondratiev  * It includes definitions of all the commands and events.
232be7d22fSVladimir Kondratiev  * Commands are messages from the host to the WM.
242be7d22fSVladimir Kondratiev  * Events are messages from the WM to the host.
252be7d22fSVladimir Kondratiev  */
262be7d22fSVladimir Kondratiev 
272be7d22fSVladimir Kondratiev #ifndef __WILOCITY_WMI_H__
282be7d22fSVladimir Kondratiev #define __WILOCITY_WMI_H__
292be7d22fSVladimir Kondratiev 
302be7d22fSVladimir Kondratiev /* General */
316c2faf09SVladimir Kondratiev #define WILOCITY_MAX_ASSOC_STA (8)
328c679675SVladimir Kondratiev #define WILOCITY_DEFAULT_ASSOC_STA (1)
332be7d22fSVladimir Kondratiev #define WMI_MAC_LEN		(6)
342be7d22fSVladimir Kondratiev #define WMI_PROX_RANGE_NUM	(3)
358c679675SVladimir Kondratiev #define WMI_MAX_LOSS_DMG_BEACONS	(32)
362be7d22fSVladimir Kondratiev 
372be7d22fSVladimir Kondratiev /* List of Commands */
382be7d22fSVladimir Kondratiev enum wmi_command_id {
392be7d22fSVladimir Kondratiev 	WMI_CONNECT_CMDID		= 0x0001,
402be7d22fSVladimir Kondratiev 	WMI_DISCONNECT_CMDID		= 0x0003,
41b8023177SVladimir Kondratiev 	WMI_DISCONNECT_STA_CMDID	= 0x0004,
422be7d22fSVladimir Kondratiev 	WMI_START_SCAN_CMDID		= 0x0007,
432be7d22fSVladimir Kondratiev 	WMI_SET_BSS_FILTER_CMDID	= 0x0009,
442be7d22fSVladimir Kondratiev 	WMI_SET_PROBED_SSID_CMDID	= 0x000a,
452be7d22fSVladimir Kondratiev 	WMI_SET_LISTEN_INT_CMDID	= 0x000b,
462be7d22fSVladimir Kondratiev 	WMI_BCON_CTRL_CMDID		= 0x000f,
472be7d22fSVladimir Kondratiev 	WMI_ADD_CIPHER_KEY_CMDID	= 0x0016,
482be7d22fSVladimir Kondratiev 	WMI_DELETE_CIPHER_KEY_CMDID	= 0x0017,
492be7d22fSVladimir Kondratiev 	WMI_SET_APPIE_CMDID		= 0x003f,
502be7d22fSVladimir Kondratiev 	WMI_SET_WSC_STATUS_CMDID	= 0x0041,
512be7d22fSVladimir Kondratiev 	WMI_PXMT_RANGE_CFG_CMDID	= 0x0042,
522be7d22fSVladimir Kondratiev 	WMI_PXMT_SNR2_RANGE_CFG_CMDID	= 0x0043,
538c679675SVladimir Kondratiev /*	WMI_FAST_MEM_ACC_MODE_CMDID	= 0x0300, */
542be7d22fSVladimir Kondratiev 	WMI_MEM_READ_CMDID		= 0x0800,
552be7d22fSVladimir Kondratiev 	WMI_MEM_WR_CMDID		= 0x0801,
562be7d22fSVladimir Kondratiev 	WMI_ECHO_CMDID			= 0x0803,
572be7d22fSVladimir Kondratiev 	WMI_DEEP_ECHO_CMDID		= 0x0804,
582be7d22fSVladimir Kondratiev 	WMI_CONFIG_MAC_CMDID		= 0x0805,
592be7d22fSVladimir Kondratiev 	WMI_CONFIG_PHY_DEBUG_CMDID	= 0x0806,
602be7d22fSVladimir Kondratiev 	WMI_ADD_DEBUG_TX_PCKT_CMDID	= 0x0808,
612be7d22fSVladimir Kondratiev 	WMI_PHY_GET_STATISTICS_CMDID	= 0x0809,
622be7d22fSVladimir Kondratiev 	WMI_FS_TUNE_CMDID		= 0x080a,
632be7d22fSVladimir Kondratiev 	WMI_CORR_MEASURE_CMDID		= 0x080b,
64b8023177SVladimir Kondratiev 	WMI_READ_RSSI_CMDID		= 0x080c,
652be7d22fSVladimir Kondratiev 	WMI_TEMP_SENSE_CMDID		= 0x080e,
662be7d22fSVladimir Kondratiev 	WMI_DC_CALIB_CMDID		= 0x080f,
672be7d22fSVladimir Kondratiev 	WMI_SEND_TONE_CMDID		= 0x0810,
682be7d22fSVladimir Kondratiev 	WMI_IQ_TX_CALIB_CMDID		= 0x0811,
692be7d22fSVladimir Kondratiev 	WMI_IQ_RX_CALIB_CMDID		= 0x0812,
702be7d22fSVladimir Kondratiev 	WMI_SET_UCODE_IDLE_CMDID	= 0x0813,
712be7d22fSVladimir Kondratiev 	WMI_SET_WORK_MODE_CMDID		= 0x0815,
722be7d22fSVladimir Kondratiev 	WMI_LO_LEAKAGE_CALIB_CMDID	= 0x0816,
732be7d22fSVladimir Kondratiev 	WMI_MARLON_R_READ_CMDID		= 0x0818,
742be7d22fSVladimir Kondratiev 	WMI_MARLON_R_WRITE_CMDID	= 0x0819,
752be7d22fSVladimir Kondratiev 	WMI_MARLON_R_TXRX_SEL_CMDID	= 0x081a,
762be7d22fSVladimir Kondratiev 	MAC_IO_STATIC_PARAMS_CMDID	= 0x081b,
772be7d22fSVladimir Kondratiev 	MAC_IO_DYNAMIC_PARAMS_CMDID	= 0x081c,
782be7d22fSVladimir Kondratiev 	WMI_SILENT_RSSI_CALIB_CMDID	= 0x081d,
79b8023177SVladimir Kondratiev 	WMI_RF_RX_TEST_CMDID		= 0x081e,
802be7d22fSVladimir Kondratiev 	WMI_CFG_RX_CHAIN_CMDID		= 0x0820,
812be7d22fSVladimir Kondratiev 	WMI_VRING_CFG_CMDID		= 0x0821,
8262bfd300SVladimir Kondratiev 	WMI_BCAST_VRING_CFG_CMDID	= 0x0822,
832be7d22fSVladimir Kondratiev 	WMI_VRING_BA_EN_CMDID		= 0x0823,
842be7d22fSVladimir Kondratiev 	WMI_VRING_BA_DIS_CMDID		= 0x0824,
852be7d22fSVladimir Kondratiev 	WMI_RCP_ADDBA_RESP_CMDID	= 0x0825,
862be7d22fSVladimir Kondratiev 	WMI_RCP_DELBA_CMDID		= 0x0826,
872be7d22fSVladimir Kondratiev 	WMI_SET_SSID_CMDID		= 0x0827,
882be7d22fSVladimir Kondratiev 	WMI_GET_SSID_CMDID		= 0x0828,
892be7d22fSVladimir Kondratiev 	WMI_SET_PCP_CHANNEL_CMDID	= 0x0829,
902be7d22fSVladimir Kondratiev 	WMI_GET_PCP_CHANNEL_CMDID	= 0x082a,
912be7d22fSVladimir Kondratiev 	WMI_SW_TX_REQ_CMDID		= 0x082b,
922be7d22fSVladimir Kondratiev 	WMI_READ_MAC_RXQ_CMDID		= 0x0830,
932be7d22fSVladimir Kondratiev 	WMI_READ_MAC_TXQ_CMDID		= 0x0831,
942be7d22fSVladimir Kondratiev 	WMI_WRITE_MAC_RXQ_CMDID		= 0x0832,
952be7d22fSVladimir Kondratiev 	WMI_WRITE_MAC_TXQ_CMDID		= 0x0833,
962be7d22fSVladimir Kondratiev 	WMI_WRITE_MAC_XQ_FIELD_CMDID	= 0x0834,
972be7d22fSVladimir Kondratiev 	WMI_MLME_PUSH_CMDID		= 0x0835,
982be7d22fSVladimir Kondratiev 	WMI_BEAMFORMING_MGMT_CMDID	= 0x0836,
992be7d22fSVladimir Kondratiev 	WMI_BF_TXSS_MGMT_CMDID		= 0x0837,
1002be7d22fSVladimir Kondratiev 	WMI_BF_SM_MGMT_CMDID		= 0x0838,
1012be7d22fSVladimir Kondratiev 	WMI_BF_RXSS_MGMT_CMDID		= 0x0839,
10262bfd300SVladimir Kondratiev 	WMI_BF_TRIG_CMDID		= 0x083A,
1032be7d22fSVladimir Kondratiev 	WMI_SET_SECTORS_CMDID		= 0x0849,
1042be7d22fSVladimir Kondratiev 	WMI_MAINTAIN_PAUSE_CMDID	= 0x0850,
1052be7d22fSVladimir Kondratiev 	WMI_MAINTAIN_RESUME_CMDID	= 0x0851,
1062be7d22fSVladimir Kondratiev 	WMI_RS_MGMT_CMDID		= 0x0852,
1072be7d22fSVladimir Kondratiev 	WMI_RF_MGMT_CMDID		= 0x0853,
1088c679675SVladimir Kondratiev 	WMI_THERMAL_THROTTLING_CTRL_CMDID	= 0x0854,
1098c679675SVladimir Kondratiev 	WMI_THERMAL_THROTTLING_GET_STATUS_CMDID	= 0x0855,
1102be7d22fSVladimir Kondratiev 	/* Performance monitoring commands */
1112be7d22fSVladimir Kondratiev 	WMI_BF_CTRL_CMDID		= 0x0862,
1122be7d22fSVladimir Kondratiev 	WMI_NOTIFY_REQ_CMDID		= 0x0863,
1132be7d22fSVladimir Kondratiev 	WMI_GET_STATUS_CMDID		= 0x0864,
1142be7d22fSVladimir Kondratiev 	WMI_UNIT_TEST_CMDID		= 0x0900,
1152be7d22fSVladimir Kondratiev 	WMI_HICCUP_CMDID		= 0x0901,
1162be7d22fSVladimir Kondratiev 	WMI_FLASH_READ_CMDID		= 0x0902,
1172be7d22fSVladimir Kondratiev 	WMI_FLASH_WRITE_CMDID		= 0x0903,
1182be7d22fSVladimir Kondratiev 	WMI_SECURITY_UNIT_TEST_CMDID	= 0x0904,
119b8023177SVladimir Kondratiev 	/*P2P*/
120b8023177SVladimir Kondratiev 	WMI_P2P_CFG_CMDID		= 0x0910,
121b8023177SVladimir Kondratiev 	WMI_PORT_ALLOCATE_CMDID		= 0x0911,
122b8023177SVladimir Kondratiev 	WMI_PORT_DELETE_CMDID		= 0x0912,
123b8023177SVladimir Kondratiev 	WMI_POWER_MGMT_CFG_CMDID	= 0x0913,
124b8023177SVladimir Kondratiev 	WMI_START_LISTEN_CMDID		= 0x0914,
125b8023177SVladimir Kondratiev 	WMI_START_SEARCH_CMDID		= 0x0915,
126b8023177SVladimir Kondratiev 	WMI_DISCOVERY_START_CMDID	= 0x0916,
127b8023177SVladimir Kondratiev 	WMI_DISCOVERY_STOP_CMDID	= 0x0917,
128b8023177SVladimir Kondratiev 	WMI_PCP_START_CMDID		= 0x0918,
129b8023177SVladimir Kondratiev 	WMI_PCP_STOP_CMDID		= 0x0919,
130b8023177SVladimir Kondratiev 	WMI_GET_PCP_FACTOR_CMDID	= 0x091b,
1312be7d22fSVladimir Kondratiev 
1322be7d22fSVladimir Kondratiev 	WMI_SET_MAC_ADDRESS_CMDID	= 0xf003,
1332be7d22fSVladimir Kondratiev 	WMI_ABORT_SCAN_CMDID		= 0xf007,
1342be7d22fSVladimir Kondratiev 	WMI_SET_PMK_CMDID		= 0xf028,
1352be7d22fSVladimir Kondratiev 
1362be7d22fSVladimir Kondratiev 	WMI_SET_PROMISCUOUS_MODE_CMDID	= 0xf041,
1372be7d22fSVladimir Kondratiev 	WMI_GET_PMK_CMDID		= 0xf048,
1382be7d22fSVladimir Kondratiev 	WMI_SET_PASSPHRASE_CMDID	= 0xf049,
1392be7d22fSVladimir Kondratiev 	WMI_SEND_ASSOC_RES_CMDID	= 0xf04a,
1402be7d22fSVladimir Kondratiev 	WMI_SET_ASSOC_REQ_RELAY_CMDID	= 0xf04b,
1412be7d22fSVladimir Kondratiev 	WMI_EAPOL_TX_CMDID		= 0xf04c,
1422be7d22fSVladimir Kondratiev 	WMI_MAC_ADDR_REQ_CMDID		= 0xf04d,
1432be7d22fSVladimir Kondratiev 	WMI_FW_VER_CMDID		= 0xf04e,
1448c679675SVladimir Kondratiev 	WMI_PMC_CMDID			= 0xf04f,
1452be7d22fSVladimir Kondratiev };
1462be7d22fSVladimir Kondratiev 
1472be7d22fSVladimir Kondratiev /*
1482be7d22fSVladimir Kondratiev  * Commands data structures
1492be7d22fSVladimir Kondratiev  */
1502be7d22fSVladimir Kondratiev 
1512be7d22fSVladimir Kondratiev /*
1522be7d22fSVladimir Kondratiev  * WMI_CONNECT_CMDID
1532be7d22fSVladimir Kondratiev  */
1542be7d22fSVladimir Kondratiev enum wmi_network_type {
1552be7d22fSVladimir Kondratiev 	WMI_NETTYPE_INFRA		= 0x01,
1562be7d22fSVladimir Kondratiev 	WMI_NETTYPE_ADHOC		= 0x02,
1572be7d22fSVladimir Kondratiev 	WMI_NETTYPE_ADHOC_CREATOR	= 0x04,
1582be7d22fSVladimir Kondratiev 	WMI_NETTYPE_AP			= 0x10,
1592be7d22fSVladimir Kondratiev 	WMI_NETTYPE_P2P			= 0x20,
1602be7d22fSVladimir Kondratiev 	WMI_NETTYPE_WBE			= 0x40, /* PCIE over 60g */
1612be7d22fSVladimir Kondratiev };
1622be7d22fSVladimir Kondratiev 
1632be7d22fSVladimir Kondratiev enum wmi_dot11_auth_mode {
1642be7d22fSVladimir Kondratiev 	WMI_AUTH11_OPEN			= 0x01,
1652be7d22fSVladimir Kondratiev 	WMI_AUTH11_SHARED		= 0x02,
1662be7d22fSVladimir Kondratiev 	WMI_AUTH11_LEAP			= 0x04,
1672be7d22fSVladimir Kondratiev 	WMI_AUTH11_WSC			= 0x08,
1682be7d22fSVladimir Kondratiev };
1692be7d22fSVladimir Kondratiev 
1702be7d22fSVladimir Kondratiev enum wmi_auth_mode {
1712be7d22fSVladimir Kondratiev 	WMI_AUTH_NONE			= 0x01,
1722be7d22fSVladimir Kondratiev 	WMI_AUTH_WPA			= 0x02,
1732be7d22fSVladimir Kondratiev 	WMI_AUTH_WPA2			= 0x04,
1742be7d22fSVladimir Kondratiev 	WMI_AUTH_WPA_PSK		= 0x08,
1752be7d22fSVladimir Kondratiev 	WMI_AUTH_WPA2_PSK		= 0x10,
1762be7d22fSVladimir Kondratiev 	WMI_AUTH_WPA_CCKM		= 0x20,
1772be7d22fSVladimir Kondratiev 	WMI_AUTH_WPA2_CCKM		= 0x40,
1782be7d22fSVladimir Kondratiev };
1792be7d22fSVladimir Kondratiev 
1802be7d22fSVladimir Kondratiev enum wmi_crypto_type {
1812be7d22fSVladimir Kondratiev 	WMI_CRYPT_NONE			= 0x01,
1822be7d22fSVladimir Kondratiev 	WMI_CRYPT_WEP			= 0x02,
1832be7d22fSVladimir Kondratiev 	WMI_CRYPT_TKIP			= 0x04,
1842be7d22fSVladimir Kondratiev 	WMI_CRYPT_AES			= 0x08,
1852be7d22fSVladimir Kondratiev 	WMI_CRYPT_AES_GCMP		= 0x20,
1862be7d22fSVladimir Kondratiev };
1872be7d22fSVladimir Kondratiev 
1882be7d22fSVladimir Kondratiev enum wmi_connect_ctrl_flag_bits {
1892be7d22fSVladimir Kondratiev 	WMI_CONNECT_ASSOC_POLICY_USER		= 0x0001,
1902be7d22fSVladimir Kondratiev 	WMI_CONNECT_SEND_REASSOC		= 0x0002,
191b8023177SVladimir Kondratiev 	WMI_CONNECT_IGNORE_WPA_GROUP_CIPHER	= 0x0004,
1922be7d22fSVladimir Kondratiev 	WMI_CONNECT_PROFILE_MATCH_DONE		= 0x0008,
1932be7d22fSVladimir Kondratiev 	WMI_CONNECT_IGNORE_AAC_BEACON		= 0x0010,
1942be7d22fSVladimir Kondratiev 	WMI_CONNECT_CSA_FOLLOW_BSS		= 0x0020,
1952be7d22fSVladimir Kondratiev 	WMI_CONNECT_DO_WPA_OFFLOAD		= 0x0040,
1962be7d22fSVladimir Kondratiev 	WMI_CONNECT_DO_NOT_DEAUTH		= 0x0080,
1972be7d22fSVladimir Kondratiev };
1982be7d22fSVladimir Kondratiev 
1992be7d22fSVladimir Kondratiev #define WMI_MAX_SSID_LEN    (32)
2002be7d22fSVladimir Kondratiev 
2012be7d22fSVladimir Kondratiev struct wmi_connect_cmd {
2022be7d22fSVladimir Kondratiev 	u8 network_type;
2032be7d22fSVladimir Kondratiev 	u8 dot11_auth_mode;
2042be7d22fSVladimir Kondratiev 	u8 auth_mode;
2052be7d22fSVladimir Kondratiev 	u8 pairwise_crypto_type;
2062be7d22fSVladimir Kondratiev 	u8 pairwise_crypto_len;
2072be7d22fSVladimir Kondratiev 	u8 group_crypto_type;
2082be7d22fSVladimir Kondratiev 	u8 group_crypto_len;
2092be7d22fSVladimir Kondratiev 	u8 ssid_len;
2102be7d22fSVladimir Kondratiev 	u8 ssid[WMI_MAX_SSID_LEN];
2112be7d22fSVladimir Kondratiev 	u8 channel;
2122be7d22fSVladimir Kondratiev 	u8 reserved0;
2132be7d22fSVladimir Kondratiev 	u8 bssid[WMI_MAC_LEN];
2142be7d22fSVladimir Kondratiev 	__le32 ctrl_flags;
2152be7d22fSVladimir Kondratiev 	u8 dst_mac[WMI_MAC_LEN];
2162be7d22fSVladimir Kondratiev 	u8 reserved1[2];
2172be7d22fSVladimir Kondratiev } __packed;
2182be7d22fSVladimir Kondratiev 
219b8023177SVladimir Kondratiev /*
220b8023177SVladimir Kondratiev  * WMI_DISCONNECT_STA_CMDID
221b8023177SVladimir Kondratiev  */
222b8023177SVladimir Kondratiev struct wmi_disconnect_sta_cmd {
223b8023177SVladimir Kondratiev 	u8 dst_mac[WMI_MAC_LEN];
224b8023177SVladimir Kondratiev 	__le16 disconnect_reason;
225b8023177SVladimir Kondratiev } __packed;
2262be7d22fSVladimir Kondratiev 
2272be7d22fSVladimir Kondratiev /*
2282be7d22fSVladimir Kondratiev  * WMI_SET_PMK_CMDID
2292be7d22fSVladimir Kondratiev  */
2302be7d22fSVladimir Kondratiev 
2312be7d22fSVladimir Kondratiev #define WMI_MIN_KEY_INDEX	(0)
2322be7d22fSVladimir Kondratiev #define WMI_MAX_KEY_INDEX	(3)
2332be7d22fSVladimir Kondratiev #define WMI_MAX_KEY_LEN		(32)
2342be7d22fSVladimir Kondratiev #define WMI_PASSPHRASE_LEN	(64)
2352be7d22fSVladimir Kondratiev #define WMI_PMK_LEN		(32)
2362be7d22fSVladimir Kondratiev 
2372be7d22fSVladimir Kondratiev struct  wmi_set_pmk_cmd {
2382be7d22fSVladimir Kondratiev 	u8 pmk[WMI_PMK_LEN];
2392be7d22fSVladimir Kondratiev } __packed;
2402be7d22fSVladimir Kondratiev 
2412be7d22fSVladimir Kondratiev /*
2422be7d22fSVladimir Kondratiev  * WMI_SET_PASSPHRASE_CMDID
2432be7d22fSVladimir Kondratiev  */
2442be7d22fSVladimir Kondratiev struct wmi_set_passphrase_cmd {
2452be7d22fSVladimir Kondratiev 	u8 ssid[WMI_MAX_SSID_LEN];
2462be7d22fSVladimir Kondratiev 	u8 passphrase[WMI_PASSPHRASE_LEN];
2472be7d22fSVladimir Kondratiev 	u8 ssid_len;
2482be7d22fSVladimir Kondratiev 	u8 passphrase_len;
2492be7d22fSVladimir Kondratiev } __packed;
2502be7d22fSVladimir Kondratiev 
2512be7d22fSVladimir Kondratiev /*
2522be7d22fSVladimir Kondratiev  * WMI_ADD_CIPHER_KEY_CMDID
2532be7d22fSVladimir Kondratiev  */
2542be7d22fSVladimir Kondratiev enum wmi_key_usage {
2552be7d22fSVladimir Kondratiev 	WMI_KEY_USE_PAIRWISE	= 0,
256230d8442SVladimir Kondratiev 	WMI_KEY_USE_RX_GROUP	= 1,
257230d8442SVladimir Kondratiev 	WMI_KEY_USE_TX_GROUP	= 2,
2582be7d22fSVladimir Kondratiev };
2592be7d22fSVladimir Kondratiev 
2602be7d22fSVladimir Kondratiev struct wmi_add_cipher_key_cmd {
2612be7d22fSVladimir Kondratiev 	u8 key_index;
2622be7d22fSVladimir Kondratiev 	u8 key_type;
2632be7d22fSVladimir Kondratiev 	u8 key_usage;		/* enum wmi_key_usage */
2642be7d22fSVladimir Kondratiev 	u8 key_len;
2652be7d22fSVladimir Kondratiev 	u8 key_rsc[8];		/* key replay sequence counter */
2662be7d22fSVladimir Kondratiev 	u8 key[WMI_MAX_KEY_LEN];
2672be7d22fSVladimir Kondratiev 	u8 key_op_ctrl;		/* Additional Key Control information */
2682be7d22fSVladimir Kondratiev 	u8 mac[WMI_MAC_LEN];
2692be7d22fSVladimir Kondratiev } __packed;
2702be7d22fSVladimir Kondratiev 
2712be7d22fSVladimir Kondratiev /*
2722be7d22fSVladimir Kondratiev  * WMI_DELETE_CIPHER_KEY_CMDID
2732be7d22fSVladimir Kondratiev  */
2742be7d22fSVladimir Kondratiev struct wmi_delete_cipher_key_cmd {
2752be7d22fSVladimir Kondratiev 	u8 key_index;
2762be7d22fSVladimir Kondratiev 	u8 mac[WMI_MAC_LEN];
2772be7d22fSVladimir Kondratiev } __packed;
2782be7d22fSVladimir Kondratiev 
2792be7d22fSVladimir Kondratiev /*
2802be7d22fSVladimir Kondratiev  * WMI_START_SCAN_CMDID
2812be7d22fSVladimir Kondratiev  *
2822be7d22fSVladimir Kondratiev  * Start L1 scan operation
2832be7d22fSVladimir Kondratiev  *
2842be7d22fSVladimir Kondratiev  * Returned events:
2852be7d22fSVladimir Kondratiev  * - WMI_RX_MGMT_PACKET_EVENTID - for every probe resp.
2862be7d22fSVladimir Kondratiev  * - WMI_SCAN_COMPLETE_EVENTID
2872be7d22fSVladimir Kondratiev  */
2882be7d22fSVladimir Kondratiev enum wmi_scan_type {
2892be7d22fSVladimir Kondratiev 	WMI_LONG_SCAN		= 0,
2902be7d22fSVladimir Kondratiev 	WMI_SHORT_SCAN		= 1,
291b8023177SVladimir Kondratiev 	WMI_PBC_SCAN		= 2,
2928c679675SVladimir Kondratiev 	WMI_DIRECT_SCAN		= 3,
2938c679675SVladimir Kondratiev 	WMI_ACTIVE_SCAN		= 4,
2942be7d22fSVladimir Kondratiev };
2952be7d22fSVladimir Kondratiev 
2962be7d22fSVladimir Kondratiev struct wmi_start_scan_cmd {
2976c2faf09SVladimir Kondratiev 	u8 direct_scan_mac_addr[6];
2986c2faf09SVladimir Kondratiev 	u8 reserved[2];
2992be7d22fSVladimir Kondratiev 	__le32 home_dwell_time;	/* Max duration in the home channel(ms) */
3002be7d22fSVladimir Kondratiev 	__le32 force_scan_interval;	/* Time interval between scans (ms)*/
3012be7d22fSVladimir Kondratiev 	u8 scan_type;		/* wmi_scan_type */
3022be7d22fSVladimir Kondratiev 	u8 num_channels;		/* how many channels follow */
3032be7d22fSVladimir Kondratiev 	struct {
3042be7d22fSVladimir Kondratiev 		u8 channel;
3052be7d22fSVladimir Kondratiev 		u8 reserved;
3062be7d22fSVladimir Kondratiev 	} channel_list[0];	/* channels ID's */
3072be7d22fSVladimir Kondratiev 				/* 0 - 58320 MHz */
3082be7d22fSVladimir Kondratiev 				/* 1 - 60480 MHz */
3092be7d22fSVladimir Kondratiev 				/* 2 - 62640 MHz */
3102be7d22fSVladimir Kondratiev } __packed;
3112be7d22fSVladimir Kondratiev 
3122be7d22fSVladimir Kondratiev /*
3132be7d22fSVladimir Kondratiev  * WMI_SET_PROBED_SSID_CMDID
3142be7d22fSVladimir Kondratiev  */
315b8023177SVladimir Kondratiev #define MAX_PROBED_SSID_INDEX	(3)
3162be7d22fSVladimir Kondratiev 
3172be7d22fSVladimir Kondratiev enum wmi_ssid_flag {
3182be7d22fSVladimir Kondratiev 	WMI_SSID_FLAG_DISABLE	= 0,	/* disables entry */
3192be7d22fSVladimir Kondratiev 	WMI_SSID_FLAG_SPECIFIC	= 1,	/* probes specified ssid */
3202be7d22fSVladimir Kondratiev 	WMI_SSID_FLAG_ANY	= 2,	/* probes for any ssid */
3212be7d22fSVladimir Kondratiev };
3222be7d22fSVladimir Kondratiev 
3232be7d22fSVladimir Kondratiev struct wmi_probed_ssid_cmd {
3242be7d22fSVladimir Kondratiev 	u8 entry_index;			/* 0 to MAX_PROBED_SSID_INDEX */
3252be7d22fSVladimir Kondratiev 	u8 flag;			/* enum wmi_ssid_flag */
3262be7d22fSVladimir Kondratiev 	u8 ssid_len;
3272be7d22fSVladimir Kondratiev 	u8 ssid[WMI_MAX_SSID_LEN];
3282be7d22fSVladimir Kondratiev } __packed;
3292be7d22fSVladimir Kondratiev 
3302be7d22fSVladimir Kondratiev /*
3312be7d22fSVladimir Kondratiev  * WMI_SET_APPIE_CMDID
3322be7d22fSVladimir Kondratiev  * Add Application specified IE to a management frame
3332be7d22fSVladimir Kondratiev  */
334b8023177SVladimir Kondratiev #define WMI_MAX_IE_LEN		(1024)
335b8023177SVladimir Kondratiev 
336b8023177SVladimir Kondratiev /*
337b8023177SVladimir Kondratiev  * Frame Types
338b8023177SVladimir Kondratiev  */
339b8023177SVladimir Kondratiev enum wmi_mgmt_frame_type {
340b8023177SVladimir Kondratiev 	WMI_FRAME_BEACON	= 0,
341b8023177SVladimir Kondratiev 	WMI_FRAME_PROBE_REQ	= 1,
342b8023177SVladimir Kondratiev 	WMI_FRAME_PROBE_RESP	= 2,
343b8023177SVladimir Kondratiev 	WMI_FRAME_ASSOC_REQ	= 3,
344b8023177SVladimir Kondratiev 	WMI_FRAME_ASSOC_RESP	= 4,
345b8023177SVladimir Kondratiev 	WMI_NUM_MGMT_FRAME,
346b8023177SVladimir Kondratiev };
347b8023177SVladimir Kondratiev 
3482be7d22fSVladimir Kondratiev struct wmi_set_appie_cmd {
3492be7d22fSVladimir Kondratiev 	u8 mgmt_frm_type;	/* enum wmi_mgmt_frame_type */
3502be7d22fSVladimir Kondratiev 	u8 reserved;
3512be7d22fSVladimir Kondratiev 	__le16 ie_len;	/* Length of the IE to be added to MGMT frame */
3522be7d22fSVladimir Kondratiev 	u8 ie_info[0];
3532be7d22fSVladimir Kondratiev } __packed;
3542be7d22fSVladimir Kondratiev 
355b8023177SVladimir Kondratiev /*
356b8023177SVladimir Kondratiev  * WMI_PXMT_RANGE_CFG_CMDID
357b8023177SVladimir Kondratiev  */
3582be7d22fSVladimir Kondratiev struct wmi_pxmt_range_cfg_cmd {
3592be7d22fSVladimir Kondratiev 	u8 dst_mac[WMI_MAC_LEN];
3602be7d22fSVladimir Kondratiev 	__le16 range;
3612be7d22fSVladimir Kondratiev } __packed;
3622be7d22fSVladimir Kondratiev 
363b8023177SVladimir Kondratiev /*
364b8023177SVladimir Kondratiev  * WMI_PXMT_SNR2_RANGE_CFG_CMDID
365b8023177SVladimir Kondratiev  */
3662be7d22fSVladimir Kondratiev struct wmi_pxmt_snr2_range_cfg_cmd {
3672be7d22fSVladimir Kondratiev 	s8 snr2range_arr[WMI_PROX_RANGE_NUM-1];
3682be7d22fSVladimir Kondratiev } __packed;
3692be7d22fSVladimir Kondratiev 
3702be7d22fSVladimir Kondratiev /*
3712be7d22fSVladimir Kondratiev  * WMI_RF_MGMT_CMDID
3722be7d22fSVladimir Kondratiev  */
3732be7d22fSVladimir Kondratiev enum wmi_rf_mgmt_type {
3742be7d22fSVladimir Kondratiev 	WMI_RF_MGMT_W_DISABLE	= 0,
3752be7d22fSVladimir Kondratiev 	WMI_RF_MGMT_W_ENABLE	= 1,
3762be7d22fSVladimir Kondratiev 	WMI_RF_MGMT_GET_STATUS	= 2,
3772be7d22fSVladimir Kondratiev };
3782be7d22fSVladimir Kondratiev 
3792be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_cmd {
3802be7d22fSVladimir Kondratiev 	__le32 rf_mgmt_type;
3812be7d22fSVladimir Kondratiev } __packed;
3822be7d22fSVladimir Kondratiev 
383b8023177SVladimir Kondratiev /*
3848c679675SVladimir Kondratiev  * WMI_THERMAL_THROTTLING_CTRL_CMDID
3858c679675SVladimir Kondratiev  */
3868c679675SVladimir Kondratiev #define THERMAL_THROTTLING_USE_DEFAULT_MAX_TXOP_LENGTH	(0xFFFFFFFF)
3878c679675SVladimir Kondratiev 
3888c679675SVladimir Kondratiev struct wmi_thermal_throttling_ctrl_cmd {
3898c679675SVladimir Kondratiev 	__le32 time_on_usec;
3908c679675SVladimir Kondratiev 	__le32 time_off_usec;
3918c679675SVladimir Kondratiev 	__le32 max_txop_length_usec;
3928c679675SVladimir Kondratiev } __packed;
3938c679675SVladimir Kondratiev 
3948c679675SVladimir Kondratiev /*
395b8023177SVladimir Kondratiev  * WMI_RF_RX_TEST_CMDID
396b8023177SVladimir Kondratiev  */
397b8023177SVladimir Kondratiev struct wmi_rf_rx_test_cmd {
398b8023177SVladimir Kondratiev 	__le32 sector;
399b8023177SVladimir Kondratiev } __packed;
400b8023177SVladimir Kondratiev 
401b8023177SVladimir Kondratiev /*
402b8023177SVladimir Kondratiev  * WMI_CORR_MEASURE_CMDID
403b8023177SVladimir Kondratiev  */
404b8023177SVladimir Kondratiev struct wmi_corr_measure_cmd {
405b8023177SVladimir Kondratiev 	s32 freq_mhz;
406b8023177SVladimir Kondratiev 	__le32 length_samples;
407b8023177SVladimir Kondratiev 	__le32 iterations;
408b8023177SVladimir Kondratiev } __packed;
409b8023177SVladimir Kondratiev 
4102be7d22fSVladimir Kondratiev /*
4112be7d22fSVladimir Kondratiev  * WMI_SET_SSID_CMDID
4122be7d22fSVladimir Kondratiev  */
4132be7d22fSVladimir Kondratiev struct wmi_set_ssid_cmd {
4142be7d22fSVladimir Kondratiev 	__le32 ssid_len;
4152be7d22fSVladimir Kondratiev 	u8 ssid[WMI_MAX_SSID_LEN];
4162be7d22fSVladimir Kondratiev } __packed;
4172be7d22fSVladimir Kondratiev 
4182be7d22fSVladimir Kondratiev /*
4192be7d22fSVladimir Kondratiev  * WMI_SET_PCP_CHANNEL_CMDID
4202be7d22fSVladimir Kondratiev  */
4212be7d22fSVladimir Kondratiev struct wmi_set_pcp_channel_cmd {
4222be7d22fSVladimir Kondratiev 	u8 channel;
4232be7d22fSVladimir Kondratiev 	u8 reserved[3];
4242be7d22fSVladimir Kondratiev } __packed;
4252be7d22fSVladimir Kondratiev 
4262be7d22fSVladimir Kondratiev /*
4272be7d22fSVladimir Kondratiev  * WMI_BCON_CTRL_CMDID
4282be7d22fSVladimir Kondratiev  */
4292be7d22fSVladimir Kondratiev struct wmi_bcon_ctrl_cmd {
4302be7d22fSVladimir Kondratiev 	__le16 bcon_interval;
4312be7d22fSVladimir Kondratiev 	__le16 frag_num;
4322be7d22fSVladimir Kondratiev 	__le64 ss_mask;
4332be7d22fSVladimir Kondratiev 	u8 network_type;
4346c2faf09SVladimir Kondratiev 	u8 pcp_max_assoc_sta;
4352be7d22fSVladimir Kondratiev 	u8 disable_sec_offload;
4362be7d22fSVladimir Kondratiev 	u8 disable_sec;
4372be7d22fSVladimir Kondratiev } __packed;
4382be7d22fSVladimir Kondratiev 
439b8023177SVladimir Kondratiev /******* P2P ***********/
440b8023177SVladimir Kondratiev 
441b8023177SVladimir Kondratiev /*
442b8023177SVladimir Kondratiev  * WMI_PORT_ALLOCATE_CMDID
443b8023177SVladimir Kondratiev  */
444b8023177SVladimir Kondratiev enum wmi_port_role {
445b8023177SVladimir Kondratiev 	WMI_PORT_STA		= 0,
446b8023177SVladimir Kondratiev 	WMI_PORT_PCP		= 1,
447b8023177SVladimir Kondratiev 	WMI_PORT_AP		= 2,
448b8023177SVladimir Kondratiev 	WMI_PORT_P2P_DEV	= 3,
449b8023177SVladimir Kondratiev 	WMI_PORT_P2P_CLIENT	= 4,
450b8023177SVladimir Kondratiev 	WMI_PORT_P2P_GO		= 5,
451b8023177SVladimir Kondratiev };
452b8023177SVladimir Kondratiev 
453b8023177SVladimir Kondratiev struct wmi_port_allocate_cmd {
454b8023177SVladimir Kondratiev 	u8 mac[WMI_MAC_LEN];
455b8023177SVladimir Kondratiev 	u8 port_role;
4566c2faf09SVladimir Kondratiev 	u8 mid;
457b8023177SVladimir Kondratiev } __packed;
458b8023177SVladimir Kondratiev 
459b8023177SVladimir Kondratiev /*
460b8023177SVladimir Kondratiev  * WMI_PORT_DELETE_CMDID
461b8023177SVladimir Kondratiev  */
462b8023177SVladimir Kondratiev struct wmi_delete_port_cmd {
463b8023177SVladimir Kondratiev 	u8 mid;
464b8023177SVladimir Kondratiev 	u8 reserved[3];
465b8023177SVladimir Kondratiev } __packed;
466b8023177SVladimir Kondratiev 
467b8023177SVladimir Kondratiev /*
468b8023177SVladimir Kondratiev  * WMI_P2P_CFG_CMDID
469b8023177SVladimir Kondratiev  */
470b8023177SVladimir Kondratiev enum wmi_discovery_mode {
471b8023177SVladimir Kondratiev 	WMI_DISCOVERY_MODE_NON_OFFLOAD	= 0,
472b8023177SVladimir Kondratiev 	WMI_DISCOVERY_MODE_OFFLOAD	= 1,
4736c2faf09SVladimir Kondratiev 	WMI_DISCOVERY_MODE_PEER2PEER	= 2,
474b8023177SVladimir Kondratiev };
475b8023177SVladimir Kondratiev 
476b8023177SVladimir Kondratiev struct wmi_p2p_cfg_cmd {
477b8023177SVladimir Kondratiev 	u8 discovery_mode;	/* wmi_discovery_mode */
478b8023177SVladimir Kondratiev 	u8 channel;
479b8023177SVladimir Kondratiev 	__le16 bcon_interval; /* base to listen/search duration calculation */
480b8023177SVladimir Kondratiev } __packed;
481b8023177SVladimir Kondratiev 
482b8023177SVladimir Kondratiev /*
483b8023177SVladimir Kondratiev  * WMI_POWER_MGMT_CFG_CMDID
484b8023177SVladimir Kondratiev  */
485b8023177SVladimir Kondratiev enum wmi_power_source_type {
486b8023177SVladimir Kondratiev 	WMI_POWER_SOURCE_BATTERY	= 0,
487b8023177SVladimir Kondratiev 	WMI_POWER_SOURCE_OTHER		= 1,
488b8023177SVladimir Kondratiev };
489b8023177SVladimir Kondratiev 
490b8023177SVladimir Kondratiev struct wmi_power_mgmt_cfg_cmd {
491b8023177SVladimir Kondratiev 	u8 power_source;	/* wmi_power_source_type */
492b8023177SVladimir Kondratiev 	u8 reserved[3];
493b8023177SVladimir Kondratiev } __packed;
494b8023177SVladimir Kondratiev 
495b8023177SVladimir Kondratiev /*
496b8023177SVladimir Kondratiev  * WMI_PCP_START_CMDID
497b8023177SVladimir Kondratiev  */
498*8e52fe30SHamad Kadmany 
499*8e52fe30SHamad Kadmany enum wmi_hidden_ssid {
500*8e52fe30SHamad Kadmany 	WMI_HIDDEN_SSID_DISABLED	= 0,
501*8e52fe30SHamad Kadmany 	WMI_HIDDEN_SSID_SEND_EMPTY	= 1,
502*8e52fe30SHamad Kadmany 	WMI_HIDDEN_SSID_CLEAR	= 2,
503*8e52fe30SHamad Kadmany };
504*8e52fe30SHamad Kadmany 
505b8023177SVladimir Kondratiev struct wmi_pcp_start_cmd {
506b8023177SVladimir Kondratiev 	__le16 bcon_interval;
5076c2faf09SVladimir Kondratiev 	u8 pcp_max_assoc_sta;
508*8e52fe30SHamad Kadmany 	u8 hidden_ssid;
509*8e52fe30SHamad Kadmany 	u8 reserved0[8];
510b8023177SVladimir Kondratiev 	u8 network_type;
511b8023177SVladimir Kondratiev 	u8 channel;
512b8023177SVladimir Kondratiev 	u8 disable_sec_offload;
513b8023177SVladimir Kondratiev 	u8 disable_sec;
514b8023177SVladimir Kondratiev } __packed;
515b8023177SVladimir Kondratiev 
5162be7d22fSVladimir Kondratiev /*
5172be7d22fSVladimir Kondratiev  * WMI_SW_TX_REQ_CMDID
5182be7d22fSVladimir Kondratiev  */
5192be7d22fSVladimir Kondratiev struct wmi_sw_tx_req_cmd {
5202be7d22fSVladimir Kondratiev 	u8 dst_mac[WMI_MAC_LEN];
5212be7d22fSVladimir Kondratiev 	__le16 len;
5222be7d22fSVladimir Kondratiev 	u8 payload[0];
5232be7d22fSVladimir Kondratiev } __packed;
5242be7d22fSVladimir Kondratiev 
5252be7d22fSVladimir Kondratiev /*
5262be7d22fSVladimir Kondratiev  * WMI_VRING_CFG_CMDID
5272be7d22fSVladimir Kondratiev  */
5282be7d22fSVladimir Kondratiev 
5292be7d22fSVladimir Kondratiev struct wmi_sw_ring_cfg {
5302be7d22fSVladimir Kondratiev 	__le64 ring_mem_base;
5312be7d22fSVladimir Kondratiev 	__le16 ring_size;
5322be7d22fSVladimir Kondratiev 	__le16 max_mpdu_size;
5332be7d22fSVladimir Kondratiev } __packed;
5342be7d22fSVladimir Kondratiev 
5352be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd {
5362be7d22fSVladimir Kondratiev 	__le16 priority;
5372be7d22fSVladimir Kondratiev 	__le16 timeslot_us;
5382be7d22fSVladimir Kondratiev } __packed;
5392be7d22fSVladimir Kondratiev 
5402be7d22fSVladimir Kondratiev enum wmi_vring_cfg_encap_trans_type {
5412be7d22fSVladimir Kondratiev 	WMI_VRING_ENC_TYPE_802_3		= 0,
5422be7d22fSVladimir Kondratiev 	WMI_VRING_ENC_TYPE_NATIVE_WIFI		= 1,
5432be7d22fSVladimir Kondratiev };
5442be7d22fSVladimir Kondratiev 
5452be7d22fSVladimir Kondratiev enum wmi_vring_cfg_ds_cfg {
5462be7d22fSVladimir Kondratiev 	WMI_VRING_DS_PBSS			= 0,
5472be7d22fSVladimir Kondratiev 	WMI_VRING_DS_STATION			= 1,
5482be7d22fSVladimir Kondratiev 	WMI_VRING_DS_AP				= 2,
5492be7d22fSVladimir Kondratiev 	WMI_VRING_DS_ADDR4			= 3,
5502be7d22fSVladimir Kondratiev };
5512be7d22fSVladimir Kondratiev 
5522be7d22fSVladimir Kondratiev enum wmi_vring_cfg_nwifi_ds_trans_type {
5532be7d22fSVladimir Kondratiev 	WMI_NWIFI_TX_TRANS_MODE_NO		= 0,
5542be7d22fSVladimir Kondratiev 	WMI_NWIFI_TX_TRANS_MODE_AP2PBSS		= 1,
5552be7d22fSVladimir Kondratiev 	WMI_NWIFI_TX_TRANS_MODE_STA2PBSS	= 2,
5562be7d22fSVladimir Kondratiev };
5572be7d22fSVladimir Kondratiev 
5582be7d22fSVladimir Kondratiev enum wmi_vring_cfg_schd_params_priority {
5592be7d22fSVladimir Kondratiev 	WMI_SCH_PRIO_REGULAR			= 0,
5602be7d22fSVladimir Kondratiev 	WMI_SCH_PRIO_HIGH			= 1,
5612be7d22fSVladimir Kondratiev };
5622be7d22fSVladimir Kondratiev 
5632be7d22fSVladimir Kondratiev #define CIDXTID_CID_POS (0)
5642be7d22fSVladimir Kondratiev #define CIDXTID_CID_LEN (4)
5652be7d22fSVladimir Kondratiev #define CIDXTID_CID_MSK (0xF)
5662be7d22fSVladimir Kondratiev #define CIDXTID_TID_POS (4)
5672be7d22fSVladimir Kondratiev #define CIDXTID_TID_LEN (4)
5682be7d22fSVladimir Kondratiev #define CIDXTID_TID_MSK (0xF0)
569b8023177SVladimir Kondratiev 
570b8023177SVladimir Kondratiev struct wmi_vring_cfg {
571b8023177SVladimir Kondratiev 	struct wmi_sw_ring_cfg tx_sw_ring;
572b8023177SVladimir Kondratiev 	u8 ringid;				/* 0-23 vrings */
573b8023177SVladimir Kondratiev 
5742be7d22fSVladimir Kondratiev 	u8 cidxtid;
5752be7d22fSVladimir Kondratiev 
5762be7d22fSVladimir Kondratiev 	u8 encap_trans_type;
5772be7d22fSVladimir Kondratiev 	u8 ds_cfg;				/* 802.3 DS cfg */
5782be7d22fSVladimir Kondratiev 	u8 nwifi_ds_trans_type;
5792be7d22fSVladimir Kondratiev 
5802be7d22fSVladimir Kondratiev 	#define VRING_CFG_MAC_CTRL_LIFETIME_EN_POS (0)
5812be7d22fSVladimir Kondratiev 	#define VRING_CFG_MAC_CTRL_LIFETIME_EN_LEN (1)
5822be7d22fSVladimir Kondratiev 	#define VRING_CFG_MAC_CTRL_LIFETIME_EN_MSK (0x1)
5832be7d22fSVladimir Kondratiev 	#define VRING_CFG_MAC_CTRL_AGGR_EN_POS (1)
5842be7d22fSVladimir Kondratiev 	#define VRING_CFG_MAC_CTRL_AGGR_EN_LEN (1)
5852be7d22fSVladimir Kondratiev 	#define VRING_CFG_MAC_CTRL_AGGR_EN_MSK (0x2)
5862be7d22fSVladimir Kondratiev 	u8 mac_ctrl;
5872be7d22fSVladimir Kondratiev 
5882be7d22fSVladimir Kondratiev 	#define VRING_CFG_TO_RESOLUTION_VALUE_POS (0)
5892be7d22fSVladimir Kondratiev 	#define VRING_CFG_TO_RESOLUTION_VALUE_LEN (6)
5902be7d22fSVladimir Kondratiev 	#define VRING_CFG_TO_RESOLUTION_VALUE_MSK (0x3F)
5912be7d22fSVladimir Kondratiev 	u8 to_resolution;
5922be7d22fSVladimir Kondratiev 	u8 agg_max_wsize;
5932be7d22fSVladimir Kondratiev 	struct wmi_vring_cfg_schd schd_params;
5942be7d22fSVladimir Kondratiev } __packed;
5952be7d22fSVladimir Kondratiev 
5962be7d22fSVladimir Kondratiev enum wmi_vring_cfg_cmd_action {
5972be7d22fSVladimir Kondratiev 	WMI_VRING_CMD_ADD			= 0,
5982be7d22fSVladimir Kondratiev 	WMI_VRING_CMD_MODIFY			= 1,
5992be7d22fSVladimir Kondratiev 	WMI_VRING_CMD_DELETE			= 2,
6002be7d22fSVladimir Kondratiev };
6012be7d22fSVladimir Kondratiev 
6022be7d22fSVladimir Kondratiev struct wmi_vring_cfg_cmd {
6032be7d22fSVladimir Kondratiev 	__le32 action;
6042be7d22fSVladimir Kondratiev 	struct wmi_vring_cfg vring_cfg;
6052be7d22fSVladimir Kondratiev } __packed;
6062be7d22fSVladimir Kondratiev 
6072be7d22fSVladimir Kondratiev /*
60862bfd300SVladimir Kondratiev  * WMI_BCAST_VRING_CFG_CMDID
60962bfd300SVladimir Kondratiev  */
61062bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg {
61162bfd300SVladimir Kondratiev 	struct wmi_sw_ring_cfg tx_sw_ring;
61262bfd300SVladimir Kondratiev 	u8 ringid;				/* 0-23 vrings */
61362bfd300SVladimir Kondratiev 	u8 encap_trans_type;
61462bfd300SVladimir Kondratiev 	u8 ds_cfg;				/* 802.3 DS cfg */
61562bfd300SVladimir Kondratiev 	u8 nwifi_ds_trans_type;
61662bfd300SVladimir Kondratiev } __packed;
61762bfd300SVladimir Kondratiev 
61862bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg_cmd {
61962bfd300SVladimir Kondratiev 	__le32 action;
62062bfd300SVladimir Kondratiev 	struct wmi_bcast_vring_cfg vring_cfg;
62162bfd300SVladimir Kondratiev } __packed;
62262bfd300SVladimir Kondratiev 
62362bfd300SVladimir Kondratiev /*
6242be7d22fSVladimir Kondratiev  * WMI_VRING_BA_EN_CMDID
6252be7d22fSVladimir Kondratiev  */
6262be7d22fSVladimir Kondratiev struct wmi_vring_ba_en_cmd {
6272be7d22fSVladimir Kondratiev 	u8 ringid;
6282be7d22fSVladimir Kondratiev 	u8 agg_max_wsize;
6292be7d22fSVladimir Kondratiev 	__le16 ba_timeout;
630cbcf5866SVladimir Kondratiev 	u8 amsdu;
6312be7d22fSVladimir Kondratiev } __packed;
6322be7d22fSVladimir Kondratiev 
6332be7d22fSVladimir Kondratiev /*
6342be7d22fSVladimir Kondratiev  * WMI_VRING_BA_DIS_CMDID
6352be7d22fSVladimir Kondratiev  */
6362be7d22fSVladimir Kondratiev struct wmi_vring_ba_dis_cmd {
6372be7d22fSVladimir Kondratiev 	u8 ringid;
6382be7d22fSVladimir Kondratiev 	u8 reserved;
6392be7d22fSVladimir Kondratiev 	__le16 reason;
6402be7d22fSVladimir Kondratiev } __packed;
6412be7d22fSVladimir Kondratiev 
6422be7d22fSVladimir Kondratiev /*
6432be7d22fSVladimir Kondratiev  * WMI_NOTIFY_REQ_CMDID
6442be7d22fSVladimir Kondratiev  */
6452be7d22fSVladimir Kondratiev struct wmi_notify_req_cmd {
6462be7d22fSVladimir Kondratiev 	u8 cid;
647b8023177SVladimir Kondratiev 	u8 year;
648b8023177SVladimir Kondratiev 	u8 month;
649b8023177SVladimir Kondratiev 	u8 day;
6502be7d22fSVladimir Kondratiev 	__le32 interval_usec;
651b8023177SVladimir Kondratiev 	u8 hour;
652b8023177SVladimir Kondratiev 	u8 minute;
653b8023177SVladimir Kondratiev 	u8 second;
654b8023177SVladimir Kondratiev 	u8 miliseconds;
6552be7d22fSVladimir Kondratiev } __packed;
6562be7d22fSVladimir Kondratiev 
6572be7d22fSVladimir Kondratiev /*
6582be7d22fSVladimir Kondratiev  * WMI_CFG_RX_CHAIN_CMDID
6592be7d22fSVladimir Kondratiev  */
6602be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_mode {
6612be7d22fSVladimir Kondratiev 	WMI_SNIFFER_OFF				= 0,
6622be7d22fSVladimir Kondratiev 	WMI_SNIFFER_ON				= 1,
6632be7d22fSVladimir Kondratiev };
6642be7d22fSVladimir Kondratiev 
6652be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_info_mode {
6662be7d22fSVladimir Kondratiev 	WMI_SNIFFER_PHY_INFO_DISABLED		= 0,
6672be7d22fSVladimir Kondratiev 	WMI_SNIFFER_PHY_INFO_ENABLED		= 1,
6682be7d22fSVladimir Kondratiev };
6692be7d22fSVladimir Kondratiev 
6702be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_support {
6712be7d22fSVladimir Kondratiev 	WMI_SNIFFER_CP				= 0,
6722be7d22fSVladimir Kondratiev 	WMI_SNIFFER_DP				= 1,
6732be7d22fSVladimir Kondratiev 	WMI_SNIFFER_BOTH_PHYS			= 2,
6742be7d22fSVladimir Kondratiev };
6752be7d22fSVladimir Kondratiev 
6762be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg {
6772be7d22fSVladimir Kondratiev 	__le32 mode;		/* enum wmi_sniffer_cfg_mode */
6782be7d22fSVladimir Kondratiev 	__le32 phy_info_mode;	/* enum wmi_sniffer_cfg_phy_info_mode */
6792be7d22fSVladimir Kondratiev 	__le32 phy_support;	/* enum wmi_sniffer_cfg_phy_support */
6802be7d22fSVladimir Kondratiev 	u8 channel;
6812be7d22fSVladimir Kondratiev 	u8 reserved[3];
6822be7d22fSVladimir Kondratiev } __packed;
6832be7d22fSVladimir Kondratiev 
6842be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_action {
6852be7d22fSVladimir Kondratiev 	WMI_RX_CHAIN_ADD			= 0,
6862be7d22fSVladimir Kondratiev 	WMI_RX_CHAIN_DEL			= 1,
6872be7d22fSVladimir Kondratiev };
6882be7d22fSVladimir Kondratiev 
6892be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_decap_trans_type {
6902be7d22fSVladimir Kondratiev 	WMI_DECAP_TYPE_802_3			= 0,
6912be7d22fSVladimir Kondratiev 	WMI_DECAP_TYPE_NATIVE_WIFI		= 1,
6928c679675SVladimir Kondratiev 	WMI_DECAP_TYPE_NONE			= 2,
6932be7d22fSVladimir Kondratiev };
6942be7d22fSVladimir Kondratiev 
6952be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_nwifi_ds_trans_type {
6962be7d22fSVladimir Kondratiev 	WMI_NWIFI_RX_TRANS_MODE_NO		= 0,
6972be7d22fSVladimir Kondratiev 	WMI_NWIFI_RX_TRANS_MODE_PBSS2AP		= 1,
6982be7d22fSVladimir Kondratiev 	WMI_NWIFI_RX_TRANS_MODE_PBSS2STA	= 2,
6992be7d22fSVladimir Kondratiev };
7002be7d22fSVladimir Kondratiev 
701b8023177SVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_reorder_type {
702b8023177SVladimir Kondratiev 	WMI_RX_HW_REORDER = 0,
703b8023177SVladimir Kondratiev 	WMI_RX_SW_REORDER = 1,
704b8023177SVladimir Kondratiev };
705b8023177SVladimir Kondratiev 
7062be7d22fSVladimir Kondratiev struct wmi_cfg_rx_chain_cmd {
7072be7d22fSVladimir Kondratiev 	__le32 action;
7082be7d22fSVladimir Kondratiev 	struct wmi_sw_ring_cfg rx_sw_ring;
7092be7d22fSVladimir Kondratiev 	u8 mid;
7102be7d22fSVladimir Kondratiev 	u8 decap_trans_type;
7112be7d22fSVladimir Kondratiev 
7122be7d22fSVladimir Kondratiev 	#define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_POS (0)
7132be7d22fSVladimir Kondratiev 	#define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_LEN (1)
7142be7d22fSVladimir Kondratiev 	#define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_MSK (0x1)
715c406ea7cSVladimir Kondratiev 	#define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_POS (1)
716c406ea7cSVladimir Kondratiev 	#define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_LEN (1)
717c406ea7cSVladimir Kondratiev 	#define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_MSK (0x2)
7182be7d22fSVladimir Kondratiev 	u8 l2_802_3_offload_ctrl;
7192be7d22fSVladimir Kondratiev 
7202be7d22fSVladimir Kondratiev 	#define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_POS (0)
7212be7d22fSVladimir Kondratiev 	#define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_LEN (1)
7222be7d22fSVladimir Kondratiev 	#define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_MSK (0x1)
7232be7d22fSVladimir Kondratiev 	#define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_POS (1)
7242be7d22fSVladimir Kondratiev 	#define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_LEN (1)
7252be7d22fSVladimir Kondratiev 	#define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_MSK (0x2)
7262be7d22fSVladimir Kondratiev 	u8 l2_nwifi_offload_ctrl;
7272be7d22fSVladimir Kondratiev 
7282be7d22fSVladimir Kondratiev 	u8 vlan_id;
7292be7d22fSVladimir Kondratiev 	u8 nwifi_ds_trans_type;
7302be7d22fSVladimir Kondratiev 
7312be7d22fSVladimir Kondratiev 	#define L3_L4_CTRL_IPV4_CHECKSUM_EN_POS (0)
7322be7d22fSVladimir Kondratiev 	#define L3_L4_CTRL_IPV4_CHECKSUM_EN_LEN (1)
7332be7d22fSVladimir Kondratiev 	#define L3_L4_CTRL_IPV4_CHECKSUM_EN_MSK (0x1)
7342be7d22fSVladimir Kondratiev 	#define L3_L4_CTRL_TCPIP_CHECKSUM_EN_POS (1)
7352be7d22fSVladimir Kondratiev 	#define L3_L4_CTRL_TCPIP_CHECKSUM_EN_LEN (1)
7362be7d22fSVladimir Kondratiev 	#define L3_L4_CTRL_TCPIP_CHECKSUM_EN_MSK (0x2)
7372be7d22fSVladimir Kondratiev 	u8 l3_l4_ctrl;
7382be7d22fSVladimir Kondratiev 
7392be7d22fSVladimir Kondratiev 	#define RING_CTRL_OVERRIDE_PREFETCH_THRSH_POS (0)
7402be7d22fSVladimir Kondratiev 	#define RING_CTRL_OVERRIDE_PREFETCH_THRSH_LEN (1)
7412be7d22fSVladimir Kondratiev 	#define RING_CTRL_OVERRIDE_PREFETCH_THRSH_MSK (0x1)
7422be7d22fSVladimir Kondratiev 	#define RING_CTRL_OVERRIDE_WB_THRSH_POS (1)
7432be7d22fSVladimir Kondratiev 	#define RING_CTRL_OVERRIDE_WB_THRSH_LEN (1)
7442be7d22fSVladimir Kondratiev 	#define RING_CTRL_OVERRIDE_WB_THRSH_MSK (0x2)
7452be7d22fSVladimir Kondratiev 	#define RING_CTRL_OVERRIDE_ITR_THRSH_POS (2)
7462be7d22fSVladimir Kondratiev 	#define RING_CTRL_OVERRIDE_ITR_THRSH_LEN (1)
7472be7d22fSVladimir Kondratiev 	#define RING_CTRL_OVERRIDE_ITR_THRSH_MSK (0x4)
7482be7d22fSVladimir Kondratiev 	#define RING_CTRL_OVERRIDE_HOST_THRSH_POS (3)
7492be7d22fSVladimir Kondratiev 	#define RING_CTRL_OVERRIDE_HOST_THRSH_LEN (1)
7502be7d22fSVladimir Kondratiev 	#define RING_CTRL_OVERRIDE_HOST_THRSH_MSK (0x8)
7512be7d22fSVladimir Kondratiev 	u8 ring_ctrl;
7522be7d22fSVladimir Kondratiev 
7532be7d22fSVladimir Kondratiev 	__le16 prefetch_thrsh;
7542be7d22fSVladimir Kondratiev 	__le16 wb_thrsh;
7552be7d22fSVladimir Kondratiev 	__le32 itr_value;
7562be7d22fSVladimir Kondratiev 	__le16 host_thrsh;
757b8023177SVladimir Kondratiev 	u8 reorder_type;
758b8023177SVladimir Kondratiev 	u8 reserved;
7592be7d22fSVladimir Kondratiev 	struct wmi_sniffer_cfg sniffer_cfg;
7602be7d22fSVladimir Kondratiev } __packed;
7612be7d22fSVladimir Kondratiev 
7622be7d22fSVladimir Kondratiev /*
7632be7d22fSVladimir Kondratiev  * WMI_RCP_ADDBA_RESP_CMDID
7642be7d22fSVladimir Kondratiev  */
7652be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_cmd {
7662be7d22fSVladimir Kondratiev 	u8 cidxtid;
7672be7d22fSVladimir Kondratiev 	u8 dialog_token;
7682be7d22fSVladimir Kondratiev 	__le16 status_code;
7692be7d22fSVladimir Kondratiev 	__le16 ba_param_set;	/* ieee80211_ba_parameterset field to send */
7702be7d22fSVladimir Kondratiev 	__le16 ba_timeout;
7712be7d22fSVladimir Kondratiev } __packed;
7722be7d22fSVladimir Kondratiev 
7732be7d22fSVladimir Kondratiev /*
7742be7d22fSVladimir Kondratiev  * WMI_RCP_DELBA_CMDID
7752be7d22fSVladimir Kondratiev  */
7762be7d22fSVladimir Kondratiev struct wmi_rcp_delba_cmd {
7772be7d22fSVladimir Kondratiev 	u8 cidxtid;
7782be7d22fSVladimir Kondratiev 	u8 reserved;
7792be7d22fSVladimir Kondratiev 	__le16 reason;
7802be7d22fSVladimir Kondratiev } __packed;
7812be7d22fSVladimir Kondratiev 
7822be7d22fSVladimir Kondratiev /*
7832be7d22fSVladimir Kondratiev  * WMI_RCP_ADDBA_REQ_CMDID
7842be7d22fSVladimir Kondratiev  */
7852be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_cmd {
7862be7d22fSVladimir Kondratiev 	u8 cidxtid;
7872be7d22fSVladimir Kondratiev 	u8 dialog_token;
7882be7d22fSVladimir Kondratiev 	/* ieee80211_ba_parameterset field as it received */
7892be7d22fSVladimir Kondratiev 	__le16 ba_param_set;
7902be7d22fSVladimir Kondratiev 	__le16 ba_timeout;
7912be7d22fSVladimir Kondratiev 	/* ieee80211_ba_seqstrl field as it received */
7922be7d22fSVladimir Kondratiev 	__le16 ba_seq_ctrl;
7932be7d22fSVladimir Kondratiev } __packed;
7942be7d22fSVladimir Kondratiev 
7952be7d22fSVladimir Kondratiev /*
7962be7d22fSVladimir Kondratiev  * WMI_SET_MAC_ADDRESS_CMDID
7972be7d22fSVladimir Kondratiev  */
7982be7d22fSVladimir Kondratiev struct wmi_set_mac_address_cmd {
7992be7d22fSVladimir Kondratiev 	u8 mac[WMI_MAC_LEN];
8002be7d22fSVladimir Kondratiev 	u8 reserved[2];
8012be7d22fSVladimir Kondratiev } __packed;
8022be7d22fSVladimir Kondratiev 
8032be7d22fSVladimir Kondratiev /*
8042be7d22fSVladimir Kondratiev * WMI_EAPOL_TX_CMDID
8052be7d22fSVladimir Kondratiev */
8062be7d22fSVladimir Kondratiev struct wmi_eapol_tx_cmd {
8072be7d22fSVladimir Kondratiev 	u8 dst_mac[WMI_MAC_LEN];
8082be7d22fSVladimir Kondratiev 	__le16 eapol_len;
8092be7d22fSVladimir Kondratiev 	u8 eapol[0];
8102be7d22fSVladimir Kondratiev } __packed;
8112be7d22fSVladimir Kondratiev 
8122be7d22fSVladimir Kondratiev /*
8132be7d22fSVladimir Kondratiev  * WMI_ECHO_CMDID
8142be7d22fSVladimir Kondratiev  *
8152be7d22fSVladimir Kondratiev  * Check FW is alive
8162be7d22fSVladimir Kondratiev  *
8172be7d22fSVladimir Kondratiev  * WMI_DEEP_ECHO_CMDID
8182be7d22fSVladimir Kondratiev  *
8192be7d22fSVladimir Kondratiev  * Check FW and ucode are alive
8202be7d22fSVladimir Kondratiev  *
8212be7d22fSVladimir Kondratiev  * Returned event: WMI_ECHO_RSP_EVENTID
8222be7d22fSVladimir Kondratiev  * same event for both commands
8232be7d22fSVladimir Kondratiev  */
8242be7d22fSVladimir Kondratiev struct wmi_echo_cmd {
8252be7d22fSVladimir Kondratiev 	__le32 value;
8262be7d22fSVladimir Kondratiev } __packed;
8272be7d22fSVladimir Kondratiev 
8282be7d22fSVladimir Kondratiev /*
829b8023177SVladimir Kondratiev  * WMI_TEMP_SENSE_CMDID
830b8023177SVladimir Kondratiev  *
831b8023177SVladimir Kondratiev  * Measure MAC and radio temperatures
832b8023177SVladimir Kondratiev  */
8338c679675SVladimir Kondratiev 
8348c679675SVladimir Kondratiev /* Possible modes for temperature measurement */
8358c679675SVladimir Kondratiev enum wmi_temperature_measure_mode {
8368c679675SVladimir Kondratiev 	TEMPERATURE_USE_OLD_VALUE	= 0x1,
8378c679675SVladimir Kondratiev 	TEMPERATURE_MEASURE_NOW		= 0x2,
8388c679675SVladimir Kondratiev };
8398c679675SVladimir Kondratiev 
840b8023177SVladimir Kondratiev struct wmi_temp_sense_cmd {
8418c679675SVladimir Kondratiev 	__le32 measure_baseband_en;
8428c679675SVladimir Kondratiev 	__le32 measure_rf_en;
8438c679675SVladimir Kondratiev 	__le32 measure_mode;
844b8023177SVladimir Kondratiev } __packed;
845b8023177SVladimir Kondratiev 
846b8023177SVladimir Kondratiev /*
847dc16427bSVladimir Kondratiev  * WMI_PMC_CMDID
848dc16427bSVladimir Kondratiev  */
849dc16427bSVladimir Kondratiev enum wmi_pmc_op_e {
850dc16427bSVladimir Kondratiev 	WMI_PMC_ALLOCATE = 0,
851dc16427bSVladimir Kondratiev 	WMI_PMC_RELEASE = 1,
852dc16427bSVladimir Kondratiev };
853dc16427bSVladimir Kondratiev 
854dc16427bSVladimir Kondratiev struct wmi_pmc_cmd {
855dc16427bSVladimir Kondratiev 	u8 op;		/* enum wmi_pmc_cmd_op_type */
856dc16427bSVladimir Kondratiev 	u8 reserved;
857dc16427bSVladimir Kondratiev 	__le16 ring_size;
858dc16427bSVladimir Kondratiev 	__le64 mem_base;
859dc16427bSVladimir Kondratiev } __packed;
860dc16427bSVladimir Kondratiev 
861dc16427bSVladimir Kondratiev /*
8622be7d22fSVladimir Kondratiev  * WMI Events
8632be7d22fSVladimir Kondratiev  */
8642be7d22fSVladimir Kondratiev 
8652be7d22fSVladimir Kondratiev /*
8662be7d22fSVladimir Kondratiev  * List of Events (target to host)
8672be7d22fSVladimir Kondratiev  */
8682be7d22fSVladimir Kondratiev enum wmi_event_id {
8692be7d22fSVladimir Kondratiev 	WMI_READY_EVENTID			= 0x1001,
8702be7d22fSVladimir Kondratiev 	WMI_CONNECT_EVENTID			= 0x1002,
8712be7d22fSVladimir Kondratiev 	WMI_DISCONNECT_EVENTID			= 0x1003,
8722be7d22fSVladimir Kondratiev 	WMI_SCAN_COMPLETE_EVENTID		= 0x100a,
8732be7d22fSVladimir Kondratiev 	WMI_REPORT_STATISTICS_EVENTID		= 0x100b,
8742be7d22fSVladimir Kondratiev 	WMI_RD_MEM_RSP_EVENTID			= 0x1800,
8752be7d22fSVladimir Kondratiev 	WMI_FW_READY_EVENTID			= 0x1801,
8762be7d22fSVladimir Kondratiev 	WMI_EXIT_FAST_MEM_ACC_MODE_EVENTID	= 0x0200,
8772be7d22fSVladimir Kondratiev 	WMI_ECHO_RSP_EVENTID			= 0x1803,
8782be7d22fSVladimir Kondratiev 	WMI_FS_TUNE_DONE_EVENTID		= 0x180a,
879b8023177SVladimir Kondratiev 	WMI_CORR_MEASURE_EVENTID		= 0x180b,
880b8023177SVladimir Kondratiev 	WMI_READ_RSSI_EVENTID			= 0x180c,
8812be7d22fSVladimir Kondratiev 	WMI_TEMP_SENSE_DONE_EVENTID		= 0x180e,
8822be7d22fSVladimir Kondratiev 	WMI_DC_CALIB_DONE_EVENTID		= 0x180f,
8832be7d22fSVladimir Kondratiev 	WMI_IQ_TX_CALIB_DONE_EVENTID		= 0x1811,
8842be7d22fSVladimir Kondratiev 	WMI_IQ_RX_CALIB_DONE_EVENTID		= 0x1812,
8852be7d22fSVladimir Kondratiev 	WMI_SET_WORK_MODE_DONE_EVENTID		= 0x1815,
8862be7d22fSVladimir Kondratiev 	WMI_LO_LEAKAGE_CALIB_DONE_EVENTID	= 0x1816,
8872be7d22fSVladimir Kondratiev 	WMI_MARLON_R_READ_DONE_EVENTID		= 0x1818,
8882be7d22fSVladimir Kondratiev 	WMI_MARLON_R_WRITE_DONE_EVENTID		= 0x1819,
8892be7d22fSVladimir Kondratiev 	WMI_MARLON_R_TXRX_SEL_DONE_EVENTID	= 0x181a,
8902be7d22fSVladimir Kondratiev 	WMI_SILENT_RSSI_CALIB_DONE_EVENTID	= 0x181d,
891b8023177SVladimir Kondratiev 	WMI_RF_RX_TEST_DONE_EVENTID		= 0x181e,
8922be7d22fSVladimir Kondratiev 	WMI_CFG_RX_CHAIN_DONE_EVENTID		= 0x1820,
8932be7d22fSVladimir Kondratiev 	WMI_VRING_CFG_DONE_EVENTID		= 0x1821,
8942be7d22fSVladimir Kondratiev 	WMI_BA_STATUS_EVENTID			= 0x1823,
8952be7d22fSVladimir Kondratiev 	WMI_RCP_ADDBA_REQ_EVENTID		= 0x1824,
896230d8442SVladimir Kondratiev 	WMI_RCP_ADDBA_RESP_SENT_EVENTID		= 0x1825,
8972be7d22fSVladimir Kondratiev 	WMI_DELBA_EVENTID			= 0x1826,
8982be7d22fSVladimir Kondratiev 	WMI_GET_SSID_EVENTID			= 0x1828,
8992be7d22fSVladimir Kondratiev 	WMI_GET_PCP_CHANNEL_EVENTID		= 0x182a,
9002be7d22fSVladimir Kondratiev 	WMI_SW_TX_COMPLETE_EVENTID		= 0x182b,
9012be7d22fSVladimir Kondratiev 
9022be7d22fSVladimir Kondratiev 	WMI_READ_MAC_RXQ_EVENTID		= 0x1830,
9032be7d22fSVladimir Kondratiev 	WMI_READ_MAC_TXQ_EVENTID		= 0x1831,
9042be7d22fSVladimir Kondratiev 	WMI_WRITE_MAC_RXQ_EVENTID		= 0x1832,
9052be7d22fSVladimir Kondratiev 	WMI_WRITE_MAC_TXQ_EVENTID		= 0x1833,
9062be7d22fSVladimir Kondratiev 	WMI_WRITE_MAC_XQ_FIELD_EVENTID		= 0x1834,
9072be7d22fSVladimir Kondratiev 
908230d8442SVladimir Kondratiev 	WMI_BEAMFORMING_MGMT_DONE_EVENTID	= 0x1836,
9092be7d22fSVladimir Kondratiev 	WMI_BF_TXSS_MGMT_DONE_EVENTID		= 0x1837,
9102be7d22fSVladimir Kondratiev 	WMI_BF_RXSS_MGMT_DONE_EVENTID		= 0x1839,
9112be7d22fSVladimir Kondratiev 	WMI_RS_MGMT_DONE_EVENTID		= 0x1852,
9122be7d22fSVladimir Kondratiev 	WMI_RF_MGMT_STATUS_EVENTID		= 0x1853,
9138c679675SVladimir Kondratiev 	WMI_THERMAL_THROTTLING_STATUS_EVENTID	= 0x1855,
9142be7d22fSVladimir Kondratiev 	WMI_BF_SM_MGMT_DONE_EVENTID		= 0x1838,
9152be7d22fSVladimir Kondratiev 	WMI_RX_MGMT_PACKET_EVENTID		= 0x1840,
9166c2faf09SVladimir Kondratiev 	WMI_TX_MGMT_PACKET_EVENTID		= 0x1841,
9172be7d22fSVladimir Kondratiev 
9182be7d22fSVladimir Kondratiev 	/* Performance monitoring events */
9192be7d22fSVladimir Kondratiev 	WMI_DATA_PORT_OPEN_EVENTID		= 0x1860,
920230d8442SVladimir Kondratiev 	WMI_WBE_LINK_DOWN_EVENTID		= 0x1861,
9212be7d22fSVladimir Kondratiev 
9222be7d22fSVladimir Kondratiev 	WMI_BF_CTRL_DONE_EVENTID		= 0x1862,
9232be7d22fSVladimir Kondratiev 	WMI_NOTIFY_REQ_DONE_EVENTID		= 0x1863,
9242be7d22fSVladimir Kondratiev 	WMI_GET_STATUS_DONE_EVENTID		= 0x1864,
925230d8442SVladimir Kondratiev 	WMI_VRING_EN_EVENTID			= 0x1865,
9262be7d22fSVladimir Kondratiev 
9272be7d22fSVladimir Kondratiev 	WMI_UNIT_TEST_EVENTID			= 0x1900,
9282be7d22fSVladimir Kondratiev 	WMI_FLASH_READ_DONE_EVENTID		= 0x1902,
9292be7d22fSVladimir Kondratiev 	WMI_FLASH_WRITE_DONE_EVENTID		= 0x1903,
930b8023177SVladimir Kondratiev 	/*P2P*/
9318c679675SVladimir Kondratiev 	WMI_P2P_CFG_DONE_EVENTID		= 0x1910,
932b8023177SVladimir Kondratiev 	WMI_PORT_ALLOCATED_EVENTID		= 0x1911,
933b8023177SVladimir Kondratiev 	WMI_PORT_DELETED_EVENTID		= 0x1912,
934b8023177SVladimir Kondratiev 	WMI_LISTEN_STARTED_EVENTID		= 0x1914,
935b8023177SVladimir Kondratiev 	WMI_SEARCH_STARTED_EVENTID		= 0x1915,
936b8023177SVladimir Kondratiev 	WMI_DISCOVERY_STARTED_EVENTID		= 0x1916,
937b8023177SVladimir Kondratiev 	WMI_DISCOVERY_STOPPED_EVENTID		= 0x1917,
938b8023177SVladimir Kondratiev 	WMI_PCP_STARTED_EVENTID			= 0x1918,
939b8023177SVladimir Kondratiev 	WMI_PCP_STOPPED_EVENTID			= 0x1919,
940b8023177SVladimir Kondratiev 	WMI_PCP_FACTOR_EVENTID			= 0x191a,
9412be7d22fSVladimir Kondratiev 	WMI_SET_CHANNEL_EVENTID			= 0x9000,
9422be7d22fSVladimir Kondratiev 	WMI_ASSOC_REQ_EVENTID			= 0x9001,
9432be7d22fSVladimir Kondratiev 	WMI_EAPOL_RX_EVENTID			= 0x9002,
9442be7d22fSVladimir Kondratiev 	WMI_MAC_ADDR_RESP_EVENTID		= 0x9003,
9452be7d22fSVladimir Kondratiev 	WMI_FW_VER_EVENTID			= 0x9004,
9462be7d22fSVladimir Kondratiev };
9472be7d22fSVladimir Kondratiev 
9482be7d22fSVladimir Kondratiev /*
9492be7d22fSVladimir Kondratiev  * Events data structures
9502be7d22fSVladimir Kondratiev  */
9512be7d22fSVladimir Kondratiev 
952b8023177SVladimir Kondratiev enum wmi_fw_status {
953b8023177SVladimir Kondratiev 	WMI_FW_STATUS_SUCCESS,
954b8023177SVladimir Kondratiev 	WMI_FW_STATUS_FAILURE,
955b8023177SVladimir Kondratiev };
956b8023177SVladimir Kondratiev 
9572be7d22fSVladimir Kondratiev /*
9582be7d22fSVladimir Kondratiev  * WMI_RF_MGMT_STATUS_EVENTID
9592be7d22fSVladimir Kondratiev  */
9602be7d22fSVladimir Kondratiev enum wmi_rf_status {
9612be7d22fSVladimir Kondratiev 	WMI_RF_ENABLED			= 0,
9622be7d22fSVladimir Kondratiev 	WMI_RF_DISABLED_HW		= 1,
9632be7d22fSVladimir Kondratiev 	WMI_RF_DISABLED_SW		= 2,
9642be7d22fSVladimir Kondratiev 	WMI_RF_DISABLED_HW_SW		= 3,
9652be7d22fSVladimir Kondratiev };
9662be7d22fSVladimir Kondratiev 
9672be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_status_event {
9682be7d22fSVladimir Kondratiev 	__le32 rf_status;
9692be7d22fSVladimir Kondratiev } __packed;
9702be7d22fSVladimir Kondratiev 
9712be7d22fSVladimir Kondratiev /*
9728c679675SVladimir Kondratiev  * WMI_THERMAL_THROTTLING_STATUS_EVENTID
9738c679675SVladimir Kondratiev  */
9748c679675SVladimir Kondratiev struct wmi_thermal_throttling_status_event {
9758c679675SVladimir Kondratiev 	__le32 time_on_usec;
9768c679675SVladimir Kondratiev 	__le32 time_off_usec;
9778c679675SVladimir Kondratiev 	__le32 max_txop_length_usec;
9788c679675SVladimir Kondratiev } __packed;
9798c679675SVladimir Kondratiev 
9808c679675SVladimir Kondratiev /*
9812be7d22fSVladimir Kondratiev  * WMI_GET_STATUS_DONE_EVENTID
9822be7d22fSVladimir Kondratiev  */
9832be7d22fSVladimir Kondratiev struct wmi_get_status_done_event {
9842be7d22fSVladimir Kondratiev 	__le32 is_associated;
9852be7d22fSVladimir Kondratiev 	u8 cid;
9862be7d22fSVladimir Kondratiev 	u8 reserved0[3];
9872be7d22fSVladimir Kondratiev 	u8 bssid[WMI_MAC_LEN];
9882be7d22fSVladimir Kondratiev 	u8 channel;
9892be7d22fSVladimir Kondratiev 	u8 reserved1;
9902be7d22fSVladimir Kondratiev 	u8 network_type;
9912be7d22fSVladimir Kondratiev 	u8 reserved2[3];
9922be7d22fSVladimir Kondratiev 	__le32 ssid_len;
9932be7d22fSVladimir Kondratiev 	u8 ssid[WMI_MAX_SSID_LEN];
9942be7d22fSVladimir Kondratiev 	__le32 rf_status;
9952be7d22fSVladimir Kondratiev 	__le32 is_secured;
9962be7d22fSVladimir Kondratiev } __packed;
9972be7d22fSVladimir Kondratiev 
9982be7d22fSVladimir Kondratiev /*
9992be7d22fSVladimir Kondratiev  * WMI_FW_VER_EVENTID
10002be7d22fSVladimir Kondratiev  */
10012be7d22fSVladimir Kondratiev struct wmi_fw_ver_event {
10022be7d22fSVladimir Kondratiev 	u8 major;
10032be7d22fSVladimir Kondratiev 	u8 minor;
10042be7d22fSVladimir Kondratiev 	__le16 subminor;
10052be7d22fSVladimir Kondratiev 	__le16 build;
10062be7d22fSVladimir Kondratiev } __packed;
10072be7d22fSVladimir Kondratiev 
10082be7d22fSVladimir Kondratiev /*
10092be7d22fSVladimir Kondratiev * WMI_MAC_ADDR_RESP_EVENTID
10102be7d22fSVladimir Kondratiev */
10112be7d22fSVladimir Kondratiev struct wmi_mac_addr_resp_event {
10122be7d22fSVladimir Kondratiev 	u8 mac[WMI_MAC_LEN];
10132be7d22fSVladimir Kondratiev 	u8 auth_mode;
10142be7d22fSVladimir Kondratiev 	u8 crypt_mode;
10152be7d22fSVladimir Kondratiev 	__le32 offload_mode;
10162be7d22fSVladimir Kondratiev } __packed;
10172be7d22fSVladimir Kondratiev 
10182be7d22fSVladimir Kondratiev /*
10192be7d22fSVladimir Kondratiev * WMI_EAPOL_RX_EVENTID
10202be7d22fSVladimir Kondratiev */
10212be7d22fSVladimir Kondratiev struct wmi_eapol_rx_event {
10222be7d22fSVladimir Kondratiev 	u8 src_mac[WMI_MAC_LEN];
10232be7d22fSVladimir Kondratiev 	__le16 eapol_len;
10242be7d22fSVladimir Kondratiev 	u8 eapol[0];
10252be7d22fSVladimir Kondratiev } __packed;
10262be7d22fSVladimir Kondratiev 
10272be7d22fSVladimir Kondratiev /*
10282be7d22fSVladimir Kondratiev * WMI_READY_EVENTID
10292be7d22fSVladimir Kondratiev */
10302be7d22fSVladimir Kondratiev enum wmi_phy_capability {
10312be7d22fSVladimir Kondratiev 	WMI_11A_CAPABILITY		= 1,
10322be7d22fSVladimir Kondratiev 	WMI_11G_CAPABILITY		= 2,
10332be7d22fSVladimir Kondratiev 	WMI_11AG_CAPABILITY		= 3,
10342be7d22fSVladimir Kondratiev 	WMI_11NA_CAPABILITY		= 4,
10352be7d22fSVladimir Kondratiev 	WMI_11NG_CAPABILITY		= 5,
10362be7d22fSVladimir Kondratiev 	WMI_11NAG_CAPABILITY		= 6,
10372be7d22fSVladimir Kondratiev 	WMI_11AD_CAPABILITY		= 7,
10382be7d22fSVladimir Kondratiev 	WMI_11N_CAPABILITY_OFFSET = WMI_11NA_CAPABILITY - WMI_11A_CAPABILITY,
10392be7d22fSVladimir Kondratiev };
10402be7d22fSVladimir Kondratiev 
10412be7d22fSVladimir Kondratiev struct wmi_ready_event {
10422be7d22fSVladimir Kondratiev 	__le32 sw_version;
10432be7d22fSVladimir Kondratiev 	__le32 abi_version;
10442be7d22fSVladimir Kondratiev 	u8 mac[WMI_MAC_LEN];
10452be7d22fSVladimir Kondratiev 	u8 phy_capability;		/* enum wmi_phy_capability */
1046b8023177SVladimir Kondratiev 	u8 numof_additional_mids;
10472be7d22fSVladimir Kondratiev } __packed;
10482be7d22fSVladimir Kondratiev 
10492be7d22fSVladimir Kondratiev /*
10502be7d22fSVladimir Kondratiev  * WMI_NOTIFY_REQ_DONE_EVENTID
10512be7d22fSVladimir Kondratiev  */
10522be7d22fSVladimir Kondratiev struct wmi_notify_req_done_event {
105336345ac3SVladimir Kondratiev 	__le32 status; /* beamforming status, 0: fail; 1: OK; 2: retrying */
10542be7d22fSVladimir Kondratiev 	__le64 tsf;
10552be7d22fSVladimir Kondratiev 	__le32 snr_val;
10562be7d22fSVladimir Kondratiev 	__le32 tx_tpt;
10572be7d22fSVladimir Kondratiev 	__le32 tx_goodput;
10582be7d22fSVladimir Kondratiev 	__le32 rx_goodput;
10592be7d22fSVladimir Kondratiev 	__le16 bf_mcs;
10602be7d22fSVladimir Kondratiev 	__le16 my_rx_sector;
10612be7d22fSVladimir Kondratiev 	__le16 my_tx_sector;
10622be7d22fSVladimir Kondratiev 	__le16 other_rx_sector;
10632be7d22fSVladimir Kondratiev 	__le16 other_tx_sector;
10642be7d22fSVladimir Kondratiev 	__le16 range;
1065b8023177SVladimir Kondratiev 	u8 sqi;
1066b8023177SVladimir Kondratiev 	u8 reserved[3];
10672be7d22fSVladimir Kondratiev } __packed;
10682be7d22fSVladimir Kondratiev 
10692be7d22fSVladimir Kondratiev /*
10702be7d22fSVladimir Kondratiev  * WMI_CONNECT_EVENTID
10712be7d22fSVladimir Kondratiev  */
10722be7d22fSVladimir Kondratiev struct wmi_connect_event {
10732be7d22fSVladimir Kondratiev 	u8 channel;
10742be7d22fSVladimir Kondratiev 	u8 reserved0;
10752be7d22fSVladimir Kondratiev 	u8 bssid[WMI_MAC_LEN];
10762be7d22fSVladimir Kondratiev 	__le16 listen_interval;
10772be7d22fSVladimir Kondratiev 	__le16 beacon_interval;
10782be7d22fSVladimir Kondratiev 	u8 network_type;
10792be7d22fSVladimir Kondratiev 	u8 reserved1[3];
10802be7d22fSVladimir Kondratiev 	u8 beacon_ie_len;
10812be7d22fSVladimir Kondratiev 	u8 assoc_req_len;
10822be7d22fSVladimir Kondratiev 	u8 assoc_resp_len;
10832be7d22fSVladimir Kondratiev 	u8 cid;
10842be7d22fSVladimir Kondratiev 	u8 reserved2[3];
10852be7d22fSVladimir Kondratiev 	u8 assoc_info[0];
10862be7d22fSVladimir Kondratiev } __packed;
10872be7d22fSVladimir Kondratiev 
10882be7d22fSVladimir Kondratiev /*
10892be7d22fSVladimir Kondratiev  * WMI_DISCONNECT_EVENTID
10902be7d22fSVladimir Kondratiev  */
10912be7d22fSVladimir Kondratiev enum wmi_disconnect_reason {
10922be7d22fSVladimir Kondratiev 	WMI_DIS_REASON_NO_NETWORK_AVAIL		= 1,
10932be7d22fSVladimir Kondratiev 	WMI_DIS_REASON_LOST_LINK		= 2, /* bmiss */
10942be7d22fSVladimir Kondratiev 	WMI_DIS_REASON_DISCONNECT_CMD		= 3,
10952be7d22fSVladimir Kondratiev 	WMI_DIS_REASON_BSS_DISCONNECTED		= 4,
10962be7d22fSVladimir Kondratiev 	WMI_DIS_REASON_AUTH_FAILED		= 5,
10972be7d22fSVladimir Kondratiev 	WMI_DIS_REASON_ASSOC_FAILED		= 6,
10982be7d22fSVladimir Kondratiev 	WMI_DIS_REASON_NO_RESOURCES_AVAIL	= 7,
10992be7d22fSVladimir Kondratiev 	WMI_DIS_REASON_CSERV_DISCONNECT		= 8,
11002be7d22fSVladimir Kondratiev 	WMI_DIS_REASON_INVALID_PROFILE		= 10,
11012be7d22fSVladimir Kondratiev 	WMI_DIS_REASON_DOT11H_CHANNEL_SWITCH	= 11,
11022be7d22fSVladimir Kondratiev 	WMI_DIS_REASON_PROFILE_MISMATCH		= 12,
11032be7d22fSVladimir Kondratiev 	WMI_DIS_REASON_CONNECTION_EVICTED	= 13,
11042be7d22fSVladimir Kondratiev 	WMI_DIS_REASON_IBSS_MERGE		= 14,
11052be7d22fSVladimir Kondratiev };
11062be7d22fSVladimir Kondratiev 
11072be7d22fSVladimir Kondratiev struct wmi_disconnect_event {
11082be7d22fSVladimir Kondratiev 	__le16 protocol_reason_status;	/* reason code, see 802.11 spec. */
11092be7d22fSVladimir Kondratiev 	u8 bssid[WMI_MAC_LEN];		/* set if known */
11106c2faf09SVladimir Kondratiev 	u8 disconnect_reason;		/* see wmi_disconnect_reason */
11118fe59627SVladimir Kondratiev 	u8 assoc_resp_len;	/* not used */
11128fe59627SVladimir Kondratiev 	u8 assoc_info[0];	/* not used */
11132be7d22fSVladimir Kondratiev } __packed;
11142be7d22fSVladimir Kondratiev 
11152be7d22fSVladimir Kondratiev /*
11162be7d22fSVladimir Kondratiev  * WMI_SCAN_COMPLETE_EVENTID
11172be7d22fSVladimir Kondratiev  */
11186c2faf09SVladimir Kondratiev enum scan_status {
11196c2faf09SVladimir Kondratiev 	WMI_SCAN_SUCCESS	= 0,
11206c2faf09SVladimir Kondratiev 	WMI_SCAN_FAILED		= 1,
11216c2faf09SVladimir Kondratiev 	WMI_SCAN_ABORTED	= 2,
11226c2faf09SVladimir Kondratiev 	WMI_SCAN_REJECTED	= 3,
11236c2faf09SVladimir Kondratiev };
11246c2faf09SVladimir Kondratiev 
11252be7d22fSVladimir Kondratiev struct wmi_scan_complete_event {
11266c2faf09SVladimir Kondratiev 	__le32 status;	/* scan_status */
11272be7d22fSVladimir Kondratiev } __packed;
11282be7d22fSVladimir Kondratiev 
11292be7d22fSVladimir Kondratiev /*
11302be7d22fSVladimir Kondratiev  * WMI_BA_STATUS_EVENTID
11312be7d22fSVladimir Kondratiev  */
11322be7d22fSVladimir Kondratiev enum wmi_vring_ba_status {
11332be7d22fSVladimir Kondratiev 	WMI_BA_AGREED			= 0,
11342be7d22fSVladimir Kondratiev 	WMI_BA_NON_AGREED		= 1,
1135cbcf5866SVladimir Kondratiev 	/* BA_EN in middle of teardown flow */
1136cbcf5866SVladimir Kondratiev 	WMI_BA_TD_WIP			= 2,
1137cbcf5866SVladimir Kondratiev 	/* BA_DIS or BA_EN in middle of BA SETUP flow */
1138cbcf5866SVladimir Kondratiev 	WMI_BA_SETUP_WIP		= 3,
1139cbcf5866SVladimir Kondratiev 	/* BA_EN when the BA session is already active */
1140cbcf5866SVladimir Kondratiev 	WMI_BA_SESSION_ACTIVE		= 4,
1141cbcf5866SVladimir Kondratiev 	/* BA_DIS when the BA session is not active */
1142cbcf5866SVladimir Kondratiev 	WMI_BA_SESSION_NOT_ACTIVE	= 5,
11432be7d22fSVladimir Kondratiev };
11442be7d22fSVladimir Kondratiev 
11452be7d22fSVladimir Kondratiev struct wmi_vring_ba_status_event {
1146cbcf5866SVladimir Kondratiev 	__le16 status; /* enum wmi_vring_ba_status */
11472be7d22fSVladimir Kondratiev 	u8 reserved[2];
11482be7d22fSVladimir Kondratiev 	u8 ringid;
11492be7d22fSVladimir Kondratiev 	u8 agg_wsize;
11502be7d22fSVladimir Kondratiev 	__le16 ba_timeout;
1151cbcf5866SVladimir Kondratiev 	u8 amsdu;
11522be7d22fSVladimir Kondratiev } __packed;
11532be7d22fSVladimir Kondratiev 
11542be7d22fSVladimir Kondratiev /*
11552be7d22fSVladimir Kondratiev  * WMI_DELBA_EVENTID
11562be7d22fSVladimir Kondratiev  */
11572be7d22fSVladimir Kondratiev struct wmi_delba_event {
11582be7d22fSVladimir Kondratiev 	u8 cidxtid;
11592be7d22fSVladimir Kondratiev 	u8 from_initiator;
11602be7d22fSVladimir Kondratiev 	__le16 reason;
11612be7d22fSVladimir Kondratiev } __packed;
11622be7d22fSVladimir Kondratiev 
11632be7d22fSVladimir Kondratiev /*
11642be7d22fSVladimir Kondratiev  * WMI_VRING_CFG_DONE_EVENTID
11652be7d22fSVladimir Kondratiev  */
11662be7d22fSVladimir Kondratiev struct wmi_vring_cfg_done_event {
11672be7d22fSVladimir Kondratiev 	u8 ringid;
11682be7d22fSVladimir Kondratiev 	u8 status;
11692be7d22fSVladimir Kondratiev 	u8 reserved[2];
11702be7d22fSVladimir Kondratiev 	__le32 tx_vring_tail_ptr;
11712be7d22fSVladimir Kondratiev } __packed;
11722be7d22fSVladimir Kondratiev 
11732be7d22fSVladimir Kondratiev /*
1174230d8442SVladimir Kondratiev  * WMI_RCP_ADDBA_RESP_SENT_EVENTID
11752be7d22fSVladimir Kondratiev  */
11762be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_sent_event {
11772be7d22fSVladimir Kondratiev 	u8 cidxtid;
11782be7d22fSVladimir Kondratiev 	u8 reserved;
11792be7d22fSVladimir Kondratiev 	__le16 status;
11802be7d22fSVladimir Kondratiev } __packed;
11812be7d22fSVladimir Kondratiev 
11822be7d22fSVladimir Kondratiev /*
11832be7d22fSVladimir Kondratiev  * WMI_RCP_ADDBA_REQ_EVENTID
11842be7d22fSVladimir Kondratiev  */
11852be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_event {
11862be7d22fSVladimir Kondratiev 	u8 cidxtid;
11872be7d22fSVladimir Kondratiev 	u8 dialog_token;
11882be7d22fSVladimir Kondratiev 	__le16 ba_param_set;	/* ieee80211_ba_parameterset as it received */
11892be7d22fSVladimir Kondratiev 	__le16 ba_timeout;
11902be7d22fSVladimir Kondratiev 	__le16 ba_seq_ctrl;	/* ieee80211_ba_seqstrl field as it received */
11912be7d22fSVladimir Kondratiev } __packed;
11922be7d22fSVladimir Kondratiev 
11932be7d22fSVladimir Kondratiev /*
11942be7d22fSVladimir Kondratiev  * WMI_CFG_RX_CHAIN_DONE_EVENTID
11952be7d22fSVladimir Kondratiev  */
11962be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_done_event_status {
11972be7d22fSVladimir Kondratiev 	WMI_CFG_RX_CHAIN_SUCCESS	= 1,
11982be7d22fSVladimir Kondratiev };
11992be7d22fSVladimir Kondratiev 
12002be7d22fSVladimir Kondratiev struct wmi_cfg_rx_chain_done_event {
12012be7d22fSVladimir Kondratiev 	__le32 rx_ring_tail_ptr;	/* Rx V-Ring Tail pointer */
12022be7d22fSVladimir Kondratiev 	__le32 status;
12032be7d22fSVladimir Kondratiev } __packed;
12042be7d22fSVladimir Kondratiev 
12052be7d22fSVladimir Kondratiev /*
1206230d8442SVladimir Kondratiev  * WMI_WBE_LINK_DOWN_EVENTID
12072be7d22fSVladimir Kondratiev  */
12082be7d22fSVladimir Kondratiev enum wmi_wbe_link_down_event_reason {
12092be7d22fSVladimir Kondratiev 	WMI_WBE_REASON_USER_REQUEST	= 0,
12102be7d22fSVladimir Kondratiev 	WMI_WBE_REASON_RX_DISASSOC	= 1,
12112be7d22fSVladimir Kondratiev 	WMI_WBE_REASON_BAD_PHY_LINK	= 2,
12122be7d22fSVladimir Kondratiev };
12132be7d22fSVladimir Kondratiev 
12142be7d22fSVladimir Kondratiev struct wmi_wbe_link_down_event {
12152be7d22fSVladimir Kondratiev 	u8 cid;
12162be7d22fSVladimir Kondratiev 	u8 reserved[3];
12172be7d22fSVladimir Kondratiev 	__le32 reason;
12182be7d22fSVladimir Kondratiev } __packed;
12192be7d22fSVladimir Kondratiev 
12202be7d22fSVladimir Kondratiev /*
12212be7d22fSVladimir Kondratiev  * WMI_DATA_PORT_OPEN_EVENTID
12222be7d22fSVladimir Kondratiev  */
12232be7d22fSVladimir Kondratiev struct wmi_data_port_open_event {
12242be7d22fSVladimir Kondratiev 	u8 cid;
12252be7d22fSVladimir Kondratiev 	u8 reserved[3];
12262be7d22fSVladimir Kondratiev } __packed;
12272be7d22fSVladimir Kondratiev 
12282be7d22fSVladimir Kondratiev /*
1229230d8442SVladimir Kondratiev  * WMI_VRING_EN_EVENTID
1230230d8442SVladimir Kondratiev  */
1231230d8442SVladimir Kondratiev struct wmi_vring_en_event {
1232230d8442SVladimir Kondratiev 	u8 vring_index;
1233230d8442SVladimir Kondratiev 	u8 reserved[3];
1234230d8442SVladimir Kondratiev } __packed;
1235230d8442SVladimir Kondratiev 
1236230d8442SVladimir Kondratiev /*
12372be7d22fSVladimir Kondratiev  * WMI_GET_PCP_CHANNEL_EVENTID
12382be7d22fSVladimir Kondratiev  */
12392be7d22fSVladimir Kondratiev struct wmi_get_pcp_channel_event {
12402be7d22fSVladimir Kondratiev 	u8 channel;
12412be7d22fSVladimir Kondratiev 	u8 reserved[3];
12422be7d22fSVladimir Kondratiev } __packed;
12432be7d22fSVladimir Kondratiev 
1244b8023177SVladimir Kondratiev /*
12458c679675SVladimir Kondratiev  * WMI_P2P_CFG_DONE_EVENTID
12468c679675SVladimir Kondratiev  */
12478c679675SVladimir Kondratiev struct wmi_p2p_cfg_done_event {
12488c679675SVladimir Kondratiev 	u8 status;	/* wmi_fw_status */
12498c679675SVladimir Kondratiev 	u8 reserved[3];
12508c679675SVladimir Kondratiev } __packed;
12518c679675SVladimir Kondratiev 
12528c679675SVladimir Kondratiev /*
1253b8023177SVladimir Kondratiev * WMI_PORT_ALLOCATED_EVENTID
1254b8023177SVladimir Kondratiev */
1255b8023177SVladimir Kondratiev struct wmi_port_allocated_event {
1256b8023177SVladimir Kondratiev 	u8 status;	/* wmi_fw_status */
1257b8023177SVladimir Kondratiev 	u8 reserved[3];
1258b8023177SVladimir Kondratiev } __packed;
1259b8023177SVladimir Kondratiev 
1260b8023177SVladimir Kondratiev /*
1261b8023177SVladimir Kondratiev * WMI_PORT_DELETED_EVENTID
1262b8023177SVladimir Kondratiev */
1263b8023177SVladimir Kondratiev struct wmi_port_deleted_event {
1264b8023177SVladimir Kondratiev 	u8 status;	/* wmi_fw_status */
1265b8023177SVladimir Kondratiev 	u8 reserved[3];
1266b8023177SVladimir Kondratiev } __packed;
1267b8023177SVladimir Kondratiev 
1268b8023177SVladimir Kondratiev /*
1269b8023177SVladimir Kondratiev  * WMI_LISTEN_STARTED_EVENTID
1270b8023177SVladimir Kondratiev  */
1271b8023177SVladimir Kondratiev struct wmi_listen_started_event {
1272b8023177SVladimir Kondratiev 	u8 status;	/* wmi_fw_status */
1273b8023177SVladimir Kondratiev 	u8 reserved[3];
1274b8023177SVladimir Kondratiev } __packed;
1275b8023177SVladimir Kondratiev 
1276b8023177SVladimir Kondratiev /*
1277b8023177SVladimir Kondratiev  * WMI_SEARCH_STARTED_EVENTID
1278b8023177SVladimir Kondratiev  */
1279b8023177SVladimir Kondratiev struct wmi_search_started_event {
1280b8023177SVladimir Kondratiev 	u8 status;	/* wmi_fw_status */
1281b8023177SVladimir Kondratiev 	u8 reserved[3];
1282b8023177SVladimir Kondratiev } __packed;
1283b8023177SVladimir Kondratiev 
1284b8023177SVladimir Kondratiev /*
1285b8023177SVladimir Kondratiev  * WMI_PCP_STARTED_EVENTID
1286b8023177SVladimir Kondratiev  */
1287b8023177SVladimir Kondratiev struct wmi_pcp_started_event {
1288b8023177SVladimir Kondratiev 	u8 status;	/* wmi_fw_status */
1289b8023177SVladimir Kondratiev 	u8 reserved[3];
1290b8023177SVladimir Kondratiev } __packed;
1291b8023177SVladimir Kondratiev 
1292b8023177SVladimir Kondratiev /*
1293b8023177SVladimir Kondratiev  * WMI_PCP_FACTOR_EVENTID
1294b8023177SVladimir Kondratiev  */
1295b8023177SVladimir Kondratiev struct wmi_pcp_factor_event {
1296b8023177SVladimir Kondratiev 	__le32 pcp_factor;
1297b8023177SVladimir Kondratiev } __packed;
1298b8023177SVladimir Kondratiev 
12992be7d22fSVladimir Kondratiev /*
13002be7d22fSVladimir Kondratiev  * WMI_SW_TX_COMPLETE_EVENTID
13012be7d22fSVladimir Kondratiev  */
13022be7d22fSVladimir Kondratiev enum wmi_sw_tx_status {
13032be7d22fSVladimir Kondratiev 	WMI_TX_SW_STATUS_SUCCESS		= 0,
13042be7d22fSVladimir Kondratiev 	WMI_TX_SW_STATUS_FAILED_NO_RESOURCES	= 1,
13052be7d22fSVladimir Kondratiev 	WMI_TX_SW_STATUS_FAILED_TX		= 2,
13062be7d22fSVladimir Kondratiev };
13072be7d22fSVladimir Kondratiev 
13082be7d22fSVladimir Kondratiev struct wmi_sw_tx_complete_event {
13092be7d22fSVladimir Kondratiev 	u8 status;	/* enum wmi_sw_tx_status */
13102be7d22fSVladimir Kondratiev 	u8 reserved[3];
13112be7d22fSVladimir Kondratiev } __packed;
13122be7d22fSVladimir Kondratiev 
13132be7d22fSVladimir Kondratiev /*
1314b8023177SVladimir Kondratiev  * WMI_CORR_MEASURE_EVENTID
1315b8023177SVladimir Kondratiev  */
1316b8023177SVladimir Kondratiev struct wmi_corr_measure_event {
1317b8023177SVladimir Kondratiev 	s32 i;
1318b8023177SVladimir Kondratiev 	s32 q;
1319b8023177SVladimir Kondratiev 	s32 image_i;
1320b8023177SVladimir Kondratiev 	s32 image_q;
1321b8023177SVladimir Kondratiev } __packed;
1322b8023177SVladimir Kondratiev 
1323b8023177SVladimir Kondratiev /*
1324b8023177SVladimir Kondratiev  * WMI_READ_RSSI_EVENTID
1325b8023177SVladimir Kondratiev  */
1326b8023177SVladimir Kondratiev struct wmi_read_rssi_event {
1327b8023177SVladimir Kondratiev 	__le32 ina_rssi_adc_dbm;
1328b8023177SVladimir Kondratiev } __packed;
1329b8023177SVladimir Kondratiev 
1330b8023177SVladimir Kondratiev /*
13312be7d22fSVladimir Kondratiev  * WMI_GET_SSID_EVENTID
13322be7d22fSVladimir Kondratiev  */
13332be7d22fSVladimir Kondratiev struct wmi_get_ssid_event {
13342be7d22fSVladimir Kondratiev 	__le32 ssid_len;
13352be7d22fSVladimir Kondratiev 	u8 ssid[WMI_MAX_SSID_LEN];
13362be7d22fSVladimir Kondratiev } __packed;
13372be7d22fSVladimir Kondratiev 
13382be7d22fSVladimir Kondratiev /*
13392be7d22fSVladimir Kondratiev  * WMI_RX_MGMT_PACKET_EVENTID
13402be7d22fSVladimir Kondratiev  */
13412be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_info {
13422be7d22fSVladimir Kondratiev 	u8 mcs;
13432be7d22fSVladimir Kondratiev 	s8 snr;
1344b8023177SVladimir Kondratiev 	u8 range;
1345b8023177SVladimir Kondratiev 	u8 sqi;
13462be7d22fSVladimir Kondratiev 	__le16 stype;
13472be7d22fSVladimir Kondratiev 	__le16 status;
13482be7d22fSVladimir Kondratiev 	__le32 len;
13492be7d22fSVladimir Kondratiev 	u8 qid;
13502be7d22fSVladimir Kondratiev 	u8 mid;
13512be7d22fSVladimir Kondratiev 	u8 cid;
13522be7d22fSVladimir Kondratiev 	u8 channel;	/* From Radio MNGR */
13532be7d22fSVladimir Kondratiev } __packed;
13542be7d22fSVladimir Kondratiev 
13556c2faf09SVladimir Kondratiev /*
13566c2faf09SVladimir Kondratiev  * WMI_TX_MGMT_PACKET_EVENTID
13576c2faf09SVladimir Kondratiev  */
13586c2faf09SVladimir Kondratiev struct wmi_tx_mgmt_packet_event {
13596c2faf09SVladimir Kondratiev 	u8 payload[0];
13606c2faf09SVladimir Kondratiev } __packed;
13616c2faf09SVladimir Kondratiev 
13622be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_packet_event {
13632be7d22fSVladimir Kondratiev 	struct wmi_rx_mgmt_info info;
13642be7d22fSVladimir Kondratiev 	u8 payload[0];
13652be7d22fSVladimir Kondratiev } __packed;
13662be7d22fSVladimir Kondratiev 
13672be7d22fSVladimir Kondratiev /*
13682be7d22fSVladimir Kondratiev  * WMI_ECHO_RSP_EVENTID
13692be7d22fSVladimir Kondratiev  */
13702be7d22fSVladimir Kondratiev struct wmi_echo_event {
13712be7d22fSVladimir Kondratiev 	__le32 echoed_value;
13722be7d22fSVladimir Kondratiev } __packed;
13732be7d22fSVladimir Kondratiev 
1374b8023177SVladimir Kondratiev /*
1375b8023177SVladimir Kondratiev  * WMI_TEMP_SENSE_DONE_EVENTID
1376b8023177SVladimir Kondratiev  *
1377b8023177SVladimir Kondratiev  * Measure MAC and radio temperatures
1378b8023177SVladimir Kondratiev  */
1379b8023177SVladimir Kondratiev struct wmi_temp_sense_done_event {
13808c679675SVladimir Kondratiev 	__le32 baseband_t1000;
13818c679675SVladimir Kondratiev 	__le32 rf_t1000;
1382b8023177SVladimir Kondratiev } __packed;
1383b8023177SVladimir Kondratiev 
13842be7d22fSVladimir Kondratiev #endif /* __WILOCITY_WMI_H__ */
1385