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 { 289*74997a53SLior David WMI_ACTIVE_SCAN = 0, 2902be7d22fSVladimir Kondratiev WMI_SHORT_SCAN = 1, 291b8023177SVladimir Kondratiev WMI_PBC_SCAN = 2, 2928c679675SVladimir Kondratiev WMI_DIRECT_SCAN = 3, 293*74997a53SLior David WMI_LONG_SCAN = 4, 2942be7d22fSVladimir Kondratiev }; 2952be7d22fSVladimir Kondratiev 2962be7d22fSVladimir Kondratiev struct wmi_start_scan_cmd { 2976c2faf09SVladimir Kondratiev u8 direct_scan_mac_addr[6]; 298*74997a53SLior David u8 discovery_mode; 299*74997a53SLior David u8 reserved; 3002be7d22fSVladimir Kondratiev __le32 home_dwell_time; /* Max duration in the home channel(ms) */ 3012be7d22fSVladimir Kondratiev __le32 force_scan_interval; /* Time interval between scans (ms)*/ 3022be7d22fSVladimir Kondratiev u8 scan_type; /* wmi_scan_type */ 3032be7d22fSVladimir Kondratiev u8 num_channels; /* how many channels follow */ 3042be7d22fSVladimir Kondratiev struct { 3052be7d22fSVladimir Kondratiev u8 channel; 3062be7d22fSVladimir Kondratiev u8 reserved; 3072be7d22fSVladimir Kondratiev } channel_list[0]; /* channels ID's */ 3082be7d22fSVladimir Kondratiev /* 0 - 58320 MHz */ 3092be7d22fSVladimir Kondratiev /* 1 - 60480 MHz */ 3102be7d22fSVladimir Kondratiev /* 2 - 62640 MHz */ 3112be7d22fSVladimir Kondratiev } __packed; 3122be7d22fSVladimir Kondratiev 3132be7d22fSVladimir Kondratiev /* 3142be7d22fSVladimir Kondratiev * WMI_SET_PROBED_SSID_CMDID 3152be7d22fSVladimir Kondratiev */ 316b8023177SVladimir Kondratiev #define MAX_PROBED_SSID_INDEX (3) 3172be7d22fSVladimir Kondratiev 3182be7d22fSVladimir Kondratiev enum wmi_ssid_flag { 3192be7d22fSVladimir Kondratiev WMI_SSID_FLAG_DISABLE = 0, /* disables entry */ 3202be7d22fSVladimir Kondratiev WMI_SSID_FLAG_SPECIFIC = 1, /* probes specified ssid */ 3212be7d22fSVladimir Kondratiev WMI_SSID_FLAG_ANY = 2, /* probes for any ssid */ 3222be7d22fSVladimir Kondratiev }; 3232be7d22fSVladimir Kondratiev 3242be7d22fSVladimir Kondratiev struct wmi_probed_ssid_cmd { 3252be7d22fSVladimir Kondratiev u8 entry_index; /* 0 to MAX_PROBED_SSID_INDEX */ 3262be7d22fSVladimir Kondratiev u8 flag; /* enum wmi_ssid_flag */ 3272be7d22fSVladimir Kondratiev u8 ssid_len; 3282be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 3292be7d22fSVladimir Kondratiev } __packed; 3302be7d22fSVladimir Kondratiev 3312be7d22fSVladimir Kondratiev /* 3322be7d22fSVladimir Kondratiev * WMI_SET_APPIE_CMDID 3332be7d22fSVladimir Kondratiev * Add Application specified IE to a management frame 3342be7d22fSVladimir Kondratiev */ 335b8023177SVladimir Kondratiev #define WMI_MAX_IE_LEN (1024) 336b8023177SVladimir Kondratiev 337b8023177SVladimir Kondratiev /* 338b8023177SVladimir Kondratiev * Frame Types 339b8023177SVladimir Kondratiev */ 340b8023177SVladimir Kondratiev enum wmi_mgmt_frame_type { 341b8023177SVladimir Kondratiev WMI_FRAME_BEACON = 0, 342b8023177SVladimir Kondratiev WMI_FRAME_PROBE_REQ = 1, 343b8023177SVladimir Kondratiev WMI_FRAME_PROBE_RESP = 2, 344b8023177SVladimir Kondratiev WMI_FRAME_ASSOC_REQ = 3, 345b8023177SVladimir Kondratiev WMI_FRAME_ASSOC_RESP = 4, 346b8023177SVladimir Kondratiev WMI_NUM_MGMT_FRAME, 347b8023177SVladimir Kondratiev }; 348b8023177SVladimir Kondratiev 3492be7d22fSVladimir Kondratiev struct wmi_set_appie_cmd { 3502be7d22fSVladimir Kondratiev u8 mgmt_frm_type; /* enum wmi_mgmt_frame_type */ 3512be7d22fSVladimir Kondratiev u8 reserved; 3522be7d22fSVladimir Kondratiev __le16 ie_len; /* Length of the IE to be added to MGMT frame */ 3532be7d22fSVladimir Kondratiev u8 ie_info[0]; 3542be7d22fSVladimir Kondratiev } __packed; 3552be7d22fSVladimir Kondratiev 356b8023177SVladimir Kondratiev /* 357b8023177SVladimir Kondratiev * WMI_PXMT_RANGE_CFG_CMDID 358b8023177SVladimir Kondratiev */ 3592be7d22fSVladimir Kondratiev struct wmi_pxmt_range_cfg_cmd { 3602be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 3612be7d22fSVladimir Kondratiev __le16 range; 3622be7d22fSVladimir Kondratiev } __packed; 3632be7d22fSVladimir Kondratiev 364b8023177SVladimir Kondratiev /* 365b8023177SVladimir Kondratiev * WMI_PXMT_SNR2_RANGE_CFG_CMDID 366b8023177SVladimir Kondratiev */ 3672be7d22fSVladimir Kondratiev struct wmi_pxmt_snr2_range_cfg_cmd { 3682be7d22fSVladimir Kondratiev s8 snr2range_arr[WMI_PROX_RANGE_NUM-1]; 3692be7d22fSVladimir Kondratiev } __packed; 3702be7d22fSVladimir Kondratiev 3712be7d22fSVladimir Kondratiev /* 3722be7d22fSVladimir Kondratiev * WMI_RF_MGMT_CMDID 3732be7d22fSVladimir Kondratiev */ 3742be7d22fSVladimir Kondratiev enum wmi_rf_mgmt_type { 3752be7d22fSVladimir Kondratiev WMI_RF_MGMT_W_DISABLE = 0, 3762be7d22fSVladimir Kondratiev WMI_RF_MGMT_W_ENABLE = 1, 3772be7d22fSVladimir Kondratiev WMI_RF_MGMT_GET_STATUS = 2, 3782be7d22fSVladimir Kondratiev }; 3792be7d22fSVladimir Kondratiev 3802be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_cmd { 3812be7d22fSVladimir Kondratiev __le32 rf_mgmt_type; 3822be7d22fSVladimir Kondratiev } __packed; 3832be7d22fSVladimir Kondratiev 384b8023177SVladimir Kondratiev /* 3858c679675SVladimir Kondratiev * WMI_THERMAL_THROTTLING_CTRL_CMDID 3868c679675SVladimir Kondratiev */ 3878c679675SVladimir Kondratiev #define THERMAL_THROTTLING_USE_DEFAULT_MAX_TXOP_LENGTH (0xFFFFFFFF) 3888c679675SVladimir Kondratiev 3898c679675SVladimir Kondratiev struct wmi_thermal_throttling_ctrl_cmd { 3908c679675SVladimir Kondratiev __le32 time_on_usec; 3918c679675SVladimir Kondratiev __le32 time_off_usec; 3928c679675SVladimir Kondratiev __le32 max_txop_length_usec; 3938c679675SVladimir Kondratiev } __packed; 3948c679675SVladimir Kondratiev 3958c679675SVladimir Kondratiev /* 396b8023177SVladimir Kondratiev * WMI_RF_RX_TEST_CMDID 397b8023177SVladimir Kondratiev */ 398b8023177SVladimir Kondratiev struct wmi_rf_rx_test_cmd { 399b8023177SVladimir Kondratiev __le32 sector; 400b8023177SVladimir Kondratiev } __packed; 401b8023177SVladimir Kondratiev 402b8023177SVladimir Kondratiev /* 403b8023177SVladimir Kondratiev * WMI_CORR_MEASURE_CMDID 404b8023177SVladimir Kondratiev */ 405b8023177SVladimir Kondratiev struct wmi_corr_measure_cmd { 406b8023177SVladimir Kondratiev s32 freq_mhz; 407b8023177SVladimir Kondratiev __le32 length_samples; 408b8023177SVladimir Kondratiev __le32 iterations; 409b8023177SVladimir Kondratiev } __packed; 410b8023177SVladimir Kondratiev 4112be7d22fSVladimir Kondratiev /* 4122be7d22fSVladimir Kondratiev * WMI_SET_SSID_CMDID 4132be7d22fSVladimir Kondratiev */ 4142be7d22fSVladimir Kondratiev struct wmi_set_ssid_cmd { 4152be7d22fSVladimir Kondratiev __le32 ssid_len; 4162be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 4172be7d22fSVladimir Kondratiev } __packed; 4182be7d22fSVladimir Kondratiev 4192be7d22fSVladimir Kondratiev /* 4202be7d22fSVladimir Kondratiev * WMI_SET_PCP_CHANNEL_CMDID 4212be7d22fSVladimir Kondratiev */ 4222be7d22fSVladimir Kondratiev struct wmi_set_pcp_channel_cmd { 4232be7d22fSVladimir Kondratiev u8 channel; 4242be7d22fSVladimir Kondratiev u8 reserved[3]; 4252be7d22fSVladimir Kondratiev } __packed; 4262be7d22fSVladimir Kondratiev 4272be7d22fSVladimir Kondratiev /* 4282be7d22fSVladimir Kondratiev * WMI_BCON_CTRL_CMDID 4292be7d22fSVladimir Kondratiev */ 4302be7d22fSVladimir Kondratiev struct wmi_bcon_ctrl_cmd { 4312be7d22fSVladimir Kondratiev __le16 bcon_interval; 4322be7d22fSVladimir Kondratiev __le16 frag_num; 4332be7d22fSVladimir Kondratiev __le64 ss_mask; 4342be7d22fSVladimir Kondratiev u8 network_type; 4356c2faf09SVladimir Kondratiev u8 pcp_max_assoc_sta; 4362be7d22fSVladimir Kondratiev u8 disable_sec_offload; 4372be7d22fSVladimir Kondratiev u8 disable_sec; 4382be7d22fSVladimir Kondratiev } __packed; 4392be7d22fSVladimir Kondratiev 440b8023177SVladimir Kondratiev /******* P2P ***********/ 441b8023177SVladimir Kondratiev 442b8023177SVladimir Kondratiev /* 443b8023177SVladimir Kondratiev * WMI_PORT_ALLOCATE_CMDID 444b8023177SVladimir Kondratiev */ 445b8023177SVladimir Kondratiev enum wmi_port_role { 446b8023177SVladimir Kondratiev WMI_PORT_STA = 0, 447b8023177SVladimir Kondratiev WMI_PORT_PCP = 1, 448b8023177SVladimir Kondratiev WMI_PORT_AP = 2, 449b8023177SVladimir Kondratiev WMI_PORT_P2P_DEV = 3, 450b8023177SVladimir Kondratiev WMI_PORT_P2P_CLIENT = 4, 451b8023177SVladimir Kondratiev WMI_PORT_P2P_GO = 5, 452b8023177SVladimir Kondratiev }; 453b8023177SVladimir Kondratiev 454b8023177SVladimir Kondratiev struct wmi_port_allocate_cmd { 455b8023177SVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 456b8023177SVladimir Kondratiev u8 port_role; 4576c2faf09SVladimir Kondratiev u8 mid; 458b8023177SVladimir Kondratiev } __packed; 459b8023177SVladimir Kondratiev 460b8023177SVladimir Kondratiev /* 461b8023177SVladimir Kondratiev * WMI_PORT_DELETE_CMDID 462b8023177SVladimir Kondratiev */ 463b8023177SVladimir Kondratiev struct wmi_delete_port_cmd { 464b8023177SVladimir Kondratiev u8 mid; 465b8023177SVladimir Kondratiev u8 reserved[3]; 466b8023177SVladimir Kondratiev } __packed; 467b8023177SVladimir Kondratiev 468b8023177SVladimir Kondratiev /* 469b8023177SVladimir Kondratiev * WMI_P2P_CFG_CMDID 470b8023177SVladimir Kondratiev */ 471b8023177SVladimir Kondratiev enum wmi_discovery_mode { 472b8023177SVladimir Kondratiev WMI_DISCOVERY_MODE_NON_OFFLOAD = 0, 473b8023177SVladimir Kondratiev WMI_DISCOVERY_MODE_OFFLOAD = 1, 4746c2faf09SVladimir Kondratiev WMI_DISCOVERY_MODE_PEER2PEER = 2, 475b8023177SVladimir Kondratiev }; 476b8023177SVladimir Kondratiev 477b8023177SVladimir Kondratiev struct wmi_p2p_cfg_cmd { 478b8023177SVladimir Kondratiev u8 discovery_mode; /* wmi_discovery_mode */ 479b8023177SVladimir Kondratiev u8 channel; 480b8023177SVladimir Kondratiev __le16 bcon_interval; /* base to listen/search duration calculation */ 481b8023177SVladimir Kondratiev } __packed; 482b8023177SVladimir Kondratiev 483b8023177SVladimir Kondratiev /* 484b8023177SVladimir Kondratiev * WMI_POWER_MGMT_CFG_CMDID 485b8023177SVladimir Kondratiev */ 486b8023177SVladimir Kondratiev enum wmi_power_source_type { 487b8023177SVladimir Kondratiev WMI_POWER_SOURCE_BATTERY = 0, 488b8023177SVladimir Kondratiev WMI_POWER_SOURCE_OTHER = 1, 489b8023177SVladimir Kondratiev }; 490b8023177SVladimir Kondratiev 491b8023177SVladimir Kondratiev struct wmi_power_mgmt_cfg_cmd { 492b8023177SVladimir Kondratiev u8 power_source; /* wmi_power_source_type */ 493b8023177SVladimir Kondratiev u8 reserved[3]; 494b8023177SVladimir Kondratiev } __packed; 495b8023177SVladimir Kondratiev 496b8023177SVladimir Kondratiev /* 497b8023177SVladimir Kondratiev * WMI_PCP_START_CMDID 498b8023177SVladimir Kondratiev */ 4998e52fe30SHamad Kadmany 5008e52fe30SHamad Kadmany enum wmi_hidden_ssid { 5018e52fe30SHamad Kadmany WMI_HIDDEN_SSID_DISABLED = 0, 5028e52fe30SHamad Kadmany WMI_HIDDEN_SSID_SEND_EMPTY = 1, 5038e52fe30SHamad Kadmany WMI_HIDDEN_SSID_CLEAR = 2, 5048e52fe30SHamad Kadmany }; 5058e52fe30SHamad Kadmany 506b8023177SVladimir Kondratiev struct wmi_pcp_start_cmd { 507b8023177SVladimir Kondratiev __le16 bcon_interval; 5086c2faf09SVladimir Kondratiev u8 pcp_max_assoc_sta; 5098e52fe30SHamad Kadmany u8 hidden_ssid; 5108e52fe30SHamad Kadmany u8 reserved0[8]; 511b8023177SVladimir Kondratiev u8 network_type; 512b8023177SVladimir Kondratiev u8 channel; 513b8023177SVladimir Kondratiev u8 disable_sec_offload; 514b8023177SVladimir Kondratiev u8 disable_sec; 515b8023177SVladimir Kondratiev } __packed; 516b8023177SVladimir Kondratiev 5172be7d22fSVladimir Kondratiev /* 5182be7d22fSVladimir Kondratiev * WMI_SW_TX_REQ_CMDID 5192be7d22fSVladimir Kondratiev */ 5202be7d22fSVladimir Kondratiev struct wmi_sw_tx_req_cmd { 5212be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 5222be7d22fSVladimir Kondratiev __le16 len; 5232be7d22fSVladimir Kondratiev u8 payload[0]; 5242be7d22fSVladimir Kondratiev } __packed; 5252be7d22fSVladimir Kondratiev 5262be7d22fSVladimir Kondratiev /* 5272be7d22fSVladimir Kondratiev * WMI_VRING_CFG_CMDID 5282be7d22fSVladimir Kondratiev */ 5292be7d22fSVladimir Kondratiev 5302be7d22fSVladimir Kondratiev struct wmi_sw_ring_cfg { 5312be7d22fSVladimir Kondratiev __le64 ring_mem_base; 5322be7d22fSVladimir Kondratiev __le16 ring_size; 5332be7d22fSVladimir Kondratiev __le16 max_mpdu_size; 5342be7d22fSVladimir Kondratiev } __packed; 5352be7d22fSVladimir Kondratiev 5362be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd { 5372be7d22fSVladimir Kondratiev __le16 priority; 5382be7d22fSVladimir Kondratiev __le16 timeslot_us; 5392be7d22fSVladimir Kondratiev } __packed; 5402be7d22fSVladimir Kondratiev 5412be7d22fSVladimir Kondratiev enum wmi_vring_cfg_encap_trans_type { 5422be7d22fSVladimir Kondratiev WMI_VRING_ENC_TYPE_802_3 = 0, 5432be7d22fSVladimir Kondratiev WMI_VRING_ENC_TYPE_NATIVE_WIFI = 1, 5442be7d22fSVladimir Kondratiev }; 5452be7d22fSVladimir Kondratiev 5462be7d22fSVladimir Kondratiev enum wmi_vring_cfg_ds_cfg { 5472be7d22fSVladimir Kondratiev WMI_VRING_DS_PBSS = 0, 5482be7d22fSVladimir Kondratiev WMI_VRING_DS_STATION = 1, 5492be7d22fSVladimir Kondratiev WMI_VRING_DS_AP = 2, 5502be7d22fSVladimir Kondratiev WMI_VRING_DS_ADDR4 = 3, 5512be7d22fSVladimir Kondratiev }; 5522be7d22fSVladimir Kondratiev 5532be7d22fSVladimir Kondratiev enum wmi_vring_cfg_nwifi_ds_trans_type { 5542be7d22fSVladimir Kondratiev WMI_NWIFI_TX_TRANS_MODE_NO = 0, 5552be7d22fSVladimir Kondratiev WMI_NWIFI_TX_TRANS_MODE_AP2PBSS = 1, 5562be7d22fSVladimir Kondratiev WMI_NWIFI_TX_TRANS_MODE_STA2PBSS = 2, 5572be7d22fSVladimir Kondratiev }; 5582be7d22fSVladimir Kondratiev 5592be7d22fSVladimir Kondratiev enum wmi_vring_cfg_schd_params_priority { 5602be7d22fSVladimir Kondratiev WMI_SCH_PRIO_REGULAR = 0, 5612be7d22fSVladimir Kondratiev WMI_SCH_PRIO_HIGH = 1, 5622be7d22fSVladimir Kondratiev }; 5632be7d22fSVladimir Kondratiev 5642be7d22fSVladimir Kondratiev #define CIDXTID_CID_POS (0) 5652be7d22fSVladimir Kondratiev #define CIDXTID_CID_LEN (4) 5662be7d22fSVladimir Kondratiev #define CIDXTID_CID_MSK (0xF) 5672be7d22fSVladimir Kondratiev #define CIDXTID_TID_POS (4) 5682be7d22fSVladimir Kondratiev #define CIDXTID_TID_LEN (4) 5692be7d22fSVladimir Kondratiev #define CIDXTID_TID_MSK (0xF0) 570b8023177SVladimir Kondratiev 571b8023177SVladimir Kondratiev struct wmi_vring_cfg { 572b8023177SVladimir Kondratiev struct wmi_sw_ring_cfg tx_sw_ring; 573b8023177SVladimir Kondratiev u8 ringid; /* 0-23 vrings */ 574b8023177SVladimir Kondratiev 5752be7d22fSVladimir Kondratiev u8 cidxtid; 5762be7d22fSVladimir Kondratiev 5772be7d22fSVladimir Kondratiev u8 encap_trans_type; 5782be7d22fSVladimir Kondratiev u8 ds_cfg; /* 802.3 DS cfg */ 5792be7d22fSVladimir Kondratiev u8 nwifi_ds_trans_type; 5802be7d22fSVladimir Kondratiev 5812be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_POS (0) 5822be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_LEN (1) 5832be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_MSK (0x1) 5842be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_POS (1) 5852be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_LEN (1) 5862be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_MSK (0x2) 5872be7d22fSVladimir Kondratiev u8 mac_ctrl; 5882be7d22fSVladimir Kondratiev 5892be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_POS (0) 5902be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_LEN (6) 5912be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_MSK (0x3F) 5922be7d22fSVladimir Kondratiev u8 to_resolution; 5932be7d22fSVladimir Kondratiev u8 agg_max_wsize; 5942be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd schd_params; 5952be7d22fSVladimir Kondratiev } __packed; 5962be7d22fSVladimir Kondratiev 5972be7d22fSVladimir Kondratiev enum wmi_vring_cfg_cmd_action { 5982be7d22fSVladimir Kondratiev WMI_VRING_CMD_ADD = 0, 5992be7d22fSVladimir Kondratiev WMI_VRING_CMD_MODIFY = 1, 6002be7d22fSVladimir Kondratiev WMI_VRING_CMD_DELETE = 2, 6012be7d22fSVladimir Kondratiev }; 6022be7d22fSVladimir Kondratiev 6032be7d22fSVladimir Kondratiev struct wmi_vring_cfg_cmd { 6042be7d22fSVladimir Kondratiev __le32 action; 6052be7d22fSVladimir Kondratiev struct wmi_vring_cfg vring_cfg; 6062be7d22fSVladimir Kondratiev } __packed; 6072be7d22fSVladimir Kondratiev 6082be7d22fSVladimir Kondratiev /* 60962bfd300SVladimir Kondratiev * WMI_BCAST_VRING_CFG_CMDID 61062bfd300SVladimir Kondratiev */ 61162bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg { 61262bfd300SVladimir Kondratiev struct wmi_sw_ring_cfg tx_sw_ring; 61362bfd300SVladimir Kondratiev u8 ringid; /* 0-23 vrings */ 61462bfd300SVladimir Kondratiev u8 encap_trans_type; 61562bfd300SVladimir Kondratiev u8 ds_cfg; /* 802.3 DS cfg */ 61662bfd300SVladimir Kondratiev u8 nwifi_ds_trans_type; 61762bfd300SVladimir Kondratiev } __packed; 61862bfd300SVladimir Kondratiev 61962bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg_cmd { 62062bfd300SVladimir Kondratiev __le32 action; 62162bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg vring_cfg; 62262bfd300SVladimir Kondratiev } __packed; 62362bfd300SVladimir Kondratiev 62462bfd300SVladimir Kondratiev /* 6252be7d22fSVladimir Kondratiev * WMI_VRING_BA_EN_CMDID 6262be7d22fSVladimir Kondratiev */ 6272be7d22fSVladimir Kondratiev struct wmi_vring_ba_en_cmd { 6282be7d22fSVladimir Kondratiev u8 ringid; 6292be7d22fSVladimir Kondratiev u8 agg_max_wsize; 6302be7d22fSVladimir Kondratiev __le16 ba_timeout; 631cbcf5866SVladimir Kondratiev u8 amsdu; 6322be7d22fSVladimir Kondratiev } __packed; 6332be7d22fSVladimir Kondratiev 6342be7d22fSVladimir Kondratiev /* 6352be7d22fSVladimir Kondratiev * WMI_VRING_BA_DIS_CMDID 6362be7d22fSVladimir Kondratiev */ 6372be7d22fSVladimir Kondratiev struct wmi_vring_ba_dis_cmd { 6382be7d22fSVladimir Kondratiev u8 ringid; 6392be7d22fSVladimir Kondratiev u8 reserved; 6402be7d22fSVladimir Kondratiev __le16 reason; 6412be7d22fSVladimir Kondratiev } __packed; 6422be7d22fSVladimir Kondratiev 6432be7d22fSVladimir Kondratiev /* 6442be7d22fSVladimir Kondratiev * WMI_NOTIFY_REQ_CMDID 6452be7d22fSVladimir Kondratiev */ 6462be7d22fSVladimir Kondratiev struct wmi_notify_req_cmd { 6472be7d22fSVladimir Kondratiev u8 cid; 648b8023177SVladimir Kondratiev u8 year; 649b8023177SVladimir Kondratiev u8 month; 650b8023177SVladimir Kondratiev u8 day; 6512be7d22fSVladimir Kondratiev __le32 interval_usec; 652b8023177SVladimir Kondratiev u8 hour; 653b8023177SVladimir Kondratiev u8 minute; 654b8023177SVladimir Kondratiev u8 second; 655b8023177SVladimir Kondratiev u8 miliseconds; 6562be7d22fSVladimir Kondratiev } __packed; 6572be7d22fSVladimir Kondratiev 6582be7d22fSVladimir Kondratiev /* 6592be7d22fSVladimir Kondratiev * WMI_CFG_RX_CHAIN_CMDID 6602be7d22fSVladimir Kondratiev */ 6612be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_mode { 6622be7d22fSVladimir Kondratiev WMI_SNIFFER_OFF = 0, 6632be7d22fSVladimir Kondratiev WMI_SNIFFER_ON = 1, 6642be7d22fSVladimir Kondratiev }; 6652be7d22fSVladimir Kondratiev 6662be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_info_mode { 6672be7d22fSVladimir Kondratiev WMI_SNIFFER_PHY_INFO_DISABLED = 0, 6682be7d22fSVladimir Kondratiev WMI_SNIFFER_PHY_INFO_ENABLED = 1, 6692be7d22fSVladimir Kondratiev }; 6702be7d22fSVladimir Kondratiev 6712be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_support { 6722be7d22fSVladimir Kondratiev WMI_SNIFFER_CP = 0, 6732be7d22fSVladimir Kondratiev WMI_SNIFFER_DP = 1, 6742be7d22fSVladimir Kondratiev WMI_SNIFFER_BOTH_PHYS = 2, 6752be7d22fSVladimir Kondratiev }; 6762be7d22fSVladimir Kondratiev 6772be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg { 6782be7d22fSVladimir Kondratiev __le32 mode; /* enum wmi_sniffer_cfg_mode */ 6792be7d22fSVladimir Kondratiev __le32 phy_info_mode; /* enum wmi_sniffer_cfg_phy_info_mode */ 6802be7d22fSVladimir Kondratiev __le32 phy_support; /* enum wmi_sniffer_cfg_phy_support */ 6812be7d22fSVladimir Kondratiev u8 channel; 6822be7d22fSVladimir Kondratiev u8 reserved[3]; 6832be7d22fSVladimir Kondratiev } __packed; 6842be7d22fSVladimir Kondratiev 6852be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_action { 6862be7d22fSVladimir Kondratiev WMI_RX_CHAIN_ADD = 0, 6872be7d22fSVladimir Kondratiev WMI_RX_CHAIN_DEL = 1, 6882be7d22fSVladimir Kondratiev }; 6892be7d22fSVladimir Kondratiev 6902be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_decap_trans_type { 6912be7d22fSVladimir Kondratiev WMI_DECAP_TYPE_802_3 = 0, 6922be7d22fSVladimir Kondratiev WMI_DECAP_TYPE_NATIVE_WIFI = 1, 6938c679675SVladimir Kondratiev WMI_DECAP_TYPE_NONE = 2, 6942be7d22fSVladimir Kondratiev }; 6952be7d22fSVladimir Kondratiev 6962be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_nwifi_ds_trans_type { 6972be7d22fSVladimir Kondratiev WMI_NWIFI_RX_TRANS_MODE_NO = 0, 6982be7d22fSVladimir Kondratiev WMI_NWIFI_RX_TRANS_MODE_PBSS2AP = 1, 6992be7d22fSVladimir Kondratiev WMI_NWIFI_RX_TRANS_MODE_PBSS2STA = 2, 7002be7d22fSVladimir Kondratiev }; 7012be7d22fSVladimir Kondratiev 702b8023177SVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_reorder_type { 703b8023177SVladimir Kondratiev WMI_RX_HW_REORDER = 0, 704b8023177SVladimir Kondratiev WMI_RX_SW_REORDER = 1, 705b8023177SVladimir Kondratiev }; 706b8023177SVladimir Kondratiev 7072be7d22fSVladimir Kondratiev struct wmi_cfg_rx_chain_cmd { 7082be7d22fSVladimir Kondratiev __le32 action; 7092be7d22fSVladimir Kondratiev struct wmi_sw_ring_cfg rx_sw_ring; 7102be7d22fSVladimir Kondratiev u8 mid; 7112be7d22fSVladimir Kondratiev u8 decap_trans_type; 7122be7d22fSVladimir Kondratiev 7132be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_POS (0) 7142be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_LEN (1) 7152be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_MSK (0x1) 716c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_POS (1) 717c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_LEN (1) 718c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_MSK (0x2) 7192be7d22fSVladimir Kondratiev u8 l2_802_3_offload_ctrl; 7202be7d22fSVladimir Kondratiev 7212be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_POS (0) 7222be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_LEN (1) 7232be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_MSK (0x1) 7242be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_POS (1) 7252be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_LEN (1) 7262be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_MSK (0x2) 7272be7d22fSVladimir Kondratiev u8 l2_nwifi_offload_ctrl; 7282be7d22fSVladimir Kondratiev 7292be7d22fSVladimir Kondratiev u8 vlan_id; 7302be7d22fSVladimir Kondratiev u8 nwifi_ds_trans_type; 7312be7d22fSVladimir Kondratiev 7322be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_POS (0) 7332be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_LEN (1) 7342be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_MSK (0x1) 7352be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_POS (1) 7362be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_LEN (1) 7372be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_MSK (0x2) 7382be7d22fSVladimir Kondratiev u8 l3_l4_ctrl; 7392be7d22fSVladimir Kondratiev 7402be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_POS (0) 7412be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_LEN (1) 7422be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_MSK (0x1) 7432be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_POS (1) 7442be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_LEN (1) 7452be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_MSK (0x2) 7462be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_POS (2) 7472be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_LEN (1) 7482be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_MSK (0x4) 7492be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_POS (3) 7502be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_LEN (1) 7512be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_MSK (0x8) 7522be7d22fSVladimir Kondratiev u8 ring_ctrl; 7532be7d22fSVladimir Kondratiev 7542be7d22fSVladimir Kondratiev __le16 prefetch_thrsh; 7552be7d22fSVladimir Kondratiev __le16 wb_thrsh; 7562be7d22fSVladimir Kondratiev __le32 itr_value; 7572be7d22fSVladimir Kondratiev __le16 host_thrsh; 758b8023177SVladimir Kondratiev u8 reorder_type; 759b8023177SVladimir Kondratiev u8 reserved; 7602be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg sniffer_cfg; 7612be7d22fSVladimir Kondratiev } __packed; 7622be7d22fSVladimir Kondratiev 7632be7d22fSVladimir Kondratiev /* 7642be7d22fSVladimir Kondratiev * WMI_RCP_ADDBA_RESP_CMDID 7652be7d22fSVladimir Kondratiev */ 7662be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_cmd { 7672be7d22fSVladimir Kondratiev u8 cidxtid; 7682be7d22fSVladimir Kondratiev u8 dialog_token; 7692be7d22fSVladimir Kondratiev __le16 status_code; 7702be7d22fSVladimir Kondratiev __le16 ba_param_set; /* ieee80211_ba_parameterset field to send */ 7712be7d22fSVladimir Kondratiev __le16 ba_timeout; 7722be7d22fSVladimir Kondratiev } __packed; 7732be7d22fSVladimir Kondratiev 7742be7d22fSVladimir Kondratiev /* 7752be7d22fSVladimir Kondratiev * WMI_RCP_DELBA_CMDID 7762be7d22fSVladimir Kondratiev */ 7772be7d22fSVladimir Kondratiev struct wmi_rcp_delba_cmd { 7782be7d22fSVladimir Kondratiev u8 cidxtid; 7792be7d22fSVladimir Kondratiev u8 reserved; 7802be7d22fSVladimir Kondratiev __le16 reason; 7812be7d22fSVladimir Kondratiev } __packed; 7822be7d22fSVladimir Kondratiev 7832be7d22fSVladimir Kondratiev /* 7842be7d22fSVladimir Kondratiev * WMI_RCP_ADDBA_REQ_CMDID 7852be7d22fSVladimir Kondratiev */ 7862be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_cmd { 7872be7d22fSVladimir Kondratiev u8 cidxtid; 7882be7d22fSVladimir Kondratiev u8 dialog_token; 7892be7d22fSVladimir Kondratiev /* ieee80211_ba_parameterset field as it received */ 7902be7d22fSVladimir Kondratiev __le16 ba_param_set; 7912be7d22fSVladimir Kondratiev __le16 ba_timeout; 7922be7d22fSVladimir Kondratiev /* ieee80211_ba_seqstrl field as it received */ 7932be7d22fSVladimir Kondratiev __le16 ba_seq_ctrl; 7942be7d22fSVladimir Kondratiev } __packed; 7952be7d22fSVladimir Kondratiev 7962be7d22fSVladimir Kondratiev /* 7972be7d22fSVladimir Kondratiev * WMI_SET_MAC_ADDRESS_CMDID 7982be7d22fSVladimir Kondratiev */ 7992be7d22fSVladimir Kondratiev struct wmi_set_mac_address_cmd { 8002be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 8012be7d22fSVladimir Kondratiev u8 reserved[2]; 8022be7d22fSVladimir Kondratiev } __packed; 8032be7d22fSVladimir Kondratiev 8042be7d22fSVladimir Kondratiev /* 8052be7d22fSVladimir Kondratiev * WMI_EAPOL_TX_CMDID 8062be7d22fSVladimir Kondratiev */ 8072be7d22fSVladimir Kondratiev struct wmi_eapol_tx_cmd { 8082be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 8092be7d22fSVladimir Kondratiev __le16 eapol_len; 8102be7d22fSVladimir Kondratiev u8 eapol[0]; 8112be7d22fSVladimir Kondratiev } __packed; 8122be7d22fSVladimir Kondratiev 8132be7d22fSVladimir Kondratiev /* 8142be7d22fSVladimir Kondratiev * WMI_ECHO_CMDID 8152be7d22fSVladimir Kondratiev * 8162be7d22fSVladimir Kondratiev * Check FW is alive 8172be7d22fSVladimir Kondratiev * 8182be7d22fSVladimir Kondratiev * WMI_DEEP_ECHO_CMDID 8192be7d22fSVladimir Kondratiev * 8202be7d22fSVladimir Kondratiev * Check FW and ucode are alive 8212be7d22fSVladimir Kondratiev * 8222be7d22fSVladimir Kondratiev * Returned event: WMI_ECHO_RSP_EVENTID 8232be7d22fSVladimir Kondratiev * same event for both commands 8242be7d22fSVladimir Kondratiev */ 8252be7d22fSVladimir Kondratiev struct wmi_echo_cmd { 8262be7d22fSVladimir Kondratiev __le32 value; 8272be7d22fSVladimir Kondratiev } __packed; 8282be7d22fSVladimir Kondratiev 8292be7d22fSVladimir Kondratiev /* 830b8023177SVladimir Kondratiev * WMI_TEMP_SENSE_CMDID 831b8023177SVladimir Kondratiev * 832b8023177SVladimir Kondratiev * Measure MAC and radio temperatures 833b8023177SVladimir Kondratiev */ 8348c679675SVladimir Kondratiev 8358c679675SVladimir Kondratiev /* Possible modes for temperature measurement */ 8368c679675SVladimir Kondratiev enum wmi_temperature_measure_mode { 8378c679675SVladimir Kondratiev TEMPERATURE_USE_OLD_VALUE = 0x1, 8388c679675SVladimir Kondratiev TEMPERATURE_MEASURE_NOW = 0x2, 8398c679675SVladimir Kondratiev }; 8408c679675SVladimir Kondratiev 841b8023177SVladimir Kondratiev struct wmi_temp_sense_cmd { 8428c679675SVladimir Kondratiev __le32 measure_baseband_en; 8438c679675SVladimir Kondratiev __le32 measure_rf_en; 8448c679675SVladimir Kondratiev __le32 measure_mode; 845b8023177SVladimir Kondratiev } __packed; 846b8023177SVladimir Kondratiev 847b8023177SVladimir Kondratiev /* 848dc16427bSVladimir Kondratiev * WMI_PMC_CMDID 849dc16427bSVladimir Kondratiev */ 850dc16427bSVladimir Kondratiev enum wmi_pmc_op_e { 851dc16427bSVladimir Kondratiev WMI_PMC_ALLOCATE = 0, 852dc16427bSVladimir Kondratiev WMI_PMC_RELEASE = 1, 853dc16427bSVladimir Kondratiev }; 854dc16427bSVladimir Kondratiev 855dc16427bSVladimir Kondratiev struct wmi_pmc_cmd { 856dc16427bSVladimir Kondratiev u8 op; /* enum wmi_pmc_cmd_op_type */ 857dc16427bSVladimir Kondratiev u8 reserved; 858dc16427bSVladimir Kondratiev __le16 ring_size; 859dc16427bSVladimir Kondratiev __le64 mem_base; 860dc16427bSVladimir Kondratiev } __packed; 861dc16427bSVladimir Kondratiev 862dc16427bSVladimir Kondratiev /* 8632be7d22fSVladimir Kondratiev * WMI Events 8642be7d22fSVladimir Kondratiev */ 8652be7d22fSVladimir Kondratiev 8662be7d22fSVladimir Kondratiev /* 8672be7d22fSVladimir Kondratiev * List of Events (target to host) 8682be7d22fSVladimir Kondratiev */ 8692be7d22fSVladimir Kondratiev enum wmi_event_id { 8702be7d22fSVladimir Kondratiev WMI_READY_EVENTID = 0x1001, 8712be7d22fSVladimir Kondratiev WMI_CONNECT_EVENTID = 0x1002, 8722be7d22fSVladimir Kondratiev WMI_DISCONNECT_EVENTID = 0x1003, 8732be7d22fSVladimir Kondratiev WMI_SCAN_COMPLETE_EVENTID = 0x100a, 8742be7d22fSVladimir Kondratiev WMI_REPORT_STATISTICS_EVENTID = 0x100b, 8752be7d22fSVladimir Kondratiev WMI_RD_MEM_RSP_EVENTID = 0x1800, 8762be7d22fSVladimir Kondratiev WMI_FW_READY_EVENTID = 0x1801, 8772be7d22fSVladimir Kondratiev WMI_EXIT_FAST_MEM_ACC_MODE_EVENTID = 0x0200, 8782be7d22fSVladimir Kondratiev WMI_ECHO_RSP_EVENTID = 0x1803, 8792be7d22fSVladimir Kondratiev WMI_FS_TUNE_DONE_EVENTID = 0x180a, 880b8023177SVladimir Kondratiev WMI_CORR_MEASURE_EVENTID = 0x180b, 881b8023177SVladimir Kondratiev WMI_READ_RSSI_EVENTID = 0x180c, 8822be7d22fSVladimir Kondratiev WMI_TEMP_SENSE_DONE_EVENTID = 0x180e, 8832be7d22fSVladimir Kondratiev WMI_DC_CALIB_DONE_EVENTID = 0x180f, 8842be7d22fSVladimir Kondratiev WMI_IQ_TX_CALIB_DONE_EVENTID = 0x1811, 8852be7d22fSVladimir Kondratiev WMI_IQ_RX_CALIB_DONE_EVENTID = 0x1812, 8862be7d22fSVladimir Kondratiev WMI_SET_WORK_MODE_DONE_EVENTID = 0x1815, 8872be7d22fSVladimir Kondratiev WMI_LO_LEAKAGE_CALIB_DONE_EVENTID = 0x1816, 8882be7d22fSVladimir Kondratiev WMI_MARLON_R_READ_DONE_EVENTID = 0x1818, 8892be7d22fSVladimir Kondratiev WMI_MARLON_R_WRITE_DONE_EVENTID = 0x1819, 8902be7d22fSVladimir Kondratiev WMI_MARLON_R_TXRX_SEL_DONE_EVENTID = 0x181a, 8912be7d22fSVladimir Kondratiev WMI_SILENT_RSSI_CALIB_DONE_EVENTID = 0x181d, 892b8023177SVladimir Kondratiev WMI_RF_RX_TEST_DONE_EVENTID = 0x181e, 8932be7d22fSVladimir Kondratiev WMI_CFG_RX_CHAIN_DONE_EVENTID = 0x1820, 8942be7d22fSVladimir Kondratiev WMI_VRING_CFG_DONE_EVENTID = 0x1821, 8952be7d22fSVladimir Kondratiev WMI_BA_STATUS_EVENTID = 0x1823, 8962be7d22fSVladimir Kondratiev WMI_RCP_ADDBA_REQ_EVENTID = 0x1824, 897230d8442SVladimir Kondratiev WMI_RCP_ADDBA_RESP_SENT_EVENTID = 0x1825, 8982be7d22fSVladimir Kondratiev WMI_DELBA_EVENTID = 0x1826, 8992be7d22fSVladimir Kondratiev WMI_GET_SSID_EVENTID = 0x1828, 9002be7d22fSVladimir Kondratiev WMI_GET_PCP_CHANNEL_EVENTID = 0x182a, 9012be7d22fSVladimir Kondratiev WMI_SW_TX_COMPLETE_EVENTID = 0x182b, 9022be7d22fSVladimir Kondratiev 9032be7d22fSVladimir Kondratiev WMI_READ_MAC_RXQ_EVENTID = 0x1830, 9042be7d22fSVladimir Kondratiev WMI_READ_MAC_TXQ_EVENTID = 0x1831, 9052be7d22fSVladimir Kondratiev WMI_WRITE_MAC_RXQ_EVENTID = 0x1832, 9062be7d22fSVladimir Kondratiev WMI_WRITE_MAC_TXQ_EVENTID = 0x1833, 9072be7d22fSVladimir Kondratiev WMI_WRITE_MAC_XQ_FIELD_EVENTID = 0x1834, 9082be7d22fSVladimir Kondratiev 909230d8442SVladimir Kondratiev WMI_BEAMFORMING_MGMT_DONE_EVENTID = 0x1836, 9102be7d22fSVladimir Kondratiev WMI_BF_TXSS_MGMT_DONE_EVENTID = 0x1837, 9112be7d22fSVladimir Kondratiev WMI_BF_RXSS_MGMT_DONE_EVENTID = 0x1839, 9122be7d22fSVladimir Kondratiev WMI_RS_MGMT_DONE_EVENTID = 0x1852, 9132be7d22fSVladimir Kondratiev WMI_RF_MGMT_STATUS_EVENTID = 0x1853, 9148c679675SVladimir Kondratiev WMI_THERMAL_THROTTLING_STATUS_EVENTID = 0x1855, 9152be7d22fSVladimir Kondratiev WMI_BF_SM_MGMT_DONE_EVENTID = 0x1838, 9162be7d22fSVladimir Kondratiev WMI_RX_MGMT_PACKET_EVENTID = 0x1840, 9176c2faf09SVladimir Kondratiev WMI_TX_MGMT_PACKET_EVENTID = 0x1841, 9182be7d22fSVladimir Kondratiev 9192be7d22fSVladimir Kondratiev /* Performance monitoring events */ 9202be7d22fSVladimir Kondratiev WMI_DATA_PORT_OPEN_EVENTID = 0x1860, 921230d8442SVladimir Kondratiev WMI_WBE_LINK_DOWN_EVENTID = 0x1861, 9222be7d22fSVladimir Kondratiev 9232be7d22fSVladimir Kondratiev WMI_BF_CTRL_DONE_EVENTID = 0x1862, 9242be7d22fSVladimir Kondratiev WMI_NOTIFY_REQ_DONE_EVENTID = 0x1863, 9252be7d22fSVladimir Kondratiev WMI_GET_STATUS_DONE_EVENTID = 0x1864, 926230d8442SVladimir Kondratiev WMI_VRING_EN_EVENTID = 0x1865, 9272be7d22fSVladimir Kondratiev 9282be7d22fSVladimir Kondratiev WMI_UNIT_TEST_EVENTID = 0x1900, 9292be7d22fSVladimir Kondratiev WMI_FLASH_READ_DONE_EVENTID = 0x1902, 9302be7d22fSVladimir Kondratiev WMI_FLASH_WRITE_DONE_EVENTID = 0x1903, 931b8023177SVladimir Kondratiev /*P2P*/ 9328c679675SVladimir Kondratiev WMI_P2P_CFG_DONE_EVENTID = 0x1910, 933b8023177SVladimir Kondratiev WMI_PORT_ALLOCATED_EVENTID = 0x1911, 934b8023177SVladimir Kondratiev WMI_PORT_DELETED_EVENTID = 0x1912, 935b8023177SVladimir Kondratiev WMI_LISTEN_STARTED_EVENTID = 0x1914, 936b8023177SVladimir Kondratiev WMI_SEARCH_STARTED_EVENTID = 0x1915, 937b8023177SVladimir Kondratiev WMI_DISCOVERY_STARTED_EVENTID = 0x1916, 938b8023177SVladimir Kondratiev WMI_DISCOVERY_STOPPED_EVENTID = 0x1917, 939b8023177SVladimir Kondratiev WMI_PCP_STARTED_EVENTID = 0x1918, 940b8023177SVladimir Kondratiev WMI_PCP_STOPPED_EVENTID = 0x1919, 941b8023177SVladimir Kondratiev WMI_PCP_FACTOR_EVENTID = 0x191a, 9422be7d22fSVladimir Kondratiev WMI_SET_CHANNEL_EVENTID = 0x9000, 9432be7d22fSVladimir Kondratiev WMI_ASSOC_REQ_EVENTID = 0x9001, 9442be7d22fSVladimir Kondratiev WMI_EAPOL_RX_EVENTID = 0x9002, 9452be7d22fSVladimir Kondratiev WMI_MAC_ADDR_RESP_EVENTID = 0x9003, 9462be7d22fSVladimir Kondratiev WMI_FW_VER_EVENTID = 0x9004, 9472be7d22fSVladimir Kondratiev }; 9482be7d22fSVladimir Kondratiev 9492be7d22fSVladimir Kondratiev /* 9502be7d22fSVladimir Kondratiev * Events data structures 9512be7d22fSVladimir Kondratiev */ 9522be7d22fSVladimir Kondratiev 953b8023177SVladimir Kondratiev enum wmi_fw_status { 954b8023177SVladimir Kondratiev WMI_FW_STATUS_SUCCESS, 955b8023177SVladimir Kondratiev WMI_FW_STATUS_FAILURE, 956b8023177SVladimir Kondratiev }; 957b8023177SVladimir Kondratiev 9582be7d22fSVladimir Kondratiev /* 9592be7d22fSVladimir Kondratiev * WMI_RF_MGMT_STATUS_EVENTID 9602be7d22fSVladimir Kondratiev */ 9612be7d22fSVladimir Kondratiev enum wmi_rf_status { 9622be7d22fSVladimir Kondratiev WMI_RF_ENABLED = 0, 9632be7d22fSVladimir Kondratiev WMI_RF_DISABLED_HW = 1, 9642be7d22fSVladimir Kondratiev WMI_RF_DISABLED_SW = 2, 9652be7d22fSVladimir Kondratiev WMI_RF_DISABLED_HW_SW = 3, 9662be7d22fSVladimir Kondratiev }; 9672be7d22fSVladimir Kondratiev 9682be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_status_event { 9692be7d22fSVladimir Kondratiev __le32 rf_status; 9702be7d22fSVladimir Kondratiev } __packed; 9712be7d22fSVladimir Kondratiev 9722be7d22fSVladimir Kondratiev /* 9738c679675SVladimir Kondratiev * WMI_THERMAL_THROTTLING_STATUS_EVENTID 9748c679675SVladimir Kondratiev */ 9758c679675SVladimir Kondratiev struct wmi_thermal_throttling_status_event { 9768c679675SVladimir Kondratiev __le32 time_on_usec; 9778c679675SVladimir Kondratiev __le32 time_off_usec; 9788c679675SVladimir Kondratiev __le32 max_txop_length_usec; 9798c679675SVladimir Kondratiev } __packed; 9808c679675SVladimir Kondratiev 9818c679675SVladimir Kondratiev /* 9822be7d22fSVladimir Kondratiev * WMI_GET_STATUS_DONE_EVENTID 9832be7d22fSVladimir Kondratiev */ 9842be7d22fSVladimir Kondratiev struct wmi_get_status_done_event { 9852be7d22fSVladimir Kondratiev __le32 is_associated; 9862be7d22fSVladimir Kondratiev u8 cid; 9872be7d22fSVladimir Kondratiev u8 reserved0[3]; 9882be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 9892be7d22fSVladimir Kondratiev u8 channel; 9902be7d22fSVladimir Kondratiev u8 reserved1; 9912be7d22fSVladimir Kondratiev u8 network_type; 9922be7d22fSVladimir Kondratiev u8 reserved2[3]; 9932be7d22fSVladimir Kondratiev __le32 ssid_len; 9942be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 9952be7d22fSVladimir Kondratiev __le32 rf_status; 9962be7d22fSVladimir Kondratiev __le32 is_secured; 9972be7d22fSVladimir Kondratiev } __packed; 9982be7d22fSVladimir Kondratiev 9992be7d22fSVladimir Kondratiev /* 10002be7d22fSVladimir Kondratiev * WMI_FW_VER_EVENTID 10012be7d22fSVladimir Kondratiev */ 10022be7d22fSVladimir Kondratiev struct wmi_fw_ver_event { 10032be7d22fSVladimir Kondratiev u8 major; 10042be7d22fSVladimir Kondratiev u8 minor; 10052be7d22fSVladimir Kondratiev __le16 subminor; 10062be7d22fSVladimir Kondratiev __le16 build; 10072be7d22fSVladimir Kondratiev } __packed; 10082be7d22fSVladimir Kondratiev 10092be7d22fSVladimir Kondratiev /* 10102be7d22fSVladimir Kondratiev * WMI_MAC_ADDR_RESP_EVENTID 10112be7d22fSVladimir Kondratiev */ 10122be7d22fSVladimir Kondratiev struct wmi_mac_addr_resp_event { 10132be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 10142be7d22fSVladimir Kondratiev u8 auth_mode; 10152be7d22fSVladimir Kondratiev u8 crypt_mode; 10162be7d22fSVladimir Kondratiev __le32 offload_mode; 10172be7d22fSVladimir Kondratiev } __packed; 10182be7d22fSVladimir Kondratiev 10192be7d22fSVladimir Kondratiev /* 10202be7d22fSVladimir Kondratiev * WMI_EAPOL_RX_EVENTID 10212be7d22fSVladimir Kondratiev */ 10222be7d22fSVladimir Kondratiev struct wmi_eapol_rx_event { 10232be7d22fSVladimir Kondratiev u8 src_mac[WMI_MAC_LEN]; 10242be7d22fSVladimir Kondratiev __le16 eapol_len; 10252be7d22fSVladimir Kondratiev u8 eapol[0]; 10262be7d22fSVladimir Kondratiev } __packed; 10272be7d22fSVladimir Kondratiev 10282be7d22fSVladimir Kondratiev /* 10292be7d22fSVladimir Kondratiev * WMI_READY_EVENTID 10302be7d22fSVladimir Kondratiev */ 10312be7d22fSVladimir Kondratiev enum wmi_phy_capability { 10322be7d22fSVladimir Kondratiev WMI_11A_CAPABILITY = 1, 10332be7d22fSVladimir Kondratiev WMI_11G_CAPABILITY = 2, 10342be7d22fSVladimir Kondratiev WMI_11AG_CAPABILITY = 3, 10352be7d22fSVladimir Kondratiev WMI_11NA_CAPABILITY = 4, 10362be7d22fSVladimir Kondratiev WMI_11NG_CAPABILITY = 5, 10372be7d22fSVladimir Kondratiev WMI_11NAG_CAPABILITY = 6, 10382be7d22fSVladimir Kondratiev WMI_11AD_CAPABILITY = 7, 10392be7d22fSVladimir Kondratiev WMI_11N_CAPABILITY_OFFSET = WMI_11NA_CAPABILITY - WMI_11A_CAPABILITY, 10402be7d22fSVladimir Kondratiev }; 10412be7d22fSVladimir Kondratiev 10422be7d22fSVladimir Kondratiev struct wmi_ready_event { 10432be7d22fSVladimir Kondratiev __le32 sw_version; 10442be7d22fSVladimir Kondratiev __le32 abi_version; 10452be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 10462be7d22fSVladimir Kondratiev u8 phy_capability; /* enum wmi_phy_capability */ 1047b8023177SVladimir Kondratiev u8 numof_additional_mids; 10482be7d22fSVladimir Kondratiev } __packed; 10492be7d22fSVladimir Kondratiev 10502be7d22fSVladimir Kondratiev /* 10512be7d22fSVladimir Kondratiev * WMI_NOTIFY_REQ_DONE_EVENTID 10522be7d22fSVladimir Kondratiev */ 10532be7d22fSVladimir Kondratiev struct wmi_notify_req_done_event { 105436345ac3SVladimir Kondratiev __le32 status; /* beamforming status, 0: fail; 1: OK; 2: retrying */ 10552be7d22fSVladimir Kondratiev __le64 tsf; 10562be7d22fSVladimir Kondratiev __le32 snr_val; 10572be7d22fSVladimir Kondratiev __le32 tx_tpt; 10582be7d22fSVladimir Kondratiev __le32 tx_goodput; 10592be7d22fSVladimir Kondratiev __le32 rx_goodput; 10602be7d22fSVladimir Kondratiev __le16 bf_mcs; 10612be7d22fSVladimir Kondratiev __le16 my_rx_sector; 10622be7d22fSVladimir Kondratiev __le16 my_tx_sector; 10632be7d22fSVladimir Kondratiev __le16 other_rx_sector; 10642be7d22fSVladimir Kondratiev __le16 other_tx_sector; 10652be7d22fSVladimir Kondratiev __le16 range; 1066b8023177SVladimir Kondratiev u8 sqi; 1067b8023177SVladimir Kondratiev u8 reserved[3]; 10682be7d22fSVladimir Kondratiev } __packed; 10692be7d22fSVladimir Kondratiev 10702be7d22fSVladimir Kondratiev /* 10712be7d22fSVladimir Kondratiev * WMI_CONNECT_EVENTID 10722be7d22fSVladimir Kondratiev */ 10732be7d22fSVladimir Kondratiev struct wmi_connect_event { 10742be7d22fSVladimir Kondratiev u8 channel; 10752be7d22fSVladimir Kondratiev u8 reserved0; 10762be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 10772be7d22fSVladimir Kondratiev __le16 listen_interval; 10782be7d22fSVladimir Kondratiev __le16 beacon_interval; 10792be7d22fSVladimir Kondratiev u8 network_type; 10802be7d22fSVladimir Kondratiev u8 reserved1[3]; 10812be7d22fSVladimir Kondratiev u8 beacon_ie_len; 10822be7d22fSVladimir Kondratiev u8 assoc_req_len; 10832be7d22fSVladimir Kondratiev u8 assoc_resp_len; 10842be7d22fSVladimir Kondratiev u8 cid; 10852be7d22fSVladimir Kondratiev u8 reserved2[3]; 10862be7d22fSVladimir Kondratiev u8 assoc_info[0]; 10872be7d22fSVladimir Kondratiev } __packed; 10882be7d22fSVladimir Kondratiev 10892be7d22fSVladimir Kondratiev /* 10902be7d22fSVladimir Kondratiev * WMI_DISCONNECT_EVENTID 10912be7d22fSVladimir Kondratiev */ 10922be7d22fSVladimir Kondratiev enum wmi_disconnect_reason { 10932be7d22fSVladimir Kondratiev WMI_DIS_REASON_NO_NETWORK_AVAIL = 1, 10942be7d22fSVladimir Kondratiev WMI_DIS_REASON_LOST_LINK = 2, /* bmiss */ 10952be7d22fSVladimir Kondratiev WMI_DIS_REASON_DISCONNECT_CMD = 3, 10962be7d22fSVladimir Kondratiev WMI_DIS_REASON_BSS_DISCONNECTED = 4, 10972be7d22fSVladimir Kondratiev WMI_DIS_REASON_AUTH_FAILED = 5, 10982be7d22fSVladimir Kondratiev WMI_DIS_REASON_ASSOC_FAILED = 6, 10992be7d22fSVladimir Kondratiev WMI_DIS_REASON_NO_RESOURCES_AVAIL = 7, 11002be7d22fSVladimir Kondratiev WMI_DIS_REASON_CSERV_DISCONNECT = 8, 11012be7d22fSVladimir Kondratiev WMI_DIS_REASON_INVALID_PROFILE = 10, 11022be7d22fSVladimir Kondratiev WMI_DIS_REASON_DOT11H_CHANNEL_SWITCH = 11, 11032be7d22fSVladimir Kondratiev WMI_DIS_REASON_PROFILE_MISMATCH = 12, 11042be7d22fSVladimir Kondratiev WMI_DIS_REASON_CONNECTION_EVICTED = 13, 11052be7d22fSVladimir Kondratiev WMI_DIS_REASON_IBSS_MERGE = 14, 11062be7d22fSVladimir Kondratiev }; 11072be7d22fSVladimir Kondratiev 11082be7d22fSVladimir Kondratiev struct wmi_disconnect_event { 11092be7d22fSVladimir Kondratiev __le16 protocol_reason_status; /* reason code, see 802.11 spec. */ 11102be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; /* set if known */ 11116c2faf09SVladimir Kondratiev u8 disconnect_reason; /* see wmi_disconnect_reason */ 11128fe59627SVladimir Kondratiev u8 assoc_resp_len; /* not used */ 11138fe59627SVladimir Kondratiev u8 assoc_info[0]; /* not used */ 11142be7d22fSVladimir Kondratiev } __packed; 11152be7d22fSVladimir Kondratiev 11162be7d22fSVladimir Kondratiev /* 11172be7d22fSVladimir Kondratiev * WMI_SCAN_COMPLETE_EVENTID 11182be7d22fSVladimir Kondratiev */ 11196c2faf09SVladimir Kondratiev enum scan_status { 11206c2faf09SVladimir Kondratiev WMI_SCAN_SUCCESS = 0, 11216c2faf09SVladimir Kondratiev WMI_SCAN_FAILED = 1, 11226c2faf09SVladimir Kondratiev WMI_SCAN_ABORTED = 2, 11236c2faf09SVladimir Kondratiev WMI_SCAN_REJECTED = 3, 11246c2faf09SVladimir Kondratiev }; 11256c2faf09SVladimir Kondratiev 11262be7d22fSVladimir Kondratiev struct wmi_scan_complete_event { 11276c2faf09SVladimir Kondratiev __le32 status; /* scan_status */ 11282be7d22fSVladimir Kondratiev } __packed; 11292be7d22fSVladimir Kondratiev 11302be7d22fSVladimir Kondratiev /* 11312be7d22fSVladimir Kondratiev * WMI_BA_STATUS_EVENTID 11322be7d22fSVladimir Kondratiev */ 11332be7d22fSVladimir Kondratiev enum wmi_vring_ba_status { 11342be7d22fSVladimir Kondratiev WMI_BA_AGREED = 0, 11352be7d22fSVladimir Kondratiev WMI_BA_NON_AGREED = 1, 1136cbcf5866SVladimir Kondratiev /* BA_EN in middle of teardown flow */ 1137cbcf5866SVladimir Kondratiev WMI_BA_TD_WIP = 2, 1138cbcf5866SVladimir Kondratiev /* BA_DIS or BA_EN in middle of BA SETUP flow */ 1139cbcf5866SVladimir Kondratiev WMI_BA_SETUP_WIP = 3, 1140cbcf5866SVladimir Kondratiev /* BA_EN when the BA session is already active */ 1141cbcf5866SVladimir Kondratiev WMI_BA_SESSION_ACTIVE = 4, 1142cbcf5866SVladimir Kondratiev /* BA_DIS when the BA session is not active */ 1143cbcf5866SVladimir Kondratiev WMI_BA_SESSION_NOT_ACTIVE = 5, 11442be7d22fSVladimir Kondratiev }; 11452be7d22fSVladimir Kondratiev 11462be7d22fSVladimir Kondratiev struct wmi_vring_ba_status_event { 1147cbcf5866SVladimir Kondratiev __le16 status; /* enum wmi_vring_ba_status */ 11482be7d22fSVladimir Kondratiev u8 reserved[2]; 11492be7d22fSVladimir Kondratiev u8 ringid; 11502be7d22fSVladimir Kondratiev u8 agg_wsize; 11512be7d22fSVladimir Kondratiev __le16 ba_timeout; 1152cbcf5866SVladimir Kondratiev u8 amsdu; 11532be7d22fSVladimir Kondratiev } __packed; 11542be7d22fSVladimir Kondratiev 11552be7d22fSVladimir Kondratiev /* 11562be7d22fSVladimir Kondratiev * WMI_DELBA_EVENTID 11572be7d22fSVladimir Kondratiev */ 11582be7d22fSVladimir Kondratiev struct wmi_delba_event { 11592be7d22fSVladimir Kondratiev u8 cidxtid; 11602be7d22fSVladimir Kondratiev u8 from_initiator; 11612be7d22fSVladimir Kondratiev __le16 reason; 11622be7d22fSVladimir Kondratiev } __packed; 11632be7d22fSVladimir Kondratiev 11642be7d22fSVladimir Kondratiev /* 11652be7d22fSVladimir Kondratiev * WMI_VRING_CFG_DONE_EVENTID 11662be7d22fSVladimir Kondratiev */ 11672be7d22fSVladimir Kondratiev struct wmi_vring_cfg_done_event { 11682be7d22fSVladimir Kondratiev u8 ringid; 11692be7d22fSVladimir Kondratiev u8 status; 11702be7d22fSVladimir Kondratiev u8 reserved[2]; 11712be7d22fSVladimir Kondratiev __le32 tx_vring_tail_ptr; 11722be7d22fSVladimir Kondratiev } __packed; 11732be7d22fSVladimir Kondratiev 11742be7d22fSVladimir Kondratiev /* 1175230d8442SVladimir Kondratiev * WMI_RCP_ADDBA_RESP_SENT_EVENTID 11762be7d22fSVladimir Kondratiev */ 11772be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_sent_event { 11782be7d22fSVladimir Kondratiev u8 cidxtid; 11792be7d22fSVladimir Kondratiev u8 reserved; 11802be7d22fSVladimir Kondratiev __le16 status; 11812be7d22fSVladimir Kondratiev } __packed; 11822be7d22fSVladimir Kondratiev 11832be7d22fSVladimir Kondratiev /* 11842be7d22fSVladimir Kondratiev * WMI_RCP_ADDBA_REQ_EVENTID 11852be7d22fSVladimir Kondratiev */ 11862be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_event { 11872be7d22fSVladimir Kondratiev u8 cidxtid; 11882be7d22fSVladimir Kondratiev u8 dialog_token; 11892be7d22fSVladimir Kondratiev __le16 ba_param_set; /* ieee80211_ba_parameterset as it received */ 11902be7d22fSVladimir Kondratiev __le16 ba_timeout; 11912be7d22fSVladimir Kondratiev __le16 ba_seq_ctrl; /* ieee80211_ba_seqstrl field as it received */ 11922be7d22fSVladimir Kondratiev } __packed; 11932be7d22fSVladimir Kondratiev 11942be7d22fSVladimir Kondratiev /* 11952be7d22fSVladimir Kondratiev * WMI_CFG_RX_CHAIN_DONE_EVENTID 11962be7d22fSVladimir Kondratiev */ 11972be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_done_event_status { 11982be7d22fSVladimir Kondratiev WMI_CFG_RX_CHAIN_SUCCESS = 1, 11992be7d22fSVladimir Kondratiev }; 12002be7d22fSVladimir Kondratiev 12012be7d22fSVladimir Kondratiev struct wmi_cfg_rx_chain_done_event { 12022be7d22fSVladimir Kondratiev __le32 rx_ring_tail_ptr; /* Rx V-Ring Tail pointer */ 12032be7d22fSVladimir Kondratiev __le32 status; 12042be7d22fSVladimir Kondratiev } __packed; 12052be7d22fSVladimir Kondratiev 12062be7d22fSVladimir Kondratiev /* 1207230d8442SVladimir Kondratiev * WMI_WBE_LINK_DOWN_EVENTID 12082be7d22fSVladimir Kondratiev */ 12092be7d22fSVladimir Kondratiev enum wmi_wbe_link_down_event_reason { 12102be7d22fSVladimir Kondratiev WMI_WBE_REASON_USER_REQUEST = 0, 12112be7d22fSVladimir Kondratiev WMI_WBE_REASON_RX_DISASSOC = 1, 12122be7d22fSVladimir Kondratiev WMI_WBE_REASON_BAD_PHY_LINK = 2, 12132be7d22fSVladimir Kondratiev }; 12142be7d22fSVladimir Kondratiev 12152be7d22fSVladimir Kondratiev struct wmi_wbe_link_down_event { 12162be7d22fSVladimir Kondratiev u8 cid; 12172be7d22fSVladimir Kondratiev u8 reserved[3]; 12182be7d22fSVladimir Kondratiev __le32 reason; 12192be7d22fSVladimir Kondratiev } __packed; 12202be7d22fSVladimir Kondratiev 12212be7d22fSVladimir Kondratiev /* 12222be7d22fSVladimir Kondratiev * WMI_DATA_PORT_OPEN_EVENTID 12232be7d22fSVladimir Kondratiev */ 12242be7d22fSVladimir Kondratiev struct wmi_data_port_open_event { 12252be7d22fSVladimir Kondratiev u8 cid; 12262be7d22fSVladimir Kondratiev u8 reserved[3]; 12272be7d22fSVladimir Kondratiev } __packed; 12282be7d22fSVladimir Kondratiev 12292be7d22fSVladimir Kondratiev /* 1230230d8442SVladimir Kondratiev * WMI_VRING_EN_EVENTID 1231230d8442SVladimir Kondratiev */ 1232230d8442SVladimir Kondratiev struct wmi_vring_en_event { 1233230d8442SVladimir Kondratiev u8 vring_index; 1234230d8442SVladimir Kondratiev u8 reserved[3]; 1235230d8442SVladimir Kondratiev } __packed; 1236230d8442SVladimir Kondratiev 1237230d8442SVladimir Kondratiev /* 12382be7d22fSVladimir Kondratiev * WMI_GET_PCP_CHANNEL_EVENTID 12392be7d22fSVladimir Kondratiev */ 12402be7d22fSVladimir Kondratiev struct wmi_get_pcp_channel_event { 12412be7d22fSVladimir Kondratiev u8 channel; 12422be7d22fSVladimir Kondratiev u8 reserved[3]; 12432be7d22fSVladimir Kondratiev } __packed; 12442be7d22fSVladimir Kondratiev 1245b8023177SVladimir Kondratiev /* 12468c679675SVladimir Kondratiev * WMI_P2P_CFG_DONE_EVENTID 12478c679675SVladimir Kondratiev */ 12488c679675SVladimir Kondratiev struct wmi_p2p_cfg_done_event { 12498c679675SVladimir Kondratiev u8 status; /* wmi_fw_status */ 12508c679675SVladimir Kondratiev u8 reserved[3]; 12518c679675SVladimir Kondratiev } __packed; 12528c679675SVladimir Kondratiev 12538c679675SVladimir Kondratiev /* 1254b8023177SVladimir Kondratiev * WMI_PORT_ALLOCATED_EVENTID 1255b8023177SVladimir Kondratiev */ 1256b8023177SVladimir Kondratiev struct wmi_port_allocated_event { 1257b8023177SVladimir Kondratiev u8 status; /* wmi_fw_status */ 1258b8023177SVladimir Kondratiev u8 reserved[3]; 1259b8023177SVladimir Kondratiev } __packed; 1260b8023177SVladimir Kondratiev 1261b8023177SVladimir Kondratiev /* 1262b8023177SVladimir Kondratiev * WMI_PORT_DELETED_EVENTID 1263b8023177SVladimir Kondratiev */ 1264b8023177SVladimir Kondratiev struct wmi_port_deleted_event { 1265b8023177SVladimir Kondratiev u8 status; /* wmi_fw_status */ 1266b8023177SVladimir Kondratiev u8 reserved[3]; 1267b8023177SVladimir Kondratiev } __packed; 1268b8023177SVladimir Kondratiev 1269b8023177SVladimir Kondratiev /* 1270b8023177SVladimir Kondratiev * WMI_LISTEN_STARTED_EVENTID 1271b8023177SVladimir Kondratiev */ 1272b8023177SVladimir Kondratiev struct wmi_listen_started_event { 1273b8023177SVladimir Kondratiev u8 status; /* wmi_fw_status */ 1274b8023177SVladimir Kondratiev u8 reserved[3]; 1275b8023177SVladimir Kondratiev } __packed; 1276b8023177SVladimir Kondratiev 1277b8023177SVladimir Kondratiev /* 1278b8023177SVladimir Kondratiev * WMI_SEARCH_STARTED_EVENTID 1279b8023177SVladimir Kondratiev */ 1280b8023177SVladimir Kondratiev struct wmi_search_started_event { 1281b8023177SVladimir Kondratiev u8 status; /* wmi_fw_status */ 1282b8023177SVladimir Kondratiev u8 reserved[3]; 1283b8023177SVladimir Kondratiev } __packed; 1284b8023177SVladimir Kondratiev 1285b8023177SVladimir Kondratiev /* 1286b8023177SVladimir Kondratiev * WMI_PCP_STARTED_EVENTID 1287b8023177SVladimir Kondratiev */ 1288b8023177SVladimir Kondratiev struct wmi_pcp_started_event { 1289b8023177SVladimir Kondratiev u8 status; /* wmi_fw_status */ 1290b8023177SVladimir Kondratiev u8 reserved[3]; 1291b8023177SVladimir Kondratiev } __packed; 1292b8023177SVladimir Kondratiev 1293b8023177SVladimir Kondratiev /* 1294b8023177SVladimir Kondratiev * WMI_PCP_FACTOR_EVENTID 1295b8023177SVladimir Kondratiev */ 1296b8023177SVladimir Kondratiev struct wmi_pcp_factor_event { 1297b8023177SVladimir Kondratiev __le32 pcp_factor; 1298b8023177SVladimir Kondratiev } __packed; 1299b8023177SVladimir Kondratiev 13002be7d22fSVladimir Kondratiev /* 13012be7d22fSVladimir Kondratiev * WMI_SW_TX_COMPLETE_EVENTID 13022be7d22fSVladimir Kondratiev */ 13032be7d22fSVladimir Kondratiev enum wmi_sw_tx_status { 13042be7d22fSVladimir Kondratiev WMI_TX_SW_STATUS_SUCCESS = 0, 13052be7d22fSVladimir Kondratiev WMI_TX_SW_STATUS_FAILED_NO_RESOURCES = 1, 13062be7d22fSVladimir Kondratiev WMI_TX_SW_STATUS_FAILED_TX = 2, 13072be7d22fSVladimir Kondratiev }; 13082be7d22fSVladimir Kondratiev 13092be7d22fSVladimir Kondratiev struct wmi_sw_tx_complete_event { 13102be7d22fSVladimir Kondratiev u8 status; /* enum wmi_sw_tx_status */ 13112be7d22fSVladimir Kondratiev u8 reserved[3]; 13122be7d22fSVladimir Kondratiev } __packed; 13132be7d22fSVladimir Kondratiev 13142be7d22fSVladimir Kondratiev /* 1315b8023177SVladimir Kondratiev * WMI_CORR_MEASURE_EVENTID 1316b8023177SVladimir Kondratiev */ 1317b8023177SVladimir Kondratiev struct wmi_corr_measure_event { 1318b8023177SVladimir Kondratiev s32 i; 1319b8023177SVladimir Kondratiev s32 q; 1320b8023177SVladimir Kondratiev s32 image_i; 1321b8023177SVladimir Kondratiev s32 image_q; 1322b8023177SVladimir Kondratiev } __packed; 1323b8023177SVladimir Kondratiev 1324b8023177SVladimir Kondratiev /* 1325b8023177SVladimir Kondratiev * WMI_READ_RSSI_EVENTID 1326b8023177SVladimir Kondratiev */ 1327b8023177SVladimir Kondratiev struct wmi_read_rssi_event { 1328b8023177SVladimir Kondratiev __le32 ina_rssi_adc_dbm; 1329b8023177SVladimir Kondratiev } __packed; 1330b8023177SVladimir Kondratiev 1331b8023177SVladimir Kondratiev /* 13322be7d22fSVladimir Kondratiev * WMI_GET_SSID_EVENTID 13332be7d22fSVladimir Kondratiev */ 13342be7d22fSVladimir Kondratiev struct wmi_get_ssid_event { 13352be7d22fSVladimir Kondratiev __le32 ssid_len; 13362be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 13372be7d22fSVladimir Kondratiev } __packed; 13382be7d22fSVladimir Kondratiev 13392be7d22fSVladimir Kondratiev /* 13402be7d22fSVladimir Kondratiev * WMI_RX_MGMT_PACKET_EVENTID 13412be7d22fSVladimir Kondratiev */ 13422be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_info { 13432be7d22fSVladimir Kondratiev u8 mcs; 13442be7d22fSVladimir Kondratiev s8 snr; 1345b8023177SVladimir Kondratiev u8 range; 1346b8023177SVladimir Kondratiev u8 sqi; 13472be7d22fSVladimir Kondratiev __le16 stype; 13482be7d22fSVladimir Kondratiev __le16 status; 13492be7d22fSVladimir Kondratiev __le32 len; 13502be7d22fSVladimir Kondratiev u8 qid; 13512be7d22fSVladimir Kondratiev u8 mid; 13522be7d22fSVladimir Kondratiev u8 cid; 13532be7d22fSVladimir Kondratiev u8 channel; /* From Radio MNGR */ 13542be7d22fSVladimir Kondratiev } __packed; 13552be7d22fSVladimir Kondratiev 13566c2faf09SVladimir Kondratiev /* 13576c2faf09SVladimir Kondratiev * WMI_TX_MGMT_PACKET_EVENTID 13586c2faf09SVladimir Kondratiev */ 13596c2faf09SVladimir Kondratiev struct wmi_tx_mgmt_packet_event { 13606c2faf09SVladimir Kondratiev u8 payload[0]; 13616c2faf09SVladimir Kondratiev } __packed; 13626c2faf09SVladimir Kondratiev 13632be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_packet_event { 13642be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_info info; 13652be7d22fSVladimir Kondratiev u8 payload[0]; 13662be7d22fSVladimir Kondratiev } __packed; 13672be7d22fSVladimir Kondratiev 13682be7d22fSVladimir Kondratiev /* 13692be7d22fSVladimir Kondratiev * WMI_ECHO_RSP_EVENTID 13702be7d22fSVladimir Kondratiev */ 13712be7d22fSVladimir Kondratiev struct wmi_echo_event { 13722be7d22fSVladimir Kondratiev __le32 echoed_value; 13732be7d22fSVladimir Kondratiev } __packed; 13742be7d22fSVladimir Kondratiev 1375b8023177SVladimir Kondratiev /* 1376b8023177SVladimir Kondratiev * WMI_TEMP_SENSE_DONE_EVENTID 1377b8023177SVladimir Kondratiev * 1378b8023177SVladimir Kondratiev * Measure MAC and radio temperatures 1379b8023177SVladimir Kondratiev */ 1380b8023177SVladimir Kondratiev struct wmi_temp_sense_done_event { 13818c679675SVladimir Kondratiev __le32 baseband_t1000; 13828c679675SVladimir Kondratiev __le32 rf_t1000; 1383b8023177SVladimir Kondratiev } __packed; 1384b8023177SVladimir Kondratiev 13852be7d22fSVladimir Kondratiev #endif /* __WILOCITY_WMI_H__ */ 1386