12be7d22fSVladimir Kondratiev /* 2849a564bSDedy Lansky * Copyright (c) 2012-2017 Qualcomm Atheros, Inc. 3b874ddecSLior David * 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 20b874ddecSLior David * Wireless Module Interface (WMI) for the Qualcomm 21b874ddecSLior David * 60 GHz 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. 25b874ddecSLior David * 26b874ddecSLior David * This is an automatically generated file. 272be7d22fSVladimir Kondratiev */ 282be7d22fSVladimir Kondratiev 292be7d22fSVladimir Kondratiev #ifndef __WILOCITY_WMI_H__ 302be7d22fSVladimir Kondratiev #define __WILOCITY_WMI_H__ 312be7d22fSVladimir Kondratiev 322be7d22fSVladimir Kondratiev /* General */ 33b874ddecSLior David #define WMI_MAX_ASSOC_STA (8) 34b874ddecSLior David #define WMI_DEFAULT_ASSOC_STA (1) 352be7d22fSVladimir Kondratiev #define WMI_MAC_LEN (6) 362be7d22fSVladimir Kondratiev #define WMI_PROX_RANGE_NUM (3) 37b874ddecSLior David #define WMI_MAX_LOSS_DMG_BEACONS (20) 388ae5d62cSLior David #define MAX_NUM_OF_SECTORS (128) 39b874ddecSLior David 40b874ddecSLior David /* Mailbox interface 41b874ddecSLior David * used for commands and events 42b874ddecSLior David */ 43b874ddecSLior David enum wmi_mid { 44b874ddecSLior David MID_DEFAULT = 0x00, 45b874ddecSLior David FIRST_DBG_MID_ID = 0x10, 46b874ddecSLior David LAST_DBG_MID_ID = 0xFE, 47b874ddecSLior David MID_BROADCAST = 0xFF, 48b874ddecSLior David }; 49b874ddecSLior David 5008989f96SLior David /* FW capability IDs 5108989f96SLior David * Each ID maps to a bit in a 32-bit bitmask value provided by the FW to 5208989f96SLior David * the host 5308989f96SLior David */ 5408989f96SLior David enum wmi_fw_capability { 5508989f96SLior David WMI_FW_CAPABILITY_FTM = 0, 5608989f96SLior David WMI_FW_CAPABILITY_PS_CONFIG = 1, 57cbf795c1SLior David WMI_FW_CAPABILITY_RF_SECTORS = 2, 58cbf795c1SLior David WMI_FW_CAPABILITY_MGMT_RETRY_LIMIT = 3, 59849a564bSDedy Lansky WMI_FW_CAPABILITY_DISABLE_AP_SME = 4, 600d2370e9SDedy Lansky WMI_FW_CAPABILITY_WMI_ONLY = 5, 6108989f96SLior David WMI_FW_CAPABILITY_MAX, 6208989f96SLior David }; 6308989f96SLior David 64b874ddecSLior David /* WMI_CMD_HDR */ 65b874ddecSLior David struct wmi_cmd_hdr { 66b874ddecSLior David u8 mid; 67b874ddecSLior David u8 reserved; 68b874ddecSLior David __le16 command_id; 69b874ddecSLior David __le32 fw_timestamp; 70b874ddecSLior David } __packed; 712be7d22fSVladimir Kondratiev 722be7d22fSVladimir Kondratiev /* List of Commands */ 732be7d22fSVladimir Kondratiev enum wmi_command_id { 74b874ddecSLior David WMI_CONNECT_CMDID = 0x01, 75b874ddecSLior David WMI_DISCONNECT_CMDID = 0x03, 76b874ddecSLior David WMI_DISCONNECT_STA_CMDID = 0x04, 77b874ddecSLior David WMI_START_SCAN_CMDID = 0x07, 78b874ddecSLior David WMI_SET_BSS_FILTER_CMDID = 0x09, 79b874ddecSLior David WMI_SET_PROBED_SSID_CMDID = 0x0A, 80b874ddecSLior David WMI_SET_LISTEN_INT_CMDID = 0x0B, 81b874ddecSLior David WMI_BCON_CTRL_CMDID = 0x0F, 82b874ddecSLior David WMI_ADD_CIPHER_KEY_CMDID = 0x16, 83b874ddecSLior David WMI_DELETE_CIPHER_KEY_CMDID = 0x17, 84b874ddecSLior David WMI_PCP_CONF_CMDID = 0x18, 85b874ddecSLior David WMI_SET_APPIE_CMDID = 0x3F, 86b874ddecSLior David WMI_SET_WSC_STATUS_CMDID = 0x41, 87b874ddecSLior David WMI_PXMT_RANGE_CFG_CMDID = 0x42, 88b874ddecSLior David WMI_PXMT_SNR2_RANGE_CFG_CMDID = 0x43, 89b874ddecSLior David WMI_MEM_READ_CMDID = 0x800, 90b874ddecSLior David WMI_MEM_WR_CMDID = 0x801, 91b874ddecSLior David WMI_ECHO_CMDID = 0x803, 92b874ddecSLior David WMI_DEEP_ECHO_CMDID = 0x804, 93b874ddecSLior David WMI_CONFIG_MAC_CMDID = 0x805, 94b874ddecSLior David WMI_CONFIG_PHY_DEBUG_CMDID = 0x806, 95b874ddecSLior David WMI_ADD_DEBUG_TX_PCKT_CMDID = 0x808, 96b874ddecSLior David WMI_PHY_GET_STATISTICS_CMDID = 0x809, 97b874ddecSLior David WMI_FS_TUNE_CMDID = 0x80A, 98b874ddecSLior David WMI_CORR_MEASURE_CMDID = 0x80B, 99b874ddecSLior David WMI_READ_RSSI_CMDID = 0x80C, 100b874ddecSLior David WMI_TEMP_SENSE_CMDID = 0x80E, 101b874ddecSLior David WMI_DC_CALIB_CMDID = 0x80F, 102b874ddecSLior David WMI_SEND_TONE_CMDID = 0x810, 103b874ddecSLior David WMI_IQ_TX_CALIB_CMDID = 0x811, 104b874ddecSLior David WMI_IQ_RX_CALIB_CMDID = 0x812, 105b874ddecSLior David WMI_SET_UCODE_IDLE_CMDID = 0x813, 106b874ddecSLior David WMI_SET_WORK_MODE_CMDID = 0x815, 107b874ddecSLior David WMI_LO_LEAKAGE_CALIB_CMDID = 0x816, 108b874ddecSLior David WMI_MARLON_R_READ_CMDID = 0x818, 109b874ddecSLior David WMI_MARLON_R_WRITE_CMDID = 0x819, 110b874ddecSLior David WMI_MARLON_R_TXRX_SEL_CMDID = 0x81A, 111b874ddecSLior David MAC_IO_STATIC_PARAMS_CMDID = 0x81B, 112b874ddecSLior David MAC_IO_DYNAMIC_PARAMS_CMDID = 0x81C, 113b874ddecSLior David WMI_SILENT_RSSI_CALIB_CMDID = 0x81D, 114b874ddecSLior David WMI_RF_RX_TEST_CMDID = 0x81E, 115b874ddecSLior David WMI_CFG_RX_CHAIN_CMDID = 0x820, 116b874ddecSLior David WMI_VRING_CFG_CMDID = 0x821, 117b874ddecSLior David WMI_BCAST_VRING_CFG_CMDID = 0x822, 118b874ddecSLior David WMI_VRING_BA_EN_CMDID = 0x823, 119b874ddecSLior David WMI_VRING_BA_DIS_CMDID = 0x824, 120b874ddecSLior David WMI_RCP_ADDBA_RESP_CMDID = 0x825, 121b874ddecSLior David WMI_RCP_DELBA_CMDID = 0x826, 122b874ddecSLior David WMI_SET_SSID_CMDID = 0x827, 123b874ddecSLior David WMI_GET_SSID_CMDID = 0x828, 124b874ddecSLior David WMI_SET_PCP_CHANNEL_CMDID = 0x829, 125b874ddecSLior David WMI_GET_PCP_CHANNEL_CMDID = 0x82A, 126b874ddecSLior David WMI_SW_TX_REQ_CMDID = 0x82B, 127b874ddecSLior David WMI_READ_MAC_RXQ_CMDID = 0x830, 128b874ddecSLior David WMI_READ_MAC_TXQ_CMDID = 0x831, 129b874ddecSLior David WMI_WRITE_MAC_RXQ_CMDID = 0x832, 130b874ddecSLior David WMI_WRITE_MAC_TXQ_CMDID = 0x833, 131b874ddecSLior David WMI_WRITE_MAC_XQ_FIELD_CMDID = 0x834, 132b874ddecSLior David WMI_MLME_PUSH_CMDID = 0x835, 133b874ddecSLior David WMI_BEAMFORMING_MGMT_CMDID = 0x836, 134b874ddecSLior David WMI_BF_TXSS_MGMT_CMDID = 0x837, 135b874ddecSLior David WMI_BF_SM_MGMT_CMDID = 0x838, 136b874ddecSLior David WMI_BF_RXSS_MGMT_CMDID = 0x839, 137b874ddecSLior David WMI_BF_TRIG_CMDID = 0x83A, 1380163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_WRITE_CMDID = 0x842, 1390163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_READ_CMDID = 0x843, 140b874ddecSLior David WMI_SET_SECTORS_CMDID = 0x849, 141b874ddecSLior David WMI_MAINTAIN_PAUSE_CMDID = 0x850, 142b874ddecSLior David WMI_MAINTAIN_RESUME_CMDID = 0x851, 143b874ddecSLior David WMI_RS_MGMT_CMDID = 0x852, 144b874ddecSLior David WMI_RF_MGMT_CMDID = 0x853, 145b874ddecSLior David WMI_THERMAL_THROTTLING_CTRL_CMDID = 0x854, 146b874ddecSLior David WMI_THERMAL_THROTTLING_GET_STATUS_CMDID = 0x855, 147b874ddecSLior David WMI_OTP_READ_CMDID = 0x856, 148b874ddecSLior David WMI_OTP_WRITE_CMDID = 0x857, 14910d599adSMaya Erez WMI_LED_CFG_CMDID = 0x858, 1502be7d22fSVladimir Kondratiev /* Performance monitoring commands */ 151b874ddecSLior David WMI_BF_CTRL_CMDID = 0x862, 152b874ddecSLior David WMI_NOTIFY_REQ_CMDID = 0x863, 153b874ddecSLior David WMI_GET_STATUS_CMDID = 0x864, 1540163b031SMaya Erez WMI_GET_RF_STATUS_CMDID = 0x866, 1550163b031SMaya Erez WMI_GET_BASEBAND_TYPE_CMDID = 0x867, 156b874ddecSLior David WMI_UNIT_TEST_CMDID = 0x900, 157b874ddecSLior David WMI_HICCUP_CMDID = 0x901, 158b874ddecSLior David WMI_FLASH_READ_CMDID = 0x902, 159b874ddecSLior David WMI_FLASH_WRITE_CMDID = 0x903, 1600163b031SMaya Erez /* Power management */ 1610163b031SMaya Erez WMI_TRAFFIC_DEFERRAL_CMDID = 0x904, 1620163b031SMaya Erez WMI_TRAFFIC_RESUME_CMDID = 0x905, 163b8023177SVladimir Kondratiev /* P2P */ 164b874ddecSLior David WMI_P2P_CFG_CMDID = 0x910, 165b874ddecSLior David WMI_PORT_ALLOCATE_CMDID = 0x911, 166b874ddecSLior David WMI_PORT_DELETE_CMDID = 0x912, 167b874ddecSLior David WMI_POWER_MGMT_CFG_CMDID = 0x913, 168b874ddecSLior David WMI_START_LISTEN_CMDID = 0x914, 169b874ddecSLior David WMI_START_SEARCH_CMDID = 0x915, 170b874ddecSLior David WMI_DISCOVERY_START_CMDID = 0x916, 171b874ddecSLior David WMI_DISCOVERY_STOP_CMDID = 0x917, 172b874ddecSLior David WMI_PCP_START_CMDID = 0x918, 173b874ddecSLior David WMI_PCP_STOP_CMDID = 0x919, 174b874ddecSLior David WMI_GET_PCP_FACTOR_CMDID = 0x91B, 1750163b031SMaya Erez /* Power Save Configuration Commands */ 1760163b031SMaya Erez WMI_PS_DEV_PROFILE_CFG_CMDID = 0x91C, 1770163b031SMaya Erez /* Not supported yet */ 1780163b031SMaya Erez WMI_PS_DEV_CFG_CMDID = 0x91D, 1790163b031SMaya Erez /* Not supported yet */ 1800163b031SMaya Erez WMI_PS_DEV_CFG_READ_CMDID = 0x91E, 1810163b031SMaya Erez /* Per MAC Power Save Configuration commands 1820163b031SMaya Erez * Not supported yet 1830163b031SMaya Erez */ 1840163b031SMaya Erez WMI_PS_MID_CFG_CMDID = 0x91F, 1850163b031SMaya Erez /* Not supported yet */ 1860163b031SMaya Erez WMI_PS_MID_CFG_READ_CMDID = 0x920, 1870163b031SMaya Erez WMI_RS_CFG_CMDID = 0x921, 18808989f96SLior David WMI_GET_DETAILED_RS_RES_CMDID = 0x922, 18908989f96SLior David WMI_AOA_MEAS_CMDID = 0x923, 190*a52fb913SLior David WMI_BRP_SET_ANT_LIMIT_CMDID = 0x924, 191cbf795c1SLior David WMI_SET_MGMT_RETRY_LIMIT_CMDID = 0x930, 192cbf795c1SLior David WMI_GET_MGMT_RETRY_LIMIT_CMDID = 0x931, 193849a564bSDedy Lansky WMI_NEW_STA_CMDID = 0x935, 194849a564bSDedy Lansky WMI_DEL_STA_CMDID = 0x936, 19508989f96SLior David WMI_TOF_SESSION_START_CMDID = 0x991, 19608989f96SLior David WMI_TOF_GET_CAPABILITIES_CMDID = 0x992, 19708989f96SLior David WMI_TOF_SET_LCR_CMDID = 0x993, 19808989f96SLior David WMI_TOF_SET_LCI_CMDID = 0x994, 19908989f96SLior David WMI_TOF_CHANNEL_INFO_CMDID = 0x995, 2008ae5d62cSLior David WMI_TOF_SET_TX_RX_OFFSET_CMDID = 0x997, 2018ae5d62cSLior David WMI_TOF_GET_TX_RX_OFFSET_CMDID = 0x998, 202cbf795c1SLior David WMI_GET_RF_SECTOR_PARAMS_CMDID = 0x9A0, 203cbf795c1SLior David WMI_SET_RF_SECTOR_PARAMS_CMDID = 0x9A1, 204cbf795c1SLior David WMI_GET_SELECTED_RF_SECTOR_INDEX_CMDID = 0x9A2, 205cbf795c1SLior David WMI_SET_SELECTED_RF_SECTOR_INDEX_CMDID = 0x9A3, 206cbf795c1SLior David WMI_SET_RF_SECTOR_ON_CMDID = 0x9A4, 2078ae5d62cSLior David WMI_PRIO_TX_SECTORS_ORDER_CMDID = 0x9A5, 2088ae5d62cSLior David WMI_PRIO_TX_SECTORS_NUMBER_CMDID = 0x9A6, 2098ae5d62cSLior David WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_CMDID = 0x9A7, 210b874ddecSLior David WMI_SET_MAC_ADDRESS_CMDID = 0xF003, 211b874ddecSLior David WMI_ABORT_SCAN_CMDID = 0xF007, 212b874ddecSLior David WMI_SET_PROMISCUOUS_MODE_CMDID = 0xF041, 213b874ddecSLior David WMI_GET_PMK_CMDID = 0xF048, 214b874ddecSLior David WMI_SET_PASSPHRASE_CMDID = 0xF049, 215b874ddecSLior David WMI_SEND_ASSOC_RES_CMDID = 0xF04A, 216b874ddecSLior David WMI_SET_ASSOC_REQ_RELAY_CMDID = 0xF04B, 217b874ddecSLior David WMI_MAC_ADDR_REQ_CMDID = 0xF04D, 218b874ddecSLior David WMI_FW_VER_CMDID = 0xF04E, 219b874ddecSLior David WMI_PMC_CMDID = 0xF04F, 2202be7d22fSVladimir Kondratiev }; 2212be7d22fSVladimir Kondratiev 222b874ddecSLior David /* WMI_CONNECT_CMDID */ 2232be7d22fSVladimir Kondratiev enum wmi_network_type { 2242be7d22fSVladimir Kondratiev WMI_NETTYPE_INFRA = 0x01, 2252be7d22fSVladimir Kondratiev WMI_NETTYPE_ADHOC = 0x02, 2262be7d22fSVladimir Kondratiev WMI_NETTYPE_ADHOC_CREATOR = 0x04, 2272be7d22fSVladimir Kondratiev WMI_NETTYPE_AP = 0x10, 2282be7d22fSVladimir Kondratiev WMI_NETTYPE_P2P = 0x20, 229b874ddecSLior David /* PCIE over 60g */ 230b874ddecSLior David WMI_NETTYPE_WBE = 0x40, 2312be7d22fSVladimir Kondratiev }; 2322be7d22fSVladimir Kondratiev 2332be7d22fSVladimir Kondratiev enum wmi_dot11_auth_mode { 2342be7d22fSVladimir Kondratiev WMI_AUTH11_OPEN = 0x01, 2352be7d22fSVladimir Kondratiev WMI_AUTH11_SHARED = 0x02, 2362be7d22fSVladimir Kondratiev WMI_AUTH11_LEAP = 0x04, 2372be7d22fSVladimir Kondratiev WMI_AUTH11_WSC = 0x08, 2382be7d22fSVladimir Kondratiev }; 2392be7d22fSVladimir Kondratiev 2402be7d22fSVladimir Kondratiev enum wmi_auth_mode { 2412be7d22fSVladimir Kondratiev WMI_AUTH_NONE = 0x01, 2422be7d22fSVladimir Kondratiev WMI_AUTH_WPA = 0x02, 2432be7d22fSVladimir Kondratiev WMI_AUTH_WPA2 = 0x04, 2442be7d22fSVladimir Kondratiev WMI_AUTH_WPA_PSK = 0x08, 2452be7d22fSVladimir Kondratiev WMI_AUTH_WPA2_PSK = 0x10, 2462be7d22fSVladimir Kondratiev WMI_AUTH_WPA_CCKM = 0x20, 2472be7d22fSVladimir Kondratiev WMI_AUTH_WPA2_CCKM = 0x40, 2482be7d22fSVladimir Kondratiev }; 2492be7d22fSVladimir Kondratiev 2502be7d22fSVladimir Kondratiev enum wmi_crypto_type { 2512be7d22fSVladimir Kondratiev WMI_CRYPT_NONE = 0x01, 2522be7d22fSVladimir Kondratiev WMI_CRYPT_AES_GCMP = 0x20, 2532be7d22fSVladimir Kondratiev }; 2542be7d22fSVladimir Kondratiev 2552be7d22fSVladimir Kondratiev enum wmi_connect_ctrl_flag_bits { 256b874ddecSLior David WMI_CONNECT_ASSOC_POLICY_USER = 0x01, 257b874ddecSLior David WMI_CONNECT_SEND_REASSOC = 0x02, 258b874ddecSLior David WMI_CONNECT_IGNORE_WPA_GROUP_CIPHER = 0x04, 259b874ddecSLior David WMI_CONNECT_PROFILE_MATCH_DONE = 0x08, 260b874ddecSLior David WMI_CONNECT_IGNORE_AAC_BEACON = 0x10, 261b874ddecSLior David WMI_CONNECT_CSA_FOLLOW_BSS = 0x20, 262b874ddecSLior David WMI_CONNECT_DO_WPA_OFFLOAD = 0x40, 263b874ddecSLior David WMI_CONNECT_DO_NOT_DEAUTH = 0x80, 2642be7d22fSVladimir Kondratiev }; 2652be7d22fSVladimir Kondratiev 2662be7d22fSVladimir Kondratiev #define WMI_MAX_SSID_LEN (32) 2672be7d22fSVladimir Kondratiev 268b874ddecSLior David /* WMI_CONNECT_CMDID */ 2692be7d22fSVladimir Kondratiev struct wmi_connect_cmd { 2702be7d22fSVladimir Kondratiev u8 network_type; 2712be7d22fSVladimir Kondratiev u8 dot11_auth_mode; 2722be7d22fSVladimir Kondratiev u8 auth_mode; 2732be7d22fSVladimir Kondratiev u8 pairwise_crypto_type; 2742be7d22fSVladimir Kondratiev u8 pairwise_crypto_len; 2752be7d22fSVladimir Kondratiev u8 group_crypto_type; 2762be7d22fSVladimir Kondratiev u8 group_crypto_len; 2772be7d22fSVladimir Kondratiev u8 ssid_len; 2782be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 2792be7d22fSVladimir Kondratiev u8 channel; 2802be7d22fSVladimir Kondratiev u8 reserved0; 2812be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 2822be7d22fSVladimir Kondratiev __le32 ctrl_flags; 2832be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 2842be7d22fSVladimir Kondratiev u8 reserved1[2]; 2852be7d22fSVladimir Kondratiev } __packed; 2862be7d22fSVladimir Kondratiev 287b874ddecSLior David /* WMI_DISCONNECT_STA_CMDID */ 288b8023177SVladimir Kondratiev struct wmi_disconnect_sta_cmd { 289b8023177SVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 290b8023177SVladimir Kondratiev __le16 disconnect_reason; 291b8023177SVladimir Kondratiev } __packed; 2922be7d22fSVladimir Kondratiev 2932be7d22fSVladimir Kondratiev #define WMI_MAX_KEY_INDEX (3) 2942be7d22fSVladimir Kondratiev #define WMI_MAX_KEY_LEN (32) 2952be7d22fSVladimir Kondratiev #define WMI_PASSPHRASE_LEN (64) 2962be7d22fSVladimir Kondratiev 297b874ddecSLior David /* WMI_SET_PASSPHRASE_CMDID */ 2982be7d22fSVladimir Kondratiev struct wmi_set_passphrase_cmd { 2992be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 3002be7d22fSVladimir Kondratiev u8 passphrase[WMI_PASSPHRASE_LEN]; 3012be7d22fSVladimir Kondratiev u8 ssid_len; 3022be7d22fSVladimir Kondratiev u8 passphrase_len; 3032be7d22fSVladimir Kondratiev } __packed; 3042be7d22fSVladimir Kondratiev 305b874ddecSLior David /* WMI_ADD_CIPHER_KEY_CMDID */ 3062be7d22fSVladimir Kondratiev enum wmi_key_usage { 307b874ddecSLior David WMI_KEY_USE_PAIRWISE = 0x00, 308b874ddecSLior David WMI_KEY_USE_RX_GROUP = 0x01, 309b874ddecSLior David WMI_KEY_USE_TX_GROUP = 0x02, 3102be7d22fSVladimir Kondratiev }; 3112be7d22fSVladimir Kondratiev 3122be7d22fSVladimir Kondratiev struct wmi_add_cipher_key_cmd { 3132be7d22fSVladimir Kondratiev u8 key_index; 3142be7d22fSVladimir Kondratiev u8 key_type; 315b874ddecSLior David /* enum wmi_key_usage */ 316b874ddecSLior David u8 key_usage; 3172be7d22fSVladimir Kondratiev u8 key_len; 318b874ddecSLior David /* key replay sequence counter */ 319b874ddecSLior David u8 key_rsc[8]; 3202be7d22fSVladimir Kondratiev u8 key[WMI_MAX_KEY_LEN]; 321b874ddecSLior David /* Additional Key Control information */ 322b874ddecSLior David u8 key_op_ctrl; 3232be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 3242be7d22fSVladimir Kondratiev } __packed; 3252be7d22fSVladimir Kondratiev 326b874ddecSLior David /* WMI_DELETE_CIPHER_KEY_CMDID */ 3272be7d22fSVladimir Kondratiev struct wmi_delete_cipher_key_cmd { 3282be7d22fSVladimir Kondratiev u8 key_index; 3292be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 3302be7d22fSVladimir Kondratiev } __packed; 3312be7d22fSVladimir Kondratiev 332b874ddecSLior David /* WMI_START_SCAN_CMDID 3332be7d22fSVladimir Kondratiev * 3342be7d22fSVladimir Kondratiev * Start L1 scan operation 3352be7d22fSVladimir Kondratiev * 3362be7d22fSVladimir Kondratiev * Returned events: 3372be7d22fSVladimir Kondratiev * - WMI_RX_MGMT_PACKET_EVENTID - for every probe resp. 3382be7d22fSVladimir Kondratiev * - WMI_SCAN_COMPLETE_EVENTID 3392be7d22fSVladimir Kondratiev */ 3402be7d22fSVladimir Kondratiev enum wmi_scan_type { 341b874ddecSLior David WMI_ACTIVE_SCAN = 0x00, 342b874ddecSLior David WMI_SHORT_SCAN = 0x01, 343b874ddecSLior David WMI_PASSIVE_SCAN = 0x02, 344b874ddecSLior David WMI_DIRECT_SCAN = 0x03, 345b874ddecSLior David WMI_LONG_SCAN = 0x04, 3462be7d22fSVladimir Kondratiev }; 3472be7d22fSVladimir Kondratiev 348b874ddecSLior David /* WMI_START_SCAN_CMDID */ 3492be7d22fSVladimir Kondratiev struct wmi_start_scan_cmd { 350b874ddecSLior David u8 direct_scan_mac_addr[WMI_MAC_LEN]; 3510163b031SMaya Erez /* run scan with discovery beacon. Relevant for ACTIVE scan only. */ 35274997a53SLior David u8 discovery_mode; 35374997a53SLior David u8 reserved; 354b874ddecSLior David /* Max duration in the home channel(ms) */ 355b874ddecSLior David __le32 dwell_time; 356b874ddecSLior David /* Time interval between scans (ms) */ 357b874ddecSLior David __le32 force_scan_interval; 358b874ddecSLior David /* enum wmi_scan_type */ 359b874ddecSLior David u8 scan_type; 360b874ddecSLior David /* how many channels follow */ 361b874ddecSLior David u8 num_channels; 362b874ddecSLior David /* channels ID's: 363b874ddecSLior David * 0 - 58320 MHz 364b874ddecSLior David * 1 - 60480 MHz 365b874ddecSLior David * 2 - 62640 MHz 366b874ddecSLior David */ 3672be7d22fSVladimir Kondratiev struct { 3682be7d22fSVladimir Kondratiev u8 channel; 3692be7d22fSVladimir Kondratiev u8 reserved; 370b874ddecSLior David } channel_list[0]; 3712be7d22fSVladimir Kondratiev } __packed; 3722be7d22fSVladimir Kondratiev 373b874ddecSLior David /* WMI_SET_PROBED_SSID_CMDID */ 374b8023177SVladimir Kondratiev #define MAX_PROBED_SSID_INDEX (3) 3752be7d22fSVladimir Kondratiev 3762be7d22fSVladimir Kondratiev enum wmi_ssid_flag { 377b874ddecSLior David /* disables entry */ 378b874ddecSLior David WMI_SSID_FLAG_DISABLE = 0x00, 379b874ddecSLior David /* probes specified ssid */ 380b874ddecSLior David WMI_SSID_FLAG_SPECIFIC = 0x01, 381b874ddecSLior David /* probes for any ssid */ 382b874ddecSLior David WMI_SSID_FLAG_ANY = 0x02, 3832be7d22fSVladimir Kondratiev }; 3842be7d22fSVladimir Kondratiev 3852be7d22fSVladimir Kondratiev struct wmi_probed_ssid_cmd { 386b874ddecSLior David /* 0 to MAX_PROBED_SSID_INDEX */ 387b874ddecSLior David u8 entry_index; 388b874ddecSLior David /* enum wmi_ssid_flag */ 389b874ddecSLior David u8 flag; 3902be7d22fSVladimir Kondratiev u8 ssid_len; 3912be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 3922be7d22fSVladimir Kondratiev } __packed; 3932be7d22fSVladimir Kondratiev 394b874ddecSLior David /* WMI_SET_APPIE_CMDID 3952be7d22fSVladimir Kondratiev * Add Application specified IE to a management frame 3962be7d22fSVladimir Kondratiev */ 397b8023177SVladimir Kondratiev #define WMI_MAX_IE_LEN (1024) 398b8023177SVladimir Kondratiev 399b874ddecSLior David /* Frame Types */ 400b8023177SVladimir Kondratiev enum wmi_mgmt_frame_type { 401b874ddecSLior David WMI_FRAME_BEACON = 0x00, 402b874ddecSLior David WMI_FRAME_PROBE_REQ = 0x01, 403b874ddecSLior David WMI_FRAME_PROBE_RESP = 0x02, 404b874ddecSLior David WMI_FRAME_ASSOC_REQ = 0x03, 405b874ddecSLior David WMI_FRAME_ASSOC_RESP = 0x04, 406b874ddecSLior David WMI_NUM_MGMT_FRAME = 0x05, 407b8023177SVladimir Kondratiev }; 408b8023177SVladimir Kondratiev 4092be7d22fSVladimir Kondratiev struct wmi_set_appie_cmd { 410b874ddecSLior David /* enum wmi_mgmt_frame_type */ 411b874ddecSLior David u8 mgmt_frm_type; 4122be7d22fSVladimir Kondratiev u8 reserved; 413b874ddecSLior David /* Length of the IE to be added to MGMT frame */ 414b874ddecSLior David __le16 ie_len; 4152be7d22fSVladimir Kondratiev u8 ie_info[0]; 4162be7d22fSVladimir Kondratiev } __packed; 4172be7d22fSVladimir Kondratiev 418b874ddecSLior David /* WMI_PXMT_RANGE_CFG_CMDID */ 4192be7d22fSVladimir Kondratiev struct wmi_pxmt_range_cfg_cmd { 4202be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 4212be7d22fSVladimir Kondratiev __le16 range; 4222be7d22fSVladimir Kondratiev } __packed; 4232be7d22fSVladimir Kondratiev 424b874ddecSLior David /* WMI_PXMT_SNR2_RANGE_CFG_CMDID */ 4252be7d22fSVladimir Kondratiev struct wmi_pxmt_snr2_range_cfg_cmd { 426b874ddecSLior David s8 snr2range_arr[2]; 4272be7d22fSVladimir Kondratiev } __packed; 4282be7d22fSVladimir Kondratiev 429b874ddecSLior David /* WMI_RF_MGMT_CMDID */ 4302be7d22fSVladimir Kondratiev enum wmi_rf_mgmt_type { 431b874ddecSLior David WMI_RF_MGMT_W_DISABLE = 0x00, 432b874ddecSLior David WMI_RF_MGMT_W_ENABLE = 0x01, 433b874ddecSLior David WMI_RF_MGMT_GET_STATUS = 0x02, 4342be7d22fSVladimir Kondratiev }; 4352be7d22fSVladimir Kondratiev 436b874ddecSLior David /* WMI_RF_MGMT_CMDID */ 4372be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_cmd { 4382be7d22fSVladimir Kondratiev __le32 rf_mgmt_type; 4392be7d22fSVladimir Kondratiev } __packed; 4402be7d22fSVladimir Kondratiev 441b874ddecSLior David /* WMI_THERMAL_THROTTLING_CTRL_CMDID */ 4428c679675SVladimir Kondratiev #define THERMAL_THROTTLING_USE_DEFAULT_MAX_TXOP_LENGTH (0xFFFFFFFF) 4438c679675SVladimir Kondratiev 444b874ddecSLior David /* WMI_THERMAL_THROTTLING_CTRL_CMDID */ 4458c679675SVladimir Kondratiev struct wmi_thermal_throttling_ctrl_cmd { 4468c679675SVladimir Kondratiev __le32 time_on_usec; 4478c679675SVladimir Kondratiev __le32 time_off_usec; 4488c679675SVladimir Kondratiev __le32 max_txop_length_usec; 4498c679675SVladimir Kondratiev } __packed; 4508c679675SVladimir Kondratiev 451b874ddecSLior David /* WMI_RF_RX_TEST_CMDID */ 452b8023177SVladimir Kondratiev struct wmi_rf_rx_test_cmd { 453b8023177SVladimir Kondratiev __le32 sector; 454b8023177SVladimir Kondratiev } __packed; 455b8023177SVladimir Kondratiev 456b874ddecSLior David /* WMI_CORR_MEASURE_CMDID */ 457b8023177SVladimir Kondratiev struct wmi_corr_measure_cmd { 458b874ddecSLior David __le32 freq_mhz; 459b8023177SVladimir Kondratiev __le32 length_samples; 460b8023177SVladimir Kondratiev __le32 iterations; 461b8023177SVladimir Kondratiev } __packed; 462b8023177SVladimir Kondratiev 463b874ddecSLior David /* WMI_SET_SSID_CMDID */ 4642be7d22fSVladimir Kondratiev struct wmi_set_ssid_cmd { 4652be7d22fSVladimir Kondratiev __le32 ssid_len; 4662be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 4672be7d22fSVladimir Kondratiev } __packed; 4682be7d22fSVladimir Kondratiev 469b874ddecSLior David /* WMI_SET_PCP_CHANNEL_CMDID */ 4702be7d22fSVladimir Kondratiev struct wmi_set_pcp_channel_cmd { 4712be7d22fSVladimir Kondratiev u8 channel; 4722be7d22fSVladimir Kondratiev u8 reserved[3]; 4732be7d22fSVladimir Kondratiev } __packed; 4742be7d22fSVladimir Kondratiev 475b874ddecSLior David /* WMI_BCON_CTRL_CMDID */ 4762be7d22fSVladimir Kondratiev struct wmi_bcon_ctrl_cmd { 4772be7d22fSVladimir Kondratiev __le16 bcon_interval; 4782be7d22fSVladimir Kondratiev __le16 frag_num; 4792be7d22fSVladimir Kondratiev __le64 ss_mask; 4802be7d22fSVladimir Kondratiev u8 network_type; 4816c2faf09SVladimir Kondratiev u8 pcp_max_assoc_sta; 4822be7d22fSVladimir Kondratiev u8 disable_sec_offload; 4832be7d22fSVladimir Kondratiev u8 disable_sec; 484b874ddecSLior David u8 hidden_ssid; 485b874ddecSLior David u8 is_go; 486b874ddecSLior David u8 reserved[2]; 4872be7d22fSVladimir Kondratiev } __packed; 4882be7d22fSVladimir Kondratiev 489b874ddecSLior David /* WMI_PORT_ALLOCATE_CMDID */ 490b8023177SVladimir Kondratiev enum wmi_port_role { 491b874ddecSLior David WMI_PORT_STA = 0x00, 492b874ddecSLior David WMI_PORT_PCP = 0x01, 493b874ddecSLior David WMI_PORT_AP = 0x02, 494b874ddecSLior David WMI_PORT_P2P_DEV = 0x03, 495b874ddecSLior David WMI_PORT_P2P_CLIENT = 0x04, 496b874ddecSLior David WMI_PORT_P2P_GO = 0x05, 497b8023177SVladimir Kondratiev }; 498b8023177SVladimir Kondratiev 499b874ddecSLior David /* WMI_PORT_ALLOCATE_CMDID */ 500b8023177SVladimir Kondratiev struct wmi_port_allocate_cmd { 501b8023177SVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 502b8023177SVladimir Kondratiev u8 port_role; 5036c2faf09SVladimir Kondratiev u8 mid; 504b8023177SVladimir Kondratiev } __packed; 505b8023177SVladimir Kondratiev 506b874ddecSLior David /* WMI_PORT_DELETE_CMDID */ 507b874ddecSLior David struct wmi_port_delete_cmd { 508b8023177SVladimir Kondratiev u8 mid; 509b8023177SVladimir Kondratiev u8 reserved[3]; 510b8023177SVladimir Kondratiev } __packed; 511b8023177SVladimir Kondratiev 5120163b031SMaya Erez /* WMI_TRAFFIC_DEFERRAL_CMDID */ 5130163b031SMaya Erez struct wmi_traffic_deferral_cmd { 5140163b031SMaya Erez /* Bit vector: bit[0] - wake on Unicast, bit[1] - wake on Broadcast */ 5150163b031SMaya Erez u8 wakeup_trigger; 5160163b031SMaya Erez } __packed; 5170163b031SMaya Erez 518b874ddecSLior David /* WMI_P2P_CFG_CMDID */ 519b8023177SVladimir Kondratiev enum wmi_discovery_mode { 520b874ddecSLior David WMI_DISCOVERY_MODE_NON_OFFLOAD = 0x00, 521b874ddecSLior David WMI_DISCOVERY_MODE_OFFLOAD = 0x01, 522b874ddecSLior David WMI_DISCOVERY_MODE_PEER2PEER = 0x02, 523b8023177SVladimir Kondratiev }; 524b8023177SVladimir Kondratiev 525b8023177SVladimir Kondratiev struct wmi_p2p_cfg_cmd { 526b874ddecSLior David /* enum wmi_discovery_mode */ 527b874ddecSLior David u8 discovery_mode; 528b8023177SVladimir Kondratiev u8 channel; 529b874ddecSLior David /* base to listen/search duration calculation */ 530b874ddecSLior David __le16 bcon_interval; 531b8023177SVladimir Kondratiev } __packed; 532b8023177SVladimir Kondratiev 533b874ddecSLior David /* WMI_POWER_MGMT_CFG_CMDID */ 534b8023177SVladimir Kondratiev enum wmi_power_source_type { 535b874ddecSLior David WMI_POWER_SOURCE_BATTERY = 0x00, 536b874ddecSLior David WMI_POWER_SOURCE_OTHER = 0x01, 537b8023177SVladimir Kondratiev }; 538b8023177SVladimir Kondratiev 539b8023177SVladimir Kondratiev struct wmi_power_mgmt_cfg_cmd { 540b874ddecSLior David /* enum wmi_power_source_type */ 541b874ddecSLior David u8 power_source; 542b8023177SVladimir Kondratiev u8 reserved[3]; 543b8023177SVladimir Kondratiev } __packed; 544b8023177SVladimir Kondratiev 545b874ddecSLior David /* WMI_PCP_START_CMDID */ 546b8023177SVladimir Kondratiev struct wmi_pcp_start_cmd { 547b8023177SVladimir Kondratiev __le16 bcon_interval; 5486c2faf09SVladimir Kondratiev u8 pcp_max_assoc_sta; 5498e52fe30SHamad Kadmany u8 hidden_ssid; 550b874ddecSLior David u8 is_go; 551*a52fb913SLior David u8 reserved0[5]; 552*a52fb913SLior David /* abft_len override if non-0 */ 553*a52fb913SLior David u8 abft_len; 554849a564bSDedy Lansky u8 disable_ap_sme; 555b8023177SVladimir Kondratiev u8 network_type; 556b8023177SVladimir Kondratiev u8 channel; 557b8023177SVladimir Kondratiev u8 disable_sec_offload; 558b8023177SVladimir Kondratiev u8 disable_sec; 559b8023177SVladimir Kondratiev } __packed; 560b8023177SVladimir Kondratiev 561b874ddecSLior David /* WMI_SW_TX_REQ_CMDID */ 5622be7d22fSVladimir Kondratiev struct wmi_sw_tx_req_cmd { 5632be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 5642be7d22fSVladimir Kondratiev __le16 len; 5652be7d22fSVladimir Kondratiev u8 payload[0]; 5662be7d22fSVladimir Kondratiev } __packed; 5672be7d22fSVladimir Kondratiev 5682be7d22fSVladimir Kondratiev struct wmi_sw_ring_cfg { 5692be7d22fSVladimir Kondratiev __le64 ring_mem_base; 5702be7d22fSVladimir Kondratiev __le16 ring_size; 5712be7d22fSVladimir Kondratiev __le16 max_mpdu_size; 5722be7d22fSVladimir Kondratiev } __packed; 5732be7d22fSVladimir Kondratiev 574b874ddecSLior David /* wmi_vring_cfg_schd */ 5752be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd { 5762be7d22fSVladimir Kondratiev __le16 priority; 5772be7d22fSVladimir Kondratiev __le16 timeslot_us; 5782be7d22fSVladimir Kondratiev } __packed; 5792be7d22fSVladimir Kondratiev 5802be7d22fSVladimir Kondratiev enum wmi_vring_cfg_encap_trans_type { 581b874ddecSLior David WMI_VRING_ENC_TYPE_802_3 = 0x00, 582b874ddecSLior David WMI_VRING_ENC_TYPE_NATIVE_WIFI = 0x01, 5832be7d22fSVladimir Kondratiev }; 5842be7d22fSVladimir Kondratiev 5852be7d22fSVladimir Kondratiev enum wmi_vring_cfg_ds_cfg { 586b874ddecSLior David WMI_VRING_DS_PBSS = 0x00, 587b874ddecSLior David WMI_VRING_DS_STATION = 0x01, 588b874ddecSLior David WMI_VRING_DS_AP = 0x02, 589b874ddecSLior David WMI_VRING_DS_ADDR4 = 0x03, 5902be7d22fSVladimir Kondratiev }; 5912be7d22fSVladimir Kondratiev 5922be7d22fSVladimir Kondratiev enum wmi_vring_cfg_nwifi_ds_trans_type { 593b874ddecSLior David WMI_NWIFI_TX_TRANS_MODE_NO = 0x00, 594b874ddecSLior David WMI_NWIFI_TX_TRANS_MODE_AP2PBSS = 0x01, 595b874ddecSLior David WMI_NWIFI_TX_TRANS_MODE_STA2PBSS = 0x02, 5962be7d22fSVladimir Kondratiev }; 5972be7d22fSVladimir Kondratiev 5982be7d22fSVladimir Kondratiev enum wmi_vring_cfg_schd_params_priority { 599b874ddecSLior David WMI_SCH_PRIO_REGULAR = 0x00, 600b874ddecSLior David WMI_SCH_PRIO_HIGH = 0x01, 6012be7d22fSVladimir Kondratiev }; 6022be7d22fSVladimir Kondratiev 6032be7d22fSVladimir Kondratiev #define CIDXTID_CID_POS (0) 6042be7d22fSVladimir Kondratiev #define CIDXTID_CID_LEN (4) 6052be7d22fSVladimir Kondratiev #define CIDXTID_CID_MSK (0xF) 6062be7d22fSVladimir Kondratiev #define CIDXTID_TID_POS (4) 6072be7d22fSVladimir Kondratiev #define CIDXTID_TID_LEN (4) 6082be7d22fSVladimir Kondratiev #define CIDXTID_TID_MSK (0xF0) 6092be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_POS (0) 6102be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_LEN (1) 6112be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_MSK (0x1) 6122be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_POS (1) 6132be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_LEN (1) 6142be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_MSK (0x2) 6152be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_POS (0) 6162be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_LEN (6) 6172be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_MSK (0x3F) 618b874ddecSLior David 619b874ddecSLior David struct wmi_vring_cfg { 620b874ddecSLior David struct wmi_sw_ring_cfg tx_sw_ring; 621b874ddecSLior David /* 0-23 vrings */ 622b874ddecSLior David u8 ringid; 623b874ddecSLior David u8 cidxtid; 624b874ddecSLior David u8 encap_trans_type; 625b874ddecSLior David /* 802.3 DS cfg */ 626b874ddecSLior David u8 ds_cfg; 627b874ddecSLior David u8 nwifi_ds_trans_type; 628b874ddecSLior David u8 mac_ctrl; 6292be7d22fSVladimir Kondratiev u8 to_resolution; 6302be7d22fSVladimir Kondratiev u8 agg_max_wsize; 6312be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd schd_params; 6322be7d22fSVladimir Kondratiev } __packed; 6332be7d22fSVladimir Kondratiev 6342be7d22fSVladimir Kondratiev enum wmi_vring_cfg_cmd_action { 635b874ddecSLior David WMI_VRING_CMD_ADD = 0x00, 636b874ddecSLior David WMI_VRING_CMD_MODIFY = 0x01, 637b874ddecSLior David WMI_VRING_CMD_DELETE = 0x02, 6382be7d22fSVladimir Kondratiev }; 6392be7d22fSVladimir Kondratiev 640b874ddecSLior David /* WMI_VRING_CFG_CMDID */ 6412be7d22fSVladimir Kondratiev struct wmi_vring_cfg_cmd { 6422be7d22fSVladimir Kondratiev __le32 action; 6432be7d22fSVladimir Kondratiev struct wmi_vring_cfg vring_cfg; 6442be7d22fSVladimir Kondratiev } __packed; 6452be7d22fSVladimir Kondratiev 64662bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg { 64762bfd300SVladimir Kondratiev struct wmi_sw_ring_cfg tx_sw_ring; 648b874ddecSLior David /* 0-23 vrings */ 649b874ddecSLior David u8 ringid; 65062bfd300SVladimir Kondratiev u8 encap_trans_type; 651b874ddecSLior David /* 802.3 DS cfg */ 652b874ddecSLior David u8 ds_cfg; 65362bfd300SVladimir Kondratiev u8 nwifi_ds_trans_type; 65462bfd300SVladimir Kondratiev } __packed; 65562bfd300SVladimir Kondratiev 656b874ddecSLior David /* WMI_BCAST_VRING_CFG_CMDID */ 65762bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg_cmd { 65862bfd300SVladimir Kondratiev __le32 action; 65962bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg vring_cfg; 66062bfd300SVladimir Kondratiev } __packed; 66162bfd300SVladimir Kondratiev 662b874ddecSLior David /* WMI_VRING_BA_EN_CMDID */ 6632be7d22fSVladimir Kondratiev struct wmi_vring_ba_en_cmd { 6642be7d22fSVladimir Kondratiev u8 ringid; 6652be7d22fSVladimir Kondratiev u8 agg_max_wsize; 6662be7d22fSVladimir Kondratiev __le16 ba_timeout; 667cbcf5866SVladimir Kondratiev u8 amsdu; 668b874ddecSLior David u8 reserved[3]; 6692be7d22fSVladimir Kondratiev } __packed; 6702be7d22fSVladimir Kondratiev 671b874ddecSLior David /* WMI_VRING_BA_DIS_CMDID */ 6722be7d22fSVladimir Kondratiev struct wmi_vring_ba_dis_cmd { 6732be7d22fSVladimir Kondratiev u8 ringid; 6742be7d22fSVladimir Kondratiev u8 reserved; 6752be7d22fSVladimir Kondratiev __le16 reason; 6762be7d22fSVladimir Kondratiev } __packed; 6772be7d22fSVladimir Kondratiev 678b874ddecSLior David /* WMI_NOTIFY_REQ_CMDID */ 6792be7d22fSVladimir Kondratiev struct wmi_notify_req_cmd { 6802be7d22fSVladimir Kondratiev u8 cid; 681b8023177SVladimir Kondratiev u8 year; 682b8023177SVladimir Kondratiev u8 month; 683b8023177SVladimir Kondratiev u8 day; 6842be7d22fSVladimir Kondratiev __le32 interval_usec; 685b8023177SVladimir Kondratiev u8 hour; 686b8023177SVladimir Kondratiev u8 minute; 687b8023177SVladimir Kondratiev u8 second; 688b8023177SVladimir Kondratiev u8 miliseconds; 6892be7d22fSVladimir Kondratiev } __packed; 6902be7d22fSVladimir Kondratiev 691b874ddecSLior David /* WMI_CFG_RX_CHAIN_CMDID */ 6922be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_mode { 693b874ddecSLior David WMI_SNIFFER_OFF = 0x00, 694b874ddecSLior David WMI_SNIFFER_ON = 0x01, 6952be7d22fSVladimir Kondratiev }; 6962be7d22fSVladimir Kondratiev 6972be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_info_mode { 698b874ddecSLior David WMI_SNIFFER_PHY_INFO_DISABLED = 0x00, 699b874ddecSLior David WMI_SNIFFER_PHY_INFO_ENABLED = 0x01, 7002be7d22fSVladimir Kondratiev }; 7012be7d22fSVladimir Kondratiev 7022be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_support { 703b874ddecSLior David WMI_SNIFFER_CP = 0x00, 704b874ddecSLior David WMI_SNIFFER_DP = 0x01, 705b874ddecSLior David WMI_SNIFFER_BOTH_PHYS = 0x02, 7062be7d22fSVladimir Kondratiev }; 7072be7d22fSVladimir Kondratiev 708b874ddecSLior David /* wmi_sniffer_cfg */ 7092be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg { 710b874ddecSLior David /* enum wmi_sniffer_cfg_mode */ 711b874ddecSLior David __le32 mode; 712b874ddecSLior David /* enum wmi_sniffer_cfg_phy_info_mode */ 713b874ddecSLior David __le32 phy_info_mode; 714b874ddecSLior David /* enum wmi_sniffer_cfg_phy_support */ 715b874ddecSLior David __le32 phy_support; 7162be7d22fSVladimir Kondratiev u8 channel; 7172be7d22fSVladimir Kondratiev u8 reserved[3]; 7182be7d22fSVladimir Kondratiev } __packed; 7192be7d22fSVladimir Kondratiev 7202be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_action { 721b874ddecSLior David WMI_RX_CHAIN_ADD = 0x00, 722b874ddecSLior David WMI_RX_CHAIN_DEL = 0x01, 7232be7d22fSVladimir Kondratiev }; 7242be7d22fSVladimir Kondratiev 7252be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_decap_trans_type { 726b874ddecSLior David WMI_DECAP_TYPE_802_3 = 0x00, 727b874ddecSLior David WMI_DECAP_TYPE_NATIVE_WIFI = 0x01, 728b874ddecSLior David WMI_DECAP_TYPE_NONE = 0x02, 7292be7d22fSVladimir Kondratiev }; 7302be7d22fSVladimir Kondratiev 7312be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_nwifi_ds_trans_type { 732b874ddecSLior David WMI_NWIFI_RX_TRANS_MODE_NO = 0x00, 733b874ddecSLior David WMI_NWIFI_RX_TRANS_MODE_PBSS2AP = 0x01, 734b874ddecSLior David WMI_NWIFI_RX_TRANS_MODE_PBSS2STA = 0x02, 7352be7d22fSVladimir Kondratiev }; 7362be7d22fSVladimir Kondratiev 737b8023177SVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_reorder_type { 738b874ddecSLior David WMI_RX_HW_REORDER = 0x00, 739b874ddecSLior David WMI_RX_SW_REORDER = 0x01, 740b8023177SVladimir Kondratiev }; 741b8023177SVladimir Kondratiev 7422be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_POS (0) 7432be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_LEN (1) 7442be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_MSK (0x1) 745c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_POS (1) 746c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_LEN (1) 747c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_MSK (0x2) 7482be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_POS (0) 7492be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_LEN (1) 7502be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_MSK (0x1) 7512be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_POS (1) 7522be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_LEN (1) 7532be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_MSK (0x2) 7542be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_POS (0) 7552be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_LEN (1) 7562be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_MSK (0x1) 7572be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_POS (1) 7582be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_LEN (1) 7592be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_MSK (0x2) 7602be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_POS (0) 7612be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_LEN (1) 7622be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_MSK (0x1) 7632be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_POS (1) 7642be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_LEN (1) 7652be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_MSK (0x2) 7662be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_POS (2) 7672be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_LEN (1) 7682be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_MSK (0x4) 7692be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_POS (3) 7702be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_LEN (1) 7712be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_MSK (0x8) 7722be7d22fSVladimir Kondratiev 773b874ddecSLior David /* WMI_CFG_RX_CHAIN_CMDID */ 774b874ddecSLior David struct wmi_cfg_rx_chain_cmd { 775b874ddecSLior David __le32 action; 776b874ddecSLior David struct wmi_sw_ring_cfg rx_sw_ring; 777b874ddecSLior David u8 mid; 778b874ddecSLior David u8 decap_trans_type; 779b874ddecSLior David u8 l2_802_3_offload_ctrl; 780b874ddecSLior David u8 l2_nwifi_offload_ctrl; 781b874ddecSLior David u8 vlan_id; 782b874ddecSLior David u8 nwifi_ds_trans_type; 783b874ddecSLior David u8 l3_l4_ctrl; 784b874ddecSLior David u8 ring_ctrl; 7852be7d22fSVladimir Kondratiev __le16 prefetch_thrsh; 7862be7d22fSVladimir Kondratiev __le16 wb_thrsh; 7872be7d22fSVladimir Kondratiev __le32 itr_value; 7882be7d22fSVladimir Kondratiev __le16 host_thrsh; 789b8023177SVladimir Kondratiev u8 reorder_type; 790b8023177SVladimir Kondratiev u8 reserved; 7912be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg sniffer_cfg; 792b874ddecSLior David __le16 max_rx_pl_per_desc; 7932be7d22fSVladimir Kondratiev } __packed; 7942be7d22fSVladimir Kondratiev 795b874ddecSLior David /* WMI_RCP_ADDBA_RESP_CMDID */ 7962be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_cmd { 7972be7d22fSVladimir Kondratiev u8 cidxtid; 7982be7d22fSVladimir Kondratiev u8 dialog_token; 7992be7d22fSVladimir Kondratiev __le16 status_code; 800b874ddecSLior David /* ieee80211_ba_parameterset field to send */ 801b874ddecSLior David __le16 ba_param_set; 8022be7d22fSVladimir Kondratiev __le16 ba_timeout; 8032be7d22fSVladimir Kondratiev } __packed; 8042be7d22fSVladimir Kondratiev 805b874ddecSLior David /* WMI_RCP_DELBA_CMDID */ 8062be7d22fSVladimir Kondratiev struct wmi_rcp_delba_cmd { 8072be7d22fSVladimir Kondratiev u8 cidxtid; 8082be7d22fSVladimir Kondratiev u8 reserved; 8092be7d22fSVladimir Kondratiev __le16 reason; 8102be7d22fSVladimir Kondratiev } __packed; 8112be7d22fSVladimir Kondratiev 812b874ddecSLior David /* WMI_RCP_ADDBA_REQ_CMDID */ 8132be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_cmd { 8142be7d22fSVladimir Kondratiev u8 cidxtid; 8152be7d22fSVladimir Kondratiev u8 dialog_token; 8162be7d22fSVladimir Kondratiev /* ieee80211_ba_parameterset field as it received */ 8172be7d22fSVladimir Kondratiev __le16 ba_param_set; 8182be7d22fSVladimir Kondratiev __le16 ba_timeout; 8192be7d22fSVladimir Kondratiev /* ieee80211_ba_seqstrl field as it received */ 8202be7d22fSVladimir Kondratiev __le16 ba_seq_ctrl; 8212be7d22fSVladimir Kondratiev } __packed; 8222be7d22fSVladimir Kondratiev 823b874ddecSLior David /* WMI_SET_MAC_ADDRESS_CMDID */ 8242be7d22fSVladimir Kondratiev struct wmi_set_mac_address_cmd { 8252be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 8262be7d22fSVladimir Kondratiev u8 reserved[2]; 8272be7d22fSVladimir Kondratiev } __packed; 8282be7d22fSVladimir Kondratiev 829b874ddecSLior David /* WMI_ECHO_CMDID 8302be7d22fSVladimir Kondratiev * Check FW is alive 8312be7d22fSVladimir Kondratiev * WMI_DEEP_ECHO_CMDID 8322be7d22fSVladimir Kondratiev * Check FW and ucode are alive 8332be7d22fSVladimir Kondratiev * Returned event: WMI_ECHO_RSP_EVENTID 8342be7d22fSVladimir Kondratiev * same event for both commands 8352be7d22fSVladimir Kondratiev */ 8362be7d22fSVladimir Kondratiev struct wmi_echo_cmd { 8372be7d22fSVladimir Kondratiev __le32 value; 8382be7d22fSVladimir Kondratiev } __packed; 8392be7d22fSVladimir Kondratiev 840b874ddecSLior David /* WMI_OTP_READ_CMDID */ 841b874ddecSLior David struct wmi_otp_read_cmd { 842b874ddecSLior David __le32 addr; 843b874ddecSLior David __le32 size; 844b874ddecSLior David __le32 values; 845b874ddecSLior David } __packed; 846b874ddecSLior David 847b874ddecSLior David /* WMI_OTP_WRITE_CMDID */ 848b874ddecSLior David struct wmi_otp_write_cmd { 849b874ddecSLior David __le32 addr; 850b874ddecSLior David __le32 size; 851b874ddecSLior David __le32 values; 852b874ddecSLior David } __packed; 853b874ddecSLior David 854b874ddecSLior David /* WMI_TEMP_SENSE_CMDID 855b8023177SVladimir Kondratiev * 856b8023177SVladimir Kondratiev * Measure MAC and radio temperatures 857b874ddecSLior David * 858b874ddecSLior David * Possible modes for temperature measurement 859b8023177SVladimir Kondratiev */ 8608c679675SVladimir Kondratiev enum wmi_temperature_measure_mode { 861b874ddecSLior David TEMPERATURE_USE_OLD_VALUE = 0x01, 862b874ddecSLior David TEMPERATURE_MEASURE_NOW = 0x02, 8638c679675SVladimir Kondratiev }; 8648c679675SVladimir Kondratiev 865b874ddecSLior David /* WMI_TEMP_SENSE_CMDID */ 866b8023177SVladimir Kondratiev struct wmi_temp_sense_cmd { 8678c679675SVladimir Kondratiev __le32 measure_baseband_en; 8688c679675SVladimir Kondratiev __le32 measure_rf_en; 8698c679675SVladimir Kondratiev __le32 measure_mode; 870b8023177SVladimir Kondratiev } __packed; 871b8023177SVladimir Kondratiev 872b874ddecSLior David enum wmi_pmc_op { 873b874ddecSLior David WMI_PMC_ALLOCATE = 0x00, 874b874ddecSLior David WMI_PMC_RELEASE = 0x01, 875dc16427bSVladimir Kondratiev }; 876dc16427bSVladimir Kondratiev 877b874ddecSLior David /* WMI_PMC_CMDID */ 878dc16427bSVladimir Kondratiev struct wmi_pmc_cmd { 879b874ddecSLior David /* enum wmi_pmc_cmd_op_type */ 880b874ddecSLior David u8 op; 881dc16427bSVladimir Kondratiev u8 reserved; 882dc16427bSVladimir Kondratiev __le16 ring_size; 883dc16427bSVladimir Kondratiev __le64 mem_base; 884dc16427bSVladimir Kondratiev } __packed; 885dc16427bSVladimir Kondratiev 88608989f96SLior David enum wmi_aoa_meas_type { 88708989f96SLior David WMI_AOA_PHASE_MEAS = 0x00, 88808989f96SLior David WMI_AOA_PHASE_AMP_MEAS = 0x01, 88908989f96SLior David }; 89008989f96SLior David 89108989f96SLior David /* WMI_AOA_MEAS_CMDID */ 89208989f96SLior David struct wmi_aoa_meas_cmd { 89308989f96SLior David u8 mac_addr[WMI_MAC_LEN]; 89408989f96SLior David /* channels IDs: 89508989f96SLior David * 0 - 58320 MHz 89608989f96SLior David * 1 - 60480 MHz 89708989f96SLior David * 2 - 62640 MHz 89808989f96SLior David */ 89908989f96SLior David u8 channel; 90008989f96SLior David /* enum wmi_aoa_meas_type */ 90108989f96SLior David u8 aoa_meas_type; 90208989f96SLior David __le32 meas_rf_mask; 90308989f96SLior David } __packed; 90408989f96SLior David 905cbf795c1SLior David /* WMI_SET_MGMT_RETRY_LIMIT_CMDID */ 906cbf795c1SLior David struct wmi_set_mgmt_retry_limit_cmd { 907cbf795c1SLior David /* MAC retransmit limit for mgmt frames */ 908cbf795c1SLior David u8 mgmt_retry_limit; 909cbf795c1SLior David /* alignment to 32b */ 910cbf795c1SLior David u8 reserved[3]; 911cbf795c1SLior David } __packed; 912cbf795c1SLior David 913849a564bSDedy Lansky /* WMI_NEW_STA_CMDID */ 914849a564bSDedy Lansky struct wmi_new_sta_cmd { 915849a564bSDedy Lansky u8 dst_mac[WMI_MAC_LEN]; 916849a564bSDedy Lansky u8 aid; 917849a564bSDedy Lansky } __packed; 918849a564bSDedy Lansky 919849a564bSDedy Lansky /* WMI_DEL_STA_CMDID */ 920849a564bSDedy Lansky struct wmi_del_sta_cmd { 921849a564bSDedy Lansky u8 dst_mac[WMI_MAC_LEN]; 922849a564bSDedy Lansky __le16 disconnect_reason; 923849a564bSDedy Lansky } __packed; 924849a564bSDedy Lansky 92508989f96SLior David enum wmi_tof_burst_duration { 92608989f96SLior David WMI_TOF_BURST_DURATION_250_USEC = 2, 92708989f96SLior David WMI_TOF_BURST_DURATION_500_USEC = 3, 92808989f96SLior David WMI_TOF_BURST_DURATION_1_MSEC = 4, 92908989f96SLior David WMI_TOF_BURST_DURATION_2_MSEC = 5, 93008989f96SLior David WMI_TOF_BURST_DURATION_4_MSEC = 6, 93108989f96SLior David WMI_TOF_BURST_DURATION_8_MSEC = 7, 93208989f96SLior David WMI_TOF_BURST_DURATION_16_MSEC = 8, 93308989f96SLior David WMI_TOF_BURST_DURATION_32_MSEC = 9, 93408989f96SLior David WMI_TOF_BURST_DURATION_64_MSEC = 10, 93508989f96SLior David WMI_TOF_BURST_DURATION_128_MSEC = 11, 93608989f96SLior David WMI_TOF_BURST_DURATION_NO_PREFERENCES = 15, 93708989f96SLior David }; 93808989f96SLior David 93908989f96SLior David enum wmi_tof_session_start_flags { 94008989f96SLior David WMI_TOF_SESSION_START_FLAG_SECURED = 0x1, 94108989f96SLior David WMI_TOF_SESSION_START_FLAG_ASAP = 0x2, 94208989f96SLior David WMI_TOF_SESSION_START_FLAG_LCI_REQ = 0x4, 94308989f96SLior David WMI_TOF_SESSION_START_FLAG_LCR_REQ = 0x8, 94408989f96SLior David }; 94508989f96SLior David 94608989f96SLior David /* WMI_TOF_SESSION_START_CMDID */ 94708989f96SLior David struct wmi_ftm_dest_info { 94808989f96SLior David u8 channel; 94908989f96SLior David /* wmi_tof_session_start_flags_e */ 95008989f96SLior David u8 flags; 95108989f96SLior David u8 initial_token; 95208989f96SLior David u8 num_of_ftm_per_burst; 95308989f96SLior David u8 num_of_bursts_exp; 95408989f96SLior David /* wmi_tof_burst_duration_e */ 95508989f96SLior David u8 burst_duration; 95608989f96SLior David /* Burst Period indicate interval between two consecutive burst 95708989f96SLior David * instances, in units of 100 ms 95808989f96SLior David */ 95908989f96SLior David __le16 burst_period; 96008989f96SLior David u8 dst_mac[WMI_MAC_LEN]; 96108989f96SLior David __le16 reserved; 96208989f96SLior David } __packed; 96308989f96SLior David 96408989f96SLior David /* WMI_TOF_SESSION_START_CMDID */ 96508989f96SLior David struct wmi_tof_session_start_cmd { 96608989f96SLior David __le32 session_id; 96708989f96SLior David u8 num_of_aoa_measures; 96808989f96SLior David u8 aoa_type; 96908989f96SLior David __le16 num_of_dest; 97008989f96SLior David u8 reserved[4]; 97108989f96SLior David struct wmi_ftm_dest_info ftm_dest_info[0]; 97208989f96SLior David } __packed; 97308989f96SLior David 97408989f96SLior David enum wmi_tof_channel_info_report_type { 97508989f96SLior David WMI_TOF_CHANNEL_INFO_TYPE_CIR = 0x1, 97608989f96SLior David WMI_TOF_CHANNEL_INFO_TYPE_RSSI = 0x2, 97708989f96SLior David WMI_TOF_CHANNEL_INFO_TYPE_SNR = 0x4, 97808989f96SLior David WMI_TOF_CHANNEL_INFO_TYPE_DEBUG_DATA = 0x8, 97908989f96SLior David WMI_TOF_CHANNEL_INFO_TYPE_VENDOR_SPECIFIC = 0x10, 98008989f96SLior David }; 98108989f96SLior David 98208989f96SLior David /* WMI_TOF_CHANNEL_INFO_CMDID */ 98308989f96SLior David struct wmi_tof_channel_info_cmd { 98408989f96SLior David /* wmi_tof_channel_info_report_type_e */ 98508989f96SLior David __le32 channel_info_report_request; 98608989f96SLior David } __packed; 98708989f96SLior David 9888ae5d62cSLior David /* WMI_TOF_SET_TX_RX_OFFSET_CMDID */ 9898ae5d62cSLior David struct wmi_tof_set_tx_rx_offset_cmd { 9908ae5d62cSLior David /* TX delay offset */ 9918ae5d62cSLior David __le32 tx_offset; 9928ae5d62cSLior David /* RX delay offset */ 9938ae5d62cSLior David __le32 rx_offset; 9948ae5d62cSLior David __le32 reserved[2]; 9958ae5d62cSLior David } __packed; 9968ae5d62cSLior David 997b874ddecSLior David /* WMI Events 9982be7d22fSVladimir Kondratiev * List of Events (target to host) 9992be7d22fSVladimir Kondratiev */ 10002be7d22fSVladimir Kondratiev enum wmi_event_id { 10012be7d22fSVladimir Kondratiev WMI_READY_EVENTID = 0x1001, 10022be7d22fSVladimir Kondratiev WMI_CONNECT_EVENTID = 0x1002, 10032be7d22fSVladimir Kondratiev WMI_DISCONNECT_EVENTID = 0x1003, 1004b874ddecSLior David WMI_SCAN_COMPLETE_EVENTID = 0x100A, 1005b874ddecSLior David WMI_REPORT_STATISTICS_EVENTID = 0x100B, 10062be7d22fSVladimir Kondratiev WMI_RD_MEM_RSP_EVENTID = 0x1800, 10072be7d22fSVladimir Kondratiev WMI_FW_READY_EVENTID = 0x1801, 1008b874ddecSLior David WMI_EXIT_FAST_MEM_ACC_MODE_EVENTID = 0x200, 10092be7d22fSVladimir Kondratiev WMI_ECHO_RSP_EVENTID = 0x1803, 1010b874ddecSLior David WMI_FS_TUNE_DONE_EVENTID = 0x180A, 1011b874ddecSLior David WMI_CORR_MEASURE_EVENTID = 0x180B, 1012b874ddecSLior David WMI_READ_RSSI_EVENTID = 0x180C, 1013b874ddecSLior David WMI_TEMP_SENSE_DONE_EVENTID = 0x180E, 1014b874ddecSLior David WMI_DC_CALIB_DONE_EVENTID = 0x180F, 10152be7d22fSVladimir Kondratiev WMI_IQ_TX_CALIB_DONE_EVENTID = 0x1811, 10162be7d22fSVladimir Kondratiev WMI_IQ_RX_CALIB_DONE_EVENTID = 0x1812, 10172be7d22fSVladimir Kondratiev WMI_SET_WORK_MODE_DONE_EVENTID = 0x1815, 10182be7d22fSVladimir Kondratiev WMI_LO_LEAKAGE_CALIB_DONE_EVENTID = 0x1816, 10192be7d22fSVladimir Kondratiev WMI_MARLON_R_READ_DONE_EVENTID = 0x1818, 10202be7d22fSVladimir Kondratiev WMI_MARLON_R_WRITE_DONE_EVENTID = 0x1819, 1021b874ddecSLior David WMI_MARLON_R_TXRX_SEL_DONE_EVENTID = 0x181A, 1022b874ddecSLior David WMI_SILENT_RSSI_CALIB_DONE_EVENTID = 0x181D, 1023b874ddecSLior David WMI_RF_RX_TEST_DONE_EVENTID = 0x181E, 10242be7d22fSVladimir Kondratiev WMI_CFG_RX_CHAIN_DONE_EVENTID = 0x1820, 10252be7d22fSVladimir Kondratiev WMI_VRING_CFG_DONE_EVENTID = 0x1821, 10262be7d22fSVladimir Kondratiev WMI_BA_STATUS_EVENTID = 0x1823, 10272be7d22fSVladimir Kondratiev WMI_RCP_ADDBA_REQ_EVENTID = 0x1824, 1028230d8442SVladimir Kondratiev WMI_RCP_ADDBA_RESP_SENT_EVENTID = 0x1825, 10292be7d22fSVladimir Kondratiev WMI_DELBA_EVENTID = 0x1826, 10302be7d22fSVladimir Kondratiev WMI_GET_SSID_EVENTID = 0x1828, 1031b874ddecSLior David WMI_GET_PCP_CHANNEL_EVENTID = 0x182A, 1032b874ddecSLior David WMI_SW_TX_COMPLETE_EVENTID = 0x182B, 10332be7d22fSVladimir Kondratiev WMI_READ_MAC_RXQ_EVENTID = 0x1830, 10342be7d22fSVladimir Kondratiev WMI_READ_MAC_TXQ_EVENTID = 0x1831, 10352be7d22fSVladimir Kondratiev WMI_WRITE_MAC_RXQ_EVENTID = 0x1832, 10362be7d22fSVladimir Kondratiev WMI_WRITE_MAC_TXQ_EVENTID = 0x1833, 10372be7d22fSVladimir Kondratiev WMI_WRITE_MAC_XQ_FIELD_EVENTID = 0x1834, 1038230d8442SVladimir Kondratiev WMI_BEAMFORMING_MGMT_DONE_EVENTID = 0x1836, 10392be7d22fSVladimir Kondratiev WMI_BF_TXSS_MGMT_DONE_EVENTID = 0x1837, 10402be7d22fSVladimir Kondratiev WMI_BF_RXSS_MGMT_DONE_EVENTID = 0x1839, 10412be7d22fSVladimir Kondratiev WMI_RS_MGMT_DONE_EVENTID = 0x1852, 10422be7d22fSVladimir Kondratiev WMI_RF_MGMT_STATUS_EVENTID = 0x1853, 10438c679675SVladimir Kondratiev WMI_THERMAL_THROTTLING_STATUS_EVENTID = 0x1855, 10442be7d22fSVladimir Kondratiev WMI_BF_SM_MGMT_DONE_EVENTID = 0x1838, 10452be7d22fSVladimir Kondratiev WMI_RX_MGMT_PACKET_EVENTID = 0x1840, 10466c2faf09SVladimir Kondratiev WMI_TX_MGMT_PACKET_EVENTID = 0x1841, 10470163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_WRITE_DONE_EVENTID = 0x1842, 10480163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_READ_DONE_EVENTID = 0x1843, 1049b874ddecSLior David WMI_OTP_READ_RESULT_EVENTID = 0x1856, 105010d599adSMaya Erez WMI_LED_CFG_DONE_EVENTID = 0x1858, 10512be7d22fSVladimir Kondratiev /* Performance monitoring events */ 10522be7d22fSVladimir Kondratiev WMI_DATA_PORT_OPEN_EVENTID = 0x1860, 1053230d8442SVladimir Kondratiev WMI_WBE_LINK_DOWN_EVENTID = 0x1861, 10542be7d22fSVladimir Kondratiev WMI_BF_CTRL_DONE_EVENTID = 0x1862, 10552be7d22fSVladimir Kondratiev WMI_NOTIFY_REQ_DONE_EVENTID = 0x1863, 10562be7d22fSVladimir Kondratiev WMI_GET_STATUS_DONE_EVENTID = 0x1864, 1057230d8442SVladimir Kondratiev WMI_VRING_EN_EVENTID = 0x1865, 10580163b031SMaya Erez WMI_GET_RF_STATUS_EVENTID = 0x1866, 10590163b031SMaya Erez WMI_GET_BASEBAND_TYPE_EVENTID = 0x1867, 10602be7d22fSVladimir Kondratiev WMI_UNIT_TEST_EVENTID = 0x1900, 10612be7d22fSVladimir Kondratiev WMI_FLASH_READ_DONE_EVENTID = 0x1902, 10622be7d22fSVladimir Kondratiev WMI_FLASH_WRITE_DONE_EVENTID = 0x1903, 10630163b031SMaya Erez /* Power management */ 10640163b031SMaya Erez WMI_TRAFFIC_DEFERRAL_EVENTID = 0x1904, 10650163b031SMaya Erez WMI_TRAFFIC_RESUME_EVENTID = 0x1905, 1066b8023177SVladimir Kondratiev /* P2P */ 10678c679675SVladimir Kondratiev WMI_P2P_CFG_DONE_EVENTID = 0x1910, 1068b8023177SVladimir Kondratiev WMI_PORT_ALLOCATED_EVENTID = 0x1911, 1069b8023177SVladimir Kondratiev WMI_PORT_DELETED_EVENTID = 0x1912, 1070b8023177SVladimir Kondratiev WMI_LISTEN_STARTED_EVENTID = 0x1914, 1071b8023177SVladimir Kondratiev WMI_SEARCH_STARTED_EVENTID = 0x1915, 1072b8023177SVladimir Kondratiev WMI_DISCOVERY_STARTED_EVENTID = 0x1916, 1073b8023177SVladimir Kondratiev WMI_DISCOVERY_STOPPED_EVENTID = 0x1917, 1074b8023177SVladimir Kondratiev WMI_PCP_STARTED_EVENTID = 0x1918, 1075b8023177SVladimir Kondratiev WMI_PCP_STOPPED_EVENTID = 0x1919, 1076b874ddecSLior David WMI_PCP_FACTOR_EVENTID = 0x191A, 10770163b031SMaya Erez /* Power Save Configuration Events */ 10780163b031SMaya Erez WMI_PS_DEV_PROFILE_CFG_EVENTID = 0x191C, 10790163b031SMaya Erez /* Not supported yet */ 10800163b031SMaya Erez WMI_PS_DEV_CFG_EVENTID = 0x191D, 10810163b031SMaya Erez /* Not supported yet */ 10820163b031SMaya Erez WMI_PS_DEV_CFG_READ_EVENTID = 0x191E, 10830163b031SMaya Erez /* Not supported yet */ 10840163b031SMaya Erez WMI_PS_MID_CFG_EVENTID = 0x191F, 10850163b031SMaya Erez /* Not supported yet */ 10860163b031SMaya Erez WMI_PS_MID_CFG_READ_EVENTID = 0x1920, 10870163b031SMaya Erez WMI_RS_CFG_DONE_EVENTID = 0x1921, 108808989f96SLior David WMI_GET_DETAILED_RS_RES_EVENTID = 0x1922, 108908989f96SLior David WMI_AOA_MEAS_EVENTID = 0x1923, 1090*a52fb913SLior David WMI_BRP_SET_ANT_LIMIT_EVENTID = 0x1924, 1091cbf795c1SLior David WMI_SET_MGMT_RETRY_LIMIT_EVENTID = 0x1930, 1092cbf795c1SLior David WMI_GET_MGMT_RETRY_LIMIT_EVENTID = 0x1931, 109308989f96SLior David WMI_TOF_SESSION_END_EVENTID = 0x1991, 109408989f96SLior David WMI_TOF_GET_CAPABILITIES_EVENTID = 0x1992, 109508989f96SLior David WMI_TOF_SET_LCR_EVENTID = 0x1993, 109608989f96SLior David WMI_TOF_SET_LCI_EVENTID = 0x1994, 109708989f96SLior David WMI_TOF_FTM_PER_DEST_RES_EVENTID = 0x1995, 109808989f96SLior David WMI_TOF_CHANNEL_INFO_EVENTID = 0x1996, 10998ae5d62cSLior David WMI_TOF_SET_TX_RX_OFFSET_EVENTID = 0x1997, 11008ae5d62cSLior David WMI_TOF_GET_TX_RX_OFFSET_EVENTID = 0x1998, 1101cbf795c1SLior David WMI_GET_RF_SECTOR_PARAMS_DONE_EVENTID = 0x19A0, 1102cbf795c1SLior David WMI_SET_RF_SECTOR_PARAMS_DONE_EVENTID = 0x19A1, 1103cbf795c1SLior David WMI_GET_SELECTED_RF_SECTOR_INDEX_DONE_EVENTID = 0x19A2, 1104cbf795c1SLior David WMI_SET_SELECTED_RF_SECTOR_INDEX_DONE_EVENTID = 0x19A3, 1105cbf795c1SLior David WMI_SET_RF_SECTOR_ON_DONE_EVENTID = 0x19A4, 11068ae5d62cSLior David WMI_PRIO_TX_SECTORS_ORDER_EVENTID = 0x19A5, 11078ae5d62cSLior David WMI_PRIO_TX_SECTORS_NUMBER_EVENTID = 0x19A6, 11088ae5d62cSLior David WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_EVENTID = 0x19A7, 11092be7d22fSVladimir Kondratiev WMI_SET_CHANNEL_EVENTID = 0x9000, 11102be7d22fSVladimir Kondratiev WMI_ASSOC_REQ_EVENTID = 0x9001, 11112be7d22fSVladimir Kondratiev WMI_EAPOL_RX_EVENTID = 0x9002, 11122be7d22fSVladimir Kondratiev WMI_MAC_ADDR_RESP_EVENTID = 0x9003, 11132be7d22fSVladimir Kondratiev WMI_FW_VER_EVENTID = 0x9004, 1114b874ddecSLior David WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENTID = 0x9005, 11152be7d22fSVladimir Kondratiev }; 11162be7d22fSVladimir Kondratiev 1117b874ddecSLior David /* Events data structures */ 1118b8023177SVladimir Kondratiev enum wmi_fw_status { 1119b874ddecSLior David WMI_FW_STATUS_SUCCESS = 0x00, 1120b874ddecSLior David WMI_FW_STATUS_FAILURE = 0x01, 1121b8023177SVladimir Kondratiev }; 1122b8023177SVladimir Kondratiev 1123b874ddecSLior David /* WMI_RF_MGMT_STATUS_EVENTID */ 11242be7d22fSVladimir Kondratiev enum wmi_rf_status { 1125b874ddecSLior David WMI_RF_ENABLED = 0x00, 1126b874ddecSLior David WMI_RF_DISABLED_HW = 0x01, 1127b874ddecSLior David WMI_RF_DISABLED_SW = 0x02, 1128b874ddecSLior David WMI_RF_DISABLED_HW_SW = 0x03, 11292be7d22fSVladimir Kondratiev }; 11302be7d22fSVladimir Kondratiev 1131b874ddecSLior David /* WMI_RF_MGMT_STATUS_EVENTID */ 11322be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_status_event { 11332be7d22fSVladimir Kondratiev __le32 rf_status; 11342be7d22fSVladimir Kondratiev } __packed; 11352be7d22fSVladimir Kondratiev 1136b874ddecSLior David /* WMI_THERMAL_THROTTLING_STATUS_EVENTID */ 11378c679675SVladimir Kondratiev struct wmi_thermal_throttling_status_event { 11388c679675SVladimir Kondratiev __le32 time_on_usec; 11398c679675SVladimir Kondratiev __le32 time_off_usec; 11408c679675SVladimir Kondratiev __le32 max_txop_length_usec; 11418c679675SVladimir Kondratiev } __packed; 11428c679675SVladimir Kondratiev 1143b874ddecSLior David /* WMI_GET_STATUS_DONE_EVENTID */ 11442be7d22fSVladimir Kondratiev struct wmi_get_status_done_event { 11452be7d22fSVladimir Kondratiev __le32 is_associated; 11462be7d22fSVladimir Kondratiev u8 cid; 11472be7d22fSVladimir Kondratiev u8 reserved0[3]; 11482be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 11492be7d22fSVladimir Kondratiev u8 channel; 11502be7d22fSVladimir Kondratiev u8 reserved1; 11512be7d22fSVladimir Kondratiev u8 network_type; 11522be7d22fSVladimir Kondratiev u8 reserved2[3]; 11532be7d22fSVladimir Kondratiev __le32 ssid_len; 11542be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 11552be7d22fSVladimir Kondratiev __le32 rf_status; 11562be7d22fSVladimir Kondratiev __le32 is_secured; 11572be7d22fSVladimir Kondratiev } __packed; 11582be7d22fSVladimir Kondratiev 1159b874ddecSLior David /* WMI_FW_VER_EVENTID */ 11602be7d22fSVladimir Kondratiev struct wmi_fw_ver_event { 11610163b031SMaya Erez /* FW image version */ 11620163b031SMaya Erez __le32 fw_major; 11630163b031SMaya Erez __le32 fw_minor; 11640163b031SMaya Erez __le32 fw_subminor; 11650163b031SMaya Erez __le32 fw_build; 11660163b031SMaya Erez /* FW image build time stamp */ 11670163b031SMaya Erez __le32 hour; 11680163b031SMaya Erez __le32 minute; 11690163b031SMaya Erez __le32 second; 11700163b031SMaya Erez __le32 day; 11710163b031SMaya Erez __le32 month; 11720163b031SMaya Erez __le32 year; 11730163b031SMaya Erez /* Boot Loader image version */ 11740163b031SMaya Erez __le32 bl_major; 11750163b031SMaya Erez __le32 bl_minor; 11760163b031SMaya Erez __le32 bl_subminor; 11770163b031SMaya Erez __le32 bl_build; 117808989f96SLior David /* The number of entries in the FW capabilies array */ 117908989f96SLior David u8 fw_capabilities_len; 118008989f96SLior David u8 reserved[3]; 118108989f96SLior David /* FW capabilities info 118208989f96SLior David * Must be the last member of the struct 118308989f96SLior David */ 118408989f96SLior David __le32 fw_capabilities[0]; 11850163b031SMaya Erez } __packed; 11860163b031SMaya Erez 11870163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */ 11880163b031SMaya Erez enum rf_type { 11890163b031SMaya Erez RF_UNKNOWN = 0x00, 11900163b031SMaya Erez RF_MARLON = 0x01, 11910163b031SMaya Erez RF_SPARROW = 0x02, 11920163b031SMaya Erez }; 11930163b031SMaya Erez 11940163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */ 11950163b031SMaya Erez enum board_file_rf_type { 11960163b031SMaya Erez BF_RF_MARLON = 0x00, 11970163b031SMaya Erez BF_RF_SPARROW = 0x01, 11980163b031SMaya Erez }; 11990163b031SMaya Erez 12000163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */ 12010163b031SMaya Erez enum rf_status { 12020163b031SMaya Erez RF_OK = 0x00, 12030163b031SMaya Erez RF_NO_COMM = 0x01, 12040163b031SMaya Erez RF_WRONG_BOARD_FILE = 0x02, 12050163b031SMaya Erez }; 12060163b031SMaya Erez 12070163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */ 12080163b031SMaya Erez struct wmi_get_rf_status_event { 12090163b031SMaya Erez /* enum rf_type */ 12100163b031SMaya Erez __le32 rf_type; 12110163b031SMaya Erez /* attached RFs bit vector */ 12120163b031SMaya Erez __le32 attached_rf_vector; 12130163b031SMaya Erez /* enabled RFs bit vector */ 12140163b031SMaya Erez __le32 enabled_rf_vector; 12150163b031SMaya Erez /* enum rf_status, refers to enabled RFs */ 12160163b031SMaya Erez u8 rf_status[32]; 12170163b031SMaya Erez /* enum board file RF type */ 12180163b031SMaya Erez __le32 board_file_rf_type; 12190163b031SMaya Erez /* board file platform type */ 12200163b031SMaya Erez __le32 board_file_platform_type; 12210163b031SMaya Erez /* board file version */ 12220163b031SMaya Erez __le32 board_file_version; 12230163b031SMaya Erez __le32 reserved[2]; 12240163b031SMaya Erez } __packed; 12250163b031SMaya Erez 12260163b031SMaya Erez /* WMI_GET_BASEBAND_TYPE_EVENTID */ 12270163b031SMaya Erez enum baseband_type { 12280163b031SMaya Erez BASEBAND_UNKNOWN = 0x00, 12290163b031SMaya Erez BASEBAND_SPARROW_M_A0 = 0x03, 12300163b031SMaya Erez BASEBAND_SPARROW_M_A1 = 0x04, 12310163b031SMaya Erez BASEBAND_SPARROW_M_B0 = 0x05, 12320163b031SMaya Erez BASEBAND_SPARROW_M_C0 = 0x06, 12330163b031SMaya Erez BASEBAND_SPARROW_M_D0 = 0x07, 12348ae5d62cSLior David BASEBAND_TALYN_M_A0 = 0x08, 12350163b031SMaya Erez }; 12360163b031SMaya Erez 12370163b031SMaya Erez /* WMI_GET_BASEBAND_TYPE_EVENTID */ 12380163b031SMaya Erez struct wmi_get_baseband_type_event { 12390163b031SMaya Erez /* enum baseband_type */ 12400163b031SMaya Erez __le32 baseband_type; 12412be7d22fSVladimir Kondratiev } __packed; 12422be7d22fSVladimir Kondratiev 1243b874ddecSLior David /* WMI_MAC_ADDR_RESP_EVENTID */ 12442be7d22fSVladimir Kondratiev struct wmi_mac_addr_resp_event { 12452be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 12462be7d22fSVladimir Kondratiev u8 auth_mode; 12472be7d22fSVladimir Kondratiev u8 crypt_mode; 12482be7d22fSVladimir Kondratiev __le32 offload_mode; 12492be7d22fSVladimir Kondratiev } __packed; 12502be7d22fSVladimir Kondratiev 1251b874ddecSLior David /* WMI_EAPOL_RX_EVENTID */ 12522be7d22fSVladimir Kondratiev struct wmi_eapol_rx_event { 12532be7d22fSVladimir Kondratiev u8 src_mac[WMI_MAC_LEN]; 12542be7d22fSVladimir Kondratiev __le16 eapol_len; 12552be7d22fSVladimir Kondratiev u8 eapol[0]; 12562be7d22fSVladimir Kondratiev } __packed; 12572be7d22fSVladimir Kondratiev 1258b874ddecSLior David /* WMI_READY_EVENTID */ 12592be7d22fSVladimir Kondratiev enum wmi_phy_capability { 1260b874ddecSLior David WMI_11A_CAPABILITY = 0x01, 1261b874ddecSLior David WMI_11G_CAPABILITY = 0x02, 1262b874ddecSLior David WMI_11AG_CAPABILITY = 0x03, 1263b874ddecSLior David WMI_11NA_CAPABILITY = 0x04, 1264b874ddecSLior David WMI_11NG_CAPABILITY = 0x05, 1265b874ddecSLior David WMI_11NAG_CAPABILITY = 0x06, 1266b874ddecSLior David WMI_11AD_CAPABILITY = 0x07, 1267b874ddecSLior David WMI_11N_CAPABILITY_OFFSET = 0x03, 12682be7d22fSVladimir Kondratiev }; 12692be7d22fSVladimir Kondratiev 12702be7d22fSVladimir Kondratiev struct wmi_ready_event { 12712be7d22fSVladimir Kondratiev __le32 sw_version; 12722be7d22fSVladimir Kondratiev __le32 abi_version; 12732be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 1274b874ddecSLior David /* enum wmi_phy_capability */ 1275b874ddecSLior David u8 phy_capability; 1276b8023177SVladimir Kondratiev u8 numof_additional_mids; 12772be7d22fSVladimir Kondratiev } __packed; 12782be7d22fSVladimir Kondratiev 1279b874ddecSLior David /* WMI_NOTIFY_REQ_DONE_EVENTID */ 12802be7d22fSVladimir Kondratiev struct wmi_notify_req_done_event { 1281b874ddecSLior David /* beamforming status, 0: fail; 1: OK; 2: retrying */ 1282b874ddecSLior David __le32 status; 12832be7d22fSVladimir Kondratiev __le64 tsf; 12842be7d22fSVladimir Kondratiev __le32 snr_val; 12852be7d22fSVladimir Kondratiev __le32 tx_tpt; 12862be7d22fSVladimir Kondratiev __le32 tx_goodput; 12872be7d22fSVladimir Kondratiev __le32 rx_goodput; 12882be7d22fSVladimir Kondratiev __le16 bf_mcs; 12892be7d22fSVladimir Kondratiev __le16 my_rx_sector; 12902be7d22fSVladimir Kondratiev __le16 my_tx_sector; 12912be7d22fSVladimir Kondratiev __le16 other_rx_sector; 12922be7d22fSVladimir Kondratiev __le16 other_tx_sector; 12932be7d22fSVladimir Kondratiev __le16 range; 1294b8023177SVladimir Kondratiev u8 sqi; 1295b8023177SVladimir Kondratiev u8 reserved[3]; 12962be7d22fSVladimir Kondratiev } __packed; 12972be7d22fSVladimir Kondratiev 1298b874ddecSLior David /* WMI_CONNECT_EVENTID */ 12992be7d22fSVladimir Kondratiev struct wmi_connect_event { 13002be7d22fSVladimir Kondratiev u8 channel; 13012be7d22fSVladimir Kondratiev u8 reserved0; 13022be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 13032be7d22fSVladimir Kondratiev __le16 listen_interval; 13042be7d22fSVladimir Kondratiev __le16 beacon_interval; 13052be7d22fSVladimir Kondratiev u8 network_type; 13062be7d22fSVladimir Kondratiev u8 reserved1[3]; 13072be7d22fSVladimir Kondratiev u8 beacon_ie_len; 13082be7d22fSVladimir Kondratiev u8 assoc_req_len; 13092be7d22fSVladimir Kondratiev u8 assoc_resp_len; 13102be7d22fSVladimir Kondratiev u8 cid; 1311*a52fb913SLior David u8 aid; 1312*a52fb913SLior David u8 reserved2[2]; 1313b874ddecSLior David /* not in use */ 13142be7d22fSVladimir Kondratiev u8 assoc_info[0]; 13152be7d22fSVladimir Kondratiev } __packed; 13162be7d22fSVladimir Kondratiev 1317849a564bSDedy Lansky /* disconnect_reason */ 13182be7d22fSVladimir Kondratiev enum wmi_disconnect_reason { 1319b874ddecSLior David WMI_DIS_REASON_NO_NETWORK_AVAIL = 0x01, 1320b874ddecSLior David /* bmiss */ 1321b874ddecSLior David WMI_DIS_REASON_LOST_LINK = 0x02, 1322b874ddecSLior David WMI_DIS_REASON_DISCONNECT_CMD = 0x03, 1323b874ddecSLior David WMI_DIS_REASON_BSS_DISCONNECTED = 0x04, 1324b874ddecSLior David WMI_DIS_REASON_AUTH_FAILED = 0x05, 1325b874ddecSLior David WMI_DIS_REASON_ASSOC_FAILED = 0x06, 1326b874ddecSLior David WMI_DIS_REASON_NO_RESOURCES_AVAIL = 0x07, 1327b874ddecSLior David WMI_DIS_REASON_CSERV_DISCONNECT = 0x08, 1328b874ddecSLior David WMI_DIS_REASON_INVALID_PROFILE = 0x0A, 1329b874ddecSLior David WMI_DIS_REASON_DOT11H_CHANNEL_SWITCH = 0x0B, 1330b874ddecSLior David WMI_DIS_REASON_PROFILE_MISMATCH = 0x0C, 1331b874ddecSLior David WMI_DIS_REASON_CONNECTION_EVICTED = 0x0D, 1332b874ddecSLior David WMI_DIS_REASON_IBSS_MERGE = 0x0E, 13332be7d22fSVladimir Kondratiev }; 13342be7d22fSVladimir Kondratiev 1335849a564bSDedy Lansky /* WMI_DISCONNECT_EVENTID */ 13362be7d22fSVladimir Kondratiev struct wmi_disconnect_event { 1337b874ddecSLior David /* reason code, see 802.11 spec. */ 1338b874ddecSLior David __le16 protocol_reason_status; 1339b874ddecSLior David /* set if known */ 1340b874ddecSLior David u8 bssid[WMI_MAC_LEN]; 1341b874ddecSLior David /* see enum wmi_disconnect_reason */ 1342b874ddecSLior David u8 disconnect_reason; 1343b874ddecSLior David /* last assoc req may passed to host - not in used */ 1344b874ddecSLior David u8 assoc_resp_len; 1345b874ddecSLior David /* last assoc req may passed to host - not in used */ 1346b874ddecSLior David u8 assoc_info[0]; 13472be7d22fSVladimir Kondratiev } __packed; 13482be7d22fSVladimir Kondratiev 1349b874ddecSLior David /* WMI_SCAN_COMPLETE_EVENTID */ 13506c2faf09SVladimir Kondratiev enum scan_status { 1351b874ddecSLior David WMI_SCAN_SUCCESS = 0x00, 1352b874ddecSLior David WMI_SCAN_FAILED = 0x01, 1353b874ddecSLior David WMI_SCAN_ABORTED = 0x02, 1354b874ddecSLior David WMI_SCAN_REJECTED = 0x03, 1355b874ddecSLior David WMI_SCAN_ABORT_REJECTED = 0x04, 13566c2faf09SVladimir Kondratiev }; 13576c2faf09SVladimir Kondratiev 13582be7d22fSVladimir Kondratiev struct wmi_scan_complete_event { 1359b874ddecSLior David /* enum scan_status */ 1360b874ddecSLior David __le32 status; 13612be7d22fSVladimir Kondratiev } __packed; 13622be7d22fSVladimir Kondratiev 1363b874ddecSLior David /* WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENT */ 1364b874ddecSLior David enum wmi_acs_info_bitmask { 1365b874ddecSLior David WMI_ACS_INFO_BITMASK_BEACON_FOUND = 0x01, 1366b874ddecSLior David WMI_ACS_INFO_BITMASK_BUSY_TIME = 0x02, 1367b874ddecSLior David WMI_ACS_INFO_BITMASK_TX_TIME = 0x04, 1368b874ddecSLior David WMI_ACS_INFO_BITMASK_RX_TIME = 0x08, 1369b874ddecSLior David WMI_ACS_INFO_BITMASK_NOISE = 0x10, 13702be7d22fSVladimir Kondratiev }; 13712be7d22fSVladimir Kondratiev 1372b874ddecSLior David struct scan_acs_info { 1373b874ddecSLior David u8 channel; 1374b874ddecSLior David u8 beacon_found; 1375b874ddecSLior David /* msec */ 1376b874ddecSLior David __le16 busy_time; 1377b874ddecSLior David __le16 tx_time; 1378b874ddecSLior David __le16 rx_time; 1379b874ddecSLior David u8 noise; 1380b874ddecSLior David u8 reserved[3]; 1381b874ddecSLior David } __packed; 1382b874ddecSLior David 1383b874ddecSLior David struct wmi_acs_passive_scan_complete_event { 1384b874ddecSLior David __le32 dwell_time; 1385b874ddecSLior David /* valid fields within channel info according to 1386b874ddecSLior David * their appearance in struct order 1387b874ddecSLior David */ 1388b874ddecSLior David __le16 filled; 1389b874ddecSLior David u8 num_scanned_channels; 1390b874ddecSLior David u8 reserved; 1391b874ddecSLior David struct scan_acs_info scan_info_list[0]; 1392b874ddecSLior David } __packed; 1393b874ddecSLior David 1394b874ddecSLior David /* WMI_BA_STATUS_EVENTID */ 1395b874ddecSLior David enum wmi_vring_ba_status { 1396b874ddecSLior David WMI_BA_AGREED = 0x00, 1397b874ddecSLior David WMI_BA_NON_AGREED = 0x01, 1398b874ddecSLior David /* BA_EN in middle of teardown flow */ 1399b874ddecSLior David WMI_BA_TD_WIP = 0x02, 1400b874ddecSLior David /* BA_DIS or BA_EN in middle of BA SETUP flow */ 1401b874ddecSLior David WMI_BA_SETUP_WIP = 0x03, 1402b874ddecSLior David /* BA_EN when the BA session is already active */ 1403b874ddecSLior David WMI_BA_SESSION_ACTIVE = 0x04, 1404b874ddecSLior David /* BA_DIS when the BA session is not active */ 1405b874ddecSLior David WMI_BA_SESSION_NOT_ACTIVE = 0x05, 1406b874ddecSLior David }; 1407b874ddecSLior David 1408b874ddecSLior David struct wmi_ba_status_event { 1409b874ddecSLior David /* enum wmi_vring_ba_status */ 1410b874ddecSLior David __le16 status; 14112be7d22fSVladimir Kondratiev u8 reserved[2]; 14122be7d22fSVladimir Kondratiev u8 ringid; 14132be7d22fSVladimir Kondratiev u8 agg_wsize; 14142be7d22fSVladimir Kondratiev __le16 ba_timeout; 1415cbcf5866SVladimir Kondratiev u8 amsdu; 14162be7d22fSVladimir Kondratiev } __packed; 14172be7d22fSVladimir Kondratiev 1418b874ddecSLior David /* WMI_DELBA_EVENTID */ 14192be7d22fSVladimir Kondratiev struct wmi_delba_event { 14202be7d22fSVladimir Kondratiev u8 cidxtid; 14212be7d22fSVladimir Kondratiev u8 from_initiator; 14222be7d22fSVladimir Kondratiev __le16 reason; 14232be7d22fSVladimir Kondratiev } __packed; 14242be7d22fSVladimir Kondratiev 1425b874ddecSLior David /* WMI_VRING_CFG_DONE_EVENTID */ 14262be7d22fSVladimir Kondratiev struct wmi_vring_cfg_done_event { 14272be7d22fSVladimir Kondratiev u8 ringid; 14282be7d22fSVladimir Kondratiev u8 status; 14292be7d22fSVladimir Kondratiev u8 reserved[2]; 14302be7d22fSVladimir Kondratiev __le32 tx_vring_tail_ptr; 14312be7d22fSVladimir Kondratiev } __packed; 14322be7d22fSVladimir Kondratiev 1433b874ddecSLior David /* WMI_RCP_ADDBA_RESP_SENT_EVENTID */ 14342be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_sent_event { 14352be7d22fSVladimir Kondratiev u8 cidxtid; 14362be7d22fSVladimir Kondratiev u8 reserved; 14372be7d22fSVladimir Kondratiev __le16 status; 14382be7d22fSVladimir Kondratiev } __packed; 14392be7d22fSVladimir Kondratiev 1440b874ddecSLior David /* WMI_RCP_ADDBA_REQ_EVENTID */ 14412be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_event { 14422be7d22fSVladimir Kondratiev u8 cidxtid; 14432be7d22fSVladimir Kondratiev u8 dialog_token; 1444b874ddecSLior David /* ieee80211_ba_parameterset as it received */ 1445b874ddecSLior David __le16 ba_param_set; 14462be7d22fSVladimir Kondratiev __le16 ba_timeout; 1447b874ddecSLior David /* ieee80211_ba_seqstrl field as it received */ 1448b874ddecSLior David __le16 ba_seq_ctrl; 14492be7d22fSVladimir Kondratiev } __packed; 14502be7d22fSVladimir Kondratiev 1451b874ddecSLior David /* WMI_CFG_RX_CHAIN_DONE_EVENTID */ 14522be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_done_event_status { 1453b874ddecSLior David WMI_CFG_RX_CHAIN_SUCCESS = 0x01, 14542be7d22fSVladimir Kondratiev }; 14552be7d22fSVladimir Kondratiev 14562be7d22fSVladimir Kondratiev struct wmi_cfg_rx_chain_done_event { 1457b874ddecSLior David /* V-Ring Tail pointer */ 1458b874ddecSLior David __le32 rx_ring_tail_ptr; 14592be7d22fSVladimir Kondratiev __le32 status; 14602be7d22fSVladimir Kondratiev } __packed; 14612be7d22fSVladimir Kondratiev 1462b874ddecSLior David /* WMI_WBE_LINK_DOWN_EVENTID */ 14632be7d22fSVladimir Kondratiev enum wmi_wbe_link_down_event_reason { 1464b874ddecSLior David WMI_WBE_REASON_USER_REQUEST = 0x00, 1465b874ddecSLior David WMI_WBE_REASON_RX_DISASSOC = 0x01, 1466b874ddecSLior David WMI_WBE_REASON_BAD_PHY_LINK = 0x02, 14672be7d22fSVladimir Kondratiev }; 14682be7d22fSVladimir Kondratiev 1469b874ddecSLior David /* WMI_WBE_LINK_DOWN_EVENTID */ 14702be7d22fSVladimir Kondratiev struct wmi_wbe_link_down_event { 14712be7d22fSVladimir Kondratiev u8 cid; 14722be7d22fSVladimir Kondratiev u8 reserved[3]; 14732be7d22fSVladimir Kondratiev __le32 reason; 14742be7d22fSVladimir Kondratiev } __packed; 14752be7d22fSVladimir Kondratiev 1476b874ddecSLior David /* WMI_DATA_PORT_OPEN_EVENTID */ 14772be7d22fSVladimir Kondratiev struct wmi_data_port_open_event { 14782be7d22fSVladimir Kondratiev u8 cid; 14792be7d22fSVladimir Kondratiev u8 reserved[3]; 14802be7d22fSVladimir Kondratiev } __packed; 14812be7d22fSVladimir Kondratiev 1482b874ddecSLior David /* WMI_VRING_EN_EVENTID */ 1483230d8442SVladimir Kondratiev struct wmi_vring_en_event { 1484230d8442SVladimir Kondratiev u8 vring_index; 1485230d8442SVladimir Kondratiev u8 reserved[3]; 1486230d8442SVladimir Kondratiev } __packed; 1487230d8442SVladimir Kondratiev 1488b874ddecSLior David /* WMI_GET_PCP_CHANNEL_EVENTID */ 14892be7d22fSVladimir Kondratiev struct wmi_get_pcp_channel_event { 14902be7d22fSVladimir Kondratiev u8 channel; 14912be7d22fSVladimir Kondratiev u8 reserved[3]; 14922be7d22fSVladimir Kondratiev } __packed; 14932be7d22fSVladimir Kondratiev 1494b874ddecSLior David /* WMI_P2P_CFG_DONE_EVENTID */ 14958c679675SVladimir Kondratiev struct wmi_p2p_cfg_done_event { 1496b874ddecSLior David /* wmi_fw_status */ 1497b874ddecSLior David u8 status; 14988c679675SVladimir Kondratiev u8 reserved[3]; 14998c679675SVladimir Kondratiev } __packed; 15008c679675SVladimir Kondratiev 1501b874ddecSLior David /* WMI_PORT_ALLOCATED_EVENTID */ 1502b8023177SVladimir Kondratiev struct wmi_port_allocated_event { 1503b874ddecSLior David /* wmi_fw_status */ 1504b874ddecSLior David u8 status; 1505b8023177SVladimir Kondratiev u8 reserved[3]; 1506b8023177SVladimir Kondratiev } __packed; 1507b8023177SVladimir Kondratiev 1508b874ddecSLior David /* WMI_PORT_DELETED_EVENTID */ 1509b8023177SVladimir Kondratiev struct wmi_port_deleted_event { 1510b874ddecSLior David /* wmi_fw_status */ 1511b874ddecSLior David u8 status; 1512b8023177SVladimir Kondratiev u8 reserved[3]; 1513b8023177SVladimir Kondratiev } __packed; 1514b8023177SVladimir Kondratiev 1515b874ddecSLior David /* WMI_LISTEN_STARTED_EVENTID */ 1516b8023177SVladimir Kondratiev struct wmi_listen_started_event { 1517b874ddecSLior David /* wmi_fw_status */ 1518b874ddecSLior David u8 status; 1519b8023177SVladimir Kondratiev u8 reserved[3]; 1520b8023177SVladimir Kondratiev } __packed; 1521b8023177SVladimir Kondratiev 1522b874ddecSLior David /* WMI_SEARCH_STARTED_EVENTID */ 1523b8023177SVladimir Kondratiev struct wmi_search_started_event { 1524b874ddecSLior David /* wmi_fw_status */ 1525b874ddecSLior David u8 status; 1526b8023177SVladimir Kondratiev u8 reserved[3]; 1527b8023177SVladimir Kondratiev } __packed; 1528b8023177SVladimir Kondratiev 1529b874ddecSLior David /* WMI_PCP_STARTED_EVENTID */ 1530b8023177SVladimir Kondratiev struct wmi_pcp_started_event { 1531b874ddecSLior David /* wmi_fw_status */ 1532b874ddecSLior David u8 status; 1533b8023177SVladimir Kondratiev u8 reserved[3]; 1534b8023177SVladimir Kondratiev } __packed; 1535b8023177SVladimir Kondratiev 1536b874ddecSLior David /* WMI_PCP_FACTOR_EVENTID */ 1537b8023177SVladimir Kondratiev struct wmi_pcp_factor_event { 1538b8023177SVladimir Kondratiev __le32 pcp_factor; 1539b8023177SVladimir Kondratiev } __packed; 1540b8023177SVladimir Kondratiev 15412be7d22fSVladimir Kondratiev enum wmi_sw_tx_status { 1542b874ddecSLior David WMI_TX_SW_STATUS_SUCCESS = 0x00, 1543b874ddecSLior David WMI_TX_SW_STATUS_FAILED_NO_RESOURCES = 0x01, 1544b874ddecSLior David WMI_TX_SW_STATUS_FAILED_TX = 0x02, 15452be7d22fSVladimir Kondratiev }; 15462be7d22fSVladimir Kondratiev 1547b874ddecSLior David /* WMI_SW_TX_COMPLETE_EVENTID */ 15482be7d22fSVladimir Kondratiev struct wmi_sw_tx_complete_event { 1549b874ddecSLior David /* enum wmi_sw_tx_status */ 1550b874ddecSLior David u8 status; 15512be7d22fSVladimir Kondratiev u8 reserved[3]; 15522be7d22fSVladimir Kondratiev } __packed; 15532be7d22fSVladimir Kondratiev 1554b874ddecSLior David /* WMI_CORR_MEASURE_EVENTID */ 1555b8023177SVladimir Kondratiev struct wmi_corr_measure_event { 1556b874ddecSLior David /* signed */ 1557b874ddecSLior David __le32 i; 1558b874ddecSLior David /* signed */ 1559b874ddecSLior David __le32 q; 1560b874ddecSLior David /* signed */ 1561b874ddecSLior David __le32 image_i; 1562b874ddecSLior David /* signed */ 1563b874ddecSLior David __le32 image_q; 1564b8023177SVladimir Kondratiev } __packed; 1565b8023177SVladimir Kondratiev 1566b874ddecSLior David /* WMI_READ_RSSI_EVENTID */ 1567b8023177SVladimir Kondratiev struct wmi_read_rssi_event { 1568b8023177SVladimir Kondratiev __le32 ina_rssi_adc_dbm; 1569b8023177SVladimir Kondratiev } __packed; 1570b8023177SVladimir Kondratiev 1571b874ddecSLior David /* WMI_GET_SSID_EVENTID */ 15722be7d22fSVladimir Kondratiev struct wmi_get_ssid_event { 15732be7d22fSVladimir Kondratiev __le32 ssid_len; 15742be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 15752be7d22fSVladimir Kondratiev } __packed; 15762be7d22fSVladimir Kondratiev 1577b874ddecSLior David /* wmi_rx_mgmt_info */ 15782be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_info { 15792be7d22fSVladimir Kondratiev u8 mcs; 15802be7d22fSVladimir Kondratiev s8 snr; 1581b8023177SVladimir Kondratiev u8 range; 1582b8023177SVladimir Kondratiev u8 sqi; 15832be7d22fSVladimir Kondratiev __le16 stype; 15842be7d22fSVladimir Kondratiev __le16 status; 15852be7d22fSVladimir Kondratiev __le32 len; 1586b874ddecSLior David /* Not resolved when == 0xFFFFFFFF ==> Broadcast to all MIDS */ 15872be7d22fSVladimir Kondratiev u8 qid; 1588b874ddecSLior David /* Not resolved when == 0xFFFFFFFF ==> Broadcast to all MIDS */ 15892be7d22fSVladimir Kondratiev u8 mid; 15902be7d22fSVladimir Kondratiev u8 cid; 1591b874ddecSLior David /* From Radio MNGR */ 1592b874ddecSLior David u8 channel; 15932be7d22fSVladimir Kondratiev } __packed; 15942be7d22fSVladimir Kondratiev 1595b874ddecSLior David /* wmi_otp_read_write_cmd */ 1596b874ddecSLior David struct wmi_otp_read_write_cmd { 1597b874ddecSLior David __le32 addr; 1598b874ddecSLior David __le32 size; 1599b874ddecSLior David u8 values[0]; 1600b874ddecSLior David } __packed; 1601b874ddecSLior David 1602b874ddecSLior David /* WMI_OTP_READ_RESULT_EVENTID */ 1603b874ddecSLior David struct wmi_otp_read_result_event { 1604b874ddecSLior David u8 payload[0]; 1605b874ddecSLior David } __packed; 1606b874ddecSLior David 1607b874ddecSLior David /* WMI_TX_MGMT_PACKET_EVENTID */ 16086c2faf09SVladimir Kondratiev struct wmi_tx_mgmt_packet_event { 16096c2faf09SVladimir Kondratiev u8 payload[0]; 16106c2faf09SVladimir Kondratiev } __packed; 16116c2faf09SVladimir Kondratiev 1612b874ddecSLior David /* WMI_RX_MGMT_PACKET_EVENTID */ 16132be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_packet_event { 16142be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_info info; 16152be7d22fSVladimir Kondratiev u8 payload[0]; 16162be7d22fSVladimir Kondratiev } __packed; 16172be7d22fSVladimir Kondratiev 1618b874ddecSLior David /* WMI_ECHO_RSP_EVENTID */ 1619b874ddecSLior David struct wmi_echo_rsp_event { 16202be7d22fSVladimir Kondratiev __le32 echoed_value; 16212be7d22fSVladimir Kondratiev } __packed; 16222be7d22fSVladimir Kondratiev 1623b874ddecSLior David /* WMI_TEMP_SENSE_DONE_EVENTID 1624b8023177SVladimir Kondratiev * 1625b8023177SVladimir Kondratiev * Measure MAC and radio temperatures 1626b8023177SVladimir Kondratiev */ 1627b8023177SVladimir Kondratiev struct wmi_temp_sense_done_event { 1628b874ddecSLior David /* Temperature times 1000 (actual temperature will be achieved by 1629b874ddecSLior David * dividing the value by 1000) 1630b874ddecSLior David */ 16318c679675SVladimir Kondratiev __le32 baseband_t1000; 1632b874ddecSLior David /* Temperature times 1000 (actual temperature will be achieved by 1633b874ddecSLior David * dividing the value by 1000) 1634b874ddecSLior David */ 16358c679675SVladimir Kondratiev __le32 rf_t1000; 1636b8023177SVladimir Kondratiev } __packed; 1637b8023177SVladimir Kondratiev 1638b874ddecSLior David #define WMI_SCAN_DWELL_TIME_MS (100) 1639b874ddecSLior David #define WMI_SURVEY_TIMEOUT_MS (10000) 1640b874ddecSLior David 1641b874ddecSLior David enum wmi_hidden_ssid { 1642b874ddecSLior David WMI_HIDDEN_SSID_DISABLED = 0x00, 1643b874ddecSLior David WMI_HIDDEN_SSID_SEND_EMPTY = 0x10, 1644b874ddecSLior David WMI_HIDDEN_SSID_CLEAR = 0xFE, 1645b874ddecSLior David }; 1646b874ddecSLior David 164710d599adSMaya Erez /* WMI_LED_CFG_CMDID 164810d599adSMaya Erez * 164910d599adSMaya Erez * Configure LED On\Off\Blinking operation 165010d599adSMaya Erez * 165110d599adSMaya Erez * Returned events: 165210d599adSMaya Erez * - WMI_LED_CFG_DONE_EVENTID 165310d599adSMaya Erez */ 165410d599adSMaya Erez enum led_mode { 165510d599adSMaya Erez LED_DISABLE = 0x00, 165610d599adSMaya Erez LED_ENABLE = 0x01, 165710d599adSMaya Erez }; 165810d599adSMaya Erez 165910d599adSMaya Erez /* The names of the led as 166010d599adSMaya Erez * described on HW schemes. 166110d599adSMaya Erez */ 166210d599adSMaya Erez enum wmi_led_id { 166310d599adSMaya Erez WMI_LED_WLAN = 0x00, 166410d599adSMaya Erez WMI_LED_WPAN = 0x01, 166510d599adSMaya Erez WMI_LED_WWAN = 0x02, 166610d599adSMaya Erez }; 166710d599adSMaya Erez 166810d599adSMaya Erez /* Led polarity mode. */ 166910d599adSMaya Erez enum wmi_led_polarity { 167010d599adSMaya Erez LED_POLARITY_HIGH_ACTIVE = 0x00, 167110d599adSMaya Erez LED_POLARITY_LOW_ACTIVE = 0x01, 167210d599adSMaya Erez }; 167310d599adSMaya Erez 167410d599adSMaya Erez /* Combination of on and off 167510d599adSMaya Erez * creates the blinking period 167610d599adSMaya Erez */ 167710d599adSMaya Erez struct wmi_led_blink_mode { 167810d599adSMaya Erez __le32 blink_on; 167910d599adSMaya Erez __le32 blink_off; 168010d599adSMaya Erez } __packed; 168110d599adSMaya Erez 168210d599adSMaya Erez /* WMI_LED_CFG_CMDID */ 168310d599adSMaya Erez struct wmi_led_cfg_cmd { 168410d599adSMaya Erez /* enum led_mode_e */ 168510d599adSMaya Erez u8 led_mode; 168610d599adSMaya Erez /* enum wmi_led_id_e */ 168710d599adSMaya Erez u8 id; 168810d599adSMaya Erez /* slow speed blinking combination */ 168910d599adSMaya Erez struct wmi_led_blink_mode slow_blink_cfg; 169010d599adSMaya Erez /* medium speed blinking combination */ 169110d599adSMaya Erez struct wmi_led_blink_mode medium_blink_cfg; 169210d599adSMaya Erez /* high speed blinking combination */ 169310d599adSMaya Erez struct wmi_led_blink_mode fast_blink_cfg; 169410d599adSMaya Erez /* polarity of the led */ 169510d599adSMaya Erez u8 led_polarity; 169610d599adSMaya Erez /* reserved */ 169710d599adSMaya Erez u8 reserved; 169810d599adSMaya Erez } __packed; 169910d599adSMaya Erez 170010d599adSMaya Erez /* WMI_LED_CFG_DONE_EVENTID */ 170110d599adSMaya Erez struct wmi_led_cfg_done_event { 170210d599adSMaya Erez /* led config status */ 170310d599adSMaya Erez __le32 status; 170410d599adSMaya Erez } __packed; 170510d599adSMaya Erez 17060163b031SMaya Erez #define WMI_NUM_MCS (13) 17070163b031SMaya Erez 17080163b031SMaya Erez /* Rate search parameters configuration per connection */ 17090163b031SMaya Erez struct wmi_rs_cfg { 17100163b031SMaya Erez /* The maximal allowed PER for each MCS 17110163b031SMaya Erez * MCS will be considered as failed if PER during RS is higher 17120163b031SMaya Erez */ 17130163b031SMaya Erez u8 per_threshold[WMI_NUM_MCS]; 17140163b031SMaya Erez /* Number of MPDUs for each MCS 17150163b031SMaya Erez * this is the minimal statistic required to make an educated 17160163b031SMaya Erez * decision 17170163b031SMaya Erez */ 17180163b031SMaya Erez u8 min_frame_cnt[WMI_NUM_MCS]; 17190163b031SMaya Erez /* stop threshold [0-100] */ 17200163b031SMaya Erez u8 stop_th; 17210163b031SMaya Erez /* MCS1 stop threshold [0-100] */ 17220163b031SMaya Erez u8 mcs1_fail_th; 17230163b031SMaya Erez u8 max_back_failure_th; 17240163b031SMaya Erez /* Debug feature for disabling internal RS trigger (which is 17250163b031SMaya Erez * currently triggered by BF Done) 17260163b031SMaya Erez */ 17270163b031SMaya Erez u8 dbg_disable_internal_trigger; 17280163b031SMaya Erez __le32 back_failure_mask; 17290163b031SMaya Erez __le32 mcs_en_vec; 17300163b031SMaya Erez } __packed; 17310163b031SMaya Erez 17320163b031SMaya Erez /* WMI_RS_CFG_CMDID */ 17330163b031SMaya Erez struct wmi_rs_cfg_cmd { 17340163b031SMaya Erez /* connection id */ 17350163b031SMaya Erez u8 cid; 17360163b031SMaya Erez /* enable or disable rate search */ 17370163b031SMaya Erez u8 rs_enable; 17380163b031SMaya Erez /* rate search configuration */ 17390163b031SMaya Erez struct wmi_rs_cfg rs_cfg; 17400163b031SMaya Erez } __packed; 17410163b031SMaya Erez 17420163b031SMaya Erez /* WMI_RS_CFG_DONE_EVENTID */ 17430163b031SMaya Erez struct wmi_rs_cfg_done_event { 17440163b031SMaya Erez u8 cid; 17450163b031SMaya Erez /* enum wmi_fw_status */ 17460163b031SMaya Erez u8 status; 17470163b031SMaya Erez u8 reserved[2]; 17480163b031SMaya Erez } __packed; 17490163b031SMaya Erez 175008989f96SLior David /* WMI_GET_DETAILED_RS_RES_CMDID */ 175108989f96SLior David struct wmi_get_detailed_rs_res_cmd { 175208989f96SLior David /* connection id */ 175308989f96SLior David u8 cid; 175408989f96SLior David u8 reserved[3]; 175508989f96SLior David } __packed; 175608989f96SLior David 175708989f96SLior David /* RS results status */ 175808989f96SLior David enum wmi_rs_results_status { 175908989f96SLior David WMI_RS_RES_VALID = 0x00, 176008989f96SLior David WMI_RS_RES_INVALID = 0x01, 176108989f96SLior David }; 176208989f96SLior David 176308989f96SLior David /* Rate search results */ 176408989f96SLior David struct wmi_rs_results { 176508989f96SLior David /* number of sent MPDUs */ 176608989f96SLior David u8 num_of_tx_pkt[WMI_NUM_MCS]; 176708989f96SLior David /* number of non-acked MPDUs */ 176808989f96SLior David u8 num_of_non_acked_pkt[WMI_NUM_MCS]; 176908989f96SLior David /* RS timestamp */ 177008989f96SLior David __le32 tsf; 177108989f96SLior David /* RS selected MCS */ 177208989f96SLior David u8 mcs; 177308989f96SLior David } __packed; 177408989f96SLior David 177508989f96SLior David /* WMI_GET_DETAILED_RS_RES_EVENTID */ 177608989f96SLior David struct wmi_get_detailed_rs_res_event { 177708989f96SLior David u8 cid; 177808989f96SLior David /* enum wmi_rs_results_status */ 177908989f96SLior David u8 status; 178008989f96SLior David /* detailed rs results */ 178108989f96SLior David struct wmi_rs_results rs_results; 178208989f96SLior David u8 reserved[3]; 178308989f96SLior David } __packed; 178408989f96SLior David 1785*a52fb913SLior David /* BRP antenna limit mode */ 1786*a52fb913SLior David enum wmi_brp_ant_limit_mode { 1787*a52fb913SLior David /* Disable BRP force antenna limit */ 1788*a52fb913SLior David WMI_BRP_ANT_LIMIT_MODE_DISABLE = 0x00, 1789*a52fb913SLior David /* Define maximal antennas limit. Only effective antennas will be 1790*a52fb913SLior David * actually used 1791*a52fb913SLior David */ 1792*a52fb913SLior David WMI_BRP_ANT_LIMIT_MODE_EFFECTIVE = 0x01, 1793*a52fb913SLior David /* Force a specific number of antennas */ 1794*a52fb913SLior David WMI_BRP_ANT_LIMIT_MODE_FORCE = 0x02, 1795*a52fb913SLior David /* number of BRP antenna limit modes */ 1796*a52fb913SLior David WMI_BRP_ANT_LIMIT_MODES_NUM = 0x03, 1797*a52fb913SLior David }; 1798*a52fb913SLior David 1799*a52fb913SLior David /* WMI_BRP_SET_ANT_LIMIT_CMDID */ 1800*a52fb913SLior David struct wmi_brp_set_ant_limit_cmd { 1801*a52fb913SLior David /* connection id */ 1802*a52fb913SLior David u8 cid; 1803*a52fb913SLior David /* enum wmi_brp_ant_limit_mode */ 1804*a52fb913SLior David u8 limit_mode; 1805*a52fb913SLior David /* antenna limit count, 1-27 1806*a52fb913SLior David * disable_mode - ignored 1807*a52fb913SLior David * effective_mode - upper limit to number of antennas to be used 1808*a52fb913SLior David * force_mode - exact number of antennas to be used 1809*a52fb913SLior David */ 1810*a52fb913SLior David u8 ant_limit; 1811*a52fb913SLior David u8 reserved; 1812*a52fb913SLior David } __packed; 1813*a52fb913SLior David 1814*a52fb913SLior David /* WMI_BRP_SET_ANT_LIMIT_EVENTID */ 1815*a52fb913SLior David struct wmi_brp_set_ant_limit_event { 1816*a52fb913SLior David /* wmi_fw_status */ 1817*a52fb913SLior David u8 status; 1818*a52fb913SLior David u8 reserved[3]; 1819*a52fb913SLior David } __packed; 1820*a52fb913SLior David 18210163b031SMaya Erez /* broadcast connection ID */ 18220163b031SMaya Erez #define WMI_LINK_MAINTAIN_CFG_CID_BROADCAST (0xFFFFFFFF) 18230163b031SMaya Erez 18240163b031SMaya Erez /* Types wmi_link_maintain_cfg presets for WMI_LINK_MAINTAIN_CFG_WRITE_CMD */ 18250163b031SMaya Erez enum wmi_link_maintain_cfg_type { 18260163b031SMaya Erez /* AP/PCP default normal (non-FST) configuration settings */ 18270163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_NORMAL_AP = 0x00, 18280163b031SMaya Erez /* AP/PCP default FST configuration settings */ 18290163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_FST_AP = 0x01, 18300163b031SMaya Erez /* STA default normal (non-FST) configuration settings */ 18310163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_NORMAL_STA = 0x02, 18320163b031SMaya Erez /* STA default FST configuration settings */ 18330163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_FST_STA = 0x03, 18340163b031SMaya Erez /* custom configuration settings */ 18350163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPE_CUSTOM = 0x04, 18360163b031SMaya Erez /* number of defined configuration types */ 18370163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPES_NUM = 0x05, 18380163b031SMaya Erez }; 18390163b031SMaya Erez 18400163b031SMaya Erez /* Response status codes for WMI_LINK_MAINTAIN_CFG_WRITE/READ commands */ 18410163b031SMaya Erez enum wmi_link_maintain_cfg_response_status { 18420163b031SMaya Erez /* WMI_LINK_MAINTAIN_CFG_WRITE/READ command successfully accomplished 18430163b031SMaya Erez */ 18440163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_RESPONSE_STATUS_OK = 0x00, 18450163b031SMaya Erez /* ERROR due to bad argument in WMI_LINK_MAINTAIN_CFG_WRITE/READ 18460163b031SMaya Erez * command request 18470163b031SMaya Erez */ 18480163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_RESPONSE_STATUS_BAD_ARGUMENT = 0x01, 18490163b031SMaya Erez }; 18500163b031SMaya Erez 18510163b031SMaya Erez /* Link Loss and Keep Alive configuration */ 18520163b031SMaya Erez struct wmi_link_maintain_cfg { 18530163b031SMaya Erez /* link_loss_enable_detectors_vec */ 18540163b031SMaya Erez __le32 link_loss_enable_detectors_vec; 18550163b031SMaya Erez /* detectors check period usec */ 18560163b031SMaya Erez __le32 check_link_loss_period_usec; 18570163b031SMaya Erez /* max allowed tx ageing */ 18580163b031SMaya Erez __le32 tx_ageing_threshold_usec; 18590163b031SMaya Erez /* keep alive period for high SNR */ 18600163b031SMaya Erez __le32 keep_alive_period_usec_high_snr; 18610163b031SMaya Erez /* keep alive period for low SNR */ 18620163b031SMaya Erez __le32 keep_alive_period_usec_low_snr; 18630163b031SMaya Erez /* lower snr limit for keep alive period update */ 18640163b031SMaya Erez __le32 keep_alive_snr_threshold_low_db; 18650163b031SMaya Erez /* upper snr limit for keep alive period update */ 18660163b031SMaya Erez __le32 keep_alive_snr_threshold_high_db; 18670163b031SMaya Erez /* num of successive bad bcons causing link-loss */ 18680163b031SMaya Erez __le32 bad_beacons_num_threshold; 18690163b031SMaya Erez /* SNR limit for bad_beacons_detector */ 18700163b031SMaya Erez __le32 bad_beacons_snr_threshold_db; 18710163b031SMaya Erez } __packed; 18720163b031SMaya Erez 18730163b031SMaya Erez /* WMI_LINK_MAINTAIN_CFG_WRITE_CMDID */ 18740163b031SMaya Erez struct wmi_link_maintain_cfg_write_cmd { 18750163b031SMaya Erez /* enum wmi_link_maintain_cfg_type_e - type of requested default 18760163b031SMaya Erez * configuration to be applied 18770163b031SMaya Erez */ 18780163b031SMaya Erez __le32 cfg_type; 18790163b031SMaya Erez /* requested connection ID or WMI_LINK_MAINTAIN_CFG_CID_BROADCAST */ 18800163b031SMaya Erez __le32 cid; 18810163b031SMaya Erez /* custom configuration settings to be applied (relevant only if 18820163b031SMaya Erez * cfg_type==WMI_LINK_MAINTAIN_CFG_TYPE_CUSTOM) 18830163b031SMaya Erez */ 18840163b031SMaya Erez struct wmi_link_maintain_cfg lm_cfg; 18850163b031SMaya Erez } __packed; 18860163b031SMaya Erez 18870163b031SMaya Erez /* WMI_LINK_MAINTAIN_CFG_READ_CMDID */ 18880163b031SMaya Erez struct wmi_link_maintain_cfg_read_cmd { 18890163b031SMaya Erez /* connection ID which configuration settings are requested */ 18900163b031SMaya Erez __le32 cid; 18910163b031SMaya Erez } __packed; 18920163b031SMaya Erez 18930163b031SMaya Erez /* WMI_LINK_MAINTAIN_CFG_WRITE_DONE_EVENTID */ 18940163b031SMaya Erez struct wmi_link_maintain_cfg_write_done_event { 18950163b031SMaya Erez /* requested connection ID */ 18960163b031SMaya Erez __le32 cid; 18970163b031SMaya Erez /* wmi_link_maintain_cfg_response_status_e - write status */ 18980163b031SMaya Erez __le32 status; 18990163b031SMaya Erez } __packed; 19000163b031SMaya Erez 19010163b031SMaya Erez /* \WMI_LINK_MAINTAIN_CFG_READ_DONE_EVENT */ 19020163b031SMaya Erez struct wmi_link_maintain_cfg_read_done_event { 19030163b031SMaya Erez /* requested connection ID */ 19040163b031SMaya Erez __le32 cid; 19050163b031SMaya Erez /* wmi_link_maintain_cfg_response_status_e - read status */ 19060163b031SMaya Erez __le32 status; 19070163b031SMaya Erez /* Retrieved configuration settings */ 19080163b031SMaya Erez struct wmi_link_maintain_cfg lm_cfg; 19090163b031SMaya Erez } __packed; 19100163b031SMaya Erez 19110163b031SMaya Erez enum wmi_traffic_deferral_status { 19120163b031SMaya Erez WMI_TRAFFIC_DEFERRAL_APPROVED = 0x0, 19130163b031SMaya Erez WMI_TRAFFIC_DEFERRAL_REJECTED = 0x1, 19140163b031SMaya Erez }; 19150163b031SMaya Erez 19160163b031SMaya Erez /* WMI_TRAFFIC_DEFERRAL_EVENTID */ 19170163b031SMaya Erez struct wmi_traffic_deferral_event { 19180163b031SMaya Erez /* enum wmi_traffic_deferral_status_e */ 19190163b031SMaya Erez u8 status; 19200163b031SMaya Erez } __packed; 19210163b031SMaya Erez 19220163b031SMaya Erez enum wmi_traffic_resume_status { 19230163b031SMaya Erez WMI_TRAFFIC_RESUME_SUCCESS = 0x0, 19240163b031SMaya Erez WMI_TRAFFIC_RESUME_FAILED = 0x1, 19250163b031SMaya Erez }; 19260163b031SMaya Erez 19270163b031SMaya Erez /* WMI_TRAFFIC_RESUME_EVENTID */ 19280163b031SMaya Erez struct wmi_traffic_resume_event { 19290163b031SMaya Erez /* enum wmi_traffic_resume_status_e */ 19300163b031SMaya Erez u8 status; 19310163b031SMaya Erez } __packed; 19320163b031SMaya Erez 19330163b031SMaya Erez /* Power Save command completion status codes */ 19340163b031SMaya Erez enum wmi_ps_cfg_cmd_status { 19350163b031SMaya Erez WMI_PS_CFG_CMD_STATUS_SUCCESS = 0x00, 19360163b031SMaya Erez WMI_PS_CFG_CMD_STATUS_BAD_PARAM = 0x01, 19370163b031SMaya Erez /* other error */ 19380163b031SMaya Erez WMI_PS_CFG_CMD_STATUS_ERROR = 0x02, 19390163b031SMaya Erez }; 19400163b031SMaya Erez 19410163b031SMaya Erez /* Device Power Save Profiles */ 19420163b031SMaya Erez enum wmi_ps_profile_type { 19430163b031SMaya Erez WMI_PS_PROFILE_TYPE_DEFAULT = 0x00, 19440163b031SMaya Erez WMI_PS_PROFILE_TYPE_PS_DISABLED = 0x01, 19450163b031SMaya Erez WMI_PS_PROFILE_TYPE_MAX_PS = 0x02, 19460163b031SMaya Erez WMI_PS_PROFILE_TYPE_LOW_LATENCY_PS = 0x03, 19470163b031SMaya Erez }; 19480163b031SMaya Erez 19490163b031SMaya Erez /* WMI_PS_DEV_PROFILE_CFG_CMDID 19500163b031SMaya Erez * 19510163b031SMaya Erez * Power save profile to be used by the device 19520163b031SMaya Erez * 19530163b031SMaya Erez * Returned event: 19540163b031SMaya Erez * - WMI_PS_DEV_PROFILE_CFG_EVENTID 19550163b031SMaya Erez */ 19560163b031SMaya Erez struct wmi_ps_dev_profile_cfg_cmd { 19570163b031SMaya Erez /* wmi_ps_profile_type_e */ 19580163b031SMaya Erez u8 ps_profile; 19590163b031SMaya Erez u8 reserved[3]; 19600163b031SMaya Erez } __packed; 19610163b031SMaya Erez 19620163b031SMaya Erez /* WMI_PS_DEV_PROFILE_CFG_EVENTID */ 19630163b031SMaya Erez struct wmi_ps_dev_profile_cfg_event { 19640163b031SMaya Erez /* wmi_ps_cfg_cmd_status_e */ 19650163b031SMaya Erez __le32 status; 19660163b031SMaya Erez } __packed; 19670163b031SMaya Erez 19680163b031SMaya Erez enum wmi_ps_level { 19690163b031SMaya Erez WMI_PS_LEVEL_DEEP_SLEEP = 0x00, 19700163b031SMaya Erez WMI_PS_LEVEL_SHALLOW_SLEEP = 0x01, 19710163b031SMaya Erez /* awake = all PS mechanisms are disabled */ 19720163b031SMaya Erez WMI_PS_LEVEL_AWAKE = 0x02, 19730163b031SMaya Erez }; 19740163b031SMaya Erez 19750163b031SMaya Erez enum wmi_ps_deep_sleep_clk_level { 19760163b031SMaya Erez /* 33k */ 19770163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_RTC = 0x00, 19780163b031SMaya Erez /* 10k */ 19790163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_OSC = 0x01, 19800163b031SMaya Erez /* @RTC Low latency */ 19810163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_RTC_LT = 0x02, 19820163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_XTAL = 0x03, 19830163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_SYSCLK = 0x04, 19840163b031SMaya Erez /* Not Applicable */ 19850163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_N_A = 0xFF, 19860163b031SMaya Erez }; 19870163b031SMaya Erez 19880163b031SMaya Erez /* Response by the FW to a D3 entry request */ 19890163b031SMaya Erez enum wmi_ps_d3_resp_policy { 19900163b031SMaya Erez WMI_PS_D3_RESP_POLICY_DEFAULT = 0x00, 19910163b031SMaya Erez /* debug -D3 req is always denied */ 19920163b031SMaya Erez WMI_PS_D3_RESP_POLICY_DENIED = 0x01, 19930163b031SMaya Erez /* debug -D3 req is always approved */ 19940163b031SMaya Erez WMI_PS_D3_RESP_POLICY_APPROVED = 0x02, 19950163b031SMaya Erez }; 19960163b031SMaya Erez 19970163b031SMaya Erez /* Device common power save configurations */ 19980163b031SMaya Erez struct wmi_ps_dev_cfg { 19990163b031SMaya Erez /* lowest level of PS allowed while unassociated, enum wmi_ps_level_e 20000163b031SMaya Erez */ 20010163b031SMaya Erez u8 ps_unassoc_min_level; 20020163b031SMaya Erez /* lowest deep sleep clock level while nonassoc, enum 20030163b031SMaya Erez * wmi_ps_deep_sleep_clk_level_e 20040163b031SMaya Erez */ 20050163b031SMaya Erez u8 ps_unassoc_deep_sleep_min_level; 20060163b031SMaya Erez /* lowest level of PS allowed while associated, enum wmi_ps_level_e */ 20070163b031SMaya Erez u8 ps_assoc_min_level; 20080163b031SMaya Erez /* lowest deep sleep clock level while assoc, enum 20090163b031SMaya Erez * wmi_ps_deep_sleep_clk_level_e 20100163b031SMaya Erez */ 20110163b031SMaya Erez u8 ps_assoc_deep_sleep_min_level; 20120163b031SMaya Erez /* enum wmi_ps_deep_sleep_clk_level_e */ 20130163b031SMaya Erez u8 ps_assoc_low_latency_ds_min_level; 20140163b031SMaya Erez /* enum wmi_ps_d3_resp_policy_e */ 20150163b031SMaya Erez u8 ps_D3_response_policy; 20160163b031SMaya Erez /* BOOL */ 20170163b031SMaya Erez u8 ps_D3_pm_pme_enabled; 20180163b031SMaya Erez /* BOOL */ 20190163b031SMaya Erez u8 ps_halp_enable; 20200163b031SMaya Erez u8 ps_deep_sleep_enter_thresh_msec; 20210163b031SMaya Erez /* BOOL */ 20220163b031SMaya Erez u8 ps_voltage_scaling_en; 20230163b031SMaya Erez } __packed; 20240163b031SMaya Erez 20250163b031SMaya Erez /* WMI_PS_DEV_CFG_CMDID 20260163b031SMaya Erez * 20270163b031SMaya Erez * Configure common Power Save parameters of the device and all MIDs. 20280163b031SMaya Erez * 20290163b031SMaya Erez * Returned event: 20300163b031SMaya Erez * - WMI_PS_DEV_CFG_EVENTID 20310163b031SMaya Erez */ 20320163b031SMaya Erez struct wmi_ps_dev_cfg_cmd { 20330163b031SMaya Erez /* Device Power Save configuration to be applied */ 20340163b031SMaya Erez struct wmi_ps_dev_cfg ps_dev_cfg; 20350163b031SMaya Erez /* alignment to 32b */ 20360163b031SMaya Erez u8 reserved[2]; 20370163b031SMaya Erez } __packed; 20380163b031SMaya Erez 20390163b031SMaya Erez /* WMI_PS_DEV_CFG_EVENTID */ 20400163b031SMaya Erez struct wmi_ps_dev_cfg_event { 20410163b031SMaya Erez /* wmi_ps_cfg_cmd_status_e */ 20420163b031SMaya Erez __le32 status; 20430163b031SMaya Erez } __packed; 20440163b031SMaya Erez 20450163b031SMaya Erez /* WMI_PS_DEV_CFG_READ_CMDID 20460163b031SMaya Erez * 20470163b031SMaya Erez * request to retrieve device Power Save configuration 20480163b031SMaya Erez * (WMI_PS_DEV_CFG_CMD params) 20490163b031SMaya Erez * 20500163b031SMaya Erez * Returned event: 20510163b031SMaya Erez * - WMI_PS_DEV_CFG_READ_EVENTID 20520163b031SMaya Erez */ 20530163b031SMaya Erez struct wmi_ps_dev_cfg_read_cmd { 20540163b031SMaya Erez __le32 reserved; 20550163b031SMaya Erez } __packed; 20560163b031SMaya Erez 20570163b031SMaya Erez /* WMI_PS_DEV_CFG_READ_EVENTID */ 20580163b031SMaya Erez struct wmi_ps_dev_cfg_read_event { 20590163b031SMaya Erez /* wmi_ps_cfg_cmd_status_e */ 20600163b031SMaya Erez __le32 status; 20610163b031SMaya Erez /* Retrieved device Power Save configuration (WMI_PS_DEV_CFG_CMD 20620163b031SMaya Erez * params) 20630163b031SMaya Erez */ 20640163b031SMaya Erez struct wmi_ps_dev_cfg dev_ps_cfg; 20650163b031SMaya Erez /* alignment to 32b */ 20660163b031SMaya Erez u8 reserved[2]; 20670163b031SMaya Erez } __packed; 20680163b031SMaya Erez 20690163b031SMaya Erez /* Per Mac Power Save configurations */ 20700163b031SMaya Erez struct wmi_ps_mid_cfg { 20710163b031SMaya Erez /* Low power RX in BTI is enabled, BOOL */ 20720163b031SMaya Erez u8 beacon_lprx_enable; 20730163b031SMaya Erez /* Sync to sector ID enabled, BOOL */ 20740163b031SMaya Erez u8 beacon_sync_to_sectorId_enable; 20750163b031SMaya Erez /* Low power RX in DTI is enabled, BOOL */ 20760163b031SMaya Erez u8 frame_exchange_lprx_enable; 20770163b031SMaya Erez /* Sleep Cycle while in scheduled PS, 1-31 */ 20780163b031SMaya Erez u8 scheduled_sleep_cycle_pow2; 20790163b031SMaya Erez /* Stay Awake for k BIs every (sleep_cycle - k) BIs, 1-31 */ 20800163b031SMaya Erez u8 scheduled_num_of_awake_bis; 20810163b031SMaya Erez u8 am_to_traffic_load_thresh_mbp; 20820163b031SMaya Erez u8 traffic_to_am_load_thresh_mbps; 20830163b031SMaya Erez u8 traffic_to_am_num_of_no_traffic_bis; 20840163b031SMaya Erez /* BOOL */ 20850163b031SMaya Erez u8 continuous_traffic_psm; 20860163b031SMaya Erez __le16 no_traffic_to_min_usec; 20870163b031SMaya Erez __le16 no_traffic_to_max_usec; 20880163b031SMaya Erez __le16 snoozing_sleep_interval_milisec; 20890163b031SMaya Erez u8 max_no_data_awake_events; 20900163b031SMaya Erez /* Trigger WEB after k failed beacons */ 20910163b031SMaya Erez u8 num_of_failed_beacons_rx_to_trigger_web; 20920163b031SMaya Erez /* Trigger BF after k failed beacons */ 20930163b031SMaya Erez u8 num_of_failed_beacons_rx_to_trigger_bf; 20940163b031SMaya Erez /* Trigger SOB after k successful beacons */ 20950163b031SMaya Erez u8 num_of_successful_beacons_rx_to_trigger_sob; 20960163b031SMaya Erez } __packed; 20970163b031SMaya Erez 20980163b031SMaya Erez /* WMI_PS_MID_CFG_CMDID 20990163b031SMaya Erez * 21000163b031SMaya Erez * Configure Power Save parameters of a specific MID. 21010163b031SMaya Erez * These parameters are relevant for the specific BSS this MID belongs to. 21020163b031SMaya Erez * 21030163b031SMaya Erez * Returned event: 21040163b031SMaya Erez * - WMI_PS_MID_CFG_EVENTID 21050163b031SMaya Erez */ 21060163b031SMaya Erez struct wmi_ps_mid_cfg_cmd { 21070163b031SMaya Erez /* MAC ID */ 21080163b031SMaya Erez u8 mid; 21090163b031SMaya Erez /* mid PS configuration to be applied */ 21100163b031SMaya Erez struct wmi_ps_mid_cfg ps_mid_cfg; 21110163b031SMaya Erez } __packed; 21120163b031SMaya Erez 21130163b031SMaya Erez /* WMI_PS_MID_CFG_EVENTID */ 21140163b031SMaya Erez struct wmi_ps_mid_cfg_event { 21150163b031SMaya Erez /* MAC ID */ 21160163b031SMaya Erez u8 mid; 21170163b031SMaya Erez /* alignment to 32b */ 21180163b031SMaya Erez u8 reserved[3]; 21190163b031SMaya Erez /* wmi_ps_cfg_cmd_status_e */ 21200163b031SMaya Erez __le32 status; 21210163b031SMaya Erez } __packed; 21220163b031SMaya Erez 21230163b031SMaya Erez /* WMI_PS_MID_CFG_READ_CMDID 21240163b031SMaya Erez * 21250163b031SMaya Erez * request to retrieve Power Save configuration of mid 21260163b031SMaya Erez * (WMI_PS_MID_CFG_CMD params) 21270163b031SMaya Erez * 21280163b031SMaya Erez * Returned event: 21290163b031SMaya Erez * - WMI_PS_MID_CFG_READ_EVENTID 21300163b031SMaya Erez */ 21310163b031SMaya Erez struct wmi_ps_mid_cfg_read_cmd { 21320163b031SMaya Erez /* MAC ID */ 21330163b031SMaya Erez u8 mid; 21340163b031SMaya Erez /* alignment to 32b */ 21350163b031SMaya Erez u8 reserved[3]; 21360163b031SMaya Erez } __packed; 21370163b031SMaya Erez 21380163b031SMaya Erez /* WMI_PS_MID_CFG_READ_EVENTID */ 21390163b031SMaya Erez struct wmi_ps_mid_cfg_read_event { 21400163b031SMaya Erez /* MAC ID */ 21410163b031SMaya Erez u8 mid; 21420163b031SMaya Erez /* Retrieved MID Power Save configuration(WMI_PS_MID_CFG_CMD params) */ 21430163b031SMaya Erez struct wmi_ps_mid_cfg mid_ps_cfg; 21440163b031SMaya Erez /* wmi_ps_cfg_cmd_status_e */ 21450163b031SMaya Erez __le32 status; 21460163b031SMaya Erez } __packed; 21470163b031SMaya Erez 214808989f96SLior David #define WMI_AOA_MAX_DATA_SIZE (128) 214908989f96SLior David 215008989f96SLior David enum wmi_aoa_meas_status { 215108989f96SLior David WMI_AOA_MEAS_SUCCESS = 0x00, 215208989f96SLior David WMI_AOA_MEAS_PEER_INCAPABLE = 0x01, 215308989f96SLior David WMI_AOA_MEAS_FAILURE = 0x02, 215408989f96SLior David }; 215508989f96SLior David 215608989f96SLior David /* WMI_AOA_MEAS_EVENTID */ 215708989f96SLior David struct wmi_aoa_meas_event { 215808989f96SLior David u8 mac_addr[WMI_MAC_LEN]; 215908989f96SLior David /* channels IDs: 216008989f96SLior David * 0 - 58320 MHz 216108989f96SLior David * 1 - 60480 MHz 216208989f96SLior David * 2 - 62640 MHz 216308989f96SLior David */ 216408989f96SLior David u8 channel; 216508989f96SLior David /* enum wmi_aoa_meas_type */ 216608989f96SLior David u8 aoa_meas_type; 216708989f96SLior David /* Measurments are from RFs, defined by the mask */ 216808989f96SLior David __le32 meas_rf_mask; 216908989f96SLior David /* enum wmi_aoa_meas_status */ 217008989f96SLior David u8 meas_status; 217108989f96SLior David u8 reserved; 217208989f96SLior David /* Length of meas_data in bytes */ 217308989f96SLior David __le16 length; 217408989f96SLior David u8 meas_data[WMI_AOA_MAX_DATA_SIZE]; 217508989f96SLior David } __packed; 217608989f96SLior David 2177cbf795c1SLior David /* WMI_SET_MGMT_RETRY_LIMIT_EVENTID */ 2178cbf795c1SLior David struct wmi_set_mgmt_retry_limit_event { 2179cbf795c1SLior David /* enum wmi_fw_status */ 2180cbf795c1SLior David u8 status; 2181cbf795c1SLior David /* alignment to 32b */ 2182cbf795c1SLior David u8 reserved[3]; 2183cbf795c1SLior David } __packed; 2184cbf795c1SLior David 2185cbf795c1SLior David /* WMI_GET_MGMT_RETRY_LIMIT_EVENTID */ 2186cbf795c1SLior David struct wmi_get_mgmt_retry_limit_event { 2187cbf795c1SLior David /* MAC retransmit limit for mgmt frames */ 2188cbf795c1SLior David u8 mgmt_retry_limit; 2189cbf795c1SLior David /* alignment to 32b */ 2190cbf795c1SLior David u8 reserved[3]; 2191cbf795c1SLior David } __packed; 2192cbf795c1SLior David 219308989f96SLior David /* WMI_TOF_GET_CAPABILITIES_EVENTID */ 219408989f96SLior David struct wmi_tof_get_capabilities_event { 219508989f96SLior David u8 ftm_capability; 219608989f96SLior David /* maximum supported number of destination to start TOF */ 219708989f96SLior David u8 max_num_of_dest; 219808989f96SLior David /* maximum supported number of measurements per burst */ 219908989f96SLior David u8 max_num_of_meas_per_burst; 220008989f96SLior David u8 reserved; 220108989f96SLior David /* maximum supported multi bursts */ 220208989f96SLior David __le16 max_multi_bursts_sessions; 220308989f96SLior David /* maximum supported FTM burst duration , wmi_tof_burst_duration_e */ 220408989f96SLior David __le16 max_ftm_burst_duration; 220508989f96SLior David /* AOA supported types */ 220608989f96SLior David __le32 aoa_supported_types; 220708989f96SLior David } __packed; 220808989f96SLior David 220908989f96SLior David enum wmi_tof_session_end_status { 221008989f96SLior David WMI_TOF_SESSION_END_NO_ERROR = 0x00, 221108989f96SLior David WMI_TOF_SESSION_END_FAIL = 0x01, 221208989f96SLior David WMI_TOF_SESSION_END_PARAMS_ERROR = 0x02, 221308989f96SLior David WMI_TOF_SESSION_END_ABORTED = 0x03, 221408989f96SLior David }; 221508989f96SLior David 221608989f96SLior David /* WMI_TOF_SESSION_END_EVENTID */ 221708989f96SLior David struct wmi_tof_session_end_event { 221808989f96SLior David /* FTM session ID */ 221908989f96SLior David __le32 session_id; 222008989f96SLior David /* wmi_tof_session_end_status_e */ 222108989f96SLior David u8 status; 222208989f96SLior David u8 reserved[3]; 222308989f96SLior David } __packed; 222408989f96SLior David 222508989f96SLior David /* Responder FTM Results */ 222608989f96SLior David struct wmi_responder_ftm_res { 222708989f96SLior David u8 t1[6]; 222808989f96SLior David u8 t2[6]; 222908989f96SLior David u8 t3[6]; 223008989f96SLior David u8 t4[6]; 223108989f96SLior David __le16 tod_err; 223208989f96SLior David __le16 toa_err; 223308989f96SLior David __le16 tod_err_initiator; 223408989f96SLior David __le16 toa_err_initiator; 223508989f96SLior David } __packed; 223608989f96SLior David 223708989f96SLior David enum wmi_tof_ftm_per_dest_res_status { 223808989f96SLior David WMI_PER_DEST_RES_NO_ERROR = 0x00, 223908989f96SLior David WMI_PER_DEST_RES_TX_RX_FAIL = 0x01, 224008989f96SLior David WMI_PER_DEST_RES_PARAM_DONT_MATCH = 0x02, 224108989f96SLior David }; 224208989f96SLior David 224308989f96SLior David enum wmi_tof_ftm_per_dest_res_flags { 224408989f96SLior David WMI_PER_DEST_RES_REQ_START = 0x01, 224508989f96SLior David WMI_PER_DEST_RES_BURST_REPORT_END = 0x02, 224608989f96SLior David WMI_PER_DEST_RES_REQ_END = 0x04, 224708989f96SLior David WMI_PER_DEST_RES_PARAM_UPDATE = 0x08, 224808989f96SLior David }; 224908989f96SLior David 225008989f96SLior David /* WMI_TOF_FTM_PER_DEST_RES_EVENTID */ 225108989f96SLior David struct wmi_tof_ftm_per_dest_res_event { 225208989f96SLior David /* FTM session ID */ 225308989f96SLior David __le32 session_id; 225408989f96SLior David /* destination MAC address */ 225508989f96SLior David u8 dst_mac[WMI_MAC_LEN]; 225608989f96SLior David /* wmi_tof_ftm_per_dest_res_flags_e */ 225708989f96SLior David u8 flags; 225808989f96SLior David /* wmi_tof_ftm_per_dest_res_status_e */ 225908989f96SLior David u8 status; 226008989f96SLior David /* responder ASAP */ 226108989f96SLior David u8 responder_asap; 226208989f96SLior David /* responder number of FTM per burst */ 226308989f96SLior David u8 responder_num_ftm_per_burst; 226408989f96SLior David /* responder number of FTM burst exponent */ 226508989f96SLior David u8 responder_num_ftm_bursts_exp; 226608989f96SLior David /* responder burst duration ,wmi_tof_burst_duration_e */ 226708989f96SLior David u8 responder_burst_duration; 226808989f96SLior David /* responder burst period, indicate interval between two consecutive 226908989f96SLior David * burst instances, in units of 100 ms 227008989f96SLior David */ 227108989f96SLior David __le16 responder_burst_period; 227208989f96SLior David /* receive burst counter */ 227308989f96SLior David __le16 bursts_cnt; 227408989f96SLior David /* tsf of responder start burst */ 227508989f96SLior David __le32 tsf_sync; 227608989f96SLior David /* actual received ftm per burst */ 227708989f96SLior David u8 actual_ftm_per_burst; 227808989f96SLior David u8 reserved0[7]; 227908989f96SLior David struct wmi_responder_ftm_res responder_ftm_res[0]; 228008989f96SLior David } __packed; 228108989f96SLior David 228208989f96SLior David enum wmi_tof_channel_info_type { 228308989f96SLior David WMI_TOF_CHANNEL_INFO_AOA = 0x00, 228408989f96SLior David WMI_TOF_CHANNEL_INFO_LCI = 0x01, 228508989f96SLior David WMI_TOF_CHANNEL_INFO_LCR = 0x02, 228608989f96SLior David WMI_TOF_CHANNEL_INFO_VENDOR_SPECIFIC = 0x03, 228708989f96SLior David WMI_TOF_CHANNEL_INFO_CIR = 0x04, 228808989f96SLior David WMI_TOF_CHANNEL_INFO_RSSI = 0x05, 228908989f96SLior David WMI_TOF_CHANNEL_INFO_SNR = 0x06, 229008989f96SLior David WMI_TOF_CHANNEL_INFO_DEBUG = 0x07, 229108989f96SLior David }; 229208989f96SLior David 229308989f96SLior David /* WMI_TOF_CHANNEL_INFO_EVENTID */ 229408989f96SLior David struct wmi_tof_channel_info_event { 229508989f96SLior David /* FTM session ID */ 229608989f96SLior David __le32 session_id; 229708989f96SLior David /* destination MAC address */ 229808989f96SLior David u8 dst_mac[WMI_MAC_LEN]; 229908989f96SLior David /* wmi_tof_channel_info_type_e */ 230008989f96SLior David u8 type; 230108989f96SLior David /* data report length */ 230208989f96SLior David u8 len; 230308989f96SLior David /* data report payload */ 230408989f96SLior David u8 report[0]; 230508989f96SLior David } __packed; 230608989f96SLior David 23078ae5d62cSLior David /* WMI_TOF_SET_TX_RX_OFFSET_EVENTID */ 23088ae5d62cSLior David struct wmi_tof_set_tx_rx_offset_event { 23098ae5d62cSLior David /* enum wmi_fw_status */ 23108ae5d62cSLior David u8 status; 23118ae5d62cSLior David u8 reserved[3]; 23128ae5d62cSLior David } __packed; 23138ae5d62cSLior David 23148ae5d62cSLior David /* WMI_TOF_GET_TX_RX_OFFSET_EVENTID */ 23158ae5d62cSLior David struct wmi_tof_get_tx_rx_offset_event { 23168ae5d62cSLior David /* enum wmi_fw_status */ 23178ae5d62cSLior David u8 status; 23188ae5d62cSLior David u8 reserved1[3]; 23198ae5d62cSLior David /* TX delay offset */ 23208ae5d62cSLior David __le32 tx_offset; 23218ae5d62cSLior David /* RX delay offset */ 23228ae5d62cSLior David __le32 rx_offset; 23238ae5d62cSLior David __le32 reserved2[2]; 23248ae5d62cSLior David } __packed; 23258ae5d62cSLior David 2326cbf795c1SLior David /* Result status codes for WMI commands */ 2327cbf795c1SLior David enum wmi_rf_sector_status { 2328cbf795c1SLior David WMI_RF_SECTOR_STATUS_SUCCESS = 0x00, 2329cbf795c1SLior David WMI_RF_SECTOR_STATUS_BAD_PARAMETERS_ERROR = 0x01, 2330cbf795c1SLior David WMI_RF_SECTOR_STATUS_BUSY_ERROR = 0x02, 2331cbf795c1SLior David WMI_RF_SECTOR_STATUS_NOT_SUPPORTED_ERROR = 0x03, 2332cbf795c1SLior David }; 2333cbf795c1SLior David 2334cbf795c1SLior David /* Types of the RF sector (TX,RX) */ 2335cbf795c1SLior David enum wmi_rf_sector_type { 2336cbf795c1SLior David WMI_RF_SECTOR_TYPE_RX = 0x00, 2337cbf795c1SLior David WMI_RF_SECTOR_TYPE_TX = 0x01, 2338cbf795c1SLior David }; 2339cbf795c1SLior David 2340cbf795c1SLior David /* Content of RF Sector (six 32-bits registers) */ 2341cbf795c1SLior David struct wmi_rf_sector_info { 2342cbf795c1SLior David /* Phase values for RF Chains[15-0] (2bits per RF chain) */ 2343cbf795c1SLior David __le32 psh_hi; 2344cbf795c1SLior David /* Phase values for RF Chains[31-16] (2bits per RF chain) */ 2345cbf795c1SLior David __le32 psh_lo; 2346cbf795c1SLior David /* ETYPE Bit0 for all RF chains[31-0] - bit0 of Edge amplifier gain 2347cbf795c1SLior David * index 2348cbf795c1SLior David */ 2349cbf795c1SLior David __le32 etype0; 2350cbf795c1SLior David /* ETYPE Bit1 for all RF chains[31-0] - bit1 of Edge amplifier gain 2351cbf795c1SLior David * index 2352cbf795c1SLior David */ 2353cbf795c1SLior David __le32 etype1; 2354cbf795c1SLior David /* ETYPE Bit2 for all RF chains[31-0] - bit2 of Edge amplifier gain 2355cbf795c1SLior David * index 2356cbf795c1SLior David */ 2357cbf795c1SLior David __le32 etype2; 2358cbf795c1SLior David /* D-Type values (3bits each) for 8 Distribution amplifiers + X16 2359cbf795c1SLior David * switch bits 2360cbf795c1SLior David */ 2361cbf795c1SLior David __le32 dtype_swch_off; 2362cbf795c1SLior David } __packed; 2363cbf795c1SLior David 2364cbf795c1SLior David #define WMI_INVALID_RF_SECTOR_INDEX (0xFFFF) 2365cbf795c1SLior David #define WMI_MAX_RF_MODULES_NUM (8) 2366cbf795c1SLior David 2367cbf795c1SLior David /* WMI_GET_RF_SECTOR_PARAMS_CMD */ 2368cbf795c1SLior David struct wmi_get_rf_sector_params_cmd { 2369cbf795c1SLior David /* Sector number to be retrieved */ 2370cbf795c1SLior David __le16 sector_idx; 2371cbf795c1SLior David /* enum wmi_rf_sector_type - type of requested RF sector */ 2372cbf795c1SLior David u8 sector_type; 2373cbf795c1SLior David /* bitmask vector specifying destination RF modules */ 2374cbf795c1SLior David u8 rf_modules_vec; 2375cbf795c1SLior David } __packed; 2376cbf795c1SLior David 2377cbf795c1SLior David /* \WMI_GET_RF_SECTOR_PARAMS_DONE_EVENT */ 2378cbf795c1SLior David struct wmi_get_rf_sector_params_done_event { 2379cbf795c1SLior David /* result status of WMI_GET_RF_SECTOR_PARAMS_CMD (enum 2380cbf795c1SLior David * wmi_rf_sector_status) 2381cbf795c1SLior David */ 2382cbf795c1SLior David u8 status; 2383cbf795c1SLior David /* align next field to U64 boundary */ 2384cbf795c1SLior David u8 reserved[7]; 2385cbf795c1SLior David /* TSF timestamp when RF sectors where retrieved */ 2386cbf795c1SLior David __le64 tsf; 2387cbf795c1SLior David /* Content of RF sector retrieved from each RF module */ 2388cbf795c1SLior David struct wmi_rf_sector_info sectors_info[WMI_MAX_RF_MODULES_NUM]; 2389cbf795c1SLior David } __packed; 2390cbf795c1SLior David 2391cbf795c1SLior David /* WMI_SET_RF_SECTOR_PARAMS_CMD */ 2392cbf795c1SLior David struct wmi_set_rf_sector_params_cmd { 2393cbf795c1SLior David /* Sector number to be retrieved */ 2394cbf795c1SLior David __le16 sector_idx; 2395cbf795c1SLior David /* enum wmi_rf_sector_type - type of requested RF sector */ 2396cbf795c1SLior David u8 sector_type; 2397cbf795c1SLior David /* bitmask vector specifying destination RF modules */ 2398cbf795c1SLior David u8 rf_modules_vec; 2399cbf795c1SLior David /* Content of RF sector to be written to each RF module */ 2400cbf795c1SLior David struct wmi_rf_sector_info sectors_info[WMI_MAX_RF_MODULES_NUM]; 2401cbf795c1SLior David } __packed; 2402cbf795c1SLior David 2403cbf795c1SLior David /* \WMI_SET_RF_SECTOR_PARAMS_DONE_EVENT */ 2404cbf795c1SLior David struct wmi_set_rf_sector_params_done_event { 2405cbf795c1SLior David /* result status of WMI_SET_RF_SECTOR_PARAMS_CMD (enum 2406cbf795c1SLior David * wmi_rf_sector_status) 2407cbf795c1SLior David */ 2408cbf795c1SLior David u8 status; 2409cbf795c1SLior David } __packed; 2410cbf795c1SLior David 2411cbf795c1SLior David /* WMI_GET_SELECTED_RF_SECTOR_INDEX_CMD - Get RF sector index selected by 2412cbf795c1SLior David * TXSS/BRP for communication with specified CID 2413cbf795c1SLior David */ 2414cbf795c1SLior David struct wmi_get_selected_rf_sector_index_cmd { 2415cbf795c1SLior David /* Connection/Station ID in [0:7] range */ 2416cbf795c1SLior David u8 cid; 2417cbf795c1SLior David /* type of requested RF sector (enum wmi_rf_sector_type) */ 2418cbf795c1SLior David u8 sector_type; 2419cbf795c1SLior David /* align to U32 boundary */ 2420cbf795c1SLior David u8 reserved[2]; 2421cbf795c1SLior David } __packed; 2422cbf795c1SLior David 2423cbf795c1SLior David /* \WMI_GET_SELECTED_RF_SECTOR_INDEX_DONE_EVENT - Returns retrieved RF sector 2424cbf795c1SLior David * index selected by TXSS/BRP for communication with specified CID 2425cbf795c1SLior David */ 2426cbf795c1SLior David struct wmi_get_selected_rf_sector_index_done_event { 2427cbf795c1SLior David /* Retrieved sector index selected in TXSS (for TX sector request) or 2428cbf795c1SLior David * BRP (for RX sector request) 2429cbf795c1SLior David */ 2430cbf795c1SLior David __le16 sector_idx; 2431cbf795c1SLior David /* result status of WMI_GET_SELECTED_RF_SECTOR_INDEX_CMD (enum 2432cbf795c1SLior David * wmi_rf_sector_status) 2433cbf795c1SLior David */ 2434cbf795c1SLior David u8 status; 2435cbf795c1SLior David /* align next field to U64 boundary */ 2436cbf795c1SLior David u8 reserved[5]; 2437cbf795c1SLior David /* TSF timestamp when result was retrieved */ 2438cbf795c1SLior David __le64 tsf; 2439cbf795c1SLior David } __packed; 2440cbf795c1SLior David 2441cbf795c1SLior David /* WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD - Force RF sector index for 2442cbf795c1SLior David * communication with specified CID. Assumes that TXSS/BRP is disabled by 2443cbf795c1SLior David * other command 2444cbf795c1SLior David */ 2445cbf795c1SLior David struct wmi_set_selected_rf_sector_index_cmd { 2446cbf795c1SLior David /* Connection/Station ID in [0:7] range */ 2447cbf795c1SLior David u8 cid; 2448cbf795c1SLior David /* type of requested RF sector (enum wmi_rf_sector_type) */ 2449cbf795c1SLior David u8 sector_type; 2450cbf795c1SLior David /* Forced sector index */ 2451cbf795c1SLior David __le16 sector_idx; 2452cbf795c1SLior David } __packed; 2453cbf795c1SLior David 2454cbf795c1SLior David /* \WMI_SET_SELECTED_RF_SECTOR_INDEX_DONE_EVENT - Success/Fail status for 2455cbf795c1SLior David * WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD 2456cbf795c1SLior David */ 2457cbf795c1SLior David struct wmi_set_selected_rf_sector_index_done_event { 2458cbf795c1SLior David /* result status of WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD (enum 2459cbf795c1SLior David * wmi_rf_sector_status) 2460cbf795c1SLior David */ 2461cbf795c1SLior David u8 status; 2462cbf795c1SLior David /* align to U32 boundary */ 2463cbf795c1SLior David u8 reserved[3]; 2464cbf795c1SLior David } __packed; 2465cbf795c1SLior David 2466cbf795c1SLior David /* WMI_SET_RF_SECTOR_ON_CMD - Activates specified sector for specified rf 2467cbf795c1SLior David * modules 2468cbf795c1SLior David */ 2469cbf795c1SLior David struct wmi_set_rf_sector_on_cmd { 2470cbf795c1SLior David /* Sector index to be activated */ 2471cbf795c1SLior David __le16 sector_idx; 2472cbf795c1SLior David /* type of requested RF sector (enum wmi_rf_sector_type) */ 2473cbf795c1SLior David u8 sector_type; 2474cbf795c1SLior David /* bitmask vector specifying destination RF modules */ 2475cbf795c1SLior David u8 rf_modules_vec; 2476cbf795c1SLior David } __packed; 2477cbf795c1SLior David 2478cbf795c1SLior David /* \WMI_SET_RF_SECTOR_ON_DONE_EVENT - Success/Fail status for 2479cbf795c1SLior David * WMI_SET_RF_SECTOR_ON_CMD 2480cbf795c1SLior David */ 2481cbf795c1SLior David struct wmi_set_rf_sector_on_done_event { 2482cbf795c1SLior David /* result status of WMI_SET_RF_SECTOR_ON_CMD (enum 2483cbf795c1SLior David * wmi_rf_sector_status) 2484cbf795c1SLior David */ 2485cbf795c1SLior David u8 status; 2486cbf795c1SLior David /* align to U32 boundary */ 2487cbf795c1SLior David u8 reserved[3]; 2488cbf795c1SLior David } __packed; 2489cbf795c1SLior David 24908ae5d62cSLior David enum wmi_sector_sweep_type { 24918ae5d62cSLior David WMI_SECTOR_SWEEP_TYPE_TXSS = 0x00, 24928ae5d62cSLior David WMI_SECTOR_SWEEP_TYPE_BCON = 0x01, 24938ae5d62cSLior David WMI_SECTOR_SWEEP_TYPE_TXSS_AND_BCON = 0x02, 24948ae5d62cSLior David WMI_SECTOR_SWEEP_TYPE_NUM = 0x03, 24958ae5d62cSLior David }; 24968ae5d62cSLior David 24978ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_ORDER_CMDID 24988ae5d62cSLior David * 24998ae5d62cSLior David * Set the order of TX sectors in TXSS and/or Beacon(AP). 25008ae5d62cSLior David * 25018ae5d62cSLior David * Returned event: 25028ae5d62cSLior David * - WMI_PRIO_TX_SECTORS_ORDER_EVENTID 25038ae5d62cSLior David */ 25048ae5d62cSLior David struct wmi_prio_tx_sectors_order_cmd { 25058ae5d62cSLior David /* tx sectors order to be applied, 0xFF for end of array */ 25068ae5d62cSLior David u8 tx_sectors_priority_array[MAX_NUM_OF_SECTORS]; 25078ae5d62cSLior David /* enum wmi_sector_sweep_type, TXSS and/or Beacon */ 25088ae5d62cSLior David u8 sector_sweep_type; 25098ae5d62cSLior David /* needed only for TXSS configuration */ 25108ae5d62cSLior David u8 cid; 25118ae5d62cSLior David /* alignment to 32b */ 25128ae5d62cSLior David u8 reserved[2]; 25138ae5d62cSLior David } __packed; 25148ae5d62cSLior David 25158ae5d62cSLior David /* completion status codes */ 25168ae5d62cSLior David enum wmi_prio_tx_sectors_cmd_status { 25178ae5d62cSLior David WMI_PRIO_TX_SECT_CMD_STATUS_SUCCESS = 0x00, 25188ae5d62cSLior David WMI_PRIO_TX_SECT_CMD_STATUS_BAD_PARAM = 0x01, 25198ae5d62cSLior David /* other error */ 25208ae5d62cSLior David WMI_PRIO_TX_SECT_CMD_STATUS_ERROR = 0x02, 25218ae5d62cSLior David }; 25228ae5d62cSLior David 25238ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_ORDER_EVENTID */ 25248ae5d62cSLior David struct wmi_prio_tx_sectors_order_event { 25258ae5d62cSLior David /* enum wmi_prio_tx_sectors_cmd_status */ 25268ae5d62cSLior David u8 status; 25278ae5d62cSLior David /* alignment to 32b */ 25288ae5d62cSLior David u8 reserved[3]; 25298ae5d62cSLior David } __packed; 25308ae5d62cSLior David 25318ae5d62cSLior David struct wmi_prio_tx_sectors_num_cmd { 25328ae5d62cSLior David /* [0-128], 0 = No changes */ 25338ae5d62cSLior David u8 beacon_number_of_sectors; 25348ae5d62cSLior David /* [0-128], 0 = No changes */ 25358ae5d62cSLior David u8 txss_number_of_sectors; 25368ae5d62cSLior David /* [0-8] needed only for TXSS configuration */ 25378ae5d62cSLior David u8 cid; 25388ae5d62cSLior David } __packed; 25398ae5d62cSLior David 25408ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_NUMBER_CMDID 25418ae5d62cSLior David * 25428ae5d62cSLior David * Set the number of active sectors in TXSS and/or Beacon. 25438ae5d62cSLior David * 25448ae5d62cSLior David * Returned event: 25458ae5d62cSLior David * - WMI_PRIO_TX_SECTORS_NUMBER_EVENTID 25468ae5d62cSLior David */ 25478ae5d62cSLior David struct wmi_prio_tx_sectors_number_cmd { 25488ae5d62cSLior David struct wmi_prio_tx_sectors_num_cmd active_sectors_num; 25498ae5d62cSLior David /* alignment to 32b */ 25508ae5d62cSLior David u8 reserved; 25518ae5d62cSLior David } __packed; 25528ae5d62cSLior David 25538ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_NUMBER_EVENTID */ 25548ae5d62cSLior David struct wmi_prio_tx_sectors_number_event { 25558ae5d62cSLior David /* enum wmi_prio_tx_sectors_cmd_status */ 25568ae5d62cSLior David u8 status; 25578ae5d62cSLior David /* alignment to 32b */ 25588ae5d62cSLior David u8 reserved[3]; 25598ae5d62cSLior David } __packed; 25608ae5d62cSLior David 25618ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_CMDID 25628ae5d62cSLior David * 25638ae5d62cSLior David * Set default sectors order and number (hard coded in board file) 25648ae5d62cSLior David * in TXSS and/or Beacon. 25658ae5d62cSLior David * 25668ae5d62cSLior David * Returned event: 25678ae5d62cSLior David * - WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_EVENTID 25688ae5d62cSLior David */ 25698ae5d62cSLior David struct wmi_prio_tx_sectors_set_default_cfg_cmd { 25708ae5d62cSLior David /* enum wmi_sector_sweep_type, TXSS and/or Beacon */ 25718ae5d62cSLior David u8 sector_sweep_type; 25728ae5d62cSLior David /* needed only for TXSS configuration */ 25738ae5d62cSLior David u8 cid; 25748ae5d62cSLior David /* alignment to 32b */ 25758ae5d62cSLior David u8 reserved[2]; 25768ae5d62cSLior David } __packed; 25778ae5d62cSLior David 25788ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_EVENTID */ 25798ae5d62cSLior David struct wmi_prio_tx_sectors_set_default_cfg_event { 25808ae5d62cSLior David /* enum wmi_prio_tx_sectors_cmd_status */ 25818ae5d62cSLior David u8 status; 25828ae5d62cSLior David /* alignment to 32b */ 25838ae5d62cSLior David u8 reserved[3]; 25848ae5d62cSLior David } __packed; 25858ae5d62cSLior David 25862be7d22fSVladimir Kondratiev #endif /* __WILOCITY_WMI_H__ */ 2587