12be7d22fSVladimir Kondratiev /* 202525a79SVladimir Kondratiev * Copyright (c) 2012-2014 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, 2562be7d22fSVladimir Kondratiev WMI_KEY_USE_GROUP = 1, 2572be7d22fSVladimir Kondratiev WMI_KEY_USE_TX = 2, /* default Tx Key - Static WEP only */ 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 */ 498b8023177SVladimir Kondratiev struct wmi_pcp_start_cmd { 499b8023177SVladimir Kondratiev __le16 bcon_interval; 5006c2faf09SVladimir Kondratiev u8 pcp_max_assoc_sta; 5016c2faf09SVladimir Kondratiev u8 reserved0[9]; 502b8023177SVladimir Kondratiev u8 network_type; 503b8023177SVladimir Kondratiev u8 channel; 504b8023177SVladimir Kondratiev u8 disable_sec_offload; 505b8023177SVladimir Kondratiev u8 disable_sec; 506b8023177SVladimir Kondratiev } __packed; 507b8023177SVladimir Kondratiev 5082be7d22fSVladimir Kondratiev /* 5092be7d22fSVladimir Kondratiev * WMI_SW_TX_REQ_CMDID 5102be7d22fSVladimir Kondratiev */ 5112be7d22fSVladimir Kondratiev struct wmi_sw_tx_req_cmd { 5122be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 5132be7d22fSVladimir Kondratiev __le16 len; 5142be7d22fSVladimir Kondratiev u8 payload[0]; 5152be7d22fSVladimir Kondratiev } __packed; 5162be7d22fSVladimir Kondratiev 5172be7d22fSVladimir Kondratiev /* 5182be7d22fSVladimir Kondratiev * WMI_VRING_CFG_CMDID 5192be7d22fSVladimir Kondratiev */ 5202be7d22fSVladimir Kondratiev 5212be7d22fSVladimir Kondratiev struct wmi_sw_ring_cfg { 5222be7d22fSVladimir Kondratiev __le64 ring_mem_base; 5232be7d22fSVladimir Kondratiev __le16 ring_size; 5242be7d22fSVladimir Kondratiev __le16 max_mpdu_size; 5252be7d22fSVladimir Kondratiev } __packed; 5262be7d22fSVladimir Kondratiev 5272be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd { 5282be7d22fSVladimir Kondratiev __le16 priority; 5292be7d22fSVladimir Kondratiev __le16 timeslot_us; 5302be7d22fSVladimir Kondratiev } __packed; 5312be7d22fSVladimir Kondratiev 5322be7d22fSVladimir Kondratiev enum wmi_vring_cfg_encap_trans_type { 5332be7d22fSVladimir Kondratiev WMI_VRING_ENC_TYPE_802_3 = 0, 5342be7d22fSVladimir Kondratiev WMI_VRING_ENC_TYPE_NATIVE_WIFI = 1, 5352be7d22fSVladimir Kondratiev }; 5362be7d22fSVladimir Kondratiev 5372be7d22fSVladimir Kondratiev enum wmi_vring_cfg_ds_cfg { 5382be7d22fSVladimir Kondratiev WMI_VRING_DS_PBSS = 0, 5392be7d22fSVladimir Kondratiev WMI_VRING_DS_STATION = 1, 5402be7d22fSVladimir Kondratiev WMI_VRING_DS_AP = 2, 5412be7d22fSVladimir Kondratiev WMI_VRING_DS_ADDR4 = 3, 5422be7d22fSVladimir Kondratiev }; 5432be7d22fSVladimir Kondratiev 5442be7d22fSVladimir Kondratiev enum wmi_vring_cfg_nwifi_ds_trans_type { 5452be7d22fSVladimir Kondratiev WMI_NWIFI_TX_TRANS_MODE_NO = 0, 5462be7d22fSVladimir Kondratiev WMI_NWIFI_TX_TRANS_MODE_AP2PBSS = 1, 5472be7d22fSVladimir Kondratiev WMI_NWIFI_TX_TRANS_MODE_STA2PBSS = 2, 5482be7d22fSVladimir Kondratiev }; 5492be7d22fSVladimir Kondratiev 5502be7d22fSVladimir Kondratiev enum wmi_vring_cfg_schd_params_priority { 5512be7d22fSVladimir Kondratiev WMI_SCH_PRIO_REGULAR = 0, 5522be7d22fSVladimir Kondratiev WMI_SCH_PRIO_HIGH = 1, 5532be7d22fSVladimir Kondratiev }; 5542be7d22fSVladimir Kondratiev 5552be7d22fSVladimir Kondratiev #define CIDXTID_CID_POS (0) 5562be7d22fSVladimir Kondratiev #define CIDXTID_CID_LEN (4) 5572be7d22fSVladimir Kondratiev #define CIDXTID_CID_MSK (0xF) 5582be7d22fSVladimir Kondratiev #define CIDXTID_TID_POS (4) 5592be7d22fSVladimir Kondratiev #define CIDXTID_TID_LEN (4) 5602be7d22fSVladimir Kondratiev #define CIDXTID_TID_MSK (0xF0) 561b8023177SVladimir Kondratiev 562b8023177SVladimir Kondratiev struct wmi_vring_cfg { 563b8023177SVladimir Kondratiev struct wmi_sw_ring_cfg tx_sw_ring; 564b8023177SVladimir Kondratiev u8 ringid; /* 0-23 vrings */ 565b8023177SVladimir Kondratiev 5662be7d22fSVladimir Kondratiev u8 cidxtid; 5672be7d22fSVladimir Kondratiev 5682be7d22fSVladimir Kondratiev u8 encap_trans_type; 5692be7d22fSVladimir Kondratiev u8 ds_cfg; /* 802.3 DS cfg */ 5702be7d22fSVladimir Kondratiev u8 nwifi_ds_trans_type; 5712be7d22fSVladimir Kondratiev 5722be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_POS (0) 5732be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_LEN (1) 5742be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_MSK (0x1) 5752be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_POS (1) 5762be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_LEN (1) 5772be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_MSK (0x2) 5782be7d22fSVladimir Kondratiev u8 mac_ctrl; 5792be7d22fSVladimir Kondratiev 5802be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_POS (0) 5812be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_LEN (6) 5822be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_MSK (0x3F) 5832be7d22fSVladimir Kondratiev u8 to_resolution; 5842be7d22fSVladimir Kondratiev u8 agg_max_wsize; 5852be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd schd_params; 5862be7d22fSVladimir Kondratiev } __packed; 5872be7d22fSVladimir Kondratiev 5882be7d22fSVladimir Kondratiev enum wmi_vring_cfg_cmd_action { 5892be7d22fSVladimir Kondratiev WMI_VRING_CMD_ADD = 0, 5902be7d22fSVladimir Kondratiev WMI_VRING_CMD_MODIFY = 1, 5912be7d22fSVladimir Kondratiev WMI_VRING_CMD_DELETE = 2, 5922be7d22fSVladimir Kondratiev }; 5932be7d22fSVladimir Kondratiev 5942be7d22fSVladimir Kondratiev struct wmi_vring_cfg_cmd { 5952be7d22fSVladimir Kondratiev __le32 action; 5962be7d22fSVladimir Kondratiev struct wmi_vring_cfg vring_cfg; 5972be7d22fSVladimir Kondratiev } __packed; 5982be7d22fSVladimir Kondratiev 5992be7d22fSVladimir Kondratiev /* 60062bfd300SVladimir Kondratiev * WMI_BCAST_VRING_CFG_CMDID 60162bfd300SVladimir Kondratiev */ 60262bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg { 60362bfd300SVladimir Kondratiev struct wmi_sw_ring_cfg tx_sw_ring; 60462bfd300SVladimir Kondratiev u8 ringid; /* 0-23 vrings */ 60562bfd300SVladimir Kondratiev u8 encap_trans_type; 60662bfd300SVladimir Kondratiev u8 ds_cfg; /* 802.3 DS cfg */ 60762bfd300SVladimir Kondratiev u8 nwifi_ds_trans_type; 60862bfd300SVladimir Kondratiev } __packed; 60962bfd300SVladimir Kondratiev 61062bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg_cmd { 61162bfd300SVladimir Kondratiev __le32 action; 61262bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg vring_cfg; 61362bfd300SVladimir Kondratiev } __packed; 61462bfd300SVladimir Kondratiev 61562bfd300SVladimir Kondratiev /* 6162be7d22fSVladimir Kondratiev * WMI_VRING_BA_EN_CMDID 6172be7d22fSVladimir Kondratiev */ 6182be7d22fSVladimir Kondratiev struct wmi_vring_ba_en_cmd { 6192be7d22fSVladimir Kondratiev u8 ringid; 6202be7d22fSVladimir Kondratiev u8 agg_max_wsize; 6212be7d22fSVladimir Kondratiev __le16 ba_timeout; 622cbcf5866SVladimir Kondratiev u8 amsdu; 6232be7d22fSVladimir Kondratiev } __packed; 6242be7d22fSVladimir Kondratiev 6252be7d22fSVladimir Kondratiev /* 6262be7d22fSVladimir Kondratiev * WMI_VRING_BA_DIS_CMDID 6272be7d22fSVladimir Kondratiev */ 6282be7d22fSVladimir Kondratiev struct wmi_vring_ba_dis_cmd { 6292be7d22fSVladimir Kondratiev u8 ringid; 6302be7d22fSVladimir Kondratiev u8 reserved; 6312be7d22fSVladimir Kondratiev __le16 reason; 6322be7d22fSVladimir Kondratiev } __packed; 6332be7d22fSVladimir Kondratiev 6342be7d22fSVladimir Kondratiev /* 6352be7d22fSVladimir Kondratiev * WMI_NOTIFY_REQ_CMDID 6362be7d22fSVladimir Kondratiev */ 6372be7d22fSVladimir Kondratiev struct wmi_notify_req_cmd { 6382be7d22fSVladimir Kondratiev u8 cid; 639b8023177SVladimir Kondratiev u8 year; 640b8023177SVladimir Kondratiev u8 month; 641b8023177SVladimir Kondratiev u8 day; 6422be7d22fSVladimir Kondratiev __le32 interval_usec; 643b8023177SVladimir Kondratiev u8 hour; 644b8023177SVladimir Kondratiev u8 minute; 645b8023177SVladimir Kondratiev u8 second; 646b8023177SVladimir Kondratiev u8 miliseconds; 6472be7d22fSVladimir Kondratiev } __packed; 6482be7d22fSVladimir Kondratiev 6492be7d22fSVladimir Kondratiev /* 6502be7d22fSVladimir Kondratiev * WMI_CFG_RX_CHAIN_CMDID 6512be7d22fSVladimir Kondratiev */ 6522be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_mode { 6532be7d22fSVladimir Kondratiev WMI_SNIFFER_OFF = 0, 6542be7d22fSVladimir Kondratiev WMI_SNIFFER_ON = 1, 6552be7d22fSVladimir Kondratiev }; 6562be7d22fSVladimir Kondratiev 6572be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_info_mode { 6582be7d22fSVladimir Kondratiev WMI_SNIFFER_PHY_INFO_DISABLED = 0, 6592be7d22fSVladimir Kondratiev WMI_SNIFFER_PHY_INFO_ENABLED = 1, 6602be7d22fSVladimir Kondratiev }; 6612be7d22fSVladimir Kondratiev 6622be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_support { 6632be7d22fSVladimir Kondratiev WMI_SNIFFER_CP = 0, 6642be7d22fSVladimir Kondratiev WMI_SNIFFER_DP = 1, 6652be7d22fSVladimir Kondratiev WMI_SNIFFER_BOTH_PHYS = 2, 6662be7d22fSVladimir Kondratiev }; 6672be7d22fSVladimir Kondratiev 6682be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg { 6692be7d22fSVladimir Kondratiev __le32 mode; /* enum wmi_sniffer_cfg_mode */ 6702be7d22fSVladimir Kondratiev __le32 phy_info_mode; /* enum wmi_sniffer_cfg_phy_info_mode */ 6712be7d22fSVladimir Kondratiev __le32 phy_support; /* enum wmi_sniffer_cfg_phy_support */ 6722be7d22fSVladimir Kondratiev u8 channel; 6732be7d22fSVladimir Kondratiev u8 reserved[3]; 6742be7d22fSVladimir Kondratiev } __packed; 6752be7d22fSVladimir Kondratiev 6762be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_action { 6772be7d22fSVladimir Kondratiev WMI_RX_CHAIN_ADD = 0, 6782be7d22fSVladimir Kondratiev WMI_RX_CHAIN_DEL = 1, 6792be7d22fSVladimir Kondratiev }; 6802be7d22fSVladimir Kondratiev 6812be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_decap_trans_type { 6822be7d22fSVladimir Kondratiev WMI_DECAP_TYPE_802_3 = 0, 6832be7d22fSVladimir Kondratiev WMI_DECAP_TYPE_NATIVE_WIFI = 1, 6848c679675SVladimir Kondratiev WMI_DECAP_TYPE_NONE = 2, 6852be7d22fSVladimir Kondratiev }; 6862be7d22fSVladimir Kondratiev 6872be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_nwifi_ds_trans_type { 6882be7d22fSVladimir Kondratiev WMI_NWIFI_RX_TRANS_MODE_NO = 0, 6892be7d22fSVladimir Kondratiev WMI_NWIFI_RX_TRANS_MODE_PBSS2AP = 1, 6902be7d22fSVladimir Kondratiev WMI_NWIFI_RX_TRANS_MODE_PBSS2STA = 2, 6912be7d22fSVladimir Kondratiev }; 6922be7d22fSVladimir Kondratiev 693b8023177SVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_reorder_type { 694b8023177SVladimir Kondratiev WMI_RX_HW_REORDER = 0, 695b8023177SVladimir Kondratiev WMI_RX_SW_REORDER = 1, 696b8023177SVladimir Kondratiev }; 697b8023177SVladimir Kondratiev 6982be7d22fSVladimir Kondratiev struct wmi_cfg_rx_chain_cmd { 6992be7d22fSVladimir Kondratiev __le32 action; 7002be7d22fSVladimir Kondratiev struct wmi_sw_ring_cfg rx_sw_ring; 7012be7d22fSVladimir Kondratiev u8 mid; 7022be7d22fSVladimir Kondratiev u8 decap_trans_type; 7032be7d22fSVladimir Kondratiev 7042be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_POS (0) 7052be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_LEN (1) 7062be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_MSK (0x1) 707c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_POS (1) 708c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_LEN (1) 709c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_MSK (0x2) 7102be7d22fSVladimir Kondratiev u8 l2_802_3_offload_ctrl; 7112be7d22fSVladimir Kondratiev 7122be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_POS (0) 7132be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_LEN (1) 7142be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_MSK (0x1) 7152be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_POS (1) 7162be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_LEN (1) 7172be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_MSK (0x2) 7182be7d22fSVladimir Kondratiev u8 l2_nwifi_offload_ctrl; 7192be7d22fSVladimir Kondratiev 7202be7d22fSVladimir Kondratiev u8 vlan_id; 7212be7d22fSVladimir Kondratiev u8 nwifi_ds_trans_type; 7222be7d22fSVladimir Kondratiev 7232be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_POS (0) 7242be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_LEN (1) 7252be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_MSK (0x1) 7262be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_POS (1) 7272be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_LEN (1) 7282be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_MSK (0x2) 7292be7d22fSVladimir Kondratiev u8 l3_l4_ctrl; 7302be7d22fSVladimir Kondratiev 7312be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_POS (0) 7322be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_LEN (1) 7332be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_MSK (0x1) 7342be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_POS (1) 7352be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_LEN (1) 7362be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_MSK (0x2) 7372be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_POS (2) 7382be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_LEN (1) 7392be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_MSK (0x4) 7402be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_POS (3) 7412be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_LEN (1) 7422be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_MSK (0x8) 7432be7d22fSVladimir Kondratiev u8 ring_ctrl; 7442be7d22fSVladimir Kondratiev 7452be7d22fSVladimir Kondratiev __le16 prefetch_thrsh; 7462be7d22fSVladimir Kondratiev __le16 wb_thrsh; 7472be7d22fSVladimir Kondratiev __le32 itr_value; 7482be7d22fSVladimir Kondratiev __le16 host_thrsh; 749b8023177SVladimir Kondratiev u8 reorder_type; 750b8023177SVladimir Kondratiev u8 reserved; 7512be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg sniffer_cfg; 7522be7d22fSVladimir Kondratiev } __packed; 7532be7d22fSVladimir Kondratiev 7542be7d22fSVladimir Kondratiev /* 7552be7d22fSVladimir Kondratiev * WMI_RCP_ADDBA_RESP_CMDID 7562be7d22fSVladimir Kondratiev */ 7572be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_cmd { 7582be7d22fSVladimir Kondratiev u8 cidxtid; 7592be7d22fSVladimir Kondratiev u8 dialog_token; 7602be7d22fSVladimir Kondratiev __le16 status_code; 7612be7d22fSVladimir Kondratiev __le16 ba_param_set; /* ieee80211_ba_parameterset field to send */ 7622be7d22fSVladimir Kondratiev __le16 ba_timeout; 7632be7d22fSVladimir Kondratiev } __packed; 7642be7d22fSVladimir Kondratiev 7652be7d22fSVladimir Kondratiev /* 7662be7d22fSVladimir Kondratiev * WMI_RCP_DELBA_CMDID 7672be7d22fSVladimir Kondratiev */ 7682be7d22fSVladimir Kondratiev struct wmi_rcp_delba_cmd { 7692be7d22fSVladimir Kondratiev u8 cidxtid; 7702be7d22fSVladimir Kondratiev u8 reserved; 7712be7d22fSVladimir Kondratiev __le16 reason; 7722be7d22fSVladimir Kondratiev } __packed; 7732be7d22fSVladimir Kondratiev 7742be7d22fSVladimir Kondratiev /* 7752be7d22fSVladimir Kondratiev * WMI_RCP_ADDBA_REQ_CMDID 7762be7d22fSVladimir Kondratiev */ 7772be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_cmd { 7782be7d22fSVladimir Kondratiev u8 cidxtid; 7792be7d22fSVladimir Kondratiev u8 dialog_token; 7802be7d22fSVladimir Kondratiev /* ieee80211_ba_parameterset field as it received */ 7812be7d22fSVladimir Kondratiev __le16 ba_param_set; 7822be7d22fSVladimir Kondratiev __le16 ba_timeout; 7832be7d22fSVladimir Kondratiev /* ieee80211_ba_seqstrl field as it received */ 7842be7d22fSVladimir Kondratiev __le16 ba_seq_ctrl; 7852be7d22fSVladimir Kondratiev } __packed; 7862be7d22fSVladimir Kondratiev 7872be7d22fSVladimir Kondratiev /* 7882be7d22fSVladimir Kondratiev * WMI_SET_MAC_ADDRESS_CMDID 7892be7d22fSVladimir Kondratiev */ 7902be7d22fSVladimir Kondratiev struct wmi_set_mac_address_cmd { 7912be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 7922be7d22fSVladimir Kondratiev u8 reserved[2]; 7932be7d22fSVladimir Kondratiev } __packed; 7942be7d22fSVladimir Kondratiev 7952be7d22fSVladimir Kondratiev /* 7962be7d22fSVladimir Kondratiev * WMI_EAPOL_TX_CMDID 7972be7d22fSVladimir Kondratiev */ 7982be7d22fSVladimir Kondratiev struct wmi_eapol_tx_cmd { 7992be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 8002be7d22fSVladimir Kondratiev __le16 eapol_len; 8012be7d22fSVladimir Kondratiev u8 eapol[0]; 8022be7d22fSVladimir Kondratiev } __packed; 8032be7d22fSVladimir Kondratiev 8042be7d22fSVladimir Kondratiev /* 8052be7d22fSVladimir Kondratiev * WMI_ECHO_CMDID 8062be7d22fSVladimir Kondratiev * 8072be7d22fSVladimir Kondratiev * Check FW is alive 8082be7d22fSVladimir Kondratiev * 8092be7d22fSVladimir Kondratiev * WMI_DEEP_ECHO_CMDID 8102be7d22fSVladimir Kondratiev * 8112be7d22fSVladimir Kondratiev * Check FW and ucode are alive 8122be7d22fSVladimir Kondratiev * 8132be7d22fSVladimir Kondratiev * Returned event: WMI_ECHO_RSP_EVENTID 8142be7d22fSVladimir Kondratiev * same event for both commands 8152be7d22fSVladimir Kondratiev */ 8162be7d22fSVladimir Kondratiev struct wmi_echo_cmd { 8172be7d22fSVladimir Kondratiev __le32 value; 8182be7d22fSVladimir Kondratiev } __packed; 8192be7d22fSVladimir Kondratiev 8202be7d22fSVladimir Kondratiev /* 821b8023177SVladimir Kondratiev * WMI_TEMP_SENSE_CMDID 822b8023177SVladimir Kondratiev * 823b8023177SVladimir Kondratiev * Measure MAC and radio temperatures 824b8023177SVladimir Kondratiev */ 8258c679675SVladimir Kondratiev 8268c679675SVladimir Kondratiev /* Possible modes for temperature measurement */ 8278c679675SVladimir Kondratiev enum wmi_temperature_measure_mode { 8288c679675SVladimir Kondratiev TEMPERATURE_USE_OLD_VALUE = 0x1, 8298c679675SVladimir Kondratiev TEMPERATURE_MEASURE_NOW = 0x2, 8308c679675SVladimir Kondratiev }; 8318c679675SVladimir Kondratiev 832b8023177SVladimir Kondratiev struct wmi_temp_sense_cmd { 8338c679675SVladimir Kondratiev __le32 measure_baseband_en; 8348c679675SVladimir Kondratiev __le32 measure_rf_en; 8358c679675SVladimir Kondratiev __le32 measure_mode; 836b8023177SVladimir Kondratiev } __packed; 837b8023177SVladimir Kondratiev 838b8023177SVladimir Kondratiev /* 839*dc16427bSVladimir Kondratiev * WMI_PMC_CMDID 840*dc16427bSVladimir Kondratiev */ 841*dc16427bSVladimir Kondratiev enum wmi_pmc_op_e { 842*dc16427bSVladimir Kondratiev WMI_PMC_ALLOCATE = 0, 843*dc16427bSVladimir Kondratiev WMI_PMC_RELEASE = 1, 844*dc16427bSVladimir Kondratiev }; 845*dc16427bSVladimir Kondratiev 846*dc16427bSVladimir Kondratiev struct wmi_pmc_cmd { 847*dc16427bSVladimir Kondratiev u8 op; /* enum wmi_pmc_cmd_op_type */ 848*dc16427bSVladimir Kondratiev u8 reserved; 849*dc16427bSVladimir Kondratiev __le16 ring_size; 850*dc16427bSVladimir Kondratiev __le64 mem_base; 851*dc16427bSVladimir Kondratiev } __packed; 852*dc16427bSVladimir Kondratiev 853*dc16427bSVladimir Kondratiev /* 8542be7d22fSVladimir Kondratiev * WMI Events 8552be7d22fSVladimir Kondratiev */ 8562be7d22fSVladimir Kondratiev 8572be7d22fSVladimir Kondratiev /* 8582be7d22fSVladimir Kondratiev * List of Events (target to host) 8592be7d22fSVladimir Kondratiev */ 8602be7d22fSVladimir Kondratiev enum wmi_event_id { 8612be7d22fSVladimir Kondratiev WMI_READY_EVENTID = 0x1001, 8622be7d22fSVladimir Kondratiev WMI_CONNECT_EVENTID = 0x1002, 8632be7d22fSVladimir Kondratiev WMI_DISCONNECT_EVENTID = 0x1003, 8642be7d22fSVladimir Kondratiev WMI_SCAN_COMPLETE_EVENTID = 0x100a, 8652be7d22fSVladimir Kondratiev WMI_REPORT_STATISTICS_EVENTID = 0x100b, 8662be7d22fSVladimir Kondratiev WMI_RD_MEM_RSP_EVENTID = 0x1800, 8672be7d22fSVladimir Kondratiev WMI_FW_READY_EVENTID = 0x1801, 8682be7d22fSVladimir Kondratiev WMI_EXIT_FAST_MEM_ACC_MODE_EVENTID = 0x0200, 8692be7d22fSVladimir Kondratiev WMI_ECHO_RSP_EVENTID = 0x1803, 8702be7d22fSVladimir Kondratiev WMI_FS_TUNE_DONE_EVENTID = 0x180a, 871b8023177SVladimir Kondratiev WMI_CORR_MEASURE_EVENTID = 0x180b, 872b8023177SVladimir Kondratiev WMI_READ_RSSI_EVENTID = 0x180c, 8732be7d22fSVladimir Kondratiev WMI_TEMP_SENSE_DONE_EVENTID = 0x180e, 8742be7d22fSVladimir Kondratiev WMI_DC_CALIB_DONE_EVENTID = 0x180f, 8752be7d22fSVladimir Kondratiev WMI_IQ_TX_CALIB_DONE_EVENTID = 0x1811, 8762be7d22fSVladimir Kondratiev WMI_IQ_RX_CALIB_DONE_EVENTID = 0x1812, 8772be7d22fSVladimir Kondratiev WMI_SET_WORK_MODE_DONE_EVENTID = 0x1815, 8782be7d22fSVladimir Kondratiev WMI_LO_LEAKAGE_CALIB_DONE_EVENTID = 0x1816, 8792be7d22fSVladimir Kondratiev WMI_MARLON_R_READ_DONE_EVENTID = 0x1818, 8802be7d22fSVladimir Kondratiev WMI_MARLON_R_WRITE_DONE_EVENTID = 0x1819, 8812be7d22fSVladimir Kondratiev WMI_MARLON_R_TXRX_SEL_DONE_EVENTID = 0x181a, 8822be7d22fSVladimir Kondratiev WMI_SILENT_RSSI_CALIB_DONE_EVENTID = 0x181d, 883b8023177SVladimir Kondratiev WMI_RF_RX_TEST_DONE_EVENTID = 0x181e, 8842be7d22fSVladimir Kondratiev WMI_CFG_RX_CHAIN_DONE_EVENTID = 0x1820, 8852be7d22fSVladimir Kondratiev WMI_VRING_CFG_DONE_EVENTID = 0x1821, 8862be7d22fSVladimir Kondratiev WMI_BA_STATUS_EVENTID = 0x1823, 8872be7d22fSVladimir Kondratiev WMI_RCP_ADDBA_REQ_EVENTID = 0x1824, 8882be7d22fSVladimir Kondratiev WMI_ADDBA_RESP_SENT_EVENTID = 0x1825, 8892be7d22fSVladimir Kondratiev WMI_DELBA_EVENTID = 0x1826, 8902be7d22fSVladimir Kondratiev WMI_GET_SSID_EVENTID = 0x1828, 8912be7d22fSVladimir Kondratiev WMI_GET_PCP_CHANNEL_EVENTID = 0x182a, 8922be7d22fSVladimir Kondratiev WMI_SW_TX_COMPLETE_EVENTID = 0x182b, 8932be7d22fSVladimir Kondratiev 8942be7d22fSVladimir Kondratiev WMI_READ_MAC_RXQ_EVENTID = 0x1830, 8952be7d22fSVladimir Kondratiev WMI_READ_MAC_TXQ_EVENTID = 0x1831, 8962be7d22fSVladimir Kondratiev WMI_WRITE_MAC_RXQ_EVENTID = 0x1832, 8972be7d22fSVladimir Kondratiev WMI_WRITE_MAC_TXQ_EVENTID = 0x1833, 8982be7d22fSVladimir Kondratiev WMI_WRITE_MAC_XQ_FIELD_EVENTID = 0x1834, 8992be7d22fSVladimir Kondratiev 9002be7d22fSVladimir Kondratiev WMI_BEAFORMING_MGMT_DONE_EVENTID = 0x1836, 9012be7d22fSVladimir Kondratiev WMI_BF_TXSS_MGMT_DONE_EVENTID = 0x1837, 9022be7d22fSVladimir Kondratiev WMI_BF_RXSS_MGMT_DONE_EVENTID = 0x1839, 9032be7d22fSVladimir Kondratiev WMI_RS_MGMT_DONE_EVENTID = 0x1852, 9042be7d22fSVladimir Kondratiev WMI_RF_MGMT_STATUS_EVENTID = 0x1853, 9058c679675SVladimir Kondratiev WMI_THERMAL_THROTTLING_STATUS_EVENTID = 0x1855, 9062be7d22fSVladimir Kondratiev WMI_BF_SM_MGMT_DONE_EVENTID = 0x1838, 9072be7d22fSVladimir Kondratiev WMI_RX_MGMT_PACKET_EVENTID = 0x1840, 9086c2faf09SVladimir Kondratiev WMI_TX_MGMT_PACKET_EVENTID = 0x1841, 9092be7d22fSVladimir Kondratiev 9102be7d22fSVladimir Kondratiev /* Performance monitoring events */ 9112be7d22fSVladimir Kondratiev WMI_DATA_PORT_OPEN_EVENTID = 0x1860, 9122be7d22fSVladimir Kondratiev WMI_WBE_LINKDOWN_EVENTID = 0x1861, 9132be7d22fSVladimir Kondratiev 9142be7d22fSVladimir Kondratiev WMI_BF_CTRL_DONE_EVENTID = 0x1862, 9152be7d22fSVladimir Kondratiev WMI_NOTIFY_REQ_DONE_EVENTID = 0x1863, 9162be7d22fSVladimir Kondratiev WMI_GET_STATUS_DONE_EVENTID = 0x1864, 9172be7d22fSVladimir Kondratiev 9182be7d22fSVladimir Kondratiev WMI_UNIT_TEST_EVENTID = 0x1900, 9192be7d22fSVladimir Kondratiev WMI_FLASH_READ_DONE_EVENTID = 0x1902, 9202be7d22fSVladimir Kondratiev WMI_FLASH_WRITE_DONE_EVENTID = 0x1903, 921b8023177SVladimir Kondratiev /*P2P*/ 9228c679675SVladimir Kondratiev WMI_P2P_CFG_DONE_EVENTID = 0x1910, 923b8023177SVladimir Kondratiev WMI_PORT_ALLOCATED_EVENTID = 0x1911, 924b8023177SVladimir Kondratiev WMI_PORT_DELETED_EVENTID = 0x1912, 925b8023177SVladimir Kondratiev WMI_LISTEN_STARTED_EVENTID = 0x1914, 926b8023177SVladimir Kondratiev WMI_SEARCH_STARTED_EVENTID = 0x1915, 927b8023177SVladimir Kondratiev WMI_DISCOVERY_STARTED_EVENTID = 0x1916, 928b8023177SVladimir Kondratiev WMI_DISCOVERY_STOPPED_EVENTID = 0x1917, 929b8023177SVladimir Kondratiev WMI_PCP_STARTED_EVENTID = 0x1918, 930b8023177SVladimir Kondratiev WMI_PCP_STOPPED_EVENTID = 0x1919, 931b8023177SVladimir Kondratiev WMI_PCP_FACTOR_EVENTID = 0x191a, 9322be7d22fSVladimir Kondratiev WMI_SET_CHANNEL_EVENTID = 0x9000, 9332be7d22fSVladimir Kondratiev WMI_ASSOC_REQ_EVENTID = 0x9001, 9342be7d22fSVladimir Kondratiev WMI_EAPOL_RX_EVENTID = 0x9002, 9352be7d22fSVladimir Kondratiev WMI_MAC_ADDR_RESP_EVENTID = 0x9003, 9362be7d22fSVladimir Kondratiev WMI_FW_VER_EVENTID = 0x9004, 9372be7d22fSVladimir Kondratiev }; 9382be7d22fSVladimir Kondratiev 9392be7d22fSVladimir Kondratiev /* 9402be7d22fSVladimir Kondratiev * Events data structures 9412be7d22fSVladimir Kondratiev */ 9422be7d22fSVladimir Kondratiev 943b8023177SVladimir Kondratiev enum wmi_fw_status { 944b8023177SVladimir Kondratiev WMI_FW_STATUS_SUCCESS, 945b8023177SVladimir Kondratiev WMI_FW_STATUS_FAILURE, 946b8023177SVladimir Kondratiev }; 947b8023177SVladimir Kondratiev 9482be7d22fSVladimir Kondratiev /* 9492be7d22fSVladimir Kondratiev * WMI_RF_MGMT_STATUS_EVENTID 9502be7d22fSVladimir Kondratiev */ 9512be7d22fSVladimir Kondratiev enum wmi_rf_status { 9522be7d22fSVladimir Kondratiev WMI_RF_ENABLED = 0, 9532be7d22fSVladimir Kondratiev WMI_RF_DISABLED_HW = 1, 9542be7d22fSVladimir Kondratiev WMI_RF_DISABLED_SW = 2, 9552be7d22fSVladimir Kondratiev WMI_RF_DISABLED_HW_SW = 3, 9562be7d22fSVladimir Kondratiev }; 9572be7d22fSVladimir Kondratiev 9582be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_status_event { 9592be7d22fSVladimir Kondratiev __le32 rf_status; 9602be7d22fSVladimir Kondratiev } __packed; 9612be7d22fSVladimir Kondratiev 9622be7d22fSVladimir Kondratiev /* 9638c679675SVladimir Kondratiev * WMI_THERMAL_THROTTLING_STATUS_EVENTID 9648c679675SVladimir Kondratiev */ 9658c679675SVladimir Kondratiev struct wmi_thermal_throttling_status_event { 9668c679675SVladimir Kondratiev __le32 time_on_usec; 9678c679675SVladimir Kondratiev __le32 time_off_usec; 9688c679675SVladimir Kondratiev __le32 max_txop_length_usec; 9698c679675SVladimir Kondratiev } __packed; 9708c679675SVladimir Kondratiev 9718c679675SVladimir Kondratiev /* 9722be7d22fSVladimir Kondratiev * WMI_GET_STATUS_DONE_EVENTID 9732be7d22fSVladimir Kondratiev */ 9742be7d22fSVladimir Kondratiev struct wmi_get_status_done_event { 9752be7d22fSVladimir Kondratiev __le32 is_associated; 9762be7d22fSVladimir Kondratiev u8 cid; 9772be7d22fSVladimir Kondratiev u8 reserved0[3]; 9782be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 9792be7d22fSVladimir Kondratiev u8 channel; 9802be7d22fSVladimir Kondratiev u8 reserved1; 9812be7d22fSVladimir Kondratiev u8 network_type; 9822be7d22fSVladimir Kondratiev u8 reserved2[3]; 9832be7d22fSVladimir Kondratiev __le32 ssid_len; 9842be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 9852be7d22fSVladimir Kondratiev __le32 rf_status; 9862be7d22fSVladimir Kondratiev __le32 is_secured; 9872be7d22fSVladimir Kondratiev } __packed; 9882be7d22fSVladimir Kondratiev 9892be7d22fSVladimir Kondratiev /* 9902be7d22fSVladimir Kondratiev * WMI_FW_VER_EVENTID 9912be7d22fSVladimir Kondratiev */ 9922be7d22fSVladimir Kondratiev struct wmi_fw_ver_event { 9932be7d22fSVladimir Kondratiev u8 major; 9942be7d22fSVladimir Kondratiev u8 minor; 9952be7d22fSVladimir Kondratiev __le16 subminor; 9962be7d22fSVladimir Kondratiev __le16 build; 9972be7d22fSVladimir Kondratiev } __packed; 9982be7d22fSVladimir Kondratiev 9992be7d22fSVladimir Kondratiev /* 10002be7d22fSVladimir Kondratiev * WMI_MAC_ADDR_RESP_EVENTID 10012be7d22fSVladimir Kondratiev */ 10022be7d22fSVladimir Kondratiev struct wmi_mac_addr_resp_event { 10032be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 10042be7d22fSVladimir Kondratiev u8 auth_mode; 10052be7d22fSVladimir Kondratiev u8 crypt_mode; 10062be7d22fSVladimir Kondratiev __le32 offload_mode; 10072be7d22fSVladimir Kondratiev } __packed; 10082be7d22fSVladimir Kondratiev 10092be7d22fSVladimir Kondratiev /* 10102be7d22fSVladimir Kondratiev * WMI_EAPOL_RX_EVENTID 10112be7d22fSVladimir Kondratiev */ 10122be7d22fSVladimir Kondratiev struct wmi_eapol_rx_event { 10132be7d22fSVladimir Kondratiev u8 src_mac[WMI_MAC_LEN]; 10142be7d22fSVladimir Kondratiev __le16 eapol_len; 10152be7d22fSVladimir Kondratiev u8 eapol[0]; 10162be7d22fSVladimir Kondratiev } __packed; 10172be7d22fSVladimir Kondratiev 10182be7d22fSVladimir Kondratiev /* 10192be7d22fSVladimir Kondratiev * WMI_READY_EVENTID 10202be7d22fSVladimir Kondratiev */ 10212be7d22fSVladimir Kondratiev enum wmi_phy_capability { 10222be7d22fSVladimir Kondratiev WMI_11A_CAPABILITY = 1, 10232be7d22fSVladimir Kondratiev WMI_11G_CAPABILITY = 2, 10242be7d22fSVladimir Kondratiev WMI_11AG_CAPABILITY = 3, 10252be7d22fSVladimir Kondratiev WMI_11NA_CAPABILITY = 4, 10262be7d22fSVladimir Kondratiev WMI_11NG_CAPABILITY = 5, 10272be7d22fSVladimir Kondratiev WMI_11NAG_CAPABILITY = 6, 10282be7d22fSVladimir Kondratiev WMI_11AD_CAPABILITY = 7, 10292be7d22fSVladimir Kondratiev WMI_11N_CAPABILITY_OFFSET = WMI_11NA_CAPABILITY - WMI_11A_CAPABILITY, 10302be7d22fSVladimir Kondratiev }; 10312be7d22fSVladimir Kondratiev 10322be7d22fSVladimir Kondratiev struct wmi_ready_event { 10332be7d22fSVladimir Kondratiev __le32 sw_version; 10342be7d22fSVladimir Kondratiev __le32 abi_version; 10352be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 10362be7d22fSVladimir Kondratiev u8 phy_capability; /* enum wmi_phy_capability */ 1037b8023177SVladimir Kondratiev u8 numof_additional_mids; 10382be7d22fSVladimir Kondratiev } __packed; 10392be7d22fSVladimir Kondratiev 10402be7d22fSVladimir Kondratiev /* 10412be7d22fSVladimir Kondratiev * WMI_NOTIFY_REQ_DONE_EVENTID 10422be7d22fSVladimir Kondratiev */ 10432be7d22fSVladimir Kondratiev struct wmi_notify_req_done_event { 104436345ac3SVladimir Kondratiev __le32 status; /* beamforming status, 0: fail; 1: OK; 2: retrying */ 10452be7d22fSVladimir Kondratiev __le64 tsf; 10462be7d22fSVladimir Kondratiev __le32 snr_val; 10472be7d22fSVladimir Kondratiev __le32 tx_tpt; 10482be7d22fSVladimir Kondratiev __le32 tx_goodput; 10492be7d22fSVladimir Kondratiev __le32 rx_goodput; 10502be7d22fSVladimir Kondratiev __le16 bf_mcs; 10512be7d22fSVladimir Kondratiev __le16 my_rx_sector; 10522be7d22fSVladimir Kondratiev __le16 my_tx_sector; 10532be7d22fSVladimir Kondratiev __le16 other_rx_sector; 10542be7d22fSVladimir Kondratiev __le16 other_tx_sector; 10552be7d22fSVladimir Kondratiev __le16 range; 1056b8023177SVladimir Kondratiev u8 sqi; 1057b8023177SVladimir Kondratiev u8 reserved[3]; 10582be7d22fSVladimir Kondratiev } __packed; 10592be7d22fSVladimir Kondratiev 10602be7d22fSVladimir Kondratiev /* 10612be7d22fSVladimir Kondratiev * WMI_CONNECT_EVENTID 10622be7d22fSVladimir Kondratiev */ 10632be7d22fSVladimir Kondratiev struct wmi_connect_event { 10642be7d22fSVladimir Kondratiev u8 channel; 10652be7d22fSVladimir Kondratiev u8 reserved0; 10662be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 10672be7d22fSVladimir Kondratiev __le16 listen_interval; 10682be7d22fSVladimir Kondratiev __le16 beacon_interval; 10692be7d22fSVladimir Kondratiev u8 network_type; 10702be7d22fSVladimir Kondratiev u8 reserved1[3]; 10712be7d22fSVladimir Kondratiev u8 beacon_ie_len; 10722be7d22fSVladimir Kondratiev u8 assoc_req_len; 10732be7d22fSVladimir Kondratiev u8 assoc_resp_len; 10742be7d22fSVladimir Kondratiev u8 cid; 10752be7d22fSVladimir Kondratiev u8 reserved2[3]; 10762be7d22fSVladimir Kondratiev u8 assoc_info[0]; 10772be7d22fSVladimir Kondratiev } __packed; 10782be7d22fSVladimir Kondratiev 10792be7d22fSVladimir Kondratiev /* 10802be7d22fSVladimir Kondratiev * WMI_DISCONNECT_EVENTID 10812be7d22fSVladimir Kondratiev */ 10822be7d22fSVladimir Kondratiev enum wmi_disconnect_reason { 10832be7d22fSVladimir Kondratiev WMI_DIS_REASON_NO_NETWORK_AVAIL = 1, 10842be7d22fSVladimir Kondratiev WMI_DIS_REASON_LOST_LINK = 2, /* bmiss */ 10852be7d22fSVladimir Kondratiev WMI_DIS_REASON_DISCONNECT_CMD = 3, 10862be7d22fSVladimir Kondratiev WMI_DIS_REASON_BSS_DISCONNECTED = 4, 10872be7d22fSVladimir Kondratiev WMI_DIS_REASON_AUTH_FAILED = 5, 10882be7d22fSVladimir Kondratiev WMI_DIS_REASON_ASSOC_FAILED = 6, 10892be7d22fSVladimir Kondratiev WMI_DIS_REASON_NO_RESOURCES_AVAIL = 7, 10902be7d22fSVladimir Kondratiev WMI_DIS_REASON_CSERV_DISCONNECT = 8, 10912be7d22fSVladimir Kondratiev WMI_DIS_REASON_INVALID_PROFILE = 10, 10922be7d22fSVladimir Kondratiev WMI_DIS_REASON_DOT11H_CHANNEL_SWITCH = 11, 10932be7d22fSVladimir Kondratiev WMI_DIS_REASON_PROFILE_MISMATCH = 12, 10942be7d22fSVladimir Kondratiev WMI_DIS_REASON_CONNECTION_EVICTED = 13, 10952be7d22fSVladimir Kondratiev WMI_DIS_REASON_IBSS_MERGE = 14, 10962be7d22fSVladimir Kondratiev }; 10972be7d22fSVladimir Kondratiev 10982be7d22fSVladimir Kondratiev struct wmi_disconnect_event { 10992be7d22fSVladimir Kondratiev __le16 protocol_reason_status; /* reason code, see 802.11 spec. */ 11002be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; /* set if known */ 11016c2faf09SVladimir Kondratiev u8 disconnect_reason; /* see wmi_disconnect_reason */ 11028fe59627SVladimir Kondratiev u8 assoc_resp_len; /* not used */ 11038fe59627SVladimir Kondratiev u8 assoc_info[0]; /* not used */ 11042be7d22fSVladimir Kondratiev } __packed; 11052be7d22fSVladimir Kondratiev 11062be7d22fSVladimir Kondratiev /* 11072be7d22fSVladimir Kondratiev * WMI_SCAN_COMPLETE_EVENTID 11082be7d22fSVladimir Kondratiev */ 11096c2faf09SVladimir Kondratiev enum scan_status { 11106c2faf09SVladimir Kondratiev WMI_SCAN_SUCCESS = 0, 11116c2faf09SVladimir Kondratiev WMI_SCAN_FAILED = 1, 11126c2faf09SVladimir Kondratiev WMI_SCAN_ABORTED = 2, 11136c2faf09SVladimir Kondratiev WMI_SCAN_REJECTED = 3, 11146c2faf09SVladimir Kondratiev }; 11156c2faf09SVladimir Kondratiev 11162be7d22fSVladimir Kondratiev struct wmi_scan_complete_event { 11176c2faf09SVladimir Kondratiev __le32 status; /* scan_status */ 11182be7d22fSVladimir Kondratiev } __packed; 11192be7d22fSVladimir Kondratiev 11202be7d22fSVladimir Kondratiev /* 11212be7d22fSVladimir Kondratiev * WMI_BA_STATUS_EVENTID 11222be7d22fSVladimir Kondratiev */ 11232be7d22fSVladimir Kondratiev enum wmi_vring_ba_status { 11242be7d22fSVladimir Kondratiev WMI_BA_AGREED = 0, 11252be7d22fSVladimir Kondratiev WMI_BA_NON_AGREED = 1, 1126cbcf5866SVladimir Kondratiev /* BA_EN in middle of teardown flow */ 1127cbcf5866SVladimir Kondratiev WMI_BA_TD_WIP = 2, 1128cbcf5866SVladimir Kondratiev /* BA_DIS or BA_EN in middle of BA SETUP flow */ 1129cbcf5866SVladimir Kondratiev WMI_BA_SETUP_WIP = 3, 1130cbcf5866SVladimir Kondratiev /* BA_EN when the BA session is already active */ 1131cbcf5866SVladimir Kondratiev WMI_BA_SESSION_ACTIVE = 4, 1132cbcf5866SVladimir Kondratiev /* BA_DIS when the BA session is not active */ 1133cbcf5866SVladimir Kondratiev WMI_BA_SESSION_NOT_ACTIVE = 5, 11342be7d22fSVladimir Kondratiev }; 11352be7d22fSVladimir Kondratiev 11362be7d22fSVladimir Kondratiev struct wmi_vring_ba_status_event { 1137cbcf5866SVladimir Kondratiev __le16 status; /* enum wmi_vring_ba_status */ 11382be7d22fSVladimir Kondratiev u8 reserved[2]; 11392be7d22fSVladimir Kondratiev u8 ringid; 11402be7d22fSVladimir Kondratiev u8 agg_wsize; 11412be7d22fSVladimir Kondratiev __le16 ba_timeout; 1142cbcf5866SVladimir Kondratiev u8 amsdu; 11432be7d22fSVladimir Kondratiev } __packed; 11442be7d22fSVladimir Kondratiev 11452be7d22fSVladimir Kondratiev /* 11462be7d22fSVladimir Kondratiev * WMI_DELBA_EVENTID 11472be7d22fSVladimir Kondratiev */ 11482be7d22fSVladimir Kondratiev struct wmi_delba_event { 11492be7d22fSVladimir Kondratiev u8 cidxtid; 11502be7d22fSVladimir Kondratiev u8 from_initiator; 11512be7d22fSVladimir Kondratiev __le16 reason; 11522be7d22fSVladimir Kondratiev } __packed; 11532be7d22fSVladimir Kondratiev 11542be7d22fSVladimir Kondratiev /* 11552be7d22fSVladimir Kondratiev * WMI_VRING_CFG_DONE_EVENTID 11562be7d22fSVladimir Kondratiev */ 11572be7d22fSVladimir Kondratiev struct wmi_vring_cfg_done_event { 11582be7d22fSVladimir Kondratiev u8 ringid; 11592be7d22fSVladimir Kondratiev u8 status; 11602be7d22fSVladimir Kondratiev u8 reserved[2]; 11612be7d22fSVladimir Kondratiev __le32 tx_vring_tail_ptr; 11622be7d22fSVladimir Kondratiev } __packed; 11632be7d22fSVladimir Kondratiev 11642be7d22fSVladimir Kondratiev /* 11652be7d22fSVladimir Kondratiev * WMI_ADDBA_RESP_SENT_EVENTID 11662be7d22fSVladimir Kondratiev */ 11672be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_sent_event { 11682be7d22fSVladimir Kondratiev u8 cidxtid; 11692be7d22fSVladimir Kondratiev u8 reserved; 11702be7d22fSVladimir Kondratiev __le16 status; 11712be7d22fSVladimir Kondratiev } __packed; 11722be7d22fSVladimir Kondratiev 11732be7d22fSVladimir Kondratiev /* 11742be7d22fSVladimir Kondratiev * WMI_RCP_ADDBA_REQ_EVENTID 11752be7d22fSVladimir Kondratiev */ 11762be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_event { 11772be7d22fSVladimir Kondratiev u8 cidxtid; 11782be7d22fSVladimir Kondratiev u8 dialog_token; 11792be7d22fSVladimir Kondratiev __le16 ba_param_set; /* ieee80211_ba_parameterset as it received */ 11802be7d22fSVladimir Kondratiev __le16 ba_timeout; 11812be7d22fSVladimir Kondratiev __le16 ba_seq_ctrl; /* ieee80211_ba_seqstrl field as it received */ 11822be7d22fSVladimir Kondratiev } __packed; 11832be7d22fSVladimir Kondratiev 11842be7d22fSVladimir Kondratiev /* 11852be7d22fSVladimir Kondratiev * WMI_CFG_RX_CHAIN_DONE_EVENTID 11862be7d22fSVladimir Kondratiev */ 11872be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_done_event_status { 11882be7d22fSVladimir Kondratiev WMI_CFG_RX_CHAIN_SUCCESS = 1, 11892be7d22fSVladimir Kondratiev }; 11902be7d22fSVladimir Kondratiev 11912be7d22fSVladimir Kondratiev struct wmi_cfg_rx_chain_done_event { 11922be7d22fSVladimir Kondratiev __le32 rx_ring_tail_ptr; /* Rx V-Ring Tail pointer */ 11932be7d22fSVladimir Kondratiev __le32 status; 11942be7d22fSVladimir Kondratiev } __packed; 11952be7d22fSVladimir Kondratiev 11962be7d22fSVladimir Kondratiev /* 11972be7d22fSVladimir Kondratiev * WMI_WBE_LINKDOWN_EVENTID 11982be7d22fSVladimir Kondratiev */ 11992be7d22fSVladimir Kondratiev enum wmi_wbe_link_down_event_reason { 12002be7d22fSVladimir Kondratiev WMI_WBE_REASON_USER_REQUEST = 0, 12012be7d22fSVladimir Kondratiev WMI_WBE_REASON_RX_DISASSOC = 1, 12022be7d22fSVladimir Kondratiev WMI_WBE_REASON_BAD_PHY_LINK = 2, 12032be7d22fSVladimir Kondratiev }; 12042be7d22fSVladimir Kondratiev 12052be7d22fSVladimir Kondratiev struct wmi_wbe_link_down_event { 12062be7d22fSVladimir Kondratiev u8 cid; 12072be7d22fSVladimir Kondratiev u8 reserved[3]; 12082be7d22fSVladimir Kondratiev __le32 reason; 12092be7d22fSVladimir Kondratiev } __packed; 12102be7d22fSVladimir Kondratiev 12112be7d22fSVladimir Kondratiev /* 12122be7d22fSVladimir Kondratiev * WMI_DATA_PORT_OPEN_EVENTID 12132be7d22fSVladimir Kondratiev */ 12142be7d22fSVladimir Kondratiev struct wmi_data_port_open_event { 12152be7d22fSVladimir Kondratiev u8 cid; 12162be7d22fSVladimir Kondratiev u8 reserved[3]; 12172be7d22fSVladimir Kondratiev } __packed; 12182be7d22fSVladimir Kondratiev 12192be7d22fSVladimir Kondratiev /* 12202be7d22fSVladimir Kondratiev * WMI_GET_PCP_CHANNEL_EVENTID 12212be7d22fSVladimir Kondratiev */ 12222be7d22fSVladimir Kondratiev struct wmi_get_pcp_channel_event { 12232be7d22fSVladimir Kondratiev u8 channel; 12242be7d22fSVladimir Kondratiev u8 reserved[3]; 12252be7d22fSVladimir Kondratiev } __packed; 12262be7d22fSVladimir Kondratiev 1227b8023177SVladimir Kondratiev /* 12288c679675SVladimir Kondratiev * WMI_P2P_CFG_DONE_EVENTID 12298c679675SVladimir Kondratiev */ 12308c679675SVladimir Kondratiev struct wmi_p2p_cfg_done_event { 12318c679675SVladimir Kondratiev u8 status; /* wmi_fw_status */ 12328c679675SVladimir Kondratiev u8 reserved[3]; 12338c679675SVladimir Kondratiev } __packed; 12348c679675SVladimir Kondratiev 12358c679675SVladimir Kondratiev /* 1236b8023177SVladimir Kondratiev * WMI_PORT_ALLOCATED_EVENTID 1237b8023177SVladimir Kondratiev */ 1238b8023177SVladimir Kondratiev struct wmi_port_allocated_event { 1239b8023177SVladimir Kondratiev u8 status; /* wmi_fw_status */ 1240b8023177SVladimir Kondratiev u8 reserved[3]; 1241b8023177SVladimir Kondratiev } __packed; 1242b8023177SVladimir Kondratiev 1243b8023177SVladimir Kondratiev /* 1244b8023177SVladimir Kondratiev * WMI_PORT_DELETED_EVENTID 1245b8023177SVladimir Kondratiev */ 1246b8023177SVladimir Kondratiev struct wmi_port_deleted_event { 1247b8023177SVladimir Kondratiev u8 status; /* wmi_fw_status */ 1248b8023177SVladimir Kondratiev u8 reserved[3]; 1249b8023177SVladimir Kondratiev } __packed; 1250b8023177SVladimir Kondratiev 1251b8023177SVladimir Kondratiev /* 1252b8023177SVladimir Kondratiev * WMI_LISTEN_STARTED_EVENTID 1253b8023177SVladimir Kondratiev */ 1254b8023177SVladimir Kondratiev struct wmi_listen_started_event { 1255b8023177SVladimir Kondratiev u8 status; /* wmi_fw_status */ 1256b8023177SVladimir Kondratiev u8 reserved[3]; 1257b8023177SVladimir Kondratiev } __packed; 1258b8023177SVladimir Kondratiev 1259b8023177SVladimir Kondratiev /* 1260b8023177SVladimir Kondratiev * WMI_SEARCH_STARTED_EVENTID 1261b8023177SVladimir Kondratiev */ 1262b8023177SVladimir Kondratiev struct wmi_search_started_event { 1263b8023177SVladimir Kondratiev u8 status; /* wmi_fw_status */ 1264b8023177SVladimir Kondratiev u8 reserved[3]; 1265b8023177SVladimir Kondratiev } __packed; 1266b8023177SVladimir Kondratiev 1267b8023177SVladimir Kondratiev /* 1268b8023177SVladimir Kondratiev * WMI_PCP_STARTED_EVENTID 1269b8023177SVladimir Kondratiev */ 1270b8023177SVladimir Kondratiev struct wmi_pcp_started_event { 1271b8023177SVladimir Kondratiev u8 status; /* wmi_fw_status */ 1272b8023177SVladimir Kondratiev u8 reserved[3]; 1273b8023177SVladimir Kondratiev } __packed; 1274b8023177SVladimir Kondratiev 1275b8023177SVladimir Kondratiev /* 1276b8023177SVladimir Kondratiev * WMI_PCP_FACTOR_EVENTID 1277b8023177SVladimir Kondratiev */ 1278b8023177SVladimir Kondratiev struct wmi_pcp_factor_event { 1279b8023177SVladimir Kondratiev __le32 pcp_factor; 1280b8023177SVladimir Kondratiev } __packed; 1281b8023177SVladimir Kondratiev 12822be7d22fSVladimir Kondratiev /* 12832be7d22fSVladimir Kondratiev * WMI_SW_TX_COMPLETE_EVENTID 12842be7d22fSVladimir Kondratiev */ 12852be7d22fSVladimir Kondratiev enum wmi_sw_tx_status { 12862be7d22fSVladimir Kondratiev WMI_TX_SW_STATUS_SUCCESS = 0, 12872be7d22fSVladimir Kondratiev WMI_TX_SW_STATUS_FAILED_NO_RESOURCES = 1, 12882be7d22fSVladimir Kondratiev WMI_TX_SW_STATUS_FAILED_TX = 2, 12892be7d22fSVladimir Kondratiev }; 12902be7d22fSVladimir Kondratiev 12912be7d22fSVladimir Kondratiev struct wmi_sw_tx_complete_event { 12922be7d22fSVladimir Kondratiev u8 status; /* enum wmi_sw_tx_status */ 12932be7d22fSVladimir Kondratiev u8 reserved[3]; 12942be7d22fSVladimir Kondratiev } __packed; 12952be7d22fSVladimir Kondratiev 12962be7d22fSVladimir Kondratiev /* 1297b8023177SVladimir Kondratiev * WMI_CORR_MEASURE_EVENTID 1298b8023177SVladimir Kondratiev */ 1299b8023177SVladimir Kondratiev struct wmi_corr_measure_event { 1300b8023177SVladimir Kondratiev s32 i; 1301b8023177SVladimir Kondratiev s32 q; 1302b8023177SVladimir Kondratiev s32 image_i; 1303b8023177SVladimir Kondratiev s32 image_q; 1304b8023177SVladimir Kondratiev } __packed; 1305b8023177SVladimir Kondratiev 1306b8023177SVladimir Kondratiev /* 1307b8023177SVladimir Kondratiev * WMI_READ_RSSI_EVENTID 1308b8023177SVladimir Kondratiev */ 1309b8023177SVladimir Kondratiev struct wmi_read_rssi_event { 1310b8023177SVladimir Kondratiev __le32 ina_rssi_adc_dbm; 1311b8023177SVladimir Kondratiev } __packed; 1312b8023177SVladimir Kondratiev 1313b8023177SVladimir Kondratiev /* 13142be7d22fSVladimir Kondratiev * WMI_GET_SSID_EVENTID 13152be7d22fSVladimir Kondratiev */ 13162be7d22fSVladimir Kondratiev struct wmi_get_ssid_event { 13172be7d22fSVladimir Kondratiev __le32 ssid_len; 13182be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 13192be7d22fSVladimir Kondratiev } __packed; 13202be7d22fSVladimir Kondratiev 13212be7d22fSVladimir Kondratiev /* 13222be7d22fSVladimir Kondratiev * WMI_RX_MGMT_PACKET_EVENTID 13232be7d22fSVladimir Kondratiev */ 13242be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_info { 13252be7d22fSVladimir Kondratiev u8 mcs; 13262be7d22fSVladimir Kondratiev s8 snr; 1327b8023177SVladimir Kondratiev u8 range; 1328b8023177SVladimir Kondratiev u8 sqi; 13292be7d22fSVladimir Kondratiev __le16 stype; 13302be7d22fSVladimir Kondratiev __le16 status; 13312be7d22fSVladimir Kondratiev __le32 len; 13322be7d22fSVladimir Kondratiev u8 qid; 13332be7d22fSVladimir Kondratiev u8 mid; 13342be7d22fSVladimir Kondratiev u8 cid; 13352be7d22fSVladimir Kondratiev u8 channel; /* From Radio MNGR */ 13362be7d22fSVladimir Kondratiev } __packed; 13372be7d22fSVladimir Kondratiev 13386c2faf09SVladimir Kondratiev /* 13396c2faf09SVladimir Kondratiev * WMI_TX_MGMT_PACKET_EVENTID 13406c2faf09SVladimir Kondratiev */ 13416c2faf09SVladimir Kondratiev struct wmi_tx_mgmt_packet_event { 13426c2faf09SVladimir Kondratiev u8 payload[0]; 13436c2faf09SVladimir Kondratiev } __packed; 13446c2faf09SVladimir Kondratiev 13452be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_packet_event { 13462be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_info info; 13472be7d22fSVladimir Kondratiev u8 payload[0]; 13482be7d22fSVladimir Kondratiev } __packed; 13492be7d22fSVladimir Kondratiev 13502be7d22fSVladimir Kondratiev /* 13512be7d22fSVladimir Kondratiev * WMI_ECHO_RSP_EVENTID 13522be7d22fSVladimir Kondratiev */ 13532be7d22fSVladimir Kondratiev struct wmi_echo_event { 13542be7d22fSVladimir Kondratiev __le32 echoed_value; 13552be7d22fSVladimir Kondratiev } __packed; 13562be7d22fSVladimir Kondratiev 1357b8023177SVladimir Kondratiev /* 1358b8023177SVladimir Kondratiev * WMI_TEMP_SENSE_DONE_EVENTID 1359b8023177SVladimir Kondratiev * 1360b8023177SVladimir Kondratiev * Measure MAC and radio temperatures 1361b8023177SVladimir Kondratiev */ 1362b8023177SVladimir Kondratiev struct wmi_temp_sense_done_event { 13638c679675SVladimir Kondratiev __le32 baseband_t1000; 13648c679675SVladimir Kondratiev __le32 rf_t1000; 1365b8023177SVladimir Kondratiev } __packed; 1366b8023177SVladimir Kondratiev 13672be7d22fSVladimir Kondratiev #endif /* __WILOCITY_WMI_H__ */ 1368