12be7d22fSVladimir Kondratiev /* 28a4fa214SAhmad Masri * Copyright (c) 2018, The Linux Foundation. All rights reserved. 3849a564bSDedy Lansky * Copyright (c) 2012-2017 Qualcomm Atheros, Inc. 4b874ddecSLior David * Copyright (c) 2006-2012 Wilocity 52be7d22fSVladimir Kondratiev * 62be7d22fSVladimir Kondratiev * Permission to use, copy, modify, and/or distribute this software for any 72be7d22fSVladimir Kondratiev * purpose with or without fee is hereby granted, provided that the above 82be7d22fSVladimir Kondratiev * copyright notice and this permission notice appear in all copies. 92be7d22fSVladimir Kondratiev * 102be7d22fSVladimir Kondratiev * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 112be7d22fSVladimir Kondratiev * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 122be7d22fSVladimir Kondratiev * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 132be7d22fSVladimir Kondratiev * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 142be7d22fSVladimir Kondratiev * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 152be7d22fSVladimir Kondratiev * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 162be7d22fSVladimir Kondratiev * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 172be7d22fSVladimir Kondratiev */ 182be7d22fSVladimir Kondratiev 192be7d22fSVladimir Kondratiev /* 202be7d22fSVladimir Kondratiev * This file contains the definitions of the WMI protocol specified in the 21b874ddecSLior David * Wireless Module Interface (WMI) for the Qualcomm 22b874ddecSLior David * 60 GHz wireless solution. 232be7d22fSVladimir Kondratiev * It includes definitions of all the commands and events. 242be7d22fSVladimir Kondratiev * Commands are messages from the host to the WM. 252be7d22fSVladimir Kondratiev * Events are messages from the WM to the host. 26b874ddecSLior David * 27b874ddecSLior David * This is an automatically generated file. 282be7d22fSVladimir Kondratiev */ 292be7d22fSVladimir Kondratiev 302be7d22fSVladimir Kondratiev #ifndef __WILOCITY_WMI_H__ 312be7d22fSVladimir Kondratiev #define __WILOCITY_WMI_H__ 322be7d22fSVladimir Kondratiev 33b874ddecSLior David #define WMI_DEFAULT_ASSOC_STA (1) 342be7d22fSVladimir Kondratiev #define WMI_MAC_LEN (6) 352be7d22fSVladimir Kondratiev #define WMI_PROX_RANGE_NUM (3) 36b874ddecSLior David #define WMI_MAX_LOSS_DMG_BEACONS (20) 378ae5d62cSLior David #define MAX_NUM_OF_SECTORS (128) 38761f8e4dSLazar Alexei #define WMI_SCHED_MAX_ALLOCS_PER_CMD (4) 39761f8e4dSLazar Alexei #define WMI_RF_DTYPE_LENGTH (3) 40761f8e4dSLazar Alexei #define WMI_RF_ETYPE_LENGTH (3) 41761f8e4dSLazar Alexei #define WMI_RF_RX2TX_LENGTH (3) 42761f8e4dSLazar Alexei #define WMI_RF_ETYPE_VAL_PER_RANGE (5) 438a4fa214SAhmad Masri /* DTYPE configuration array size 448a4fa214SAhmad Masri * must always be kept equal to (WMI_RF_DTYPE_LENGTH+1) 458a4fa214SAhmad Masri */ 468a4fa214SAhmad Masri #define WMI_RF_DTYPE_CONF_LENGTH (4) 478a4fa214SAhmad Masri /* ETYPE configuration array size 488a4fa214SAhmad Masri * must always be kept equal to 498a4fa214SAhmad Masri * (WMI_RF_ETYPE_LENGTH+WMI_RF_ETYPE_VAL_PER_RANGE) 508a4fa214SAhmad Masri */ 518a4fa214SAhmad Masri #define WMI_RF_ETYPE_CONF_LENGTH (8) 528a4fa214SAhmad Masri /* RX2TX configuration array size 538a4fa214SAhmad Masri * must always be kept equal to (WMI_RF_RX2TX_LENGTH+1) 548a4fa214SAhmad Masri */ 558a4fa214SAhmad Masri #define WMI_RF_RX2TX_CONF_LENGTH (4) 56b874ddecSLior David 57b874ddecSLior David /* Mailbox interface 58b874ddecSLior David * used for commands and events 59b874ddecSLior David */ 60b874ddecSLior David enum wmi_mid { 61b874ddecSLior David MID_DEFAULT = 0x00, 62b874ddecSLior David FIRST_DBG_MID_ID = 0x10, 63b874ddecSLior David LAST_DBG_MID_ID = 0xFE, 64b874ddecSLior David MID_BROADCAST = 0xFF, 65b874ddecSLior David }; 66b874ddecSLior David 6708989f96SLior David /* FW capability IDs 6808989f96SLior David * Each ID maps to a bit in a 32-bit bitmask value provided by the FW to 6908989f96SLior David * the host 7008989f96SLior David */ 7108989f96SLior David enum wmi_fw_capability { 7208989f96SLior David WMI_FW_CAPABILITY_FTM = 0, 7308989f96SLior David WMI_FW_CAPABILITY_PS_CONFIG = 1, 74cbf795c1SLior David WMI_FW_CAPABILITY_RF_SECTORS = 2, 75cbf795c1SLior David WMI_FW_CAPABILITY_MGMT_RETRY_LIMIT = 3, 768a4fa214SAhmad Masri WMI_FW_CAPABILITY_AP_SME_OFFLOAD_PARTIAL = 4, 770d2370e9SDedy Lansky WMI_FW_CAPABILITY_WMI_ONLY = 5, 7890ffabb0SDedy Lansky WMI_FW_CAPABILITY_THERMAL_THROTTLING = 7, 79fe9ee51eSMaya Erez WMI_FW_CAPABILITY_D3_SUSPEND = 8, 80761f8e4dSLazar Alexei WMI_FW_CAPABILITY_LONG_RANGE = 9, 81761f8e4dSLazar Alexei WMI_FW_CAPABILITY_FIXED_SCHEDULING = 10, 82761f8e4dSLazar Alexei WMI_FW_CAPABILITY_MULTI_DIRECTED_OMNIS = 11, 8330868f5dSDedy Lansky WMI_FW_CAPABILITY_RSSI_REPORTING = 12, 84761f8e4dSLazar Alexei WMI_FW_CAPABILITY_SET_SILENT_RSSI_TABLE = 13, 85761f8e4dSLazar Alexei WMI_FW_CAPABILITY_LO_POWER_CALIB_FROM_OTP = 14, 86a5dc6883SDedy Lansky WMI_FW_CAPABILITY_PNO = 15, 87594b59ecSMaya Erez WMI_FW_CAPABILITY_REF_CLOCK_CONTROL = 18, 888a4fa214SAhmad Masri WMI_FW_CAPABILITY_AP_SME_OFFLOAD_NONE = 19, 8908989f96SLior David WMI_FW_CAPABILITY_MAX, 9008989f96SLior David }; 9108989f96SLior David 92b874ddecSLior David /* WMI_CMD_HDR */ 93b874ddecSLior David struct wmi_cmd_hdr { 94b874ddecSLior David u8 mid; 95b874ddecSLior David u8 reserved; 96b874ddecSLior David __le16 command_id; 97b874ddecSLior David __le32 fw_timestamp; 98b874ddecSLior David } __packed; 992be7d22fSVladimir Kondratiev 1002be7d22fSVladimir Kondratiev /* List of Commands */ 1012be7d22fSVladimir Kondratiev enum wmi_command_id { 102b874ddecSLior David WMI_CONNECT_CMDID = 0x01, 103b874ddecSLior David WMI_DISCONNECT_CMDID = 0x03, 104b874ddecSLior David WMI_DISCONNECT_STA_CMDID = 0x04, 105a5dc6883SDedy Lansky WMI_START_SCHED_SCAN_CMDID = 0x05, 106a5dc6883SDedy Lansky WMI_STOP_SCHED_SCAN_CMDID = 0x06, 107b874ddecSLior David WMI_START_SCAN_CMDID = 0x07, 108b874ddecSLior David WMI_SET_BSS_FILTER_CMDID = 0x09, 109b874ddecSLior David WMI_SET_PROBED_SSID_CMDID = 0x0A, 110761f8e4dSLazar Alexei /* deprecated */ 111b874ddecSLior David WMI_SET_LISTEN_INT_CMDID = 0x0B, 112b874ddecSLior David WMI_BCON_CTRL_CMDID = 0x0F, 113b874ddecSLior David WMI_ADD_CIPHER_KEY_CMDID = 0x16, 114b874ddecSLior David WMI_DELETE_CIPHER_KEY_CMDID = 0x17, 115b874ddecSLior David WMI_PCP_CONF_CMDID = 0x18, 116b874ddecSLior David WMI_SET_APPIE_CMDID = 0x3F, 117b874ddecSLior David WMI_SET_WSC_STATUS_CMDID = 0x41, 118b874ddecSLior David WMI_PXMT_RANGE_CFG_CMDID = 0x42, 119b874ddecSLior David WMI_PXMT_SNR2_RANGE_CFG_CMDID = 0x43, 120b874ddecSLior David WMI_MEM_READ_CMDID = 0x800, 121b874ddecSLior David WMI_MEM_WR_CMDID = 0x801, 122b874ddecSLior David WMI_ECHO_CMDID = 0x803, 123b874ddecSLior David WMI_DEEP_ECHO_CMDID = 0x804, 124b874ddecSLior David WMI_CONFIG_MAC_CMDID = 0x805, 125761f8e4dSLazar Alexei /* deprecated */ 126b874ddecSLior David WMI_CONFIG_PHY_DEBUG_CMDID = 0x806, 127b874ddecSLior David WMI_ADD_DEBUG_TX_PCKT_CMDID = 0x808, 128b874ddecSLior David WMI_PHY_GET_STATISTICS_CMDID = 0x809, 129761f8e4dSLazar Alexei /* deprecated */ 130b874ddecSLior David WMI_FS_TUNE_CMDID = 0x80A, 131761f8e4dSLazar Alexei /* deprecated */ 132b874ddecSLior David WMI_CORR_MEASURE_CMDID = 0x80B, 133b874ddecSLior David WMI_READ_RSSI_CMDID = 0x80C, 134b874ddecSLior David WMI_TEMP_SENSE_CMDID = 0x80E, 135b874ddecSLior David WMI_DC_CALIB_CMDID = 0x80F, 136761f8e4dSLazar Alexei /* deprecated */ 137b874ddecSLior David WMI_SEND_TONE_CMDID = 0x810, 138761f8e4dSLazar Alexei /* deprecated */ 139b874ddecSLior David WMI_IQ_TX_CALIB_CMDID = 0x811, 140761f8e4dSLazar Alexei /* deprecated */ 141b874ddecSLior David WMI_IQ_RX_CALIB_CMDID = 0x812, 142b874ddecSLior David WMI_SET_WORK_MODE_CMDID = 0x815, 143b874ddecSLior David WMI_LO_LEAKAGE_CALIB_CMDID = 0x816, 144761f8e4dSLazar Alexei WMI_LO_POWER_CALIB_FROM_OTP_CMDID = 0x817, 145b874ddecSLior David WMI_SILENT_RSSI_CALIB_CMDID = 0x81D, 146761f8e4dSLazar Alexei /* deprecated */ 147b874ddecSLior David WMI_RF_RX_TEST_CMDID = 0x81E, 148b874ddecSLior David WMI_CFG_RX_CHAIN_CMDID = 0x820, 149b874ddecSLior David WMI_VRING_CFG_CMDID = 0x821, 150b874ddecSLior David WMI_BCAST_VRING_CFG_CMDID = 0x822, 151*96c93589SGidon Studinski WMI_RING_BA_EN_CMDID = 0x823, 152*96c93589SGidon Studinski WMI_RING_BA_DIS_CMDID = 0x824, 153b874ddecSLior David WMI_RCP_ADDBA_RESP_CMDID = 0x825, 154b874ddecSLior David WMI_RCP_DELBA_CMDID = 0x826, 155b874ddecSLior David WMI_SET_SSID_CMDID = 0x827, 156b874ddecSLior David WMI_GET_SSID_CMDID = 0x828, 157b874ddecSLior David WMI_SET_PCP_CHANNEL_CMDID = 0x829, 158b874ddecSLior David WMI_GET_PCP_CHANNEL_CMDID = 0x82A, 159b874ddecSLior David WMI_SW_TX_REQ_CMDID = 0x82B, 160b874ddecSLior David WMI_MLME_PUSH_CMDID = 0x835, 161b874ddecSLior David WMI_BEAMFORMING_MGMT_CMDID = 0x836, 162b874ddecSLior David WMI_BF_TXSS_MGMT_CMDID = 0x837, 163b874ddecSLior David WMI_BF_SM_MGMT_CMDID = 0x838, 164b874ddecSLior David WMI_BF_RXSS_MGMT_CMDID = 0x839, 165b874ddecSLior David WMI_BF_TRIG_CMDID = 0x83A, 166*96c93589SGidon Studinski WMI_RCP_ADDBA_RESP_EDMA_CMDID = 0x83B, 1670163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_WRITE_CMDID = 0x842, 1680163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_READ_CMDID = 0x843, 169b874ddecSLior David WMI_SET_SECTORS_CMDID = 0x849, 170b874ddecSLior David WMI_MAINTAIN_PAUSE_CMDID = 0x850, 171b874ddecSLior David WMI_MAINTAIN_RESUME_CMDID = 0x851, 172b874ddecSLior David WMI_RS_MGMT_CMDID = 0x852, 173b874ddecSLior David WMI_RF_MGMT_CMDID = 0x853, 174761f8e4dSLazar Alexei WMI_RF_XPM_READ_CMDID = 0x856, 175761f8e4dSLazar Alexei WMI_RF_XPM_WRITE_CMDID = 0x857, 17610d599adSMaya Erez WMI_LED_CFG_CMDID = 0x858, 177761f8e4dSLazar Alexei WMI_SET_CONNECT_SNR_THR_CMDID = 0x85B, 178761f8e4dSLazar Alexei WMI_SET_ACTIVE_SILENT_RSSI_TABLE_CMDID = 0x85C, 179761f8e4dSLazar Alexei WMI_RF_PWR_ON_DELAY_CMDID = 0x85D, 180761f8e4dSLazar Alexei WMI_SET_HIGH_POWER_TABLE_PARAMS_CMDID = 0x85E, 1818a4fa214SAhmad Masri WMI_FIXED_SCHEDULING_UL_CONFIG_CMDID = 0x85F, 1822be7d22fSVladimir Kondratiev /* Performance monitoring commands */ 183b874ddecSLior David WMI_BF_CTRL_CMDID = 0x862, 184b874ddecSLior David WMI_NOTIFY_REQ_CMDID = 0x863, 185b874ddecSLior David WMI_GET_STATUS_CMDID = 0x864, 1860163b031SMaya Erez WMI_GET_RF_STATUS_CMDID = 0x866, 1870163b031SMaya Erez WMI_GET_BASEBAND_TYPE_CMDID = 0x867, 1888a4fa214SAhmad Masri WMI_VRING_SWITCH_TIMING_CONFIG_CMDID = 0x868, 189b874ddecSLior David WMI_UNIT_TEST_CMDID = 0x900, 190b874ddecSLior David WMI_FLASH_READ_CMDID = 0x902, 191b874ddecSLior David WMI_FLASH_WRITE_CMDID = 0x903, 1920163b031SMaya Erez /* Power management */ 193fe9ee51eSMaya Erez WMI_TRAFFIC_SUSPEND_CMDID = 0x904, 1940163b031SMaya Erez WMI_TRAFFIC_RESUME_CMDID = 0x905, 195b8023177SVladimir Kondratiev /* P2P */ 196b874ddecSLior David WMI_P2P_CFG_CMDID = 0x910, 197b874ddecSLior David WMI_PORT_ALLOCATE_CMDID = 0x911, 198b874ddecSLior David WMI_PORT_DELETE_CMDID = 0x912, 199b874ddecSLior David WMI_POWER_MGMT_CFG_CMDID = 0x913, 200b874ddecSLior David WMI_START_LISTEN_CMDID = 0x914, 201b874ddecSLior David WMI_START_SEARCH_CMDID = 0x915, 202b874ddecSLior David WMI_DISCOVERY_START_CMDID = 0x916, 203b874ddecSLior David WMI_DISCOVERY_STOP_CMDID = 0x917, 204b874ddecSLior David WMI_PCP_START_CMDID = 0x918, 205b874ddecSLior David WMI_PCP_STOP_CMDID = 0x919, 206b874ddecSLior David WMI_GET_PCP_FACTOR_CMDID = 0x91B, 2070163b031SMaya Erez /* Power Save Configuration Commands */ 2080163b031SMaya Erez WMI_PS_DEV_PROFILE_CFG_CMDID = 0x91C, 2090163b031SMaya Erez WMI_RS_CFG_CMDID = 0x921, 21008989f96SLior David WMI_GET_DETAILED_RS_RES_CMDID = 0x922, 21108989f96SLior David WMI_AOA_MEAS_CMDID = 0x923, 212a52fb913SLior David WMI_BRP_SET_ANT_LIMIT_CMDID = 0x924, 213cbf795c1SLior David WMI_SET_MGMT_RETRY_LIMIT_CMDID = 0x930, 214cbf795c1SLior David WMI_GET_MGMT_RETRY_LIMIT_CMDID = 0x931, 215849a564bSDedy Lansky WMI_NEW_STA_CMDID = 0x935, 216849a564bSDedy Lansky WMI_DEL_STA_CMDID = 0x936, 21790ffabb0SDedy Lansky WMI_SET_THERMAL_THROTTLING_CFG_CMDID = 0x940, 21890ffabb0SDedy Lansky WMI_GET_THERMAL_THROTTLING_CFG_CMDID = 0x941, 219761f8e4dSLazar Alexei /* Read Power Save profile type */ 220761f8e4dSLazar Alexei WMI_PS_DEV_PROFILE_CFG_READ_CMDID = 0x942, 2218a4fa214SAhmad Masri WMI_TSF_SYNC_CMDID = 0x973, 22208989f96SLior David WMI_TOF_SESSION_START_CMDID = 0x991, 22308989f96SLior David WMI_TOF_GET_CAPABILITIES_CMDID = 0x992, 22408989f96SLior David WMI_TOF_SET_LCR_CMDID = 0x993, 22508989f96SLior David WMI_TOF_SET_LCI_CMDID = 0x994, 226761f8e4dSLazar Alexei WMI_TOF_CFG_RESPONDER_CMDID = 0x996, 2278ae5d62cSLior David WMI_TOF_SET_TX_RX_OFFSET_CMDID = 0x997, 2288ae5d62cSLior David WMI_TOF_GET_TX_RX_OFFSET_CMDID = 0x998, 229761f8e4dSLazar Alexei WMI_TOF_CHANNEL_INFO_CMDID = 0x999, 230cbf795c1SLior David WMI_GET_RF_SECTOR_PARAMS_CMDID = 0x9A0, 231cbf795c1SLior David WMI_SET_RF_SECTOR_PARAMS_CMDID = 0x9A1, 232cbf795c1SLior David WMI_GET_SELECTED_RF_SECTOR_INDEX_CMDID = 0x9A2, 233cbf795c1SLior David WMI_SET_SELECTED_RF_SECTOR_INDEX_CMDID = 0x9A3, 234cbf795c1SLior David WMI_SET_RF_SECTOR_ON_CMDID = 0x9A4, 2358ae5d62cSLior David WMI_PRIO_TX_SECTORS_ORDER_CMDID = 0x9A5, 2368ae5d62cSLior David WMI_PRIO_TX_SECTORS_NUMBER_CMDID = 0x9A6, 2378ae5d62cSLior David WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_CMDID = 0x9A7, 2388a4fa214SAhmad Masri WMI_BF_CONTROL_CMDID = 0x9AA, 239*96c93589SGidon Studinski WMI_TX_STATUS_RING_ADD_CMDID = 0x9C0, 240*96c93589SGidon Studinski WMI_RX_STATUS_RING_ADD_CMDID = 0x9C1, 241*96c93589SGidon Studinski WMI_TX_DESC_RING_ADD_CMDID = 0x9C2, 242*96c93589SGidon Studinski WMI_RX_DESC_RING_ADD_CMDID = 0x9C3, 243*96c93589SGidon Studinski WMI_BCAST_DESC_RING_ADD_CMDID = 0x9C4, 244*96c93589SGidon Studinski WMI_CFG_DEF_RX_OFFLOAD_CMDID = 0x9C5, 245761f8e4dSLazar Alexei WMI_SCHEDULING_SCHEME_CMDID = 0xA01, 246761f8e4dSLazar Alexei WMI_FIXED_SCHEDULING_CONFIG_CMDID = 0xA02, 247761f8e4dSLazar Alexei WMI_ENABLE_FIXED_SCHEDULING_CMDID = 0xA03, 248761f8e4dSLazar Alexei WMI_SET_MULTI_DIRECTED_OMNIS_CONFIG_CMDID = 0xA04, 249761f8e4dSLazar Alexei WMI_SET_LONG_RANGE_CONFIG_CMDID = 0xA05, 2508a4fa214SAhmad Masri WMI_GET_ASSOC_LIST_CMDID = 0xA06, 2518a4fa214SAhmad Masri WMI_GET_CCA_INDICATIONS_CMDID = 0xA07, 2528a4fa214SAhmad Masri WMI_SET_CCA_INDICATIONS_BI_AVG_NUM_CMDID = 0xA08, 2538a4fa214SAhmad Masri WMI_INTERNAL_FW_IOCTL_CMDID = 0xA0B, 254b874ddecSLior David WMI_SET_MAC_ADDRESS_CMDID = 0xF003, 255b874ddecSLior David WMI_ABORT_SCAN_CMDID = 0xF007, 256b874ddecSLior David WMI_SET_PROMISCUOUS_MODE_CMDID = 0xF041, 257761f8e4dSLazar Alexei /* deprecated */ 258b874ddecSLior David WMI_GET_PMK_CMDID = 0xF048, 259b874ddecSLior David WMI_SET_PASSPHRASE_CMDID = 0xF049, 260761f8e4dSLazar Alexei /* deprecated */ 261b874ddecSLior David WMI_SEND_ASSOC_RES_CMDID = 0xF04A, 262761f8e4dSLazar Alexei /* deprecated */ 263b874ddecSLior David WMI_SET_ASSOC_REQ_RELAY_CMDID = 0xF04B, 264b874ddecSLior David WMI_MAC_ADDR_REQ_CMDID = 0xF04D, 265b874ddecSLior David WMI_FW_VER_CMDID = 0xF04E, 266b874ddecSLior David WMI_PMC_CMDID = 0xF04F, 2672be7d22fSVladimir Kondratiev }; 2682be7d22fSVladimir Kondratiev 269b874ddecSLior David /* WMI_CONNECT_CMDID */ 2702be7d22fSVladimir Kondratiev enum wmi_network_type { 2712be7d22fSVladimir Kondratiev WMI_NETTYPE_INFRA = 0x01, 2722be7d22fSVladimir Kondratiev WMI_NETTYPE_ADHOC = 0x02, 2732be7d22fSVladimir Kondratiev WMI_NETTYPE_ADHOC_CREATOR = 0x04, 2742be7d22fSVladimir Kondratiev WMI_NETTYPE_AP = 0x10, 2752be7d22fSVladimir Kondratiev WMI_NETTYPE_P2P = 0x20, 276b874ddecSLior David /* PCIE over 60g */ 277b874ddecSLior David WMI_NETTYPE_WBE = 0x40, 2782be7d22fSVladimir Kondratiev }; 2792be7d22fSVladimir Kondratiev 2802be7d22fSVladimir Kondratiev enum wmi_dot11_auth_mode { 2812be7d22fSVladimir Kondratiev WMI_AUTH11_OPEN = 0x01, 2822be7d22fSVladimir Kondratiev WMI_AUTH11_SHARED = 0x02, 2832be7d22fSVladimir Kondratiev WMI_AUTH11_LEAP = 0x04, 2842be7d22fSVladimir Kondratiev WMI_AUTH11_WSC = 0x08, 2852be7d22fSVladimir Kondratiev }; 2862be7d22fSVladimir Kondratiev 2872be7d22fSVladimir Kondratiev enum wmi_auth_mode { 2882be7d22fSVladimir Kondratiev WMI_AUTH_NONE = 0x01, 2892be7d22fSVladimir Kondratiev WMI_AUTH_WPA = 0x02, 2902be7d22fSVladimir Kondratiev WMI_AUTH_WPA2 = 0x04, 2912be7d22fSVladimir Kondratiev WMI_AUTH_WPA_PSK = 0x08, 2922be7d22fSVladimir Kondratiev WMI_AUTH_WPA2_PSK = 0x10, 2932be7d22fSVladimir Kondratiev WMI_AUTH_WPA_CCKM = 0x20, 2942be7d22fSVladimir Kondratiev WMI_AUTH_WPA2_CCKM = 0x40, 2952be7d22fSVladimir Kondratiev }; 2962be7d22fSVladimir Kondratiev 2972be7d22fSVladimir Kondratiev enum wmi_crypto_type { 2982be7d22fSVladimir Kondratiev WMI_CRYPT_NONE = 0x01, 2992be7d22fSVladimir Kondratiev WMI_CRYPT_AES_GCMP = 0x20, 3002be7d22fSVladimir Kondratiev }; 3012be7d22fSVladimir Kondratiev 3022be7d22fSVladimir Kondratiev enum wmi_connect_ctrl_flag_bits { 303b874ddecSLior David WMI_CONNECT_ASSOC_POLICY_USER = 0x01, 304b874ddecSLior David WMI_CONNECT_SEND_REASSOC = 0x02, 305b874ddecSLior David WMI_CONNECT_IGNORE_WPA_GROUP_CIPHER = 0x04, 306b874ddecSLior David WMI_CONNECT_PROFILE_MATCH_DONE = 0x08, 307b874ddecSLior David WMI_CONNECT_IGNORE_AAC_BEACON = 0x10, 308b874ddecSLior David WMI_CONNECT_CSA_FOLLOW_BSS = 0x20, 309b874ddecSLior David WMI_CONNECT_DO_WPA_OFFLOAD = 0x40, 310b874ddecSLior David WMI_CONNECT_DO_NOT_DEAUTH = 0x80, 3112be7d22fSVladimir Kondratiev }; 3122be7d22fSVladimir Kondratiev 3132be7d22fSVladimir Kondratiev #define WMI_MAX_SSID_LEN (32) 3142be7d22fSVladimir Kondratiev 315b874ddecSLior David /* WMI_CONNECT_CMDID */ 3162be7d22fSVladimir Kondratiev struct wmi_connect_cmd { 3172be7d22fSVladimir Kondratiev u8 network_type; 3182be7d22fSVladimir Kondratiev u8 dot11_auth_mode; 3192be7d22fSVladimir Kondratiev u8 auth_mode; 3202be7d22fSVladimir Kondratiev u8 pairwise_crypto_type; 3212be7d22fSVladimir Kondratiev u8 pairwise_crypto_len; 3222be7d22fSVladimir Kondratiev u8 group_crypto_type; 3232be7d22fSVladimir Kondratiev u8 group_crypto_len; 3242be7d22fSVladimir Kondratiev u8 ssid_len; 3252be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 3262be7d22fSVladimir Kondratiev u8 channel; 3272be7d22fSVladimir Kondratiev u8 reserved0; 3282be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 3292be7d22fSVladimir Kondratiev __le32 ctrl_flags; 3302be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 3312be7d22fSVladimir Kondratiev u8 reserved1[2]; 3322be7d22fSVladimir Kondratiev } __packed; 3332be7d22fSVladimir Kondratiev 334b874ddecSLior David /* WMI_DISCONNECT_STA_CMDID */ 335b8023177SVladimir Kondratiev struct wmi_disconnect_sta_cmd { 336b8023177SVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 337b8023177SVladimir Kondratiev __le16 disconnect_reason; 338b8023177SVladimir Kondratiev } __packed; 3392be7d22fSVladimir Kondratiev 3402be7d22fSVladimir Kondratiev #define WMI_MAX_KEY_INDEX (3) 3412be7d22fSVladimir Kondratiev #define WMI_MAX_KEY_LEN (32) 3422be7d22fSVladimir Kondratiev #define WMI_PASSPHRASE_LEN (64) 3432be7d22fSVladimir Kondratiev 344b874ddecSLior David /* WMI_SET_PASSPHRASE_CMDID */ 3452be7d22fSVladimir Kondratiev struct wmi_set_passphrase_cmd { 3462be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 3472be7d22fSVladimir Kondratiev u8 passphrase[WMI_PASSPHRASE_LEN]; 3482be7d22fSVladimir Kondratiev u8 ssid_len; 3492be7d22fSVladimir Kondratiev u8 passphrase_len; 3502be7d22fSVladimir Kondratiev } __packed; 3512be7d22fSVladimir Kondratiev 352b874ddecSLior David /* WMI_ADD_CIPHER_KEY_CMDID */ 3532be7d22fSVladimir Kondratiev enum wmi_key_usage { 354b874ddecSLior David WMI_KEY_USE_PAIRWISE = 0x00, 355b874ddecSLior David WMI_KEY_USE_RX_GROUP = 0x01, 356b874ddecSLior David WMI_KEY_USE_TX_GROUP = 0x02, 3572be7d22fSVladimir Kondratiev }; 3582be7d22fSVladimir Kondratiev 3592be7d22fSVladimir Kondratiev struct wmi_add_cipher_key_cmd { 3602be7d22fSVladimir Kondratiev u8 key_index; 3612be7d22fSVladimir Kondratiev u8 key_type; 362b874ddecSLior David /* enum wmi_key_usage */ 363b874ddecSLior David u8 key_usage; 3642be7d22fSVladimir Kondratiev u8 key_len; 365b874ddecSLior David /* key replay sequence counter */ 366b874ddecSLior David u8 key_rsc[8]; 3672be7d22fSVladimir Kondratiev u8 key[WMI_MAX_KEY_LEN]; 368b874ddecSLior David /* Additional Key Control information */ 369b874ddecSLior David u8 key_op_ctrl; 3702be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 3712be7d22fSVladimir Kondratiev } __packed; 3722be7d22fSVladimir Kondratiev 373b874ddecSLior David /* WMI_DELETE_CIPHER_KEY_CMDID */ 3742be7d22fSVladimir Kondratiev struct wmi_delete_cipher_key_cmd { 3752be7d22fSVladimir Kondratiev u8 key_index; 3762be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 3772be7d22fSVladimir Kondratiev } __packed; 3782be7d22fSVladimir Kondratiev 379b874ddecSLior David /* WMI_START_SCAN_CMDID 3802be7d22fSVladimir Kondratiev * 3812be7d22fSVladimir Kondratiev * Start L1 scan operation 3822be7d22fSVladimir Kondratiev * 3832be7d22fSVladimir Kondratiev * Returned events: 3842be7d22fSVladimir Kondratiev * - WMI_RX_MGMT_PACKET_EVENTID - for every probe resp. 3852be7d22fSVladimir Kondratiev * - WMI_SCAN_COMPLETE_EVENTID 3862be7d22fSVladimir Kondratiev */ 3872be7d22fSVladimir Kondratiev enum wmi_scan_type { 388b874ddecSLior David WMI_ACTIVE_SCAN = 0x00, 389b874ddecSLior David WMI_SHORT_SCAN = 0x01, 390b874ddecSLior David WMI_PASSIVE_SCAN = 0x02, 391b874ddecSLior David WMI_DIRECT_SCAN = 0x03, 392b874ddecSLior David WMI_LONG_SCAN = 0x04, 3932be7d22fSVladimir Kondratiev }; 3942be7d22fSVladimir Kondratiev 395b874ddecSLior David /* WMI_START_SCAN_CMDID */ 3962be7d22fSVladimir Kondratiev struct wmi_start_scan_cmd { 397b874ddecSLior David u8 direct_scan_mac_addr[WMI_MAC_LEN]; 3980163b031SMaya Erez /* run scan with discovery beacon. Relevant for ACTIVE scan only. */ 39974997a53SLior David u8 discovery_mode; 40074997a53SLior David u8 reserved; 401b874ddecSLior David /* Max duration in the home channel(ms) */ 402b874ddecSLior David __le32 dwell_time; 403b874ddecSLior David /* Time interval between scans (ms) */ 404b874ddecSLior David __le32 force_scan_interval; 405b874ddecSLior David /* enum wmi_scan_type */ 406b874ddecSLior David u8 scan_type; 407b874ddecSLior David /* how many channels follow */ 408b874ddecSLior David u8 num_channels; 409b874ddecSLior David /* channels ID's: 410b874ddecSLior David * 0 - 58320 MHz 411b874ddecSLior David * 1 - 60480 MHz 412b874ddecSLior David * 2 - 62640 MHz 413b874ddecSLior David */ 4142be7d22fSVladimir Kondratiev struct { 4152be7d22fSVladimir Kondratiev u8 channel; 4162be7d22fSVladimir Kondratiev u8 reserved; 417b874ddecSLior David } channel_list[0]; 4182be7d22fSVladimir Kondratiev } __packed; 4192be7d22fSVladimir Kondratiev 420a5dc6883SDedy Lansky #define WMI_MAX_PNO_SSID_NUM (16) 421a5dc6883SDedy Lansky #define WMI_MAX_CHANNEL_NUM (6) 422a5dc6883SDedy Lansky #define WMI_MAX_PLANS_NUM (2) 423a5dc6883SDedy Lansky 424a5dc6883SDedy Lansky /* WMI_START_SCHED_SCAN_CMDID */ 425a5dc6883SDedy Lansky struct wmi_sched_scan_ssid_match { 426a5dc6883SDedy Lansky u8 ssid_len; 427a5dc6883SDedy Lansky u8 ssid[WMI_MAX_SSID_LEN]; 428a5dc6883SDedy Lansky s8 rssi_threshold; 429a5dc6883SDedy Lansky /* boolean */ 430a5dc6883SDedy Lansky u8 add_ssid_to_probe; 431a5dc6883SDedy Lansky u8 reserved; 432a5dc6883SDedy Lansky } __packed; 433a5dc6883SDedy Lansky 434a5dc6883SDedy Lansky /* WMI_START_SCHED_SCAN_CMDID */ 435a5dc6883SDedy Lansky struct wmi_sched_scan_plan { 436a5dc6883SDedy Lansky __le16 interval_sec; 437a5dc6883SDedy Lansky __le16 num_of_iterations; 438a5dc6883SDedy Lansky } __packed; 439a5dc6883SDedy Lansky 440a5dc6883SDedy Lansky /* WMI_START_SCHED_SCAN_CMDID */ 441a5dc6883SDedy Lansky struct wmi_start_sched_scan_cmd { 442a5dc6883SDedy Lansky struct wmi_sched_scan_ssid_match ssid_for_match[WMI_MAX_PNO_SSID_NUM]; 443a5dc6883SDedy Lansky u8 num_of_ssids; 444a5dc6883SDedy Lansky s8 min_rssi_threshold; 445a5dc6883SDedy Lansky u8 channel_list[WMI_MAX_CHANNEL_NUM]; 446a5dc6883SDedy Lansky u8 num_of_channels; 447a5dc6883SDedy Lansky u8 reserved; 448a5dc6883SDedy Lansky __le16 initial_delay_sec; 449a5dc6883SDedy Lansky struct wmi_sched_scan_plan scan_plans[WMI_MAX_PLANS_NUM]; 450a5dc6883SDedy Lansky } __packed; 451a5dc6883SDedy Lansky 452b874ddecSLior David /* WMI_SET_PROBED_SSID_CMDID */ 453b8023177SVladimir Kondratiev #define MAX_PROBED_SSID_INDEX (3) 4542be7d22fSVladimir Kondratiev 4552be7d22fSVladimir Kondratiev enum wmi_ssid_flag { 456b874ddecSLior David /* disables entry */ 457b874ddecSLior David WMI_SSID_FLAG_DISABLE = 0x00, 458b874ddecSLior David /* probes specified ssid */ 459b874ddecSLior David WMI_SSID_FLAG_SPECIFIC = 0x01, 460b874ddecSLior David /* probes for any ssid */ 461b874ddecSLior David WMI_SSID_FLAG_ANY = 0x02, 4622be7d22fSVladimir Kondratiev }; 4632be7d22fSVladimir Kondratiev 4642be7d22fSVladimir Kondratiev struct wmi_probed_ssid_cmd { 465b874ddecSLior David /* 0 to MAX_PROBED_SSID_INDEX */ 466b874ddecSLior David u8 entry_index; 467b874ddecSLior David /* enum wmi_ssid_flag */ 468b874ddecSLior David u8 flag; 4692be7d22fSVladimir Kondratiev u8 ssid_len; 4702be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 4712be7d22fSVladimir Kondratiev } __packed; 4722be7d22fSVladimir Kondratiev 473b874ddecSLior David /* WMI_SET_APPIE_CMDID 4742be7d22fSVladimir Kondratiev * Add Application specified IE to a management frame 4752be7d22fSVladimir Kondratiev */ 476b8023177SVladimir Kondratiev #define WMI_MAX_IE_LEN (1024) 477b8023177SVladimir Kondratiev 478b874ddecSLior David /* Frame Types */ 479b8023177SVladimir Kondratiev enum wmi_mgmt_frame_type { 480b874ddecSLior David WMI_FRAME_BEACON = 0x00, 481b874ddecSLior David WMI_FRAME_PROBE_REQ = 0x01, 482b874ddecSLior David WMI_FRAME_PROBE_RESP = 0x02, 483b874ddecSLior David WMI_FRAME_ASSOC_REQ = 0x03, 484b874ddecSLior David WMI_FRAME_ASSOC_RESP = 0x04, 485b874ddecSLior David WMI_NUM_MGMT_FRAME = 0x05, 486b8023177SVladimir Kondratiev }; 487b8023177SVladimir Kondratiev 4882be7d22fSVladimir Kondratiev struct wmi_set_appie_cmd { 489b874ddecSLior David /* enum wmi_mgmt_frame_type */ 490b874ddecSLior David u8 mgmt_frm_type; 4912be7d22fSVladimir Kondratiev u8 reserved; 492b874ddecSLior David /* Length of the IE to be added to MGMT frame */ 493b874ddecSLior David __le16 ie_len; 4942be7d22fSVladimir Kondratiev u8 ie_info[0]; 4952be7d22fSVladimir Kondratiev } __packed; 4962be7d22fSVladimir Kondratiev 497b874ddecSLior David /* WMI_PXMT_RANGE_CFG_CMDID */ 4982be7d22fSVladimir Kondratiev struct wmi_pxmt_range_cfg_cmd { 4992be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 5002be7d22fSVladimir Kondratiev __le16 range; 5012be7d22fSVladimir Kondratiev } __packed; 5022be7d22fSVladimir Kondratiev 503b874ddecSLior David /* WMI_PXMT_SNR2_RANGE_CFG_CMDID */ 5042be7d22fSVladimir Kondratiev struct wmi_pxmt_snr2_range_cfg_cmd { 505b874ddecSLior David s8 snr2range_arr[2]; 5062be7d22fSVladimir Kondratiev } __packed; 5072be7d22fSVladimir Kondratiev 508b874ddecSLior David /* WMI_RF_MGMT_CMDID */ 5092be7d22fSVladimir Kondratiev enum wmi_rf_mgmt_type { 510b874ddecSLior David WMI_RF_MGMT_W_DISABLE = 0x00, 511b874ddecSLior David WMI_RF_MGMT_W_ENABLE = 0x01, 512b874ddecSLior David WMI_RF_MGMT_GET_STATUS = 0x02, 5132be7d22fSVladimir Kondratiev }; 5142be7d22fSVladimir Kondratiev 5158a4fa214SAhmad Masri /* WMI_BF_CONTROL_CMDID */ 5168a4fa214SAhmad Masri enum wmi_bf_triggers { 5178a4fa214SAhmad Masri WMI_BF_TRIGGER_RS_MCS1_TH_FAILURE = 0x01, 5188a4fa214SAhmad Masri WMI_BF_TRIGGER_RS_MCS1_NO_BACK_FAILURE = 0x02, 5198a4fa214SAhmad Masri WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_TXOP = 0x04, 5208a4fa214SAhmad Masri WMI_BF_TRIGGER_MAX_BACK_FAILURE = 0x08, 5218a4fa214SAhmad Masri WMI_BF_TRIGGER_FW = 0x10, 5228a4fa214SAhmad Masri WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_KEEP_ALIVE = 0x20, 5238a4fa214SAhmad Masri WMI_BF_TRIGGER_AOA = 0x40, 5248a4fa214SAhmad Masri WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_UPM = 0x80, 5258a4fa214SAhmad Masri }; 5268a4fa214SAhmad Masri 527b874ddecSLior David /* WMI_RF_MGMT_CMDID */ 5282be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_cmd { 5292be7d22fSVladimir Kondratiev __le32 rf_mgmt_type; 5302be7d22fSVladimir Kondratiev } __packed; 5312be7d22fSVladimir Kondratiev 532b874ddecSLior David /* WMI_CORR_MEASURE_CMDID */ 533b8023177SVladimir Kondratiev struct wmi_corr_measure_cmd { 534b874ddecSLior David __le32 freq_mhz; 535b8023177SVladimir Kondratiev __le32 length_samples; 536b8023177SVladimir Kondratiev __le32 iterations; 537b8023177SVladimir Kondratiev } __packed; 538b8023177SVladimir Kondratiev 539b874ddecSLior David /* WMI_SET_SSID_CMDID */ 5402be7d22fSVladimir Kondratiev struct wmi_set_ssid_cmd { 5412be7d22fSVladimir Kondratiev __le32 ssid_len; 5422be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 5432be7d22fSVladimir Kondratiev } __packed; 5442be7d22fSVladimir Kondratiev 545b874ddecSLior David /* WMI_SET_PCP_CHANNEL_CMDID */ 5462be7d22fSVladimir Kondratiev struct wmi_set_pcp_channel_cmd { 5472be7d22fSVladimir Kondratiev u8 channel; 5482be7d22fSVladimir Kondratiev u8 reserved[3]; 5492be7d22fSVladimir Kondratiev } __packed; 5502be7d22fSVladimir Kondratiev 551b874ddecSLior David /* WMI_BCON_CTRL_CMDID */ 5522be7d22fSVladimir Kondratiev struct wmi_bcon_ctrl_cmd { 5532be7d22fSVladimir Kondratiev __le16 bcon_interval; 5542be7d22fSVladimir Kondratiev __le16 frag_num; 5552be7d22fSVladimir Kondratiev __le64 ss_mask; 5562be7d22fSVladimir Kondratiev u8 network_type; 5576c2faf09SVladimir Kondratiev u8 pcp_max_assoc_sta; 5582be7d22fSVladimir Kondratiev u8 disable_sec_offload; 5592be7d22fSVladimir Kondratiev u8 disable_sec; 560b874ddecSLior David u8 hidden_ssid; 561b874ddecSLior David u8 is_go; 5628a4fa214SAhmad Masri /* A-BFT length override if non-0 */ 5638a4fa214SAhmad Masri u8 abft_len; 5648a4fa214SAhmad Masri u8 reserved; 5652be7d22fSVladimir Kondratiev } __packed; 5662be7d22fSVladimir Kondratiev 567b874ddecSLior David /* WMI_PORT_ALLOCATE_CMDID */ 568b8023177SVladimir Kondratiev enum wmi_port_role { 569b874ddecSLior David WMI_PORT_STA = 0x00, 570b874ddecSLior David WMI_PORT_PCP = 0x01, 571b874ddecSLior David WMI_PORT_AP = 0x02, 572b874ddecSLior David WMI_PORT_P2P_DEV = 0x03, 573b874ddecSLior David WMI_PORT_P2P_CLIENT = 0x04, 574b874ddecSLior David WMI_PORT_P2P_GO = 0x05, 575b8023177SVladimir Kondratiev }; 576b8023177SVladimir Kondratiev 577b874ddecSLior David /* WMI_PORT_ALLOCATE_CMDID */ 578b8023177SVladimir Kondratiev struct wmi_port_allocate_cmd { 579b8023177SVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 580b8023177SVladimir Kondratiev u8 port_role; 5816c2faf09SVladimir Kondratiev u8 mid; 582b8023177SVladimir Kondratiev } __packed; 583b8023177SVladimir Kondratiev 584b874ddecSLior David /* WMI_PORT_DELETE_CMDID */ 585b874ddecSLior David struct wmi_port_delete_cmd { 586b8023177SVladimir Kondratiev u8 mid; 587b8023177SVladimir Kondratiev u8 reserved[3]; 588b8023177SVladimir Kondratiev } __packed; 589b8023177SVladimir Kondratiev 590fe9ee51eSMaya Erez /* WMI_TRAFFIC_SUSPEND_CMD wakeup trigger bit mask values */ 591fe9ee51eSMaya Erez enum wmi_wakeup_trigger { 592fe9ee51eSMaya Erez WMI_WAKEUP_TRIGGER_UCAST = 0x01, 593fe9ee51eSMaya Erez WMI_WAKEUP_TRIGGER_BCAST = 0x02, 594fe9ee51eSMaya Erez }; 595fe9ee51eSMaya Erez 596fe9ee51eSMaya Erez /* WMI_TRAFFIC_SUSPEND_CMDID */ 597fe9ee51eSMaya Erez struct wmi_traffic_suspend_cmd { 5980163b031SMaya Erez /* Bit vector: bit[0] - wake on Unicast, bit[1] - wake on Broadcast */ 5990163b031SMaya Erez u8 wakeup_trigger; 6000163b031SMaya Erez } __packed; 6010163b031SMaya Erez 602b874ddecSLior David /* WMI_P2P_CFG_CMDID */ 603b8023177SVladimir Kondratiev enum wmi_discovery_mode { 604b874ddecSLior David WMI_DISCOVERY_MODE_NON_OFFLOAD = 0x00, 605b874ddecSLior David WMI_DISCOVERY_MODE_OFFLOAD = 0x01, 606b874ddecSLior David WMI_DISCOVERY_MODE_PEER2PEER = 0x02, 607b8023177SVladimir Kondratiev }; 608b8023177SVladimir Kondratiev 609b8023177SVladimir Kondratiev struct wmi_p2p_cfg_cmd { 610b874ddecSLior David /* enum wmi_discovery_mode */ 611b874ddecSLior David u8 discovery_mode; 612b8023177SVladimir Kondratiev u8 channel; 613b874ddecSLior David /* base to listen/search duration calculation */ 614b874ddecSLior David __le16 bcon_interval; 615b8023177SVladimir Kondratiev } __packed; 616b8023177SVladimir Kondratiev 617b874ddecSLior David /* WMI_POWER_MGMT_CFG_CMDID */ 618b8023177SVladimir Kondratiev enum wmi_power_source_type { 619b874ddecSLior David WMI_POWER_SOURCE_BATTERY = 0x00, 620b874ddecSLior David WMI_POWER_SOURCE_OTHER = 0x01, 621b8023177SVladimir Kondratiev }; 622b8023177SVladimir Kondratiev 623b8023177SVladimir Kondratiev struct wmi_power_mgmt_cfg_cmd { 624b874ddecSLior David /* enum wmi_power_source_type */ 625b874ddecSLior David u8 power_source; 626b8023177SVladimir Kondratiev u8 reserved[3]; 627b8023177SVladimir Kondratiev } __packed; 628b8023177SVladimir Kondratiev 629b874ddecSLior David /* WMI_PCP_START_CMDID */ 6308a4fa214SAhmad Masri enum wmi_ap_sme_offload_mode { 6318a4fa214SAhmad Masri /* Full AP SME in FW */ 6328a4fa214SAhmad Masri WMI_AP_SME_OFFLOAD_FULL = 0x00, 6338a4fa214SAhmad Masri /* Probe AP SME in FW */ 6348a4fa214SAhmad Masri WMI_AP_SME_OFFLOAD_PARTIAL = 0x01, 6358a4fa214SAhmad Masri /* AP SME in host */ 6368a4fa214SAhmad Masri WMI_AP_SME_OFFLOAD_NONE = 0x02, 6378a4fa214SAhmad Masri }; 6388a4fa214SAhmad Masri 6398a4fa214SAhmad Masri /* WMI_PCP_START_CMDID */ 640b8023177SVladimir Kondratiev struct wmi_pcp_start_cmd { 641b8023177SVladimir Kondratiev __le16 bcon_interval; 6426c2faf09SVladimir Kondratiev u8 pcp_max_assoc_sta; 6438e52fe30SHamad Kadmany u8 hidden_ssid; 644b874ddecSLior David u8 is_go; 645a52fb913SLior David u8 reserved0[5]; 64690ffabb0SDedy Lansky /* A-BFT length override if non-0 */ 647a52fb913SLior David u8 abft_len; 6488a4fa214SAhmad Masri /* enum wmi_ap_sme_offload_mode_e */ 6498a4fa214SAhmad Masri u8 ap_sme_offload_mode; 650b8023177SVladimir Kondratiev u8 network_type; 651b8023177SVladimir Kondratiev u8 channel; 652b8023177SVladimir Kondratiev u8 disable_sec_offload; 653b8023177SVladimir Kondratiev u8 disable_sec; 654b8023177SVladimir Kondratiev } __packed; 655b8023177SVladimir Kondratiev 656b874ddecSLior David /* WMI_SW_TX_REQ_CMDID */ 6572be7d22fSVladimir Kondratiev struct wmi_sw_tx_req_cmd { 6582be7d22fSVladimir Kondratiev u8 dst_mac[WMI_MAC_LEN]; 6592be7d22fSVladimir Kondratiev __le16 len; 6602be7d22fSVladimir Kondratiev u8 payload[0]; 6612be7d22fSVladimir Kondratiev } __packed; 6622be7d22fSVladimir Kondratiev 6638a4fa214SAhmad Masri /* WMI_VRING_SWITCH_TIMING_CONFIG_CMDID */ 6648a4fa214SAhmad Masri struct wmi_vring_switch_timing_config_cmd { 6658a4fa214SAhmad Masri /* Set vring timing configuration: 6668a4fa214SAhmad Masri * 6678a4fa214SAhmad Masri * defined interval for vring switch 6688a4fa214SAhmad Masri */ 6698a4fa214SAhmad Masri __le32 interval_usec; 6708a4fa214SAhmad Masri /* vring inactivity threshold */ 6718a4fa214SAhmad Masri __le32 idle_th_usec; 6728a4fa214SAhmad Masri } __packed; 6738a4fa214SAhmad Masri 6742be7d22fSVladimir Kondratiev struct wmi_sw_ring_cfg { 6752be7d22fSVladimir Kondratiev __le64 ring_mem_base; 6762be7d22fSVladimir Kondratiev __le16 ring_size; 6772be7d22fSVladimir Kondratiev __le16 max_mpdu_size; 6782be7d22fSVladimir Kondratiev } __packed; 6792be7d22fSVladimir Kondratiev 680b874ddecSLior David /* wmi_vring_cfg_schd */ 6812be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd { 6822be7d22fSVladimir Kondratiev __le16 priority; 6832be7d22fSVladimir Kondratiev __le16 timeslot_us; 6842be7d22fSVladimir Kondratiev } __packed; 6852be7d22fSVladimir Kondratiev 6862be7d22fSVladimir Kondratiev enum wmi_vring_cfg_encap_trans_type { 687b874ddecSLior David WMI_VRING_ENC_TYPE_802_3 = 0x00, 688b874ddecSLior David WMI_VRING_ENC_TYPE_NATIVE_WIFI = 0x01, 6892be7d22fSVladimir Kondratiev }; 6902be7d22fSVladimir Kondratiev 6912be7d22fSVladimir Kondratiev enum wmi_vring_cfg_ds_cfg { 692b874ddecSLior David WMI_VRING_DS_PBSS = 0x00, 693b874ddecSLior David WMI_VRING_DS_STATION = 0x01, 694b874ddecSLior David WMI_VRING_DS_AP = 0x02, 695b874ddecSLior David WMI_VRING_DS_ADDR4 = 0x03, 6962be7d22fSVladimir Kondratiev }; 6972be7d22fSVladimir Kondratiev 6982be7d22fSVladimir Kondratiev enum wmi_vring_cfg_nwifi_ds_trans_type { 699b874ddecSLior David WMI_NWIFI_TX_TRANS_MODE_NO = 0x00, 700b874ddecSLior David WMI_NWIFI_TX_TRANS_MODE_AP2PBSS = 0x01, 701b874ddecSLior David WMI_NWIFI_TX_TRANS_MODE_STA2PBSS = 0x02, 7022be7d22fSVladimir Kondratiev }; 7032be7d22fSVladimir Kondratiev 7042be7d22fSVladimir Kondratiev enum wmi_vring_cfg_schd_params_priority { 705b874ddecSLior David WMI_SCH_PRIO_REGULAR = 0x00, 706b874ddecSLior David WMI_SCH_PRIO_HIGH = 0x01, 7072be7d22fSVladimir Kondratiev }; 7082be7d22fSVladimir Kondratiev 7098a4fa214SAhmad Masri #define CIDXTID_EXTENDED_CID_TID (0xFF) 7102be7d22fSVladimir Kondratiev #define CIDXTID_CID_POS (0) 7112be7d22fSVladimir Kondratiev #define CIDXTID_CID_LEN (4) 7122be7d22fSVladimir Kondratiev #define CIDXTID_CID_MSK (0xF) 7132be7d22fSVladimir Kondratiev #define CIDXTID_TID_POS (4) 7142be7d22fSVladimir Kondratiev #define CIDXTID_TID_LEN (4) 7152be7d22fSVladimir Kondratiev #define CIDXTID_TID_MSK (0xF0) 7162be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_POS (0) 7172be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_LEN (1) 7182be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_LIFETIME_EN_MSK (0x1) 7192be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_POS (1) 7202be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_LEN (1) 7212be7d22fSVladimir Kondratiev #define VRING_CFG_MAC_CTRL_AGGR_EN_MSK (0x2) 7222be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_POS (0) 7232be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_LEN (6) 7242be7d22fSVladimir Kondratiev #define VRING_CFG_TO_RESOLUTION_VALUE_MSK (0x3F) 725b874ddecSLior David 726b874ddecSLior David struct wmi_vring_cfg { 727b874ddecSLior David struct wmi_sw_ring_cfg tx_sw_ring; 728b874ddecSLior David /* 0-23 vrings */ 729b874ddecSLior David u8 ringid; 7308a4fa214SAhmad Masri /* Used for cid less than 8. For higher cid set 7318a4fa214SAhmad Masri * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead 7328a4fa214SAhmad Masri */ 733b874ddecSLior David u8 cidxtid; 734b874ddecSLior David u8 encap_trans_type; 735b874ddecSLior David /* 802.3 DS cfg */ 736b874ddecSLior David u8 ds_cfg; 737b874ddecSLior David u8 nwifi_ds_trans_type; 738b874ddecSLior David u8 mac_ctrl; 7392be7d22fSVladimir Kondratiev u8 to_resolution; 7402be7d22fSVladimir Kondratiev u8 agg_max_wsize; 7412be7d22fSVladimir Kondratiev struct wmi_vring_cfg_schd schd_params; 7428a4fa214SAhmad Masri /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ 7438a4fa214SAhmad Masri u8 cid; 7448a4fa214SAhmad Masri /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ 7458a4fa214SAhmad Masri u8 tid; 7468a4fa214SAhmad Masri u8 reserved[2]; 7472be7d22fSVladimir Kondratiev } __packed; 7482be7d22fSVladimir Kondratiev 7492be7d22fSVladimir Kondratiev enum wmi_vring_cfg_cmd_action { 750b874ddecSLior David WMI_VRING_CMD_ADD = 0x00, 751b874ddecSLior David WMI_VRING_CMD_MODIFY = 0x01, 752b874ddecSLior David WMI_VRING_CMD_DELETE = 0x02, 7532be7d22fSVladimir Kondratiev }; 7542be7d22fSVladimir Kondratiev 755b874ddecSLior David /* WMI_VRING_CFG_CMDID */ 7562be7d22fSVladimir Kondratiev struct wmi_vring_cfg_cmd { 7572be7d22fSVladimir Kondratiev __le32 action; 7582be7d22fSVladimir Kondratiev struct wmi_vring_cfg vring_cfg; 7592be7d22fSVladimir Kondratiev } __packed; 7602be7d22fSVladimir Kondratiev 76162bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg { 76262bfd300SVladimir Kondratiev struct wmi_sw_ring_cfg tx_sw_ring; 763b874ddecSLior David /* 0-23 vrings */ 764b874ddecSLior David u8 ringid; 76562bfd300SVladimir Kondratiev u8 encap_trans_type; 766b874ddecSLior David /* 802.3 DS cfg */ 767b874ddecSLior David u8 ds_cfg; 76862bfd300SVladimir Kondratiev u8 nwifi_ds_trans_type; 76962bfd300SVladimir Kondratiev } __packed; 77062bfd300SVladimir Kondratiev 771b874ddecSLior David /* WMI_BCAST_VRING_CFG_CMDID */ 77262bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg_cmd { 77362bfd300SVladimir Kondratiev __le32 action; 77462bfd300SVladimir Kondratiev struct wmi_bcast_vring_cfg vring_cfg; 77562bfd300SVladimir Kondratiev } __packed; 77662bfd300SVladimir Kondratiev 777761f8e4dSLazar Alexei /* WMI_LO_POWER_CALIB_FROM_OTP_CMDID */ 778761f8e4dSLazar Alexei struct wmi_lo_power_calib_from_otp_cmd { 779761f8e4dSLazar Alexei /* index to read from OTP. zero based */ 780761f8e4dSLazar Alexei u8 index; 781761f8e4dSLazar Alexei u8 reserved[3]; 782761f8e4dSLazar Alexei } __packed; 783761f8e4dSLazar Alexei 784761f8e4dSLazar Alexei /* WMI_LO_POWER_CALIB_FROM_OTP_EVENTID */ 785761f8e4dSLazar Alexei struct wmi_lo_power_calib_from_otp_event { 786761f8e4dSLazar Alexei /* wmi_fw_status */ 787761f8e4dSLazar Alexei u8 status; 788761f8e4dSLazar Alexei u8 reserved[3]; 789761f8e4dSLazar Alexei } __packed; 790761f8e4dSLazar Alexei 791*96c93589SGidon Studinski struct wmi_edma_ring_cfg { 792*96c93589SGidon Studinski __le64 ring_mem_base; 793*96c93589SGidon Studinski /* size in number of items */ 794*96c93589SGidon Studinski __le16 ring_size; 795*96c93589SGidon Studinski u8 ring_id; 796*96c93589SGidon Studinski u8 reserved; 797*96c93589SGidon Studinski } __packed; 798*96c93589SGidon Studinski 799*96c93589SGidon Studinski enum wmi_rx_msg_type { 800*96c93589SGidon Studinski WMI_RX_MSG_TYPE_COMPRESSED = 0x00, 801*96c93589SGidon Studinski WMI_RX_MSG_TYPE_EXTENDED = 0x01, 802*96c93589SGidon Studinski }; 803*96c93589SGidon Studinski 804*96c93589SGidon Studinski struct wmi_tx_status_ring_add_cmd { 805*96c93589SGidon Studinski struct wmi_edma_ring_cfg ring_cfg; 806*96c93589SGidon Studinski u8 irq_index; 807*96c93589SGidon Studinski u8 reserved[3]; 808*96c93589SGidon Studinski } __packed; 809*96c93589SGidon Studinski 810*96c93589SGidon Studinski struct wmi_rx_status_ring_add_cmd { 811*96c93589SGidon Studinski struct wmi_edma_ring_cfg ring_cfg; 812*96c93589SGidon Studinski u8 irq_index; 813*96c93589SGidon Studinski /* wmi_rx_msg_type */ 814*96c93589SGidon Studinski u8 rx_msg_type; 815*96c93589SGidon Studinski u8 reserved[2]; 816*96c93589SGidon Studinski } __packed; 817*96c93589SGidon Studinski 818*96c93589SGidon Studinski struct wmi_cfg_def_rx_offload_cmd { 819*96c93589SGidon Studinski __le16 max_msdu_size; 820*96c93589SGidon Studinski __le16 max_rx_pl_per_desc; 821*96c93589SGidon Studinski u8 decap_trans_type; 822*96c93589SGidon Studinski u8 l2_802_3_offload_ctrl; 823*96c93589SGidon Studinski u8 l2_nwifi_offload_ctrl; 824*96c93589SGidon Studinski u8 vlan_id; 825*96c93589SGidon Studinski u8 nwifi_ds_trans_type; 826*96c93589SGidon Studinski u8 l3_l4_ctrl; 827*96c93589SGidon Studinski u8 reserved[6]; 828*96c93589SGidon Studinski } __packed; 829*96c93589SGidon Studinski 830*96c93589SGidon Studinski struct wmi_tx_desc_ring_add_cmd { 831*96c93589SGidon Studinski struct wmi_edma_ring_cfg ring_cfg; 832*96c93589SGidon Studinski __le16 max_msdu_size; 833*96c93589SGidon Studinski /* Correlated status ring (0-63) */ 834*96c93589SGidon Studinski u8 status_ring_id; 835*96c93589SGidon Studinski u8 cid; 836*96c93589SGidon Studinski u8 tid; 837*96c93589SGidon Studinski u8 encap_trans_type; 838*96c93589SGidon Studinski u8 mac_ctrl; 839*96c93589SGidon Studinski u8 to_resolution; 840*96c93589SGidon Studinski u8 agg_max_wsize; 841*96c93589SGidon Studinski u8 reserved[3]; 842*96c93589SGidon Studinski struct wmi_vring_cfg_schd schd_params; 843*96c93589SGidon Studinski } __packed; 844*96c93589SGidon Studinski 845*96c93589SGidon Studinski struct wmi_rx_desc_ring_add_cmd { 846*96c93589SGidon Studinski struct wmi_edma_ring_cfg ring_cfg; 847*96c93589SGidon Studinski u8 irq_index; 848*96c93589SGidon Studinski /* 0-63 status rings */ 849*96c93589SGidon Studinski u8 status_ring_id; 850*96c93589SGidon Studinski u8 reserved[2]; 851*96c93589SGidon Studinski __le64 sw_tail_host_addr; 852*96c93589SGidon Studinski } __packed; 853*96c93589SGidon Studinski 854*96c93589SGidon Studinski struct wmi_bcast_desc_ring_add_cmd { 855*96c93589SGidon Studinski struct wmi_edma_ring_cfg ring_cfg; 856*96c93589SGidon Studinski __le16 max_msdu_size; 857*96c93589SGidon Studinski /* Correlated status ring (0-63) */ 858*96c93589SGidon Studinski u8 status_ring_id; 859*96c93589SGidon Studinski u8 encap_trans_type; 860*96c93589SGidon Studinski u8 reserved[4]; 861*96c93589SGidon Studinski } __packed; 862*96c93589SGidon Studinski 863*96c93589SGidon Studinski /* WMI_RING_BA_EN_CMDID */ 864*96c93589SGidon Studinski struct wmi_ring_ba_en_cmd { 865*96c93589SGidon Studinski u8 ring_id; 8662be7d22fSVladimir Kondratiev u8 agg_max_wsize; 8672be7d22fSVladimir Kondratiev __le16 ba_timeout; 868cbcf5866SVladimir Kondratiev u8 amsdu; 869b874ddecSLior David u8 reserved[3]; 8702be7d22fSVladimir Kondratiev } __packed; 8712be7d22fSVladimir Kondratiev 872*96c93589SGidon Studinski /* WMI_RING_BA_DIS_CMDID */ 873*96c93589SGidon Studinski struct wmi_ring_ba_dis_cmd { 874*96c93589SGidon Studinski u8 ring_id; 8752be7d22fSVladimir Kondratiev u8 reserved; 8762be7d22fSVladimir Kondratiev __le16 reason; 8772be7d22fSVladimir Kondratiev } __packed; 8782be7d22fSVladimir Kondratiev 879b874ddecSLior David /* WMI_NOTIFY_REQ_CMDID */ 8802be7d22fSVladimir Kondratiev struct wmi_notify_req_cmd { 8812be7d22fSVladimir Kondratiev u8 cid; 882b8023177SVladimir Kondratiev u8 year; 883b8023177SVladimir Kondratiev u8 month; 884b8023177SVladimir Kondratiev u8 day; 8852be7d22fSVladimir Kondratiev __le32 interval_usec; 886b8023177SVladimir Kondratiev u8 hour; 887b8023177SVladimir Kondratiev u8 minute; 888b8023177SVladimir Kondratiev u8 second; 889b8023177SVladimir Kondratiev u8 miliseconds; 8902be7d22fSVladimir Kondratiev } __packed; 8912be7d22fSVladimir Kondratiev 892b874ddecSLior David /* WMI_CFG_RX_CHAIN_CMDID */ 8932be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_mode { 894b874ddecSLior David WMI_SNIFFER_OFF = 0x00, 895b874ddecSLior David WMI_SNIFFER_ON = 0x01, 8962be7d22fSVladimir Kondratiev }; 8972be7d22fSVladimir Kondratiev 898761f8e4dSLazar Alexei /* WMI_SILENT_RSSI_TABLE */ 899761f8e4dSLazar Alexei enum wmi_silent_rssi_table { 900761f8e4dSLazar Alexei RF_TEMPERATURE_CALIB_DEFAULT_DB = 0x00, 901761f8e4dSLazar Alexei RF_TEMPERATURE_CALIB_HIGH_POWER_DB = 0x01, 902761f8e4dSLazar Alexei }; 903761f8e4dSLazar Alexei 904761f8e4dSLazar Alexei /* WMI_SILENT_RSSI_STATUS */ 905761f8e4dSLazar Alexei enum wmi_silent_rssi_status { 906761f8e4dSLazar Alexei SILENT_RSSI_SUCCESS = 0x00, 907761f8e4dSLazar Alexei SILENT_RSSI_FAILURE = 0x01, 908761f8e4dSLazar Alexei }; 909761f8e4dSLazar Alexei 910761f8e4dSLazar Alexei /* WMI_SET_ACTIVE_SILENT_RSSI_TABLE_CMDID */ 911761f8e4dSLazar Alexei struct wmi_set_active_silent_rssi_table_cmd { 912761f8e4dSLazar Alexei /* enum wmi_silent_rssi_table */ 913761f8e4dSLazar Alexei __le32 table; 914761f8e4dSLazar Alexei } __packed; 915761f8e4dSLazar Alexei 9162be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_info_mode { 917b874ddecSLior David WMI_SNIFFER_PHY_INFO_DISABLED = 0x00, 918b874ddecSLior David WMI_SNIFFER_PHY_INFO_ENABLED = 0x01, 9192be7d22fSVladimir Kondratiev }; 9202be7d22fSVladimir Kondratiev 9212be7d22fSVladimir Kondratiev enum wmi_sniffer_cfg_phy_support { 922b874ddecSLior David WMI_SNIFFER_CP = 0x00, 923b874ddecSLior David WMI_SNIFFER_DP = 0x01, 924b874ddecSLior David WMI_SNIFFER_BOTH_PHYS = 0x02, 9252be7d22fSVladimir Kondratiev }; 9262be7d22fSVladimir Kondratiev 927b874ddecSLior David /* wmi_sniffer_cfg */ 9282be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg { 929b874ddecSLior David /* enum wmi_sniffer_cfg_mode */ 930b874ddecSLior David __le32 mode; 931b874ddecSLior David /* enum wmi_sniffer_cfg_phy_info_mode */ 932b874ddecSLior David __le32 phy_info_mode; 933b874ddecSLior David /* enum wmi_sniffer_cfg_phy_support */ 934b874ddecSLior David __le32 phy_support; 9352be7d22fSVladimir Kondratiev u8 channel; 9362be7d22fSVladimir Kondratiev u8 reserved[3]; 9372be7d22fSVladimir Kondratiev } __packed; 9382be7d22fSVladimir Kondratiev 9392be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_action { 940b874ddecSLior David WMI_RX_CHAIN_ADD = 0x00, 941b874ddecSLior David WMI_RX_CHAIN_DEL = 0x01, 9422be7d22fSVladimir Kondratiev }; 9432be7d22fSVladimir Kondratiev 9442be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_decap_trans_type { 945b874ddecSLior David WMI_DECAP_TYPE_802_3 = 0x00, 946b874ddecSLior David WMI_DECAP_TYPE_NATIVE_WIFI = 0x01, 947b874ddecSLior David WMI_DECAP_TYPE_NONE = 0x02, 9482be7d22fSVladimir Kondratiev }; 9492be7d22fSVladimir Kondratiev 9502be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_nwifi_ds_trans_type { 951b874ddecSLior David WMI_NWIFI_RX_TRANS_MODE_NO = 0x00, 952b874ddecSLior David WMI_NWIFI_RX_TRANS_MODE_PBSS2AP = 0x01, 953b874ddecSLior David WMI_NWIFI_RX_TRANS_MODE_PBSS2STA = 0x02, 9542be7d22fSVladimir Kondratiev }; 9552be7d22fSVladimir Kondratiev 956b8023177SVladimir Kondratiev enum wmi_cfg_rx_chain_cmd_reorder_type { 957b874ddecSLior David WMI_RX_HW_REORDER = 0x00, 958b874ddecSLior David WMI_RX_SW_REORDER = 0x01, 959b8023177SVladimir Kondratiev }; 960b8023177SVladimir Kondratiev 9612be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_POS (0) 9622be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_LEN (1) 9632be7d22fSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_MSK (0x1) 964c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_POS (1) 965c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_LEN (1) 966c406ea7cSVladimir Kondratiev #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_MSK (0x2) 9672be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_POS (0) 9682be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_LEN (1) 9692be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_MSK (0x1) 9702be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_POS (1) 9712be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_LEN (1) 9722be7d22fSVladimir Kondratiev #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_MSK (0x2) 9732be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_POS (0) 9742be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_LEN (1) 9752be7d22fSVladimir Kondratiev #define L3_L4_CTRL_IPV4_CHECKSUM_EN_MSK (0x1) 9762be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_POS (1) 9772be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_LEN (1) 9782be7d22fSVladimir Kondratiev #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_MSK (0x2) 9792be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_POS (0) 9802be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_LEN (1) 9812be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_MSK (0x1) 9822be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_POS (1) 9832be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_LEN (1) 9842be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_WB_THRSH_MSK (0x2) 9852be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_POS (2) 9862be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_LEN (1) 9872be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_ITR_THRSH_MSK (0x4) 9882be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_POS (3) 9892be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_LEN (1) 9902be7d22fSVladimir Kondratiev #define RING_CTRL_OVERRIDE_HOST_THRSH_MSK (0x8) 9912be7d22fSVladimir Kondratiev 992b874ddecSLior David /* WMI_CFG_RX_CHAIN_CMDID */ 993b874ddecSLior David struct wmi_cfg_rx_chain_cmd { 994b874ddecSLior David __le32 action; 995b874ddecSLior David struct wmi_sw_ring_cfg rx_sw_ring; 996b874ddecSLior David u8 mid; 997b874ddecSLior David u8 decap_trans_type; 998b874ddecSLior David u8 l2_802_3_offload_ctrl; 999b874ddecSLior David u8 l2_nwifi_offload_ctrl; 1000b874ddecSLior David u8 vlan_id; 1001b874ddecSLior David u8 nwifi_ds_trans_type; 1002b874ddecSLior David u8 l3_l4_ctrl; 1003b874ddecSLior David u8 ring_ctrl; 10042be7d22fSVladimir Kondratiev __le16 prefetch_thrsh; 10052be7d22fSVladimir Kondratiev __le16 wb_thrsh; 10062be7d22fSVladimir Kondratiev __le32 itr_value; 10072be7d22fSVladimir Kondratiev __le16 host_thrsh; 1008b8023177SVladimir Kondratiev u8 reorder_type; 1009b8023177SVladimir Kondratiev u8 reserved; 10102be7d22fSVladimir Kondratiev struct wmi_sniffer_cfg sniffer_cfg; 1011b874ddecSLior David __le16 max_rx_pl_per_desc; 10122be7d22fSVladimir Kondratiev } __packed; 10132be7d22fSVladimir Kondratiev 1014b874ddecSLior David /* WMI_RCP_ADDBA_RESP_CMDID */ 10152be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_cmd { 10168a4fa214SAhmad Masri /* Used for cid less than 8. For higher cid set 10178a4fa214SAhmad Masri * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead 10188a4fa214SAhmad Masri */ 10192be7d22fSVladimir Kondratiev u8 cidxtid; 10202be7d22fSVladimir Kondratiev u8 dialog_token; 10212be7d22fSVladimir Kondratiev __le16 status_code; 1022b874ddecSLior David /* ieee80211_ba_parameterset field to send */ 1023b874ddecSLior David __le16 ba_param_set; 10242be7d22fSVladimir Kondratiev __le16 ba_timeout; 10258a4fa214SAhmad Masri /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ 10268a4fa214SAhmad Masri u8 cid; 10278a4fa214SAhmad Masri /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ 10288a4fa214SAhmad Masri u8 tid; 10298a4fa214SAhmad Masri u8 reserved[2]; 10302be7d22fSVladimir Kondratiev } __packed; 10312be7d22fSVladimir Kondratiev 1032*96c93589SGidon Studinski /* WMI_RCP_ADDBA_RESP_EDMA_CMDID */ 1033*96c93589SGidon Studinski struct wmi_rcp_addba_resp_edma_cmd { 1034*96c93589SGidon Studinski u8 cid; 1035*96c93589SGidon Studinski u8 tid; 1036*96c93589SGidon Studinski u8 dialog_token; 1037*96c93589SGidon Studinski u8 reserved; 1038*96c93589SGidon Studinski __le16 status_code; 1039*96c93589SGidon Studinski /* ieee80211_ba_parameterset field to send */ 1040*96c93589SGidon Studinski __le16 ba_param_set; 1041*96c93589SGidon Studinski __le16 ba_timeout; 1042*96c93589SGidon Studinski u8 status_ring_id; 1043*96c93589SGidon Studinski /* wmi_cfg_rx_chain_cmd_reorder_type */ 1044*96c93589SGidon Studinski u8 reorder_type; 1045*96c93589SGidon Studinski } __packed; 1046*96c93589SGidon Studinski 1047b874ddecSLior David /* WMI_RCP_DELBA_CMDID */ 10482be7d22fSVladimir Kondratiev struct wmi_rcp_delba_cmd { 10498a4fa214SAhmad Masri /* Used for cid less than 8. For higher cid set 10508a4fa214SAhmad Masri * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead 10518a4fa214SAhmad Masri */ 10522be7d22fSVladimir Kondratiev u8 cidxtid; 10532be7d22fSVladimir Kondratiev u8 reserved; 10542be7d22fSVladimir Kondratiev __le16 reason; 10558a4fa214SAhmad Masri /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ 10568a4fa214SAhmad Masri u8 cid; 10578a4fa214SAhmad Masri /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ 10588a4fa214SAhmad Masri u8 tid; 10598a4fa214SAhmad Masri u8 reserved2[2]; 10602be7d22fSVladimir Kondratiev } __packed; 10612be7d22fSVladimir Kondratiev 1062b874ddecSLior David /* WMI_RCP_ADDBA_REQ_CMDID */ 10632be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_cmd { 10648a4fa214SAhmad Masri /* Used for cid less than 8. For higher cid set 10658a4fa214SAhmad Masri * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead 10668a4fa214SAhmad Masri */ 10672be7d22fSVladimir Kondratiev u8 cidxtid; 10682be7d22fSVladimir Kondratiev u8 dialog_token; 10692be7d22fSVladimir Kondratiev /* ieee80211_ba_parameterset field as it received */ 10702be7d22fSVladimir Kondratiev __le16 ba_param_set; 10712be7d22fSVladimir Kondratiev __le16 ba_timeout; 10722be7d22fSVladimir Kondratiev /* ieee80211_ba_seqstrl field as it received */ 10732be7d22fSVladimir Kondratiev __le16 ba_seq_ctrl; 10748a4fa214SAhmad Masri /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ 10758a4fa214SAhmad Masri u8 cid; 10768a4fa214SAhmad Masri /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ 10778a4fa214SAhmad Masri u8 tid; 10788a4fa214SAhmad Masri u8 reserved[2]; 10792be7d22fSVladimir Kondratiev } __packed; 10802be7d22fSVladimir Kondratiev 1081b874ddecSLior David /* WMI_SET_MAC_ADDRESS_CMDID */ 10822be7d22fSVladimir Kondratiev struct wmi_set_mac_address_cmd { 10832be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 10842be7d22fSVladimir Kondratiev u8 reserved[2]; 10852be7d22fSVladimir Kondratiev } __packed; 10862be7d22fSVladimir Kondratiev 1087b874ddecSLior David /* WMI_ECHO_CMDID 10882be7d22fSVladimir Kondratiev * Check FW is alive 10892be7d22fSVladimir Kondratiev * Returned event: WMI_ECHO_RSP_EVENTID 10902be7d22fSVladimir Kondratiev */ 10912be7d22fSVladimir Kondratiev struct wmi_echo_cmd { 10922be7d22fSVladimir Kondratiev __le32 value; 10932be7d22fSVladimir Kondratiev } __packed; 10942be7d22fSVladimir Kondratiev 10958a4fa214SAhmad Masri /* WMI_DEEP_ECHO_CMDID 10968a4fa214SAhmad Masri * Check FW and ucode are alive 10978a4fa214SAhmad Masri * Returned event: WMI_ECHO_RSP_EVENTID 10988a4fa214SAhmad Masri */ 10998a4fa214SAhmad Masri struct wmi_deep_echo_cmd { 11008a4fa214SAhmad Masri __le32 value; 11018a4fa214SAhmad Masri } __packed; 11028a4fa214SAhmad Masri 1103761f8e4dSLazar Alexei /* WMI_RF_PWR_ON_DELAY_CMDID 1104761f8e4dSLazar Alexei * set FW time parameters used through RF resetting 1105761f8e4dSLazar Alexei * RF reset consists of bringing its power down for a period of time, then 1106761f8e4dSLazar Alexei * bringing the power up 1107761f8e4dSLazar Alexei * Returned event: WMI_RF_PWR_ON_DELAY_RSP_EVENTID 1108761f8e4dSLazar Alexei */ 1109761f8e4dSLazar Alexei struct wmi_rf_pwr_on_delay_cmd { 1110761f8e4dSLazar Alexei /* time in usec the FW waits after bringing the RF PWR down, 1111761f8e4dSLazar Alexei * set 0 for default 1112761f8e4dSLazar Alexei */ 1113761f8e4dSLazar Alexei __le16 down_delay_usec; 1114761f8e4dSLazar Alexei /* time in usec the FW waits after bringing the RF PWR up, 1115761f8e4dSLazar Alexei * set 0 for default 1116761f8e4dSLazar Alexei */ 1117761f8e4dSLazar Alexei __le16 up_delay_usec; 1118b874ddecSLior David } __packed; 1119b874ddecSLior David 11208a4fa214SAhmad Masri /* WMI_SET_HIGH_POWER_TABLE_PARAMS_CMDID 1121761f8e4dSLazar Alexei * This API controls the Tx and Rx gain over temperature. 1122761f8e4dSLazar Alexei * It controls the Tx D-type, Rx D-type and Rx E-type amplifiers. 1123761f8e4dSLazar Alexei * It also controls the Tx gain index, by controlling the Rx to Tx gain index 1124761f8e4dSLazar Alexei * offset. 1125761f8e4dSLazar Alexei * The control is divided by 3 temperature values to 4 temperature ranges. 1126761f8e4dSLazar Alexei * Each parameter uses its own temperature values. 1127761f8e4dSLazar Alexei * Returned event: WMI_SET_HIGH_POWER_TABLE_PARAMS_EVENTID 1128761f8e4dSLazar Alexei */ 1129761f8e4dSLazar Alexei struct wmi_set_high_power_table_params_cmd { 1130761f8e4dSLazar Alexei /* Temperature range for Tx D-type parameters */ 1131761f8e4dSLazar Alexei u8 tx_dtype_temp[WMI_RF_DTYPE_LENGTH]; 1132761f8e4dSLazar Alexei u8 reserved0; 1133761f8e4dSLazar Alexei /* Tx D-type values to be used for each temperature range */ 11348a4fa214SAhmad Masri __le32 tx_dtype_conf[WMI_RF_DTYPE_CONF_LENGTH]; 11358a4fa214SAhmad Masri /* Temperature range for Tx E-type parameters */ 11368a4fa214SAhmad Masri u8 tx_etype_temp[WMI_RF_ETYPE_LENGTH]; 11378a4fa214SAhmad Masri u8 reserved1; 11388a4fa214SAhmad Masri /* Tx E-type values to be used for each temperature range. 11398a4fa214SAhmad Masri * The last 4 values of any range are the first 4 values of the next 11408a4fa214SAhmad Masri * range and so on 11418a4fa214SAhmad Masri */ 11428a4fa214SAhmad Masri __le32 tx_etype_conf[WMI_RF_ETYPE_CONF_LENGTH]; 1143761f8e4dSLazar Alexei /* Temperature range for Rx D-type parameters */ 1144761f8e4dSLazar Alexei u8 rx_dtype_temp[WMI_RF_DTYPE_LENGTH]; 11458a4fa214SAhmad Masri u8 reserved2; 1146761f8e4dSLazar Alexei /* Rx D-type values to be used for each temperature range */ 11478a4fa214SAhmad Masri __le32 rx_dtype_conf[WMI_RF_DTYPE_CONF_LENGTH]; 1148761f8e4dSLazar Alexei /* Temperature range for Rx E-type parameters */ 1149761f8e4dSLazar Alexei u8 rx_etype_temp[WMI_RF_ETYPE_LENGTH]; 11508a4fa214SAhmad Masri u8 reserved3; 1151761f8e4dSLazar Alexei /* Rx E-type values to be used for each temperature range. 1152761f8e4dSLazar Alexei * The last 4 values of any range are the first 4 values of the next 1153761f8e4dSLazar Alexei * range and so on 1154761f8e4dSLazar Alexei */ 11558a4fa214SAhmad Masri __le32 rx_etype_conf[WMI_RF_ETYPE_CONF_LENGTH]; 1156761f8e4dSLazar Alexei /* Temperature range for rx_2_tx_offs parameters */ 1157761f8e4dSLazar Alexei u8 rx_2_tx_temp[WMI_RF_RX2TX_LENGTH]; 11588a4fa214SAhmad Masri u8 reserved4; 1159761f8e4dSLazar Alexei /* Rx to Tx gain index offset */ 11608a4fa214SAhmad Masri s8 rx_2_tx_offs[WMI_RF_RX2TX_CONF_LENGTH]; 11618a4fa214SAhmad Masri } __packed; 11628a4fa214SAhmad Masri 11638a4fa214SAhmad Masri /* WMI_FIXED_SCHEDULING_UL_CONFIG_CMDID 11648a4fa214SAhmad Masri * This API sets rd parameter per mcs. 11658a4fa214SAhmad Masri * Relevant only in Fixed Scheduling mode. 11668a4fa214SAhmad Masri * Returned event: WMI_FIXED_SCHEDULING_UL_CONFIG_EVENTID 11678a4fa214SAhmad Masri */ 11688a4fa214SAhmad Masri struct wmi_fixed_scheduling_ul_config_cmd { 11698a4fa214SAhmad Masri /* Use mcs -1 to set for every mcs */ 11708a4fa214SAhmad Masri s8 mcs; 11718a4fa214SAhmad Masri /* Number of frames with rd bit set in a single virtual slot */ 11728a4fa214SAhmad Masri u8 rd_count_per_slot; 11738a4fa214SAhmad Masri u8 reserved[2]; 1174761f8e4dSLazar Alexei } __packed; 1175761f8e4dSLazar Alexei 1176761f8e4dSLazar Alexei /* CMD: WMI_RF_XPM_READ_CMDID */ 1177761f8e4dSLazar Alexei struct wmi_rf_xpm_read_cmd { 1178761f8e4dSLazar Alexei u8 rf_id; 1179761f8e4dSLazar Alexei u8 reserved[3]; 1180761f8e4dSLazar Alexei /* XPM bit start address in range [0,8191]bits - rounded by FW to 1181761f8e4dSLazar Alexei * multiple of 8bits 1182761f8e4dSLazar Alexei */ 1183761f8e4dSLazar Alexei __le32 xpm_bit_address; 1184761f8e4dSLazar Alexei __le32 num_bytes; 1185761f8e4dSLazar Alexei } __packed; 1186761f8e4dSLazar Alexei 1187761f8e4dSLazar Alexei /* CMD: WMI_RF_XPM_WRITE_CMDID */ 1188761f8e4dSLazar Alexei struct wmi_rf_xpm_write_cmd { 1189761f8e4dSLazar Alexei u8 rf_id; 1190761f8e4dSLazar Alexei u8 reserved0[3]; 1191761f8e4dSLazar Alexei /* XPM bit start address in range [0,8191]bits - rounded by FW to 1192761f8e4dSLazar Alexei * multiple of 8bits 1193761f8e4dSLazar Alexei */ 1194761f8e4dSLazar Alexei __le32 xpm_bit_address; 1195761f8e4dSLazar Alexei __le32 num_bytes; 1196761f8e4dSLazar Alexei /* boolean flag indicating whether FW should verify the write 1197761f8e4dSLazar Alexei * operation 1198761f8e4dSLazar Alexei */ 1199761f8e4dSLazar Alexei u8 verify; 1200761f8e4dSLazar Alexei u8 reserved1[3]; 1201761f8e4dSLazar Alexei /* actual size=num_bytes */ 1202761f8e4dSLazar Alexei u8 data_bytes[0]; 1203b874ddecSLior David } __packed; 1204b874ddecSLior David 1205b874ddecSLior David /* WMI_TEMP_SENSE_CMDID 1206b8023177SVladimir Kondratiev * 1207b8023177SVladimir Kondratiev * Measure MAC and radio temperatures 1208b874ddecSLior David * 1209b874ddecSLior David * Possible modes for temperature measurement 1210b8023177SVladimir Kondratiev */ 12118c679675SVladimir Kondratiev enum wmi_temperature_measure_mode { 1212b874ddecSLior David TEMPERATURE_USE_OLD_VALUE = 0x01, 1213b874ddecSLior David TEMPERATURE_MEASURE_NOW = 0x02, 12148c679675SVladimir Kondratiev }; 12158c679675SVladimir Kondratiev 1216b874ddecSLior David /* WMI_TEMP_SENSE_CMDID */ 1217b8023177SVladimir Kondratiev struct wmi_temp_sense_cmd { 12188c679675SVladimir Kondratiev __le32 measure_baseband_en; 12198c679675SVladimir Kondratiev __le32 measure_rf_en; 12208c679675SVladimir Kondratiev __le32 measure_mode; 1221b8023177SVladimir Kondratiev } __packed; 1222b8023177SVladimir Kondratiev 1223b874ddecSLior David enum wmi_pmc_op { 1224b874ddecSLior David WMI_PMC_ALLOCATE = 0x00, 1225b874ddecSLior David WMI_PMC_RELEASE = 0x01, 1226dc16427bSVladimir Kondratiev }; 1227dc16427bSVladimir Kondratiev 1228b874ddecSLior David /* WMI_PMC_CMDID */ 1229dc16427bSVladimir Kondratiev struct wmi_pmc_cmd { 1230b874ddecSLior David /* enum wmi_pmc_cmd_op_type */ 1231b874ddecSLior David u8 op; 1232dc16427bSVladimir Kondratiev u8 reserved; 1233dc16427bSVladimir Kondratiev __le16 ring_size; 1234dc16427bSVladimir Kondratiev __le64 mem_base; 1235dc16427bSVladimir Kondratiev } __packed; 1236dc16427bSVladimir Kondratiev 123708989f96SLior David enum wmi_aoa_meas_type { 123808989f96SLior David WMI_AOA_PHASE_MEAS = 0x00, 123908989f96SLior David WMI_AOA_PHASE_AMP_MEAS = 0x01, 124008989f96SLior David }; 124108989f96SLior David 124208989f96SLior David /* WMI_AOA_MEAS_CMDID */ 124308989f96SLior David struct wmi_aoa_meas_cmd { 124408989f96SLior David u8 mac_addr[WMI_MAC_LEN]; 124508989f96SLior David /* channels IDs: 124608989f96SLior David * 0 - 58320 MHz 124708989f96SLior David * 1 - 60480 MHz 124808989f96SLior David * 2 - 62640 MHz 124908989f96SLior David */ 125008989f96SLior David u8 channel; 125108989f96SLior David /* enum wmi_aoa_meas_type */ 125208989f96SLior David u8 aoa_meas_type; 125308989f96SLior David __le32 meas_rf_mask; 125408989f96SLior David } __packed; 125508989f96SLior David 1256cbf795c1SLior David /* WMI_SET_MGMT_RETRY_LIMIT_CMDID */ 1257cbf795c1SLior David struct wmi_set_mgmt_retry_limit_cmd { 1258cbf795c1SLior David /* MAC retransmit limit for mgmt frames */ 1259cbf795c1SLior David u8 mgmt_retry_limit; 1260cbf795c1SLior David /* alignment to 32b */ 1261cbf795c1SLior David u8 reserved[3]; 1262cbf795c1SLior David } __packed; 1263cbf795c1SLior David 126490ffabb0SDedy Lansky /* Zones: HIGH, MAX, CRITICAL */ 126590ffabb0SDedy Lansky #define WMI_NUM_OF_TT_ZONES (3) 126690ffabb0SDedy Lansky 126790ffabb0SDedy Lansky struct wmi_tt_zone_limits { 126890ffabb0SDedy Lansky /* Above this temperature this zone is active */ 126990ffabb0SDedy Lansky u8 temperature_high; 127090ffabb0SDedy Lansky /* Below this temperature the adjacent lower zone is active */ 127190ffabb0SDedy Lansky u8 temperature_low; 127290ffabb0SDedy Lansky u8 reserved[2]; 127390ffabb0SDedy Lansky } __packed; 127490ffabb0SDedy Lansky 127590ffabb0SDedy Lansky /* Struct used for both configuration and status commands of thermal 127690ffabb0SDedy Lansky * throttling 127790ffabb0SDedy Lansky */ 127890ffabb0SDedy Lansky struct wmi_tt_data { 127990ffabb0SDedy Lansky /* Enable/Disable TT algorithm for baseband */ 128090ffabb0SDedy Lansky u8 bb_enabled; 128190ffabb0SDedy Lansky u8 reserved0[3]; 128290ffabb0SDedy Lansky /* Define zones for baseband */ 128390ffabb0SDedy Lansky struct wmi_tt_zone_limits bb_zones[WMI_NUM_OF_TT_ZONES]; 128490ffabb0SDedy Lansky /* Enable/Disable TT algorithm for radio */ 128590ffabb0SDedy Lansky u8 rf_enabled; 128690ffabb0SDedy Lansky u8 reserved1[3]; 128790ffabb0SDedy Lansky /* Define zones for all radio chips */ 128890ffabb0SDedy Lansky struct wmi_tt_zone_limits rf_zones[WMI_NUM_OF_TT_ZONES]; 128990ffabb0SDedy Lansky } __packed; 129090ffabb0SDedy Lansky 129190ffabb0SDedy Lansky /* WMI_SET_THERMAL_THROTTLING_CFG_CMDID */ 129290ffabb0SDedy Lansky struct wmi_set_thermal_throttling_cfg_cmd { 129390ffabb0SDedy Lansky /* Command data */ 129490ffabb0SDedy Lansky struct wmi_tt_data tt_data; 129590ffabb0SDedy Lansky } __packed; 129690ffabb0SDedy Lansky 1297849a564bSDedy Lansky /* WMI_NEW_STA_CMDID */ 1298849a564bSDedy Lansky struct wmi_new_sta_cmd { 1299849a564bSDedy Lansky u8 dst_mac[WMI_MAC_LEN]; 1300849a564bSDedy Lansky u8 aid; 1301849a564bSDedy Lansky } __packed; 1302849a564bSDedy Lansky 1303849a564bSDedy Lansky /* WMI_DEL_STA_CMDID */ 1304849a564bSDedy Lansky struct wmi_del_sta_cmd { 1305849a564bSDedy Lansky u8 dst_mac[WMI_MAC_LEN]; 1306849a564bSDedy Lansky __le16 disconnect_reason; 1307849a564bSDedy Lansky } __packed; 1308849a564bSDedy Lansky 130908989f96SLior David enum wmi_tof_burst_duration { 131008989f96SLior David WMI_TOF_BURST_DURATION_250_USEC = 2, 131108989f96SLior David WMI_TOF_BURST_DURATION_500_USEC = 3, 131208989f96SLior David WMI_TOF_BURST_DURATION_1_MSEC = 4, 131308989f96SLior David WMI_TOF_BURST_DURATION_2_MSEC = 5, 131408989f96SLior David WMI_TOF_BURST_DURATION_4_MSEC = 6, 131508989f96SLior David WMI_TOF_BURST_DURATION_8_MSEC = 7, 131608989f96SLior David WMI_TOF_BURST_DURATION_16_MSEC = 8, 131708989f96SLior David WMI_TOF_BURST_DURATION_32_MSEC = 9, 131808989f96SLior David WMI_TOF_BURST_DURATION_64_MSEC = 10, 131908989f96SLior David WMI_TOF_BURST_DURATION_128_MSEC = 11, 132008989f96SLior David WMI_TOF_BURST_DURATION_NO_PREFERENCES = 15, 132108989f96SLior David }; 132208989f96SLior David 132308989f96SLior David enum wmi_tof_session_start_flags { 132408989f96SLior David WMI_TOF_SESSION_START_FLAG_SECURED = 0x1, 132508989f96SLior David WMI_TOF_SESSION_START_FLAG_ASAP = 0x2, 132608989f96SLior David WMI_TOF_SESSION_START_FLAG_LCI_REQ = 0x4, 132708989f96SLior David WMI_TOF_SESSION_START_FLAG_LCR_REQ = 0x8, 132808989f96SLior David }; 132908989f96SLior David 133008989f96SLior David /* WMI_TOF_SESSION_START_CMDID */ 133108989f96SLior David struct wmi_ftm_dest_info { 133208989f96SLior David u8 channel; 133308989f96SLior David /* wmi_tof_session_start_flags_e */ 133408989f96SLior David u8 flags; 133508989f96SLior David u8 initial_token; 133608989f96SLior David u8 num_of_ftm_per_burst; 133708989f96SLior David u8 num_of_bursts_exp; 133808989f96SLior David /* wmi_tof_burst_duration_e */ 133908989f96SLior David u8 burst_duration; 134008989f96SLior David /* Burst Period indicate interval between two consecutive burst 134108989f96SLior David * instances, in units of 100 ms 134208989f96SLior David */ 134308989f96SLior David __le16 burst_period; 134408989f96SLior David u8 dst_mac[WMI_MAC_LEN]; 1345761f8e4dSLazar Alexei u8 reserved; 1346761f8e4dSLazar Alexei u8 num_burst_per_aoa_meas; 134708989f96SLior David } __packed; 134808989f96SLior David 134908989f96SLior David /* WMI_TOF_SESSION_START_CMDID */ 135008989f96SLior David struct wmi_tof_session_start_cmd { 135108989f96SLior David __le32 session_id; 1352761f8e4dSLazar Alexei u8 reserved1; 135308989f96SLior David u8 aoa_type; 135408989f96SLior David __le16 num_of_dest; 135508989f96SLior David u8 reserved[4]; 135608989f96SLior David struct wmi_ftm_dest_info ftm_dest_info[0]; 135708989f96SLior David } __packed; 135808989f96SLior David 1359761f8e4dSLazar Alexei /* WMI_TOF_CFG_RESPONDER_CMDID */ 1360761f8e4dSLazar Alexei struct wmi_tof_cfg_responder_cmd { 1361761f8e4dSLazar Alexei u8 enable; 1362761f8e4dSLazar Alexei u8 reserved[3]; 1363761f8e4dSLazar Alexei } __packed; 1364761f8e4dSLazar Alexei 136508989f96SLior David enum wmi_tof_channel_info_report_type { 136608989f96SLior David WMI_TOF_CHANNEL_INFO_TYPE_CIR = 0x1, 136708989f96SLior David WMI_TOF_CHANNEL_INFO_TYPE_RSSI = 0x2, 136808989f96SLior David WMI_TOF_CHANNEL_INFO_TYPE_SNR = 0x4, 136908989f96SLior David WMI_TOF_CHANNEL_INFO_TYPE_DEBUG_DATA = 0x8, 137008989f96SLior David WMI_TOF_CHANNEL_INFO_TYPE_VENDOR_SPECIFIC = 0x10, 137108989f96SLior David }; 137208989f96SLior David 137308989f96SLior David /* WMI_TOF_CHANNEL_INFO_CMDID */ 137408989f96SLior David struct wmi_tof_channel_info_cmd { 137508989f96SLior David /* wmi_tof_channel_info_report_type_e */ 137608989f96SLior David __le32 channel_info_report_request; 137708989f96SLior David } __packed; 137808989f96SLior David 13798ae5d62cSLior David /* WMI_TOF_SET_TX_RX_OFFSET_CMDID */ 13808ae5d62cSLior David struct wmi_tof_set_tx_rx_offset_cmd { 13818ae5d62cSLior David /* TX delay offset */ 13828ae5d62cSLior David __le32 tx_offset; 13838ae5d62cSLior David /* RX delay offset */ 13848ae5d62cSLior David __le32 rx_offset; 1385761f8e4dSLazar Alexei /* Mask to define which RFs to configure. 0 means all RFs */ 1386761f8e4dSLazar Alexei __le32 rf_mask; 1387761f8e4dSLazar Alexei /* Offset to strongest tap of CIR */ 1388761f8e4dSLazar Alexei __le32 precursor; 1389761f8e4dSLazar Alexei } __packed; 1390761f8e4dSLazar Alexei 1391761f8e4dSLazar Alexei /* WMI_TOF_GET_TX_RX_OFFSET_CMDID */ 1392761f8e4dSLazar Alexei struct wmi_tof_get_tx_rx_offset_cmd { 1393761f8e4dSLazar Alexei /* rf index to read offsets from */ 1394761f8e4dSLazar Alexei u8 rf_index; 1395761f8e4dSLazar Alexei u8 reserved[3]; 1396761f8e4dSLazar Alexei } __packed; 1397761f8e4dSLazar Alexei 1398761f8e4dSLazar Alexei /* WMI_FIXED_SCHEDULING_CONFIG_CMDID */ 1399761f8e4dSLazar Alexei struct wmi_map_mcs_to_schd_params { 1400761f8e4dSLazar Alexei u8 mcs; 1401761f8e4dSLazar Alexei /* time in usec from start slot to start tx flow - default 15 */ 1402761f8e4dSLazar Alexei u8 time_in_usec_before_initiate_tx; 1403761f8e4dSLazar Alexei /* RD enable - if yes consider RD according to STA mcs */ 1404761f8e4dSLazar Alexei u8 rd_enabled; 1405761f8e4dSLazar Alexei u8 reserved; 1406761f8e4dSLazar Alexei /* time in usec from start slot to stop vring */ 1407761f8e4dSLazar Alexei __le16 time_in_usec_to_stop_vring; 1408761f8e4dSLazar Alexei /* timeout to force flush from start of slot */ 1409761f8e4dSLazar Alexei __le16 flush_to_in_usec; 1410761f8e4dSLazar Alexei /* per mcs the mac buffer limit size in bytes */ 1411761f8e4dSLazar Alexei __le32 mac_buff_size_in_bytes; 1412761f8e4dSLazar Alexei } __packed; 1413761f8e4dSLazar Alexei 1414761f8e4dSLazar Alexei /* WMI_FIXED_SCHEDULING_CONFIG_COMPLETE_EVENTID */ 1415761f8e4dSLazar Alexei struct wmi_fixed_scheduling_config_complete_event { 1416761f8e4dSLazar Alexei /* wmi_fw_status */ 1417761f8e4dSLazar Alexei u8 status; 1418761f8e4dSLazar Alexei u8 reserved[3]; 1419761f8e4dSLazar Alexei } __packed; 1420761f8e4dSLazar Alexei 1421761f8e4dSLazar Alexei #define WMI_NUM_MCS (13) 1422761f8e4dSLazar Alexei 1423761f8e4dSLazar Alexei /* WMI_FIXED_SCHEDULING_CONFIG_CMDID */ 1424761f8e4dSLazar Alexei struct wmi_fixed_scheduling_config_cmd { 1425761f8e4dSLazar Alexei /* defaults in the SAS table */ 1426761f8e4dSLazar Alexei struct wmi_map_mcs_to_schd_params mcs_to_schd_params_map[WMI_NUM_MCS]; 1427761f8e4dSLazar Alexei /* default 150 uSec */ 1428761f8e4dSLazar Alexei __le16 max_sta_rd_ppdu_duration_in_usec; 1429761f8e4dSLazar Alexei /* default 300 uSec */ 1430761f8e4dSLazar Alexei __le16 max_sta_grant_ppdu_duration_in_usec; 1431761f8e4dSLazar Alexei /* default 1000 uSec */ 1432761f8e4dSLazar Alexei __le16 assoc_slot_duration_in_usec; 1433761f8e4dSLazar Alexei /* default 360 uSec */ 1434761f8e4dSLazar Alexei __le16 virtual_slot_duration_in_usec; 1435761f8e4dSLazar Alexei /* each this field value slots start with grant frame to the station 1436761f8e4dSLazar Alexei * - default 2 1437761f8e4dSLazar Alexei */ 1438761f8e4dSLazar Alexei u8 number_of_ap_slots_for_initiate_grant; 1439761f8e4dSLazar Alexei u8 reserved[3]; 1440761f8e4dSLazar Alexei } __packed; 1441761f8e4dSLazar Alexei 1442761f8e4dSLazar Alexei /* WMI_ENABLE_FIXED_SCHEDULING_CMDID */ 1443761f8e4dSLazar Alexei struct wmi_enable_fixed_scheduling_cmd { 1444761f8e4dSLazar Alexei __le32 reserved; 1445761f8e4dSLazar Alexei } __packed; 1446761f8e4dSLazar Alexei 1447761f8e4dSLazar Alexei /* WMI_ENABLE_FIXED_SCHEDULING_COMPLETE_EVENTID */ 1448761f8e4dSLazar Alexei struct wmi_enable_fixed_scheduling_complete_event { 1449761f8e4dSLazar Alexei /* wmi_fw_status */ 1450761f8e4dSLazar Alexei u8 status; 1451761f8e4dSLazar Alexei u8 reserved[3]; 1452761f8e4dSLazar Alexei } __packed; 1453761f8e4dSLazar Alexei 1454761f8e4dSLazar Alexei /* WMI_SET_MULTI_DIRECTED_OMNIS_CONFIG_CMDID */ 1455761f8e4dSLazar Alexei struct wmi_set_multi_directed_omnis_config_cmd { 1456761f8e4dSLazar Alexei /* number of directed omnis at destination AP */ 1457761f8e4dSLazar Alexei u8 dest_ap_num_directed_omnis; 1458761f8e4dSLazar Alexei u8 reserved[3]; 1459761f8e4dSLazar Alexei } __packed; 1460761f8e4dSLazar Alexei 1461761f8e4dSLazar Alexei /* WMI_SET_MULTI_DIRECTED_OMNIS_CONFIG_EVENTID */ 1462761f8e4dSLazar Alexei struct wmi_set_multi_directed_omnis_config_event { 1463761f8e4dSLazar Alexei /* wmi_fw_status */ 1464761f8e4dSLazar Alexei u8 status; 1465761f8e4dSLazar Alexei u8 reserved[3]; 1466761f8e4dSLazar Alexei } __packed; 1467761f8e4dSLazar Alexei 1468761f8e4dSLazar Alexei /* WMI_SET_LONG_RANGE_CONFIG_CMDID */ 1469761f8e4dSLazar Alexei struct wmi_set_long_range_config_cmd { 1470761f8e4dSLazar Alexei __le32 reserved; 1471761f8e4dSLazar Alexei } __packed; 1472761f8e4dSLazar Alexei 1473761f8e4dSLazar Alexei /* WMI_SET_LONG_RANGE_CONFIG_COMPLETE_EVENTID */ 1474761f8e4dSLazar Alexei struct wmi_set_long_range_config_complete_event { 1475761f8e4dSLazar Alexei /* wmi_fw_status */ 1476761f8e4dSLazar Alexei u8 status; 1477761f8e4dSLazar Alexei u8 reserved[3]; 14788ae5d62cSLior David } __packed; 14798ae5d62cSLior David 14808a4fa214SAhmad Masri /* payload max size is 236 bytes: max event buffer size (256) - WMI headers 14818a4fa214SAhmad Masri * (16) - prev struct field size (4) 14828a4fa214SAhmad Masri */ 14838a4fa214SAhmad Masri #define WMI_MAX_IOCTL_PAYLOAD_SIZE (236) 14848a4fa214SAhmad Masri #define WMI_MAX_IOCTL_REPLY_PAYLOAD_SIZE (236) 14858a4fa214SAhmad Masri #define WMI_MAX_INTERNAL_EVENT_PAYLOAD_SIZE (236) 14868a4fa214SAhmad Masri 14878a4fa214SAhmad Masri enum wmi_internal_fw_ioctl_code { 14888a4fa214SAhmad Masri WMI_INTERNAL_FW_CODE_NONE = 0x0, 14898a4fa214SAhmad Masri WMI_INTERNAL_FW_CODE_QCOM = 0x1, 14908a4fa214SAhmad Masri }; 14918a4fa214SAhmad Masri 14928a4fa214SAhmad Masri /* WMI_INTERNAL_FW_IOCTL_CMDID */ 14938a4fa214SAhmad Masri struct wmi_internal_fw_ioctl_cmd { 14948a4fa214SAhmad Masri /* enum wmi_internal_fw_ioctl_code */ 14958a4fa214SAhmad Masri __le16 code; 14968a4fa214SAhmad Masri __le16 length; 14978a4fa214SAhmad Masri /* payload max size is WMI_MAX_IOCTL_PAYLOAD_SIZE 14988a4fa214SAhmad Masri * Must be the last member of the struct 14998a4fa214SAhmad Masri */ 15008a4fa214SAhmad Masri __le32 payload[0]; 15018a4fa214SAhmad Masri } __packed; 15028a4fa214SAhmad Masri 15038a4fa214SAhmad Masri /* WMI_INTERNAL_FW_IOCTL_EVENTID */ 15048a4fa214SAhmad Masri struct wmi_internal_fw_ioctl_event { 15058a4fa214SAhmad Masri /* wmi_fw_status */ 15068a4fa214SAhmad Masri u8 status; 15078a4fa214SAhmad Masri u8 reserved; 15088a4fa214SAhmad Masri __le16 length; 15098a4fa214SAhmad Masri /* payload max size is WMI_MAX_IOCTL_REPLY_PAYLOAD_SIZE 15108a4fa214SAhmad Masri * Must be the last member of the struct 15118a4fa214SAhmad Masri */ 15128a4fa214SAhmad Masri __le32 payload[0]; 15138a4fa214SAhmad Masri } __packed; 15148a4fa214SAhmad Masri 15158a4fa214SAhmad Masri /* WMI_INTERNAL_FW_EVENT_EVENTID */ 15168a4fa214SAhmad Masri struct wmi_internal_fw_event_event { 15178a4fa214SAhmad Masri __le16 id; 15188a4fa214SAhmad Masri __le16 length; 15198a4fa214SAhmad Masri /* payload max size is WMI_MAX_INTERNAL_EVENT_PAYLOAD_SIZE 15208a4fa214SAhmad Masri * Must be the last member of the struct 15218a4fa214SAhmad Masri */ 15228a4fa214SAhmad Masri __le32 payload[0]; 15238a4fa214SAhmad Masri } __packed; 15248a4fa214SAhmad Masri 15258a4fa214SAhmad Masri /* WMI_BF_CONTROL_CMDID */ 15268a4fa214SAhmad Masri struct wmi_bf_control_cmd { 15278a4fa214SAhmad Masri /* wmi_bf_triggers */ 15288a4fa214SAhmad Masri __le32 triggers; 15298a4fa214SAhmad Masri u8 cid; 15308a4fa214SAhmad Masri /* DISABLED = 0, ENABLED = 1 , DRY_RUN = 2 */ 15318a4fa214SAhmad Masri u8 txss_mode; 15328a4fa214SAhmad Masri /* DISABLED = 0, ENABLED = 1, DRY_RUN = 2 */ 15338a4fa214SAhmad Masri u8 brp_mode; 15348a4fa214SAhmad Masri /* Max cts threshold (correspond to 15358a4fa214SAhmad Masri * WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_TXOP) 15368a4fa214SAhmad Masri */ 15378a4fa214SAhmad Masri u8 bf_trigger_max_cts_failure_thr; 15388a4fa214SAhmad Masri /* Max cts threshold in dense (correspond to 15398a4fa214SAhmad Masri * WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_TXOP) 15408a4fa214SAhmad Masri */ 15418a4fa214SAhmad Masri u8 bf_trigger_max_cts_failure_dense_thr; 15428a4fa214SAhmad Masri /* Max b-ack threshold (correspond to 15438a4fa214SAhmad Masri * WMI_BF_TRIGGER_MAX_BACK_FAILURE) 15448a4fa214SAhmad Masri */ 15458a4fa214SAhmad Masri u8 bf_trigger_max_back_failure_thr; 15468a4fa214SAhmad Masri /* Max b-ack threshold in dense (correspond to 15478a4fa214SAhmad Masri * WMI_BF_TRIGGER_MAX_BACK_FAILURE) 15488a4fa214SAhmad Masri */ 15498a4fa214SAhmad Masri u8 bf_trigger_max_back_failure_dense_thr; 15508a4fa214SAhmad Masri u8 reserved0; 15518a4fa214SAhmad Masri /* Wrong sectors threshold */ 15528a4fa214SAhmad Masri __le32 wrong_sector_bis_thr; 15538a4fa214SAhmad Masri /* BOOL to enable/disable long term trigger */ 15548a4fa214SAhmad Masri u8 long_term_enable; 15558a4fa214SAhmad Masri /* 1 = Update long term thresholds from the long_term_mbps_th_tbl and 15568a4fa214SAhmad Masri * long_term_trig_timeout_per_mcs arrays, 0 = Ignore 15578a4fa214SAhmad Masri */ 15588a4fa214SAhmad Masri u8 long_term_update_thr; 15598a4fa214SAhmad Masri /* Long term throughput threshold [Mbps] */ 15608a4fa214SAhmad Masri u8 long_term_mbps_th_tbl[WMI_NUM_MCS]; 15618a4fa214SAhmad Masri u8 reserved1; 15628a4fa214SAhmad Masri /* Long term timeout threshold table [msec] */ 15638a4fa214SAhmad Masri __le16 long_term_trig_timeout_per_mcs[WMI_NUM_MCS]; 15648a4fa214SAhmad Masri u8 reserved2[2]; 15658a4fa214SAhmad Masri } __packed; 15668a4fa214SAhmad Masri 1567b874ddecSLior David /* WMI Events 15682be7d22fSVladimir Kondratiev * List of Events (target to host) 15692be7d22fSVladimir Kondratiev */ 15702be7d22fSVladimir Kondratiev enum wmi_event_id { 15712be7d22fSVladimir Kondratiev WMI_READY_EVENTID = 0x1001, 15722be7d22fSVladimir Kondratiev WMI_CONNECT_EVENTID = 0x1002, 15732be7d22fSVladimir Kondratiev WMI_DISCONNECT_EVENTID = 0x1003, 1574a5dc6883SDedy Lansky WMI_START_SCHED_SCAN_EVENTID = 0x1005, 1575a5dc6883SDedy Lansky WMI_STOP_SCHED_SCAN_EVENTID = 0x1006, 1576a5dc6883SDedy Lansky WMI_SCHED_SCAN_RESULT_EVENTID = 0x1007, 1577b874ddecSLior David WMI_SCAN_COMPLETE_EVENTID = 0x100A, 1578b874ddecSLior David WMI_REPORT_STATISTICS_EVENTID = 0x100B, 15792be7d22fSVladimir Kondratiev WMI_RD_MEM_RSP_EVENTID = 0x1800, 15802be7d22fSVladimir Kondratiev WMI_FW_READY_EVENTID = 0x1801, 1581b874ddecSLior David WMI_EXIT_FAST_MEM_ACC_MODE_EVENTID = 0x200, 15822be7d22fSVladimir Kondratiev WMI_ECHO_RSP_EVENTID = 0x1803, 1583761f8e4dSLazar Alexei /* deprecated */ 1584b874ddecSLior David WMI_FS_TUNE_DONE_EVENTID = 0x180A, 1585761f8e4dSLazar Alexei /* deprecated */ 1586b874ddecSLior David WMI_CORR_MEASURE_EVENTID = 0x180B, 1587b874ddecSLior David WMI_READ_RSSI_EVENTID = 0x180C, 1588b874ddecSLior David WMI_TEMP_SENSE_DONE_EVENTID = 0x180E, 1589b874ddecSLior David WMI_DC_CALIB_DONE_EVENTID = 0x180F, 1590761f8e4dSLazar Alexei /* deprecated */ 15912be7d22fSVladimir Kondratiev WMI_IQ_TX_CALIB_DONE_EVENTID = 0x1811, 1592761f8e4dSLazar Alexei /* deprecated */ 15932be7d22fSVladimir Kondratiev WMI_IQ_RX_CALIB_DONE_EVENTID = 0x1812, 15942be7d22fSVladimir Kondratiev WMI_SET_WORK_MODE_DONE_EVENTID = 0x1815, 15952be7d22fSVladimir Kondratiev WMI_LO_LEAKAGE_CALIB_DONE_EVENTID = 0x1816, 1596761f8e4dSLazar Alexei WMI_LO_POWER_CALIB_FROM_OTP_EVENTID = 0x1817, 1597b874ddecSLior David WMI_SILENT_RSSI_CALIB_DONE_EVENTID = 0x181D, 1598761f8e4dSLazar Alexei /* deprecated */ 1599b874ddecSLior David WMI_RF_RX_TEST_DONE_EVENTID = 0x181E, 16002be7d22fSVladimir Kondratiev WMI_CFG_RX_CHAIN_DONE_EVENTID = 0x1820, 16012be7d22fSVladimir Kondratiev WMI_VRING_CFG_DONE_EVENTID = 0x1821, 16022be7d22fSVladimir Kondratiev WMI_BA_STATUS_EVENTID = 0x1823, 16032be7d22fSVladimir Kondratiev WMI_RCP_ADDBA_REQ_EVENTID = 0x1824, 1604230d8442SVladimir Kondratiev WMI_RCP_ADDBA_RESP_SENT_EVENTID = 0x1825, 16052be7d22fSVladimir Kondratiev WMI_DELBA_EVENTID = 0x1826, 16062be7d22fSVladimir Kondratiev WMI_GET_SSID_EVENTID = 0x1828, 1607b874ddecSLior David WMI_GET_PCP_CHANNEL_EVENTID = 0x182A, 1608b874ddecSLior David WMI_SW_TX_COMPLETE_EVENTID = 0x182B, 1609230d8442SVladimir Kondratiev WMI_BEAMFORMING_MGMT_DONE_EVENTID = 0x1836, 16102be7d22fSVladimir Kondratiev WMI_BF_TXSS_MGMT_DONE_EVENTID = 0x1837, 16112be7d22fSVladimir Kondratiev WMI_BF_RXSS_MGMT_DONE_EVENTID = 0x1839, 16122be7d22fSVladimir Kondratiev WMI_RS_MGMT_DONE_EVENTID = 0x1852, 16132be7d22fSVladimir Kondratiev WMI_RF_MGMT_STATUS_EVENTID = 0x1853, 16142be7d22fSVladimir Kondratiev WMI_BF_SM_MGMT_DONE_EVENTID = 0x1838, 16152be7d22fSVladimir Kondratiev WMI_RX_MGMT_PACKET_EVENTID = 0x1840, 16166c2faf09SVladimir Kondratiev WMI_TX_MGMT_PACKET_EVENTID = 0x1841, 16170163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_WRITE_DONE_EVENTID = 0x1842, 16180163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_READ_DONE_EVENTID = 0x1843, 1619761f8e4dSLazar Alexei WMI_RF_XPM_READ_RESULT_EVENTID = 0x1856, 1620761f8e4dSLazar Alexei WMI_RF_XPM_WRITE_RESULT_EVENTID = 0x1857, 162110d599adSMaya Erez WMI_LED_CFG_DONE_EVENTID = 0x1858, 1622761f8e4dSLazar Alexei WMI_SET_SILENT_RSSI_TABLE_DONE_EVENTID = 0x185C, 1623761f8e4dSLazar Alexei WMI_RF_PWR_ON_DELAY_RSP_EVENTID = 0x185D, 1624761f8e4dSLazar Alexei WMI_SET_HIGH_POWER_TABLE_PARAMS_EVENTID = 0x185E, 16258a4fa214SAhmad Masri WMI_FIXED_SCHEDULING_UL_CONFIG_EVENTID = 0x185F, 16262be7d22fSVladimir Kondratiev /* Performance monitoring events */ 16272be7d22fSVladimir Kondratiev WMI_DATA_PORT_OPEN_EVENTID = 0x1860, 1628230d8442SVladimir Kondratiev WMI_WBE_LINK_DOWN_EVENTID = 0x1861, 16292be7d22fSVladimir Kondratiev WMI_BF_CTRL_DONE_EVENTID = 0x1862, 16302be7d22fSVladimir Kondratiev WMI_NOTIFY_REQ_DONE_EVENTID = 0x1863, 16312be7d22fSVladimir Kondratiev WMI_GET_STATUS_DONE_EVENTID = 0x1864, 1632*96c93589SGidon Studinski WMI_RING_EN_EVENTID = 0x1865, 16330163b031SMaya Erez WMI_GET_RF_STATUS_EVENTID = 0x1866, 16340163b031SMaya Erez WMI_GET_BASEBAND_TYPE_EVENTID = 0x1867, 16358a4fa214SAhmad Masri WMI_VRING_SWITCH_TIMING_CONFIG_EVENTID = 0x1868, 16362be7d22fSVladimir Kondratiev WMI_UNIT_TEST_EVENTID = 0x1900, 16372be7d22fSVladimir Kondratiev WMI_FLASH_READ_DONE_EVENTID = 0x1902, 16382be7d22fSVladimir Kondratiev WMI_FLASH_WRITE_DONE_EVENTID = 0x1903, 16390163b031SMaya Erez /* Power management */ 1640fe9ee51eSMaya Erez WMI_TRAFFIC_SUSPEND_EVENTID = 0x1904, 16410163b031SMaya Erez WMI_TRAFFIC_RESUME_EVENTID = 0x1905, 1642b8023177SVladimir Kondratiev /* P2P */ 16438c679675SVladimir Kondratiev WMI_P2P_CFG_DONE_EVENTID = 0x1910, 1644b8023177SVladimir Kondratiev WMI_PORT_ALLOCATED_EVENTID = 0x1911, 1645b8023177SVladimir Kondratiev WMI_PORT_DELETED_EVENTID = 0x1912, 1646b8023177SVladimir Kondratiev WMI_LISTEN_STARTED_EVENTID = 0x1914, 1647b8023177SVladimir Kondratiev WMI_SEARCH_STARTED_EVENTID = 0x1915, 1648b8023177SVladimir Kondratiev WMI_DISCOVERY_STARTED_EVENTID = 0x1916, 1649b8023177SVladimir Kondratiev WMI_DISCOVERY_STOPPED_EVENTID = 0x1917, 1650b8023177SVladimir Kondratiev WMI_PCP_STARTED_EVENTID = 0x1918, 1651b8023177SVladimir Kondratiev WMI_PCP_STOPPED_EVENTID = 0x1919, 1652b874ddecSLior David WMI_PCP_FACTOR_EVENTID = 0x191A, 16530163b031SMaya Erez /* Power Save Configuration Events */ 16540163b031SMaya Erez WMI_PS_DEV_PROFILE_CFG_EVENTID = 0x191C, 16550163b031SMaya Erez WMI_RS_CFG_DONE_EVENTID = 0x1921, 165608989f96SLior David WMI_GET_DETAILED_RS_RES_EVENTID = 0x1922, 165708989f96SLior David WMI_AOA_MEAS_EVENTID = 0x1923, 1658a52fb913SLior David WMI_BRP_SET_ANT_LIMIT_EVENTID = 0x1924, 1659cbf795c1SLior David WMI_SET_MGMT_RETRY_LIMIT_EVENTID = 0x1930, 1660cbf795c1SLior David WMI_GET_MGMT_RETRY_LIMIT_EVENTID = 0x1931, 166190ffabb0SDedy Lansky WMI_SET_THERMAL_THROTTLING_CFG_EVENTID = 0x1940, 166290ffabb0SDedy Lansky WMI_GET_THERMAL_THROTTLING_CFG_EVENTID = 0x1941, 1663761f8e4dSLazar Alexei /* return the Power Save profile */ 1664761f8e4dSLazar Alexei WMI_PS_DEV_PROFILE_CFG_READ_EVENTID = 0x1942, 16658a4fa214SAhmad Masri WMI_TSF_SYNC_STATUS_EVENTID = 0x1973, 166608989f96SLior David WMI_TOF_SESSION_END_EVENTID = 0x1991, 166708989f96SLior David WMI_TOF_GET_CAPABILITIES_EVENTID = 0x1992, 166808989f96SLior David WMI_TOF_SET_LCR_EVENTID = 0x1993, 166908989f96SLior David WMI_TOF_SET_LCI_EVENTID = 0x1994, 167008989f96SLior David WMI_TOF_FTM_PER_DEST_RES_EVENTID = 0x1995, 1671761f8e4dSLazar Alexei WMI_TOF_CFG_RESPONDER_EVENTID = 0x1996, 16728ae5d62cSLior David WMI_TOF_SET_TX_RX_OFFSET_EVENTID = 0x1997, 16738ae5d62cSLior David WMI_TOF_GET_TX_RX_OFFSET_EVENTID = 0x1998, 1674761f8e4dSLazar Alexei WMI_TOF_CHANNEL_INFO_EVENTID = 0x1999, 1675cbf795c1SLior David WMI_GET_RF_SECTOR_PARAMS_DONE_EVENTID = 0x19A0, 1676cbf795c1SLior David WMI_SET_RF_SECTOR_PARAMS_DONE_EVENTID = 0x19A1, 1677cbf795c1SLior David WMI_GET_SELECTED_RF_SECTOR_INDEX_DONE_EVENTID = 0x19A2, 1678cbf795c1SLior David WMI_SET_SELECTED_RF_SECTOR_INDEX_DONE_EVENTID = 0x19A3, 1679cbf795c1SLior David WMI_SET_RF_SECTOR_ON_DONE_EVENTID = 0x19A4, 16808ae5d62cSLior David WMI_PRIO_TX_SECTORS_ORDER_EVENTID = 0x19A5, 16818ae5d62cSLior David WMI_PRIO_TX_SECTORS_NUMBER_EVENTID = 0x19A6, 16828ae5d62cSLior David WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_EVENTID = 0x19A7, 16838a4fa214SAhmad Masri WMI_BF_CONTROL_EVENTID = 0x19AA, 1684*96c93589SGidon Studinski WMI_TX_STATUS_RING_CFG_DONE_EVENTID = 0x19C0, 1685*96c93589SGidon Studinski WMI_RX_STATUS_RING_CFG_DONE_EVENTID = 0x19C1, 1686*96c93589SGidon Studinski WMI_TX_DESC_RING_CFG_DONE_EVENTID = 0x19C2, 1687*96c93589SGidon Studinski WMI_RX_DESC_RING_CFG_DONE_EVENTID = 0x19C3, 1688*96c93589SGidon Studinski WMI_CFG_DEF_RX_OFFLOAD_DONE_EVENTID = 0x19C5, 1689761f8e4dSLazar Alexei WMI_SCHEDULING_SCHEME_EVENTID = 0x1A01, 1690761f8e4dSLazar Alexei WMI_FIXED_SCHEDULING_CONFIG_COMPLETE_EVENTID = 0x1A02, 1691761f8e4dSLazar Alexei WMI_ENABLE_FIXED_SCHEDULING_COMPLETE_EVENTID = 0x1A03, 1692761f8e4dSLazar Alexei WMI_SET_MULTI_DIRECTED_OMNIS_CONFIG_EVENTID = 0x1A04, 1693761f8e4dSLazar Alexei WMI_SET_LONG_RANGE_CONFIG_COMPLETE_EVENTID = 0x1A05, 16948a4fa214SAhmad Masri WMI_GET_ASSOC_LIST_RES_EVENTID = 0x1A06, 16958a4fa214SAhmad Masri WMI_GET_CCA_INDICATIONS_EVENTID = 0x1A07, 16968a4fa214SAhmad Masri WMI_SET_CCA_INDICATIONS_BI_AVG_NUM_EVENTID = 0x1A08, 16978a4fa214SAhmad Masri WMI_INTERNAL_FW_EVENT_EVENTID = 0x1A0A, 16988a4fa214SAhmad Masri WMI_INTERNAL_FW_IOCTL_EVENTID = 0x1A0B, 16992be7d22fSVladimir Kondratiev WMI_SET_CHANNEL_EVENTID = 0x9000, 17002be7d22fSVladimir Kondratiev WMI_ASSOC_REQ_EVENTID = 0x9001, 17012be7d22fSVladimir Kondratiev WMI_EAPOL_RX_EVENTID = 0x9002, 17022be7d22fSVladimir Kondratiev WMI_MAC_ADDR_RESP_EVENTID = 0x9003, 17032be7d22fSVladimir Kondratiev WMI_FW_VER_EVENTID = 0x9004, 1704b874ddecSLior David WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENTID = 0x9005, 17058a4fa214SAhmad Masri WMI_INTERNAL_FW_SET_CHANNEL = 0x9006, 1706761f8e4dSLazar Alexei WMI_COMMAND_NOT_SUPPORTED_EVENTID = 0xFFFF, 17072be7d22fSVladimir Kondratiev }; 17082be7d22fSVladimir Kondratiev 1709b874ddecSLior David /* Events data structures */ 1710b8023177SVladimir Kondratiev enum wmi_fw_status { 1711b874ddecSLior David WMI_FW_STATUS_SUCCESS = 0x00, 1712b874ddecSLior David WMI_FW_STATUS_FAILURE = 0x01, 1713b8023177SVladimir Kondratiev }; 1714b8023177SVladimir Kondratiev 1715b874ddecSLior David /* WMI_RF_MGMT_STATUS_EVENTID */ 17162be7d22fSVladimir Kondratiev enum wmi_rf_status { 1717b874ddecSLior David WMI_RF_ENABLED = 0x00, 1718b874ddecSLior David WMI_RF_DISABLED_HW = 0x01, 1719b874ddecSLior David WMI_RF_DISABLED_SW = 0x02, 1720b874ddecSLior David WMI_RF_DISABLED_HW_SW = 0x03, 17212be7d22fSVladimir Kondratiev }; 17222be7d22fSVladimir Kondratiev 1723b874ddecSLior David /* WMI_RF_MGMT_STATUS_EVENTID */ 17242be7d22fSVladimir Kondratiev struct wmi_rf_mgmt_status_event { 17252be7d22fSVladimir Kondratiev __le32 rf_status; 17262be7d22fSVladimir Kondratiev } __packed; 17272be7d22fSVladimir Kondratiev 1728b874ddecSLior David /* WMI_GET_STATUS_DONE_EVENTID */ 17292be7d22fSVladimir Kondratiev struct wmi_get_status_done_event { 17302be7d22fSVladimir Kondratiev __le32 is_associated; 17312be7d22fSVladimir Kondratiev u8 cid; 17322be7d22fSVladimir Kondratiev u8 reserved0[3]; 17332be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 17342be7d22fSVladimir Kondratiev u8 channel; 17352be7d22fSVladimir Kondratiev u8 reserved1; 17362be7d22fSVladimir Kondratiev u8 network_type; 17372be7d22fSVladimir Kondratiev u8 reserved2[3]; 17382be7d22fSVladimir Kondratiev __le32 ssid_len; 17392be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 17402be7d22fSVladimir Kondratiev __le32 rf_status; 17412be7d22fSVladimir Kondratiev __le32 is_secured; 17422be7d22fSVladimir Kondratiev } __packed; 17432be7d22fSVladimir Kondratiev 1744b874ddecSLior David /* WMI_FW_VER_EVENTID */ 17452be7d22fSVladimir Kondratiev struct wmi_fw_ver_event { 17460163b031SMaya Erez /* FW image version */ 17470163b031SMaya Erez __le32 fw_major; 17480163b031SMaya Erez __le32 fw_minor; 17490163b031SMaya Erez __le32 fw_subminor; 17500163b031SMaya Erez __le32 fw_build; 17510163b031SMaya Erez /* FW image build time stamp */ 17520163b031SMaya Erez __le32 hour; 17530163b031SMaya Erez __le32 minute; 17540163b031SMaya Erez __le32 second; 17550163b031SMaya Erez __le32 day; 17560163b031SMaya Erez __le32 month; 17570163b031SMaya Erez __le32 year; 17580163b031SMaya Erez /* Boot Loader image version */ 17590163b031SMaya Erez __le32 bl_major; 17600163b031SMaya Erez __le32 bl_minor; 17610163b031SMaya Erez __le32 bl_subminor; 17620163b031SMaya Erez __le32 bl_build; 1763761f8e4dSLazar Alexei /* The number of entries in the FW capabilities array */ 176408989f96SLior David u8 fw_capabilities_len; 176508989f96SLior David u8 reserved[3]; 176608989f96SLior David /* FW capabilities info 176708989f96SLior David * Must be the last member of the struct 176808989f96SLior David */ 176908989f96SLior David __le32 fw_capabilities[0]; 17700163b031SMaya Erez } __packed; 17710163b031SMaya Erez 17720163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */ 17730163b031SMaya Erez enum rf_type { 17740163b031SMaya Erez RF_UNKNOWN = 0x00, 17750163b031SMaya Erez RF_MARLON = 0x01, 17760163b031SMaya Erez RF_SPARROW = 0x02, 17778a4fa214SAhmad Masri RF_TALYNA1 = 0x03, 17788a4fa214SAhmad Masri RF_TALYNA2 = 0x04, 17790163b031SMaya Erez }; 17800163b031SMaya Erez 17810163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */ 17820163b031SMaya Erez enum board_file_rf_type { 17830163b031SMaya Erez BF_RF_MARLON = 0x00, 17840163b031SMaya Erez BF_RF_SPARROW = 0x01, 17858a4fa214SAhmad Masri BF_RF_TALYNA1 = 0x02, 17868a4fa214SAhmad Masri BF_RF_TALYNA2 = 0x03, 17870163b031SMaya Erez }; 17880163b031SMaya Erez 17890163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */ 17900163b031SMaya Erez enum rf_status { 17910163b031SMaya Erez RF_OK = 0x00, 17920163b031SMaya Erez RF_NO_COMM = 0x01, 17930163b031SMaya Erez RF_WRONG_BOARD_FILE = 0x02, 17940163b031SMaya Erez }; 17950163b031SMaya Erez 17960163b031SMaya Erez /* WMI_GET_RF_STATUS_EVENTID */ 17970163b031SMaya Erez struct wmi_get_rf_status_event { 17980163b031SMaya Erez /* enum rf_type */ 17990163b031SMaya Erez __le32 rf_type; 18000163b031SMaya Erez /* attached RFs bit vector */ 18010163b031SMaya Erez __le32 attached_rf_vector; 18020163b031SMaya Erez /* enabled RFs bit vector */ 18030163b031SMaya Erez __le32 enabled_rf_vector; 18040163b031SMaya Erez /* enum rf_status, refers to enabled RFs */ 18050163b031SMaya Erez u8 rf_status[32]; 18060163b031SMaya Erez /* enum board file RF type */ 18070163b031SMaya Erez __le32 board_file_rf_type; 18080163b031SMaya Erez /* board file platform type */ 18090163b031SMaya Erez __le32 board_file_platform_type; 18100163b031SMaya Erez /* board file version */ 18110163b031SMaya Erez __le32 board_file_version; 1812761f8e4dSLazar Alexei /* enabled XIFs bit vector */ 1813761f8e4dSLazar Alexei __le32 enabled_xif_vector; 1814761f8e4dSLazar Alexei __le32 reserved; 18150163b031SMaya Erez } __packed; 18160163b031SMaya Erez 18170163b031SMaya Erez /* WMI_GET_BASEBAND_TYPE_EVENTID */ 18180163b031SMaya Erez enum baseband_type { 18190163b031SMaya Erez BASEBAND_UNKNOWN = 0x00, 18200163b031SMaya Erez BASEBAND_SPARROW_M_A0 = 0x03, 18210163b031SMaya Erez BASEBAND_SPARROW_M_A1 = 0x04, 18220163b031SMaya Erez BASEBAND_SPARROW_M_B0 = 0x05, 18230163b031SMaya Erez BASEBAND_SPARROW_M_C0 = 0x06, 18240163b031SMaya Erez BASEBAND_SPARROW_M_D0 = 0x07, 18258ae5d62cSLior David BASEBAND_TALYN_M_A0 = 0x08, 18268a4fa214SAhmad Masri BASEBAND_TALYN_M_B0 = 0x09, 18270163b031SMaya Erez }; 18280163b031SMaya Erez 18290163b031SMaya Erez /* WMI_GET_BASEBAND_TYPE_EVENTID */ 18300163b031SMaya Erez struct wmi_get_baseband_type_event { 18310163b031SMaya Erez /* enum baseband_type */ 18320163b031SMaya Erez __le32 baseband_type; 18332be7d22fSVladimir Kondratiev } __packed; 18342be7d22fSVladimir Kondratiev 1835b874ddecSLior David /* WMI_MAC_ADDR_RESP_EVENTID */ 18362be7d22fSVladimir Kondratiev struct wmi_mac_addr_resp_event { 18372be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 18382be7d22fSVladimir Kondratiev u8 auth_mode; 18392be7d22fSVladimir Kondratiev u8 crypt_mode; 18402be7d22fSVladimir Kondratiev __le32 offload_mode; 18412be7d22fSVladimir Kondratiev } __packed; 18422be7d22fSVladimir Kondratiev 1843b874ddecSLior David /* WMI_EAPOL_RX_EVENTID */ 18442be7d22fSVladimir Kondratiev struct wmi_eapol_rx_event { 18452be7d22fSVladimir Kondratiev u8 src_mac[WMI_MAC_LEN]; 18462be7d22fSVladimir Kondratiev __le16 eapol_len; 18472be7d22fSVladimir Kondratiev u8 eapol[0]; 18482be7d22fSVladimir Kondratiev } __packed; 18492be7d22fSVladimir Kondratiev 1850b874ddecSLior David /* WMI_READY_EVENTID */ 18512be7d22fSVladimir Kondratiev enum wmi_phy_capability { 1852b874ddecSLior David WMI_11A_CAPABILITY = 0x01, 1853b874ddecSLior David WMI_11G_CAPABILITY = 0x02, 1854b874ddecSLior David WMI_11AG_CAPABILITY = 0x03, 1855b874ddecSLior David WMI_11NA_CAPABILITY = 0x04, 1856b874ddecSLior David WMI_11NG_CAPABILITY = 0x05, 1857b874ddecSLior David WMI_11NAG_CAPABILITY = 0x06, 1858b874ddecSLior David WMI_11AD_CAPABILITY = 0x07, 1859b874ddecSLior David WMI_11N_CAPABILITY_OFFSET = 0x03, 18602be7d22fSVladimir Kondratiev }; 18612be7d22fSVladimir Kondratiev 18622be7d22fSVladimir Kondratiev struct wmi_ready_event { 18632be7d22fSVladimir Kondratiev __le32 sw_version; 18642be7d22fSVladimir Kondratiev __le32 abi_version; 18652be7d22fSVladimir Kondratiev u8 mac[WMI_MAC_LEN]; 1866b874ddecSLior David /* enum wmi_phy_capability */ 1867b874ddecSLior David u8 phy_capability; 1868b8023177SVladimir Kondratiev u8 numof_additional_mids; 1869761f8e4dSLazar Alexei /* rfc read calibration result. 5..15 */ 1870eb4c0215SDedy Lansky u8 rfc_read_calib_result; 18718a4fa214SAhmad Masri /* Max associated STAs supported by FW in AP mode (default 0 means 8 18728a4fa214SAhmad Masri * STA) 18738a4fa214SAhmad Masri */ 18748a4fa214SAhmad Masri u8 max_assoc_sta; 18758a4fa214SAhmad Masri u8 reserved[2]; 18762be7d22fSVladimir Kondratiev } __packed; 18772be7d22fSVladimir Kondratiev 1878b874ddecSLior David /* WMI_NOTIFY_REQ_DONE_EVENTID */ 18792be7d22fSVladimir Kondratiev struct wmi_notify_req_done_event { 1880b874ddecSLior David /* beamforming status, 0: fail; 1: OK; 2: retrying */ 1881b874ddecSLior David __le32 status; 18822be7d22fSVladimir Kondratiev __le64 tsf; 188330868f5dSDedy Lansky s8 rssi; 188430868f5dSDedy Lansky u8 reserved0[3]; 18852be7d22fSVladimir Kondratiev __le32 tx_tpt; 18862be7d22fSVladimir Kondratiev __le32 tx_goodput; 18872be7d22fSVladimir Kondratiev __le32 rx_goodput; 18882be7d22fSVladimir Kondratiev __le16 bf_mcs; 18892be7d22fSVladimir Kondratiev __le16 my_rx_sector; 18902be7d22fSVladimir Kondratiev __le16 my_tx_sector; 18912be7d22fSVladimir Kondratiev __le16 other_rx_sector; 18922be7d22fSVladimir Kondratiev __le16 other_tx_sector; 18932be7d22fSVladimir Kondratiev __le16 range; 1894b8023177SVladimir Kondratiev u8 sqi; 1895b8023177SVladimir Kondratiev u8 reserved[3]; 18962be7d22fSVladimir Kondratiev } __packed; 18972be7d22fSVladimir Kondratiev 1898b874ddecSLior David /* WMI_CONNECT_EVENTID */ 18992be7d22fSVladimir Kondratiev struct wmi_connect_event { 19002be7d22fSVladimir Kondratiev u8 channel; 19012be7d22fSVladimir Kondratiev u8 reserved0; 19022be7d22fSVladimir Kondratiev u8 bssid[WMI_MAC_LEN]; 19032be7d22fSVladimir Kondratiev __le16 listen_interval; 19042be7d22fSVladimir Kondratiev __le16 beacon_interval; 19052be7d22fSVladimir Kondratiev u8 network_type; 19062be7d22fSVladimir Kondratiev u8 reserved1[3]; 19072be7d22fSVladimir Kondratiev u8 beacon_ie_len; 19082be7d22fSVladimir Kondratiev u8 assoc_req_len; 19092be7d22fSVladimir Kondratiev u8 assoc_resp_len; 19102be7d22fSVladimir Kondratiev u8 cid; 1911a52fb913SLior David u8 aid; 1912a52fb913SLior David u8 reserved2[2]; 1913b874ddecSLior David /* not in use */ 19142be7d22fSVladimir Kondratiev u8 assoc_info[0]; 19152be7d22fSVladimir Kondratiev } __packed; 19162be7d22fSVladimir Kondratiev 1917849a564bSDedy Lansky /* disconnect_reason */ 19182be7d22fSVladimir Kondratiev enum wmi_disconnect_reason { 1919b874ddecSLior David WMI_DIS_REASON_NO_NETWORK_AVAIL = 0x01, 1920b874ddecSLior David /* bmiss */ 1921b874ddecSLior David WMI_DIS_REASON_LOST_LINK = 0x02, 1922b874ddecSLior David WMI_DIS_REASON_DISCONNECT_CMD = 0x03, 1923b874ddecSLior David WMI_DIS_REASON_BSS_DISCONNECTED = 0x04, 1924b874ddecSLior David WMI_DIS_REASON_AUTH_FAILED = 0x05, 1925b874ddecSLior David WMI_DIS_REASON_ASSOC_FAILED = 0x06, 1926b874ddecSLior David WMI_DIS_REASON_NO_RESOURCES_AVAIL = 0x07, 1927b874ddecSLior David WMI_DIS_REASON_CSERV_DISCONNECT = 0x08, 1928b874ddecSLior David WMI_DIS_REASON_INVALID_PROFILE = 0x0A, 1929b874ddecSLior David WMI_DIS_REASON_DOT11H_CHANNEL_SWITCH = 0x0B, 1930b874ddecSLior David WMI_DIS_REASON_PROFILE_MISMATCH = 0x0C, 1931b874ddecSLior David WMI_DIS_REASON_CONNECTION_EVICTED = 0x0D, 1932b874ddecSLior David WMI_DIS_REASON_IBSS_MERGE = 0x0E, 19332be7d22fSVladimir Kondratiev }; 19342be7d22fSVladimir Kondratiev 1935849a564bSDedy Lansky /* WMI_DISCONNECT_EVENTID */ 19362be7d22fSVladimir Kondratiev struct wmi_disconnect_event { 1937b874ddecSLior David /* reason code, see 802.11 spec. */ 1938b874ddecSLior David __le16 protocol_reason_status; 1939b874ddecSLior David /* set if known */ 1940b874ddecSLior David u8 bssid[WMI_MAC_LEN]; 1941b874ddecSLior David /* see enum wmi_disconnect_reason */ 1942b874ddecSLior David u8 disconnect_reason; 1943b874ddecSLior David /* last assoc req may passed to host - not in used */ 1944b874ddecSLior David u8 assoc_resp_len; 1945b874ddecSLior David /* last assoc req may passed to host - not in used */ 1946b874ddecSLior David u8 assoc_info[0]; 19472be7d22fSVladimir Kondratiev } __packed; 19482be7d22fSVladimir Kondratiev 1949b874ddecSLior David /* WMI_SCAN_COMPLETE_EVENTID */ 19506c2faf09SVladimir Kondratiev enum scan_status { 1951b874ddecSLior David WMI_SCAN_SUCCESS = 0x00, 1952b874ddecSLior David WMI_SCAN_FAILED = 0x01, 1953b874ddecSLior David WMI_SCAN_ABORTED = 0x02, 1954b874ddecSLior David WMI_SCAN_REJECTED = 0x03, 1955b874ddecSLior David WMI_SCAN_ABORT_REJECTED = 0x04, 19566c2faf09SVladimir Kondratiev }; 19576c2faf09SVladimir Kondratiev 19582be7d22fSVladimir Kondratiev struct wmi_scan_complete_event { 1959b874ddecSLior David /* enum scan_status */ 1960b874ddecSLior David __le32 status; 19612be7d22fSVladimir Kondratiev } __packed; 19622be7d22fSVladimir Kondratiev 1963a5dc6883SDedy Lansky /* wmi_rx_mgmt_info */ 1964a5dc6883SDedy Lansky struct wmi_rx_mgmt_info { 1965a5dc6883SDedy Lansky u8 mcs; 1966a5dc6883SDedy Lansky s8 rssi; 1967a5dc6883SDedy Lansky u8 range; 1968a5dc6883SDedy Lansky u8 sqi; 1969a5dc6883SDedy Lansky __le16 stype; 1970a5dc6883SDedy Lansky __le16 status; 1971a5dc6883SDedy Lansky __le32 len; 1972a5dc6883SDedy Lansky /* Not resolved when == 0xFFFFFFFF == > Broadcast to all MIDS */ 1973a5dc6883SDedy Lansky u8 qid; 1974a5dc6883SDedy Lansky /* Not resolved when == 0xFFFFFFFF == > Broadcast to all MIDS */ 1975a5dc6883SDedy Lansky u8 mid; 1976a5dc6883SDedy Lansky u8 cid; 1977a5dc6883SDedy Lansky /* From Radio MNGR */ 1978a5dc6883SDedy Lansky u8 channel; 1979a5dc6883SDedy Lansky } __packed; 1980a5dc6883SDedy Lansky 1981a5dc6883SDedy Lansky /* WMI_START_SCHED_SCAN_EVENTID */ 1982a5dc6883SDedy Lansky enum wmi_pno_result { 1983a5dc6883SDedy Lansky WMI_PNO_SUCCESS = 0x00, 1984a5dc6883SDedy Lansky WMI_PNO_REJECT = 0x01, 1985a5dc6883SDedy Lansky WMI_PNO_INVALID_PARAMETERS = 0x02, 1986a5dc6883SDedy Lansky WMI_PNO_NOT_ENABLED = 0x03, 1987a5dc6883SDedy Lansky }; 1988a5dc6883SDedy Lansky 1989a5dc6883SDedy Lansky struct wmi_start_sched_scan_event { 19908a4fa214SAhmad Masri /* wmi_pno_result */ 1991a5dc6883SDedy Lansky u8 result; 1992a5dc6883SDedy Lansky u8 reserved[3]; 1993a5dc6883SDedy Lansky } __packed; 1994a5dc6883SDedy Lansky 1995a5dc6883SDedy Lansky struct wmi_stop_sched_scan_event { 19968a4fa214SAhmad Masri /* wmi_pno_result */ 1997a5dc6883SDedy Lansky u8 result; 1998a5dc6883SDedy Lansky u8 reserved[3]; 1999a5dc6883SDedy Lansky } __packed; 2000a5dc6883SDedy Lansky 2001a5dc6883SDedy Lansky struct wmi_sched_scan_result_event { 2002a5dc6883SDedy Lansky struct wmi_rx_mgmt_info info; 2003a5dc6883SDedy Lansky u8 payload[0]; 2004a5dc6883SDedy Lansky } __packed; 2005a5dc6883SDedy Lansky 2006b874ddecSLior David /* WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENT */ 2007b874ddecSLior David enum wmi_acs_info_bitmask { 2008b874ddecSLior David WMI_ACS_INFO_BITMASK_BEACON_FOUND = 0x01, 2009b874ddecSLior David WMI_ACS_INFO_BITMASK_BUSY_TIME = 0x02, 2010b874ddecSLior David WMI_ACS_INFO_BITMASK_TX_TIME = 0x04, 2011b874ddecSLior David WMI_ACS_INFO_BITMASK_RX_TIME = 0x08, 2012b874ddecSLior David WMI_ACS_INFO_BITMASK_NOISE = 0x10, 20132be7d22fSVladimir Kondratiev }; 20142be7d22fSVladimir Kondratiev 2015b874ddecSLior David struct scan_acs_info { 2016b874ddecSLior David u8 channel; 2017b874ddecSLior David u8 beacon_found; 2018b874ddecSLior David /* msec */ 2019b874ddecSLior David __le16 busy_time; 2020b874ddecSLior David __le16 tx_time; 2021b874ddecSLior David __le16 rx_time; 2022b874ddecSLior David u8 noise; 2023b874ddecSLior David u8 reserved[3]; 2024b874ddecSLior David } __packed; 2025b874ddecSLior David 2026b874ddecSLior David struct wmi_acs_passive_scan_complete_event { 2027b874ddecSLior David __le32 dwell_time; 2028b874ddecSLior David /* valid fields within channel info according to 2029b874ddecSLior David * their appearance in struct order 2030b874ddecSLior David */ 2031b874ddecSLior David __le16 filled; 2032b874ddecSLior David u8 num_scanned_channels; 2033b874ddecSLior David u8 reserved; 2034b874ddecSLior David struct scan_acs_info scan_info_list[0]; 2035b874ddecSLior David } __packed; 2036b874ddecSLior David 2037b874ddecSLior David /* WMI_BA_STATUS_EVENTID */ 2038b874ddecSLior David enum wmi_vring_ba_status { 2039b874ddecSLior David WMI_BA_AGREED = 0x00, 2040b874ddecSLior David WMI_BA_NON_AGREED = 0x01, 2041b874ddecSLior David /* BA_EN in middle of teardown flow */ 2042b874ddecSLior David WMI_BA_TD_WIP = 0x02, 2043b874ddecSLior David /* BA_DIS or BA_EN in middle of BA SETUP flow */ 2044b874ddecSLior David WMI_BA_SETUP_WIP = 0x03, 2045b874ddecSLior David /* BA_EN when the BA session is already active */ 2046b874ddecSLior David WMI_BA_SESSION_ACTIVE = 0x04, 2047b874ddecSLior David /* BA_DIS when the BA session is not active */ 2048b874ddecSLior David WMI_BA_SESSION_NOT_ACTIVE = 0x05, 2049b874ddecSLior David }; 2050b874ddecSLior David 2051b874ddecSLior David struct wmi_ba_status_event { 2052b874ddecSLior David /* enum wmi_vring_ba_status */ 2053b874ddecSLior David __le16 status; 20542be7d22fSVladimir Kondratiev u8 reserved[2]; 20552be7d22fSVladimir Kondratiev u8 ringid; 20562be7d22fSVladimir Kondratiev u8 agg_wsize; 20572be7d22fSVladimir Kondratiev __le16 ba_timeout; 2058cbcf5866SVladimir Kondratiev u8 amsdu; 20592be7d22fSVladimir Kondratiev } __packed; 20602be7d22fSVladimir Kondratiev 2061b874ddecSLior David /* WMI_DELBA_EVENTID */ 20622be7d22fSVladimir Kondratiev struct wmi_delba_event { 20638a4fa214SAhmad Masri /* Used for cid less than 8. For higher cid set 20648a4fa214SAhmad Masri * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead 20658a4fa214SAhmad Masri */ 20662be7d22fSVladimir Kondratiev u8 cidxtid; 20672be7d22fSVladimir Kondratiev u8 from_initiator; 20682be7d22fSVladimir Kondratiev __le16 reason; 20698a4fa214SAhmad Masri /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ 20708a4fa214SAhmad Masri u8 cid; 20718a4fa214SAhmad Masri /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ 20728a4fa214SAhmad Masri u8 tid; 20738a4fa214SAhmad Masri u8 reserved[2]; 20742be7d22fSVladimir Kondratiev } __packed; 20752be7d22fSVladimir Kondratiev 2076b874ddecSLior David /* WMI_VRING_CFG_DONE_EVENTID */ 20772be7d22fSVladimir Kondratiev struct wmi_vring_cfg_done_event { 20782be7d22fSVladimir Kondratiev u8 ringid; 20792be7d22fSVladimir Kondratiev u8 status; 20802be7d22fSVladimir Kondratiev u8 reserved[2]; 20812be7d22fSVladimir Kondratiev __le32 tx_vring_tail_ptr; 20822be7d22fSVladimir Kondratiev } __packed; 20832be7d22fSVladimir Kondratiev 2084b874ddecSLior David /* WMI_RCP_ADDBA_RESP_SENT_EVENTID */ 20852be7d22fSVladimir Kondratiev struct wmi_rcp_addba_resp_sent_event { 20868a4fa214SAhmad Masri /* Used for cid less than 8. For higher cid set 20878a4fa214SAhmad Masri * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead 20888a4fa214SAhmad Masri */ 20892be7d22fSVladimir Kondratiev u8 cidxtid; 20902be7d22fSVladimir Kondratiev u8 reserved; 20912be7d22fSVladimir Kondratiev __le16 status; 20928a4fa214SAhmad Masri /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ 20938a4fa214SAhmad Masri u8 cid; 20948a4fa214SAhmad Masri /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ 20958a4fa214SAhmad Masri u8 tid; 20968a4fa214SAhmad Masri u8 reserved2[2]; 20972be7d22fSVladimir Kondratiev } __packed; 20982be7d22fSVladimir Kondratiev 2099*96c93589SGidon Studinski /* WMI_TX_STATUS_RING_CFG_DONE_EVENTID */ 2100*96c93589SGidon Studinski struct wmi_tx_status_ring_cfg_done_event { 2101*96c93589SGidon Studinski u8 ring_id; 2102*96c93589SGidon Studinski /* wmi_fw_status */ 2103*96c93589SGidon Studinski u8 status; 2104*96c93589SGidon Studinski u8 reserved[2]; 2105*96c93589SGidon Studinski __le32 ring_tail_ptr; 2106*96c93589SGidon Studinski } __packed; 2107*96c93589SGidon Studinski 2108*96c93589SGidon Studinski /* WMI_RX_STATUS_RING_CFG_DONE_EVENTID */ 2109*96c93589SGidon Studinski struct wmi_rx_status_ring_cfg_done_event { 2110*96c93589SGidon Studinski u8 ring_id; 2111*96c93589SGidon Studinski /* wmi_fw_status */ 2112*96c93589SGidon Studinski u8 status; 2113*96c93589SGidon Studinski u8 reserved[2]; 2114*96c93589SGidon Studinski __le32 ring_tail_ptr; 2115*96c93589SGidon Studinski } __packed; 2116*96c93589SGidon Studinski 2117*96c93589SGidon Studinski /* WMI_CFG_DEF_RX_OFFLOAD_DONE_EVENTID */ 2118*96c93589SGidon Studinski struct wmi_cfg_def_rx_offload_done_event { 2119*96c93589SGidon Studinski /* wmi_fw_status */ 2120*96c93589SGidon Studinski u8 status; 2121*96c93589SGidon Studinski u8 reserved[3]; 2122*96c93589SGidon Studinski } __packed; 2123*96c93589SGidon Studinski 2124*96c93589SGidon Studinski /* WMI_TX_DESC_RING_CFG_DONE_EVENTID */ 2125*96c93589SGidon Studinski struct wmi_tx_desc_ring_cfg_done_event { 2126*96c93589SGidon Studinski u8 ring_id; 2127*96c93589SGidon Studinski /* wmi_fw_status */ 2128*96c93589SGidon Studinski u8 status; 2129*96c93589SGidon Studinski u8 reserved[2]; 2130*96c93589SGidon Studinski __le32 ring_tail_ptr; 2131*96c93589SGidon Studinski } __packed; 2132*96c93589SGidon Studinski 2133*96c93589SGidon Studinski /* WMI_RX_DESC_RING_CFG_DONE_EVENTID */ 2134*96c93589SGidon Studinski struct wmi_rx_desc_ring_cfg_done_event { 2135*96c93589SGidon Studinski u8 ring_id; 2136*96c93589SGidon Studinski /* wmi_fw_status */ 2137*96c93589SGidon Studinski u8 status; 2138*96c93589SGidon Studinski u8 reserved[2]; 2139*96c93589SGidon Studinski __le32 ring_tail_ptr; 2140*96c93589SGidon Studinski } __packed; 2141*96c93589SGidon Studinski 2142b874ddecSLior David /* WMI_RCP_ADDBA_REQ_EVENTID */ 21432be7d22fSVladimir Kondratiev struct wmi_rcp_addba_req_event { 21448a4fa214SAhmad Masri /* Used for cid less than 8. For higher cid set 21458a4fa214SAhmad Masri * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead 21468a4fa214SAhmad Masri */ 21472be7d22fSVladimir Kondratiev u8 cidxtid; 21482be7d22fSVladimir Kondratiev u8 dialog_token; 2149b874ddecSLior David /* ieee80211_ba_parameterset as it received */ 2150b874ddecSLior David __le16 ba_param_set; 21512be7d22fSVladimir Kondratiev __le16 ba_timeout; 2152b874ddecSLior David /* ieee80211_ba_seqstrl field as it received */ 2153b874ddecSLior David __le16 ba_seq_ctrl; 21548a4fa214SAhmad Masri /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ 21558a4fa214SAhmad Masri u8 cid; 21568a4fa214SAhmad Masri /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ 21578a4fa214SAhmad Masri u8 tid; 21588a4fa214SAhmad Masri u8 reserved[2]; 21592be7d22fSVladimir Kondratiev } __packed; 21602be7d22fSVladimir Kondratiev 2161b874ddecSLior David /* WMI_CFG_RX_CHAIN_DONE_EVENTID */ 21622be7d22fSVladimir Kondratiev enum wmi_cfg_rx_chain_done_event_status { 2163b874ddecSLior David WMI_CFG_RX_CHAIN_SUCCESS = 0x01, 21642be7d22fSVladimir Kondratiev }; 21652be7d22fSVladimir Kondratiev 21662be7d22fSVladimir Kondratiev struct wmi_cfg_rx_chain_done_event { 2167b874ddecSLior David /* V-Ring Tail pointer */ 2168b874ddecSLior David __le32 rx_ring_tail_ptr; 21692be7d22fSVladimir Kondratiev __le32 status; 21702be7d22fSVladimir Kondratiev } __packed; 21712be7d22fSVladimir Kondratiev 2172b874ddecSLior David /* WMI_WBE_LINK_DOWN_EVENTID */ 21732be7d22fSVladimir Kondratiev enum wmi_wbe_link_down_event_reason { 2174b874ddecSLior David WMI_WBE_REASON_USER_REQUEST = 0x00, 2175b874ddecSLior David WMI_WBE_REASON_RX_DISASSOC = 0x01, 2176b874ddecSLior David WMI_WBE_REASON_BAD_PHY_LINK = 0x02, 21772be7d22fSVladimir Kondratiev }; 21782be7d22fSVladimir Kondratiev 2179b874ddecSLior David /* WMI_WBE_LINK_DOWN_EVENTID */ 21802be7d22fSVladimir Kondratiev struct wmi_wbe_link_down_event { 21812be7d22fSVladimir Kondratiev u8 cid; 21822be7d22fSVladimir Kondratiev u8 reserved[3]; 21832be7d22fSVladimir Kondratiev __le32 reason; 21842be7d22fSVladimir Kondratiev } __packed; 21852be7d22fSVladimir Kondratiev 2186b874ddecSLior David /* WMI_DATA_PORT_OPEN_EVENTID */ 21872be7d22fSVladimir Kondratiev struct wmi_data_port_open_event { 21882be7d22fSVladimir Kondratiev u8 cid; 21892be7d22fSVladimir Kondratiev u8 reserved[3]; 21902be7d22fSVladimir Kondratiev } __packed; 21912be7d22fSVladimir Kondratiev 2192*96c93589SGidon Studinski /* WMI_RING_EN_EVENTID */ 2193*96c93589SGidon Studinski struct wmi_ring_en_event { 2194*96c93589SGidon Studinski u8 ring_index; 2195230d8442SVladimir Kondratiev u8 reserved[3]; 2196230d8442SVladimir Kondratiev } __packed; 2197230d8442SVladimir Kondratiev 2198b874ddecSLior David /* WMI_GET_PCP_CHANNEL_EVENTID */ 21992be7d22fSVladimir Kondratiev struct wmi_get_pcp_channel_event { 22002be7d22fSVladimir Kondratiev u8 channel; 22012be7d22fSVladimir Kondratiev u8 reserved[3]; 22022be7d22fSVladimir Kondratiev } __packed; 22032be7d22fSVladimir Kondratiev 2204b874ddecSLior David /* WMI_P2P_CFG_DONE_EVENTID */ 22058c679675SVladimir Kondratiev struct wmi_p2p_cfg_done_event { 2206b874ddecSLior David /* wmi_fw_status */ 2207b874ddecSLior David u8 status; 22088c679675SVladimir Kondratiev u8 reserved[3]; 22098c679675SVladimir Kondratiev } __packed; 22108c679675SVladimir Kondratiev 2211b874ddecSLior David /* WMI_PORT_ALLOCATED_EVENTID */ 2212b8023177SVladimir Kondratiev struct wmi_port_allocated_event { 2213b874ddecSLior David /* wmi_fw_status */ 2214b874ddecSLior David u8 status; 2215b8023177SVladimir Kondratiev u8 reserved[3]; 2216b8023177SVladimir Kondratiev } __packed; 2217b8023177SVladimir Kondratiev 2218b874ddecSLior David /* WMI_PORT_DELETED_EVENTID */ 2219b8023177SVladimir Kondratiev struct wmi_port_deleted_event { 2220b874ddecSLior David /* wmi_fw_status */ 2221b874ddecSLior David u8 status; 2222b8023177SVladimir Kondratiev u8 reserved[3]; 2223b8023177SVladimir Kondratiev } __packed; 2224b8023177SVladimir Kondratiev 2225b874ddecSLior David /* WMI_LISTEN_STARTED_EVENTID */ 2226b8023177SVladimir Kondratiev struct wmi_listen_started_event { 2227b874ddecSLior David /* wmi_fw_status */ 2228b874ddecSLior David u8 status; 2229b8023177SVladimir Kondratiev u8 reserved[3]; 2230b8023177SVladimir Kondratiev } __packed; 2231b8023177SVladimir Kondratiev 2232b874ddecSLior David /* WMI_SEARCH_STARTED_EVENTID */ 2233b8023177SVladimir Kondratiev struct wmi_search_started_event { 2234b874ddecSLior David /* wmi_fw_status */ 2235b874ddecSLior David u8 status; 2236b8023177SVladimir Kondratiev u8 reserved[3]; 2237b8023177SVladimir Kondratiev } __packed; 2238b8023177SVladimir Kondratiev 2239b874ddecSLior David /* WMI_PCP_STARTED_EVENTID */ 2240b8023177SVladimir Kondratiev struct wmi_pcp_started_event { 2241b874ddecSLior David /* wmi_fw_status */ 2242b874ddecSLior David u8 status; 2243b8023177SVladimir Kondratiev u8 reserved[3]; 2244b8023177SVladimir Kondratiev } __packed; 2245b8023177SVladimir Kondratiev 2246b874ddecSLior David /* WMI_PCP_FACTOR_EVENTID */ 2247b8023177SVladimir Kondratiev struct wmi_pcp_factor_event { 2248b8023177SVladimir Kondratiev __le32 pcp_factor; 2249b8023177SVladimir Kondratiev } __packed; 2250b8023177SVladimir Kondratiev 22512be7d22fSVladimir Kondratiev enum wmi_sw_tx_status { 2252b874ddecSLior David WMI_TX_SW_STATUS_SUCCESS = 0x00, 2253b874ddecSLior David WMI_TX_SW_STATUS_FAILED_NO_RESOURCES = 0x01, 2254b874ddecSLior David WMI_TX_SW_STATUS_FAILED_TX = 0x02, 22552be7d22fSVladimir Kondratiev }; 22562be7d22fSVladimir Kondratiev 2257b874ddecSLior David /* WMI_SW_TX_COMPLETE_EVENTID */ 22582be7d22fSVladimir Kondratiev struct wmi_sw_tx_complete_event { 2259b874ddecSLior David /* enum wmi_sw_tx_status */ 2260b874ddecSLior David u8 status; 22612be7d22fSVladimir Kondratiev u8 reserved[3]; 22622be7d22fSVladimir Kondratiev } __packed; 22632be7d22fSVladimir Kondratiev 2264761f8e4dSLazar Alexei /* WMI_CORR_MEASURE_EVENTID - deprecated */ 2265b8023177SVladimir Kondratiev struct wmi_corr_measure_event { 2266b874ddecSLior David /* signed */ 2267b874ddecSLior David __le32 i; 2268b874ddecSLior David /* signed */ 2269b874ddecSLior David __le32 q; 2270b874ddecSLior David /* signed */ 2271b874ddecSLior David __le32 image_i; 2272b874ddecSLior David /* signed */ 2273b874ddecSLior David __le32 image_q; 2274b8023177SVladimir Kondratiev } __packed; 2275b8023177SVladimir Kondratiev 2276b874ddecSLior David /* WMI_READ_RSSI_EVENTID */ 2277b8023177SVladimir Kondratiev struct wmi_read_rssi_event { 2278b8023177SVladimir Kondratiev __le32 ina_rssi_adc_dbm; 2279b8023177SVladimir Kondratiev } __packed; 2280b8023177SVladimir Kondratiev 2281b874ddecSLior David /* WMI_GET_SSID_EVENTID */ 22822be7d22fSVladimir Kondratiev struct wmi_get_ssid_event { 22832be7d22fSVladimir Kondratiev __le32 ssid_len; 22842be7d22fSVladimir Kondratiev u8 ssid[WMI_MAX_SSID_LEN]; 22852be7d22fSVladimir Kondratiev } __packed; 22862be7d22fSVladimir Kondratiev 2287761f8e4dSLazar Alexei /* EVENT: WMI_RF_XPM_READ_RESULT_EVENTID */ 2288761f8e4dSLazar Alexei struct wmi_rf_xpm_read_result_event { 2289761f8e4dSLazar Alexei /* enum wmi_fw_status_e - success=0 or fail=1 */ 2290761f8e4dSLazar Alexei u8 status; 2291761f8e4dSLazar Alexei u8 reserved[3]; 2292761f8e4dSLazar Alexei /* requested num_bytes of data */ 2293761f8e4dSLazar Alexei u8 data_bytes[0]; 2294b874ddecSLior David } __packed; 2295b874ddecSLior David 2296761f8e4dSLazar Alexei /* EVENT: WMI_RF_XPM_WRITE_RESULT_EVENTID */ 2297761f8e4dSLazar Alexei struct wmi_rf_xpm_write_result_event { 2298761f8e4dSLazar Alexei /* enum wmi_fw_status_e - success=0 or fail=1 */ 2299761f8e4dSLazar Alexei u8 status; 2300761f8e4dSLazar Alexei u8 reserved[3]; 2301b874ddecSLior David } __packed; 2302b874ddecSLior David 2303b874ddecSLior David /* WMI_TX_MGMT_PACKET_EVENTID */ 23046c2faf09SVladimir Kondratiev struct wmi_tx_mgmt_packet_event { 23056c2faf09SVladimir Kondratiev u8 payload[0]; 23066c2faf09SVladimir Kondratiev } __packed; 23076c2faf09SVladimir Kondratiev 2308b874ddecSLior David /* WMI_RX_MGMT_PACKET_EVENTID */ 23092be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_packet_event { 23102be7d22fSVladimir Kondratiev struct wmi_rx_mgmt_info info; 23112be7d22fSVladimir Kondratiev u8 payload[0]; 23122be7d22fSVladimir Kondratiev } __packed; 23132be7d22fSVladimir Kondratiev 2314b874ddecSLior David /* WMI_ECHO_RSP_EVENTID */ 2315b874ddecSLior David struct wmi_echo_rsp_event { 23162be7d22fSVladimir Kondratiev __le32 echoed_value; 23172be7d22fSVladimir Kondratiev } __packed; 23182be7d22fSVladimir Kondratiev 2319761f8e4dSLazar Alexei /* WMI_RF_PWR_ON_DELAY_RSP_EVENTID */ 2320761f8e4dSLazar Alexei struct wmi_rf_pwr_on_delay_rsp_event { 2321761f8e4dSLazar Alexei /* wmi_fw_status */ 2322761f8e4dSLazar Alexei u8 status; 2323761f8e4dSLazar Alexei u8 reserved[3]; 2324761f8e4dSLazar Alexei } __packed; 2325761f8e4dSLazar Alexei 2326761f8e4dSLazar Alexei /* WMI_SET_HIGH_POWER_TABLE_PARAMS_EVENTID */ 2327761f8e4dSLazar Alexei struct wmi_set_high_power_table_params_event { 2328761f8e4dSLazar Alexei /* wmi_fw_status */ 2329761f8e4dSLazar Alexei u8 status; 2330761f8e4dSLazar Alexei u8 reserved[3]; 2331761f8e4dSLazar Alexei } __packed; 2332761f8e4dSLazar Alexei 23338a4fa214SAhmad Masri /* WMI_FIXED_SCHEDULING_UL_CONFIG_EVENTID */ 23348a4fa214SAhmad Masri struct wmi_fixed_scheduling_ul_config_event { 23358a4fa214SAhmad Masri /* wmi_fw_status */ 23368a4fa214SAhmad Masri u8 status; 23378a4fa214SAhmad Masri u8 reserved[3]; 23388a4fa214SAhmad Masri } __packed; 23398a4fa214SAhmad Masri 2340b874ddecSLior David /* WMI_TEMP_SENSE_DONE_EVENTID 2341b8023177SVladimir Kondratiev * 2342b8023177SVladimir Kondratiev * Measure MAC and radio temperatures 2343b8023177SVladimir Kondratiev */ 2344b8023177SVladimir Kondratiev struct wmi_temp_sense_done_event { 2345b874ddecSLior David /* Temperature times 1000 (actual temperature will be achieved by 2346b874ddecSLior David * dividing the value by 1000) 2347b874ddecSLior David */ 23488c679675SVladimir Kondratiev __le32 baseband_t1000; 2349b874ddecSLior David /* Temperature times 1000 (actual temperature will be achieved by 2350b874ddecSLior David * dividing the value by 1000) 2351b874ddecSLior David */ 23528c679675SVladimir Kondratiev __le32 rf_t1000; 2353b8023177SVladimir Kondratiev } __packed; 2354b8023177SVladimir Kondratiev 2355b874ddecSLior David #define WMI_SCAN_DWELL_TIME_MS (100) 2356b874ddecSLior David #define WMI_SURVEY_TIMEOUT_MS (10000) 2357b874ddecSLior David 2358b874ddecSLior David enum wmi_hidden_ssid { 2359b874ddecSLior David WMI_HIDDEN_SSID_DISABLED = 0x00, 2360b874ddecSLior David WMI_HIDDEN_SSID_SEND_EMPTY = 0x10, 2361b874ddecSLior David WMI_HIDDEN_SSID_CLEAR = 0xFE, 2362b874ddecSLior David }; 2363b874ddecSLior David 236410d599adSMaya Erez /* WMI_LED_CFG_CMDID 236510d599adSMaya Erez * 236610d599adSMaya Erez * Configure LED On\Off\Blinking operation 236710d599adSMaya Erez * 236810d599adSMaya Erez * Returned events: 236910d599adSMaya Erez * - WMI_LED_CFG_DONE_EVENTID 237010d599adSMaya Erez */ 237110d599adSMaya Erez enum led_mode { 237210d599adSMaya Erez LED_DISABLE = 0x00, 237310d599adSMaya Erez LED_ENABLE = 0x01, 237410d599adSMaya Erez }; 237510d599adSMaya Erez 237610d599adSMaya Erez /* The names of the led as 237710d599adSMaya Erez * described on HW schemes. 237810d599adSMaya Erez */ 237910d599adSMaya Erez enum wmi_led_id { 238010d599adSMaya Erez WMI_LED_WLAN = 0x00, 238110d599adSMaya Erez WMI_LED_WPAN = 0x01, 238210d599adSMaya Erez WMI_LED_WWAN = 0x02, 238310d599adSMaya Erez }; 238410d599adSMaya Erez 238510d599adSMaya Erez /* Led polarity mode. */ 238610d599adSMaya Erez enum wmi_led_polarity { 238710d599adSMaya Erez LED_POLARITY_HIGH_ACTIVE = 0x00, 238810d599adSMaya Erez LED_POLARITY_LOW_ACTIVE = 0x01, 238910d599adSMaya Erez }; 239010d599adSMaya Erez 239110d599adSMaya Erez /* Combination of on and off 239210d599adSMaya Erez * creates the blinking period 239310d599adSMaya Erez */ 239410d599adSMaya Erez struct wmi_led_blink_mode { 239510d599adSMaya Erez __le32 blink_on; 239610d599adSMaya Erez __le32 blink_off; 239710d599adSMaya Erez } __packed; 239810d599adSMaya Erez 239910d599adSMaya Erez /* WMI_LED_CFG_CMDID */ 240010d599adSMaya Erez struct wmi_led_cfg_cmd { 240110d599adSMaya Erez /* enum led_mode_e */ 240210d599adSMaya Erez u8 led_mode; 240310d599adSMaya Erez /* enum wmi_led_id_e */ 240410d599adSMaya Erez u8 id; 240510d599adSMaya Erez /* slow speed blinking combination */ 240610d599adSMaya Erez struct wmi_led_blink_mode slow_blink_cfg; 240710d599adSMaya Erez /* medium speed blinking combination */ 240810d599adSMaya Erez struct wmi_led_blink_mode medium_blink_cfg; 240910d599adSMaya Erez /* high speed blinking combination */ 241010d599adSMaya Erez struct wmi_led_blink_mode fast_blink_cfg; 241110d599adSMaya Erez /* polarity of the led */ 241210d599adSMaya Erez u8 led_polarity; 241310d599adSMaya Erez /* reserved */ 241410d599adSMaya Erez u8 reserved; 241510d599adSMaya Erez } __packed; 241610d599adSMaya Erez 2417761f8e4dSLazar Alexei /* \WMI_SET_CONNECT_SNR_THR_CMDID */ 2418761f8e4dSLazar Alexei struct wmi_set_connect_snr_thr_cmd { 2419761f8e4dSLazar Alexei u8 enable; 2420761f8e4dSLazar Alexei u8 reserved; 2421761f8e4dSLazar Alexei /* 1/4 Db units */ 2422761f8e4dSLazar Alexei __le16 omni_snr_thr; 2423761f8e4dSLazar Alexei /* 1/4 Db units */ 2424761f8e4dSLazar Alexei __le16 direct_snr_thr; 2425761f8e4dSLazar Alexei } __packed; 2426761f8e4dSLazar Alexei 242710d599adSMaya Erez /* WMI_LED_CFG_DONE_EVENTID */ 242810d599adSMaya Erez struct wmi_led_cfg_done_event { 242910d599adSMaya Erez /* led config status */ 243010d599adSMaya Erez __le32 status; 243110d599adSMaya Erez } __packed; 243210d599adSMaya Erez 24330163b031SMaya Erez /* Rate search parameters configuration per connection */ 24340163b031SMaya Erez struct wmi_rs_cfg { 24350163b031SMaya Erez /* The maximal allowed PER for each MCS 24360163b031SMaya Erez * MCS will be considered as failed if PER during RS is higher 24370163b031SMaya Erez */ 24380163b031SMaya Erez u8 per_threshold[WMI_NUM_MCS]; 24390163b031SMaya Erez /* Number of MPDUs for each MCS 24400163b031SMaya Erez * this is the minimal statistic required to make an educated 24410163b031SMaya Erez * decision 24420163b031SMaya Erez */ 24430163b031SMaya Erez u8 min_frame_cnt[WMI_NUM_MCS]; 24440163b031SMaya Erez /* stop threshold [0-100] */ 24450163b031SMaya Erez u8 stop_th; 24460163b031SMaya Erez /* MCS1 stop threshold [0-100] */ 24470163b031SMaya Erez u8 mcs1_fail_th; 24480163b031SMaya Erez u8 max_back_failure_th; 24490163b031SMaya Erez /* Debug feature for disabling internal RS trigger (which is 24500163b031SMaya Erez * currently triggered by BF Done) 24510163b031SMaya Erez */ 24520163b031SMaya Erez u8 dbg_disable_internal_trigger; 24530163b031SMaya Erez __le32 back_failure_mask; 24540163b031SMaya Erez __le32 mcs_en_vec; 24550163b031SMaya Erez } __packed; 24560163b031SMaya Erez 2457761f8e4dSLazar Alexei /* Slot types */ 2458761f8e4dSLazar Alexei enum wmi_sched_scheme_slot_type { 2459761f8e4dSLazar Alexei WMI_SCHED_SLOT_SP = 0x0, 2460761f8e4dSLazar Alexei WMI_SCHED_SLOT_CBAP = 0x1, 2461761f8e4dSLazar Alexei WMI_SCHED_SLOT_IDLE = 0x2, 2462761f8e4dSLazar Alexei WMI_SCHED_SLOT_ANNOUNCE_NO_ACK = 0x3, 2463761f8e4dSLazar Alexei WMI_SCHED_SLOT_DISCOVERY = 0x4, 2464761f8e4dSLazar Alexei }; 2465761f8e4dSLazar Alexei 2466761f8e4dSLazar Alexei enum wmi_sched_scheme_slot_flags { 2467761f8e4dSLazar Alexei WMI_SCHED_SCHEME_SLOT_PERIODIC = 0x1, 2468761f8e4dSLazar Alexei }; 2469761f8e4dSLazar Alexei 2470761f8e4dSLazar Alexei struct wmi_sched_scheme_slot { 2471761f8e4dSLazar Alexei /* in microsecond */ 2472761f8e4dSLazar Alexei __le32 tbtt_offset; 2473761f8e4dSLazar Alexei /* wmi_sched_scheme_slot_flags */ 2474761f8e4dSLazar Alexei u8 flags; 2475761f8e4dSLazar Alexei /* wmi_sched_scheme_slot_type */ 2476761f8e4dSLazar Alexei u8 type; 2477761f8e4dSLazar Alexei /* in microsecond */ 2478761f8e4dSLazar Alexei __le16 duration; 2479761f8e4dSLazar Alexei /* frame_exchange_sequence_duration */ 2480761f8e4dSLazar Alexei __le16 tx_op; 2481761f8e4dSLazar Alexei /* time in microseconds between two consecutive slots 2482761f8e4dSLazar Alexei * relevant only if flag WMI_SCHED_SCHEME_SLOT_PERIODIC set 2483761f8e4dSLazar Alexei */ 2484761f8e4dSLazar Alexei __le16 period; 2485761f8e4dSLazar Alexei /* relevant only if flag WMI_SCHED_SCHEME_SLOT_PERIODIC set 2486761f8e4dSLazar Alexei * number of times to repeat allocation 2487761f8e4dSLazar Alexei */ 2488761f8e4dSLazar Alexei u8 num_of_blocks; 2489761f8e4dSLazar Alexei /* relevant only if flag WMI_SCHED_SCHEME_SLOT_PERIODIC set 2490761f8e4dSLazar Alexei * every idle_period allocation will be idle 2491761f8e4dSLazar Alexei */ 2492761f8e4dSLazar Alexei u8 idle_period; 2493761f8e4dSLazar Alexei u8 src_aid; 2494761f8e4dSLazar Alexei u8 dest_aid; 2495761f8e4dSLazar Alexei __le32 reserved; 2496761f8e4dSLazar Alexei } __packed; 2497761f8e4dSLazar Alexei 2498761f8e4dSLazar Alexei enum wmi_sched_scheme_flags { 2499761f8e4dSLazar Alexei /* should not be set when clearing scheduling scheme */ 2500761f8e4dSLazar Alexei WMI_SCHED_SCHEME_ENABLE = 0x01, 2501761f8e4dSLazar Alexei WMI_SCHED_PROTECTED_SP = 0x02, 2502761f8e4dSLazar Alexei /* should be set only on first WMI fragment of scheme */ 2503761f8e4dSLazar Alexei WMI_SCHED_FIRST = 0x04, 2504761f8e4dSLazar Alexei /* should be set only on last WMI fragment of scheme */ 2505761f8e4dSLazar Alexei WMI_SCHED_LAST = 0x08, 2506761f8e4dSLazar Alexei WMI_SCHED_IMMEDIATE_START = 0x10, 2507761f8e4dSLazar Alexei }; 2508761f8e4dSLazar Alexei 2509761f8e4dSLazar Alexei enum wmi_sched_scheme_advertisment { 2510761f8e4dSLazar Alexei /* ESE is not advertised at all, STA has to be configured with WMI 2511761f8e4dSLazar Alexei * also 2512761f8e4dSLazar Alexei */ 2513761f8e4dSLazar Alexei WMI_ADVERTISE_ESE_DISABLED = 0x0, 2514761f8e4dSLazar Alexei WMI_ADVERTISE_ESE_IN_BEACON = 0x1, 2515761f8e4dSLazar Alexei WMI_ADVERTISE_ESE_IN_ANNOUNCE_FRAME = 0x2, 2516761f8e4dSLazar Alexei }; 2517761f8e4dSLazar Alexei 2518761f8e4dSLazar Alexei /* WMI_SCHEDULING_SCHEME_CMD */ 2519761f8e4dSLazar Alexei struct wmi_scheduling_scheme_cmd { 2520761f8e4dSLazar Alexei u8 serial_num; 2521761f8e4dSLazar Alexei /* wmi_sched_scheme_advertisment */ 2522761f8e4dSLazar Alexei u8 ese_advertisment; 2523761f8e4dSLazar Alexei /* wmi_sched_scheme_flags */ 2524761f8e4dSLazar Alexei __le16 flags; 2525761f8e4dSLazar Alexei u8 num_allocs; 2526761f8e4dSLazar Alexei u8 reserved[3]; 2527761f8e4dSLazar Alexei __le64 start_tbtt; 2528761f8e4dSLazar Alexei /* allocations list */ 2529761f8e4dSLazar Alexei struct wmi_sched_scheme_slot allocs[WMI_SCHED_MAX_ALLOCS_PER_CMD]; 2530761f8e4dSLazar Alexei } __packed; 2531761f8e4dSLazar Alexei 2532761f8e4dSLazar Alexei enum wmi_sched_scheme_failure_type { 2533761f8e4dSLazar Alexei WMI_SCHED_SCHEME_FAILURE_NO_ERROR = 0x00, 2534761f8e4dSLazar Alexei WMI_SCHED_SCHEME_FAILURE_OLD_START_TSF_ERR = 0x01, 2535761f8e4dSLazar Alexei }; 2536761f8e4dSLazar Alexei 2537761f8e4dSLazar Alexei /* WMI_SCHEDULING_SCHEME_EVENTID */ 2538761f8e4dSLazar Alexei struct wmi_scheduling_scheme_event { 2539761f8e4dSLazar Alexei /* wmi_fw_status_e */ 2540761f8e4dSLazar Alexei u8 status; 2541761f8e4dSLazar Alexei /* serial number given in command */ 2542761f8e4dSLazar Alexei u8 serial_num; 2543761f8e4dSLazar Alexei /* wmi_sched_scheme_failure_type */ 2544761f8e4dSLazar Alexei u8 failure_type; 2545761f8e4dSLazar Alexei /* alignment to 32b */ 2546761f8e4dSLazar Alexei u8 reserved[1]; 2547761f8e4dSLazar Alexei } __packed; 2548761f8e4dSLazar Alexei 25490163b031SMaya Erez /* WMI_RS_CFG_CMDID */ 25500163b031SMaya Erez struct wmi_rs_cfg_cmd { 25510163b031SMaya Erez /* connection id */ 25520163b031SMaya Erez u8 cid; 25530163b031SMaya Erez /* enable or disable rate search */ 25540163b031SMaya Erez u8 rs_enable; 25550163b031SMaya Erez /* rate search configuration */ 25560163b031SMaya Erez struct wmi_rs_cfg rs_cfg; 25570163b031SMaya Erez } __packed; 25580163b031SMaya Erez 25590163b031SMaya Erez /* WMI_RS_CFG_DONE_EVENTID */ 25600163b031SMaya Erez struct wmi_rs_cfg_done_event { 25610163b031SMaya Erez u8 cid; 25620163b031SMaya Erez /* enum wmi_fw_status */ 25630163b031SMaya Erez u8 status; 25640163b031SMaya Erez u8 reserved[2]; 25650163b031SMaya Erez } __packed; 25660163b031SMaya Erez 256708989f96SLior David /* WMI_GET_DETAILED_RS_RES_CMDID */ 256808989f96SLior David struct wmi_get_detailed_rs_res_cmd { 256908989f96SLior David /* connection id */ 257008989f96SLior David u8 cid; 257108989f96SLior David u8 reserved[3]; 257208989f96SLior David } __packed; 257308989f96SLior David 257408989f96SLior David /* RS results status */ 257508989f96SLior David enum wmi_rs_results_status { 257608989f96SLior David WMI_RS_RES_VALID = 0x00, 257708989f96SLior David WMI_RS_RES_INVALID = 0x01, 257808989f96SLior David }; 257908989f96SLior David 258008989f96SLior David /* Rate search results */ 258108989f96SLior David struct wmi_rs_results { 258208989f96SLior David /* number of sent MPDUs */ 258308989f96SLior David u8 num_of_tx_pkt[WMI_NUM_MCS]; 258408989f96SLior David /* number of non-acked MPDUs */ 258508989f96SLior David u8 num_of_non_acked_pkt[WMI_NUM_MCS]; 258608989f96SLior David /* RS timestamp */ 258708989f96SLior David __le32 tsf; 258808989f96SLior David /* RS selected MCS */ 258908989f96SLior David u8 mcs; 259008989f96SLior David } __packed; 259108989f96SLior David 259208989f96SLior David /* WMI_GET_DETAILED_RS_RES_EVENTID */ 259308989f96SLior David struct wmi_get_detailed_rs_res_event { 259408989f96SLior David u8 cid; 259508989f96SLior David /* enum wmi_rs_results_status */ 259608989f96SLior David u8 status; 259708989f96SLior David /* detailed rs results */ 259808989f96SLior David struct wmi_rs_results rs_results; 259908989f96SLior David u8 reserved[3]; 260008989f96SLior David } __packed; 260108989f96SLior David 2602a52fb913SLior David /* BRP antenna limit mode */ 2603a52fb913SLior David enum wmi_brp_ant_limit_mode { 2604a52fb913SLior David /* Disable BRP force antenna limit */ 2605a52fb913SLior David WMI_BRP_ANT_LIMIT_MODE_DISABLE = 0x00, 2606a52fb913SLior David /* Define maximal antennas limit. Only effective antennas will be 2607a52fb913SLior David * actually used 2608a52fb913SLior David */ 2609a52fb913SLior David WMI_BRP_ANT_LIMIT_MODE_EFFECTIVE = 0x01, 2610a52fb913SLior David /* Force a specific number of antennas */ 2611a52fb913SLior David WMI_BRP_ANT_LIMIT_MODE_FORCE = 0x02, 2612a52fb913SLior David /* number of BRP antenna limit modes */ 2613a52fb913SLior David WMI_BRP_ANT_LIMIT_MODES_NUM = 0x03, 2614a52fb913SLior David }; 2615a52fb913SLior David 2616a52fb913SLior David /* WMI_BRP_SET_ANT_LIMIT_CMDID */ 2617a52fb913SLior David struct wmi_brp_set_ant_limit_cmd { 2618a52fb913SLior David /* connection id */ 2619a52fb913SLior David u8 cid; 2620a52fb913SLior David /* enum wmi_brp_ant_limit_mode */ 2621a52fb913SLior David u8 limit_mode; 2622a52fb913SLior David /* antenna limit count, 1-27 2623a52fb913SLior David * disable_mode - ignored 2624a52fb913SLior David * effective_mode - upper limit to number of antennas to be used 2625a52fb913SLior David * force_mode - exact number of antennas to be used 2626a52fb913SLior David */ 2627a52fb913SLior David u8 ant_limit; 2628a52fb913SLior David u8 reserved; 2629a52fb913SLior David } __packed; 2630a52fb913SLior David 2631a52fb913SLior David /* WMI_BRP_SET_ANT_LIMIT_EVENTID */ 2632a52fb913SLior David struct wmi_brp_set_ant_limit_event { 2633a52fb913SLior David /* wmi_fw_status */ 2634a52fb913SLior David u8 status; 2635a52fb913SLior David u8 reserved[3]; 2636a52fb913SLior David } __packed; 2637a52fb913SLior David 26380163b031SMaya Erez /* broadcast connection ID */ 26390163b031SMaya Erez #define WMI_LINK_MAINTAIN_CFG_CID_BROADCAST (0xFFFFFFFF) 26400163b031SMaya Erez 26410163b031SMaya Erez /* Types wmi_link_maintain_cfg presets for WMI_LINK_MAINTAIN_CFG_WRITE_CMD */ 26420163b031SMaya Erez enum wmi_link_maintain_cfg_type { 26430163b031SMaya Erez /* AP/PCP default normal (non-FST) configuration settings */ 26440163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_NORMAL_AP = 0x00, 26450163b031SMaya Erez /* AP/PCP default FST configuration settings */ 26460163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_FST_AP = 0x01, 26470163b031SMaya Erez /* STA default normal (non-FST) configuration settings */ 26480163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_NORMAL_STA = 0x02, 26490163b031SMaya Erez /* STA default FST configuration settings */ 26500163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_FST_STA = 0x03, 26510163b031SMaya Erez /* custom configuration settings */ 26520163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPE_CUSTOM = 0x04, 26530163b031SMaya Erez /* number of defined configuration types */ 26540163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_TYPES_NUM = 0x05, 26550163b031SMaya Erez }; 26560163b031SMaya Erez 26570163b031SMaya Erez /* Response status codes for WMI_LINK_MAINTAIN_CFG_WRITE/READ commands */ 26580163b031SMaya Erez enum wmi_link_maintain_cfg_response_status { 26590163b031SMaya Erez /* WMI_LINK_MAINTAIN_CFG_WRITE/READ command successfully accomplished 26600163b031SMaya Erez */ 26610163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_RESPONSE_STATUS_OK = 0x00, 26620163b031SMaya Erez /* ERROR due to bad argument in WMI_LINK_MAINTAIN_CFG_WRITE/READ 26630163b031SMaya Erez * command request 26640163b031SMaya Erez */ 26650163b031SMaya Erez WMI_LINK_MAINTAIN_CFG_RESPONSE_STATUS_BAD_ARGUMENT = 0x01, 26660163b031SMaya Erez }; 26670163b031SMaya Erez 26680163b031SMaya Erez /* Link Loss and Keep Alive configuration */ 26690163b031SMaya Erez struct wmi_link_maintain_cfg { 26700163b031SMaya Erez /* link_loss_enable_detectors_vec */ 26710163b031SMaya Erez __le32 link_loss_enable_detectors_vec; 26720163b031SMaya Erez /* detectors check period usec */ 26730163b031SMaya Erez __le32 check_link_loss_period_usec; 26740163b031SMaya Erez /* max allowed tx ageing */ 26750163b031SMaya Erez __le32 tx_ageing_threshold_usec; 26760163b031SMaya Erez /* keep alive period for high SNR */ 26770163b031SMaya Erez __le32 keep_alive_period_usec_high_snr; 26780163b031SMaya Erez /* keep alive period for low SNR */ 26790163b031SMaya Erez __le32 keep_alive_period_usec_low_snr; 26800163b031SMaya Erez /* lower snr limit for keep alive period update */ 26810163b031SMaya Erez __le32 keep_alive_snr_threshold_low_db; 26820163b031SMaya Erez /* upper snr limit for keep alive period update */ 26830163b031SMaya Erez __le32 keep_alive_snr_threshold_high_db; 26840163b031SMaya Erez /* num of successive bad bcons causing link-loss */ 26850163b031SMaya Erez __le32 bad_beacons_num_threshold; 26860163b031SMaya Erez /* SNR limit for bad_beacons_detector */ 26870163b031SMaya Erez __le32 bad_beacons_snr_threshold_db; 26888a4fa214SAhmad Masri /* timeout for disassoc response frame in uSec */ 26898a4fa214SAhmad Masri __le32 disconnect_timeout; 26900163b031SMaya Erez } __packed; 26910163b031SMaya Erez 26920163b031SMaya Erez /* WMI_LINK_MAINTAIN_CFG_WRITE_CMDID */ 26930163b031SMaya Erez struct wmi_link_maintain_cfg_write_cmd { 26940163b031SMaya Erez /* enum wmi_link_maintain_cfg_type_e - type of requested default 26950163b031SMaya Erez * configuration to be applied 26960163b031SMaya Erez */ 26970163b031SMaya Erez __le32 cfg_type; 26980163b031SMaya Erez /* requested connection ID or WMI_LINK_MAINTAIN_CFG_CID_BROADCAST */ 26990163b031SMaya Erez __le32 cid; 27000163b031SMaya Erez /* custom configuration settings to be applied (relevant only if 27010163b031SMaya Erez * cfg_type==WMI_LINK_MAINTAIN_CFG_TYPE_CUSTOM) 27020163b031SMaya Erez */ 27030163b031SMaya Erez struct wmi_link_maintain_cfg lm_cfg; 27040163b031SMaya Erez } __packed; 27050163b031SMaya Erez 27060163b031SMaya Erez /* WMI_LINK_MAINTAIN_CFG_READ_CMDID */ 27070163b031SMaya Erez struct wmi_link_maintain_cfg_read_cmd { 27080163b031SMaya Erez /* connection ID which configuration settings are requested */ 27090163b031SMaya Erez __le32 cid; 27100163b031SMaya Erez } __packed; 27110163b031SMaya Erez 27120163b031SMaya Erez /* WMI_LINK_MAINTAIN_CFG_WRITE_DONE_EVENTID */ 27130163b031SMaya Erez struct wmi_link_maintain_cfg_write_done_event { 27140163b031SMaya Erez /* requested connection ID */ 27150163b031SMaya Erez __le32 cid; 27160163b031SMaya Erez /* wmi_link_maintain_cfg_response_status_e - write status */ 27170163b031SMaya Erez __le32 status; 27180163b031SMaya Erez } __packed; 27190163b031SMaya Erez 27200163b031SMaya Erez /* \WMI_LINK_MAINTAIN_CFG_READ_DONE_EVENT */ 27210163b031SMaya Erez struct wmi_link_maintain_cfg_read_done_event { 27220163b031SMaya Erez /* requested connection ID */ 27230163b031SMaya Erez __le32 cid; 27240163b031SMaya Erez /* wmi_link_maintain_cfg_response_status_e - read status */ 27250163b031SMaya Erez __le32 status; 27260163b031SMaya Erez /* Retrieved configuration settings */ 27270163b031SMaya Erez struct wmi_link_maintain_cfg lm_cfg; 27280163b031SMaya Erez } __packed; 27290163b031SMaya Erez 2730fe9ee51eSMaya Erez enum wmi_traffic_suspend_status { 2731fe9ee51eSMaya Erez WMI_TRAFFIC_SUSPEND_APPROVED = 0x0, 27326804cd10SLazar Alexei WMI_TRAFFIC_SUSPEND_REJECTED_LINK_NOT_IDLE = 0x1, 27330163b031SMaya Erez }; 27340163b031SMaya Erez 2735fe9ee51eSMaya Erez /* WMI_TRAFFIC_SUSPEND_EVENTID */ 2736fe9ee51eSMaya Erez struct wmi_traffic_suspend_event { 2737fe9ee51eSMaya Erez /* enum wmi_traffic_suspend_status_e */ 27380163b031SMaya Erez u8 status; 27390163b031SMaya Erez } __packed; 27400163b031SMaya Erez 27410163b031SMaya Erez enum wmi_traffic_resume_status { 27420163b031SMaya Erez WMI_TRAFFIC_RESUME_SUCCESS = 0x0, 27430163b031SMaya Erez WMI_TRAFFIC_RESUME_FAILED = 0x1, 27440163b031SMaya Erez }; 27450163b031SMaya Erez 27466804cd10SLazar Alexei enum wmi_resume_trigger { 27476804cd10SLazar Alexei WMI_RESUME_TRIGGER_UNKNOWN = 0x0, 27486804cd10SLazar Alexei WMI_RESUME_TRIGGER_HOST = 0x1, 27496804cd10SLazar Alexei WMI_RESUME_TRIGGER_UCAST_RX = 0x2, 27506804cd10SLazar Alexei WMI_RESUME_TRIGGER_BCAST_RX = 0x4, 27516804cd10SLazar Alexei WMI_RESUME_TRIGGER_WMI_EVT = 0x8, 27526804cd10SLazar Alexei }; 27536804cd10SLazar Alexei 27540163b031SMaya Erez /* WMI_TRAFFIC_RESUME_EVENTID */ 27550163b031SMaya Erez struct wmi_traffic_resume_event { 27566804cd10SLazar Alexei /* enum wmi_traffic_resume_status */ 27570163b031SMaya Erez u8 status; 27586804cd10SLazar Alexei u8 reserved[3]; 27596804cd10SLazar Alexei /* enum wmi_resume_trigger bitmap */ 27606804cd10SLazar Alexei __le32 resume_triggers; 27610163b031SMaya Erez } __packed; 27620163b031SMaya Erez 27630163b031SMaya Erez /* Power Save command completion status codes */ 27640163b031SMaya Erez enum wmi_ps_cfg_cmd_status { 27650163b031SMaya Erez WMI_PS_CFG_CMD_STATUS_SUCCESS = 0x00, 27660163b031SMaya Erez WMI_PS_CFG_CMD_STATUS_BAD_PARAM = 0x01, 27670163b031SMaya Erez /* other error */ 27680163b031SMaya Erez WMI_PS_CFG_CMD_STATUS_ERROR = 0x02, 27690163b031SMaya Erez }; 27700163b031SMaya Erez 27710163b031SMaya Erez /* Device Power Save Profiles */ 27720163b031SMaya Erez enum wmi_ps_profile_type { 27730163b031SMaya Erez WMI_PS_PROFILE_TYPE_DEFAULT = 0x00, 27740163b031SMaya Erez WMI_PS_PROFILE_TYPE_PS_DISABLED = 0x01, 27750163b031SMaya Erez WMI_PS_PROFILE_TYPE_MAX_PS = 0x02, 27760163b031SMaya Erez WMI_PS_PROFILE_TYPE_LOW_LATENCY_PS = 0x03, 27770163b031SMaya Erez }; 27780163b031SMaya Erez 2779761f8e4dSLazar Alexei /* WMI_PS_DEV_PROFILE_CFG_READ_CMDID */ 2780761f8e4dSLazar Alexei struct wmi_ps_dev_profile_cfg_read_cmd { 2781761f8e4dSLazar Alexei /* reserved */ 2782761f8e4dSLazar Alexei __le32 reserved; 2783761f8e4dSLazar Alexei } __packed; 2784761f8e4dSLazar Alexei 2785761f8e4dSLazar Alexei /* WMI_PS_DEV_PROFILE_CFG_READ_EVENTID */ 2786761f8e4dSLazar Alexei struct wmi_ps_dev_profile_cfg_read_event { 2787761f8e4dSLazar Alexei /* wmi_ps_profile_type_e */ 2788761f8e4dSLazar Alexei u8 ps_profile; 2789761f8e4dSLazar Alexei u8 reserved[3]; 2790761f8e4dSLazar Alexei } __packed; 2791761f8e4dSLazar Alexei 27920163b031SMaya Erez /* WMI_PS_DEV_PROFILE_CFG_CMDID 27930163b031SMaya Erez * 27940163b031SMaya Erez * Power save profile to be used by the device 27950163b031SMaya Erez * 27960163b031SMaya Erez * Returned event: 27970163b031SMaya Erez * - WMI_PS_DEV_PROFILE_CFG_EVENTID 27980163b031SMaya Erez */ 27990163b031SMaya Erez struct wmi_ps_dev_profile_cfg_cmd { 28000163b031SMaya Erez /* wmi_ps_profile_type_e */ 28010163b031SMaya Erez u8 ps_profile; 28020163b031SMaya Erez u8 reserved[3]; 28030163b031SMaya Erez } __packed; 28040163b031SMaya Erez 28050163b031SMaya Erez /* WMI_PS_DEV_PROFILE_CFG_EVENTID */ 28060163b031SMaya Erez struct wmi_ps_dev_profile_cfg_event { 28070163b031SMaya Erez /* wmi_ps_cfg_cmd_status_e */ 28080163b031SMaya Erez __le32 status; 28090163b031SMaya Erez } __packed; 28100163b031SMaya Erez 28110163b031SMaya Erez enum wmi_ps_level { 28120163b031SMaya Erez WMI_PS_LEVEL_DEEP_SLEEP = 0x00, 28130163b031SMaya Erez WMI_PS_LEVEL_SHALLOW_SLEEP = 0x01, 28140163b031SMaya Erez /* awake = all PS mechanisms are disabled */ 28150163b031SMaya Erez WMI_PS_LEVEL_AWAKE = 0x02, 28160163b031SMaya Erez }; 28170163b031SMaya Erez 28180163b031SMaya Erez enum wmi_ps_deep_sleep_clk_level { 28190163b031SMaya Erez /* 33k */ 28200163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_RTC = 0x00, 28210163b031SMaya Erez /* 10k */ 28220163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_OSC = 0x01, 28230163b031SMaya Erez /* @RTC Low latency */ 28240163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_RTC_LT = 0x02, 28250163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_XTAL = 0x03, 28260163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_SYSCLK = 0x04, 28270163b031SMaya Erez /* Not Applicable */ 28280163b031SMaya Erez WMI_PS_DEEP_SLEEP_CLK_LEVEL_N_A = 0xFF, 28290163b031SMaya Erez }; 28300163b031SMaya Erez 28310163b031SMaya Erez /* Response by the FW to a D3 entry request */ 28320163b031SMaya Erez enum wmi_ps_d3_resp_policy { 28330163b031SMaya Erez WMI_PS_D3_RESP_POLICY_DEFAULT = 0x00, 28340163b031SMaya Erez /* debug -D3 req is always denied */ 28350163b031SMaya Erez WMI_PS_D3_RESP_POLICY_DENIED = 0x01, 28360163b031SMaya Erez /* debug -D3 req is always approved */ 28370163b031SMaya Erez WMI_PS_D3_RESP_POLICY_APPROVED = 0x02, 28380163b031SMaya Erez }; 28390163b031SMaya Erez 284008989f96SLior David #define WMI_AOA_MAX_DATA_SIZE (128) 284108989f96SLior David 284208989f96SLior David enum wmi_aoa_meas_status { 284308989f96SLior David WMI_AOA_MEAS_SUCCESS = 0x00, 284408989f96SLior David WMI_AOA_MEAS_PEER_INCAPABLE = 0x01, 284508989f96SLior David WMI_AOA_MEAS_FAILURE = 0x02, 284608989f96SLior David }; 284708989f96SLior David 284808989f96SLior David /* WMI_AOA_MEAS_EVENTID */ 284908989f96SLior David struct wmi_aoa_meas_event { 285008989f96SLior David u8 mac_addr[WMI_MAC_LEN]; 285108989f96SLior David /* channels IDs: 285208989f96SLior David * 0 - 58320 MHz 285308989f96SLior David * 1 - 60480 MHz 285408989f96SLior David * 2 - 62640 MHz 285508989f96SLior David */ 285608989f96SLior David u8 channel; 285708989f96SLior David /* enum wmi_aoa_meas_type */ 285808989f96SLior David u8 aoa_meas_type; 285908989f96SLior David /* Measurments are from RFs, defined by the mask */ 286008989f96SLior David __le32 meas_rf_mask; 286108989f96SLior David /* enum wmi_aoa_meas_status */ 286208989f96SLior David u8 meas_status; 286308989f96SLior David u8 reserved; 286408989f96SLior David /* Length of meas_data in bytes */ 286508989f96SLior David __le16 length; 286608989f96SLior David u8 meas_data[WMI_AOA_MAX_DATA_SIZE]; 286708989f96SLior David } __packed; 286808989f96SLior David 2869cbf795c1SLior David /* WMI_SET_MGMT_RETRY_LIMIT_EVENTID */ 2870cbf795c1SLior David struct wmi_set_mgmt_retry_limit_event { 2871cbf795c1SLior David /* enum wmi_fw_status */ 2872cbf795c1SLior David u8 status; 2873cbf795c1SLior David /* alignment to 32b */ 2874cbf795c1SLior David u8 reserved[3]; 2875cbf795c1SLior David } __packed; 2876cbf795c1SLior David 2877cbf795c1SLior David /* WMI_GET_MGMT_RETRY_LIMIT_EVENTID */ 2878cbf795c1SLior David struct wmi_get_mgmt_retry_limit_event { 2879cbf795c1SLior David /* MAC retransmit limit for mgmt frames */ 2880cbf795c1SLior David u8 mgmt_retry_limit; 2881cbf795c1SLior David /* alignment to 32b */ 2882cbf795c1SLior David u8 reserved[3]; 2883cbf795c1SLior David } __packed; 2884cbf795c1SLior David 288508989f96SLior David /* WMI_TOF_GET_CAPABILITIES_EVENTID */ 288608989f96SLior David struct wmi_tof_get_capabilities_event { 288708989f96SLior David u8 ftm_capability; 288808989f96SLior David /* maximum supported number of destination to start TOF */ 288908989f96SLior David u8 max_num_of_dest; 289008989f96SLior David /* maximum supported number of measurements per burst */ 289108989f96SLior David u8 max_num_of_meas_per_burst; 289208989f96SLior David u8 reserved; 289308989f96SLior David /* maximum supported multi bursts */ 289408989f96SLior David __le16 max_multi_bursts_sessions; 289508989f96SLior David /* maximum supported FTM burst duration , wmi_tof_burst_duration_e */ 289608989f96SLior David __le16 max_ftm_burst_duration; 289708989f96SLior David /* AOA supported types */ 289808989f96SLior David __le32 aoa_supported_types; 289908989f96SLior David } __packed; 290008989f96SLior David 290190ffabb0SDedy Lansky /* WMI_SET_THERMAL_THROTTLING_CFG_EVENTID */ 290290ffabb0SDedy Lansky struct wmi_set_thermal_throttling_cfg_event { 290390ffabb0SDedy Lansky /* wmi_fw_status */ 290490ffabb0SDedy Lansky u8 status; 290590ffabb0SDedy Lansky u8 reserved[3]; 290690ffabb0SDedy Lansky } __packed; 290790ffabb0SDedy Lansky 290890ffabb0SDedy Lansky /* WMI_GET_THERMAL_THROTTLING_CFG_EVENTID */ 290990ffabb0SDedy Lansky struct wmi_get_thermal_throttling_cfg_event { 291090ffabb0SDedy Lansky /* Status data */ 291190ffabb0SDedy Lansky struct wmi_tt_data tt_data; 291290ffabb0SDedy Lansky } __packed; 291390ffabb0SDedy Lansky 291408989f96SLior David enum wmi_tof_session_end_status { 291508989f96SLior David WMI_TOF_SESSION_END_NO_ERROR = 0x00, 291608989f96SLior David WMI_TOF_SESSION_END_FAIL = 0x01, 291708989f96SLior David WMI_TOF_SESSION_END_PARAMS_ERROR = 0x02, 291808989f96SLior David WMI_TOF_SESSION_END_ABORTED = 0x03, 29198a4fa214SAhmad Masri WMI_TOF_SESSION_END_BUSY = 0x04, 292008989f96SLior David }; 292108989f96SLior David 292208989f96SLior David /* WMI_TOF_SESSION_END_EVENTID */ 292308989f96SLior David struct wmi_tof_session_end_event { 292408989f96SLior David /* FTM session ID */ 292508989f96SLior David __le32 session_id; 292608989f96SLior David /* wmi_tof_session_end_status_e */ 292708989f96SLior David u8 status; 292808989f96SLior David u8 reserved[3]; 292908989f96SLior David } __packed; 293008989f96SLior David 2931761f8e4dSLazar Alexei /* WMI_TOF_SET_LCI_EVENTID */ 2932761f8e4dSLazar Alexei struct wmi_tof_set_lci_event { 2933761f8e4dSLazar Alexei /* enum wmi_fw_status */ 2934761f8e4dSLazar Alexei u8 status; 2935761f8e4dSLazar Alexei u8 reserved[3]; 2936761f8e4dSLazar Alexei } __packed; 2937761f8e4dSLazar Alexei 2938761f8e4dSLazar Alexei /* WMI_TOF_SET_LCR_EVENTID */ 2939761f8e4dSLazar Alexei struct wmi_tof_set_lcr_event { 2940761f8e4dSLazar Alexei /* enum wmi_fw_status */ 2941761f8e4dSLazar Alexei u8 status; 2942761f8e4dSLazar Alexei u8 reserved[3]; 2943761f8e4dSLazar Alexei } __packed; 2944761f8e4dSLazar Alexei 294508989f96SLior David /* Responder FTM Results */ 294608989f96SLior David struct wmi_responder_ftm_res { 294708989f96SLior David u8 t1[6]; 294808989f96SLior David u8 t2[6]; 294908989f96SLior David u8 t3[6]; 295008989f96SLior David u8 t4[6]; 295108989f96SLior David __le16 tod_err; 295208989f96SLior David __le16 toa_err; 295308989f96SLior David __le16 tod_err_initiator; 295408989f96SLior David __le16 toa_err_initiator; 295508989f96SLior David } __packed; 295608989f96SLior David 295708989f96SLior David enum wmi_tof_ftm_per_dest_res_status { 295808989f96SLior David WMI_PER_DEST_RES_NO_ERROR = 0x00, 295908989f96SLior David WMI_PER_DEST_RES_TX_RX_FAIL = 0x01, 296008989f96SLior David WMI_PER_DEST_RES_PARAM_DONT_MATCH = 0x02, 296108989f96SLior David }; 296208989f96SLior David 296308989f96SLior David enum wmi_tof_ftm_per_dest_res_flags { 296408989f96SLior David WMI_PER_DEST_RES_REQ_START = 0x01, 296508989f96SLior David WMI_PER_DEST_RES_BURST_REPORT_END = 0x02, 296608989f96SLior David WMI_PER_DEST_RES_REQ_END = 0x04, 296708989f96SLior David WMI_PER_DEST_RES_PARAM_UPDATE = 0x08, 296808989f96SLior David }; 296908989f96SLior David 297008989f96SLior David /* WMI_TOF_FTM_PER_DEST_RES_EVENTID */ 297108989f96SLior David struct wmi_tof_ftm_per_dest_res_event { 297208989f96SLior David /* FTM session ID */ 297308989f96SLior David __le32 session_id; 297408989f96SLior David /* destination MAC address */ 297508989f96SLior David u8 dst_mac[WMI_MAC_LEN]; 297608989f96SLior David /* wmi_tof_ftm_per_dest_res_flags_e */ 297708989f96SLior David u8 flags; 297808989f96SLior David /* wmi_tof_ftm_per_dest_res_status_e */ 297908989f96SLior David u8 status; 298008989f96SLior David /* responder ASAP */ 298108989f96SLior David u8 responder_asap; 298208989f96SLior David /* responder number of FTM per burst */ 298308989f96SLior David u8 responder_num_ftm_per_burst; 298408989f96SLior David /* responder number of FTM burst exponent */ 298508989f96SLior David u8 responder_num_ftm_bursts_exp; 298608989f96SLior David /* responder burst duration ,wmi_tof_burst_duration_e */ 298708989f96SLior David u8 responder_burst_duration; 298808989f96SLior David /* responder burst period, indicate interval between two consecutive 298908989f96SLior David * burst instances, in units of 100 ms 299008989f96SLior David */ 299108989f96SLior David __le16 responder_burst_period; 299208989f96SLior David /* receive burst counter */ 299308989f96SLior David __le16 bursts_cnt; 299408989f96SLior David /* tsf of responder start burst */ 299508989f96SLior David __le32 tsf_sync; 299608989f96SLior David /* actual received ftm per burst */ 299708989f96SLior David u8 actual_ftm_per_burst; 2998761f8e4dSLazar Alexei /* Measurments are from RFs, defined by the mask */ 2999761f8e4dSLazar Alexei __le32 meas_rf_mask; 3000761f8e4dSLazar Alexei u8 reserved0[3]; 300108989f96SLior David struct wmi_responder_ftm_res responder_ftm_res[0]; 300208989f96SLior David } __packed; 300308989f96SLior David 3004761f8e4dSLazar Alexei /* WMI_TOF_CFG_RESPONDER_EVENTID */ 3005761f8e4dSLazar Alexei struct wmi_tof_cfg_responder_event { 3006761f8e4dSLazar Alexei /* enum wmi_fw_status */ 3007761f8e4dSLazar Alexei u8 status; 3008761f8e4dSLazar Alexei u8 reserved[3]; 3009761f8e4dSLazar Alexei } __packed; 3010761f8e4dSLazar Alexei 301108989f96SLior David enum wmi_tof_channel_info_type { 301208989f96SLior David WMI_TOF_CHANNEL_INFO_AOA = 0x00, 301308989f96SLior David WMI_TOF_CHANNEL_INFO_LCI = 0x01, 301408989f96SLior David WMI_TOF_CHANNEL_INFO_LCR = 0x02, 301508989f96SLior David WMI_TOF_CHANNEL_INFO_VENDOR_SPECIFIC = 0x03, 301608989f96SLior David WMI_TOF_CHANNEL_INFO_CIR = 0x04, 301708989f96SLior David WMI_TOF_CHANNEL_INFO_RSSI = 0x05, 301808989f96SLior David WMI_TOF_CHANNEL_INFO_SNR = 0x06, 301908989f96SLior David WMI_TOF_CHANNEL_INFO_DEBUG = 0x07, 302008989f96SLior David }; 302108989f96SLior David 302208989f96SLior David /* WMI_TOF_CHANNEL_INFO_EVENTID */ 302308989f96SLior David struct wmi_tof_channel_info_event { 302408989f96SLior David /* FTM session ID */ 302508989f96SLior David __le32 session_id; 302608989f96SLior David /* destination MAC address */ 302708989f96SLior David u8 dst_mac[WMI_MAC_LEN]; 302808989f96SLior David /* wmi_tof_channel_info_type_e */ 302908989f96SLior David u8 type; 303008989f96SLior David /* data report length */ 303108989f96SLior David u8 len; 303208989f96SLior David /* data report payload */ 303308989f96SLior David u8 report[0]; 303408989f96SLior David } __packed; 303508989f96SLior David 30368ae5d62cSLior David /* WMI_TOF_SET_TX_RX_OFFSET_EVENTID */ 30378ae5d62cSLior David struct wmi_tof_set_tx_rx_offset_event { 30388ae5d62cSLior David /* enum wmi_fw_status */ 30398ae5d62cSLior David u8 status; 30408ae5d62cSLior David u8 reserved[3]; 30418ae5d62cSLior David } __packed; 30428ae5d62cSLior David 30438ae5d62cSLior David /* WMI_TOF_GET_TX_RX_OFFSET_EVENTID */ 30448ae5d62cSLior David struct wmi_tof_get_tx_rx_offset_event { 30458ae5d62cSLior David /* enum wmi_fw_status */ 30468ae5d62cSLior David u8 status; 3047761f8e4dSLazar Alexei /* RF index used to read the offsets */ 3048761f8e4dSLazar Alexei u8 rf_index; 3049761f8e4dSLazar Alexei u8 reserved1[2]; 30508ae5d62cSLior David /* TX delay offset */ 30518ae5d62cSLior David __le32 tx_offset; 30528ae5d62cSLior David /* RX delay offset */ 30538ae5d62cSLior David __le32 rx_offset; 3054761f8e4dSLazar Alexei /* Offset to strongest tap of CIR */ 3055761f8e4dSLazar Alexei __le32 precursor; 30568ae5d62cSLior David } __packed; 30578ae5d62cSLior David 3058cbf795c1SLior David /* Result status codes for WMI commands */ 3059cbf795c1SLior David enum wmi_rf_sector_status { 3060cbf795c1SLior David WMI_RF_SECTOR_STATUS_SUCCESS = 0x00, 3061cbf795c1SLior David WMI_RF_SECTOR_STATUS_BAD_PARAMETERS_ERROR = 0x01, 3062cbf795c1SLior David WMI_RF_SECTOR_STATUS_BUSY_ERROR = 0x02, 3063cbf795c1SLior David WMI_RF_SECTOR_STATUS_NOT_SUPPORTED_ERROR = 0x03, 3064cbf795c1SLior David }; 3065cbf795c1SLior David 3066cbf795c1SLior David /* Types of the RF sector (TX,RX) */ 3067cbf795c1SLior David enum wmi_rf_sector_type { 3068cbf795c1SLior David WMI_RF_SECTOR_TYPE_RX = 0x00, 3069cbf795c1SLior David WMI_RF_SECTOR_TYPE_TX = 0x01, 3070cbf795c1SLior David }; 3071cbf795c1SLior David 3072cbf795c1SLior David /* Content of RF Sector (six 32-bits registers) */ 3073cbf795c1SLior David struct wmi_rf_sector_info { 3074cbf795c1SLior David /* Phase values for RF Chains[15-0] (2bits per RF chain) */ 3075cbf795c1SLior David __le32 psh_hi; 3076cbf795c1SLior David /* Phase values for RF Chains[31-16] (2bits per RF chain) */ 3077cbf795c1SLior David __le32 psh_lo; 3078cbf795c1SLior David /* ETYPE Bit0 for all RF chains[31-0] - bit0 of Edge amplifier gain 3079cbf795c1SLior David * index 3080cbf795c1SLior David */ 3081cbf795c1SLior David __le32 etype0; 3082cbf795c1SLior David /* ETYPE Bit1 for all RF chains[31-0] - bit1 of Edge amplifier gain 3083cbf795c1SLior David * index 3084cbf795c1SLior David */ 3085cbf795c1SLior David __le32 etype1; 3086cbf795c1SLior David /* ETYPE Bit2 for all RF chains[31-0] - bit2 of Edge amplifier gain 3087cbf795c1SLior David * index 3088cbf795c1SLior David */ 3089cbf795c1SLior David __le32 etype2; 3090cbf795c1SLior David /* D-Type values (3bits each) for 8 Distribution amplifiers + X16 3091cbf795c1SLior David * switch bits 3092cbf795c1SLior David */ 3093cbf795c1SLior David __le32 dtype_swch_off; 3094cbf795c1SLior David } __packed; 3095cbf795c1SLior David 3096cbf795c1SLior David #define WMI_INVALID_RF_SECTOR_INDEX (0xFFFF) 3097cbf795c1SLior David #define WMI_MAX_RF_MODULES_NUM (8) 3098cbf795c1SLior David 3099cbf795c1SLior David /* WMI_GET_RF_SECTOR_PARAMS_CMD */ 3100cbf795c1SLior David struct wmi_get_rf_sector_params_cmd { 3101cbf795c1SLior David /* Sector number to be retrieved */ 3102cbf795c1SLior David __le16 sector_idx; 3103cbf795c1SLior David /* enum wmi_rf_sector_type - type of requested RF sector */ 3104cbf795c1SLior David u8 sector_type; 3105cbf795c1SLior David /* bitmask vector specifying destination RF modules */ 3106cbf795c1SLior David u8 rf_modules_vec; 3107cbf795c1SLior David } __packed; 3108cbf795c1SLior David 3109cbf795c1SLior David /* \WMI_GET_RF_SECTOR_PARAMS_DONE_EVENT */ 3110cbf795c1SLior David struct wmi_get_rf_sector_params_done_event { 3111cbf795c1SLior David /* result status of WMI_GET_RF_SECTOR_PARAMS_CMD (enum 3112cbf795c1SLior David * wmi_rf_sector_status) 3113cbf795c1SLior David */ 3114cbf795c1SLior David u8 status; 3115cbf795c1SLior David /* align next field to U64 boundary */ 3116cbf795c1SLior David u8 reserved[7]; 3117cbf795c1SLior David /* TSF timestamp when RF sectors where retrieved */ 3118cbf795c1SLior David __le64 tsf; 3119cbf795c1SLior David /* Content of RF sector retrieved from each RF module */ 3120cbf795c1SLior David struct wmi_rf_sector_info sectors_info[WMI_MAX_RF_MODULES_NUM]; 3121cbf795c1SLior David } __packed; 3122cbf795c1SLior David 3123cbf795c1SLior David /* WMI_SET_RF_SECTOR_PARAMS_CMD */ 3124cbf795c1SLior David struct wmi_set_rf_sector_params_cmd { 3125cbf795c1SLior David /* Sector number to be retrieved */ 3126cbf795c1SLior David __le16 sector_idx; 3127cbf795c1SLior David /* enum wmi_rf_sector_type - type of requested RF sector */ 3128cbf795c1SLior David u8 sector_type; 3129cbf795c1SLior David /* bitmask vector specifying destination RF modules */ 3130cbf795c1SLior David u8 rf_modules_vec; 3131cbf795c1SLior David /* Content of RF sector to be written to each RF module */ 3132cbf795c1SLior David struct wmi_rf_sector_info sectors_info[WMI_MAX_RF_MODULES_NUM]; 3133cbf795c1SLior David } __packed; 3134cbf795c1SLior David 3135cbf795c1SLior David /* \WMI_SET_RF_SECTOR_PARAMS_DONE_EVENT */ 3136cbf795c1SLior David struct wmi_set_rf_sector_params_done_event { 3137cbf795c1SLior David /* result status of WMI_SET_RF_SECTOR_PARAMS_CMD (enum 3138cbf795c1SLior David * wmi_rf_sector_status) 3139cbf795c1SLior David */ 3140cbf795c1SLior David u8 status; 3141cbf795c1SLior David } __packed; 3142cbf795c1SLior David 3143cbf795c1SLior David /* WMI_GET_SELECTED_RF_SECTOR_INDEX_CMD - Get RF sector index selected by 3144cbf795c1SLior David * TXSS/BRP for communication with specified CID 3145cbf795c1SLior David */ 3146cbf795c1SLior David struct wmi_get_selected_rf_sector_index_cmd { 3147cbf795c1SLior David /* Connection/Station ID in [0:7] range */ 3148cbf795c1SLior David u8 cid; 3149cbf795c1SLior David /* type of requested RF sector (enum wmi_rf_sector_type) */ 3150cbf795c1SLior David u8 sector_type; 3151cbf795c1SLior David /* align to U32 boundary */ 3152cbf795c1SLior David u8 reserved[2]; 3153cbf795c1SLior David } __packed; 3154cbf795c1SLior David 3155cbf795c1SLior David /* \WMI_GET_SELECTED_RF_SECTOR_INDEX_DONE_EVENT - Returns retrieved RF sector 3156cbf795c1SLior David * index selected by TXSS/BRP for communication with specified CID 3157cbf795c1SLior David */ 3158cbf795c1SLior David struct wmi_get_selected_rf_sector_index_done_event { 3159cbf795c1SLior David /* Retrieved sector index selected in TXSS (for TX sector request) or 3160cbf795c1SLior David * BRP (for RX sector request) 3161cbf795c1SLior David */ 3162cbf795c1SLior David __le16 sector_idx; 3163cbf795c1SLior David /* result status of WMI_GET_SELECTED_RF_SECTOR_INDEX_CMD (enum 3164cbf795c1SLior David * wmi_rf_sector_status) 3165cbf795c1SLior David */ 3166cbf795c1SLior David u8 status; 3167cbf795c1SLior David /* align next field to U64 boundary */ 3168cbf795c1SLior David u8 reserved[5]; 3169cbf795c1SLior David /* TSF timestamp when result was retrieved */ 3170cbf795c1SLior David __le64 tsf; 3171cbf795c1SLior David } __packed; 3172cbf795c1SLior David 3173cbf795c1SLior David /* WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD - Force RF sector index for 3174cbf795c1SLior David * communication with specified CID. Assumes that TXSS/BRP is disabled by 3175cbf795c1SLior David * other command 3176cbf795c1SLior David */ 3177cbf795c1SLior David struct wmi_set_selected_rf_sector_index_cmd { 3178cbf795c1SLior David /* Connection/Station ID in [0:7] range */ 3179cbf795c1SLior David u8 cid; 3180cbf795c1SLior David /* type of requested RF sector (enum wmi_rf_sector_type) */ 3181cbf795c1SLior David u8 sector_type; 3182cbf795c1SLior David /* Forced sector index */ 3183cbf795c1SLior David __le16 sector_idx; 3184cbf795c1SLior David } __packed; 3185cbf795c1SLior David 3186cbf795c1SLior David /* \WMI_SET_SELECTED_RF_SECTOR_INDEX_DONE_EVENT - Success/Fail status for 3187cbf795c1SLior David * WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD 3188cbf795c1SLior David */ 3189cbf795c1SLior David struct wmi_set_selected_rf_sector_index_done_event { 3190cbf795c1SLior David /* result status of WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD (enum 3191cbf795c1SLior David * wmi_rf_sector_status) 3192cbf795c1SLior David */ 3193cbf795c1SLior David u8 status; 3194cbf795c1SLior David /* align to U32 boundary */ 3195cbf795c1SLior David u8 reserved[3]; 3196cbf795c1SLior David } __packed; 3197cbf795c1SLior David 3198cbf795c1SLior David /* WMI_SET_RF_SECTOR_ON_CMD - Activates specified sector for specified rf 3199cbf795c1SLior David * modules 3200cbf795c1SLior David */ 3201cbf795c1SLior David struct wmi_set_rf_sector_on_cmd { 3202cbf795c1SLior David /* Sector index to be activated */ 3203cbf795c1SLior David __le16 sector_idx; 3204cbf795c1SLior David /* type of requested RF sector (enum wmi_rf_sector_type) */ 3205cbf795c1SLior David u8 sector_type; 3206cbf795c1SLior David /* bitmask vector specifying destination RF modules */ 3207cbf795c1SLior David u8 rf_modules_vec; 3208cbf795c1SLior David } __packed; 3209cbf795c1SLior David 3210cbf795c1SLior David /* \WMI_SET_RF_SECTOR_ON_DONE_EVENT - Success/Fail status for 3211cbf795c1SLior David * WMI_SET_RF_SECTOR_ON_CMD 3212cbf795c1SLior David */ 3213cbf795c1SLior David struct wmi_set_rf_sector_on_done_event { 3214cbf795c1SLior David /* result status of WMI_SET_RF_SECTOR_ON_CMD (enum 3215cbf795c1SLior David * wmi_rf_sector_status) 3216cbf795c1SLior David */ 3217cbf795c1SLior David u8 status; 3218cbf795c1SLior David /* align to U32 boundary */ 3219cbf795c1SLior David u8 reserved[3]; 3220cbf795c1SLior David } __packed; 3221cbf795c1SLior David 32228ae5d62cSLior David enum wmi_sector_sweep_type { 32238ae5d62cSLior David WMI_SECTOR_SWEEP_TYPE_TXSS = 0x00, 32248ae5d62cSLior David WMI_SECTOR_SWEEP_TYPE_BCON = 0x01, 32258ae5d62cSLior David WMI_SECTOR_SWEEP_TYPE_TXSS_AND_BCON = 0x02, 32268ae5d62cSLior David WMI_SECTOR_SWEEP_TYPE_NUM = 0x03, 32278ae5d62cSLior David }; 32288ae5d62cSLior David 32298ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_ORDER_CMDID 32308ae5d62cSLior David * 32318ae5d62cSLior David * Set the order of TX sectors in TXSS and/or Beacon(AP). 32328ae5d62cSLior David * 32338ae5d62cSLior David * Returned event: 32348ae5d62cSLior David * - WMI_PRIO_TX_SECTORS_ORDER_EVENTID 32358ae5d62cSLior David */ 32368ae5d62cSLior David struct wmi_prio_tx_sectors_order_cmd { 32378ae5d62cSLior David /* tx sectors order to be applied, 0xFF for end of array */ 32388ae5d62cSLior David u8 tx_sectors_priority_array[MAX_NUM_OF_SECTORS]; 32398ae5d62cSLior David /* enum wmi_sector_sweep_type, TXSS and/or Beacon */ 32408ae5d62cSLior David u8 sector_sweep_type; 32418ae5d62cSLior David /* needed only for TXSS configuration */ 32428ae5d62cSLior David u8 cid; 32438ae5d62cSLior David /* alignment to 32b */ 32448ae5d62cSLior David u8 reserved[2]; 32458ae5d62cSLior David } __packed; 32468ae5d62cSLior David 32478ae5d62cSLior David /* completion status codes */ 32488ae5d62cSLior David enum wmi_prio_tx_sectors_cmd_status { 32498ae5d62cSLior David WMI_PRIO_TX_SECT_CMD_STATUS_SUCCESS = 0x00, 32508ae5d62cSLior David WMI_PRIO_TX_SECT_CMD_STATUS_BAD_PARAM = 0x01, 32518ae5d62cSLior David /* other error */ 32528ae5d62cSLior David WMI_PRIO_TX_SECT_CMD_STATUS_ERROR = 0x02, 32538ae5d62cSLior David }; 32548ae5d62cSLior David 32558ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_ORDER_EVENTID */ 32568ae5d62cSLior David struct wmi_prio_tx_sectors_order_event { 32578ae5d62cSLior David /* enum wmi_prio_tx_sectors_cmd_status */ 32588ae5d62cSLior David u8 status; 32598ae5d62cSLior David /* alignment to 32b */ 32608ae5d62cSLior David u8 reserved[3]; 32618ae5d62cSLior David } __packed; 32628ae5d62cSLior David 32638ae5d62cSLior David struct wmi_prio_tx_sectors_num_cmd { 32648ae5d62cSLior David /* [0-128], 0 = No changes */ 32658ae5d62cSLior David u8 beacon_number_of_sectors; 32668ae5d62cSLior David /* [0-128], 0 = No changes */ 32678ae5d62cSLior David u8 txss_number_of_sectors; 32688ae5d62cSLior David /* [0-8] needed only for TXSS configuration */ 32698ae5d62cSLior David u8 cid; 32708ae5d62cSLior David } __packed; 32718ae5d62cSLior David 32728ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_NUMBER_CMDID 32738ae5d62cSLior David * 32748ae5d62cSLior David * Set the number of active sectors in TXSS and/or Beacon. 32758ae5d62cSLior David * 32768ae5d62cSLior David * Returned event: 32778ae5d62cSLior David * - WMI_PRIO_TX_SECTORS_NUMBER_EVENTID 32788ae5d62cSLior David */ 32798ae5d62cSLior David struct wmi_prio_tx_sectors_number_cmd { 32808ae5d62cSLior David struct wmi_prio_tx_sectors_num_cmd active_sectors_num; 32818ae5d62cSLior David /* alignment to 32b */ 32828ae5d62cSLior David u8 reserved; 32838ae5d62cSLior David } __packed; 32848ae5d62cSLior David 32858ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_NUMBER_EVENTID */ 32868ae5d62cSLior David struct wmi_prio_tx_sectors_number_event { 32878ae5d62cSLior David /* enum wmi_prio_tx_sectors_cmd_status */ 32888ae5d62cSLior David u8 status; 32898ae5d62cSLior David /* alignment to 32b */ 32908ae5d62cSLior David u8 reserved[3]; 32918ae5d62cSLior David } __packed; 32928ae5d62cSLior David 32938ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_CMDID 32948ae5d62cSLior David * 32958ae5d62cSLior David * Set default sectors order and number (hard coded in board file) 32968ae5d62cSLior David * in TXSS and/or Beacon. 32978ae5d62cSLior David * 32988ae5d62cSLior David * Returned event: 32998ae5d62cSLior David * - WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_EVENTID 33008ae5d62cSLior David */ 33018ae5d62cSLior David struct wmi_prio_tx_sectors_set_default_cfg_cmd { 33028ae5d62cSLior David /* enum wmi_sector_sweep_type, TXSS and/or Beacon */ 33038ae5d62cSLior David u8 sector_sweep_type; 33048ae5d62cSLior David /* needed only for TXSS configuration */ 33058ae5d62cSLior David u8 cid; 33068ae5d62cSLior David /* alignment to 32b */ 33078ae5d62cSLior David u8 reserved[2]; 33088ae5d62cSLior David } __packed; 33098ae5d62cSLior David 33108ae5d62cSLior David /* WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_EVENTID */ 33118ae5d62cSLior David struct wmi_prio_tx_sectors_set_default_cfg_event { 33128ae5d62cSLior David /* enum wmi_prio_tx_sectors_cmd_status */ 33138ae5d62cSLior David u8 status; 33148ae5d62cSLior David /* alignment to 32b */ 33158ae5d62cSLior David u8 reserved[3]; 33168ae5d62cSLior David } __packed; 33178ae5d62cSLior David 3318761f8e4dSLazar Alexei /* WMI_SET_SILENT_RSSI_TABLE_DONE_EVENTID */ 3319761f8e4dSLazar Alexei struct wmi_set_silent_rssi_table_done_event { 3320761f8e4dSLazar Alexei /* enum wmi_silent_rssi_status */ 3321761f8e4dSLazar Alexei __le32 status; 3322761f8e4dSLazar Alexei /* enum wmi_silent_rssi_table */ 3323761f8e4dSLazar Alexei __le32 table; 3324761f8e4dSLazar Alexei } __packed; 3325761f8e4dSLazar Alexei 33268a4fa214SAhmad Masri /* WMI_VRING_SWITCH_TIMING_CONFIG_EVENTID */ 33278a4fa214SAhmad Masri struct wmi_vring_switch_timing_config_event { 33288a4fa214SAhmad Masri /* enum wmi_fw_status */ 33298a4fa214SAhmad Masri u8 status; 33308a4fa214SAhmad Masri u8 reserved[3]; 33318a4fa214SAhmad Masri } __packed; 33328a4fa214SAhmad Masri 33338a4fa214SAhmad Masri /* WMI_GET_ASSOC_LIST_RES_EVENTID */ 33348a4fa214SAhmad Masri struct wmi_assoc_sta_info { 33358a4fa214SAhmad Masri u8 mac[WMI_MAC_LEN]; 33368a4fa214SAhmad Masri u8 omni_index_address; 33378a4fa214SAhmad Masri u8 reserved; 33388a4fa214SAhmad Masri } __packed; 33398a4fa214SAhmad Masri 33408a4fa214SAhmad Masri #define WMI_GET_ASSOC_LIST_SIZE (8) 33418a4fa214SAhmad Masri 33428a4fa214SAhmad Masri /* WMI_GET_ASSOC_LIST_RES_EVENTID 33438a4fa214SAhmad Masri * Returns up to MAX_ASSOC_STA_LIST_SIZE associated STAs 33448a4fa214SAhmad Masri */ 33458a4fa214SAhmad Masri struct wmi_get_assoc_list_res_event { 33468a4fa214SAhmad Masri struct wmi_assoc_sta_info assoc_sta_list[WMI_GET_ASSOC_LIST_SIZE]; 33478a4fa214SAhmad Masri /* STA count */ 33488a4fa214SAhmad Masri u8 count; 33498a4fa214SAhmad Masri u8 reserved[3]; 33508a4fa214SAhmad Masri } __packed; 33518a4fa214SAhmad Masri 33528a4fa214SAhmad Masri /* WMI_BF_CONTROL_EVENTID */ 33538a4fa214SAhmad Masri struct wmi_bf_control_event { 33548a4fa214SAhmad Masri /* wmi_fw_status */ 33558a4fa214SAhmad Masri u8 status; 33568a4fa214SAhmad Masri u8 reserved[3]; 33578a4fa214SAhmad Masri } __packed; 33588a4fa214SAhmad Masri 33598a4fa214SAhmad Masri /* WMI_COMMAND_NOT_SUPPORTED_EVENTID */ 3360761f8e4dSLazar Alexei struct wmi_command_not_supported_event { 3361761f8e4dSLazar Alexei /* device id */ 3362761f8e4dSLazar Alexei u8 mid; 3363761f8e4dSLazar Alexei u8 reserved0; 3364761f8e4dSLazar Alexei __le16 command_id; 3365761f8e4dSLazar Alexei /* for UT command only, otherwise reserved */ 3366761f8e4dSLazar Alexei __le16 command_subtype; 3367761f8e4dSLazar Alexei __le16 reserved1; 3368761f8e4dSLazar Alexei } __packed; 3369761f8e4dSLazar Alexei 33708a4fa214SAhmad Masri /* WMI_TSF_SYNC_CMDID */ 33718a4fa214SAhmad Masri struct wmi_tsf_sync_cmd { 33728a4fa214SAhmad Masri /* The time interval to send announce frame in one BI */ 33738a4fa214SAhmad Masri u8 interval_ms; 33748a4fa214SAhmad Masri /* The mcs to send announce frame */ 33758a4fa214SAhmad Masri u8 mcs; 33768a4fa214SAhmad Masri u8 reserved[6]; 33778a4fa214SAhmad Masri } __packed; 33788a4fa214SAhmad Masri 33798a4fa214SAhmad Masri /* WMI_TSF_SYNC_STATUS_EVENTID */ 33808a4fa214SAhmad Masri enum wmi_tsf_sync_status { 33818a4fa214SAhmad Masri WMI_TSF_SYNC_SUCCESS = 0x00, 33828a4fa214SAhmad Masri WMI_TSF_SYNC_FAILED = 0x01, 33838a4fa214SAhmad Masri WMI_TSF_SYNC_REJECTED = 0x02, 33848a4fa214SAhmad Masri }; 33858a4fa214SAhmad Masri 33868a4fa214SAhmad Masri /* WMI_TSF_SYNC_STATUS_EVENTID */ 33878a4fa214SAhmad Masri struct wmi_tsf_sync_status_event { 33888a4fa214SAhmad Masri /* enum wmi_tsf_sync_status */ 33898a4fa214SAhmad Masri u8 status; 33908a4fa214SAhmad Masri u8 reserved[3]; 33918a4fa214SAhmad Masri } __packed; 33928a4fa214SAhmad Masri 33938a4fa214SAhmad Masri /* WMI_GET_CCA_INDICATIONS_EVENTID */ 33948a4fa214SAhmad Masri struct wmi_get_cca_indications_event { 33958a4fa214SAhmad Masri /* wmi_fw_status */ 33968a4fa214SAhmad Masri u8 status; 33978a4fa214SAhmad Masri /* CCA-Energy Detect in percentage over last BI (0..100) */ 33988a4fa214SAhmad Masri u8 cca_ed_percent; 33998a4fa214SAhmad Masri /* Averaged CCA-Energy Detect in percent over number of BIs (0..100) */ 34008a4fa214SAhmad Masri u8 cca_ed_avg_percent; 34018a4fa214SAhmad Masri /* NAV percent over last BI (0..100) */ 34028a4fa214SAhmad Masri u8 nav_percent; 34038a4fa214SAhmad Masri /* Averaged NAV percent over number of BIs (0..100) */ 34048a4fa214SAhmad Masri u8 nav_avg_percent; 34058a4fa214SAhmad Masri u8 reserved[3]; 34068a4fa214SAhmad Masri } __packed; 34078a4fa214SAhmad Masri 34088a4fa214SAhmad Masri /* WMI_SET_CCA_INDICATIONS_BI_AVG_NUM_CMDID */ 34098a4fa214SAhmad Masri struct wmi_set_cca_indications_bi_avg_num_cmd { 34108a4fa214SAhmad Masri /* set the number of bis to average cca_ed (0..255) */ 34118a4fa214SAhmad Masri u8 bi_number; 34128a4fa214SAhmad Masri u8 reserved[3]; 34138a4fa214SAhmad Masri } __packed; 34148a4fa214SAhmad Masri 34158a4fa214SAhmad Masri /* WMI_SET_CCA_INDICATIONS_BI_AVG_NUM_EVENTID */ 34168a4fa214SAhmad Masri struct wmi_set_cca_indications_bi_avg_num_event { 34178a4fa214SAhmad Masri /* wmi_fw_status */ 34188a4fa214SAhmad Masri u8 status; 34198a4fa214SAhmad Masri u8 reserved[3]; 34208a4fa214SAhmad Masri } __packed; 34218a4fa214SAhmad Masri 34228a4fa214SAhmad Masri /* WMI_INTERNAL_FW_SET_CHANNEL */ 34238a4fa214SAhmad Masri struct wmi_internal_fw_set_channel_event { 34248a4fa214SAhmad Masri u8 channel_num; 34258a4fa214SAhmad Masri u8 reserved[3]; 34268a4fa214SAhmad Masri } __packed; 34278a4fa214SAhmad Masri 34282be7d22fSVladimir Kondratiev #endif /* __WILOCITY_WMI_H__ */ 3429