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