12be7d22fSVladimir Kondratiev /* 2*849a564bSDedy 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, 59*849a564bSDedy Lansky WMI_FW_CAPABILITY_DISABLE_AP_SME = 4, 6008989f96SLior David WMI_FW_CAPABILITY_MAX, 6108989f96SLior David }; 6208989f96SLior David 63b874ddecSLior David /* WMI_CMD_HDR */ 64b874ddecSLior David struct wmi_cmd_hdr { 65b874ddecSLior David u8 mid; 66b874ddecSLior David u8 reserved; 67b874ddecSLior David __le16 command_id; 68b874ddecSLior David __le32 fw_timestamp; 69b874ddecSLior David } __packed; 702be7d22fSVladimir Kondratiev 712be7d22fSVladimir Kondratiev /* List of Commands */ 722be7d22fSVladimir Kondratiev enum wmi_command_id { 73b874ddecSLior David WMI_CONNECT_CMDID = 0x01, 74b874ddecSLior David WMI_DISCONNECT_CMDID = 0x03, 75b874ddecSLior David WMI_DISCONNECT_STA_CMDID = 0x04, 76b874ddecSLior David WMI_START_SCAN_CMDID = 0x07, 77b874ddecSLior David WMI_SET_BSS_FILTER_CMDID = 0x09, 78b874ddecSLior David WMI_SET_PROBED_SSID_CMDID = 0x0A, 79b874ddecSLior David WMI_SET_LISTEN_INT_CMDID = 0x0B, 80b874ddecSLior David WMI_BCON_CTRL_CMDID = 0x0F, 81b874ddecSLior David WMI_ADD_CIPHER_KEY_CMDID = 0x16, 82b874ddecSLior David WMI_DELETE_CIPHER_KEY_CMDID = 0x17, 83b874ddecSLior David WMI_PCP_CONF_CMDID = 0x18, 84b874ddecSLior David WMI_SET_APPIE_CMDID = 0x3F, 85b874ddecSLior David WMI_SET_WSC_STATUS_CMDID = 0x41, 86b874ddecSLior David WMI_PXMT_RANGE_CFG_CMDID = 0x42, 87b874ddecSLior David WMI_PXMT_SNR2_RANGE_CFG_CMDID = 0x43, 88b874ddecSLior David WMI_MEM_READ_CMDID = 0x800, 89b874ddecSLior David WMI_MEM_WR_CMDID = 0x801, 90b874ddecSLior David WMI_ECHO_CMDID = 0x803, 91b874ddecSLior David WMI_DEEP_ECHO_CMDID = 0x804, 92b874ddecSLior David WMI_CONFIG_MAC_CMDID = 0x805, 93b874ddecSLior David WMI_CONFIG_PHY_DEBUG_CMDID = 0x806, 94b874ddecSLior David WMI_ADD_DEBUG_TX_PCKT_CMDID = 0x808, 95b874ddecSLior David WMI_PHY_GET_STATISTICS_CMDID = 0x809, 96b874ddecSLior David WMI_FS_TUNE_CMDID = 0x80A, 97b874ddecSLior David WMI_CORR_MEASURE_CMDID = 0x80B, 98b874ddecSLior David WMI_READ_RSSI_CMDID = 0x80C, 99b874ddecSLior David WMI_TEMP_SENSE_CMDID = 0x80E, 100b874ddecSLior David WMI_DC_CALIB_CMDID = 0x80F, 101b874ddecSLior David WMI_SEND_TONE_CMDID = 0x810, 102b874ddecSLior David WMI_IQ_TX_CALIB_CMDID = 0x811, 103b874ddecSLior David WMI_IQ_RX_CALIB_CMDID = 0x812, 104b874ddecSLior David WMI_SET_UCODE_IDLE_CMDID = 0x813, 105b874ddecSLior David WMI_SET_WORK_MODE_CMDID = 0x815, 106b874ddecSLior David WMI_LO_LEAKAGE_CALIB_CMDID = 0x816, 107b874ddecSLior David WMI_MARLON_R_READ_CMDID = 0x818, 108b874ddecSLior David WMI_MARLON_R_WRITE_CMDID = 0x819, 109b874ddecSLior David WMI_MARLON_R_TXRX_SEL_CMDID = 0x81A, 110b874ddecSLior David MAC_IO_STATIC_PARAMS_CMDID = 0x81B, 111b874ddecSLior David MAC_IO_DYNAMIC_PARAMS_CMDID = 0x81C, 112b874ddecSLior David WMI_SILENT_RSSI_CALIB_CMDID = 0x81D, 113b874ddecSLior David WMI_RF_RX_TEST_CMDID = 0x81E, 114b874ddecSLior David WMI_CFG_RX_CHAIN_CMDID = 0x820, 115b874ddecSLior David WMI_VRING_CFG_CMDID = 0x821, 116b874ddecSLior David WMI_BCAST_VRING_CFG_CMDID = 0x822, 117b874ddecSLior David WMI_VRING_BA_EN_CMDID = 0x823, 118b874ddecSLior David WMI_VRING_BA_DIS_CMDID = 0x824, 119b874ddecSLior David WMI_RCP_ADDBA_RESP_CMDID = 0x825, 120b874ddecSLior David WMI_RCP_DELBA_CMDID = 0x826, 121b874ddecSLior David WMI_SET_SSID_CMDID = 0x827, 122b874ddecSLior David WMI_GET_SSID_CMDID = 0x828, 123b874ddecSLior David WMI_SET_PCP_CHANNEL_CMDID = 0x829, 124b874ddecSLior David WMI_GET_PCP_CHANNEL_CMDID = 0x82A, 125b874ddecSLior David WMI_SW_TX_REQ_CMDID = 0x82B, 126b874ddecSLior David WMI_READ_MAC_RXQ_CMDID = 0x830, 127b874ddecSLior David WMI_READ_MAC_TXQ_CMDID = 0x831, 128b874ddecSLior David WMI_WRITE_MAC_RXQ_CMDID = 0x832, 129b874ddecSLior David WMI_WRITE_MAC_TXQ_CMDID = 0x833, 130b874ddecSLior David WMI_WRITE_MAC_XQ_FIELD_CMDID = 0x834, 131b874ddecSLior David WMI_MLME_PUSH_CMDID = 0x835, 132b874ddecSLior David WMI_BEAMFORMING_MGMT_CMDID = 0x836, 133b874ddecSLior David WMI_BF_TXSS_MGMT_CMDID = 0x837, 134b874ddecSLior David WMI_BF_SM_MGMT_CMDID = 0x838, 135b874ddecSLior David WMI_BF_RXSS_MGMT_CMDID = 0x839, 136b874ddecSLior David WMI_BF_TRIG_CMDID = 0x83A, 1370163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_WRITE_CMDID = 0x842, 1380163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_READ_CMDID = 0x843, 139b874ddecSLior David WMI_SET_SECTORS_CMDID = 0x849, 140b874ddecSLior David WMI_MAINTAIN_PAUSE_CMDID = 0x850, 141b874ddecSLior David WMI_MAINTAIN_RESUME_CMDID = 0x851, 142b874ddecSLior David WMI_RS_MGMT_CMDID = 0x852, 143b874ddecSLior David WMI_RF_MGMT_CMDID = 0x853, 144b874ddecSLior David WMI_THERMAL_THROTTLING_CTRL_CMDID = 0x854, 145b874ddecSLior David WMI_THERMAL_THROTTLING_GET_STATUS_CMDID = 0x855, 146b874ddecSLior David WMI_OTP_READ_CMDID = 0x856, 147b874ddecSLior David WMI_OTP_WRITE_CMDID = 0x857, 14810d599adSMaya Erez WMI_LED_CFG_CMDID = 0x858, 1492be7d22fSVladimir Kondratiev /* Performance monitoring commands */ 150b874ddecSLior David WMI_BF_CTRL_CMDID = 0x862, 151b874ddecSLior David WMI_NOTIFY_REQ_CMDID = 0x863, 152b874ddecSLior David WMI_GET_STATUS_CMDID = 0x864, 1530163b031SMaya Erez WMI_GET_RF_STATUS_CMDID = 0x866, 1540163b031SMaya Erez WMI_GET_BASEBAND_TYPE_CMDID = 0x867, 155b874ddecSLior David WMI_UNIT_TEST_CMDID = 0x900, 156b874ddecSLior David WMI_HICCUP_CMDID = 0x901, 157b874ddecSLior David WMI_FLASH_READ_CMDID = 0x902, 158b874ddecSLior David WMI_FLASH_WRITE_CMDID = 0x903, 1590163b031SMaya Erez /* Power management */ 1600163b031SMaya Erez WMI_TRAFFIC_DEFERRAL_CMDID = 0x904, 1610163b031SMaya Erez WMI_TRAFFIC_RESUME_CMDID = 0x905, 162b8023177SVladimir Kondratiev /* P2P */ 163b874ddecSLior David WMI_P2P_CFG_CMDID = 0x910, 164b874ddecSLior David WMI_PORT_ALLOCATE_CMDID = 0x911, 165b874ddecSLior David WMI_PORT_DELETE_CMDID = 0x912, 166b874ddecSLior David WMI_POWER_MGMT_CFG_CMDID = 0x913, 167b874ddecSLior David WMI_START_LISTEN_CMDID = 0x914, 168b874ddecSLior David WMI_START_SEARCH_CMDID = 0x915, 169b874ddecSLior David WMI_DISCOVERY_START_CMDID = 0x916, 170b874ddecSLior David WMI_DISCOVERY_STOP_CMDID = 0x917, 171b874ddecSLior David WMI_PCP_START_CMDID = 0x918, 172b874ddecSLior David WMI_PCP_STOP_CMDID = 0x919, 173b874ddecSLior David WMI_GET_PCP_FACTOR_CMDID = 0x91B, 1740163b031SMaya Erez /* Power Save Configuration Commands */ 1750163b031SMaya Erez WMI_PS_DEV_PROFILE_CFG_CMDID = 0x91C, 1760163b031SMaya Erez /* Not supported yet */ 1770163b031SMaya Erez WMI_PS_DEV_CFG_CMDID = 0x91D, 1780163b031SMaya Erez /* Not supported yet */ 1790163b031SMaya Erez WMI_PS_DEV_CFG_READ_CMDID = 0x91E, 1800163b031SMaya Erez /* Per MAC Power Save Configuration commands 1810163b031SMaya Erez * Not supported yet 1820163b031SMaya Erez */ 1830163b031SMaya Erez WMI_PS_MID_CFG_CMDID = 0x91F, 1840163b031SMaya Erez /* Not supported yet */ 1850163b031SMaya Erez WMI_PS_MID_CFG_READ_CMDID = 0x920, 1860163b031SMaya Erez WMI_RS_CFG_CMDID = 0x921, 18708989f96SLior David WMI_GET_DETAILED_RS_RES_CMDID = 0x922, 18808989f96SLior David WMI_AOA_MEAS_CMDID = 0x923, 189cbf795c1SLior David WMI_SET_MGMT_RETRY_LIMIT_CMDID = 0x930, 190cbf795c1SLior David WMI_GET_MGMT_RETRY_LIMIT_CMDID = 0x931, 191*849a564bSDedy Lansky WMI_NEW_STA_CMDID = 0x935, 192*849a564bSDedy Lansky WMI_DEL_STA_CMDID = 0x936, 19308989f96SLior David WMI_TOF_SESSION_START_CMDID = 0x991, 19408989f96SLior David WMI_TOF_GET_CAPABILITIES_CMDID = 0x992, 19508989f96SLior David WMI_TOF_SET_LCR_CMDID = 0x993, 19608989f96SLior David WMI_TOF_SET_LCI_CMDID = 0x994, 19708989f96SLior David WMI_TOF_CHANNEL_INFO_CMDID = 0x995, 1988ae5d62cSLior David WMI_TOF_SET_TX_RX_OFFSET_CMDID = 0x997, 1998ae5d62cSLior David WMI_TOF_GET_TX_RX_OFFSET_CMDID = 0x998, 200cbf795c1SLior David WMI_GET_RF_SECTOR_PARAMS_CMDID = 0x9A0, 201cbf795c1SLior David WMI_SET_RF_SECTOR_PARAMS_CMDID = 0x9A1, 202cbf795c1SLior David WMI_GET_SELECTED_RF_SECTOR_INDEX_CMDID = 0x9A2, 203cbf795c1SLior David WMI_SET_SELECTED_RF_SECTOR_INDEX_CMDID = 0x9A3, 204cbf795c1SLior David WMI_SET_RF_SECTOR_ON_CMDID = 0x9A4, 2058ae5d62cSLior David WMI_PRIO_TX_SECTORS_ORDER_CMDID = 0x9A5, 2068ae5d62cSLior David WMI_PRIO_TX_SECTORS_NUMBER_CMDID = 0x9A6, 2078ae5d62cSLior David WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_CMDID = 0x9A7, 208b874ddecSLior David WMI_SET_MAC_ADDRESS_CMDID = 0xF003, 209b874ddecSLior David WMI_ABORT_SCAN_CMDID = 0xF007, 210b874ddecSLior David WMI_SET_PROMISCUOUS_MODE_CMDID = 0xF041, 211b874ddecSLior David WMI_GET_PMK_CMDID = 0xF048, 212b874ddecSLior David WMI_SET_PASSPHRASE_CMDID = 0xF049, 213b874ddecSLior David WMI_SEND_ASSOC_RES_CMDID = 0xF04A, 214b874ddecSLior David WMI_SET_ASSOC_REQ_RELAY_CMDID = 0xF04B, 215b874ddecSLior David WMI_MAC_ADDR_REQ_CMDID = 0xF04D, 216b874ddecSLior David WMI_FW_VER_CMDID = 0xF04E, 217b874ddecSLior David WMI_PMC_CMDID = 0xF04F, 2182be7d22fSVladimir Kondratiev }; 2192be7d22fSVladimir Kondratiev 220b874ddecSLior David /* WMI_CONNECT_CMDID */ 2212be7d22fSVladimir Kondratiev enum wmi_network_type { 2222be7d22fSVladimir Kondratiev WMI_NETTYPE_INFRA = 0x01, 2232be7d22fSVladimir Kondratiev WMI_NETTYPE_ADHOC = 0x02, 2242be7d22fSVladimir Kondratiev WMI_NETTYPE_ADHOC_CREATOR = 0x04, 2252be7d22fSVladimir Kondratiev WMI_NETTYPE_AP = 0x10, 2262be7d22fSVladimir Kondratiev WMI_NETTYPE_P2P = 0x20, 227b874ddecSLior David /* PCIE over 60g */ 228b874ddecSLior David WMI_NETTYPE_WBE = 0x40, 2292be7d22fSVladimir Kondratiev }; 2302be7d22fSVladimir Kondratiev 2312be7d22fSVladimir Kondratiev enum wmi_dot11_auth_mode { 2322be7d22fSVladimir Kondratiev WMI_AUTH11_OPEN = 0x01, 2332be7d22fSVladimir Kondratiev WMI_AUTH11_SHARED = 0x02, 2342be7d22fSVladimir Kondratiev WMI_AUTH11_LEAP = 0x04, 2352be7d22fSVladimir Kondratiev WMI_AUTH11_WSC = 0x08, 2362be7d22fSVladimir Kondratiev }; 2372be7d22fSVladimir Kondratiev 2382be7d22fSVladimir Kondratiev enum wmi_auth_mode { 2392be7d22fSVladimir Kondratiev WMI_AUTH_NONE = 0x01, 2402be7d22fSVladimir Kondratiev WMI_AUTH_WPA = 0x02, 2412be7d22fSVladimir Kondratiev WMI_AUTH_WPA2 = 0x04, 2422be7d22fSVladimir Kondratiev WMI_AUTH_WPA_PSK = 0x08, 2432be7d22fSVladimir Kondratiev WMI_AUTH_WPA2_PSK = 0x10, 2442be7d22fSVladimir Kondratiev WMI_AUTH_WPA_CCKM = 0x20, 2452be7d22fSVladimir Kondratiev WMI_AUTH_WPA2_CCKM = 0x40, 2462be7d22fSVladimir Kondratiev }; 2472be7d22fSVladimir Kondratiev 2482be7d22fSVladimir Kondratiev enum wmi_crypto_type { 2492be7d22fSVladimir Kondratiev WMI_CRYPT_NONE = 0x01, 2502be7d22fSVladimir Kondratiev WMI_CRYPT_AES_GCMP = 0x20, 2512be7d22fSVladimir Kondratiev }; 2522be7d22fSVladimir Kondratiev 2532be7d22fSVladimir Kondratiev enum wmi_connect_ctrl_flag_bits { 254b874ddecSLior David WMI_CONNECT_ASSOC_POLICY_USER = 0x01, 255b874ddecSLior David WMI_CONNECT_SEND_REASSOC = 0x02, 256b874ddecSLior David WMI_CONNECT_IGNORE_WPA_GROUP_CIPHER = 0x04, 257b874ddecSLior David WMI_CONNECT_PROFILE_MATCH_DONE = 0x08, 258b874ddecSLior David WMI_CONNECT_IGNORE_AAC_BEACON = 0x10, 259b874ddecSLior David WMI_CONNECT_CSA_FOLLOW_BSS = 0x20, 260b874ddecSLior David WMI_CONNECT_DO_WPA_OFFLOAD = 0x40, 261b874ddecSLior David WMI_CONNECT_DO_NOT_DEAUTH = 0x80, 2622be7d22fSVladimir Kondratiev }; 2632be7d22fSVladimir Kondratiev 2642be7d22fSVladimir Kondratiev #define WMI_MAX_SSID_LEN (32) 2652be7d22fSVladimir Kondratiev 266b874ddecSLior David /* WMI_CONNECT_CMDID */ 2672be7d22fSVladimir Kondratiev struct wmi_connect_cmd { 2682be7d22fSVladimir Kondratiev u8 network_type; 2692be7d22fSVladimir Kondratiev u8 dot11_auth_mode; 2702be7d22fSVladimir Kondratiev u8 auth_mode; 2712be7d22fSVladimir Kondratiev u8 pairwise_crypto_type; 2722be7d22fSVladimir Kondratiev u8 pairwise_crypto_len; 2732be7d22fSVladimir Kondratiev u8 group_crypto_type; 2742be7d22fSVladimir Kondratiev u8 group_crypto_len; 2752be7d22fSVladimir Kondratiev u8 ssid_len; 2762be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 2772be7d22fSVladimir Kondratiev u8 channel; 2782be7d22fSVladimir Kondratiev u8 reserved0; 2792be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 2802be7d22fSVladimir Kondratiev __le32 ctrl_flags; 2812be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 2822be7d22fSVladimir Kondratiev u8 reserved1[2]; 2832be7d22fSVladimir Kondratiev } __packed; 2842be7d22fSVladimir Kondratiev 285b874ddecSLior David /* WMI_DISCONNECT_STA_CMDID */ 286b8023177SVladimir Kondratiev struct wmi_disconnect_sta_cmd { 287b8023177SVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 288b8023177SVladimir Kondratiev __le16 disconnect_reason; 289b8023177SVladimir Kondratiev } __packed; 2902be7d22fSVladimir Kondratiev 2912be7d22fSVladimir Kondratiev #define WMI_MAX_KEY_INDEX (3) 2922be7d22fSVladimir Kondratiev #define WMI_MAX_KEY_LEN (32) 2932be7d22fSVladimir Kondratiev #define WMI_PASSPHRASE_LEN (64) 2942be7d22fSVladimir Kondratiev 295b874ddecSLior David /* WMI_SET_PASSPHRASE_CMDID */ 2962be7d22fSVladimir Kondratiev struct wmi_set_passphrase_cmd { 2972be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 2982be7d22fSVladimir Kondratiev u8 passphrase[WMI_PASSPHRASE_LEN]; 2992be7d22fSVladimir Kondratiev u8 ssid_len; 3002be7d22fSVladimir Kondratiev u8 passphrase_len; 3012be7d22fSVladimir Kondratiev } __packed; 3022be7d22fSVladimir Kondratiev 303b874ddecSLior David /* WMI_ADD_CIPHER_KEY_CMDID */ 3042be7d22fSVladimir Kondratiev enum wmi_key_usage { 305b874ddecSLior David WMI_KEY_USE_PAIRWISE = 0x00, 306b874ddecSLior David WMI_KEY_USE_RX_GROUP = 0x01, 307b874ddecSLior David WMI_KEY_USE_TX_GROUP = 0x02, 3082be7d22fSVladimir Kondratiev }; 3092be7d22fSVladimir Kondratiev 3102be7d22fSVladimir Kondratiev struct wmi_add_cipher_key_cmd { 3112be7d22fSVladimir Kondratiev u8 key_index; 3122be7d22fSVladimir Kondratiev u8 key_type; 313b874ddecSLior David /* enum wmi_key_usage */ 314b874ddecSLior David u8 key_usage; 3152be7d22fSVladimir Kondratiev u8 key_len; 316b874ddecSLior David /* key replay sequence counter */ 317b874ddecSLior David u8 key_rsc[8]; 3182be7d22fSVladimir Kondratiev u8 key[WMI_MAX_KEY_LEN]; 319b874ddecSLior David /* Additional Key Control information */ 320b874ddecSLior David u8 key_op_ctrl; 3212be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 3222be7d22fSVladimir Kondratiev } __packed; 3232be7d22fSVladimir Kondratiev 324b874ddecSLior David /* WMI_DELETE_CIPHER_KEY_CMDID */ 3252be7d22fSVladimir Kondratiev struct wmi_delete_cipher_key_cmd { 3262be7d22fSVladimir Kondratiev u8 key_index; 3272be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 3282be7d22fSVladimir Kondratiev } __packed; 3292be7d22fSVladimir Kondratiev 330b874ddecSLior David /* WMI_START_SCAN_CMDID 3312be7d22fSVladimir Kondratiev * 3322be7d22fSVladimir Kondratiev * Start L1 scan operation 3332be7d22fSVladimir Kondratiev * 3342be7d22fSVladimir Kondratiev * Returned events: 3352be7d22fSVladimir Kondratiev * - WMI_RX_MGMT_PACKET_EVENTID - for every probe resp. 3362be7d22fSVladimir Kondratiev * - WMI_SCAN_COMPLETE_EVENTID 3372be7d22fSVladimir Kondratiev */ 3382be7d22fSVladimir Kondratiev enum wmi_scan_type { 339b874ddecSLior David WMI_ACTIVE_SCAN = 0x00, 340b874ddecSLior David WMI_SHORT_SCAN = 0x01, 341b874ddecSLior David WMI_PASSIVE_SCAN = 0x02, 342b874ddecSLior David WMI_DIRECT_SCAN = 0x03, 343b874ddecSLior David WMI_LONG_SCAN = 0x04, 3442be7d22fSVladimir Kondratiev }; 3452be7d22fSVladimir Kondratiev 346b874ddecSLior David /* WMI_START_SCAN_CMDID */ 3472be7d22fSVladimir Kondratiev struct wmi_start_scan_cmd { 348b874ddecSLior David u8 direct_scan_mac_addr[WMI_MAC_LEN]; 3490163b031SMaya Erez /* run scan with discovery beacon. Relevant for ACTIVE scan only. */ 35074997a53SLior David u8 discovery_mode; 35174997a53SLior David u8 reserved; 352b874ddecSLior David /* Max duration in the home channel(ms) */ 353b874ddecSLior David __le32 dwell_time; 354b874ddecSLior David /* Time interval between scans (ms) */ 355b874ddecSLior David __le32 force_scan_interval; 356b874ddecSLior David /* enum wmi_scan_type */ 357b874ddecSLior David u8 scan_type; 358b874ddecSLior David /* how many channels follow */ 359b874ddecSLior David u8 num_channels; 360b874ddecSLior David /* channels ID's: 361b874ddecSLior David * 0 - 58320 MHz 362b874ddecSLior David * 1 - 60480 MHz 363b874ddecSLior David * 2 - 62640 MHz 364b874ddecSLior David */ 3652be7d22fSVladimir Kondratiev struct { 3662be7d22fSVladimir Kondratiev u8 channel; 3672be7d22fSVladimir Kondratiev u8 reserved; 368b874ddecSLior David } channel_list[0]; 3692be7d22fSVladimir Kondratiev } __packed; 3702be7d22fSVladimir Kondratiev 371b874ddecSLior David /* WMI_SET_PROBED_SSID_CMDID */ 372b8023177SVladimir Kondratiev #define MAX_PROBED_SSID_INDEX (3) 3732be7d22fSVladimir Kondratiev 3742be7d22fSVladimir Kondratiev enum wmi_ssid_flag { 375b874ddecSLior David /* disables entry */ 376b874ddecSLior David WMI_SSID_FLAG_DISABLE = 0x00, 377b874ddecSLior David /* probes specified ssid */ 378b874ddecSLior David WMI_SSID_FLAG_SPECIFIC = 0x01, 379b874ddecSLior David /* probes for any ssid */ 380b874ddecSLior David WMI_SSID_FLAG_ANY = 0x02, 3812be7d22fSVladimir Kondratiev }; 3822be7d22fSVladimir Kondratiev 3832be7d22fSVladimir Kondratiev struct wmi_probed_ssid_cmd { 384b874ddecSLior David /* 0 to MAX_PROBED_SSID_INDEX */ 385b874ddecSLior David u8 entry_index; 386b874ddecSLior David /* enum wmi_ssid_flag */ 387b874ddecSLior David u8 flag; 3882be7d22fSVladimir Kondratiev u8 ssid_len; 3892be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 3902be7d22fSVladimir Kondratiev } __packed; 3912be7d22fSVladimir Kondratiev 392b874ddecSLior David /* WMI_SET_APPIE_CMDID 3932be7d22fSVladimir Kondratiev * Add Application specified IE to a management frame 3942be7d22fSVladimir Kondratiev */ 395b8023177SVladimir Kondratiev #define WMI_MAX_IE_LEN (1024) 396b8023177SVladimir Kondratiev 397b874ddecSLior David /* Frame Types */ 398b8023177SVladimir Kondratiev enum wmi_mgmt_frame_type { 399b874ddecSLior David WMI_FRAME_BEACON = 0x00, 400b874ddecSLior David WMI_FRAME_PROBE_REQ = 0x01, 401b874ddecSLior David WMI_FRAME_PROBE_RESP = 0x02, 402b874ddecSLior David WMI_FRAME_ASSOC_REQ = 0x03, 403b874ddecSLior David WMI_FRAME_ASSOC_RESP = 0x04, 404b874ddecSLior David WMI_NUM_MGMT_FRAME = 0x05, 405b8023177SVladimir Kondratiev }; 406b8023177SVladimir Kondratiev 4072be7d22fSVladimir Kondratiev struct wmi_set_appie_cmd { 408b874ddecSLior David /* enum wmi_mgmt_frame_type */ 409b874ddecSLior David u8 mgmt_frm_type; 4102be7d22fSVladimir Kondratiev u8 reserved; 411b874ddecSLior David /* Length of the IE to be added to MGMT frame */ 412b874ddecSLior David __le16 ie_len; 4132be7d22fSVladimir Kondratiev u8 ie_info[0]; 4142be7d22fSVladimir Kondratiev } __packed; 4152be7d22fSVladimir Kondratiev 416b874ddecSLior David /* WMI_PXMT_RANGE_CFG_CMDID */ 4172be7d22fSVladimir Kondratiev struct wmi_pxmt_range_cfg_cmd { 4182be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 4192be7d22fSVladimir Kondratiev __le16 range; 4202be7d22fSVladimir Kondratiev } __packed; 4212be7d22fSVladimir Kondratiev 422b874ddecSLior David /* WMI_PXMT_SNR2_RANGE_CFG_CMDID */ 4232be7d22fSVladimir Kondratiev struct wmi_pxmt_snr2_range_cfg_cmd { 424b874ddecSLior David s8 snr2range_arr[2]; 4252be7d22fSVladimir Kondratiev } __packed; 4262be7d22fSVladimir Kondratiev 427b874ddecSLior David /* WMI_RF_MGMT_CMDID */ 4282be7d22fSVladimir Kondratiev enum wmi_rf_mgmt_type { 429b874ddecSLior David WMI_RF_MGMT_W_DISABLE = 0x00, 430b874ddecSLior David WMI_RF_MGMT_W_ENABLE = 0x01, 431b874ddecSLior David WMI_RF_MGMT_GET_STATUS = 0x02, 4322be7d22fSVladimir Kondratiev }; 4332be7d22fSVladimir Kondratiev 434b874ddecSLior David /* WMI_RF_MGMT_CMDID */ 4352be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_cmd { 4362be7d22fSVladimir Kondratiev __le32 rf_mgmt_type; 4372be7d22fSVladimir Kondratiev } __packed; 4382be7d22fSVladimir Kondratiev 439b874ddecSLior David /* WMI_THERMAL_THROTTLING_CTRL_CMDID */ 4408c679675SVladimir Kondratiev #define THERMAL_THROTTLING_USE_DEFAULT_MAX_TXOP_LENGTH (0xFFFFFFFF) 4418c679675SVladimir Kondratiev 442b874ddecSLior David /* WMI_THERMAL_THROTTLING_CTRL_CMDID */ 4438c679675SVladimir Kondratiev struct wmi_thermal_throttling_ctrl_cmd { 4448c679675SVladimir Kondratiev __le32 time_on_usec; 4458c679675SVladimir Kondratiev __le32 time_off_usec; 4468c679675SVladimir Kondratiev __le32 max_txop_length_usec; 4478c679675SVladimir Kondratiev } __packed; 4488c679675SVladimir Kondratiev 449b874ddecSLior David /* WMI_RF_RX_TEST_CMDID */ 450b8023177SVladimir Kondratiev struct wmi_rf_rx_test_cmd { 451b8023177SVladimir Kondratiev __le32 sector; 452b8023177SVladimir Kondratiev } __packed; 453b8023177SVladimir Kondratiev 454b874ddecSLior David /* WMI_CORR_MEASURE_CMDID */ 455b8023177SVladimir Kondratiev struct wmi_corr_measure_cmd { 456b874ddecSLior David __le32 freq_mhz; 457b8023177SVladimir Kondratiev __le32 length_samples; 458b8023177SVladimir Kondratiev __le32 iterations; 459b8023177SVladimir Kondratiev } __packed; 460b8023177SVladimir Kondratiev 461b874ddecSLior David /* WMI_SET_SSID_CMDID */ 4622be7d22fSVladimir Kondratiev struct wmi_set_ssid_cmd { 4632be7d22fSVladimir Kondratiev __le32 ssid_len; 4642be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 4652be7d22fSVladimir Kondratiev } __packed; 4662be7d22fSVladimir Kondratiev 467b874ddecSLior David /* WMI_SET_PCP_CHANNEL_CMDID */ 4682be7d22fSVladimir Kondratiev struct wmi_set_pcp_channel_cmd { 4692be7d22fSVladimir Kondratiev u8 channel; 4702be7d22fSVladimir Kondratiev u8 reserved[3]; 4712be7d22fSVladimir Kondratiev } __packed; 4722be7d22fSVladimir Kondratiev 473b874ddecSLior David /* WMI_BCON_CTRL_CMDID */ 4742be7d22fSVladimir Kondratiev struct wmi_bcon_ctrl_cmd { 4752be7d22fSVladimir Kondratiev __le16 bcon_interval; 4762be7d22fSVladimir Kondratiev __le16 frag_num; 4772be7d22fSVladimir Kondratiev __le64 ss_mask; 4782be7d22fSVladimir Kondratiev u8 network_type; 4796c2faf09SVladimir Kondratiev u8 pcp_max_assoc_sta; 4802be7d22fSVladimir Kondratiev u8 disable_sec_offload; 4812be7d22fSVladimir Kondratiev u8 disable_sec; 482b874ddecSLior David u8 hidden_ssid; 483b874ddecSLior David u8 is_go; 484b874ddecSLior David u8 reserved[2]; 4852be7d22fSVladimir Kondratiev } __packed; 4862be7d22fSVladimir Kondratiev 487b874ddecSLior David /* WMI_PORT_ALLOCATE_CMDID */ 488b8023177SVladimir Kondratiev enum wmi_port_role { 489b874ddecSLior David WMI_PORT_STA = 0x00, 490b874ddecSLior David WMI_PORT_PCP = 0x01, 491b874ddecSLior David WMI_PORT_AP = 0x02, 492b874ddecSLior David WMI_PORT_P2P_DEV = 0x03, 493b874ddecSLior David WMI_PORT_P2P_CLIENT = 0x04, 494b874ddecSLior David WMI_PORT_P2P_GO = 0x05, 495b8023177SVladimir Kondratiev }; 496b8023177SVladimir Kondratiev 497b874ddecSLior David /* WMI_PORT_ALLOCATE_CMDID */ 498b8023177SVladimir Kondratiev struct wmi_port_allocate_cmd { 499b8023177SVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 500b8023177SVladimir Kondratiev u8 port_role; 5016c2faf09SVladimir Kondratiev u8 mid; 502b8023177SVladimir Kondratiev } __packed; 503b8023177SVladimir Kondratiev 504b874ddecSLior David /* WMI_PORT_DELETE_CMDID */ 505b874ddecSLior David struct wmi_port_delete_cmd { 506b8023177SVladimir Kondratiev u8 mid; 507b8023177SVladimir Kondratiev u8 reserved[3]; 508b8023177SVladimir Kondratiev } __packed; 509b8023177SVladimir Kondratiev 5100163b031SMaya Erez /* WMI_TRAFFIC_DEFERRAL_CMDID */ 5110163b031SMaya Erez struct wmi_traffic_deferral_cmd { 5120163b031SMaya Erez /* Bit vector: bit[0] - wake on Unicast, bit[1] - wake on Broadcast */ 5130163b031SMaya Erez u8 wakeup_trigger; 5140163b031SMaya Erez } __packed; 5150163b031SMaya Erez 516b874ddecSLior David /* WMI_P2P_CFG_CMDID */ 517b8023177SVladimir Kondratiev enum wmi_discovery_mode { 518b874ddecSLior David WMI_DISCOVERY_MODE_NON_OFFLOAD = 0x00, 519b874ddecSLior David WMI_DISCOVERY_MODE_OFFLOAD = 0x01, 520b874ddecSLior David WMI_DISCOVERY_MODE_PEER2PEER = 0x02, 521b8023177SVladimir Kondratiev }; 522b8023177SVladimir Kondratiev 523b8023177SVladimir Kondratiev struct wmi_p2p_cfg_cmd { 524b874ddecSLior David /* enum wmi_discovery_mode */ 525b874ddecSLior David u8 discovery_mode; 526b8023177SVladimir Kondratiev u8 channel; 527b874ddecSLior David /* base to listen/search duration calculation */ 528b874ddecSLior David __le16 bcon_interval; 529b8023177SVladimir Kondratiev } __packed; 530b8023177SVladimir Kondratiev 531b874ddecSLior David /* WMI_POWER_MGMT_CFG_CMDID */ 532b8023177SVladimir Kondratiev enum wmi_power_source_type { 533b874ddecSLior David WMI_POWER_SOURCE_BATTERY = 0x00, 534b874ddecSLior David WMI_POWER_SOURCE_OTHER = 0x01, 535b8023177SVladimir Kondratiev }; 536b8023177SVladimir Kondratiev 537b8023177SVladimir Kondratiev struct wmi_power_mgmt_cfg_cmd { 538b874ddecSLior David /* enum wmi_power_source_type */ 539b874ddecSLior David u8 power_source; 540b8023177SVladimir Kondratiev u8 reserved[3]; 541b8023177SVladimir Kondratiev } __packed; 542b8023177SVladimir Kondratiev 543b874ddecSLior David /* WMI_PCP_START_CMDID */ 544b8023177SVladimir Kondratiev struct wmi_pcp_start_cmd { 545b8023177SVladimir Kondratiev __le16 bcon_interval; 5466c2faf09SVladimir Kondratiev u8 pcp_max_assoc_sta; 5478e52fe30SHamad Kadmany u8 hidden_ssid; 548b874ddecSLior David u8 is_go; 549*849a564bSDedy Lansky u8 reserved0[6]; 550*849a564bSDedy Lansky u8 disable_ap_sme; 551b8023177SVladimir Kondratiev u8 network_type; 552b8023177SVladimir Kondratiev u8 channel; 553b8023177SVladimir Kondratiev u8 disable_sec_offload; 554b8023177SVladimir Kondratiev u8 disable_sec; 555b8023177SVladimir Kondratiev } __packed; 556b8023177SVladimir Kondratiev 557b874ddecSLior David /* WMI_SW_TX_REQ_CMDID */ 5582be7d22fSVladimir Kondratiev struct wmi_sw_tx_req_cmd { 5592be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 5602be7d22fSVladimir Kondratiev __le16 len; 5612be7d22fSVladimir Kondratiev u8 payload[0]; 5622be7d22fSVladimir Kondratiev } __packed; 5632be7d22fSVladimir Kondratiev 5642be7d22fSVladimir Kondratiev struct wmi_sw_ring_cfg { 5652be7d22fSVladimir Kondratiev __le64 ring_mem_base; 5662be7d22fSVladimir Kondratiev __le16 ring_size; 5672be7d22fSVladimir Kondratiev __le16 max_mpdu_size; 5682be7d22fSVladimir Kondratiev } __packed; 5692be7d22fSVladimir Kondratiev 570b874ddecSLior David /* wmi_vring_cfg_schd */ 5712be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd { 5722be7d22fSVladimir Kondratiev __le16 priority; 5732be7d22fSVladimir Kondratiev __le16 timeslot_us; 5742be7d22fSVladimir Kondratiev } __packed; 5752be7d22fSVladimir Kondratiev 5762be7d22fSVladimir Kondratiev enum wmi_vring_cfg_encap_trans_type { 577b874ddecSLior David WMI_VRING_ENC_TYPE_802_3 = 0x00, 578b874ddecSLior David WMI_VRING_ENC_TYPE_NATIVE_WIFI = 0x01, 5792be7d22fSVladimir Kondratiev }; 5802be7d22fSVladimir Kondratiev 5812be7d22fSVladimir Kondratiev enum wmi_vring_cfg_ds_cfg { 582b874ddecSLior David WMI_VRING_DS_PBSS = 0x00, 583b874ddecSLior David WMI_VRING_DS_STATION = 0x01, 584b874ddecSLior David WMI_VRING_DS_AP = 0x02, 585b874ddecSLior David WMI_VRING_DS_ADDR4 = 0x03, 5862be7d22fSVladimir Kondratiev }; 5872be7d22fSVladimir Kondratiev 5882be7d22fSVladimir Kondratiev enum wmi_vring_cfg_nwifi_ds_trans_type { 589b874ddecSLior David WMI_NWIFI_TX_TRANS_MODE_NO = 0x00, 590b874ddecSLior David WMI_NWIFI_TX_TRANS_MODE_AP2PBSS = 0x01, 591b874ddecSLior David WMI_NWIFI_TX_TRANS_MODE_STA2PBSS = 0x02, 5922be7d22fSVladimir Kondratiev }; 5932be7d22fSVladimir Kondratiev 5942be7d22fSVladimir Kondratiev enum wmi_vring_cfg_schd_params_priority { 595b874ddecSLior David WMI_SCH_PRIO_REGULAR = 0x00, 596b874ddecSLior David WMI_SCH_PRIO_HIGH = 0x01, 5972be7d22fSVladimir Kondratiev }; 5982be7d22fSVladimir Kondratiev 5992be7d22fSVladimir Kondratiev #define CIDXTID_CID_POS (0) 6002be7d22fSVladimir Kondratiev #define CIDXTID_CID_LEN (4) 6012be7d22fSVladimir Kondratiev #define CIDXTID_CID_MSK (0xF) 6022be7d22fSVladimir Kondratiev #define CIDXTID_TID_POS (4) 6032be7d22fSVladimir Kondratiev #define CIDXTID_TID_LEN (4) 6042be7d22fSVladimir Kondratiev #define CIDXTID_TID_MSK (0xF0) 6052be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_POS (0) 6062be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_LEN (1) 6072be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_MSK (0x1) 6082be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_POS (1) 6092be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_LEN (1) 6102be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_MSK (0x2) 6112be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_POS (0) 6122be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_LEN (6) 6132be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_MSK (0x3F) 614b874ddecSLior David 615b874ddecSLior David struct wmi_vring_cfg { 616b874ddecSLior David struct wmi_sw_ring_cfg tx_sw_ring; 617b874ddecSLior David /* 0-23 vrings */ 618b874ddecSLior David u8 ringid; 619b874ddecSLior David u8 cidxtid; 620b874ddecSLior David u8 encap_trans_type; 621b874ddecSLior David /* 802.3 DS cfg */ 622b874ddecSLior David u8 ds_cfg; 623b874ddecSLior David u8 nwifi_ds_trans_type; 624b874ddecSLior David u8 mac_ctrl; 6252be7d22fSVladimir Kondratiev u8 to_resolution; 6262be7d22fSVladimir Kondratiev u8 agg_max_wsize; 6272be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd schd_params; 6282be7d22fSVladimir Kondratiev } __packed; 6292be7d22fSVladimir Kondratiev 6302be7d22fSVladimir Kondratiev enum wmi_vring_cfg_cmd_action { 631b874ddecSLior David WMI_VRING_CMD_ADD = 0x00, 632b874ddecSLior David WMI_VRING_CMD_MODIFY = 0x01, 633b874ddecSLior David WMI_VRING_CMD_DELETE = 0x02, 6342be7d22fSVladimir Kondratiev }; 6352be7d22fSVladimir Kondratiev 636b874ddecSLior David /* WMI_VRING_CFG_CMDID */ 6372be7d22fSVladimir Kondratiev struct wmi_vring_cfg_cmd { 6382be7d22fSVladimir Kondratiev __le32 action; 6392be7d22fSVladimir Kondratiev struct wmi_vring_cfg vring_cfg; 6402be7d22fSVladimir Kondratiev } __packed; 6412be7d22fSVladimir Kondratiev 64262bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg { 64362bfd300SVladimir Kondratiev struct wmi_sw_ring_cfg tx_sw_ring; 644b874ddecSLior David /* 0-23 vrings */ 645b874ddecSLior David u8 ringid; 64662bfd300SVladimir Kondratiev u8 encap_trans_type; 647b874ddecSLior David /* 802.3 DS cfg */ 648b874ddecSLior David u8 ds_cfg; 64962bfd300SVladimir Kondratiev u8 nwifi_ds_trans_type; 65062bfd300SVladimir Kondratiev } __packed; 65162bfd300SVladimir Kondratiev 652b874ddecSLior David /* WMI_BCAST_VRING_CFG_CMDID */ 65362bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg_cmd { 65462bfd300SVladimir Kondratiev __le32 action; 65562bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg vring_cfg; 65662bfd300SVladimir Kondratiev } __packed; 65762bfd300SVladimir Kondratiev 658b874ddecSLior David /* WMI_VRING_BA_EN_CMDID */ 6592be7d22fSVladimir Kondratiev struct wmi_vring_ba_en_cmd { 6602be7d22fSVladimir Kondratiev u8 ringid; 6612be7d22fSVladimir Kondratiev u8 agg_max_wsize; 6622be7d22fSVladimir Kondratiev __le16 ba_timeout; 663cbcf5866SVladimir Kondratiev u8 amsdu; 664b874ddecSLior David u8 reserved[3]; 6652be7d22fSVladimir Kondratiev } __packed; 6662be7d22fSVladimir Kondratiev 667b874ddecSLior David /* WMI_VRING_BA_DIS_CMDID */ 6682be7d22fSVladimir Kondratiev struct wmi_vring_ba_dis_cmd { 6692be7d22fSVladimir Kondratiev u8 ringid; 6702be7d22fSVladimir Kondratiev u8 reserved; 6712be7d22fSVladimir Kondratiev __le16 reason; 6722be7d22fSVladimir Kondratiev } __packed; 6732be7d22fSVladimir Kondratiev 674b874ddecSLior David /* WMI_NOTIFY_REQ_CMDID */ 6752be7d22fSVladimir Kondratiev struct wmi_notify_req_cmd { 6762be7d22fSVladimir Kondratiev u8 cid; 677b8023177SVladimir Kondratiev u8 year; 678b8023177SVladimir Kondratiev u8 month; 679b8023177SVladimir Kondratiev u8 day; 6802be7d22fSVladimir Kondratiev __le32 interval_usec; 681b8023177SVladimir Kondratiev u8 hour; 682b8023177SVladimir Kondratiev u8 minute; 683b8023177SVladimir Kondratiev u8 second; 684b8023177SVladimir Kondratiev u8 miliseconds; 6852be7d22fSVladimir Kondratiev } __packed; 6862be7d22fSVladimir Kondratiev 687b874ddecSLior David /* WMI_CFG_RX_CHAIN_CMDID */ 6882be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_mode { 689b874ddecSLior David WMI_SNIFFER_OFF = 0x00, 690b874ddecSLior David WMI_SNIFFER_ON = 0x01, 6912be7d22fSVladimir Kondratiev }; 6922be7d22fSVladimir Kondratiev 6932be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_info_mode { 694b874ddecSLior David WMI_SNIFFER_PHY_INFO_DISABLED = 0x00, 695b874ddecSLior David WMI_SNIFFER_PHY_INFO_ENABLED = 0x01, 6962be7d22fSVladimir Kondratiev }; 6972be7d22fSVladimir Kondratiev 6982be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_support { 699b874ddecSLior David WMI_SNIFFER_CP = 0x00, 700b874ddecSLior David WMI_SNIFFER_DP = 0x01, 701b874ddecSLior David WMI_SNIFFER_BOTH_PHYS = 0x02, 7022be7d22fSVladimir Kondratiev }; 7032be7d22fSVladimir Kondratiev 704b874ddecSLior David /* wmi_sniffer_cfg */ 7052be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg { 706b874ddecSLior David /* enum wmi_sniffer_cfg_mode */ 707b874ddecSLior David __le32 mode; 708b874ddecSLior David /* enum wmi_sniffer_cfg_phy_info_mode */ 709b874ddecSLior David __le32 phy_info_mode; 710b874ddecSLior David /* enum wmi_sniffer_cfg_phy_support */ 711b874ddecSLior David __le32 phy_support; 7122be7d22fSVladimir Kondratiev u8 channel; 7132be7d22fSVladimir Kondratiev u8 reserved[3]; 7142be7d22fSVladimir Kondratiev } __packed; 7152be7d22fSVladimir Kondratiev 7162be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_action { 717b874ddecSLior David WMI_RX_CHAIN_ADD = 0x00, 718b874ddecSLior David WMI_RX_CHAIN_DEL = 0x01, 7192be7d22fSVladimir Kondratiev }; 7202be7d22fSVladimir Kondratiev 7212be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_decap_trans_type { 722b874ddecSLior David WMI_DECAP_TYPE_802_3 = 0x00, 723b874ddecSLior David WMI_DECAP_TYPE_NATIVE_WIFI = 0x01, 724b874ddecSLior David WMI_DECAP_TYPE_NONE = 0x02, 7252be7d22fSVladimir Kondratiev }; 7262be7d22fSVladimir Kondratiev 7272be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_nwifi_ds_trans_type { 728b874ddecSLior David WMI_NWIFI_RX_TRANS_MODE_NO = 0x00, 729b874ddecSLior David WMI_NWIFI_RX_TRANS_MODE_PBSS2AP = 0x01, 730b874ddecSLior David WMI_NWIFI_RX_TRANS_MODE_PBSS2STA = 0x02, 7312be7d22fSVladimir Kondratiev }; 7322be7d22fSVladimir Kondratiev 733b8023177SVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_reorder_type { 734b874ddecSLior David WMI_RX_HW_REORDER = 0x00, 735b874ddecSLior David WMI_RX_SW_REORDER = 0x01, 736b8023177SVladimir Kondratiev }; 737b8023177SVladimir Kondratiev 7382be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_POS (0) 7392be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_LEN (1) 7402be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_MSK (0x1) 741c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_POS (1) 742c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_LEN (1) 743c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_MSK (0x2) 7442be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_POS (0) 7452be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_LEN (1) 7462be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_MSK (0x1) 7472be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_POS (1) 7482be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_LEN (1) 7492be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_MSK (0x2) 7502be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_POS (0) 7512be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_LEN (1) 7522be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_MSK (0x1) 7532be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_POS (1) 7542be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_LEN (1) 7552be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_MSK (0x2) 7562be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_POS (0) 7572be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_LEN (1) 7582be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_MSK (0x1) 7592be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_POS (1) 7602be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_LEN (1) 7612be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_MSK (0x2) 7622be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_POS (2) 7632be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_LEN (1) 7642be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_MSK (0x4) 7652be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_POS (3) 7662be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_LEN (1) 7672be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_MSK (0x8) 7682be7d22fSVladimir Kondratiev 769b874ddecSLior David /* WMI_CFG_RX_CHAIN_CMDID */ 770b874ddecSLior David struct wmi_cfg_rx_chain_cmd { 771b874ddecSLior David __le32 action; 772b874ddecSLior David struct wmi_sw_ring_cfg rx_sw_ring; 773b874ddecSLior David u8 mid; 774b874ddecSLior David u8 decap_trans_type; 775b874ddecSLior David u8 l2_802_3_offload_ctrl; 776b874ddecSLior David u8 l2_nwifi_offload_ctrl; 777b874ddecSLior David u8 vlan_id; 778b874ddecSLior David u8 nwifi_ds_trans_type; 779b874ddecSLior David u8 l3_l4_ctrl; 780b874ddecSLior David u8 ring_ctrl; 7812be7d22fSVladimir Kondratiev __le16 prefetch_thrsh; 7822be7d22fSVladimir Kondratiev __le16 wb_thrsh; 7832be7d22fSVladimir Kondratiev __le32 itr_value; 7842be7d22fSVladimir Kondratiev __le16 host_thrsh; 785b8023177SVladimir Kondratiev u8 reorder_type; 786b8023177SVladimir Kondratiev u8 reserved; 7872be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg sniffer_cfg; 788b874ddecSLior David __le16 max_rx_pl_per_desc; 7892be7d22fSVladimir Kondratiev } __packed; 7902be7d22fSVladimir Kondratiev 791b874ddecSLior David /* WMI_RCP_ADDBA_RESP_CMDID */ 7922be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_cmd { 7932be7d22fSVladimir Kondratiev u8 cidxtid; 7942be7d22fSVladimir Kondratiev u8 dialog_token; 7952be7d22fSVladimir Kondratiev __le16 status_code; 796b874ddecSLior David /* ieee80211_ba_parameterset field to send */ 797b874ddecSLior David __le16 ba_param_set; 7982be7d22fSVladimir Kondratiev __le16 ba_timeout; 7992be7d22fSVladimir Kondratiev } __packed; 8002be7d22fSVladimir Kondratiev 801b874ddecSLior David /* WMI_RCP_DELBA_CMDID */ 8022be7d22fSVladimir Kondratiev struct wmi_rcp_delba_cmd { 8032be7d22fSVladimir Kondratiev u8 cidxtid; 8042be7d22fSVladimir Kondratiev u8 reserved; 8052be7d22fSVladimir Kondratiev __le16 reason; 8062be7d22fSVladimir Kondratiev } __packed; 8072be7d22fSVladimir Kondratiev 808b874ddecSLior David /* WMI_RCP_ADDBA_REQ_CMDID */ 8092be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_cmd { 8102be7d22fSVladimir Kondratiev u8 cidxtid; 8112be7d22fSVladimir Kondratiev u8 dialog_token; 8122be7d22fSVladimir Kondratiev /* ieee80211_ba_parameterset field as it received */ 8132be7d22fSVladimir Kondratiev __le16 ba_param_set; 8142be7d22fSVladimir Kondratiev __le16 ba_timeout; 8152be7d22fSVladimir Kondratiev /* ieee80211_ba_seqstrl field as it received */ 8162be7d22fSVladimir Kondratiev __le16 ba_seq_ctrl; 8172be7d22fSVladimir Kondratiev } __packed; 8182be7d22fSVladimir Kondratiev 819b874ddecSLior David /* WMI_SET_MAC_ADDRESS_CMDID */ 8202be7d22fSVladimir Kondratiev struct wmi_set_mac_address_cmd { 8212be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 8222be7d22fSVladimir Kondratiev u8 reserved[2]; 8232be7d22fSVladimir Kondratiev } __packed; 8242be7d22fSVladimir Kondratiev 825b874ddecSLior David /* WMI_ECHO_CMDID 8262be7d22fSVladimir Kondratiev * Check FW is alive 8272be7d22fSVladimir Kondratiev * WMI_DEEP_ECHO_CMDID 8282be7d22fSVladimir Kondratiev * Check FW and ucode are alive 8292be7d22fSVladimir Kondratiev * Returned event: WMI_ECHO_RSP_EVENTID 8302be7d22fSVladimir Kondratiev * same event for both commands 8312be7d22fSVladimir Kondratiev */ 8322be7d22fSVladimir Kondratiev struct wmi_echo_cmd { 8332be7d22fSVladimir Kondratiev __le32 value; 8342be7d22fSVladimir Kondratiev } __packed; 8352be7d22fSVladimir Kondratiev 836b874ddecSLior David /* WMI_OTP_READ_CMDID */ 837b874ddecSLior David struct wmi_otp_read_cmd { 838b874ddecSLior David __le32 addr; 839b874ddecSLior David __le32 size; 840b874ddecSLior David __le32 values; 841b874ddecSLior David } __packed; 842b874ddecSLior David 843b874ddecSLior David /* WMI_OTP_WRITE_CMDID */ 844b874ddecSLior David struct wmi_otp_write_cmd { 845b874ddecSLior David __le32 addr; 846b874ddecSLior David __le32 size; 847b874ddecSLior David __le32 values; 848b874ddecSLior David } __packed; 849b874ddecSLior David 850b874ddecSLior David /* WMI_TEMP_SENSE_CMDID 851b8023177SVladimir Kondratiev * 852b8023177SVladimir Kondratiev * Measure MAC and radio temperatures 853b874ddecSLior David * 854b874ddecSLior David * Possible modes for temperature measurement 855b8023177SVladimir Kondratiev */ 8568c679675SVladimir Kondratiev enum wmi_temperature_measure_mode { 857b874ddecSLior David TEMPERATURE_USE_OLD_VALUE = 0x01, 858b874ddecSLior David TEMPERATURE_MEASURE_NOW = 0x02, 8598c679675SVladimir Kondratiev }; 8608c679675SVladimir Kondratiev 861b874ddecSLior David /* WMI_TEMP_SENSE_CMDID */ 862b8023177SVladimir Kondratiev struct wmi_temp_sense_cmd { 8638c679675SVladimir Kondratiev __le32 measure_baseband_en; 8648c679675SVladimir Kondratiev __le32 measure_rf_en; 8658c679675SVladimir Kondratiev __le32 measure_mode; 866b8023177SVladimir Kondratiev } __packed; 867b8023177SVladimir Kondratiev 868b874ddecSLior David enum wmi_pmc_op { 869b874ddecSLior David WMI_PMC_ALLOCATE = 0x00, 870b874ddecSLior David WMI_PMC_RELEASE = 0x01, 871dc16427bSVladimir Kondratiev }; 872dc16427bSVladimir Kondratiev 873b874ddecSLior David /* WMI_PMC_CMDID */ 874dc16427bSVladimir Kondratiev struct wmi_pmc_cmd { 875b874ddecSLior David /* enum wmi_pmc_cmd_op_type */ 876b874ddecSLior David u8 op; 877dc16427bSVladimir Kondratiev u8 reserved; 878dc16427bSVladimir Kondratiev __le16 ring_size; 879dc16427bSVladimir Kondratiev __le64 mem_base; 880dc16427bSVladimir Kondratiev } __packed; 881dc16427bSVladimir Kondratiev 88208989f96SLior David enum wmi_aoa_meas_type { 88308989f96SLior David WMI_AOA_PHASE_MEAS = 0x00, 88408989f96SLior David WMI_AOA_PHASE_AMP_MEAS = 0x01, 88508989f96SLior David }; 88608989f96SLior David 88708989f96SLior David /* WMI_AOA_MEAS_CMDID */ 88808989f96SLior David struct wmi_aoa_meas_cmd { 88908989f96SLior David u8 mac_addr[WMI_MAC_LEN]; 89008989f96SLior David /* channels IDs: 89108989f96SLior David * 0 - 58320 MHz 89208989f96SLior David * 1 - 60480 MHz 89308989f96SLior David * 2 - 62640 MHz 89408989f96SLior David */ 89508989f96SLior David u8 channel; 89608989f96SLior David /* enum wmi_aoa_meas_type */ 89708989f96SLior David u8 aoa_meas_type; 89808989f96SLior David __le32 meas_rf_mask; 89908989f96SLior David } __packed; 90008989f96SLior David 901cbf795c1SLior David /* WMI_SET_MGMT_RETRY_LIMIT_CMDID */ 902cbf795c1SLior David struct wmi_set_mgmt_retry_limit_cmd { 903cbf795c1SLior David /* MAC retransmit limit for mgmt frames */ 904cbf795c1SLior David u8 mgmt_retry_limit; 905cbf795c1SLior David /* alignment to 32b */ 906cbf795c1SLior David u8 reserved[3]; 907cbf795c1SLior David } __packed; 908cbf795c1SLior David 909*849a564bSDedy Lansky /* WMI_NEW_STA_CMDID */ 910*849a564bSDedy Lansky struct wmi_new_sta_cmd { 911*849a564bSDedy Lansky u8 dst_mac[WMI_MAC_LEN]; 912*849a564bSDedy Lansky u8 aid; 913*849a564bSDedy Lansky } __packed; 914*849a564bSDedy Lansky 915*849a564bSDedy Lansky /* WMI_DEL_STA_CMDID */ 916*849a564bSDedy Lansky struct wmi_del_sta_cmd { 917*849a564bSDedy Lansky u8 dst_mac[WMI_MAC_LEN]; 918*849a564bSDedy Lansky __le16 disconnect_reason; 919*849a564bSDedy Lansky } __packed; 920*849a564bSDedy Lansky 92108989f96SLior David enum wmi_tof_burst_duration { 92208989f96SLior David WMI_TOF_BURST_DURATION_250_USEC = 2, 92308989f96SLior David WMI_TOF_BURST_DURATION_500_USEC = 3, 92408989f96SLior David WMI_TOF_BURST_DURATION_1_MSEC = 4, 92508989f96SLior David WMI_TOF_BURST_DURATION_2_MSEC = 5, 92608989f96SLior David WMI_TOF_BURST_DURATION_4_MSEC = 6, 92708989f96SLior David WMI_TOF_BURST_DURATION_8_MSEC = 7, 92808989f96SLior David WMI_TOF_BURST_DURATION_16_MSEC = 8, 92908989f96SLior David WMI_TOF_BURST_DURATION_32_MSEC = 9, 93008989f96SLior David WMI_TOF_BURST_DURATION_64_MSEC = 10, 93108989f96SLior David WMI_TOF_BURST_DURATION_128_MSEC = 11, 93208989f96SLior David WMI_TOF_BURST_DURATION_NO_PREFERENCES = 15, 93308989f96SLior David }; 93408989f96SLior David 93508989f96SLior David enum wmi_tof_session_start_flags { 93608989f96SLior David WMI_TOF_SESSION_START_FLAG_SECURED = 0x1, 93708989f96SLior David WMI_TOF_SESSION_START_FLAG_ASAP = 0x2, 93808989f96SLior David WMI_TOF_SESSION_START_FLAG_LCI_REQ = 0x4, 93908989f96SLior David WMI_TOF_SESSION_START_FLAG_LCR_REQ = 0x8, 94008989f96SLior David }; 94108989f96SLior David 94208989f96SLior David /* WMI_TOF_SESSION_START_CMDID */ 94308989f96SLior David struct wmi_ftm_dest_info { 94408989f96SLior David u8 channel; 94508989f96SLior David /* wmi_tof_session_start_flags_e */ 94608989f96SLior David u8 flags; 94708989f96SLior David u8 initial_token; 94808989f96SLior David u8 num_of_ftm_per_burst; 94908989f96SLior David u8 num_of_bursts_exp; 95008989f96SLior David /* wmi_tof_burst_duration_e */ 95108989f96SLior David u8 burst_duration; 95208989f96SLior David /* Burst Period indicate interval between two consecutive burst 95308989f96SLior David * instances, in units of 100 ms 95408989f96SLior David */ 95508989f96SLior David __le16 burst_period; 95608989f96SLior David u8 dst_mac[WMI_MAC_LEN]; 95708989f96SLior David __le16 reserved; 95808989f96SLior David } __packed; 95908989f96SLior David 96008989f96SLior David /* WMI_TOF_SESSION_START_CMDID */ 96108989f96SLior David struct wmi_tof_session_start_cmd { 96208989f96SLior David __le32 session_id; 96308989f96SLior David u8 num_of_aoa_measures; 96408989f96SLior David u8 aoa_type; 96508989f96SLior David __le16 num_of_dest; 96608989f96SLior David u8 reserved[4]; 96708989f96SLior David struct wmi_ftm_dest_info ftm_dest_info[0]; 96808989f96SLior David } __packed; 96908989f96SLior David 97008989f96SLior David enum wmi_tof_channel_info_report_type { 97108989f96SLior David WMI_TOF_CHANNEL_INFO_TYPE_CIR = 0x1, 97208989f96SLior David WMI_TOF_CHANNEL_INFO_TYPE_RSSI = 0x2, 97308989f96SLior David WMI_TOF_CHANNEL_INFO_TYPE_SNR = 0x4, 97408989f96SLior David WMI_TOF_CHANNEL_INFO_TYPE_DEBUG_DATA = 0x8, 97508989f96SLior David WMI_TOF_CHANNEL_INFO_TYPE_VENDOR_SPECIFIC = 0x10, 97608989f96SLior David }; 97708989f96SLior David 97808989f96SLior David /* WMI_TOF_CHANNEL_INFO_CMDID */ 97908989f96SLior David struct wmi_tof_channel_info_cmd { 98008989f96SLior David /* wmi_tof_channel_info_report_type_e */ 98108989f96SLior David __le32 channel_info_report_request; 98208989f96SLior David } __packed; 98308989f96SLior David 9848ae5d62cSLior David /* WMI_TOF_SET_TX_RX_OFFSET_CMDID */ 9858ae5d62cSLior David struct wmi_tof_set_tx_rx_offset_cmd { 9868ae5d62cSLior David /* TX delay offset */ 9878ae5d62cSLior David __le32 tx_offset; 9888ae5d62cSLior David /* RX delay offset */ 9898ae5d62cSLior David __le32 rx_offset; 9908ae5d62cSLior David __le32 reserved[2]; 9918ae5d62cSLior David } __packed; 9928ae5d62cSLior David 993b874ddecSLior David /* WMI Events 9942be7d22fSVladimir Kondratiev * List of Events (target to host) 9952be7d22fSVladimir Kondratiev */ 9962be7d22fSVladimir Kondratiev enum wmi_event_id { 9972be7d22fSVladimir Kondratiev WMI_READY_EVENTID = 0x1001, 9982be7d22fSVladimir Kondratiev WMI_CONNECT_EVENTID = 0x1002, 9992be7d22fSVladimir Kondratiev WMI_DISCONNECT_EVENTID = 0x1003, 1000b874ddecSLior David WMI_SCAN_COMPLETE_EVENTID = 0x100A, 1001b874ddecSLior David WMI_REPORT_STATISTICS_EVENTID = 0x100B, 10022be7d22fSVladimir Kondratiev WMI_RD_MEM_RSP_EVENTID = 0x1800, 10032be7d22fSVladimir Kondratiev WMI_FW_READY_EVENTID = 0x1801, 1004b874ddecSLior David WMI_EXIT_FAST_MEM_ACC_MODE_EVENTID = 0x200, 10052be7d22fSVladimir Kondratiev WMI_ECHO_RSP_EVENTID = 0x1803, 1006b874ddecSLior David WMI_FS_TUNE_DONE_EVENTID = 0x180A, 1007b874ddecSLior David WMI_CORR_MEASURE_EVENTID = 0x180B, 1008b874ddecSLior David WMI_READ_RSSI_EVENTID = 0x180C, 1009b874ddecSLior David WMI_TEMP_SENSE_DONE_EVENTID = 0x180E, 1010b874ddecSLior David WMI_DC_CALIB_DONE_EVENTID = 0x180F, 10112be7d22fSVladimir Kondratiev WMI_IQ_TX_CALIB_DONE_EVENTID = 0x1811, 10122be7d22fSVladimir Kondratiev WMI_IQ_RX_CALIB_DONE_EVENTID = 0x1812, 10132be7d22fSVladimir Kondratiev WMI_SET_WORK_MODE_DONE_EVENTID = 0x1815, 10142be7d22fSVladimir Kondratiev WMI_LO_LEAKAGE_CALIB_DONE_EVENTID = 0x1816, 10152be7d22fSVladimir Kondratiev WMI_MARLON_R_READ_DONE_EVENTID = 0x1818, 10162be7d22fSVladimir Kondratiev WMI_MARLON_R_WRITE_DONE_EVENTID = 0x1819, 1017b874ddecSLior David WMI_MARLON_R_TXRX_SEL_DONE_EVENTID = 0x181A, 1018b874ddecSLior David WMI_SILENT_RSSI_CALIB_DONE_EVENTID = 0x181D, 1019b874ddecSLior David WMI_RF_RX_TEST_DONE_EVENTID = 0x181E, 10202be7d22fSVladimir Kondratiev WMI_CFG_RX_CHAIN_DONE_EVENTID = 0x1820, 10212be7d22fSVladimir Kondratiev WMI_VRING_CFG_DONE_EVENTID = 0x1821, 10222be7d22fSVladimir Kondratiev WMI_BA_STATUS_EVENTID = 0x1823, 10232be7d22fSVladimir Kondratiev WMI_RCP_ADDBA_REQ_EVENTID = 0x1824, 1024230d8442SVladimir Kondratiev WMI_RCP_ADDBA_RESP_SENT_EVENTID = 0x1825, 10252be7d22fSVladimir Kondratiev WMI_DELBA_EVENTID = 0x1826, 10262be7d22fSVladimir Kondratiev WMI_GET_SSID_EVENTID = 0x1828, 1027b874ddecSLior David WMI_GET_PCP_CHANNEL_EVENTID = 0x182A, 1028b874ddecSLior David WMI_SW_TX_COMPLETE_EVENTID = 0x182B, 10292be7d22fSVladimir Kondratiev WMI_READ_MAC_RXQ_EVENTID = 0x1830, 10302be7d22fSVladimir Kondratiev WMI_READ_MAC_TXQ_EVENTID = 0x1831, 10312be7d22fSVladimir Kondratiev WMI_WRITE_MAC_RXQ_EVENTID = 0x1832, 10322be7d22fSVladimir Kondratiev WMI_WRITE_MAC_TXQ_EVENTID = 0x1833, 10332be7d22fSVladimir Kondratiev WMI_WRITE_MAC_XQ_FIELD_EVENTID = 0x1834, 1034230d8442SVladimir Kondratiev WMI_BEAMFORMING_MGMT_DONE_EVENTID = 0x1836, 10352be7d22fSVladimir Kondratiev WMI_BF_TXSS_MGMT_DONE_EVENTID = 0x1837, 10362be7d22fSVladimir Kondratiev WMI_BF_RXSS_MGMT_DONE_EVENTID = 0x1839, 10372be7d22fSVladimir Kondratiev WMI_RS_MGMT_DONE_EVENTID = 0x1852, 10382be7d22fSVladimir Kondratiev WMI_RF_MGMT_STATUS_EVENTID = 0x1853, 10398c679675SVladimir Kondratiev WMI_THERMAL_THROTTLING_STATUS_EVENTID = 0x1855, 10402be7d22fSVladimir Kondratiev WMI_BF_SM_MGMT_DONE_EVENTID = 0x1838, 10412be7d22fSVladimir Kondratiev WMI_RX_MGMT_PACKET_EVENTID = 0x1840, 10426c2faf09SVladimir Kondratiev WMI_TX_MGMT_PACKET_EVENTID = 0x1841, 10430163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_WRITE_DONE_EVENTID = 0x1842, 10440163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_READ_DONE_EVENTID = 0x1843, 1045b874ddecSLior David WMI_OTP_READ_RESULT_EVENTID = 0x1856, 104610d599adSMaya Erez WMI_LED_CFG_DONE_EVENTID = 0x1858, 10472be7d22fSVladimir Kondratiev /* Performance monitoring events */ 10482be7d22fSVladimir Kondratiev WMI_DATA_PORT_OPEN_EVENTID = 0x1860, 1049230d8442SVladimir Kondratiev WMI_WBE_LINK_DOWN_EVENTID = 0x1861, 10502be7d22fSVladimir Kondratiev WMI_BF_CTRL_DONE_EVENTID = 0x1862, 10512be7d22fSVladimir Kondratiev WMI_NOTIFY_REQ_DONE_EVENTID = 0x1863, 10522be7d22fSVladimir Kondratiev WMI_GET_STATUS_DONE_EVENTID = 0x1864, 1053230d8442SVladimir Kondratiev WMI_VRING_EN_EVENTID = 0x1865, 10540163b031SMaya Erez WMI_GET_RF_STATUS_EVENTID = 0x1866, 10550163b031SMaya Erez WMI_GET_BASEBAND_TYPE_EVENTID = 0x1867, 10562be7d22fSVladimir Kondratiev WMI_UNIT_TEST_EVENTID = 0x1900, 10572be7d22fSVladimir Kondratiev WMI_FLASH_READ_DONE_EVENTID = 0x1902, 10582be7d22fSVladimir Kondratiev WMI_FLASH_WRITE_DONE_EVENTID = 0x1903, 10590163b031SMaya Erez /* Power management */ 10600163b031SMaya Erez WMI_TRAFFIC_DEFERRAL_EVENTID = 0x1904, 10610163b031SMaya Erez WMI_TRAFFIC_RESUME_EVENTID = 0x1905, 1062b8023177SVladimir Kondratiev /* P2P */ 10638c679675SVladimir Kondratiev WMI_P2P_CFG_DONE_EVENTID = 0x1910, 1064b8023177SVladimir Kondratiev WMI_PORT_ALLOCATED_EVENTID = 0x1911, 1065b8023177SVladimir Kondratiev WMI_PORT_DELETED_EVENTID = 0x1912, 1066b8023177SVladimir Kondratiev WMI_LISTEN_STARTED_EVENTID = 0x1914, 1067b8023177SVladimir Kondratiev WMI_SEARCH_STARTED_EVENTID = 0x1915, 1068b8023177SVladimir Kondratiev WMI_DISCOVERY_STARTED_EVENTID = 0x1916, 1069b8023177SVladimir Kondratiev WMI_DISCOVERY_STOPPED_EVENTID = 0x1917, 1070b8023177SVladimir Kondratiev WMI_PCP_STARTED_EVENTID = 0x1918, 1071b8023177SVladimir Kondratiev WMI_PCP_STOPPED_EVENTID = 0x1919, 1072b874ddecSLior David WMI_PCP_FACTOR_EVENTID = 0x191A, 10730163b031SMaya Erez /* Power Save Configuration Events */ 10740163b031SMaya Erez WMI_PS_DEV_PROFILE_CFG_EVENTID = 0x191C, 10750163b031SMaya Erez /* Not supported yet */ 10760163b031SMaya Erez WMI_PS_DEV_CFG_EVENTID = 0x191D, 10770163b031SMaya Erez /* Not supported yet */ 10780163b031SMaya Erez WMI_PS_DEV_CFG_READ_EVENTID = 0x191E, 10790163b031SMaya Erez /* Not supported yet */ 10800163b031SMaya Erez WMI_PS_MID_CFG_EVENTID = 0x191F, 10810163b031SMaya Erez /* Not supported yet */ 10820163b031SMaya Erez WMI_PS_MID_CFG_READ_EVENTID = 0x1920, 10830163b031SMaya Erez WMI_RS_CFG_DONE_EVENTID = 0x1921, 108408989f96SLior David WMI_GET_DETAILED_RS_RES_EVENTID = 0x1922, 108508989f96SLior David WMI_AOA_MEAS_EVENTID = 0x1923, 1086cbf795c1SLior David WMI_SET_MGMT_RETRY_LIMIT_EVENTID = 0x1930, 1087cbf795c1SLior David WMI_GET_MGMT_RETRY_LIMIT_EVENTID = 0x1931, 108808989f96SLior David WMI_TOF_SESSION_END_EVENTID = 0x1991, 108908989f96SLior David WMI_TOF_GET_CAPABILITIES_EVENTID = 0x1992, 109008989f96SLior David WMI_TOF_SET_LCR_EVENTID = 0x1993, 109108989f96SLior David WMI_TOF_SET_LCI_EVENTID = 0x1994, 109208989f96SLior David WMI_TOF_FTM_PER_DEST_RES_EVENTID = 0x1995, 109308989f96SLior David WMI_TOF_CHANNEL_INFO_EVENTID = 0x1996, 10948ae5d62cSLior David WMI_TOF_SET_TX_RX_OFFSET_EVENTID = 0x1997, 10958ae5d62cSLior David WMI_TOF_GET_TX_RX_OFFSET_EVENTID = 0x1998, 1096cbf795c1SLior David WMI_GET_RF_SECTOR_PARAMS_DONE_EVENTID = 0x19A0, 1097cbf795c1SLior David WMI_SET_RF_SECTOR_PARAMS_DONE_EVENTID = 0x19A1, 1098cbf795c1SLior David WMI_GET_SELECTED_RF_SECTOR_INDEX_DONE_EVENTID = 0x19A2, 1099cbf795c1SLior David WMI_SET_SELECTED_RF_SECTOR_INDEX_DONE_EVENTID = 0x19A3, 1100cbf795c1SLior David WMI_SET_RF_SECTOR_ON_DONE_EVENTID = 0x19A4, 11018ae5d62cSLior David WMI_PRIO_TX_SECTORS_ORDER_EVENTID = 0x19A5, 11028ae5d62cSLior David WMI_PRIO_TX_SECTORS_NUMBER_EVENTID = 0x19A6, 11038ae5d62cSLior David WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_EVENTID = 0x19A7, 11042be7d22fSVladimir Kondratiev WMI_SET_CHANNEL_EVENTID = 0x9000, 11052be7d22fSVladimir Kondratiev WMI_ASSOC_REQ_EVENTID = 0x9001, 11062be7d22fSVladimir Kondratiev WMI_EAPOL_RX_EVENTID = 0x9002, 11072be7d22fSVladimir Kondratiev WMI_MAC_ADDR_RESP_EVENTID = 0x9003, 11082be7d22fSVladimir Kondratiev WMI_FW_VER_EVENTID = 0x9004, 1109b874ddecSLior David WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENTID = 0x9005, 11102be7d22fSVladimir Kondratiev }; 11112be7d22fSVladimir Kondratiev 1112b874ddecSLior David /* Events data structures */ 1113b8023177SVladimir Kondratiev enum wmi_fw_status { 1114b874ddecSLior David WMI_FW_STATUS_SUCCESS = 0x00, 1115b874ddecSLior David WMI_FW_STATUS_FAILURE = 0x01, 1116b8023177SVladimir Kondratiev }; 1117b8023177SVladimir Kondratiev 1118b874ddecSLior David /* WMI_RF_MGMT_STATUS_EVENTID */ 11192be7d22fSVladimir Kondratiev enum wmi_rf_status { 1120b874ddecSLior David WMI_RF_ENABLED = 0x00, 1121b874ddecSLior David WMI_RF_DISABLED_HW = 0x01, 1122b874ddecSLior David WMI_RF_DISABLED_SW = 0x02, 1123b874ddecSLior David WMI_RF_DISABLED_HW_SW = 0x03, 11242be7d22fSVladimir Kondratiev }; 11252be7d22fSVladimir Kondratiev 1126b874ddecSLior David /* WMI_RF_MGMT_STATUS_EVENTID */ 11272be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_status_event { 11282be7d22fSVladimir Kondratiev __le32 rf_status; 11292be7d22fSVladimir Kondratiev } __packed; 11302be7d22fSVladimir Kondratiev 1131b874ddecSLior David /* WMI_THERMAL_THROTTLING_STATUS_EVENTID */ 11328c679675SVladimir Kondratiev struct wmi_thermal_throttling_status_event { 11338c679675SVladimir Kondratiev __le32 time_on_usec; 11348c679675SVladimir Kondratiev __le32 time_off_usec; 11358c679675SVladimir Kondratiev __le32 max_txop_length_usec; 11368c679675SVladimir Kondratiev } __packed; 11378c679675SVladimir Kondratiev 1138b874ddecSLior David /* WMI_GET_STATUS_DONE_EVENTID */ 11392be7d22fSVladimir Kondratiev struct wmi_get_status_done_event { 11402be7d22fSVladimir Kondratiev __le32 is_associated; 11412be7d22fSVladimir Kondratiev u8 cid; 11422be7d22fSVladimir Kondratiev u8 reserved0[3]; 11432be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 11442be7d22fSVladimir Kondratiev u8 channel; 11452be7d22fSVladimir Kondratiev u8 reserved1; 11462be7d22fSVladimir Kondratiev u8 network_type; 11472be7d22fSVladimir Kondratiev u8 reserved2[3]; 11482be7d22fSVladimir Kondratiev __le32 ssid_len; 11492be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 11502be7d22fSVladimir Kondratiev __le32 rf_status; 11512be7d22fSVladimir Kondratiev __le32 is_secured; 11522be7d22fSVladimir Kondratiev } __packed; 11532be7d22fSVladimir Kondratiev 1154b874ddecSLior David /* WMI_FW_VER_EVENTID */ 11552be7d22fSVladimir Kondratiev struct wmi_fw_ver_event { 11560163b031SMaya Erez /* FW image version */ 11570163b031SMaya Erez __le32 fw_major; 11580163b031SMaya Erez __le32 fw_minor; 11590163b031SMaya Erez __le32 fw_subminor; 11600163b031SMaya Erez __le32 fw_build; 11610163b031SMaya Erez /* FW image build time stamp */ 11620163b031SMaya Erez __le32 hour; 11630163b031SMaya Erez __le32 minute; 11640163b031SMaya Erez __le32 second; 11650163b031SMaya Erez __le32 day; 11660163b031SMaya Erez __le32 month; 11670163b031SMaya Erez __le32 year; 11680163b031SMaya Erez /* Boot Loader image version */ 11690163b031SMaya Erez __le32 bl_major; 11700163b031SMaya Erez __le32 bl_minor; 11710163b031SMaya Erez __le32 bl_subminor; 11720163b031SMaya Erez __le32 bl_build; 117308989f96SLior David /* The number of entries in the FW capabilies array */ 117408989f96SLior David u8 fw_capabilities_len; 117508989f96SLior David u8 reserved[3]; 117608989f96SLior David /* FW capabilities info 117708989f96SLior David * Must be the last member of the struct 117808989f96SLior David */ 117908989f96SLior David __le32 fw_capabilities[0]; 11800163b031SMaya Erez } __packed; 11810163b031SMaya Erez 11820163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */ 11830163b031SMaya Erez enum rf_type { 11840163b031SMaya Erez RF_UNKNOWN = 0x00, 11850163b031SMaya Erez RF_MARLON = 0x01, 11860163b031SMaya Erez RF_SPARROW = 0x02, 11870163b031SMaya Erez }; 11880163b031SMaya Erez 11890163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */ 11900163b031SMaya Erez enum board_file_rf_type { 11910163b031SMaya Erez BF_RF_MARLON = 0x00, 11920163b031SMaya Erez BF_RF_SPARROW = 0x01, 11930163b031SMaya Erez }; 11940163b031SMaya Erez 11950163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */ 11960163b031SMaya Erez enum rf_status { 11970163b031SMaya Erez RF_OK = 0x00, 11980163b031SMaya Erez RF_NO_COMM = 0x01, 11990163b031SMaya Erez RF_WRONG_BOARD_FILE = 0x02, 12000163b031SMaya Erez }; 12010163b031SMaya Erez 12020163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */ 12030163b031SMaya Erez struct wmi_get_rf_status_event { 12040163b031SMaya Erez /* enum rf_type */ 12050163b031SMaya Erez __le32 rf_type; 12060163b031SMaya Erez /* attached RFs bit vector */ 12070163b031SMaya Erez __le32 attached_rf_vector; 12080163b031SMaya Erez /* enabled RFs bit vector */ 12090163b031SMaya Erez __le32 enabled_rf_vector; 12100163b031SMaya Erez /* enum rf_status, refers to enabled RFs */ 12110163b031SMaya Erez u8 rf_status[32]; 12120163b031SMaya Erez /* enum board file RF type */ 12130163b031SMaya Erez __le32 board_file_rf_type; 12140163b031SMaya Erez /* board file platform type */ 12150163b031SMaya Erez __le32 board_file_platform_type; 12160163b031SMaya Erez /* board file version */ 12170163b031SMaya Erez __le32 board_file_version; 12180163b031SMaya Erez __le32 reserved[2]; 12190163b031SMaya Erez } __packed; 12200163b031SMaya Erez 12210163b031SMaya Erez /* WMI_GET_BASEBAND_TYPE_EVENTID */ 12220163b031SMaya Erez enum baseband_type { 12230163b031SMaya Erez BASEBAND_UNKNOWN = 0x00, 12240163b031SMaya Erez BASEBAND_SPARROW_M_A0 = 0x03, 12250163b031SMaya Erez BASEBAND_SPARROW_M_A1 = 0x04, 12260163b031SMaya Erez BASEBAND_SPARROW_M_B0 = 0x05, 12270163b031SMaya Erez BASEBAND_SPARROW_M_C0 = 0x06, 12280163b031SMaya Erez BASEBAND_SPARROW_M_D0 = 0x07, 12298ae5d62cSLior David BASEBAND_TALYN_M_A0 = 0x08, 12300163b031SMaya Erez }; 12310163b031SMaya Erez 12320163b031SMaya Erez /* WMI_GET_BASEBAND_TYPE_EVENTID */ 12330163b031SMaya Erez struct wmi_get_baseband_type_event { 12340163b031SMaya Erez /* enum baseband_type */ 12350163b031SMaya Erez __le32 baseband_type; 12362be7d22fSVladimir Kondratiev } __packed; 12372be7d22fSVladimir Kondratiev 1238b874ddecSLior David /* WMI_MAC_ADDR_RESP_EVENTID */ 12392be7d22fSVladimir Kondratiev struct wmi_mac_addr_resp_event { 12402be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 12412be7d22fSVladimir Kondratiev u8 auth_mode; 12422be7d22fSVladimir Kondratiev u8 crypt_mode; 12432be7d22fSVladimir Kondratiev __le32 offload_mode; 12442be7d22fSVladimir Kondratiev } __packed; 12452be7d22fSVladimir Kondratiev 1246b874ddecSLior David /* WMI_EAPOL_RX_EVENTID */ 12472be7d22fSVladimir Kondratiev struct wmi_eapol_rx_event { 12482be7d22fSVladimir Kondratiev u8 src_mac[WMI_MAC_LEN]; 12492be7d22fSVladimir Kondratiev __le16 eapol_len; 12502be7d22fSVladimir Kondratiev u8 eapol[0]; 12512be7d22fSVladimir Kondratiev } __packed; 12522be7d22fSVladimir Kondratiev 1253b874ddecSLior David /* WMI_READY_EVENTID */ 12542be7d22fSVladimir Kondratiev enum wmi_phy_capability { 1255b874ddecSLior David WMI_11A_CAPABILITY = 0x01, 1256b874ddecSLior David WMI_11G_CAPABILITY = 0x02, 1257b874ddecSLior David WMI_11AG_CAPABILITY = 0x03, 1258b874ddecSLior David WMI_11NA_CAPABILITY = 0x04, 1259b874ddecSLior David WMI_11NG_CAPABILITY = 0x05, 1260b874ddecSLior David WMI_11NAG_CAPABILITY = 0x06, 1261b874ddecSLior David WMI_11AD_CAPABILITY = 0x07, 1262b874ddecSLior David WMI_11N_CAPABILITY_OFFSET = 0x03, 12632be7d22fSVladimir Kondratiev }; 12642be7d22fSVladimir Kondratiev 12652be7d22fSVladimir Kondratiev struct wmi_ready_event { 12662be7d22fSVladimir Kondratiev __le32 sw_version; 12672be7d22fSVladimir Kondratiev __le32 abi_version; 12682be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 1269b874ddecSLior David /* enum wmi_phy_capability */ 1270b874ddecSLior David u8 phy_capability; 1271b8023177SVladimir Kondratiev u8 numof_additional_mids; 12722be7d22fSVladimir Kondratiev } __packed; 12732be7d22fSVladimir Kondratiev 1274b874ddecSLior David /* WMI_NOTIFY_REQ_DONE_EVENTID */ 12752be7d22fSVladimir Kondratiev struct wmi_notify_req_done_event { 1276b874ddecSLior David /* beamforming status, 0: fail; 1: OK; 2: retrying */ 1277b874ddecSLior David __le32 status; 12782be7d22fSVladimir Kondratiev __le64 tsf; 12792be7d22fSVladimir Kondratiev __le32 snr_val; 12802be7d22fSVladimir Kondratiev __le32 tx_tpt; 12812be7d22fSVladimir Kondratiev __le32 tx_goodput; 12822be7d22fSVladimir Kondratiev __le32 rx_goodput; 12832be7d22fSVladimir Kondratiev __le16 bf_mcs; 12842be7d22fSVladimir Kondratiev __le16 my_rx_sector; 12852be7d22fSVladimir Kondratiev __le16 my_tx_sector; 12862be7d22fSVladimir Kondratiev __le16 other_rx_sector; 12872be7d22fSVladimir Kondratiev __le16 other_tx_sector; 12882be7d22fSVladimir Kondratiev __le16 range; 1289b8023177SVladimir Kondratiev u8 sqi; 1290b8023177SVladimir Kondratiev u8 reserved[3]; 12912be7d22fSVladimir Kondratiev } __packed; 12922be7d22fSVladimir Kondratiev 1293b874ddecSLior David /* WMI_CONNECT_EVENTID */ 12942be7d22fSVladimir Kondratiev struct wmi_connect_event { 12952be7d22fSVladimir Kondratiev u8 channel; 12962be7d22fSVladimir Kondratiev u8 reserved0; 12972be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 12982be7d22fSVladimir Kondratiev __le16 listen_interval; 12992be7d22fSVladimir Kondratiev __le16 beacon_interval; 13002be7d22fSVladimir Kondratiev u8 network_type; 13012be7d22fSVladimir Kondratiev u8 reserved1[3]; 13022be7d22fSVladimir Kondratiev u8 beacon_ie_len; 13032be7d22fSVladimir Kondratiev u8 assoc_req_len; 13042be7d22fSVladimir Kondratiev u8 assoc_resp_len; 13052be7d22fSVladimir Kondratiev u8 cid; 13062be7d22fSVladimir Kondratiev u8 reserved2[3]; 1307b874ddecSLior David /* not in use */ 13082be7d22fSVladimir Kondratiev u8 assoc_info[0]; 13092be7d22fSVladimir Kondratiev } __packed; 13102be7d22fSVladimir Kondratiev 1311*849a564bSDedy Lansky /* disconnect_reason */ 13122be7d22fSVladimir Kondratiev enum wmi_disconnect_reason { 1313b874ddecSLior David WMI_DIS_REASON_NO_NETWORK_AVAIL = 0x01, 1314b874ddecSLior David /* bmiss */ 1315b874ddecSLior David WMI_DIS_REASON_LOST_LINK = 0x02, 1316b874ddecSLior David WMI_DIS_REASON_DISCONNECT_CMD = 0x03, 1317b874ddecSLior David WMI_DIS_REASON_BSS_DISCONNECTED = 0x04, 1318b874ddecSLior David WMI_DIS_REASON_AUTH_FAILED = 0x05, 1319b874ddecSLior David WMI_DIS_REASON_ASSOC_FAILED = 0x06, 1320b874ddecSLior David WMI_DIS_REASON_NO_RESOURCES_AVAIL = 0x07, 1321b874ddecSLior David WMI_DIS_REASON_CSERV_DISCONNECT = 0x08, 1322b874ddecSLior David WMI_DIS_REASON_INVALID_PROFILE = 0x0A, 1323b874ddecSLior David WMI_DIS_REASON_DOT11H_CHANNEL_SWITCH = 0x0B, 1324b874ddecSLior David WMI_DIS_REASON_PROFILE_MISMATCH = 0x0C, 1325b874ddecSLior David WMI_DIS_REASON_CONNECTION_EVICTED = 0x0D, 1326b874ddecSLior David WMI_DIS_REASON_IBSS_MERGE = 0x0E, 13272be7d22fSVladimir Kondratiev }; 13282be7d22fSVladimir Kondratiev 1329*849a564bSDedy Lansky /* WMI_DISCONNECT_EVENTID */ 13302be7d22fSVladimir Kondratiev struct wmi_disconnect_event { 1331b874ddecSLior David /* reason code, see 802.11 spec. */ 1332b874ddecSLior David __le16 protocol_reason_status; 1333b874ddecSLior David /* set if known */ 1334b874ddecSLior David u8 bssid[WMI_MAC_LEN]; 1335b874ddecSLior David /* see enum wmi_disconnect_reason */ 1336b874ddecSLior David u8 disconnect_reason; 1337b874ddecSLior David /* last assoc req may passed to host - not in used */ 1338b874ddecSLior David u8 assoc_resp_len; 1339b874ddecSLior David /* last assoc req may passed to host - not in used */ 1340b874ddecSLior David u8 assoc_info[0]; 13412be7d22fSVladimir Kondratiev } __packed; 13422be7d22fSVladimir Kondratiev 1343b874ddecSLior David /* WMI_SCAN_COMPLETE_EVENTID */ 13446c2faf09SVladimir Kondratiev enum scan_status { 1345b874ddecSLior David WMI_SCAN_SUCCESS = 0x00, 1346b874ddecSLior David WMI_SCAN_FAILED = 0x01, 1347b874ddecSLior David WMI_SCAN_ABORTED = 0x02, 1348b874ddecSLior David WMI_SCAN_REJECTED = 0x03, 1349b874ddecSLior David WMI_SCAN_ABORT_REJECTED = 0x04, 13506c2faf09SVladimir Kondratiev }; 13516c2faf09SVladimir Kondratiev 13522be7d22fSVladimir Kondratiev struct wmi_scan_complete_event { 1353b874ddecSLior David /* enum scan_status */ 1354b874ddecSLior David __le32 status; 13552be7d22fSVladimir Kondratiev } __packed; 13562be7d22fSVladimir Kondratiev 1357b874ddecSLior David /* WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENT */ 1358b874ddecSLior David enum wmi_acs_info_bitmask { 1359b874ddecSLior David WMI_ACS_INFO_BITMASK_BEACON_FOUND = 0x01, 1360b874ddecSLior David WMI_ACS_INFO_BITMASK_BUSY_TIME = 0x02, 1361b874ddecSLior David WMI_ACS_INFO_BITMASK_TX_TIME = 0x04, 1362b874ddecSLior David WMI_ACS_INFO_BITMASK_RX_TIME = 0x08, 1363b874ddecSLior David WMI_ACS_INFO_BITMASK_NOISE = 0x10, 13642be7d22fSVladimir Kondratiev }; 13652be7d22fSVladimir Kondratiev 1366b874ddecSLior David struct scan_acs_info { 1367b874ddecSLior David u8 channel; 1368b874ddecSLior David u8 beacon_found; 1369b874ddecSLior David /* msec */ 1370b874ddecSLior David __le16 busy_time; 1371b874ddecSLior David __le16 tx_time; 1372b874ddecSLior David __le16 rx_time; 1373b874ddecSLior David u8 noise; 1374b874ddecSLior David u8 reserved[3]; 1375b874ddecSLior David } __packed; 1376b874ddecSLior David 1377b874ddecSLior David struct wmi_acs_passive_scan_complete_event { 1378b874ddecSLior David __le32 dwell_time; 1379b874ddecSLior David /* valid fields within channel info according to 1380b874ddecSLior David * their appearance in struct order 1381b874ddecSLior David */ 1382b874ddecSLior David __le16 filled; 1383b874ddecSLior David u8 num_scanned_channels; 1384b874ddecSLior David u8 reserved; 1385b874ddecSLior David struct scan_acs_info scan_info_list[0]; 1386b874ddecSLior David } __packed; 1387b874ddecSLior David 1388b874ddecSLior David /* WMI_BA_STATUS_EVENTID */ 1389b874ddecSLior David enum wmi_vring_ba_status { 1390b874ddecSLior David WMI_BA_AGREED = 0x00, 1391b874ddecSLior David WMI_BA_NON_AGREED = 0x01, 1392b874ddecSLior David /* BA_EN in middle of teardown flow */ 1393b874ddecSLior David WMI_BA_TD_WIP = 0x02, 1394b874ddecSLior David /* BA_DIS or BA_EN in middle of BA SETUP flow */ 1395b874ddecSLior David WMI_BA_SETUP_WIP = 0x03, 1396b874ddecSLior David /* BA_EN when the BA session is already active */ 1397b874ddecSLior David WMI_BA_SESSION_ACTIVE = 0x04, 1398b874ddecSLior David /* BA_DIS when the BA session is not active */ 1399b874ddecSLior David WMI_BA_SESSION_NOT_ACTIVE = 0x05, 1400b874ddecSLior David }; 1401b874ddecSLior David 1402b874ddecSLior David struct wmi_ba_status_event { 1403b874ddecSLior David /* enum wmi_vring_ba_status */ 1404b874ddecSLior David __le16 status; 14052be7d22fSVladimir Kondratiev u8 reserved[2]; 14062be7d22fSVladimir Kondratiev u8 ringid; 14072be7d22fSVladimir Kondratiev u8 agg_wsize; 14082be7d22fSVladimir Kondratiev __le16 ba_timeout; 1409cbcf5866SVladimir Kondratiev u8 amsdu; 14102be7d22fSVladimir Kondratiev } __packed; 14112be7d22fSVladimir Kondratiev 1412b874ddecSLior David /* WMI_DELBA_EVENTID */ 14132be7d22fSVladimir Kondratiev struct wmi_delba_event { 14142be7d22fSVladimir Kondratiev u8 cidxtid; 14152be7d22fSVladimir Kondratiev u8 from_initiator; 14162be7d22fSVladimir Kondratiev __le16 reason; 14172be7d22fSVladimir Kondratiev } __packed; 14182be7d22fSVladimir Kondratiev 1419b874ddecSLior David /* WMI_VRING_CFG_DONE_EVENTID */ 14202be7d22fSVladimir Kondratiev struct wmi_vring_cfg_done_event { 14212be7d22fSVladimir Kondratiev u8 ringid; 14222be7d22fSVladimir Kondratiev u8 status; 14232be7d22fSVladimir Kondratiev u8 reserved[2]; 14242be7d22fSVladimir Kondratiev __le32 tx_vring_tail_ptr; 14252be7d22fSVladimir Kondratiev } __packed; 14262be7d22fSVladimir Kondratiev 1427b874ddecSLior David /* WMI_RCP_ADDBA_RESP_SENT_EVENTID */ 14282be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_sent_event { 14292be7d22fSVladimir Kondratiev u8 cidxtid; 14302be7d22fSVladimir Kondratiev u8 reserved; 14312be7d22fSVladimir Kondratiev __le16 status; 14322be7d22fSVladimir Kondratiev } __packed; 14332be7d22fSVladimir Kondratiev 1434b874ddecSLior David /* WMI_RCP_ADDBA_REQ_EVENTID */ 14352be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_event { 14362be7d22fSVladimir Kondratiev u8 cidxtid; 14372be7d22fSVladimir Kondratiev u8 dialog_token; 1438b874ddecSLior David /* ieee80211_ba_parameterset as it received */ 1439b874ddecSLior David __le16 ba_param_set; 14402be7d22fSVladimir Kondratiev __le16 ba_timeout; 1441b874ddecSLior David /* ieee80211_ba_seqstrl field as it received */ 1442b874ddecSLior David __le16 ba_seq_ctrl; 14432be7d22fSVladimir Kondratiev } __packed; 14442be7d22fSVladimir Kondratiev 1445b874ddecSLior David /* WMI_CFG_RX_CHAIN_DONE_EVENTID */ 14462be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_done_event_status { 1447b874ddecSLior David WMI_CFG_RX_CHAIN_SUCCESS = 0x01, 14482be7d22fSVladimir Kondratiev }; 14492be7d22fSVladimir Kondratiev 14502be7d22fSVladimir Kondratiev struct wmi_cfg_rx_chain_done_event { 1451b874ddecSLior David /* V-Ring Tail pointer */ 1452b874ddecSLior David __le32 rx_ring_tail_ptr; 14532be7d22fSVladimir Kondratiev __le32 status; 14542be7d22fSVladimir Kondratiev } __packed; 14552be7d22fSVladimir Kondratiev 1456b874ddecSLior David /* WMI_WBE_LINK_DOWN_EVENTID */ 14572be7d22fSVladimir Kondratiev enum wmi_wbe_link_down_event_reason { 1458b874ddecSLior David WMI_WBE_REASON_USER_REQUEST = 0x00, 1459b874ddecSLior David WMI_WBE_REASON_RX_DISASSOC = 0x01, 1460b874ddecSLior David WMI_WBE_REASON_BAD_PHY_LINK = 0x02, 14612be7d22fSVladimir Kondratiev }; 14622be7d22fSVladimir Kondratiev 1463b874ddecSLior David /* WMI_WBE_LINK_DOWN_EVENTID */ 14642be7d22fSVladimir Kondratiev struct wmi_wbe_link_down_event { 14652be7d22fSVladimir Kondratiev u8 cid; 14662be7d22fSVladimir Kondratiev u8 reserved[3]; 14672be7d22fSVladimir Kondratiev __le32 reason; 14682be7d22fSVladimir Kondratiev } __packed; 14692be7d22fSVladimir Kondratiev 1470b874ddecSLior David /* WMI_DATA_PORT_OPEN_EVENTID */ 14712be7d22fSVladimir Kondratiev struct wmi_data_port_open_event { 14722be7d22fSVladimir Kondratiev u8 cid; 14732be7d22fSVladimir Kondratiev u8 reserved[3]; 14742be7d22fSVladimir Kondratiev } __packed; 14752be7d22fSVladimir Kondratiev 1476b874ddecSLior David /* WMI_VRING_EN_EVENTID */ 1477230d8442SVladimir Kondratiev struct wmi_vring_en_event { 1478230d8442SVladimir Kondratiev u8 vring_index; 1479230d8442SVladimir Kondratiev u8 reserved[3]; 1480230d8442SVladimir Kondratiev } __packed; 1481230d8442SVladimir Kondratiev 1482b874ddecSLior David /* WMI_GET_PCP_CHANNEL_EVENTID */ 14832be7d22fSVladimir Kondratiev struct wmi_get_pcp_channel_event { 14842be7d22fSVladimir Kondratiev u8 channel; 14852be7d22fSVladimir Kondratiev u8 reserved[3]; 14862be7d22fSVladimir Kondratiev } __packed; 14872be7d22fSVladimir Kondratiev 1488b874ddecSLior David /* WMI_P2P_CFG_DONE_EVENTID */ 14898c679675SVladimir Kondratiev struct wmi_p2p_cfg_done_event { 1490b874ddecSLior David /* wmi_fw_status */ 1491b874ddecSLior David u8 status; 14928c679675SVladimir Kondratiev u8 reserved[3]; 14938c679675SVladimir Kondratiev } __packed; 14948c679675SVladimir Kondratiev 1495b874ddecSLior David /* WMI_PORT_ALLOCATED_EVENTID */ 1496b8023177SVladimir Kondratiev struct wmi_port_allocated_event { 1497b874ddecSLior David /* wmi_fw_status */ 1498b874ddecSLior David u8 status; 1499b8023177SVladimir Kondratiev u8 reserved[3]; 1500b8023177SVladimir Kondratiev } __packed; 1501b8023177SVladimir Kondratiev 1502b874ddecSLior David /* WMI_PORT_DELETED_EVENTID */ 1503b8023177SVladimir Kondratiev struct wmi_port_deleted_event { 1504b874ddecSLior David /* wmi_fw_status */ 1505b874ddecSLior David u8 status; 1506b8023177SVladimir Kondratiev u8 reserved[3]; 1507b8023177SVladimir Kondratiev } __packed; 1508b8023177SVladimir Kondratiev 1509b874ddecSLior David /* WMI_LISTEN_STARTED_EVENTID */ 1510b8023177SVladimir Kondratiev struct wmi_listen_started_event { 1511b874ddecSLior David /* wmi_fw_status */ 1512b874ddecSLior David u8 status; 1513b8023177SVladimir Kondratiev u8 reserved[3]; 1514b8023177SVladimir Kondratiev } __packed; 1515b8023177SVladimir Kondratiev 1516b874ddecSLior David /* WMI_SEARCH_STARTED_EVENTID */ 1517b8023177SVladimir Kondratiev struct wmi_search_started_event { 1518b874ddecSLior David /* wmi_fw_status */ 1519b874ddecSLior David u8 status; 1520b8023177SVladimir Kondratiev u8 reserved[3]; 1521b8023177SVladimir Kondratiev } __packed; 1522b8023177SVladimir Kondratiev 1523b874ddecSLior David /* WMI_PCP_STARTED_EVENTID */ 1524b8023177SVladimir Kondratiev struct wmi_pcp_started_event { 1525b874ddecSLior David /* wmi_fw_status */ 1526b874ddecSLior David u8 status; 1527b8023177SVladimir Kondratiev u8 reserved[3]; 1528b8023177SVladimir Kondratiev } __packed; 1529b8023177SVladimir Kondratiev 1530b874ddecSLior David /* WMI_PCP_FACTOR_EVENTID */ 1531b8023177SVladimir Kondratiev struct wmi_pcp_factor_event { 1532b8023177SVladimir Kondratiev __le32 pcp_factor; 1533b8023177SVladimir Kondratiev } __packed; 1534b8023177SVladimir Kondratiev 15352be7d22fSVladimir Kondratiev enum wmi_sw_tx_status { 1536b874ddecSLior David WMI_TX_SW_STATUS_SUCCESS = 0x00, 1537b874ddecSLior David WMI_TX_SW_STATUS_FAILED_NO_RESOURCES = 0x01, 1538b874ddecSLior David WMI_TX_SW_STATUS_FAILED_TX = 0x02, 15392be7d22fSVladimir Kondratiev }; 15402be7d22fSVladimir Kondratiev 1541b874ddecSLior David /* WMI_SW_TX_COMPLETE_EVENTID */ 15422be7d22fSVladimir Kondratiev struct wmi_sw_tx_complete_event { 1543b874ddecSLior David /* enum wmi_sw_tx_status */ 1544b874ddecSLior David u8 status; 15452be7d22fSVladimir Kondratiev u8 reserved[3]; 15462be7d22fSVladimir Kondratiev } __packed; 15472be7d22fSVladimir Kondratiev 1548b874ddecSLior David /* WMI_CORR_MEASURE_EVENTID */ 1549b8023177SVladimir Kondratiev struct wmi_corr_measure_event { 1550b874ddecSLior David /* signed */ 1551b874ddecSLior David __le32 i; 1552b874ddecSLior David /* signed */ 1553b874ddecSLior David __le32 q; 1554b874ddecSLior David /* signed */ 1555b874ddecSLior David __le32 image_i; 1556b874ddecSLior David /* signed */ 1557b874ddecSLior David __le32 image_q; 1558b8023177SVladimir Kondratiev } __packed; 1559b8023177SVladimir Kondratiev 1560b874ddecSLior David /* WMI_READ_RSSI_EVENTID */ 1561b8023177SVladimir Kondratiev struct wmi_read_rssi_event { 1562b8023177SVladimir Kondratiev __le32 ina_rssi_adc_dbm; 1563b8023177SVladimir Kondratiev } __packed; 1564b8023177SVladimir Kondratiev 1565b874ddecSLior David /* WMI_GET_SSID_EVENTID */ 15662be7d22fSVladimir Kondratiev struct wmi_get_ssid_event { 15672be7d22fSVladimir Kondratiev __le32 ssid_len; 15682be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 15692be7d22fSVladimir Kondratiev } __packed; 15702be7d22fSVladimir Kondratiev 1571b874ddecSLior David /* wmi_rx_mgmt_info */ 15722be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_info { 15732be7d22fSVladimir Kondratiev u8 mcs; 15742be7d22fSVladimir Kondratiev s8 snr; 1575b8023177SVladimir Kondratiev u8 range; 1576b8023177SVladimir Kondratiev u8 sqi; 15772be7d22fSVladimir Kondratiev __le16 stype; 15782be7d22fSVladimir Kondratiev __le16 status; 15792be7d22fSVladimir Kondratiev __le32 len; 1580b874ddecSLior David /* Not resolved when == 0xFFFFFFFF ==> Broadcast to all MIDS */ 15812be7d22fSVladimir Kondratiev u8 qid; 1582b874ddecSLior David /* Not resolved when == 0xFFFFFFFF ==> Broadcast to all MIDS */ 15832be7d22fSVladimir Kondratiev u8 mid; 15842be7d22fSVladimir Kondratiev u8 cid; 1585b874ddecSLior David /* From Radio MNGR */ 1586b874ddecSLior David u8 channel; 15872be7d22fSVladimir Kondratiev } __packed; 15882be7d22fSVladimir Kondratiev 1589b874ddecSLior David /* wmi_otp_read_write_cmd */ 1590b874ddecSLior David struct wmi_otp_read_write_cmd { 1591b874ddecSLior David __le32 addr; 1592b874ddecSLior David __le32 size; 1593b874ddecSLior David u8 values[0]; 1594b874ddecSLior David } __packed; 1595b874ddecSLior David 1596b874ddecSLior David /* WMI_OTP_READ_RESULT_EVENTID */ 1597b874ddecSLior David struct wmi_otp_read_result_event { 1598b874ddecSLior David u8 payload[0]; 1599b874ddecSLior David } __packed; 1600b874ddecSLior David 1601b874ddecSLior David /* WMI_TX_MGMT_PACKET_EVENTID */ 16026c2faf09SVladimir Kondratiev struct wmi_tx_mgmt_packet_event { 16036c2faf09SVladimir Kondratiev u8 payload[0]; 16046c2faf09SVladimir Kondratiev } __packed; 16056c2faf09SVladimir Kondratiev 1606b874ddecSLior David /* WMI_RX_MGMT_PACKET_EVENTID */ 16072be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_packet_event { 16082be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_info info; 16092be7d22fSVladimir Kondratiev u8 payload[0]; 16102be7d22fSVladimir Kondratiev } __packed; 16112be7d22fSVladimir Kondratiev 1612b874ddecSLior David /* WMI_ECHO_RSP_EVENTID */ 1613b874ddecSLior David struct wmi_echo_rsp_event { 16142be7d22fSVladimir Kondratiev __le32 echoed_value; 16152be7d22fSVladimir Kondratiev } __packed; 16162be7d22fSVladimir Kondratiev 1617b874ddecSLior David /* WMI_TEMP_SENSE_DONE_EVENTID 1618b8023177SVladimir Kondratiev * 1619b8023177SVladimir Kondratiev * Measure MAC and radio temperatures 1620b8023177SVladimir Kondratiev */ 1621b8023177SVladimir Kondratiev struct wmi_temp_sense_done_event { 1622b874ddecSLior David /* Temperature times 1000 (actual temperature will be achieved by 1623b874ddecSLior David * dividing the value by 1000) 1624b874ddecSLior David */ 16258c679675SVladimir Kondratiev __le32 baseband_t1000; 1626b874ddecSLior David /* Temperature times 1000 (actual temperature will be achieved by 1627b874ddecSLior David * dividing the value by 1000) 1628b874ddecSLior David */ 16298c679675SVladimir Kondratiev __le32 rf_t1000; 1630b8023177SVladimir Kondratiev } __packed; 1631b8023177SVladimir Kondratiev 1632b874ddecSLior David #define WMI_SCAN_DWELL_TIME_MS (100) 1633b874ddecSLior David #define WMI_SURVEY_TIMEOUT_MS (10000) 1634b874ddecSLior David 1635b874ddecSLior David enum wmi_hidden_ssid { 1636b874ddecSLior David WMI_HIDDEN_SSID_DISABLED = 0x00, 1637b874ddecSLior David WMI_HIDDEN_SSID_SEND_EMPTY = 0x10, 1638b874ddecSLior David WMI_HIDDEN_SSID_CLEAR = 0xFE, 1639b874ddecSLior David }; 1640b874ddecSLior David 164110d599adSMaya Erez /* WMI_LED_CFG_CMDID 164210d599adSMaya Erez * 164310d599adSMaya Erez * Configure LED On\Off\Blinking operation 164410d599adSMaya Erez * 164510d599adSMaya Erez * Returned events: 164610d599adSMaya Erez * - WMI_LED_CFG_DONE_EVENTID 164710d599adSMaya Erez */ 164810d599adSMaya Erez enum led_mode { 164910d599adSMaya Erez LED_DISABLE = 0x00, 165010d599adSMaya Erez LED_ENABLE = 0x01, 165110d599adSMaya Erez }; 165210d599adSMaya Erez 165310d599adSMaya Erez /* The names of the led as 165410d599adSMaya Erez * described on HW schemes. 165510d599adSMaya Erez */ 165610d599adSMaya Erez enum wmi_led_id { 165710d599adSMaya Erez WMI_LED_WLAN = 0x00, 165810d599adSMaya Erez WMI_LED_WPAN = 0x01, 165910d599adSMaya Erez WMI_LED_WWAN = 0x02, 166010d599adSMaya Erez }; 166110d599adSMaya Erez 166210d599adSMaya Erez /* Led polarity mode. */ 166310d599adSMaya Erez enum wmi_led_polarity { 166410d599adSMaya Erez LED_POLARITY_HIGH_ACTIVE = 0x00, 166510d599adSMaya Erez LED_POLARITY_LOW_ACTIVE = 0x01, 166610d599adSMaya Erez }; 166710d599adSMaya Erez 166810d599adSMaya Erez /* Combination of on and off 166910d599adSMaya Erez * creates the blinking period 167010d599adSMaya Erez */ 167110d599adSMaya Erez struct wmi_led_blink_mode { 167210d599adSMaya Erez __le32 blink_on; 167310d599adSMaya Erez __le32 blink_off; 167410d599adSMaya Erez } __packed; 167510d599adSMaya Erez 167610d599adSMaya Erez /* WMI_LED_CFG_CMDID */ 167710d599adSMaya Erez struct wmi_led_cfg_cmd { 167810d599adSMaya Erez /* enum led_mode_e */ 167910d599adSMaya Erez u8 led_mode; 168010d599adSMaya Erez /* enum wmi_led_id_e */ 168110d599adSMaya Erez u8 id; 168210d599adSMaya Erez /* slow speed blinking combination */ 168310d599adSMaya Erez struct wmi_led_blink_mode slow_blink_cfg; 168410d599adSMaya Erez /* medium speed blinking combination */ 168510d599adSMaya Erez struct wmi_led_blink_mode medium_blink_cfg; 168610d599adSMaya Erez /* high speed blinking combination */ 168710d599adSMaya Erez struct wmi_led_blink_mode fast_blink_cfg; 168810d599adSMaya Erez /* polarity of the led */ 168910d599adSMaya Erez u8 led_polarity; 169010d599adSMaya Erez /* reserved */ 169110d599adSMaya Erez u8 reserved; 169210d599adSMaya Erez } __packed; 169310d599adSMaya Erez 169410d599adSMaya Erez /* WMI_LED_CFG_DONE_EVENTID */ 169510d599adSMaya Erez struct wmi_led_cfg_done_event { 169610d599adSMaya Erez /* led config status */ 169710d599adSMaya Erez __le32 status; 169810d599adSMaya Erez } __packed; 169910d599adSMaya Erez 17000163b031SMaya Erez #define WMI_NUM_MCS (13) 17010163b031SMaya Erez 17020163b031SMaya Erez /* Rate search parameters configuration per connection */ 17030163b031SMaya Erez struct wmi_rs_cfg { 17040163b031SMaya Erez /* The maximal allowed PER for each MCS 17050163b031SMaya Erez * MCS will be considered as failed if PER during RS is higher 17060163b031SMaya Erez */ 17070163b031SMaya Erez u8 per_threshold[WMI_NUM_MCS]; 17080163b031SMaya Erez /* Number of MPDUs for each MCS 17090163b031SMaya Erez * this is the minimal statistic required to make an educated 17100163b031SMaya Erez * decision 17110163b031SMaya Erez */ 17120163b031SMaya Erez u8 min_frame_cnt[WMI_NUM_MCS]; 17130163b031SMaya Erez /* stop threshold [0-100] */ 17140163b031SMaya Erez u8 stop_th; 17150163b031SMaya Erez /* MCS1 stop threshold [0-100] */ 17160163b031SMaya Erez u8 mcs1_fail_th; 17170163b031SMaya Erez u8 max_back_failure_th; 17180163b031SMaya Erez /* Debug feature for disabling internal RS trigger (which is 17190163b031SMaya Erez * currently triggered by BF Done) 17200163b031SMaya Erez */ 17210163b031SMaya Erez u8 dbg_disable_internal_trigger; 17220163b031SMaya Erez __le32 back_failure_mask; 17230163b031SMaya Erez __le32 mcs_en_vec; 17240163b031SMaya Erez } __packed; 17250163b031SMaya Erez 17260163b031SMaya Erez /* WMI_RS_CFG_CMDID */ 17270163b031SMaya Erez struct wmi_rs_cfg_cmd { 17280163b031SMaya Erez /* connection id */ 17290163b031SMaya Erez u8 cid; 17300163b031SMaya Erez /* enable or disable rate search */ 17310163b031SMaya Erez u8 rs_enable; 17320163b031SMaya Erez /* rate search configuration */ 17330163b031SMaya Erez struct wmi_rs_cfg rs_cfg; 17340163b031SMaya Erez } __packed; 17350163b031SMaya Erez 17360163b031SMaya Erez /* WMI_RS_CFG_DONE_EVENTID */ 17370163b031SMaya Erez struct wmi_rs_cfg_done_event { 17380163b031SMaya Erez u8 cid; 17390163b031SMaya Erez /* enum wmi_fw_status */ 17400163b031SMaya Erez u8 status; 17410163b031SMaya Erez u8 reserved[2]; 17420163b031SMaya Erez } __packed; 17430163b031SMaya Erez 174408989f96SLior David /* WMI_GET_DETAILED_RS_RES_CMDID */ 174508989f96SLior David struct wmi_get_detailed_rs_res_cmd { 174608989f96SLior David /* connection id */ 174708989f96SLior David u8 cid; 174808989f96SLior David u8 reserved[3]; 174908989f96SLior David } __packed; 175008989f96SLior David 175108989f96SLior David /* RS results status */ 175208989f96SLior David enum wmi_rs_results_status { 175308989f96SLior David WMI_RS_RES_VALID = 0x00, 175408989f96SLior David WMI_RS_RES_INVALID = 0x01, 175508989f96SLior David }; 175608989f96SLior David 175708989f96SLior David /* Rate search results */ 175808989f96SLior David struct wmi_rs_results { 175908989f96SLior David /* number of sent MPDUs */ 176008989f96SLior David u8 num_of_tx_pkt[WMI_NUM_MCS]; 176108989f96SLior David /* number of non-acked MPDUs */ 176208989f96SLior David u8 num_of_non_acked_pkt[WMI_NUM_MCS]; 176308989f96SLior David /* RS timestamp */ 176408989f96SLior David __le32 tsf; 176508989f96SLior David /* RS selected MCS */ 176608989f96SLior David u8 mcs; 176708989f96SLior David } __packed; 176808989f96SLior David 176908989f96SLior David /* WMI_GET_DETAILED_RS_RES_EVENTID */ 177008989f96SLior David struct wmi_get_detailed_rs_res_event { 177108989f96SLior David u8 cid; 177208989f96SLior David /* enum wmi_rs_results_status */ 177308989f96SLior David u8 status; 177408989f96SLior David /* detailed rs results */ 177508989f96SLior David struct wmi_rs_results rs_results; 177608989f96SLior David u8 reserved[3]; 177708989f96SLior David } __packed; 177808989f96SLior David 17790163b031SMaya Erez /* broadcast connection ID */ 17800163b031SMaya Erez #define WMI_LINK_MAINTAIN_CFG_CID_BROADCAST (0xFFFFFFFF) 17810163b031SMaya Erez 17820163b031SMaya Erez /* Types wmi_link_maintain_cfg presets for WMI_LINK_MAINTAIN_CFG_WRITE_CMD */ 17830163b031SMaya Erez enum wmi_link_maintain_cfg_type { 17840163b031SMaya Erez /* AP/PCP default normal (non-FST) configuration settings */ 17850163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_NORMAL_AP = 0x00, 17860163b031SMaya Erez /* AP/PCP default FST configuration settings */ 17870163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_FST_AP = 0x01, 17880163b031SMaya Erez /* STA default normal (non-FST) configuration settings */ 17890163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_NORMAL_STA = 0x02, 17900163b031SMaya Erez /* STA default FST configuration settings */ 17910163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_FST_STA = 0x03, 17920163b031SMaya Erez /* custom configuration settings */ 17930163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPE_CUSTOM = 0x04, 17940163b031SMaya Erez /* number of defined configuration types */ 17950163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPES_NUM = 0x05, 17960163b031SMaya Erez }; 17970163b031SMaya Erez 17980163b031SMaya Erez /* Response status codes for WMI_LINK_MAINTAIN_CFG_WRITE/READ commands */ 17990163b031SMaya Erez enum wmi_link_maintain_cfg_response_status { 18000163b031SMaya Erez /* WMI_LINK_MAINTAIN_CFG_WRITE/READ command successfully accomplished 18010163b031SMaya Erez */ 18020163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_RESPONSE_STATUS_OK = 0x00, 18030163b031SMaya Erez /* ERROR due to bad argument in WMI_LINK_MAINTAIN_CFG_WRITE/READ 18040163b031SMaya Erez * command request 18050163b031SMaya Erez */ 18060163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_RESPONSE_STATUS_BAD_ARGUMENT = 0x01, 18070163b031SMaya Erez }; 18080163b031SMaya Erez 18090163b031SMaya Erez /* Link Loss and Keep Alive configuration */ 18100163b031SMaya Erez struct wmi_link_maintain_cfg { 18110163b031SMaya Erez /* link_loss_enable_detectors_vec */ 18120163b031SMaya Erez __le32 link_loss_enable_detectors_vec; 18130163b031SMaya Erez /* detectors check period usec */ 18140163b031SMaya Erez __le32 check_link_loss_period_usec; 18150163b031SMaya Erez /* max allowed tx ageing */ 18160163b031SMaya Erez __le32 tx_ageing_threshold_usec; 18170163b031SMaya Erez /* keep alive period for high SNR */ 18180163b031SMaya Erez __le32 keep_alive_period_usec_high_snr; 18190163b031SMaya Erez /* keep alive period for low SNR */ 18200163b031SMaya Erez __le32 keep_alive_period_usec_low_snr; 18210163b031SMaya Erez /* lower snr limit for keep alive period update */ 18220163b031SMaya Erez __le32 keep_alive_snr_threshold_low_db; 18230163b031SMaya Erez /* upper snr limit for keep alive period update */ 18240163b031SMaya Erez __le32 keep_alive_snr_threshold_high_db; 18250163b031SMaya Erez /* num of successive bad bcons causing link-loss */ 18260163b031SMaya Erez __le32 bad_beacons_num_threshold; 18270163b031SMaya Erez /* SNR limit for bad_beacons_detector */ 18280163b031SMaya Erez __le32 bad_beacons_snr_threshold_db; 18290163b031SMaya Erez } __packed; 18300163b031SMaya Erez 18310163b031SMaya Erez /* WMI_LINK_MAINTAIN_CFG_WRITE_CMDID */ 18320163b031SMaya Erez struct wmi_link_maintain_cfg_write_cmd { 18330163b031SMaya Erez /* enum wmi_link_maintain_cfg_type_e - type of requested default 18340163b031SMaya Erez * configuration to be applied 18350163b031SMaya Erez */ 18360163b031SMaya Erez __le32 cfg_type; 18370163b031SMaya Erez /* requested connection ID or WMI_LINK_MAINTAIN_CFG_CID_BROADCAST */ 18380163b031SMaya Erez __le32 cid; 18390163b031SMaya Erez /* custom configuration settings to be applied (relevant only if 18400163b031SMaya Erez * cfg_type==WMI_LINK_MAINTAIN_CFG_TYPE_CUSTOM) 18410163b031SMaya Erez */ 18420163b031SMaya Erez struct wmi_link_maintain_cfg lm_cfg; 18430163b031SMaya Erez } __packed; 18440163b031SMaya Erez 18450163b031SMaya Erez /* WMI_LINK_MAINTAIN_CFG_READ_CMDID */ 18460163b031SMaya Erez struct wmi_link_maintain_cfg_read_cmd { 18470163b031SMaya Erez /* connection ID which configuration settings are requested */ 18480163b031SMaya Erez __le32 cid; 18490163b031SMaya Erez } __packed; 18500163b031SMaya Erez 18510163b031SMaya Erez /* WMI_LINK_MAINTAIN_CFG_WRITE_DONE_EVENTID */ 18520163b031SMaya Erez struct wmi_link_maintain_cfg_write_done_event { 18530163b031SMaya Erez /* requested connection ID */ 18540163b031SMaya Erez __le32 cid; 18550163b031SMaya Erez /* wmi_link_maintain_cfg_response_status_e - write status */ 18560163b031SMaya Erez __le32 status; 18570163b031SMaya Erez } __packed; 18580163b031SMaya Erez 18590163b031SMaya Erez /* \WMI_LINK_MAINTAIN_CFG_READ_DONE_EVENT */ 18600163b031SMaya Erez struct wmi_link_maintain_cfg_read_done_event { 18610163b031SMaya Erez /* requested connection ID */ 18620163b031SMaya Erez __le32 cid; 18630163b031SMaya Erez /* wmi_link_maintain_cfg_response_status_e - read status */ 18640163b031SMaya Erez __le32 status; 18650163b031SMaya Erez /* Retrieved configuration settings */ 18660163b031SMaya Erez struct wmi_link_maintain_cfg lm_cfg; 18670163b031SMaya Erez } __packed; 18680163b031SMaya Erez 18690163b031SMaya Erez enum wmi_traffic_deferral_status { 18700163b031SMaya Erez WMI_TRAFFIC_DEFERRAL_APPROVED = 0x0, 18710163b031SMaya Erez WMI_TRAFFIC_DEFERRAL_REJECTED = 0x1, 18720163b031SMaya Erez }; 18730163b031SMaya Erez 18740163b031SMaya Erez /* WMI_TRAFFIC_DEFERRAL_EVENTID */ 18750163b031SMaya Erez struct wmi_traffic_deferral_event { 18760163b031SMaya Erez /* enum wmi_traffic_deferral_status_e */ 18770163b031SMaya Erez u8 status; 18780163b031SMaya Erez } __packed; 18790163b031SMaya Erez 18800163b031SMaya Erez enum wmi_traffic_resume_status { 18810163b031SMaya Erez WMI_TRAFFIC_RESUME_SUCCESS = 0x0, 18820163b031SMaya Erez WMI_TRAFFIC_RESUME_FAILED = 0x1, 18830163b031SMaya Erez }; 18840163b031SMaya Erez 18850163b031SMaya Erez /* WMI_TRAFFIC_RESUME_EVENTID */ 18860163b031SMaya Erez struct wmi_traffic_resume_event { 18870163b031SMaya Erez /* enum wmi_traffic_resume_status_e */ 18880163b031SMaya Erez u8 status; 18890163b031SMaya Erez } __packed; 18900163b031SMaya Erez 18910163b031SMaya Erez /* Power Save command completion status codes */ 18920163b031SMaya Erez enum wmi_ps_cfg_cmd_status { 18930163b031SMaya Erez WMI_PS_CFG_CMD_STATUS_SUCCESS = 0x00, 18940163b031SMaya Erez WMI_PS_CFG_CMD_STATUS_BAD_PARAM = 0x01, 18950163b031SMaya Erez /* other error */ 18960163b031SMaya Erez WMI_PS_CFG_CMD_STATUS_ERROR = 0x02, 18970163b031SMaya Erez }; 18980163b031SMaya Erez 18990163b031SMaya Erez /* Device Power Save Profiles */ 19000163b031SMaya Erez enum wmi_ps_profile_type { 19010163b031SMaya Erez WMI_PS_PROFILE_TYPE_DEFAULT = 0x00, 19020163b031SMaya Erez WMI_PS_PROFILE_TYPE_PS_DISABLED = 0x01, 19030163b031SMaya Erez WMI_PS_PROFILE_TYPE_MAX_PS = 0x02, 19040163b031SMaya Erez WMI_PS_PROFILE_TYPE_LOW_LATENCY_PS = 0x03, 19050163b031SMaya Erez }; 19060163b031SMaya Erez 19070163b031SMaya Erez /* WMI_PS_DEV_PROFILE_CFG_CMDID 19080163b031SMaya Erez * 19090163b031SMaya Erez * Power save profile to be used by the device 19100163b031SMaya Erez * 19110163b031SMaya Erez * Returned event: 19120163b031SMaya Erez * - WMI_PS_DEV_PROFILE_CFG_EVENTID 19130163b031SMaya Erez */ 19140163b031SMaya Erez struct wmi_ps_dev_profile_cfg_cmd { 19150163b031SMaya Erez /* wmi_ps_profile_type_e */ 19160163b031SMaya Erez u8 ps_profile; 19170163b031SMaya Erez u8 reserved[3]; 19180163b031SMaya Erez } __packed; 19190163b031SMaya Erez 19200163b031SMaya Erez /* WMI_PS_DEV_PROFILE_CFG_EVENTID */ 19210163b031SMaya Erez struct wmi_ps_dev_profile_cfg_event { 19220163b031SMaya Erez /* wmi_ps_cfg_cmd_status_e */ 19230163b031SMaya Erez __le32 status; 19240163b031SMaya Erez } __packed; 19250163b031SMaya Erez 19260163b031SMaya Erez enum wmi_ps_level { 19270163b031SMaya Erez WMI_PS_LEVEL_DEEP_SLEEP = 0x00, 19280163b031SMaya Erez WMI_PS_LEVEL_SHALLOW_SLEEP = 0x01, 19290163b031SMaya Erez /* awake = all PS mechanisms are disabled */ 19300163b031SMaya Erez WMI_PS_LEVEL_AWAKE = 0x02, 19310163b031SMaya Erez }; 19320163b031SMaya Erez 19330163b031SMaya Erez enum wmi_ps_deep_sleep_clk_level { 19340163b031SMaya Erez /* 33k */ 19350163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_RTC = 0x00, 19360163b031SMaya Erez /* 10k */ 19370163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_OSC = 0x01, 19380163b031SMaya Erez /* @RTC Low latency */ 19390163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_RTC_LT = 0x02, 19400163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_XTAL = 0x03, 19410163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_SYSCLK = 0x04, 19420163b031SMaya Erez /* Not Applicable */ 19430163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_N_A = 0xFF, 19440163b031SMaya Erez }; 19450163b031SMaya Erez 19460163b031SMaya Erez /* Response by the FW to a D3 entry request */ 19470163b031SMaya Erez enum wmi_ps_d3_resp_policy { 19480163b031SMaya Erez WMI_PS_D3_RESP_POLICY_DEFAULT = 0x00, 19490163b031SMaya Erez /* debug -D3 req is always denied */ 19500163b031SMaya Erez WMI_PS_D3_RESP_POLICY_DENIED = 0x01, 19510163b031SMaya Erez /* debug -D3 req is always approved */ 19520163b031SMaya Erez WMI_PS_D3_RESP_POLICY_APPROVED = 0x02, 19530163b031SMaya Erez }; 19540163b031SMaya Erez 19550163b031SMaya Erez /* Device common power save configurations */ 19560163b031SMaya Erez struct wmi_ps_dev_cfg { 19570163b031SMaya Erez /* lowest level of PS allowed while unassociated, enum wmi_ps_level_e 19580163b031SMaya Erez */ 19590163b031SMaya Erez u8 ps_unassoc_min_level; 19600163b031SMaya Erez /* lowest deep sleep clock level while nonassoc, enum 19610163b031SMaya Erez * wmi_ps_deep_sleep_clk_level_e 19620163b031SMaya Erez */ 19630163b031SMaya Erez u8 ps_unassoc_deep_sleep_min_level; 19640163b031SMaya Erez /* lowest level of PS allowed while associated, enum wmi_ps_level_e */ 19650163b031SMaya Erez u8 ps_assoc_min_level; 19660163b031SMaya Erez /* lowest deep sleep clock level while assoc, enum 19670163b031SMaya Erez * wmi_ps_deep_sleep_clk_level_e 19680163b031SMaya Erez */ 19690163b031SMaya Erez u8 ps_assoc_deep_sleep_min_level; 19700163b031SMaya Erez /* enum wmi_ps_deep_sleep_clk_level_e */ 19710163b031SMaya Erez u8 ps_assoc_low_latency_ds_min_level; 19720163b031SMaya Erez /* enum wmi_ps_d3_resp_policy_e */ 19730163b031SMaya Erez u8 ps_D3_response_policy; 19740163b031SMaya Erez /* BOOL */ 19750163b031SMaya Erez u8 ps_D3_pm_pme_enabled; 19760163b031SMaya Erez /* BOOL */ 19770163b031SMaya Erez u8 ps_halp_enable; 19780163b031SMaya Erez u8 ps_deep_sleep_enter_thresh_msec; 19790163b031SMaya Erez /* BOOL */ 19800163b031SMaya Erez u8 ps_voltage_scaling_en; 19810163b031SMaya Erez } __packed; 19820163b031SMaya Erez 19830163b031SMaya Erez /* WMI_PS_DEV_CFG_CMDID 19840163b031SMaya Erez * 19850163b031SMaya Erez * Configure common Power Save parameters of the device and all MIDs. 19860163b031SMaya Erez * 19870163b031SMaya Erez * Returned event: 19880163b031SMaya Erez * - WMI_PS_DEV_CFG_EVENTID 19890163b031SMaya Erez */ 19900163b031SMaya Erez struct wmi_ps_dev_cfg_cmd { 19910163b031SMaya Erez /* Device Power Save configuration to be applied */ 19920163b031SMaya Erez struct wmi_ps_dev_cfg ps_dev_cfg; 19930163b031SMaya Erez /* alignment to 32b */ 19940163b031SMaya Erez u8 reserved[2]; 19950163b031SMaya Erez } __packed; 19960163b031SMaya Erez 19970163b031SMaya Erez /* WMI_PS_DEV_CFG_EVENTID */ 19980163b031SMaya Erez struct wmi_ps_dev_cfg_event { 19990163b031SMaya Erez /* wmi_ps_cfg_cmd_status_e */ 20000163b031SMaya Erez __le32 status; 20010163b031SMaya Erez } __packed; 20020163b031SMaya Erez 20030163b031SMaya Erez /* WMI_PS_DEV_CFG_READ_CMDID 20040163b031SMaya Erez * 20050163b031SMaya Erez * request to retrieve device Power Save configuration 20060163b031SMaya Erez * (WMI_PS_DEV_CFG_CMD params) 20070163b031SMaya Erez * 20080163b031SMaya Erez * Returned event: 20090163b031SMaya Erez * - WMI_PS_DEV_CFG_READ_EVENTID 20100163b031SMaya Erez */ 20110163b031SMaya Erez struct wmi_ps_dev_cfg_read_cmd { 20120163b031SMaya Erez __le32 reserved; 20130163b031SMaya Erez } __packed; 20140163b031SMaya Erez 20150163b031SMaya Erez /* WMI_PS_DEV_CFG_READ_EVENTID */ 20160163b031SMaya Erez struct wmi_ps_dev_cfg_read_event { 20170163b031SMaya Erez /* wmi_ps_cfg_cmd_status_e */ 20180163b031SMaya Erez __le32 status; 20190163b031SMaya Erez /* Retrieved device Power Save configuration (WMI_PS_DEV_CFG_CMD 20200163b031SMaya Erez * params) 20210163b031SMaya Erez */ 20220163b031SMaya Erez struct wmi_ps_dev_cfg dev_ps_cfg; 20230163b031SMaya Erez /* alignment to 32b */ 20240163b031SMaya Erez u8 reserved[2]; 20250163b031SMaya Erez } __packed; 20260163b031SMaya Erez 20270163b031SMaya Erez /* Per Mac Power Save configurations */ 20280163b031SMaya Erez struct wmi_ps_mid_cfg { 20290163b031SMaya Erez /* Low power RX in BTI is enabled, BOOL */ 20300163b031SMaya Erez u8 beacon_lprx_enable; 20310163b031SMaya Erez /* Sync to sector ID enabled, BOOL */ 20320163b031SMaya Erez u8 beacon_sync_to_sectorId_enable; 20330163b031SMaya Erez /* Low power RX in DTI is enabled, BOOL */ 20340163b031SMaya Erez u8 frame_exchange_lprx_enable; 20350163b031SMaya Erez /* Sleep Cycle while in scheduled PS, 1-31 */ 20360163b031SMaya Erez u8 scheduled_sleep_cycle_pow2; 20370163b031SMaya Erez /* Stay Awake for k BIs every (sleep_cycle - k) BIs, 1-31 */ 20380163b031SMaya Erez u8 scheduled_num_of_awake_bis; 20390163b031SMaya Erez u8 am_to_traffic_load_thresh_mbp; 20400163b031SMaya Erez u8 traffic_to_am_load_thresh_mbps; 20410163b031SMaya Erez u8 traffic_to_am_num_of_no_traffic_bis; 20420163b031SMaya Erez /* BOOL */ 20430163b031SMaya Erez u8 continuous_traffic_psm; 20440163b031SMaya Erez __le16 no_traffic_to_min_usec; 20450163b031SMaya Erez __le16 no_traffic_to_max_usec; 20460163b031SMaya Erez __le16 snoozing_sleep_interval_milisec; 20470163b031SMaya Erez u8 max_no_data_awake_events; 20480163b031SMaya Erez /* Trigger WEB after k failed beacons */ 20490163b031SMaya Erez u8 num_of_failed_beacons_rx_to_trigger_web; 20500163b031SMaya Erez /* Trigger BF after k failed beacons */ 20510163b031SMaya Erez u8 num_of_failed_beacons_rx_to_trigger_bf; 20520163b031SMaya Erez /* Trigger SOB after k successful beacons */ 20530163b031SMaya Erez u8 num_of_successful_beacons_rx_to_trigger_sob; 20540163b031SMaya Erez } __packed; 20550163b031SMaya Erez 20560163b031SMaya Erez /* WMI_PS_MID_CFG_CMDID 20570163b031SMaya Erez * 20580163b031SMaya Erez * Configure Power Save parameters of a specific MID. 20590163b031SMaya Erez * These parameters are relevant for the specific BSS this MID belongs to. 20600163b031SMaya Erez * 20610163b031SMaya Erez * Returned event: 20620163b031SMaya Erez * - WMI_PS_MID_CFG_EVENTID 20630163b031SMaya Erez */ 20640163b031SMaya Erez struct wmi_ps_mid_cfg_cmd { 20650163b031SMaya Erez /* MAC ID */ 20660163b031SMaya Erez u8 mid; 20670163b031SMaya Erez /* mid PS configuration to be applied */ 20680163b031SMaya Erez struct wmi_ps_mid_cfg ps_mid_cfg; 20690163b031SMaya Erez } __packed; 20700163b031SMaya Erez 20710163b031SMaya Erez /* WMI_PS_MID_CFG_EVENTID */ 20720163b031SMaya Erez struct wmi_ps_mid_cfg_event { 20730163b031SMaya Erez /* MAC ID */ 20740163b031SMaya Erez u8 mid; 20750163b031SMaya Erez /* alignment to 32b */ 20760163b031SMaya Erez u8 reserved[3]; 20770163b031SMaya Erez /* wmi_ps_cfg_cmd_status_e */ 20780163b031SMaya Erez __le32 status; 20790163b031SMaya Erez } __packed; 20800163b031SMaya Erez 20810163b031SMaya Erez /* WMI_PS_MID_CFG_READ_CMDID 20820163b031SMaya Erez * 20830163b031SMaya Erez * request to retrieve Power Save configuration of mid 20840163b031SMaya Erez * (WMI_PS_MID_CFG_CMD params) 20850163b031SMaya Erez * 20860163b031SMaya Erez * Returned event: 20870163b031SMaya Erez * - WMI_PS_MID_CFG_READ_EVENTID 20880163b031SMaya Erez */ 20890163b031SMaya Erez struct wmi_ps_mid_cfg_read_cmd { 20900163b031SMaya Erez /* MAC ID */ 20910163b031SMaya Erez u8 mid; 20920163b031SMaya Erez /* alignment to 32b */ 20930163b031SMaya Erez u8 reserved[3]; 20940163b031SMaya Erez } __packed; 20950163b031SMaya Erez 20960163b031SMaya Erez /* WMI_PS_MID_CFG_READ_EVENTID */ 20970163b031SMaya Erez struct wmi_ps_mid_cfg_read_event { 20980163b031SMaya Erez /* MAC ID */ 20990163b031SMaya Erez u8 mid; 21000163b031SMaya Erez /* Retrieved MID Power Save configuration(WMI_PS_MID_CFG_CMD params) */ 21010163b031SMaya Erez struct wmi_ps_mid_cfg mid_ps_cfg; 21020163b031SMaya Erez /* wmi_ps_cfg_cmd_status_e */ 21030163b031SMaya Erez __le32 status; 21040163b031SMaya Erez } __packed; 21050163b031SMaya Erez 210608989f96SLior David #define WMI_AOA_MAX_DATA_SIZE (128) 210708989f96SLior David 210808989f96SLior David enum wmi_aoa_meas_status { 210908989f96SLior David WMI_AOA_MEAS_SUCCESS = 0x00, 211008989f96SLior David WMI_AOA_MEAS_PEER_INCAPABLE = 0x01, 211108989f96SLior David WMI_AOA_MEAS_FAILURE = 0x02, 211208989f96SLior David }; 211308989f96SLior David 211408989f96SLior David /* WMI_AOA_MEAS_EVENTID */ 211508989f96SLior David struct wmi_aoa_meas_event { 211608989f96SLior David u8 mac_addr[WMI_MAC_LEN]; 211708989f96SLior David /* channels IDs: 211808989f96SLior David * 0 - 58320 MHz 211908989f96SLior David * 1 - 60480 MHz 212008989f96SLior David * 2 - 62640 MHz 212108989f96SLior David */ 212208989f96SLior David u8 channel; 212308989f96SLior David /* enum wmi_aoa_meas_type */ 212408989f96SLior David u8 aoa_meas_type; 212508989f96SLior David /* Measurments are from RFs, defined by the mask */ 212608989f96SLior David __le32 meas_rf_mask; 212708989f96SLior David /* enum wmi_aoa_meas_status */ 212808989f96SLior David u8 meas_status; 212908989f96SLior David u8 reserved; 213008989f96SLior David /* Length of meas_data in bytes */ 213108989f96SLior David __le16 length; 213208989f96SLior David u8 meas_data[WMI_AOA_MAX_DATA_SIZE]; 213308989f96SLior David } __packed; 213408989f96SLior David 2135cbf795c1SLior David /* WMI_SET_MGMT_RETRY_LIMIT_EVENTID */ 2136cbf795c1SLior David struct wmi_set_mgmt_retry_limit_event { 2137cbf795c1SLior David /* enum wmi_fw_status */ 2138cbf795c1SLior David u8 status; 2139cbf795c1SLior David /* alignment to 32b */ 2140cbf795c1SLior David u8 reserved[3]; 2141cbf795c1SLior David } __packed; 2142cbf795c1SLior David 2143cbf795c1SLior David /* WMI_GET_MGMT_RETRY_LIMIT_EVENTID */ 2144cbf795c1SLior David struct wmi_get_mgmt_retry_limit_event { 2145cbf795c1SLior David /* MAC retransmit limit for mgmt frames */ 2146cbf795c1SLior David u8 mgmt_retry_limit; 2147cbf795c1SLior David /* alignment to 32b */ 2148cbf795c1SLior David u8 reserved[3]; 2149cbf795c1SLior David } __packed; 2150cbf795c1SLior David 215108989f96SLior David /* WMI_TOF_GET_CAPABILITIES_EVENTID */ 215208989f96SLior David struct wmi_tof_get_capabilities_event { 215308989f96SLior David u8 ftm_capability; 215408989f96SLior David /* maximum supported number of destination to start TOF */ 215508989f96SLior David u8 max_num_of_dest; 215608989f96SLior David /* maximum supported number of measurements per burst */ 215708989f96SLior David u8 max_num_of_meas_per_burst; 215808989f96SLior David u8 reserved; 215908989f96SLior David /* maximum supported multi bursts */ 216008989f96SLior David __le16 max_multi_bursts_sessions; 216108989f96SLior David /* maximum supported FTM burst duration , wmi_tof_burst_duration_e */ 216208989f96SLior David __le16 max_ftm_burst_duration; 216308989f96SLior David /* AOA supported types */ 216408989f96SLior David __le32 aoa_supported_types; 216508989f96SLior David } __packed; 216608989f96SLior David 216708989f96SLior David enum wmi_tof_session_end_status { 216808989f96SLior David WMI_TOF_SESSION_END_NO_ERROR = 0x00, 216908989f96SLior David WMI_TOF_SESSION_END_FAIL = 0x01, 217008989f96SLior David WMI_TOF_SESSION_END_PARAMS_ERROR = 0x02, 217108989f96SLior David WMI_TOF_SESSION_END_ABORTED = 0x03, 217208989f96SLior David }; 217308989f96SLior David 217408989f96SLior David /* WMI_TOF_SESSION_END_EVENTID */ 217508989f96SLior David struct wmi_tof_session_end_event { 217608989f96SLior David /* FTM session ID */ 217708989f96SLior David __le32 session_id; 217808989f96SLior David /* wmi_tof_session_end_status_e */ 217908989f96SLior David u8 status; 218008989f96SLior David u8 reserved[3]; 218108989f96SLior David } __packed; 218208989f96SLior David 218308989f96SLior David /* Responder FTM Results */ 218408989f96SLior David struct wmi_responder_ftm_res { 218508989f96SLior David u8 t1[6]; 218608989f96SLior David u8 t2[6]; 218708989f96SLior David u8 t3[6]; 218808989f96SLior David u8 t4[6]; 218908989f96SLior David __le16 tod_err; 219008989f96SLior David __le16 toa_err; 219108989f96SLior David __le16 tod_err_initiator; 219208989f96SLior David __le16 toa_err_initiator; 219308989f96SLior David } __packed; 219408989f96SLior David 219508989f96SLior David enum wmi_tof_ftm_per_dest_res_status { 219608989f96SLior David WMI_PER_DEST_RES_NO_ERROR = 0x00, 219708989f96SLior David WMI_PER_DEST_RES_TX_RX_FAIL = 0x01, 219808989f96SLior David WMI_PER_DEST_RES_PARAM_DONT_MATCH = 0x02, 219908989f96SLior David }; 220008989f96SLior David 220108989f96SLior David enum wmi_tof_ftm_per_dest_res_flags { 220208989f96SLior David WMI_PER_DEST_RES_REQ_START = 0x01, 220308989f96SLior David WMI_PER_DEST_RES_BURST_REPORT_END = 0x02, 220408989f96SLior David WMI_PER_DEST_RES_REQ_END = 0x04, 220508989f96SLior David WMI_PER_DEST_RES_PARAM_UPDATE = 0x08, 220608989f96SLior David }; 220708989f96SLior David 220808989f96SLior David /* WMI_TOF_FTM_PER_DEST_RES_EVENTID */ 220908989f96SLior David struct wmi_tof_ftm_per_dest_res_event { 221008989f96SLior David /* FTM session ID */ 221108989f96SLior David __le32 session_id; 221208989f96SLior David /* destination MAC address */ 221308989f96SLior David u8 dst_mac[WMI_MAC_LEN]; 221408989f96SLior David /* wmi_tof_ftm_per_dest_res_flags_e */ 221508989f96SLior David u8 flags; 221608989f96SLior David /* wmi_tof_ftm_per_dest_res_status_e */ 221708989f96SLior David u8 status; 221808989f96SLior David /* responder ASAP */ 221908989f96SLior David u8 responder_asap; 222008989f96SLior David /* responder number of FTM per burst */ 222108989f96SLior David u8 responder_num_ftm_per_burst; 222208989f96SLior David /* responder number of FTM burst exponent */ 222308989f96SLior David u8 responder_num_ftm_bursts_exp; 222408989f96SLior David /* responder burst duration ,wmi_tof_burst_duration_e */ 222508989f96SLior David u8 responder_burst_duration; 222608989f96SLior David /* responder burst period, indicate interval between two consecutive 222708989f96SLior David * burst instances, in units of 100 ms 222808989f96SLior David */ 222908989f96SLior David __le16 responder_burst_period; 223008989f96SLior David /* receive burst counter */ 223108989f96SLior David __le16 bursts_cnt; 223208989f96SLior David /* tsf of responder start burst */ 223308989f96SLior David __le32 tsf_sync; 223408989f96SLior David /* actual received ftm per burst */ 223508989f96SLior David u8 actual_ftm_per_burst; 223608989f96SLior David u8 reserved0[7]; 223708989f96SLior David struct wmi_responder_ftm_res responder_ftm_res[0]; 223808989f96SLior David } __packed; 223908989f96SLior David 224008989f96SLior David enum wmi_tof_channel_info_type { 224108989f96SLior David WMI_TOF_CHANNEL_INFO_AOA = 0x00, 224208989f96SLior David WMI_TOF_CHANNEL_INFO_LCI = 0x01, 224308989f96SLior David WMI_TOF_CHANNEL_INFO_LCR = 0x02, 224408989f96SLior David WMI_TOF_CHANNEL_INFO_VENDOR_SPECIFIC = 0x03, 224508989f96SLior David WMI_TOF_CHANNEL_INFO_CIR = 0x04, 224608989f96SLior David WMI_TOF_CHANNEL_INFO_RSSI = 0x05, 224708989f96SLior David WMI_TOF_CHANNEL_INFO_SNR = 0x06, 224808989f96SLior David WMI_TOF_CHANNEL_INFO_DEBUG = 0x07, 224908989f96SLior David }; 225008989f96SLior David 225108989f96SLior David /* WMI_TOF_CHANNEL_INFO_EVENTID */ 225208989f96SLior David struct wmi_tof_channel_info_event { 225308989f96SLior David /* FTM session ID */ 225408989f96SLior David __le32 session_id; 225508989f96SLior David /* destination MAC address */ 225608989f96SLior David u8 dst_mac[WMI_MAC_LEN]; 225708989f96SLior David /* wmi_tof_channel_info_type_e */ 225808989f96SLior David u8 type; 225908989f96SLior David /* data report length */ 226008989f96SLior David u8 len; 226108989f96SLior David /* data report payload */ 226208989f96SLior David u8 report[0]; 226308989f96SLior David } __packed; 226408989f96SLior David 22658ae5d62cSLior David /* WMI_TOF_SET_TX_RX_OFFSET_EVENTID */ 22668ae5d62cSLior David struct wmi_tof_set_tx_rx_offset_event { 22678ae5d62cSLior David /* enum wmi_fw_status */ 22688ae5d62cSLior David u8 status; 22698ae5d62cSLior David u8 reserved[3]; 22708ae5d62cSLior David } __packed; 22718ae5d62cSLior David 22728ae5d62cSLior David /* WMI_TOF_GET_TX_RX_OFFSET_EVENTID */ 22738ae5d62cSLior David struct wmi_tof_get_tx_rx_offset_event { 22748ae5d62cSLior David /* enum wmi_fw_status */ 22758ae5d62cSLior David u8 status; 22768ae5d62cSLior David u8 reserved1[3]; 22778ae5d62cSLior David /* TX delay offset */ 22788ae5d62cSLior David __le32 tx_offset; 22798ae5d62cSLior David /* RX delay offset */ 22808ae5d62cSLior David __le32 rx_offset; 22818ae5d62cSLior David __le32 reserved2[2]; 22828ae5d62cSLior David } __packed; 22838ae5d62cSLior David 2284cbf795c1SLior David /* Result status codes for WMI commands */ 2285cbf795c1SLior David enum wmi_rf_sector_status { 2286cbf795c1SLior David WMI_RF_SECTOR_STATUS_SUCCESS = 0x00, 2287cbf795c1SLior David WMI_RF_SECTOR_STATUS_BAD_PARAMETERS_ERROR = 0x01, 2288cbf795c1SLior David WMI_RF_SECTOR_STATUS_BUSY_ERROR = 0x02, 2289cbf795c1SLior David WMI_RF_SECTOR_STATUS_NOT_SUPPORTED_ERROR = 0x03, 2290cbf795c1SLior David }; 2291cbf795c1SLior David 2292cbf795c1SLior David /* Types of the RF sector (TX,RX) */ 2293cbf795c1SLior David enum wmi_rf_sector_type { 2294cbf795c1SLior David WMI_RF_SECTOR_TYPE_RX = 0x00, 2295cbf795c1SLior David WMI_RF_SECTOR_TYPE_TX = 0x01, 2296cbf795c1SLior David }; 2297cbf795c1SLior David 2298cbf795c1SLior David /* Content of RF Sector (six 32-bits registers) */ 2299cbf795c1SLior David struct wmi_rf_sector_info { 2300cbf795c1SLior David /* Phase values for RF Chains[15-0] (2bits per RF chain) */ 2301cbf795c1SLior David __le32 psh_hi; 2302cbf795c1SLior David /* Phase values for RF Chains[31-16] (2bits per RF chain) */ 2303cbf795c1SLior David __le32 psh_lo; 2304cbf795c1SLior David /* ETYPE Bit0 for all RF chains[31-0] - bit0 of Edge amplifier gain 2305cbf795c1SLior David * index 2306cbf795c1SLior David */ 2307cbf795c1SLior David __le32 etype0; 2308cbf795c1SLior David /* ETYPE Bit1 for all RF chains[31-0] - bit1 of Edge amplifier gain 2309cbf795c1SLior David * index 2310cbf795c1SLior David */ 2311cbf795c1SLior David __le32 etype1; 2312cbf795c1SLior David /* ETYPE Bit2 for all RF chains[31-0] - bit2 of Edge amplifier gain 2313cbf795c1SLior David * index 2314cbf795c1SLior David */ 2315cbf795c1SLior David __le32 etype2; 2316cbf795c1SLior David /* D-Type values (3bits each) for 8 Distribution amplifiers + X16 2317cbf795c1SLior David * switch bits 2318cbf795c1SLior David */ 2319cbf795c1SLior David __le32 dtype_swch_off; 2320cbf795c1SLior David } __packed; 2321cbf795c1SLior David 2322cbf795c1SLior David #define WMI_INVALID_RF_SECTOR_INDEX (0xFFFF) 2323cbf795c1SLior David #define WMI_MAX_RF_MODULES_NUM (8) 2324cbf795c1SLior David 2325cbf795c1SLior David /* WMI_GET_RF_SECTOR_PARAMS_CMD */ 2326cbf795c1SLior David struct wmi_get_rf_sector_params_cmd { 2327cbf795c1SLior David /* Sector number to be retrieved */ 2328cbf795c1SLior David __le16 sector_idx; 2329cbf795c1SLior David /* enum wmi_rf_sector_type - type of requested RF sector */ 2330cbf795c1SLior David u8 sector_type; 2331cbf795c1SLior David /* bitmask vector specifying destination RF modules */ 2332cbf795c1SLior David u8 rf_modules_vec; 2333cbf795c1SLior David } __packed; 2334cbf795c1SLior David 2335cbf795c1SLior David /* \WMI_GET_RF_SECTOR_PARAMS_DONE_EVENT */ 2336cbf795c1SLior David struct wmi_get_rf_sector_params_done_event { 2337cbf795c1SLior David /* result status of WMI_GET_RF_SECTOR_PARAMS_CMD (enum 2338cbf795c1SLior David * wmi_rf_sector_status) 2339cbf795c1SLior David */ 2340cbf795c1SLior David u8 status; 2341cbf795c1SLior David /* align next field to U64 boundary */ 2342cbf795c1SLior David u8 reserved[7]; 2343cbf795c1SLior David /* TSF timestamp when RF sectors where retrieved */ 2344cbf795c1SLior David __le64 tsf; 2345cbf795c1SLior David /* Content of RF sector retrieved from each RF module */ 2346cbf795c1SLior David struct wmi_rf_sector_info sectors_info[WMI_MAX_RF_MODULES_NUM]; 2347cbf795c1SLior David } __packed; 2348cbf795c1SLior David 2349cbf795c1SLior David /* WMI_SET_RF_SECTOR_PARAMS_CMD */ 2350cbf795c1SLior David struct wmi_set_rf_sector_params_cmd { 2351cbf795c1SLior David /* Sector number to be retrieved */ 2352cbf795c1SLior David __le16 sector_idx; 2353cbf795c1SLior David /* enum wmi_rf_sector_type - type of requested RF sector */ 2354cbf795c1SLior David u8 sector_type; 2355cbf795c1SLior David /* bitmask vector specifying destination RF modules */ 2356cbf795c1SLior David u8 rf_modules_vec; 2357cbf795c1SLior David /* Content of RF sector to be written to each RF module */ 2358cbf795c1SLior David struct wmi_rf_sector_info sectors_info[WMI_MAX_RF_MODULES_NUM]; 2359cbf795c1SLior David } __packed; 2360cbf795c1SLior David 2361cbf795c1SLior David /* \WMI_SET_RF_SECTOR_PARAMS_DONE_EVENT */ 2362cbf795c1SLior David struct wmi_set_rf_sector_params_done_event { 2363cbf795c1SLior David /* result status of WMI_SET_RF_SECTOR_PARAMS_CMD (enum 2364cbf795c1SLior David * wmi_rf_sector_status) 2365cbf795c1SLior David */ 2366cbf795c1SLior David u8 status; 2367cbf795c1SLior David } __packed; 2368cbf795c1SLior David 2369cbf795c1SLior David /* WMI_GET_SELECTED_RF_SECTOR_INDEX_CMD - Get RF sector index selected by 2370cbf795c1SLior David * TXSS/BRP for communication with specified CID 2371cbf795c1SLior David */ 2372cbf795c1SLior David struct wmi_get_selected_rf_sector_index_cmd { 2373cbf795c1SLior David /* Connection/Station ID in [0:7] range */ 2374cbf795c1SLior David u8 cid; 2375cbf795c1SLior David /* type of requested RF sector (enum wmi_rf_sector_type) */ 2376cbf795c1SLior David u8 sector_type; 2377cbf795c1SLior David /* align to U32 boundary */ 2378cbf795c1SLior David u8 reserved[2]; 2379cbf795c1SLior David } __packed; 2380cbf795c1SLior David 2381cbf795c1SLior David /* \WMI_GET_SELECTED_RF_SECTOR_INDEX_DONE_EVENT - Returns retrieved RF sector 2382cbf795c1SLior David * index selected by TXSS/BRP for communication with specified CID 2383cbf795c1SLior David */ 2384cbf795c1SLior David struct wmi_get_selected_rf_sector_index_done_event { 2385cbf795c1SLior David /* Retrieved sector index selected in TXSS (for TX sector request) or 2386cbf795c1SLior David * BRP (for RX sector request) 2387cbf795c1SLior David */ 2388cbf795c1SLior David __le16 sector_idx; 2389cbf795c1SLior David /* result status of WMI_GET_SELECTED_RF_SECTOR_INDEX_CMD (enum 2390cbf795c1SLior David * wmi_rf_sector_status) 2391cbf795c1SLior David */ 2392cbf795c1SLior David u8 status; 2393cbf795c1SLior David /* align next field to U64 boundary */ 2394cbf795c1SLior David u8 reserved[5]; 2395cbf795c1SLior David /* TSF timestamp when result was retrieved */ 2396cbf795c1SLior David __le64 tsf; 2397cbf795c1SLior David } __packed; 2398cbf795c1SLior David 2399cbf795c1SLior David /* WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD - Force RF sector index for 2400cbf795c1SLior David * communication with specified CID. Assumes that TXSS/BRP is disabled by 2401cbf795c1SLior David * other command 2402cbf795c1SLior David */ 2403cbf795c1SLior David struct wmi_set_selected_rf_sector_index_cmd { 2404cbf795c1SLior David /* Connection/Station ID in [0:7] range */ 2405cbf795c1SLior David u8 cid; 2406cbf795c1SLior David /* type of requested RF sector (enum wmi_rf_sector_type) */ 2407cbf795c1SLior David u8 sector_type; 2408cbf795c1SLior David /* Forced sector index */ 2409cbf795c1SLior David __le16 sector_idx; 2410cbf795c1SLior David } __packed; 2411cbf795c1SLior David 2412cbf795c1SLior David /* \WMI_SET_SELECTED_RF_SECTOR_INDEX_DONE_EVENT - Success/Fail status for 2413cbf795c1SLior David * WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD 2414cbf795c1SLior David */ 2415cbf795c1SLior David struct wmi_set_selected_rf_sector_index_done_event { 2416cbf795c1SLior David /* result status of WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD (enum 2417cbf795c1SLior David * wmi_rf_sector_status) 2418cbf795c1SLior David */ 2419cbf795c1SLior David u8 status; 2420cbf795c1SLior David /* align to U32 boundary */ 2421cbf795c1SLior David u8 reserved[3]; 2422cbf795c1SLior David } __packed; 2423cbf795c1SLior David 2424cbf795c1SLior David /* WMI_SET_RF_SECTOR_ON_CMD - Activates specified sector for specified rf 2425cbf795c1SLior David * modules 2426cbf795c1SLior David */ 2427cbf795c1SLior David struct wmi_set_rf_sector_on_cmd { 2428cbf795c1SLior David /* Sector index to be activated */ 2429cbf795c1SLior David __le16 sector_idx; 2430cbf795c1SLior David /* type of requested RF sector (enum wmi_rf_sector_type) */ 2431cbf795c1SLior David u8 sector_type; 2432cbf795c1SLior David /* bitmask vector specifying destination RF modules */ 2433cbf795c1SLior David u8 rf_modules_vec; 2434cbf795c1SLior David } __packed; 2435cbf795c1SLior David 2436cbf795c1SLior David /* \WMI_SET_RF_SECTOR_ON_DONE_EVENT - Success/Fail status for 2437cbf795c1SLior David * WMI_SET_RF_SECTOR_ON_CMD 2438cbf795c1SLior David */ 2439cbf795c1SLior David struct wmi_set_rf_sector_on_done_event { 2440cbf795c1SLior David /* result status of WMI_SET_RF_SECTOR_ON_CMD (enum 2441cbf795c1SLior David * wmi_rf_sector_status) 2442cbf795c1SLior David */ 2443cbf795c1SLior David u8 status; 2444cbf795c1SLior David /* align to U32 boundary */ 2445cbf795c1SLior David u8 reserved[3]; 2446cbf795c1SLior David } __packed; 2447cbf795c1SLior David 24488ae5d62cSLior David enum wmi_sector_sweep_type { 24498ae5d62cSLior David WMI_SECTOR_SWEEP_TYPE_TXSS = 0x00, 24508ae5d62cSLior David WMI_SECTOR_SWEEP_TYPE_BCON = 0x01, 24518ae5d62cSLior David WMI_SECTOR_SWEEP_TYPE_TXSS_AND_BCON = 0x02, 24528ae5d62cSLior David WMI_SECTOR_SWEEP_TYPE_NUM = 0x03, 24538ae5d62cSLior David }; 24548ae5d62cSLior David 24558ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_ORDER_CMDID 24568ae5d62cSLior David * 24578ae5d62cSLior David * Set the order of TX sectors in TXSS and/or Beacon(AP). 24588ae5d62cSLior David * 24598ae5d62cSLior David * Returned event: 24608ae5d62cSLior David * - WMI_PRIO_TX_SECTORS_ORDER_EVENTID 24618ae5d62cSLior David */ 24628ae5d62cSLior David struct wmi_prio_tx_sectors_order_cmd { 24638ae5d62cSLior David /* tx sectors order to be applied, 0xFF for end of array */ 24648ae5d62cSLior David u8 tx_sectors_priority_array[MAX_NUM_OF_SECTORS]; 24658ae5d62cSLior David /* enum wmi_sector_sweep_type, TXSS and/or Beacon */ 24668ae5d62cSLior David u8 sector_sweep_type; 24678ae5d62cSLior David /* needed only for TXSS configuration */ 24688ae5d62cSLior David u8 cid; 24698ae5d62cSLior David /* alignment to 32b */ 24708ae5d62cSLior David u8 reserved[2]; 24718ae5d62cSLior David } __packed; 24728ae5d62cSLior David 24738ae5d62cSLior David /* completion status codes */ 24748ae5d62cSLior David enum wmi_prio_tx_sectors_cmd_status { 24758ae5d62cSLior David WMI_PRIO_TX_SECT_CMD_STATUS_SUCCESS = 0x00, 24768ae5d62cSLior David WMI_PRIO_TX_SECT_CMD_STATUS_BAD_PARAM = 0x01, 24778ae5d62cSLior David /* other error */ 24788ae5d62cSLior David WMI_PRIO_TX_SECT_CMD_STATUS_ERROR = 0x02, 24798ae5d62cSLior David }; 24808ae5d62cSLior David 24818ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_ORDER_EVENTID */ 24828ae5d62cSLior David struct wmi_prio_tx_sectors_order_event { 24838ae5d62cSLior David /* enum wmi_prio_tx_sectors_cmd_status */ 24848ae5d62cSLior David u8 status; 24858ae5d62cSLior David /* alignment to 32b */ 24868ae5d62cSLior David u8 reserved[3]; 24878ae5d62cSLior David } __packed; 24888ae5d62cSLior David 24898ae5d62cSLior David struct wmi_prio_tx_sectors_num_cmd { 24908ae5d62cSLior David /* [0-128], 0 = No changes */ 24918ae5d62cSLior David u8 beacon_number_of_sectors; 24928ae5d62cSLior David /* [0-128], 0 = No changes */ 24938ae5d62cSLior David u8 txss_number_of_sectors; 24948ae5d62cSLior David /* [0-8] needed only for TXSS configuration */ 24958ae5d62cSLior David u8 cid; 24968ae5d62cSLior David } __packed; 24978ae5d62cSLior David 24988ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_NUMBER_CMDID 24998ae5d62cSLior David * 25008ae5d62cSLior David * Set the number of active sectors in TXSS and/or Beacon. 25018ae5d62cSLior David * 25028ae5d62cSLior David * Returned event: 25038ae5d62cSLior David * - WMI_PRIO_TX_SECTORS_NUMBER_EVENTID 25048ae5d62cSLior David */ 25058ae5d62cSLior David struct wmi_prio_tx_sectors_number_cmd { 25068ae5d62cSLior David struct wmi_prio_tx_sectors_num_cmd active_sectors_num; 25078ae5d62cSLior David /* alignment to 32b */ 25088ae5d62cSLior David u8 reserved; 25098ae5d62cSLior David } __packed; 25108ae5d62cSLior David 25118ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_NUMBER_EVENTID */ 25128ae5d62cSLior David struct wmi_prio_tx_sectors_number_event { 25138ae5d62cSLior David /* enum wmi_prio_tx_sectors_cmd_status */ 25148ae5d62cSLior David u8 status; 25158ae5d62cSLior David /* alignment to 32b */ 25168ae5d62cSLior David u8 reserved[3]; 25178ae5d62cSLior David } __packed; 25188ae5d62cSLior David 25198ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_CMDID 25208ae5d62cSLior David * 25218ae5d62cSLior David * Set default sectors order and number (hard coded in board file) 25228ae5d62cSLior David * in TXSS and/or Beacon. 25238ae5d62cSLior David * 25248ae5d62cSLior David * Returned event: 25258ae5d62cSLior David * - WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_EVENTID 25268ae5d62cSLior David */ 25278ae5d62cSLior David struct wmi_prio_tx_sectors_set_default_cfg_cmd { 25288ae5d62cSLior David /* enum wmi_sector_sweep_type, TXSS and/or Beacon */ 25298ae5d62cSLior David u8 sector_sweep_type; 25308ae5d62cSLior David /* needed only for TXSS configuration */ 25318ae5d62cSLior David u8 cid; 25328ae5d62cSLior David /* alignment to 32b */ 25338ae5d62cSLior David u8 reserved[2]; 25348ae5d62cSLior David } __packed; 25358ae5d62cSLior David 25368ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_EVENTID */ 25378ae5d62cSLior David struct wmi_prio_tx_sectors_set_default_cfg_event { 25388ae5d62cSLior David /* enum wmi_prio_tx_sectors_cmd_status */ 25398ae5d62cSLior David u8 status; 25408ae5d62cSLior David /* alignment to 32b */ 25418ae5d62cSLior David u8 reserved[3]; 25428ae5d62cSLior David } __packed; 25438ae5d62cSLior David 25442be7d22fSVladimir Kondratiev #endif /* __WILOCITY_WMI_H__ */ 2545