b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame^] | 1 | /* |
| 2 | * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. |
| 3 | * Copyright (c) 2012-2017 Qualcomm Atheros, Inc. |
| 4 | * Copyright (c) 2006-2012 Wilocity |
| 5 | * |
| 6 | * Permission to use, copy, modify, and/or distribute this software for any |
| 7 | * purpose with or without fee is hereby granted, provided that the above |
| 8 | * copyright notice and this permission notice appear in all copies. |
| 9 | * |
| 10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| 11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| 12 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
| 13 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| 14 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
| 15 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
| 16 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
| 17 | */ |
| 18 | |
| 19 | /* |
| 20 | * This file contains the definitions of the WMI protocol specified in the |
| 21 | * Wireless Module Interface (WMI) for the Qualcomm |
| 22 | * 60 GHz wireless solution. |
| 23 | * It includes definitions of all the commands and events. |
| 24 | * Commands are messages from the host to the WM. |
| 25 | * Events are messages from the WM to the host. |
| 26 | * |
| 27 | * This is an automatically generated file. |
| 28 | */ |
| 29 | |
| 30 | #ifndef __WILOCITY_WMI_H__ |
| 31 | #define __WILOCITY_WMI_H__ |
| 32 | |
| 33 | #define WMI_DEFAULT_ASSOC_STA (1) |
| 34 | #define WMI_MAC_LEN (6) |
| 35 | #define WMI_PROX_RANGE_NUM (3) |
| 36 | #define WMI_MAX_LOSS_DMG_BEACONS (20) |
| 37 | #define MAX_NUM_OF_SECTORS (128) |
| 38 | #define WMI_INVALID_TEMPERATURE (0xFFFFFFFF) |
| 39 | #define WMI_SCHED_MAX_ALLOCS_PER_CMD (4) |
| 40 | #define WMI_RF_DTYPE_LENGTH (3) |
| 41 | #define WMI_RF_ETYPE_LENGTH (3) |
| 42 | #define WMI_RF_RX2TX_LENGTH (3) |
| 43 | #define WMI_RF_ETYPE_VAL_PER_RANGE (5) |
| 44 | /* DTYPE configuration array size |
| 45 | * must always be kept equal to (WMI_RF_DTYPE_LENGTH+1) |
| 46 | */ |
| 47 | #define WMI_RF_DTYPE_CONF_LENGTH (4) |
| 48 | /* ETYPE configuration array size |
| 49 | * must always be kept equal to |
| 50 | * (WMI_RF_ETYPE_LENGTH+WMI_RF_ETYPE_VAL_PER_RANGE) |
| 51 | */ |
| 52 | #define WMI_RF_ETYPE_CONF_LENGTH (8) |
| 53 | /* RX2TX configuration array size |
| 54 | * must always be kept equal to (WMI_RF_RX2TX_LENGTH+1) |
| 55 | */ |
| 56 | #define WMI_RF_RX2TX_CONF_LENGTH (4) |
| 57 | /* Qos configuration */ |
| 58 | #define WMI_QOS_NUM_OF_PRIORITY (4) |
| 59 | #define WMI_QOS_MIN_DEFAULT_WEIGHT (10) |
| 60 | #define WMI_QOS_VRING_SLOT_MIN_MS (2) |
| 61 | #define WMI_QOS_VRING_SLOT_MAX_MS (10) |
| 62 | /* (WMI_QOS_MIN_DEFAULT_WEIGHT * WMI_QOS_VRING_SLOT_MAX_MS / |
| 63 | * WMI_QOS_VRING_SLOT_MIN_MS) |
| 64 | */ |
| 65 | #define WMI_QOS_MAX_WEIGHT 50 |
| 66 | #define WMI_QOS_SET_VIF_PRIORITY (0xFF) |
| 67 | #define WMI_QOS_DEFAULT_PRIORITY (WMI_QOS_NUM_OF_PRIORITY) |
| 68 | #define WMI_MAX_XIF_PORTS_NUM (8) |
| 69 | |
| 70 | /* Mailbox interface |
| 71 | * used for commands and events |
| 72 | */ |
| 73 | enum wmi_mid { |
| 74 | MID_DEFAULT = 0x00, |
| 75 | FIRST_DBG_MID_ID = 0x10, |
| 76 | LAST_DBG_MID_ID = 0xFE, |
| 77 | MID_BROADCAST = 0xFF, |
| 78 | }; |
| 79 | |
| 80 | /* FW capability IDs |
| 81 | * Each ID maps to a bit in a 32-bit bitmask value provided by the FW to |
| 82 | * the host |
| 83 | */ |
| 84 | enum wmi_fw_capability { |
| 85 | WMI_FW_CAPABILITY_FTM = 0, |
| 86 | WMI_FW_CAPABILITY_PS_CONFIG = 1, |
| 87 | WMI_FW_CAPABILITY_RF_SECTORS = 2, |
| 88 | WMI_FW_CAPABILITY_MGMT_RETRY_LIMIT = 3, |
| 89 | WMI_FW_CAPABILITY_AP_SME_OFFLOAD_PARTIAL = 4, |
| 90 | WMI_FW_CAPABILITY_WMI_ONLY = 5, |
| 91 | WMI_FW_CAPABILITY_THERMAL_THROTTLING = 7, |
| 92 | WMI_FW_CAPABILITY_D3_SUSPEND = 8, |
| 93 | WMI_FW_CAPABILITY_LONG_RANGE = 9, |
| 94 | WMI_FW_CAPABILITY_FIXED_SCHEDULING = 10, |
| 95 | WMI_FW_CAPABILITY_MULTI_DIRECTED_OMNIS = 11, |
| 96 | WMI_FW_CAPABILITY_RSSI_REPORTING = 12, |
| 97 | WMI_FW_CAPABILITY_SET_SILENT_RSSI_TABLE = 13, |
| 98 | WMI_FW_CAPABILITY_LO_POWER_CALIB_FROM_OTP = 14, |
| 99 | WMI_FW_CAPABILITY_PNO = 15, |
| 100 | WMI_FW_CAPABILITY_CHANNEL_BONDING = 17, |
| 101 | WMI_FW_CAPABILITY_REF_CLOCK_CONTROL = 18, |
| 102 | WMI_FW_CAPABILITY_AP_SME_OFFLOAD_NONE = 19, |
| 103 | WMI_FW_CAPABILITY_MULTI_VIFS = 20, |
| 104 | WMI_FW_CAPABILITY_FT_ROAMING = 21, |
| 105 | WMI_FW_CAPABILITY_BACK_WIN_SIZE_64 = 22, |
| 106 | WMI_FW_CAPABILITY_AMSDU = 23, |
| 107 | WMI_FW_CAPABILITY_RAW_MODE = 24, |
| 108 | WMI_FW_CAPABILITY_TX_REQ_EXT = 25, |
| 109 | WMI_FW_CAPABILITY_CHANNEL_4 = 26, |
| 110 | WMI_FW_CAPABILITY_IPA = 27, |
| 111 | WMI_FW_CAPABILITY_TEMPERATURE_ALL_RF = 30, |
| 112 | WMI_FW_CAPABILITY_SPLIT_REKEY = 31, |
| 113 | WMI_FW_CAPABILITY_MAX, |
| 114 | }; |
| 115 | |
| 116 | /* WMI_CMD_HDR */ |
| 117 | struct wmi_cmd_hdr { |
| 118 | u8 mid; |
| 119 | u8 reserved; |
| 120 | __le16 command_id; |
| 121 | __le32 fw_timestamp; |
| 122 | } __packed; |
| 123 | |
| 124 | /* List of Commands */ |
| 125 | enum wmi_command_id { |
| 126 | WMI_CONNECT_CMDID = 0x01, |
| 127 | WMI_DISCONNECT_CMDID = 0x03, |
| 128 | WMI_DISCONNECT_STA_CMDID = 0x04, |
| 129 | WMI_START_SCHED_SCAN_CMDID = 0x05, |
| 130 | WMI_STOP_SCHED_SCAN_CMDID = 0x06, |
| 131 | WMI_START_SCAN_CMDID = 0x07, |
| 132 | WMI_SET_BSS_FILTER_CMDID = 0x09, |
| 133 | WMI_SET_PROBED_SSID_CMDID = 0x0A, |
| 134 | /* deprecated */ |
| 135 | WMI_SET_LISTEN_INT_CMDID = 0x0B, |
| 136 | WMI_FT_AUTH_CMDID = 0x0C, |
| 137 | WMI_FT_REASSOC_CMDID = 0x0D, |
| 138 | WMI_UPDATE_FT_IES_CMDID = 0x0E, |
| 139 | WMI_BCON_CTRL_CMDID = 0x0F, |
| 140 | WMI_ADD_CIPHER_KEY_CMDID = 0x16, |
| 141 | WMI_DELETE_CIPHER_KEY_CMDID = 0x17, |
| 142 | WMI_PCP_CONF_CMDID = 0x18, |
| 143 | WMI_SET_APPIE_CMDID = 0x3F, |
| 144 | WMI_SET_WSC_STATUS_CMDID = 0x41, |
| 145 | WMI_PXMT_RANGE_CFG_CMDID = 0x42, |
| 146 | WMI_PXMT_SNR2_RANGE_CFG_CMDID = 0x43, |
| 147 | WMI_RADAR_GENERAL_CONFIG_CMDID = 0x100, |
| 148 | WMI_RADAR_CONFIG_SELECT_CMDID = 0x101, |
| 149 | WMI_RADAR_PARAMS_CONFIG_CMDID = 0x102, |
| 150 | WMI_RADAR_SET_MODE_CMDID = 0x103, |
| 151 | WMI_RADAR_CONTROL_CMDID = 0x104, |
| 152 | WMI_RADAR_PCI_CONTROL_CMDID = 0x105, |
| 153 | WMI_MEM_READ_CMDID = 0x800, |
| 154 | WMI_MEM_WR_CMDID = 0x801, |
| 155 | WMI_ECHO_CMDID = 0x803, |
| 156 | WMI_DEEP_ECHO_CMDID = 0x804, |
| 157 | WMI_CONFIG_MAC_CMDID = 0x805, |
| 158 | /* deprecated */ |
| 159 | WMI_CONFIG_PHY_DEBUG_CMDID = 0x806, |
| 160 | WMI_ADD_DEBUG_TX_PCKT_CMDID = 0x808, |
| 161 | WMI_PHY_GET_STATISTICS_CMDID = 0x809, |
| 162 | /* deprecated */ |
| 163 | WMI_FS_TUNE_CMDID = 0x80A, |
| 164 | /* deprecated */ |
| 165 | WMI_CORR_MEASURE_CMDID = 0x80B, |
| 166 | WMI_READ_RSSI_CMDID = 0x80C, |
| 167 | WMI_TEMP_SENSE_CMDID = 0x80E, |
| 168 | WMI_DC_CALIB_CMDID = 0x80F, |
| 169 | /* deprecated */ |
| 170 | WMI_SEND_TONE_CMDID = 0x810, |
| 171 | /* deprecated */ |
| 172 | WMI_IQ_TX_CALIB_CMDID = 0x811, |
| 173 | /* deprecated */ |
| 174 | WMI_IQ_RX_CALIB_CMDID = 0x812, |
| 175 | WMI_SET_WORK_MODE_CMDID = 0x815, |
| 176 | WMI_LO_LEAKAGE_CALIB_CMDID = 0x816, |
| 177 | WMI_LO_POWER_CALIB_FROM_OTP_CMDID = 0x817, |
| 178 | WMI_SILENT_RSSI_CALIB_CMDID = 0x81D, |
| 179 | /* deprecated */ |
| 180 | WMI_RF_RX_TEST_CMDID = 0x81E, |
| 181 | WMI_CFG_RX_CHAIN_CMDID = 0x820, |
| 182 | WMI_VRING_CFG_CMDID = 0x821, |
| 183 | WMI_BCAST_VRING_CFG_CMDID = 0x822, |
| 184 | WMI_RING_BA_EN_CMDID = 0x823, |
| 185 | WMI_RING_BA_DIS_CMDID = 0x824, |
| 186 | WMI_RCP_ADDBA_RESP_CMDID = 0x825, |
| 187 | WMI_RCP_DELBA_CMDID = 0x826, |
| 188 | WMI_SET_SSID_CMDID = 0x827, |
| 189 | WMI_GET_SSID_CMDID = 0x828, |
| 190 | WMI_SET_PCP_CHANNEL_CMDID = 0x829, |
| 191 | WMI_GET_PCP_CHANNEL_CMDID = 0x82A, |
| 192 | WMI_SW_TX_REQ_CMDID = 0x82B, |
| 193 | /* Event is shared between WMI_SW_TX_REQ_CMDID and |
| 194 | * WMI_SW_TX_REQ_EXT_CMDID |
| 195 | */ |
| 196 | WMI_SW_TX_REQ_EXT_CMDID = 0x82C, |
| 197 | WMI_MLME_PUSH_CMDID = 0x835, |
| 198 | WMI_BEAMFORMING_MGMT_CMDID = 0x836, |
| 199 | WMI_BF_TXSS_MGMT_CMDID = 0x837, |
| 200 | WMI_BF_SM_MGMT_CMDID = 0x838, |
| 201 | WMI_BF_RXSS_MGMT_CMDID = 0x839, |
| 202 | WMI_BF_TRIG_CMDID = 0x83A, |
| 203 | WMI_RCP_ADDBA_RESP_EDMA_CMDID = 0x83B, |
| 204 | WMI_LINK_MAINTAIN_CFG_WRITE_CMDID = 0x842, |
| 205 | WMI_LINK_MAINTAIN_CFG_READ_CMDID = 0x843, |
| 206 | WMI_SET_SECTORS_CMDID = 0x849, |
| 207 | WMI_MAINTAIN_PAUSE_CMDID = 0x850, |
| 208 | WMI_MAINTAIN_RESUME_CMDID = 0x851, |
| 209 | WMI_RS_MGMT_CMDID = 0x852, |
| 210 | WMI_RF_MGMT_CMDID = 0x853, |
| 211 | WMI_RF_XPM_READ_CMDID = 0x856, |
| 212 | WMI_RF_XPM_WRITE_CMDID = 0x857, |
| 213 | WMI_LED_CFG_CMDID = 0x858, |
| 214 | WMI_SET_CONNECT_SNR_THR_CMDID = 0x85B, |
| 215 | WMI_SET_ACTIVE_SILENT_RSSI_TABLE_CMDID = 0x85C, |
| 216 | WMI_RF_PWR_ON_DELAY_CMDID = 0x85D, |
| 217 | WMI_SET_HIGH_POWER_TABLE_PARAMS_CMDID = 0x85E, |
| 218 | WMI_FIXED_SCHEDULING_UL_CONFIG_CMDID = 0x85F, |
| 219 | /* Performance monitoring commands */ |
| 220 | WMI_BF_CTRL_CMDID = 0x862, |
| 221 | WMI_NOTIFY_REQ_CMDID = 0x863, |
| 222 | WMI_GET_STATUS_CMDID = 0x864, |
| 223 | WMI_GET_RF_STATUS_CMDID = 0x866, |
| 224 | WMI_GET_BASEBAND_TYPE_CMDID = 0x867, |
| 225 | WMI_VRING_SWITCH_TIMING_CONFIG_CMDID = 0x868, |
| 226 | WMI_UNIT_TEST_CMDID = 0x900, |
| 227 | WMI_FLASH_READ_CMDID = 0x902, |
| 228 | WMI_FLASH_WRITE_CMDID = 0x903, |
| 229 | /* Power management */ |
| 230 | WMI_TRAFFIC_SUSPEND_CMDID = 0x904, |
| 231 | WMI_TRAFFIC_RESUME_CMDID = 0x905, |
| 232 | /* P2P */ |
| 233 | WMI_P2P_CFG_CMDID = 0x910, |
| 234 | WMI_PORT_ALLOCATE_CMDID = 0x911, |
| 235 | WMI_PORT_DELETE_CMDID = 0x912, |
| 236 | WMI_POWER_MGMT_CFG_CMDID = 0x913, |
| 237 | WMI_START_LISTEN_CMDID = 0x914, |
| 238 | WMI_START_SEARCH_CMDID = 0x915, |
| 239 | WMI_DISCOVERY_START_CMDID = 0x916, |
| 240 | WMI_DISCOVERY_STOP_CMDID = 0x917, |
| 241 | WMI_PCP_START_CMDID = 0x918, |
| 242 | WMI_PCP_STOP_CMDID = 0x919, |
| 243 | WMI_GET_PCP_FACTOR_CMDID = 0x91B, |
| 244 | /* Power Save Configuration Commands */ |
| 245 | WMI_PS_DEV_PROFILE_CFG_CMDID = 0x91C, |
| 246 | WMI_RS_ENABLE_CMDID = 0x91E, |
| 247 | WMI_RS_CFG_EX_CMDID = 0x91F, |
| 248 | WMI_GET_DETAILED_RS_RES_EX_CMDID = 0x920, |
| 249 | /* deprecated */ |
| 250 | WMI_RS_CFG_CMDID = 0x921, |
| 251 | /* deprecated */ |
| 252 | WMI_GET_DETAILED_RS_RES_CMDID = 0x922, |
| 253 | WMI_AOA_MEAS_CMDID = 0x923, |
| 254 | WMI_BRP_SET_ANT_LIMIT_CMDID = 0x924, |
| 255 | WMI_SET_MGMT_RETRY_LIMIT_CMDID = 0x930, |
| 256 | WMI_GET_MGMT_RETRY_LIMIT_CMDID = 0x931, |
| 257 | WMI_NEW_STA_CMDID = 0x935, |
| 258 | WMI_DEL_STA_CMDID = 0x936, |
| 259 | WMI_SET_THERMAL_THROTTLING_CFG_CMDID = 0x940, |
| 260 | WMI_GET_THERMAL_THROTTLING_CFG_CMDID = 0x941, |
| 261 | /* Read Power Save profile type */ |
| 262 | WMI_PS_DEV_PROFILE_CFG_READ_CMDID = 0x942, |
| 263 | WMI_TSF_SYNC_CMDID = 0x973, |
| 264 | WMI_TOF_SESSION_START_CMDID = 0x991, |
| 265 | WMI_TOF_GET_CAPABILITIES_CMDID = 0x992, |
| 266 | WMI_TOF_SET_LCR_CMDID = 0x993, |
| 267 | WMI_TOF_SET_LCI_CMDID = 0x994, |
| 268 | WMI_TOF_CFG_RESPONDER_CMDID = 0x996, |
| 269 | WMI_TOF_SET_TX_RX_OFFSET_CMDID = 0x997, |
| 270 | WMI_TOF_GET_TX_RX_OFFSET_CMDID = 0x998, |
| 271 | WMI_TOF_CHANNEL_INFO_CMDID = 0x999, |
| 272 | WMI_GET_RF_SECTOR_PARAMS_CMDID = 0x9A0, |
| 273 | WMI_SET_RF_SECTOR_PARAMS_CMDID = 0x9A1, |
| 274 | WMI_GET_SELECTED_RF_SECTOR_INDEX_CMDID = 0x9A2, |
| 275 | WMI_SET_SELECTED_RF_SECTOR_INDEX_CMDID = 0x9A3, |
| 276 | WMI_SET_RF_SECTOR_ON_CMDID = 0x9A4, |
| 277 | WMI_PRIO_TX_SECTORS_ORDER_CMDID = 0x9A5, |
| 278 | WMI_PRIO_TX_SECTORS_NUMBER_CMDID = 0x9A6, |
| 279 | WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_CMDID = 0x9A7, |
| 280 | /* deprecated */ |
| 281 | WMI_BF_CONTROL_CMDID = 0x9AA, |
| 282 | WMI_BF_CONTROL_EX_CMDID = 0x9AB, |
| 283 | WMI_TX_STATUS_RING_ADD_CMDID = 0x9C0, |
| 284 | WMI_RX_STATUS_RING_ADD_CMDID = 0x9C1, |
| 285 | WMI_TX_DESC_RING_ADD_CMDID = 0x9C2, |
| 286 | WMI_RX_DESC_RING_ADD_CMDID = 0x9C3, |
| 287 | WMI_BCAST_DESC_RING_ADD_CMDID = 0x9C4, |
| 288 | WMI_CFG_DEF_RX_OFFLOAD_CMDID = 0x9C5, |
| 289 | WMI_SCHEDULING_SCHEME_CMDID = 0xA01, |
| 290 | WMI_FIXED_SCHEDULING_CONFIG_CMDID = 0xA02, |
| 291 | WMI_ENABLE_FIXED_SCHEDULING_CMDID = 0xA03, |
| 292 | WMI_SET_MULTI_DIRECTED_OMNIS_CONFIG_CMDID = 0xA04, |
| 293 | WMI_SET_LONG_RANGE_CONFIG_CMDID = 0xA05, |
| 294 | WMI_GET_ASSOC_LIST_CMDID = 0xA06, |
| 295 | WMI_GET_CCA_INDICATIONS_CMDID = 0xA07, |
| 296 | WMI_SET_CCA_INDICATIONS_BI_AVG_NUM_CMDID = 0xA08, |
| 297 | WMI_INTERNAL_FW_IOCTL_CMDID = 0xA0B, |
| 298 | WMI_LINK_STATS_CMDID = 0xA0C, |
| 299 | WMI_SET_GRANT_MCS_CMDID = 0xA0E, |
| 300 | WMI_SET_AP_SLOT_SIZE_CMDID = 0xA0F, |
| 301 | WMI_SET_VRING_PRIORITY_WEIGHT_CMDID = 0xA10, |
| 302 | WMI_SET_VRING_PRIORITY_CMDID = 0xA11, |
| 303 | WMI_RBUFCAP_CFG_CMDID = 0xA12, |
| 304 | WMI_TEMP_SENSE_ALL_CMDID = 0xA13, |
| 305 | WMI_SET_MAC_ADDRESS_CMDID = 0xF003, |
| 306 | WMI_ABORT_SCAN_CMDID = 0xF007, |
| 307 | WMI_SET_PROMISCUOUS_MODE_CMDID = 0xF041, |
| 308 | /* deprecated */ |
| 309 | WMI_GET_PMK_CMDID = 0xF048, |
| 310 | WMI_SET_PASSPHRASE_CMDID = 0xF049, |
| 311 | /* deprecated */ |
| 312 | WMI_SEND_ASSOC_RES_CMDID = 0xF04A, |
| 313 | /* deprecated */ |
| 314 | WMI_SET_ASSOC_REQ_RELAY_CMDID = 0xF04B, |
| 315 | WMI_MAC_ADDR_REQ_CMDID = 0xF04D, |
| 316 | WMI_FW_VER_CMDID = 0xF04E, |
| 317 | WMI_PMC_CMDID = 0xF04F, |
| 318 | }; |
| 319 | |
| 320 | /* WMI_CONNECT_CMDID */ |
| 321 | enum wmi_network_type { |
| 322 | WMI_NETTYPE_INFRA = 0x01, |
| 323 | WMI_NETTYPE_ADHOC = 0x02, |
| 324 | WMI_NETTYPE_ADHOC_CREATOR = 0x04, |
| 325 | WMI_NETTYPE_AP = 0x10, |
| 326 | WMI_NETTYPE_P2P = 0x20, |
| 327 | /* PCIE over 60g */ |
| 328 | WMI_NETTYPE_WBE = 0x40, |
| 329 | }; |
| 330 | |
| 331 | enum wmi_dot11_auth_mode { |
| 332 | WMI_AUTH11_OPEN = 0x01, |
| 333 | WMI_AUTH11_SHARED = 0x02, |
| 334 | WMI_AUTH11_LEAP = 0x04, |
| 335 | WMI_AUTH11_WSC = 0x08, |
| 336 | }; |
| 337 | |
| 338 | enum wmi_auth_mode { |
| 339 | WMI_AUTH_NONE = 0x01, |
| 340 | WMI_AUTH_WPA = 0x02, |
| 341 | WMI_AUTH_WPA2 = 0x04, |
| 342 | WMI_AUTH_WPA_PSK = 0x08, |
| 343 | WMI_AUTH_WPA2_PSK = 0x10, |
| 344 | WMI_AUTH_WPA_CCKM = 0x20, |
| 345 | WMI_AUTH_WPA2_CCKM = 0x40, |
| 346 | }; |
| 347 | |
| 348 | enum wmi_crypto_type { |
| 349 | WMI_CRYPT_NONE = 0x01, |
| 350 | WMI_CRYPT_AES_GCMP = 0x20, |
| 351 | }; |
| 352 | |
| 353 | enum wmi_connect_ctrl_flag_bits { |
| 354 | WMI_CONNECT_ASSOC_POLICY_USER = 0x01, |
| 355 | WMI_CONNECT_SEND_REASSOC = 0x02, |
| 356 | WMI_CONNECT_IGNORE_WPA_GROUP_CIPHER = 0x04, |
| 357 | WMI_CONNECT_PROFILE_MATCH_DONE = 0x08, |
| 358 | WMI_CONNECT_IGNORE_AAC_BEACON = 0x10, |
| 359 | WMI_CONNECT_CSA_FOLLOW_BSS = 0x20, |
| 360 | WMI_CONNECT_DO_WPA_OFFLOAD = 0x40, |
| 361 | WMI_CONNECT_DO_NOT_DEAUTH = 0x80, |
| 362 | }; |
| 363 | |
| 364 | #define WMI_MAX_SSID_LEN (32) |
| 365 | |
| 366 | enum wmi_channel { |
| 367 | WMI_CHANNEL_1 = 0x00, |
| 368 | WMI_CHANNEL_2 = 0x01, |
| 369 | WMI_CHANNEL_3 = 0x02, |
| 370 | WMI_CHANNEL_4 = 0x03, |
| 371 | WMI_CHANNEL_5 = 0x04, |
| 372 | WMI_CHANNEL_6 = 0x05, |
| 373 | WMI_CHANNEL_9 = 0x06, |
| 374 | WMI_CHANNEL_10 = 0x07, |
| 375 | WMI_CHANNEL_11 = 0x08, |
| 376 | WMI_CHANNEL_12 = 0x09, |
| 377 | }; |
| 378 | |
| 379 | /* WMI_CONNECT_CMDID */ |
| 380 | struct wmi_connect_cmd { |
| 381 | u8 network_type; |
| 382 | u8 dot11_auth_mode; |
| 383 | u8 auth_mode; |
| 384 | u8 pairwise_crypto_type; |
| 385 | u8 pairwise_crypto_len; |
| 386 | u8 group_crypto_type; |
| 387 | u8 group_crypto_len; |
| 388 | u8 ssid_len; |
| 389 | u8 ssid[WMI_MAX_SSID_LEN]; |
| 390 | /* enum wmi_channel WMI_CHANNEL_1..WMI_CHANNEL_6; for EDMG this is |
| 391 | * the primary channel number |
| 392 | */ |
| 393 | u8 channel; |
| 394 | /* enum wmi_channel WMI_CHANNEL_9..WMI_CHANNEL_12 */ |
| 395 | u8 edmg_channel; |
| 396 | u8 bssid[WMI_MAC_LEN]; |
| 397 | __le32 ctrl_flags; |
| 398 | u8 dst_mac[WMI_MAC_LEN]; |
| 399 | u8 reserved1[2]; |
| 400 | } __packed; |
| 401 | |
| 402 | /* WMI_DISCONNECT_STA_CMDID */ |
| 403 | struct wmi_disconnect_sta_cmd { |
| 404 | u8 dst_mac[WMI_MAC_LEN]; |
| 405 | __le16 disconnect_reason; |
| 406 | } __packed; |
| 407 | |
| 408 | #define WMI_MAX_KEY_INDEX (3) |
| 409 | #define WMI_MAX_KEY_LEN (32) |
| 410 | #define WMI_PASSPHRASE_LEN (64) |
| 411 | |
| 412 | /* WMI_SET_PASSPHRASE_CMDID */ |
| 413 | struct wmi_set_passphrase_cmd { |
| 414 | u8 ssid[WMI_MAX_SSID_LEN]; |
| 415 | u8 passphrase[WMI_PASSPHRASE_LEN]; |
| 416 | u8 ssid_len; |
| 417 | u8 passphrase_len; |
| 418 | } __packed; |
| 419 | |
| 420 | /* WMI_ADD_CIPHER_KEY_CMDID */ |
| 421 | enum wmi_key_usage { |
| 422 | WMI_KEY_USE_PAIRWISE = 0x00, |
| 423 | WMI_KEY_USE_RX_GROUP = 0x01, |
| 424 | WMI_KEY_USE_TX_GROUP = 0x02, |
| 425 | WMI_KEY_USE_STORE_PTK = 0x03, |
| 426 | WMI_KEY_USE_APPLY_PTK = 0x04, |
| 427 | }; |
| 428 | |
| 429 | struct wmi_add_cipher_key_cmd { |
| 430 | u8 key_index; |
| 431 | u8 key_type; |
| 432 | /* enum wmi_key_usage */ |
| 433 | u8 key_usage; |
| 434 | u8 key_len; |
| 435 | /* key replay sequence counter */ |
| 436 | u8 key_rsc[8]; |
| 437 | u8 key[WMI_MAX_KEY_LEN]; |
| 438 | /* Additional Key Control information */ |
| 439 | u8 key_op_ctrl; |
| 440 | u8 mac[WMI_MAC_LEN]; |
| 441 | } __packed; |
| 442 | |
| 443 | /* WMI_DELETE_CIPHER_KEY_CMDID */ |
| 444 | struct wmi_delete_cipher_key_cmd { |
| 445 | u8 key_index; |
| 446 | u8 mac[WMI_MAC_LEN]; |
| 447 | } __packed; |
| 448 | |
| 449 | /* WMI_START_SCAN_CMDID |
| 450 | * |
| 451 | * Start L1 scan operation |
| 452 | * |
| 453 | * Returned events: |
| 454 | * - WMI_RX_MGMT_PACKET_EVENTID - for every probe resp. |
| 455 | * - WMI_SCAN_COMPLETE_EVENTID |
| 456 | */ |
| 457 | enum wmi_scan_type { |
| 458 | WMI_ACTIVE_SCAN = 0x00, |
| 459 | WMI_SHORT_SCAN = 0x01, |
| 460 | WMI_PASSIVE_SCAN = 0x02, |
| 461 | WMI_DIRECT_SCAN = 0x03, |
| 462 | WMI_LONG_SCAN = 0x04, |
| 463 | }; |
| 464 | |
| 465 | /* WMI_START_SCAN_CMDID */ |
| 466 | struct wmi_start_scan_cmd { |
| 467 | u8 direct_scan_mac_addr[WMI_MAC_LEN]; |
| 468 | /* run scan with discovery beacon. Relevant for ACTIVE scan only. */ |
| 469 | u8 discovery_mode; |
| 470 | u8 reserved; |
| 471 | /* Max duration in the home channel(ms) */ |
| 472 | __le32 dwell_time; |
| 473 | /* Time interval between scans (ms) */ |
| 474 | __le32 force_scan_interval; |
| 475 | /* enum wmi_scan_type */ |
| 476 | u8 scan_type; |
| 477 | /* how many channels follow */ |
| 478 | u8 num_channels; |
| 479 | /* channels ID's: |
| 480 | * 0 - 58320 MHz |
| 481 | * 1 - 60480 MHz |
| 482 | * 2 - 62640 MHz |
| 483 | */ |
| 484 | struct { |
| 485 | u8 channel; |
| 486 | u8 reserved; |
| 487 | } channel_list[0]; |
| 488 | } __packed; |
| 489 | |
| 490 | #define WMI_MAX_PNO_SSID_NUM (16) |
| 491 | #define WMI_MAX_CHANNEL_NUM (6) |
| 492 | #define WMI_MAX_PLANS_NUM (2) |
| 493 | |
| 494 | /* WMI_START_SCHED_SCAN_CMDID */ |
| 495 | struct wmi_sched_scan_ssid_match { |
| 496 | u8 ssid_len; |
| 497 | u8 ssid[WMI_MAX_SSID_LEN]; |
| 498 | s8 rssi_threshold; |
| 499 | /* boolean */ |
| 500 | u8 add_ssid_to_probe; |
| 501 | u8 reserved; |
| 502 | } __packed; |
| 503 | |
| 504 | /* WMI_START_SCHED_SCAN_CMDID */ |
| 505 | struct wmi_sched_scan_plan { |
| 506 | __le16 interval_sec; |
| 507 | __le16 num_of_iterations; |
| 508 | } __packed; |
| 509 | |
| 510 | /* WMI_START_SCHED_SCAN_CMDID */ |
| 511 | struct wmi_start_sched_scan_cmd { |
| 512 | struct wmi_sched_scan_ssid_match ssid_for_match[WMI_MAX_PNO_SSID_NUM]; |
| 513 | u8 num_of_ssids; |
| 514 | s8 min_rssi_threshold; |
| 515 | u8 channel_list[WMI_MAX_CHANNEL_NUM]; |
| 516 | u8 num_of_channels; |
| 517 | u8 reserved; |
| 518 | __le16 initial_delay_sec; |
| 519 | struct wmi_sched_scan_plan scan_plans[WMI_MAX_PLANS_NUM]; |
| 520 | } __packed; |
| 521 | |
| 522 | /* WMI_FT_AUTH_CMDID */ |
| 523 | struct wmi_ft_auth_cmd { |
| 524 | u8 bssid[WMI_MAC_LEN]; |
| 525 | /* enum wmi_channel */ |
| 526 | u8 channel; |
| 527 | /* enum wmi_channel */ |
| 528 | u8 edmg_channel; |
| 529 | u8 reserved[4]; |
| 530 | } __packed; |
| 531 | |
| 532 | /* WMI_FT_REASSOC_CMDID */ |
| 533 | struct wmi_ft_reassoc_cmd { |
| 534 | u8 bssid[WMI_MAC_LEN]; |
| 535 | u8 reserved[2]; |
| 536 | } __packed; |
| 537 | |
| 538 | /* WMI_UPDATE_FT_IES_CMDID */ |
| 539 | struct wmi_update_ft_ies_cmd { |
| 540 | /* Length of the FT IEs */ |
| 541 | __le16 ie_len; |
| 542 | u8 reserved[2]; |
| 543 | u8 ie_info[0]; |
| 544 | } __packed; |
| 545 | |
| 546 | /* WMI_SET_PROBED_SSID_CMDID */ |
| 547 | #define MAX_PROBED_SSID_INDEX (3) |
| 548 | |
| 549 | enum wmi_ssid_flag { |
| 550 | /* disables entry */ |
| 551 | WMI_SSID_FLAG_DISABLE = 0x00, |
| 552 | /* probes specified ssid */ |
| 553 | WMI_SSID_FLAG_SPECIFIC = 0x01, |
| 554 | /* probes for any ssid */ |
| 555 | WMI_SSID_FLAG_ANY = 0x02, |
| 556 | }; |
| 557 | |
| 558 | struct wmi_probed_ssid_cmd { |
| 559 | /* 0 to MAX_PROBED_SSID_INDEX */ |
| 560 | u8 entry_index; |
| 561 | /* enum wmi_ssid_flag */ |
| 562 | u8 flag; |
| 563 | u8 ssid_len; |
| 564 | u8 ssid[WMI_MAX_SSID_LEN]; |
| 565 | } __packed; |
| 566 | |
| 567 | /* WMI_SET_APPIE_CMDID |
| 568 | * Add Application specified IE to a management frame |
| 569 | */ |
| 570 | #define WMI_MAX_IE_LEN (1024) |
| 571 | |
| 572 | /* Frame Types */ |
| 573 | enum wmi_mgmt_frame_type { |
| 574 | WMI_FRAME_BEACON = 0x00, |
| 575 | WMI_FRAME_PROBE_REQ = 0x01, |
| 576 | WMI_FRAME_PROBE_RESP = 0x02, |
| 577 | WMI_FRAME_ASSOC_REQ = 0x03, |
| 578 | WMI_FRAME_ASSOC_RESP = 0x04, |
| 579 | WMI_NUM_MGMT_FRAME = 0x05, |
| 580 | }; |
| 581 | |
| 582 | struct wmi_set_appie_cmd { |
| 583 | /* enum wmi_mgmt_frame_type */ |
| 584 | u8 mgmt_frm_type; |
| 585 | u8 reserved; |
| 586 | /* Length of the IE to be added to MGMT frame */ |
| 587 | __le16 ie_len; |
| 588 | u8 ie_info[0]; |
| 589 | } __packed; |
| 590 | |
| 591 | /* WMI_PXMT_RANGE_CFG_CMDID */ |
| 592 | struct wmi_pxmt_range_cfg_cmd { |
| 593 | u8 dst_mac[WMI_MAC_LEN]; |
| 594 | __le16 range; |
| 595 | } __packed; |
| 596 | |
| 597 | /* WMI_PXMT_SNR2_RANGE_CFG_CMDID */ |
| 598 | struct wmi_pxmt_snr2_range_cfg_cmd { |
| 599 | s8 snr2range_arr[2]; |
| 600 | } __packed; |
| 601 | |
| 602 | /* WMI_RADAR_GENERAL_CONFIG_CMDID */ |
| 603 | struct wmi_radar_general_config_cmd { |
| 604 | /* Number of pulses (CIRs) in FW FIFO to initiate pulses transfer |
| 605 | * from FW to Host |
| 606 | */ |
| 607 | __le32 fifo_watermark; |
| 608 | /* In unit of us, in the range [100, 1000000] */ |
| 609 | __le32 t_burst; |
| 610 | /* Valid in the range [1, 32768], 0xFFFF means infinite */ |
| 611 | __le32 n_bursts; |
| 612 | /* In unit of 330Mhz clk, in the range [4, 2000]*330 */ |
| 613 | __le32 t_pulse; |
| 614 | /* In the range of [1,4096] */ |
| 615 | __le16 n_pulses; |
| 616 | /* Number of taps after cTap per CIR */ |
| 617 | __le16 n_samples; |
| 618 | /* Offset from the main tap (0 = zero-distance). In the range of [0, |
| 619 | * 255] |
| 620 | */ |
| 621 | u8 first_sample_offset; |
| 622 | /* Number of Pulses to average, 1, 2, 4, 8 */ |
| 623 | u8 pulses_to_avg; |
| 624 | /* Number of adjacent taps to average, 1, 2, 4, 8 */ |
| 625 | u8 samples_to_avg; |
| 626 | /* The index to config general params */ |
| 627 | u8 general_index; |
| 628 | u8 reserved[4]; |
| 629 | } __packed; |
| 630 | |
| 631 | /* WMI_RADAR_CONFIG_SELECT_CMDID */ |
| 632 | struct wmi_radar_config_select_cmd { |
| 633 | /* Select the general params index to use */ |
| 634 | u8 general_index; |
| 635 | u8 reserved[3]; |
| 636 | /* 0 means don't update burst_active_vector */ |
| 637 | __le32 burst_active_vector; |
| 638 | /* 0 means don't update pulse_active_vector */ |
| 639 | __le32 pulse_active_vector; |
| 640 | } __packed; |
| 641 | |
| 642 | /* WMI_RADAR_PARAMS_CONFIG_CMDID */ |
| 643 | struct wmi_radar_params_config_cmd { |
| 644 | /* The burst index selected to config */ |
| 645 | u8 burst_index; |
| 646 | /* 0-not active, 1-active */ |
| 647 | u8 burst_en; |
| 648 | /* The pulse index selected to config */ |
| 649 | u8 pulse_index; |
| 650 | /* 0-not active, 1-active */ |
| 651 | u8 pulse_en; |
| 652 | /* TX RF to use on current pulse */ |
| 653 | u8 tx_rfc_idx; |
| 654 | u8 tx_sector; |
| 655 | /* Offset from calibrated value.(expected to be 0)(value is row in |
| 656 | * Gain-LUT, not dB) |
| 657 | */ |
| 658 | s8 tx_rf_gain_comp; |
| 659 | /* expected to be 0 */ |
| 660 | s8 tx_bb_gain_comp; |
| 661 | /* RX RF to use on current pulse */ |
| 662 | u8 rx_rfc_idx; |
| 663 | u8 rx_sector; |
| 664 | /* Offset from calibrated value.(expected to be 0)(value is row in |
| 665 | * Gain-LUT, not dB) |
| 666 | */ |
| 667 | s8 rx_rf_gain_comp; |
| 668 | /* Value in dB.(expected to be 0) */ |
| 669 | s8 rx_bb_gain_comp; |
| 670 | /* Offset from calibrated value.(expected to be 0) */ |
| 671 | s8 rx_timing_offset; |
| 672 | u8 reserved[3]; |
| 673 | } __packed; |
| 674 | |
| 675 | /* WMI_RADAR_SET_MODE_CMDID */ |
| 676 | struct wmi_radar_set_mode_cmd { |
| 677 | /* 0-disable/1-enable */ |
| 678 | u8 enable; |
| 679 | /* enum wmi_channel */ |
| 680 | u8 channel; |
| 681 | /* In the range of [0,7], 0xff means use default */ |
| 682 | u8 tx_rfc_idx; |
| 683 | /* In the range of [0,7], 0xff means use default */ |
| 684 | u8 rx_rfc_idx; |
| 685 | } __packed; |
| 686 | |
| 687 | /* WMI_RADAR_CONTROL_CMDID */ |
| 688 | struct wmi_radar_control_cmd { |
| 689 | /* 0-stop/1-start */ |
| 690 | u8 start; |
| 691 | u8 reserved[3]; |
| 692 | } __packed; |
| 693 | |
| 694 | /* WMI_RADAR_PCI_CONTROL_CMDID */ |
| 695 | struct wmi_radar_pci_control_cmd { |
| 696 | /* pcie host buffer start address */ |
| 697 | __le64 base_addr; |
| 698 | /* pcie host control block address */ |
| 699 | __le64 control_block_addr; |
| 700 | /* pcie host buffer size */ |
| 701 | __le32 buffer_size; |
| 702 | __le32 reserved; |
| 703 | } __packed; |
| 704 | |
| 705 | /* WMI_RF_MGMT_CMDID */ |
| 706 | enum wmi_rf_mgmt_type { |
| 707 | WMI_RF_MGMT_W_DISABLE = 0x00, |
| 708 | WMI_RF_MGMT_W_ENABLE = 0x01, |
| 709 | WMI_RF_MGMT_GET_STATUS = 0x02, |
| 710 | }; |
| 711 | |
| 712 | /* WMI_BF_CONTROL_CMDID */ |
| 713 | enum wmi_bf_triggers { |
| 714 | WMI_BF_TRIGGER_RS_MCS1_TH_FAILURE = 0x01, |
| 715 | WMI_BF_TRIGGER_RS_MCS1_NO_BACK_FAILURE = 0x02, |
| 716 | WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_TXOP = 0x04, |
| 717 | WMI_BF_TRIGGER_MAX_BACK_FAILURE = 0x08, |
| 718 | WMI_BF_TRIGGER_FW = 0x10, |
| 719 | WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_KEEP_ALIVE = 0x20, |
| 720 | WMI_BF_TRIGGER_AOA = 0x40, |
| 721 | WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_UPM = 0x80, |
| 722 | }; |
| 723 | |
| 724 | /* WMI_RF_MGMT_CMDID */ |
| 725 | struct wmi_rf_mgmt_cmd { |
| 726 | __le32 rf_mgmt_type; |
| 727 | } __packed; |
| 728 | |
| 729 | /* WMI_CORR_MEASURE_CMDID */ |
| 730 | struct wmi_corr_measure_cmd { |
| 731 | __le32 freq_mhz; |
| 732 | __le32 length_samples; |
| 733 | __le32 iterations; |
| 734 | } __packed; |
| 735 | |
| 736 | /* WMI_SET_SSID_CMDID */ |
| 737 | struct wmi_set_ssid_cmd { |
| 738 | __le32 ssid_len; |
| 739 | u8 ssid[WMI_MAX_SSID_LEN]; |
| 740 | } __packed; |
| 741 | |
| 742 | /* WMI_SET_PCP_CHANNEL_CMDID */ |
| 743 | struct wmi_set_pcp_channel_cmd { |
| 744 | u8 channel; |
| 745 | u8 reserved[3]; |
| 746 | } __packed; |
| 747 | |
| 748 | /* WMI_BCON_CTRL_CMDID */ |
| 749 | struct wmi_bcon_ctrl_cmd { |
| 750 | __le16 bcon_interval; |
| 751 | __le16 frag_num; |
| 752 | __le64 ss_mask; |
| 753 | u8 network_type; |
| 754 | u8 pcp_max_assoc_sta; |
| 755 | u8 disable_sec_offload; |
| 756 | u8 disable_sec; |
| 757 | u8 hidden_ssid; |
| 758 | u8 is_go; |
| 759 | /* A-BFT length override if non-0 */ |
| 760 | u8 abft_len; |
| 761 | u8 reserved; |
| 762 | } __packed; |
| 763 | |
| 764 | /* WMI_PORT_ALLOCATE_CMDID */ |
| 765 | enum wmi_port_role { |
| 766 | WMI_PORT_STA = 0x00, |
| 767 | WMI_PORT_PCP = 0x01, |
| 768 | WMI_PORT_AP = 0x02, |
| 769 | WMI_PORT_P2P_DEV = 0x03, |
| 770 | WMI_PORT_P2P_CLIENT = 0x04, |
| 771 | WMI_PORT_P2P_GO = 0x05, |
| 772 | }; |
| 773 | |
| 774 | /* WMI_PORT_ALLOCATE_CMDID */ |
| 775 | struct wmi_port_allocate_cmd { |
| 776 | u8 mac[WMI_MAC_LEN]; |
| 777 | u8 port_role; |
| 778 | u8 mid; |
| 779 | } __packed; |
| 780 | |
| 781 | /* WMI_PORT_DELETE_CMDID */ |
| 782 | struct wmi_port_delete_cmd { |
| 783 | u8 mid; |
| 784 | u8 reserved[3]; |
| 785 | } __packed; |
| 786 | |
| 787 | /* WMI_TRAFFIC_SUSPEND_CMD wakeup trigger bit mask values */ |
| 788 | enum wmi_wakeup_trigger { |
| 789 | WMI_WAKEUP_TRIGGER_UCAST = 0x01, |
| 790 | WMI_WAKEUP_TRIGGER_BCAST = 0x02, |
| 791 | }; |
| 792 | |
| 793 | /* WMI_TRAFFIC_SUSPEND_CMDID */ |
| 794 | struct wmi_traffic_suspend_cmd { |
| 795 | /* Bit vector: bit[0] - wake on Unicast, bit[1] - wake on Broadcast */ |
| 796 | u8 wakeup_trigger; |
| 797 | } __packed; |
| 798 | |
| 799 | /* WMI_P2P_CFG_CMDID */ |
| 800 | enum wmi_discovery_mode { |
| 801 | WMI_DISCOVERY_MODE_NON_OFFLOAD = 0x00, |
| 802 | WMI_DISCOVERY_MODE_OFFLOAD = 0x01, |
| 803 | WMI_DISCOVERY_MODE_PEER2PEER = 0x02, |
| 804 | }; |
| 805 | |
| 806 | struct wmi_p2p_cfg_cmd { |
| 807 | /* enum wmi_discovery_mode */ |
| 808 | u8 discovery_mode; |
| 809 | u8 channel; |
| 810 | /* base to listen/search duration calculation */ |
| 811 | __le16 bcon_interval; |
| 812 | } __packed; |
| 813 | |
| 814 | /* WMI_POWER_MGMT_CFG_CMDID */ |
| 815 | enum wmi_power_source_type { |
| 816 | WMI_POWER_SOURCE_BATTERY = 0x00, |
| 817 | WMI_POWER_SOURCE_OTHER = 0x01, |
| 818 | }; |
| 819 | |
| 820 | struct wmi_power_mgmt_cfg_cmd { |
| 821 | /* enum wmi_power_source_type */ |
| 822 | u8 power_source; |
| 823 | u8 reserved[3]; |
| 824 | } __packed; |
| 825 | |
| 826 | /* WMI_PCP_START_CMDID */ |
| 827 | enum wmi_ap_sme_offload_mode { |
| 828 | /* Full AP SME in FW */ |
| 829 | WMI_AP_SME_OFFLOAD_FULL = 0x00, |
| 830 | /* Probe AP SME in FW */ |
| 831 | WMI_AP_SME_OFFLOAD_PARTIAL = 0x01, |
| 832 | /* AP SME in host */ |
| 833 | WMI_AP_SME_OFFLOAD_NONE = 0x02, |
| 834 | }; |
| 835 | |
| 836 | /* WMI_PCP_START_CMDID */ |
| 837 | struct wmi_pcp_start_cmd { |
| 838 | __le16 bcon_interval; |
| 839 | u8 pcp_max_assoc_sta; |
| 840 | u8 hidden_ssid; |
| 841 | u8 is_go; |
| 842 | /* enum wmi_channel WMI_CHANNEL_9..WMI_CHANNEL_12 */ |
| 843 | u8 edmg_channel; |
| 844 | u8 raw_mode; |
| 845 | u8 reserved[3]; |
| 846 | /* A-BFT length override if non-0 */ |
| 847 | u8 abft_len; |
| 848 | /* enum wmi_ap_sme_offload_mode_e */ |
| 849 | u8 ap_sme_offload_mode; |
| 850 | u8 network_type; |
| 851 | /* enum wmi_channel WMI_CHANNEL_1..WMI_CHANNEL_6; for EDMG this is |
| 852 | * the primary channel number |
| 853 | */ |
| 854 | u8 channel; |
| 855 | u8 disable_sec_offload; |
| 856 | u8 disable_sec; |
| 857 | } __packed; |
| 858 | |
| 859 | /* WMI_SW_TX_REQ_CMDID */ |
| 860 | struct wmi_sw_tx_req_cmd { |
| 861 | u8 dst_mac[WMI_MAC_LEN]; |
| 862 | __le16 len; |
| 863 | u8 payload[0]; |
| 864 | } __packed; |
| 865 | |
| 866 | /* WMI_SW_TX_REQ_EXT_CMDID */ |
| 867 | struct wmi_sw_tx_req_ext_cmd { |
| 868 | u8 dst_mac[WMI_MAC_LEN]; |
| 869 | __le16 len; |
| 870 | __le16 duration_ms; |
| 871 | /* Channel to use, 0xFF for currently active channel */ |
| 872 | u8 channel; |
| 873 | u8 reserved[5]; |
| 874 | u8 payload[0]; |
| 875 | } __packed; |
| 876 | |
| 877 | /* WMI_VRING_SWITCH_TIMING_CONFIG_CMDID */ |
| 878 | struct wmi_vring_switch_timing_config_cmd { |
| 879 | /* Set vring timing configuration: |
| 880 | * |
| 881 | * defined interval for vring switch |
| 882 | */ |
| 883 | __le32 interval_usec; |
| 884 | /* vring inactivity threshold */ |
| 885 | __le32 idle_th_usec; |
| 886 | } __packed; |
| 887 | |
| 888 | struct wmi_sw_ring_cfg { |
| 889 | __le64 ring_mem_base; |
| 890 | __le16 ring_size; |
| 891 | __le16 max_mpdu_size; |
| 892 | } __packed; |
| 893 | |
| 894 | /* wmi_vring_cfg_schd */ |
| 895 | struct wmi_vring_cfg_schd { |
| 896 | __le16 priority; |
| 897 | __le16 timeslot_us; |
| 898 | } __packed; |
| 899 | |
| 900 | enum wmi_vring_cfg_encap_trans_type { |
| 901 | WMI_VRING_ENC_TYPE_802_3 = 0x00, |
| 902 | WMI_VRING_ENC_TYPE_NATIVE_WIFI = 0x01, |
| 903 | WMI_VRING_ENC_TYPE_NONE = 0x02, |
| 904 | }; |
| 905 | |
| 906 | enum wmi_vring_cfg_ds_cfg { |
| 907 | WMI_VRING_DS_PBSS = 0x00, |
| 908 | WMI_VRING_DS_STATION = 0x01, |
| 909 | WMI_VRING_DS_AP = 0x02, |
| 910 | WMI_VRING_DS_ADDR4 = 0x03, |
| 911 | }; |
| 912 | |
| 913 | enum wmi_vring_cfg_nwifi_ds_trans_type { |
| 914 | WMI_NWIFI_TX_TRANS_MODE_NO = 0x00, |
| 915 | WMI_NWIFI_TX_TRANS_MODE_AP2PBSS = 0x01, |
| 916 | WMI_NWIFI_TX_TRANS_MODE_STA2PBSS = 0x02, |
| 917 | }; |
| 918 | |
| 919 | enum wmi_vring_cfg_schd_params_priority { |
| 920 | WMI_SCH_PRIO_REGULAR = 0x00, |
| 921 | WMI_SCH_PRIO_HIGH = 0x01, |
| 922 | }; |
| 923 | |
| 924 | #define CIDXTID_EXTENDED_CID_TID (0xFF) |
| 925 | #define CIDXTID_CID_POS (0) |
| 926 | #define CIDXTID_CID_LEN (4) |
| 927 | #define CIDXTID_CID_MSK (0xF) |
| 928 | #define CIDXTID_TID_POS (4) |
| 929 | #define CIDXTID_TID_LEN (4) |
| 930 | #define CIDXTID_TID_MSK (0xF0) |
| 931 | #define VRING_CFG_MAC_CTRL_LIFETIME_EN_POS (0) |
| 932 | #define VRING_CFG_MAC_CTRL_LIFETIME_EN_LEN (1) |
| 933 | #define VRING_CFG_MAC_CTRL_LIFETIME_EN_MSK (0x1) |
| 934 | #define VRING_CFG_MAC_CTRL_AGGR_EN_POS (1) |
| 935 | #define VRING_CFG_MAC_CTRL_AGGR_EN_LEN (1) |
| 936 | #define VRING_CFG_MAC_CTRL_AGGR_EN_MSK (0x2) |
| 937 | #define VRING_CFG_TO_RESOLUTION_VALUE_POS (0) |
| 938 | #define VRING_CFG_TO_RESOLUTION_VALUE_LEN (6) |
| 939 | #define VRING_CFG_TO_RESOLUTION_VALUE_MSK (0x3F) |
| 940 | |
| 941 | struct wmi_vring_cfg { |
| 942 | struct wmi_sw_ring_cfg tx_sw_ring; |
| 943 | /* 0-23 vrings */ |
| 944 | u8 ringid; |
| 945 | /* Used for cid less than 8. For higher cid set |
| 946 | * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead |
| 947 | */ |
| 948 | u8 cidxtid; |
| 949 | u8 encap_trans_type; |
| 950 | /* 802.3 DS cfg */ |
| 951 | u8 ds_cfg; |
| 952 | u8 nwifi_ds_trans_type; |
| 953 | u8 mac_ctrl; |
| 954 | u8 to_resolution; |
| 955 | u8 agg_max_wsize; |
| 956 | struct wmi_vring_cfg_schd schd_params; |
| 957 | /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ |
| 958 | u8 cid; |
| 959 | /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ |
| 960 | u8 tid; |
| 961 | /* Update the vring's priority for Qos purpose. Set to |
| 962 | * WMI_QOS_DEFAULT_PRIORITY to use MID's QoS priority |
| 963 | */ |
| 964 | u8 qos_priority; |
| 965 | u8 reserved; |
| 966 | } __packed; |
| 967 | |
| 968 | enum wmi_vring_cfg_cmd_action { |
| 969 | WMI_VRING_CMD_ADD = 0x00, |
| 970 | WMI_VRING_CMD_MODIFY = 0x01, |
| 971 | WMI_VRING_CMD_DELETE = 0x02, |
| 972 | }; |
| 973 | |
| 974 | /* WMI_VRING_CFG_CMDID */ |
| 975 | struct wmi_vring_cfg_cmd { |
| 976 | __le32 action; |
| 977 | struct wmi_vring_cfg vring_cfg; |
| 978 | } __packed; |
| 979 | |
| 980 | struct wmi_bcast_vring_cfg { |
| 981 | struct wmi_sw_ring_cfg tx_sw_ring; |
| 982 | /* 0-23 vrings */ |
| 983 | u8 ringid; |
| 984 | u8 encap_trans_type; |
| 985 | /* 802.3 DS cfg */ |
| 986 | u8 ds_cfg; |
| 987 | u8 nwifi_ds_trans_type; |
| 988 | } __packed; |
| 989 | |
| 990 | /* WMI_BCAST_VRING_CFG_CMDID */ |
| 991 | struct wmi_bcast_vring_cfg_cmd { |
| 992 | __le32 action; |
| 993 | struct wmi_bcast_vring_cfg vring_cfg; |
| 994 | } __packed; |
| 995 | |
| 996 | struct wmi_edma_ring_cfg { |
| 997 | __le64 ring_mem_base; |
| 998 | /* size in number of items */ |
| 999 | __le16 ring_size; |
| 1000 | u8 ring_id; |
| 1001 | u8 reserved; |
| 1002 | } __packed; |
| 1003 | |
| 1004 | enum wmi_rx_msg_type { |
| 1005 | WMI_RX_MSG_TYPE_COMPRESSED = 0x00, |
| 1006 | WMI_RX_MSG_TYPE_EXTENDED = 0x01, |
| 1007 | }; |
| 1008 | |
| 1009 | enum wmi_ring_add_irq_mode { |
| 1010 | /* Backwards compatibility |
| 1011 | * for DESC ring - interrupt disabled |
| 1012 | * for STATUS ring - interrupt enabled |
| 1013 | */ |
| 1014 | WMI_RING_ADD_IRQ_MODE_BWC = 0x00, |
| 1015 | WMI_RING_ADD_IRQ_MODE_DISABLE = 0x01, |
| 1016 | WMI_RING_ADD_IRQ_MODE_ENABLE = 0x02, |
| 1017 | }; |
| 1018 | |
| 1019 | struct wmi_tx_status_ring_add_cmd { |
| 1020 | struct wmi_edma_ring_cfg ring_cfg; |
| 1021 | u8 irq_index; |
| 1022 | /* wmi_ring_add_irq_mode */ |
| 1023 | u8 irq_mode; |
| 1024 | u8 reserved[2]; |
| 1025 | } __packed; |
| 1026 | |
| 1027 | struct wmi_rx_status_ring_add_cmd { |
| 1028 | struct wmi_edma_ring_cfg ring_cfg; |
| 1029 | u8 irq_index; |
| 1030 | /* wmi_rx_msg_type */ |
| 1031 | u8 rx_msg_type; |
| 1032 | u8 reserved[2]; |
| 1033 | } __packed; |
| 1034 | |
| 1035 | struct wmi_cfg_def_rx_offload_cmd { |
| 1036 | __le16 max_msdu_size; |
| 1037 | __le16 max_rx_pl_per_desc; |
| 1038 | u8 decap_trans_type; |
| 1039 | u8 l2_802_3_offload_ctrl; |
| 1040 | u8 l2_nwifi_offload_ctrl; |
| 1041 | u8 vlan_id; |
| 1042 | u8 nwifi_ds_trans_type; |
| 1043 | u8 l3_l4_ctrl; |
| 1044 | u8 reserved[6]; |
| 1045 | } __packed; |
| 1046 | |
| 1047 | struct wmi_tx_desc_ring_add_cmd { |
| 1048 | struct wmi_edma_ring_cfg ring_cfg; |
| 1049 | __le16 max_msdu_size; |
| 1050 | /* Correlated status ring (0-63) */ |
| 1051 | u8 status_ring_id; |
| 1052 | u8 cid; |
| 1053 | u8 tid; |
| 1054 | u8 encap_trans_type; |
| 1055 | u8 mac_ctrl; |
| 1056 | u8 to_resolution; |
| 1057 | u8 agg_max_wsize; |
| 1058 | u8 irq_index; |
| 1059 | /* wmi_ring_add_irq_mode */ |
| 1060 | u8 irq_mode; |
| 1061 | u8 reserved; |
| 1062 | struct wmi_vring_cfg_schd schd_params; |
| 1063 | } __packed; |
| 1064 | |
| 1065 | struct wmi_rx_desc_ring_add_cmd { |
| 1066 | struct wmi_edma_ring_cfg ring_cfg; |
| 1067 | u8 irq_index; |
| 1068 | /* 0-63 status rings */ |
| 1069 | u8 status_ring_id; |
| 1070 | u8 reserved[2]; |
| 1071 | __le64 sw_tail_host_addr; |
| 1072 | } __packed; |
| 1073 | |
| 1074 | struct wmi_bcast_desc_ring_add_cmd { |
| 1075 | struct wmi_edma_ring_cfg ring_cfg; |
| 1076 | __le16 max_msdu_size; |
| 1077 | /* Correlated status ring (0-63) */ |
| 1078 | u8 status_ring_id; |
| 1079 | u8 encap_trans_type; |
| 1080 | u8 reserved[4]; |
| 1081 | } __packed; |
| 1082 | |
| 1083 | /* WMI_LO_POWER_CALIB_FROM_OTP_CMDID */ |
| 1084 | struct wmi_lo_power_calib_from_otp_cmd { |
| 1085 | /* index to read from OTP. zero based */ |
| 1086 | u8 index; |
| 1087 | u8 reserved[3]; |
| 1088 | } __packed; |
| 1089 | |
| 1090 | /* WMI_LO_POWER_CALIB_FROM_OTP_EVENTID */ |
| 1091 | struct wmi_lo_power_calib_from_otp_event { |
| 1092 | /* wmi_fw_status */ |
| 1093 | u8 status; |
| 1094 | u8 reserved[3]; |
| 1095 | } __packed; |
| 1096 | |
| 1097 | /* WMI_RING_BA_EN_CMDID */ |
| 1098 | struct wmi_ring_ba_en_cmd { |
| 1099 | u8 ring_id; |
| 1100 | u8 agg_max_wsize; |
| 1101 | __le16 ba_timeout; |
| 1102 | u8 amsdu; |
| 1103 | u8 reserved[3]; |
| 1104 | } __packed; |
| 1105 | |
| 1106 | /* WMI_RING_BA_DIS_CMDID */ |
| 1107 | struct wmi_ring_ba_dis_cmd { |
| 1108 | u8 ring_id; |
| 1109 | u8 reserved; |
| 1110 | __le16 reason; |
| 1111 | } __packed; |
| 1112 | |
| 1113 | /* WMI_NOTIFY_REQ_CMDID */ |
| 1114 | struct wmi_notify_req_cmd { |
| 1115 | u8 cid; |
| 1116 | u8 year; |
| 1117 | u8 month; |
| 1118 | u8 day; |
| 1119 | __le32 interval_usec; |
| 1120 | u8 hour; |
| 1121 | u8 minute; |
| 1122 | u8 second; |
| 1123 | u8 miliseconds; |
| 1124 | } __packed; |
| 1125 | |
| 1126 | /* WMI_CFG_RX_CHAIN_CMDID */ |
| 1127 | enum wmi_sniffer_cfg_mode { |
| 1128 | WMI_SNIFFER_OFF = 0x00, |
| 1129 | WMI_SNIFFER_ON = 0x01, |
| 1130 | }; |
| 1131 | |
| 1132 | /* WMI_SILENT_RSSI_TABLE */ |
| 1133 | enum wmi_silent_rssi_table { |
| 1134 | RF_TEMPERATURE_CALIB_DEFAULT_DB = 0x00, |
| 1135 | RF_TEMPERATURE_CALIB_HIGH_POWER_DB = 0x01, |
| 1136 | }; |
| 1137 | |
| 1138 | /* WMI_SILENT_RSSI_STATUS */ |
| 1139 | enum wmi_silent_rssi_status { |
| 1140 | SILENT_RSSI_SUCCESS = 0x00, |
| 1141 | SILENT_RSSI_FAILURE = 0x01, |
| 1142 | }; |
| 1143 | |
| 1144 | /* WMI_SET_ACTIVE_SILENT_RSSI_TABLE_CMDID */ |
| 1145 | struct wmi_set_active_silent_rssi_table_cmd { |
| 1146 | /* enum wmi_silent_rssi_table */ |
| 1147 | __le32 table; |
| 1148 | } __packed; |
| 1149 | |
| 1150 | enum wmi_sniffer_cfg_phy_info_mode { |
| 1151 | WMI_SNIFFER_PHY_INFO_DISABLED = 0x00, |
| 1152 | WMI_SNIFFER_PHY_INFO_ENABLED = 0x01, |
| 1153 | }; |
| 1154 | |
| 1155 | enum wmi_sniffer_cfg_phy_support { |
| 1156 | WMI_SNIFFER_CP = 0x00, |
| 1157 | WMI_SNIFFER_DP = 0x01, |
| 1158 | WMI_SNIFFER_BOTH_PHYS = 0x02, |
| 1159 | }; |
| 1160 | |
| 1161 | /* wmi_sniffer_cfg */ |
| 1162 | struct wmi_sniffer_cfg { |
| 1163 | /* enum wmi_sniffer_cfg_mode */ |
| 1164 | __le32 mode; |
| 1165 | /* enum wmi_sniffer_cfg_phy_info_mode */ |
| 1166 | __le32 phy_info_mode; |
| 1167 | /* enum wmi_sniffer_cfg_phy_support */ |
| 1168 | __le32 phy_support; |
| 1169 | u8 channel; |
| 1170 | u8 reserved[3]; |
| 1171 | } __packed; |
| 1172 | |
| 1173 | enum wmi_cfg_rx_chain_cmd_action { |
| 1174 | WMI_RX_CHAIN_ADD = 0x00, |
| 1175 | WMI_RX_CHAIN_DEL = 0x01, |
| 1176 | }; |
| 1177 | |
| 1178 | enum wmi_cfg_rx_chain_cmd_decap_trans_type { |
| 1179 | WMI_DECAP_TYPE_802_3 = 0x00, |
| 1180 | WMI_DECAP_TYPE_NATIVE_WIFI = 0x01, |
| 1181 | WMI_DECAP_TYPE_NONE = 0x02, |
| 1182 | }; |
| 1183 | |
| 1184 | enum wmi_cfg_rx_chain_cmd_nwifi_ds_trans_type { |
| 1185 | WMI_NWIFI_RX_TRANS_MODE_NO = 0x00, |
| 1186 | WMI_NWIFI_RX_TRANS_MODE_PBSS2AP = 0x01, |
| 1187 | WMI_NWIFI_RX_TRANS_MODE_PBSS2STA = 0x02, |
| 1188 | }; |
| 1189 | |
| 1190 | enum wmi_cfg_rx_chain_cmd_reorder_type { |
| 1191 | WMI_RX_HW_REORDER = 0x00, |
| 1192 | WMI_RX_SW_REORDER = 0x01, |
| 1193 | }; |
| 1194 | |
| 1195 | #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_POS (0) |
| 1196 | #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_LEN (1) |
| 1197 | #define L2_802_3_OFFLOAD_CTRL_VLAN_TAG_INSERTION_MSK (0x1) |
| 1198 | #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_POS (1) |
| 1199 | #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_LEN (1) |
| 1200 | #define L2_802_3_OFFLOAD_CTRL_SNAP_KEEP_MSK (0x2) |
| 1201 | #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_POS (0) |
| 1202 | #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_LEN (1) |
| 1203 | #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_QOS_MSK (0x1) |
| 1204 | #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_POS (1) |
| 1205 | #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_LEN (1) |
| 1206 | #define L2_NWIFI_OFFLOAD_CTRL_REMOVE_PN_MSK (0x2) |
| 1207 | #define L3_L4_CTRL_IPV4_CHECKSUM_EN_POS (0) |
| 1208 | #define L3_L4_CTRL_IPV4_CHECKSUM_EN_LEN (1) |
| 1209 | #define L3_L4_CTRL_IPV4_CHECKSUM_EN_MSK (0x1) |
| 1210 | #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_POS (1) |
| 1211 | #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_LEN (1) |
| 1212 | #define L3_L4_CTRL_TCPIP_CHECKSUM_EN_MSK (0x2) |
| 1213 | #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_POS (0) |
| 1214 | #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_LEN (1) |
| 1215 | #define RING_CTRL_OVERRIDE_PREFETCH_THRSH_MSK (0x1) |
| 1216 | #define RING_CTRL_OVERRIDE_WB_THRSH_POS (1) |
| 1217 | #define RING_CTRL_OVERRIDE_WB_THRSH_LEN (1) |
| 1218 | #define RING_CTRL_OVERRIDE_WB_THRSH_MSK (0x2) |
| 1219 | #define RING_CTRL_OVERRIDE_ITR_THRSH_POS (2) |
| 1220 | #define RING_CTRL_OVERRIDE_ITR_THRSH_LEN (1) |
| 1221 | #define RING_CTRL_OVERRIDE_ITR_THRSH_MSK (0x4) |
| 1222 | #define RING_CTRL_OVERRIDE_HOST_THRSH_POS (3) |
| 1223 | #define RING_CTRL_OVERRIDE_HOST_THRSH_LEN (1) |
| 1224 | #define RING_CTRL_OVERRIDE_HOST_THRSH_MSK (0x8) |
| 1225 | |
| 1226 | /* WMI_CFG_RX_CHAIN_CMDID */ |
| 1227 | struct wmi_cfg_rx_chain_cmd { |
| 1228 | __le32 action; |
| 1229 | struct wmi_sw_ring_cfg rx_sw_ring; |
| 1230 | u8 mid; |
| 1231 | u8 decap_trans_type; |
| 1232 | u8 l2_802_3_offload_ctrl; |
| 1233 | u8 l2_nwifi_offload_ctrl; |
| 1234 | u8 vlan_id; |
| 1235 | u8 nwifi_ds_trans_type; |
| 1236 | u8 l3_l4_ctrl; |
| 1237 | u8 ring_ctrl; |
| 1238 | __le16 prefetch_thrsh; |
| 1239 | __le16 wb_thrsh; |
| 1240 | __le32 itr_value; |
| 1241 | __le16 host_thrsh; |
| 1242 | u8 reorder_type; |
| 1243 | u8 reserved; |
| 1244 | struct wmi_sniffer_cfg sniffer_cfg; |
| 1245 | __le16 max_rx_pl_per_desc; |
| 1246 | } __packed; |
| 1247 | |
| 1248 | /* WMI_RCP_ADDBA_RESP_CMDID */ |
| 1249 | struct wmi_rcp_addba_resp_cmd { |
| 1250 | /* Used for cid less than 8. For higher cid set |
| 1251 | * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead |
| 1252 | */ |
| 1253 | u8 cidxtid; |
| 1254 | u8 dialog_token; |
| 1255 | __le16 status_code; |
| 1256 | /* ieee80211_ba_parameterset field to send */ |
| 1257 | __le16 ba_param_set; |
| 1258 | __le16 ba_timeout; |
| 1259 | /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ |
| 1260 | u8 cid; |
| 1261 | /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ |
| 1262 | u8 tid; |
| 1263 | u8 reserved[2]; |
| 1264 | } __packed; |
| 1265 | |
| 1266 | /* WMI_RCP_ADDBA_RESP_EDMA_CMDID */ |
| 1267 | struct wmi_rcp_addba_resp_edma_cmd { |
| 1268 | u8 cid; |
| 1269 | u8 tid; |
| 1270 | u8 dialog_token; |
| 1271 | u8 reserved; |
| 1272 | __le16 status_code; |
| 1273 | /* ieee80211_ba_parameterset field to send */ |
| 1274 | __le16 ba_param_set; |
| 1275 | __le16 ba_timeout; |
| 1276 | u8 status_ring_id; |
| 1277 | /* wmi_cfg_rx_chain_cmd_reorder_type */ |
| 1278 | u8 reorder_type; |
| 1279 | } __packed; |
| 1280 | |
| 1281 | /* WMI_RCP_DELBA_CMDID */ |
| 1282 | struct wmi_rcp_delba_cmd { |
| 1283 | /* Used for cid less than 8. For higher cid set |
| 1284 | * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead |
| 1285 | */ |
| 1286 | u8 cidxtid; |
| 1287 | u8 reserved; |
| 1288 | __le16 reason; |
| 1289 | /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ |
| 1290 | u8 cid; |
| 1291 | /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ |
| 1292 | u8 tid; |
| 1293 | u8 reserved2[2]; |
| 1294 | } __packed; |
| 1295 | |
| 1296 | /* WMI_RCP_ADDBA_REQ_CMDID */ |
| 1297 | struct wmi_rcp_addba_req_cmd { |
| 1298 | /* Used for cid less than 8. For higher cid set |
| 1299 | * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead |
| 1300 | */ |
| 1301 | u8 cidxtid; |
| 1302 | u8 dialog_token; |
| 1303 | /* ieee80211_ba_parameterset field as it received */ |
| 1304 | __le16 ba_param_set; |
| 1305 | __le16 ba_timeout; |
| 1306 | /* ieee80211_ba_seqstrl field as it received */ |
| 1307 | __le16 ba_seq_ctrl; |
| 1308 | /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ |
| 1309 | u8 cid; |
| 1310 | /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ |
| 1311 | u8 tid; |
| 1312 | u8 reserved[2]; |
| 1313 | } __packed; |
| 1314 | |
| 1315 | /* WMI_SET_MAC_ADDRESS_CMDID */ |
| 1316 | struct wmi_set_mac_address_cmd { |
| 1317 | u8 mac[WMI_MAC_LEN]; |
| 1318 | u8 reserved[2]; |
| 1319 | } __packed; |
| 1320 | |
| 1321 | /* WMI_ECHO_CMDID |
| 1322 | * Check FW is alive |
| 1323 | * Returned event: WMI_ECHO_RSP_EVENTID |
| 1324 | */ |
| 1325 | struct wmi_echo_cmd { |
| 1326 | __le32 value; |
| 1327 | } __packed; |
| 1328 | |
| 1329 | /* WMI_DEEP_ECHO_CMDID |
| 1330 | * Check FW and uCode is alive |
| 1331 | * Returned event: WMI_DEEP_ECHO_RSP_EVENTID |
| 1332 | */ |
| 1333 | struct wmi_deep_echo_cmd { |
| 1334 | __le32 value; |
| 1335 | } __packed; |
| 1336 | |
| 1337 | /* WMI_RF_PWR_ON_DELAY_CMDID |
| 1338 | * set FW time parameters used through RF resetting |
| 1339 | * RF reset consists of bringing its power down for a period of time, then |
| 1340 | * bringing the power up |
| 1341 | * Returned event: WMI_RF_PWR_ON_DELAY_RSP_EVENTID |
| 1342 | */ |
| 1343 | struct wmi_rf_pwr_on_delay_cmd { |
| 1344 | /* time in usec the FW waits after bringing the RF PWR down, |
| 1345 | * set 0 for default |
| 1346 | */ |
| 1347 | __le16 down_delay_usec; |
| 1348 | /* time in usec the FW waits after bringing the RF PWR up, |
| 1349 | * set 0 for default |
| 1350 | */ |
| 1351 | __le16 up_delay_usec; |
| 1352 | } __packed; |
| 1353 | |
| 1354 | /* WMI_SET_HIGH_POWER_TABLE_PARAMS_CMDID |
| 1355 | * This API controls the Tx and Rx gain over temperature. |
| 1356 | * It controls the Tx D-type, Rx D-type and Rx E-type amplifiers. |
| 1357 | * It also controls the Tx gain index, by controlling the Rx to Tx gain index |
| 1358 | * offset. |
| 1359 | * The control is divided by 3 temperature values to 4 temperature ranges. |
| 1360 | * Each parameter uses its own temperature values. |
| 1361 | * Returned event: WMI_SET_HIGH_POWER_TABLE_PARAMS_EVENTID |
| 1362 | */ |
| 1363 | struct wmi_set_high_power_table_params_cmd { |
| 1364 | /* Temperature range for Tx D-type parameters */ |
| 1365 | u8 tx_dtype_temp[WMI_RF_DTYPE_LENGTH]; |
| 1366 | u8 reserved0; |
| 1367 | /* Tx D-type values to be used for each temperature range */ |
| 1368 | __le32 tx_dtype_conf[WMI_RF_DTYPE_CONF_LENGTH]; |
| 1369 | /* Temperature range for Tx E-type parameters */ |
| 1370 | u8 tx_etype_temp[WMI_RF_ETYPE_LENGTH]; |
| 1371 | u8 reserved1; |
| 1372 | /* Tx E-type values to be used for each temperature range. |
| 1373 | * The last 4 values of any range are the first 4 values of the next |
| 1374 | * range and so on |
| 1375 | */ |
| 1376 | __le32 tx_etype_conf[WMI_RF_ETYPE_CONF_LENGTH]; |
| 1377 | /* Temperature range for Rx D-type parameters */ |
| 1378 | u8 rx_dtype_temp[WMI_RF_DTYPE_LENGTH]; |
| 1379 | u8 reserved2; |
| 1380 | /* Rx D-type values to be used for each temperature range */ |
| 1381 | __le32 rx_dtype_conf[WMI_RF_DTYPE_CONF_LENGTH]; |
| 1382 | /* Temperature range for Rx E-type parameters */ |
| 1383 | u8 rx_etype_temp[WMI_RF_ETYPE_LENGTH]; |
| 1384 | u8 reserved3; |
| 1385 | /* Rx E-type values to be used for each temperature range. |
| 1386 | * The last 4 values of any range are the first 4 values of the next |
| 1387 | * range and so on |
| 1388 | */ |
| 1389 | __le32 rx_etype_conf[WMI_RF_ETYPE_CONF_LENGTH]; |
| 1390 | /* Temperature range for rx_2_tx_offs parameters */ |
| 1391 | u8 rx_2_tx_temp[WMI_RF_RX2TX_LENGTH]; |
| 1392 | u8 reserved4; |
| 1393 | /* Rx to Tx gain index offset */ |
| 1394 | s8 rx_2_tx_offs[WMI_RF_RX2TX_CONF_LENGTH]; |
| 1395 | } __packed; |
| 1396 | |
| 1397 | /* WMI_FIXED_SCHEDULING_UL_CONFIG_CMDID |
| 1398 | * This API sets rd parameter per mcs. |
| 1399 | * Relevant only in Fixed Scheduling mode. |
| 1400 | * Returned event: WMI_FIXED_SCHEDULING_UL_CONFIG_EVENTID |
| 1401 | */ |
| 1402 | struct wmi_fixed_scheduling_ul_config_cmd { |
| 1403 | /* Use mcs -1 to set for every mcs */ |
| 1404 | s8 mcs; |
| 1405 | /* Number of frames with rd bit set in a single virtual slot */ |
| 1406 | u8 rd_count_per_slot; |
| 1407 | u8 reserved[2]; |
| 1408 | } __packed; |
| 1409 | |
| 1410 | /* CMD: WMI_RF_XPM_READ_CMDID */ |
| 1411 | struct wmi_rf_xpm_read_cmd { |
| 1412 | u8 rf_id; |
| 1413 | u8 reserved[3]; |
| 1414 | /* XPM bit start address in range [0,8191]bits - rounded by FW to |
| 1415 | * multiple of 8bits |
| 1416 | */ |
| 1417 | __le32 xpm_bit_address; |
| 1418 | __le32 num_bytes; |
| 1419 | } __packed; |
| 1420 | |
| 1421 | /* CMD: WMI_RF_XPM_WRITE_CMDID */ |
| 1422 | struct wmi_rf_xpm_write_cmd { |
| 1423 | u8 rf_id; |
| 1424 | u8 reserved0[3]; |
| 1425 | /* XPM bit start address in range [0,8191]bits - rounded by FW to |
| 1426 | * multiple of 8bits |
| 1427 | */ |
| 1428 | __le32 xpm_bit_address; |
| 1429 | __le32 num_bytes; |
| 1430 | /* boolean flag indicating whether FW should verify the write |
| 1431 | * operation |
| 1432 | */ |
| 1433 | u8 verify; |
| 1434 | u8 reserved1[3]; |
| 1435 | /* actual size=num_bytes */ |
| 1436 | u8 data_bytes[0]; |
| 1437 | } __packed; |
| 1438 | |
| 1439 | /* Possible modes for temperature measurement */ |
| 1440 | enum wmi_temperature_measure_mode { |
| 1441 | TEMPERATURE_USE_OLD_VALUE = 0x01, |
| 1442 | TEMPERATURE_MEASURE_NOW = 0x02, |
| 1443 | }; |
| 1444 | |
| 1445 | /* WMI_TEMP_SENSE_CMDID */ |
| 1446 | struct wmi_temp_sense_cmd { |
| 1447 | __le32 measure_baseband_en; |
| 1448 | __le32 measure_rf_en; |
| 1449 | __le32 measure_mode; |
| 1450 | } __packed; |
| 1451 | |
| 1452 | enum wmi_pmc_op { |
| 1453 | WMI_PMC_ALLOCATE = 0x00, |
| 1454 | WMI_PMC_RELEASE = 0x01, |
| 1455 | }; |
| 1456 | |
| 1457 | /* WMI_PMC_CMDID */ |
| 1458 | struct wmi_pmc_cmd { |
| 1459 | /* enum wmi_pmc_cmd_op_type */ |
| 1460 | u8 op; |
| 1461 | u8 reserved; |
| 1462 | __le16 ring_size; |
| 1463 | __le64 mem_base; |
| 1464 | } __packed; |
| 1465 | |
| 1466 | enum wmi_aoa_meas_type { |
| 1467 | WMI_AOA_PHASE_MEAS = 0x00, |
| 1468 | WMI_AOA_PHASE_AMP_MEAS = 0x01, |
| 1469 | }; |
| 1470 | |
| 1471 | /* WMI_AOA_MEAS_CMDID */ |
| 1472 | struct wmi_aoa_meas_cmd { |
| 1473 | u8 mac_addr[WMI_MAC_LEN]; |
| 1474 | /* channels IDs: |
| 1475 | * 0 - 58320 MHz |
| 1476 | * 1 - 60480 MHz |
| 1477 | * 2 - 62640 MHz |
| 1478 | */ |
| 1479 | u8 channel; |
| 1480 | /* enum wmi_aoa_meas_type */ |
| 1481 | u8 aoa_meas_type; |
| 1482 | __le32 meas_rf_mask; |
| 1483 | } __packed; |
| 1484 | |
| 1485 | /* WMI_SET_MGMT_RETRY_LIMIT_CMDID */ |
| 1486 | struct wmi_set_mgmt_retry_limit_cmd { |
| 1487 | /* MAC retransmit limit for mgmt frames */ |
| 1488 | u8 mgmt_retry_limit; |
| 1489 | /* alignment to 32b */ |
| 1490 | u8 reserved[3]; |
| 1491 | } __packed; |
| 1492 | |
| 1493 | /* Zones: HIGH, MAX, CRITICAL */ |
| 1494 | #define WMI_NUM_OF_TT_ZONES (3) |
| 1495 | |
| 1496 | struct wmi_tt_zone_limits { |
| 1497 | /* Above this temperature this zone is active */ |
| 1498 | u8 temperature_high; |
| 1499 | /* Below this temperature the adjacent lower zone is active */ |
| 1500 | u8 temperature_low; |
| 1501 | u8 reserved[2]; |
| 1502 | } __packed; |
| 1503 | |
| 1504 | /* Struct used for both configuration and status commands of thermal |
| 1505 | * throttling |
| 1506 | */ |
| 1507 | struct wmi_tt_data { |
| 1508 | /* Enable/Disable TT algorithm for baseband */ |
| 1509 | u8 bb_enabled; |
| 1510 | u8 reserved0[3]; |
| 1511 | /* Define zones for baseband */ |
| 1512 | struct wmi_tt_zone_limits bb_zones[WMI_NUM_OF_TT_ZONES]; |
| 1513 | /* Enable/Disable TT algorithm for radio */ |
| 1514 | u8 rf_enabled; |
| 1515 | u8 reserved1[3]; |
| 1516 | /* Define zones for all radio chips */ |
| 1517 | struct wmi_tt_zone_limits rf_zones[WMI_NUM_OF_TT_ZONES]; |
| 1518 | } __packed; |
| 1519 | |
| 1520 | /* WMI_SET_THERMAL_THROTTLING_CFG_CMDID */ |
| 1521 | struct wmi_set_thermal_throttling_cfg_cmd { |
| 1522 | /* Command data */ |
| 1523 | struct wmi_tt_data tt_data; |
| 1524 | } __packed; |
| 1525 | |
| 1526 | /* WMI_NEW_STA_CMDID */ |
| 1527 | struct wmi_new_sta_cmd { |
| 1528 | u8 dst_mac[WMI_MAC_LEN]; |
| 1529 | u8 aid; |
| 1530 | } __packed; |
| 1531 | |
| 1532 | /* WMI_DEL_STA_CMDID */ |
| 1533 | struct wmi_del_sta_cmd { |
| 1534 | u8 dst_mac[WMI_MAC_LEN]; |
| 1535 | __le16 disconnect_reason; |
| 1536 | } __packed; |
| 1537 | |
| 1538 | enum wmi_tof_burst_duration { |
| 1539 | WMI_TOF_BURST_DURATION_250_USEC = 2, |
| 1540 | WMI_TOF_BURST_DURATION_500_USEC = 3, |
| 1541 | WMI_TOF_BURST_DURATION_1_MSEC = 4, |
| 1542 | WMI_TOF_BURST_DURATION_2_MSEC = 5, |
| 1543 | WMI_TOF_BURST_DURATION_4_MSEC = 6, |
| 1544 | WMI_TOF_BURST_DURATION_8_MSEC = 7, |
| 1545 | WMI_TOF_BURST_DURATION_16_MSEC = 8, |
| 1546 | WMI_TOF_BURST_DURATION_32_MSEC = 9, |
| 1547 | WMI_TOF_BURST_DURATION_64_MSEC = 10, |
| 1548 | WMI_TOF_BURST_DURATION_128_MSEC = 11, |
| 1549 | WMI_TOF_BURST_DURATION_NO_PREFERENCES = 15, |
| 1550 | }; |
| 1551 | |
| 1552 | enum wmi_tof_session_start_flags { |
| 1553 | WMI_TOF_SESSION_START_FLAG_SECURED = 0x1, |
| 1554 | WMI_TOF_SESSION_START_FLAG_ASAP = 0x2, |
| 1555 | WMI_TOF_SESSION_START_FLAG_LCI_REQ = 0x4, |
| 1556 | WMI_TOF_SESSION_START_FLAG_LCR_REQ = 0x8, |
| 1557 | }; |
| 1558 | |
| 1559 | /* WMI_TOF_SESSION_START_CMDID */ |
| 1560 | struct wmi_ftm_dest_info { |
| 1561 | u8 channel; |
| 1562 | /* wmi_tof_session_start_flags_e */ |
| 1563 | u8 flags; |
| 1564 | u8 initial_token; |
| 1565 | u8 num_of_ftm_per_burst; |
| 1566 | u8 num_of_bursts_exp; |
| 1567 | /* wmi_tof_burst_duration_e */ |
| 1568 | u8 burst_duration; |
| 1569 | /* Burst Period indicate interval between two consecutive burst |
| 1570 | * instances, in units of 100 ms |
| 1571 | */ |
| 1572 | __le16 burst_period; |
| 1573 | u8 dst_mac[WMI_MAC_LEN]; |
| 1574 | u8 reserved; |
| 1575 | u8 num_burst_per_aoa_meas; |
| 1576 | } __packed; |
| 1577 | |
| 1578 | /* WMI_TOF_SESSION_START_CMDID */ |
| 1579 | struct wmi_tof_session_start_cmd { |
| 1580 | __le32 session_id; |
| 1581 | u8 reserved1; |
| 1582 | u8 aoa_type; |
| 1583 | __le16 num_of_dest; |
| 1584 | u8 reserved[4]; |
| 1585 | struct wmi_ftm_dest_info ftm_dest_info[0]; |
| 1586 | } __packed; |
| 1587 | |
| 1588 | /* WMI_TOF_CFG_RESPONDER_CMDID */ |
| 1589 | struct wmi_tof_cfg_responder_cmd { |
| 1590 | u8 enable; |
| 1591 | u8 reserved[3]; |
| 1592 | } __packed; |
| 1593 | |
| 1594 | enum wmi_tof_channel_info_report_type { |
| 1595 | WMI_TOF_CHANNEL_INFO_TYPE_CIR = 0x1, |
| 1596 | WMI_TOF_CHANNEL_INFO_TYPE_RSSI = 0x2, |
| 1597 | WMI_TOF_CHANNEL_INFO_TYPE_SNR = 0x4, |
| 1598 | WMI_TOF_CHANNEL_INFO_TYPE_DEBUG_DATA = 0x8, |
| 1599 | WMI_TOF_CHANNEL_INFO_TYPE_VENDOR_SPECIFIC = 0x10, |
| 1600 | }; |
| 1601 | |
| 1602 | /* WMI_TOF_CHANNEL_INFO_CMDID */ |
| 1603 | struct wmi_tof_channel_info_cmd { |
| 1604 | /* wmi_tof_channel_info_report_type_e */ |
| 1605 | __le32 channel_info_report_request; |
| 1606 | } __packed; |
| 1607 | |
| 1608 | /* WMI_TOF_SET_TX_RX_OFFSET_CMDID */ |
| 1609 | struct wmi_tof_set_tx_rx_offset_cmd { |
| 1610 | /* TX delay offset */ |
| 1611 | __le32 tx_offset; |
| 1612 | /* RX delay offset */ |
| 1613 | __le32 rx_offset; |
| 1614 | /* Mask to define which RFs to configure. 0 means all RFs */ |
| 1615 | __le32 rf_mask; |
| 1616 | /* Offset to strongest tap of CIR */ |
| 1617 | __le32 precursor; |
| 1618 | } __packed; |
| 1619 | |
| 1620 | /* WMI_TOF_GET_TX_RX_OFFSET_CMDID */ |
| 1621 | struct wmi_tof_get_tx_rx_offset_cmd { |
| 1622 | /* rf index to read offsets from */ |
| 1623 | u8 rf_index; |
| 1624 | u8 reserved[3]; |
| 1625 | } __packed; |
| 1626 | |
| 1627 | /* WMI_FIXED_SCHEDULING_CONFIG_CMDID */ |
| 1628 | struct wmi_map_mcs_to_schd_params { |
| 1629 | u8 mcs; |
| 1630 | /* time in usec from start slot to start tx flow - default 15 */ |
| 1631 | u8 time_in_usec_before_initiate_tx; |
| 1632 | /* RD enable - if yes consider RD according to STA mcs */ |
| 1633 | u8 rd_enabled; |
| 1634 | u8 reserved; |
| 1635 | /* time in usec from start slot to stop vring */ |
| 1636 | __le16 time_in_usec_to_stop_vring; |
| 1637 | /* timeout to force flush from start of slot */ |
| 1638 | __le16 flush_to_in_usec; |
| 1639 | /* per mcs the mac buffer limit size in bytes */ |
| 1640 | __le32 mac_buff_size_in_bytes; |
| 1641 | } __packed; |
| 1642 | |
| 1643 | /* WMI_FIXED_SCHEDULING_CONFIG_COMPLETE_EVENTID */ |
| 1644 | struct wmi_fixed_scheduling_config_complete_event { |
| 1645 | /* wmi_fw_status */ |
| 1646 | u8 status; |
| 1647 | u8 reserved[3]; |
| 1648 | } __packed; |
| 1649 | |
| 1650 | /* This value exists for backwards compatibility only. |
| 1651 | * Do not use it in new commands. |
| 1652 | * Use dynamic arrays where possible. |
| 1653 | */ |
| 1654 | #define WMI_NUM_MCS (13) |
| 1655 | |
| 1656 | /* WMI_FIXED_SCHEDULING_CONFIG_CMDID */ |
| 1657 | struct wmi_fixed_scheduling_config_cmd { |
| 1658 | /* defaults in the SAS table */ |
| 1659 | struct wmi_map_mcs_to_schd_params mcs_to_schd_params_map[WMI_NUM_MCS]; |
| 1660 | /* default 150 uSec */ |
| 1661 | __le16 max_sta_rd_ppdu_duration_in_usec; |
| 1662 | /* default 300 uSec */ |
| 1663 | __le16 max_sta_grant_ppdu_duration_in_usec; |
| 1664 | /* default 1000 uSec */ |
| 1665 | __le16 assoc_slot_duration_in_usec; |
| 1666 | /* default 360 uSec */ |
| 1667 | __le16 virtual_slot_duration_in_usec; |
| 1668 | /* each this field value slots start with grant frame to the station |
| 1669 | * - default 2 |
| 1670 | */ |
| 1671 | u8 number_of_ap_slots_for_initiate_grant; |
| 1672 | u8 reserved[3]; |
| 1673 | } __packed; |
| 1674 | |
| 1675 | /* WMI_ENABLE_FIXED_SCHEDULING_CMDID */ |
| 1676 | struct wmi_enable_fixed_scheduling_cmd { |
| 1677 | __le32 reserved; |
| 1678 | } __packed; |
| 1679 | |
| 1680 | /* WMI_ENABLE_FIXED_SCHEDULING_COMPLETE_EVENTID */ |
| 1681 | struct wmi_enable_fixed_scheduling_complete_event { |
| 1682 | /* wmi_fw_status */ |
| 1683 | u8 status; |
| 1684 | u8 reserved[3]; |
| 1685 | } __packed; |
| 1686 | |
| 1687 | /* WMI_SET_MULTI_DIRECTED_OMNIS_CONFIG_CMDID */ |
| 1688 | struct wmi_set_multi_directed_omnis_config_cmd { |
| 1689 | /* number of directed omnis at destination AP */ |
| 1690 | u8 dest_ap_num_directed_omnis; |
| 1691 | u8 reserved[3]; |
| 1692 | } __packed; |
| 1693 | |
| 1694 | /* WMI_SET_MULTI_DIRECTED_OMNIS_CONFIG_EVENTID */ |
| 1695 | struct wmi_set_multi_directed_omnis_config_event { |
| 1696 | /* wmi_fw_status */ |
| 1697 | u8 status; |
| 1698 | u8 reserved[3]; |
| 1699 | } __packed; |
| 1700 | |
| 1701 | /* WMI_RADAR_GENERAL_CONFIG_EVENTID */ |
| 1702 | struct wmi_radar_general_config_event { |
| 1703 | /* wmi_fw_status */ |
| 1704 | u8 status; |
| 1705 | u8 reserved[3]; |
| 1706 | } __packed; |
| 1707 | |
| 1708 | /* WMI_RADAR_CONFIG_SELECT_EVENTID */ |
| 1709 | struct wmi_radar_config_select_event { |
| 1710 | /* wmi_fw_status */ |
| 1711 | u8 status; |
| 1712 | u8 reserved[3]; |
| 1713 | /* In unit of bytes */ |
| 1714 | __le32 fifo_size; |
| 1715 | /* In unit of bytes */ |
| 1716 | __le32 pulse_size; |
| 1717 | } __packed; |
| 1718 | |
| 1719 | /* WMI_RADAR_PARAMS_CONFIG_EVENTID */ |
| 1720 | struct wmi_radar_params_config_event { |
| 1721 | /* wmi_fw_status */ |
| 1722 | u8 status; |
| 1723 | u8 reserved[3]; |
| 1724 | } __packed; |
| 1725 | |
| 1726 | /* WMI_RADAR_SET_MODE_EVENTID */ |
| 1727 | struct wmi_radar_set_mode_event { |
| 1728 | /* wmi_fw_status */ |
| 1729 | u8 status; |
| 1730 | u8 reserved[3]; |
| 1731 | } __packed; |
| 1732 | |
| 1733 | /* WMI_RADAR_CONTROL_EVENTID */ |
| 1734 | struct wmi_radar_control_event { |
| 1735 | /* wmi_fw_status */ |
| 1736 | u8 status; |
| 1737 | u8 reserved[3]; |
| 1738 | } __packed; |
| 1739 | |
| 1740 | /* WMI_RADAR_PCI_CONTROL_EVENTID */ |
| 1741 | struct wmi_radar_pci_control_event { |
| 1742 | /* wmi_fw_status */ |
| 1743 | u8 status; |
| 1744 | u8 reserved[3]; |
| 1745 | } __packed; |
| 1746 | |
| 1747 | /* WMI_SET_LONG_RANGE_CONFIG_CMDID */ |
| 1748 | struct wmi_set_long_range_config_cmd { |
| 1749 | __le32 reserved; |
| 1750 | } __packed; |
| 1751 | |
| 1752 | /* WMI_SET_LONG_RANGE_CONFIG_COMPLETE_EVENTID */ |
| 1753 | struct wmi_set_long_range_config_complete_event { |
| 1754 | /* wmi_fw_status */ |
| 1755 | u8 status; |
| 1756 | u8 reserved[3]; |
| 1757 | } __packed; |
| 1758 | |
| 1759 | /* payload max size is 1024 bytes: max event buffer size (1044) - WMI headers |
| 1760 | * (16) - prev struct field size (4) |
| 1761 | */ |
| 1762 | #define WMI_MAX_IOCTL_PAYLOAD_SIZE (1024) |
| 1763 | #define WMI_MAX_IOCTL_REPLY_PAYLOAD_SIZE (1024) |
| 1764 | #define WMI_MAX_INTERNAL_EVENT_PAYLOAD_SIZE (1024) |
| 1765 | |
| 1766 | enum wmi_internal_fw_ioctl_code { |
| 1767 | WMI_INTERNAL_FW_CODE_NONE = 0x0, |
| 1768 | WMI_INTERNAL_FW_CODE_QCOM = 0x1, |
| 1769 | }; |
| 1770 | |
| 1771 | /* WMI_INTERNAL_FW_IOCTL_CMDID */ |
| 1772 | struct wmi_internal_fw_ioctl_cmd { |
| 1773 | /* enum wmi_internal_fw_ioctl_code */ |
| 1774 | __le16 code; |
| 1775 | __le16 length; |
| 1776 | /* payload max size is WMI_MAX_IOCTL_PAYLOAD_SIZE |
| 1777 | * Must be the last member of the struct |
| 1778 | */ |
| 1779 | __le32 payload[0]; |
| 1780 | } __packed; |
| 1781 | |
| 1782 | /* WMI_INTERNAL_FW_IOCTL_EVENTID */ |
| 1783 | struct wmi_internal_fw_ioctl_event { |
| 1784 | /* wmi_fw_status */ |
| 1785 | u8 status; |
| 1786 | u8 reserved; |
| 1787 | __le16 length; |
| 1788 | /* payload max size is WMI_MAX_IOCTL_REPLY_PAYLOAD_SIZE |
| 1789 | * Must be the last member of the struct |
| 1790 | */ |
| 1791 | __le32 payload[0]; |
| 1792 | } __packed; |
| 1793 | |
| 1794 | /* WMI_INTERNAL_FW_EVENT_EVENTID */ |
| 1795 | struct wmi_internal_fw_event_event { |
| 1796 | __le16 id; |
| 1797 | __le16 length; |
| 1798 | /* payload max size is WMI_MAX_INTERNAL_EVENT_PAYLOAD_SIZE |
| 1799 | * Must be the last member of the struct |
| 1800 | */ |
| 1801 | __le32 payload[0]; |
| 1802 | } __packed; |
| 1803 | |
| 1804 | /* WMI_SET_VRING_PRIORITY_WEIGHT_CMDID */ |
| 1805 | struct wmi_set_vring_priority_weight_cmd { |
| 1806 | /* Array of weights. Valid values are |
| 1807 | * WMI_QOS_MIN_DEFAULT_WEIGHT...WMI_QOS_MAX_WEIGHT. Weight #0 is |
| 1808 | * hard-coded WMI_QOS_MIN_WEIGHT. This array provide the weights |
| 1809 | * #1..#3 |
| 1810 | */ |
| 1811 | u8 weight[3]; |
| 1812 | u8 reserved; |
| 1813 | } __packed; |
| 1814 | |
| 1815 | /* WMI_SET_VRING_PRIORITY_CMDID */ |
| 1816 | struct wmi_vring_priority { |
| 1817 | u8 vring_idx; |
| 1818 | /* Weight index. Valid value is 0-3 */ |
| 1819 | u8 priority; |
| 1820 | u8 reserved[2]; |
| 1821 | } __packed; |
| 1822 | |
| 1823 | /* WMI_SET_VRING_PRIORITY_CMDID */ |
| 1824 | struct wmi_set_vring_priority_cmd { |
| 1825 | /* number of entries in vring_priority. Set to |
| 1826 | * WMI_QOS_SET_VIF_PRIORITY to update the VIF's priority, and there |
| 1827 | * will be only one entry in vring_priority |
| 1828 | */ |
| 1829 | u8 num_of_vrings; |
| 1830 | u8 reserved[3]; |
| 1831 | struct wmi_vring_priority vring_priority[0]; |
| 1832 | } __packed; |
| 1833 | |
| 1834 | /* WMI_BF_CONTROL_CMDID - deprecated */ |
| 1835 | struct wmi_bf_control_cmd { |
| 1836 | /* wmi_bf_triggers */ |
| 1837 | __le32 triggers; |
| 1838 | u8 cid; |
| 1839 | /* DISABLED = 0, ENABLED = 1 , DRY_RUN = 2 */ |
| 1840 | u8 txss_mode; |
| 1841 | /* DISABLED = 0, ENABLED = 1, DRY_RUN = 2 */ |
| 1842 | u8 brp_mode; |
| 1843 | /* Max cts threshold (correspond to |
| 1844 | * WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_TXOP) |
| 1845 | */ |
| 1846 | u8 bf_trigger_max_cts_failure_thr; |
| 1847 | /* Max cts threshold in dense (correspond to |
| 1848 | * WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_TXOP) |
| 1849 | */ |
| 1850 | u8 bf_trigger_max_cts_failure_dense_thr; |
| 1851 | /* Max b-ack threshold (correspond to |
| 1852 | * WMI_BF_TRIGGER_MAX_BACK_FAILURE) |
| 1853 | */ |
| 1854 | u8 bf_trigger_max_back_failure_thr; |
| 1855 | /* Max b-ack threshold in dense (correspond to |
| 1856 | * WMI_BF_TRIGGER_MAX_BACK_FAILURE) |
| 1857 | */ |
| 1858 | u8 bf_trigger_max_back_failure_dense_thr; |
| 1859 | u8 reserved0; |
| 1860 | /* Wrong sectors threshold */ |
| 1861 | __le32 wrong_sector_bis_thr; |
| 1862 | /* BOOL to enable/disable long term trigger */ |
| 1863 | u8 long_term_enable; |
| 1864 | /* 1 = Update long term thresholds from the long_term_mbps_th_tbl and |
| 1865 | * long_term_trig_timeout_per_mcs arrays, 0 = Ignore |
| 1866 | */ |
| 1867 | u8 long_term_update_thr; |
| 1868 | /* Long term throughput threshold [Mbps] */ |
| 1869 | u8 long_term_mbps_th_tbl[WMI_NUM_MCS]; |
| 1870 | u8 reserved1; |
| 1871 | /* Long term timeout threshold table [msec] */ |
| 1872 | __le16 long_term_trig_timeout_per_mcs[WMI_NUM_MCS]; |
| 1873 | u8 reserved2[2]; |
| 1874 | } __packed; |
| 1875 | |
| 1876 | /* BF configuration for each MCS */ |
| 1877 | struct wmi_bf_control_ex_mcs { |
| 1878 | /* Long term throughput threshold [Mbps] */ |
| 1879 | u8 long_term_mbps_th_tbl; |
| 1880 | u8 reserved; |
| 1881 | /* Long term timeout threshold table [msec] */ |
| 1882 | __le16 long_term_trig_timeout_per_mcs; |
| 1883 | } __packed; |
| 1884 | |
| 1885 | /* WMI_BF_CONTROL_EX_CMDID */ |
| 1886 | struct wmi_bf_control_ex_cmd { |
| 1887 | /* wmi_bf_triggers */ |
| 1888 | __le32 triggers; |
| 1889 | /* enum wmi_edmg_tx_mode */ |
| 1890 | u8 tx_mode; |
| 1891 | /* DISABLED = 0, ENABLED = 1 , DRY_RUN = 2 */ |
| 1892 | u8 txss_mode; |
| 1893 | /* DISABLED = 0, ENABLED = 1, DRY_RUN = 2 */ |
| 1894 | u8 brp_mode; |
| 1895 | /* Max cts threshold (correspond to |
| 1896 | * WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_TXOP) |
| 1897 | */ |
| 1898 | u8 bf_trigger_max_cts_failure_thr; |
| 1899 | /* Max cts threshold in dense (correspond to |
| 1900 | * WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_TXOP) |
| 1901 | */ |
| 1902 | u8 bf_trigger_max_cts_failure_dense_thr; |
| 1903 | /* Max b-ack threshold (correspond to |
| 1904 | * WMI_BF_TRIGGER_MAX_BACK_FAILURE) |
| 1905 | */ |
| 1906 | u8 bf_trigger_max_back_failure_thr; |
| 1907 | /* Max b-ack threshold in dense (correspond to |
| 1908 | * WMI_BF_TRIGGER_MAX_BACK_FAILURE) |
| 1909 | */ |
| 1910 | u8 bf_trigger_max_back_failure_dense_thr; |
| 1911 | u8 reserved0; |
| 1912 | /* Wrong sectors threshold */ |
| 1913 | __le32 wrong_sector_bis_thr; |
| 1914 | /* BOOL to enable/disable long term trigger */ |
| 1915 | u8 long_term_enable; |
| 1916 | /* 1 = Update long term thresholds from the long_term_mbps_th_tbl and |
| 1917 | * long_term_trig_timeout_per_mcs arrays, 0 = Ignore |
| 1918 | */ |
| 1919 | u8 long_term_update_thr; |
| 1920 | u8 each_mcs_cfg_size; |
| 1921 | u8 reserved1; |
| 1922 | /* Configuration for each MCS */ |
| 1923 | struct wmi_bf_control_ex_mcs each_mcs_cfg[0]; |
| 1924 | } __packed; |
| 1925 | |
| 1926 | /* WMI_LINK_STATS_CMD */ |
| 1927 | enum wmi_link_stats_action { |
| 1928 | WMI_LINK_STATS_SNAPSHOT = 0x00, |
| 1929 | WMI_LINK_STATS_PERIODIC = 0x01, |
| 1930 | WMI_LINK_STATS_STOP_PERIODIC = 0x02, |
| 1931 | }; |
| 1932 | |
| 1933 | /* WMI_LINK_STATS_EVENT record identifiers */ |
| 1934 | enum wmi_link_stats_record_type { |
| 1935 | WMI_LINK_STATS_TYPE_BASIC = 0x01, |
| 1936 | WMI_LINK_STATS_TYPE_GLOBAL = 0x02, |
| 1937 | }; |
| 1938 | |
| 1939 | /* WMI_LINK_STATS_CMDID */ |
| 1940 | struct wmi_link_stats_cmd { |
| 1941 | /* bitmask of required record types |
| 1942 | * (wmi_link_stats_record_type_e) |
| 1943 | */ |
| 1944 | __le32 record_type_mask; |
| 1945 | /* 0xff for all cids */ |
| 1946 | u8 cid; |
| 1947 | /* wmi_link_stats_action_e */ |
| 1948 | u8 action; |
| 1949 | u8 reserved[6]; |
| 1950 | /* range = 100 - 10000 */ |
| 1951 | __le32 interval_msec; |
| 1952 | } __packed; |
| 1953 | |
| 1954 | /* WMI_SET_GRANT_MCS_CMDID */ |
| 1955 | struct wmi_set_grant_mcs_cmd { |
| 1956 | u8 mcs; |
| 1957 | u8 reserved[3]; |
| 1958 | } __packed; |
| 1959 | |
| 1960 | /* WMI_SET_AP_SLOT_SIZE_CMDID */ |
| 1961 | struct wmi_set_ap_slot_size_cmd { |
| 1962 | __le32 slot_size; |
| 1963 | } __packed; |
| 1964 | |
| 1965 | /* WMI_TEMP_SENSE_ALL_CMDID */ |
| 1966 | struct wmi_temp_sense_all_cmd { |
| 1967 | u8 measure_baseband_en; |
| 1968 | u8 measure_rf_en; |
| 1969 | u8 measure_mode; |
| 1970 | u8 reserved; |
| 1971 | } __packed; |
| 1972 | |
| 1973 | /* WMI Events |
| 1974 | * List of Events (target to host) |
| 1975 | */ |
| 1976 | enum wmi_event_id { |
| 1977 | WMI_READY_EVENTID = 0x1001, |
| 1978 | WMI_CONNECT_EVENTID = 0x1002, |
| 1979 | WMI_DISCONNECT_EVENTID = 0x1003, |
| 1980 | WMI_START_SCHED_SCAN_EVENTID = 0x1005, |
| 1981 | WMI_STOP_SCHED_SCAN_EVENTID = 0x1006, |
| 1982 | WMI_SCHED_SCAN_RESULT_EVENTID = 0x1007, |
| 1983 | WMI_SCAN_COMPLETE_EVENTID = 0x100A, |
| 1984 | WMI_REPORT_STATISTICS_EVENTID = 0x100B, |
| 1985 | WMI_FT_AUTH_STATUS_EVENTID = 0x100C, |
| 1986 | WMI_FT_REASSOC_STATUS_EVENTID = 0x100D, |
| 1987 | WMI_RADAR_GENERAL_CONFIG_EVENTID = 0x1100, |
| 1988 | WMI_RADAR_CONFIG_SELECT_EVENTID = 0x1101, |
| 1989 | WMI_RADAR_PARAMS_CONFIG_EVENTID = 0x1102, |
| 1990 | WMI_RADAR_SET_MODE_EVENTID = 0x1103, |
| 1991 | WMI_RADAR_CONTROL_EVENTID = 0x1104, |
| 1992 | WMI_RADAR_PCI_CONTROL_EVENTID = 0x1105, |
| 1993 | WMI_RD_MEM_RSP_EVENTID = 0x1800, |
| 1994 | WMI_FW_READY_EVENTID = 0x1801, |
| 1995 | WMI_EXIT_FAST_MEM_ACC_MODE_EVENTID = 0x200, |
| 1996 | WMI_ECHO_RSP_EVENTID = 0x1803, |
| 1997 | WMI_DEEP_ECHO_RSP_EVENTID = 0x1804, |
| 1998 | /* deprecated */ |
| 1999 | WMI_FS_TUNE_DONE_EVENTID = 0x180A, |
| 2000 | /* deprecated */ |
| 2001 | WMI_CORR_MEASURE_EVENTID = 0x180B, |
| 2002 | WMI_READ_RSSI_EVENTID = 0x180C, |
| 2003 | WMI_TEMP_SENSE_DONE_EVENTID = 0x180E, |
| 2004 | WMI_DC_CALIB_DONE_EVENTID = 0x180F, |
| 2005 | /* deprecated */ |
| 2006 | WMI_IQ_TX_CALIB_DONE_EVENTID = 0x1811, |
| 2007 | /* deprecated */ |
| 2008 | WMI_IQ_RX_CALIB_DONE_EVENTID = 0x1812, |
| 2009 | WMI_SET_WORK_MODE_DONE_EVENTID = 0x1815, |
| 2010 | WMI_LO_LEAKAGE_CALIB_DONE_EVENTID = 0x1816, |
| 2011 | WMI_LO_POWER_CALIB_FROM_OTP_EVENTID = 0x1817, |
| 2012 | WMI_SILENT_RSSI_CALIB_DONE_EVENTID = 0x181D, |
| 2013 | /* deprecated */ |
| 2014 | WMI_RF_RX_TEST_DONE_EVENTID = 0x181E, |
| 2015 | WMI_CFG_RX_CHAIN_DONE_EVENTID = 0x1820, |
| 2016 | WMI_VRING_CFG_DONE_EVENTID = 0x1821, |
| 2017 | WMI_BA_STATUS_EVENTID = 0x1823, |
| 2018 | WMI_RCP_ADDBA_REQ_EVENTID = 0x1824, |
| 2019 | WMI_RCP_ADDBA_RESP_SENT_EVENTID = 0x1825, |
| 2020 | WMI_DELBA_EVENTID = 0x1826, |
| 2021 | WMI_GET_SSID_EVENTID = 0x1828, |
| 2022 | WMI_GET_PCP_CHANNEL_EVENTID = 0x182A, |
| 2023 | /* Event is shared between WMI_SW_TX_REQ_CMDID and |
| 2024 | * WMI_SW_TX_REQ_EXT_CMDID |
| 2025 | */ |
| 2026 | WMI_SW_TX_COMPLETE_EVENTID = 0x182B, |
| 2027 | WMI_BEAMFORMING_MGMT_DONE_EVENTID = 0x1836, |
| 2028 | WMI_BF_TXSS_MGMT_DONE_EVENTID = 0x1837, |
| 2029 | WMI_BF_RXSS_MGMT_DONE_EVENTID = 0x1839, |
| 2030 | WMI_BF_TRIG_EVENTID = 0x183A, |
| 2031 | WMI_RS_MGMT_DONE_EVENTID = 0x1852, |
| 2032 | WMI_RF_MGMT_STATUS_EVENTID = 0x1853, |
| 2033 | WMI_BF_SM_MGMT_DONE_EVENTID = 0x1838, |
| 2034 | WMI_RX_MGMT_PACKET_EVENTID = 0x1840, |
| 2035 | WMI_TX_MGMT_PACKET_EVENTID = 0x1841, |
| 2036 | WMI_LINK_MAINTAIN_CFG_WRITE_DONE_EVENTID = 0x1842, |
| 2037 | WMI_LINK_MAINTAIN_CFG_READ_DONE_EVENTID = 0x1843, |
| 2038 | WMI_RF_XPM_READ_RESULT_EVENTID = 0x1856, |
| 2039 | WMI_RF_XPM_WRITE_RESULT_EVENTID = 0x1857, |
| 2040 | WMI_LED_CFG_DONE_EVENTID = 0x1858, |
| 2041 | WMI_SET_SILENT_RSSI_TABLE_DONE_EVENTID = 0x185C, |
| 2042 | WMI_RF_PWR_ON_DELAY_RSP_EVENTID = 0x185D, |
| 2043 | WMI_SET_HIGH_POWER_TABLE_PARAMS_EVENTID = 0x185E, |
| 2044 | WMI_FIXED_SCHEDULING_UL_CONFIG_EVENTID = 0x185F, |
| 2045 | /* Performance monitoring events */ |
| 2046 | WMI_DATA_PORT_OPEN_EVENTID = 0x1860, |
| 2047 | WMI_WBE_LINK_DOWN_EVENTID = 0x1861, |
| 2048 | WMI_BF_CTRL_DONE_EVENTID = 0x1862, |
| 2049 | WMI_NOTIFY_REQ_DONE_EVENTID = 0x1863, |
| 2050 | WMI_GET_STATUS_DONE_EVENTID = 0x1864, |
| 2051 | WMI_RING_EN_EVENTID = 0x1865, |
| 2052 | WMI_GET_RF_STATUS_EVENTID = 0x1866, |
| 2053 | WMI_GET_BASEBAND_TYPE_EVENTID = 0x1867, |
| 2054 | WMI_VRING_SWITCH_TIMING_CONFIG_EVENTID = 0x1868, |
| 2055 | WMI_UNIT_TEST_EVENTID = 0x1900, |
| 2056 | WMI_FLASH_READ_DONE_EVENTID = 0x1902, |
| 2057 | WMI_FLASH_WRITE_DONE_EVENTID = 0x1903, |
| 2058 | /* Power management */ |
| 2059 | WMI_TRAFFIC_SUSPEND_EVENTID = 0x1904, |
| 2060 | WMI_TRAFFIC_RESUME_EVENTID = 0x1905, |
| 2061 | /* P2P */ |
| 2062 | WMI_P2P_CFG_DONE_EVENTID = 0x1910, |
| 2063 | WMI_PORT_ALLOCATED_EVENTID = 0x1911, |
| 2064 | WMI_PORT_DELETED_EVENTID = 0x1912, |
| 2065 | WMI_LISTEN_STARTED_EVENTID = 0x1914, |
| 2066 | WMI_SEARCH_STARTED_EVENTID = 0x1915, |
| 2067 | WMI_DISCOVERY_STARTED_EVENTID = 0x1916, |
| 2068 | WMI_DISCOVERY_STOPPED_EVENTID = 0x1917, |
| 2069 | WMI_PCP_STARTED_EVENTID = 0x1918, |
| 2070 | WMI_PCP_STOPPED_EVENTID = 0x1919, |
| 2071 | WMI_PCP_FACTOR_EVENTID = 0x191A, |
| 2072 | /* Power Save Configuration Events */ |
| 2073 | WMI_PS_DEV_PROFILE_CFG_EVENTID = 0x191C, |
| 2074 | WMI_RS_ENABLE_EVENTID = 0x191E, |
| 2075 | WMI_RS_CFG_EX_EVENTID = 0x191F, |
| 2076 | WMI_GET_DETAILED_RS_RES_EX_EVENTID = 0x1920, |
| 2077 | /* deprecated */ |
| 2078 | WMI_RS_CFG_DONE_EVENTID = 0x1921, |
| 2079 | /* deprecated */ |
| 2080 | WMI_GET_DETAILED_RS_RES_EVENTID = 0x1922, |
| 2081 | WMI_AOA_MEAS_EVENTID = 0x1923, |
| 2082 | WMI_BRP_SET_ANT_LIMIT_EVENTID = 0x1924, |
| 2083 | WMI_SET_MGMT_RETRY_LIMIT_EVENTID = 0x1930, |
| 2084 | WMI_GET_MGMT_RETRY_LIMIT_EVENTID = 0x1931, |
| 2085 | WMI_SET_THERMAL_THROTTLING_CFG_EVENTID = 0x1940, |
| 2086 | WMI_GET_THERMAL_THROTTLING_CFG_EVENTID = 0x1941, |
| 2087 | /* return the Power Save profile */ |
| 2088 | WMI_PS_DEV_PROFILE_CFG_READ_EVENTID = 0x1942, |
| 2089 | WMI_TSF_SYNC_STATUS_EVENTID = 0x1973, |
| 2090 | WMI_TOF_SESSION_END_EVENTID = 0x1991, |
| 2091 | WMI_TOF_GET_CAPABILITIES_EVENTID = 0x1992, |
| 2092 | WMI_TOF_SET_LCR_EVENTID = 0x1993, |
| 2093 | WMI_TOF_SET_LCI_EVENTID = 0x1994, |
| 2094 | WMI_TOF_FTM_PER_DEST_RES_EVENTID = 0x1995, |
| 2095 | WMI_TOF_CFG_RESPONDER_EVENTID = 0x1996, |
| 2096 | WMI_TOF_SET_TX_RX_OFFSET_EVENTID = 0x1997, |
| 2097 | WMI_TOF_GET_TX_RX_OFFSET_EVENTID = 0x1998, |
| 2098 | WMI_TOF_CHANNEL_INFO_EVENTID = 0x1999, |
| 2099 | WMI_GET_RF_SECTOR_PARAMS_DONE_EVENTID = 0x19A0, |
| 2100 | WMI_SET_RF_SECTOR_PARAMS_DONE_EVENTID = 0x19A1, |
| 2101 | WMI_GET_SELECTED_RF_SECTOR_INDEX_DONE_EVENTID = 0x19A2, |
| 2102 | WMI_SET_SELECTED_RF_SECTOR_INDEX_DONE_EVENTID = 0x19A3, |
| 2103 | WMI_SET_RF_SECTOR_ON_DONE_EVENTID = 0x19A4, |
| 2104 | WMI_PRIO_TX_SECTORS_ORDER_EVENTID = 0x19A5, |
| 2105 | WMI_PRIO_TX_SECTORS_NUMBER_EVENTID = 0x19A6, |
| 2106 | WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_EVENTID = 0x19A7, |
| 2107 | /* deprecated */ |
| 2108 | WMI_BF_CONTROL_EVENTID = 0x19AA, |
| 2109 | WMI_BF_CONTROL_EX_EVENTID = 0x19AB, |
| 2110 | WMI_TX_STATUS_RING_CFG_DONE_EVENTID = 0x19C0, |
| 2111 | WMI_RX_STATUS_RING_CFG_DONE_EVENTID = 0x19C1, |
| 2112 | WMI_TX_DESC_RING_CFG_DONE_EVENTID = 0x19C2, |
| 2113 | WMI_RX_DESC_RING_CFG_DONE_EVENTID = 0x19C3, |
| 2114 | WMI_CFG_DEF_RX_OFFLOAD_DONE_EVENTID = 0x19C5, |
| 2115 | WMI_SCHEDULING_SCHEME_EVENTID = 0x1A01, |
| 2116 | WMI_FIXED_SCHEDULING_CONFIG_COMPLETE_EVENTID = 0x1A02, |
| 2117 | WMI_ENABLE_FIXED_SCHEDULING_COMPLETE_EVENTID = 0x1A03, |
| 2118 | WMI_SET_MULTI_DIRECTED_OMNIS_CONFIG_EVENTID = 0x1A04, |
| 2119 | WMI_SET_LONG_RANGE_CONFIG_COMPLETE_EVENTID = 0x1A05, |
| 2120 | WMI_GET_ASSOC_LIST_RES_EVENTID = 0x1A06, |
| 2121 | WMI_GET_CCA_INDICATIONS_EVENTID = 0x1A07, |
| 2122 | WMI_SET_CCA_INDICATIONS_BI_AVG_NUM_EVENTID = 0x1A08, |
| 2123 | WMI_INTERNAL_FW_EVENT_EVENTID = 0x1A0A, |
| 2124 | WMI_INTERNAL_FW_IOCTL_EVENTID = 0x1A0B, |
| 2125 | WMI_LINK_STATS_CONFIG_DONE_EVENTID = 0x1A0C, |
| 2126 | WMI_LINK_STATS_EVENTID = 0x1A0D, |
| 2127 | WMI_SET_GRANT_MCS_EVENTID = 0x1A0E, |
| 2128 | WMI_SET_AP_SLOT_SIZE_EVENTID = 0x1A0F, |
| 2129 | WMI_SET_VRING_PRIORITY_WEIGHT_EVENTID = 0x1A10, |
| 2130 | WMI_SET_VRING_PRIORITY_EVENTID = 0x1A11, |
| 2131 | WMI_RBUFCAP_CFG_EVENTID = 0x1A12, |
| 2132 | WMI_TEMP_SENSE_ALL_DONE_EVENTID = 0x1A13, |
| 2133 | WMI_SET_CHANNEL_EVENTID = 0x9000, |
| 2134 | WMI_ASSOC_REQ_EVENTID = 0x9001, |
| 2135 | WMI_EAPOL_RX_EVENTID = 0x9002, |
| 2136 | WMI_MAC_ADDR_RESP_EVENTID = 0x9003, |
| 2137 | WMI_FW_VER_EVENTID = 0x9004, |
| 2138 | WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENTID = 0x9005, |
| 2139 | WMI_INTERNAL_FW_SET_CHANNEL = 0x9006, |
| 2140 | WMI_COMMAND_NOT_SUPPORTED_EVENTID = 0xFFFF, |
| 2141 | }; |
| 2142 | |
| 2143 | /* Events data structures */ |
| 2144 | enum wmi_fw_status { |
| 2145 | WMI_FW_STATUS_SUCCESS = 0x00, |
| 2146 | WMI_FW_STATUS_FAILURE = 0x01, |
| 2147 | }; |
| 2148 | |
| 2149 | /* WMI_RF_MGMT_STATUS_EVENTID */ |
| 2150 | enum wmi_rf_status { |
| 2151 | WMI_RF_ENABLED = 0x00, |
| 2152 | WMI_RF_DISABLED_HW = 0x01, |
| 2153 | WMI_RF_DISABLED_SW = 0x02, |
| 2154 | WMI_RF_DISABLED_HW_SW = 0x03, |
| 2155 | }; |
| 2156 | |
| 2157 | /* WMI_RF_MGMT_STATUS_EVENTID */ |
| 2158 | struct wmi_rf_mgmt_status_event { |
| 2159 | __le32 rf_status; |
| 2160 | } __packed; |
| 2161 | |
| 2162 | /* WMI_GET_STATUS_DONE_EVENTID */ |
| 2163 | struct wmi_get_status_done_event { |
| 2164 | __le32 is_associated; |
| 2165 | u8 cid; |
| 2166 | u8 reserved0[3]; |
| 2167 | u8 bssid[WMI_MAC_LEN]; |
| 2168 | u8 channel; |
| 2169 | u8 reserved1; |
| 2170 | u8 network_type; |
| 2171 | u8 reserved2[3]; |
| 2172 | __le32 ssid_len; |
| 2173 | u8 ssid[WMI_MAX_SSID_LEN]; |
| 2174 | __le32 rf_status; |
| 2175 | __le32 is_secured; |
| 2176 | } __packed; |
| 2177 | |
| 2178 | /* WMI_FW_VER_EVENTID */ |
| 2179 | struct wmi_fw_ver_event { |
| 2180 | /* FW image version */ |
| 2181 | __le32 fw_major; |
| 2182 | __le32 fw_minor; |
| 2183 | __le32 fw_subminor; |
| 2184 | __le32 fw_build; |
| 2185 | /* FW image build time stamp */ |
| 2186 | __le32 hour; |
| 2187 | __le32 minute; |
| 2188 | __le32 second; |
| 2189 | __le32 day; |
| 2190 | __le32 month; |
| 2191 | __le32 year; |
| 2192 | /* Boot Loader image version */ |
| 2193 | __le32 bl_major; |
| 2194 | __le32 bl_minor; |
| 2195 | __le32 bl_subminor; |
| 2196 | __le32 bl_build; |
| 2197 | /* The number of entries in the FW capabilities array */ |
| 2198 | u8 fw_capabilities_len; |
| 2199 | u8 reserved[3]; |
| 2200 | /* FW capabilities info |
| 2201 | * Must be the last member of the struct |
| 2202 | */ |
| 2203 | __le32 fw_capabilities[0]; |
| 2204 | } __packed; |
| 2205 | |
| 2206 | /* WMI_GET_RF_STATUS_EVENTID */ |
| 2207 | enum rf_type { |
| 2208 | RF_UNKNOWN = 0x00, |
| 2209 | RF_MARLON = 0x01, |
| 2210 | RF_SPARROW = 0x02, |
| 2211 | RF_TALYNA1 = 0x03, |
| 2212 | RF_TALYNA2 = 0x04, |
| 2213 | }; |
| 2214 | |
| 2215 | /* WMI_GET_RF_STATUS_EVENTID */ |
| 2216 | enum board_file_rf_type { |
| 2217 | BF_RF_MARLON = 0x00, |
| 2218 | BF_RF_SPARROW = 0x01, |
| 2219 | BF_RF_TALYNA1 = 0x02, |
| 2220 | BF_RF_TALYNA2 = 0x03, |
| 2221 | }; |
| 2222 | |
| 2223 | /* WMI_GET_RF_STATUS_EVENTID */ |
| 2224 | enum rf_status { |
| 2225 | RF_OK = 0x00, |
| 2226 | RF_NO_COMM = 0x01, |
| 2227 | RF_WRONG_BOARD_FILE = 0x02, |
| 2228 | }; |
| 2229 | |
| 2230 | /* WMI_GET_RF_STATUS_EVENTID */ |
| 2231 | struct wmi_get_rf_status_event { |
| 2232 | /* enum rf_type */ |
| 2233 | __le32 rf_type; |
| 2234 | /* attached RFs bit vector */ |
| 2235 | __le32 attached_rf_vector; |
| 2236 | /* enabled RFs bit vector */ |
| 2237 | __le32 enabled_rf_vector; |
| 2238 | /* enum rf_status, refers to enabled RFs */ |
| 2239 | u8 rf_status[32]; |
| 2240 | /* enum board file RF type */ |
| 2241 | __le32 board_file_rf_type; |
| 2242 | /* board file platform type */ |
| 2243 | __le32 board_file_platform_type; |
| 2244 | /* board file version */ |
| 2245 | __le32 board_file_version; |
| 2246 | /* enabled XIFs bit vector */ |
| 2247 | __le32 enabled_xif_vector; |
| 2248 | __le32 reserved; |
| 2249 | } __packed; |
| 2250 | |
| 2251 | /* WMI_GET_BASEBAND_TYPE_EVENTID */ |
| 2252 | enum baseband_type { |
| 2253 | BASEBAND_UNKNOWN = 0x00, |
| 2254 | BASEBAND_SPARROW_M_A0 = 0x03, |
| 2255 | BASEBAND_SPARROW_M_A1 = 0x04, |
| 2256 | BASEBAND_SPARROW_M_B0 = 0x05, |
| 2257 | BASEBAND_SPARROW_M_C0 = 0x06, |
| 2258 | BASEBAND_SPARROW_M_D0 = 0x07, |
| 2259 | BASEBAND_TALYN_M_A0 = 0x08, |
| 2260 | BASEBAND_TALYN_M_B0 = 0x09, |
| 2261 | }; |
| 2262 | |
| 2263 | /* WMI_GET_BASEBAND_TYPE_EVENTID */ |
| 2264 | struct wmi_get_baseband_type_event { |
| 2265 | /* enum baseband_type */ |
| 2266 | __le32 baseband_type; |
| 2267 | } __packed; |
| 2268 | |
| 2269 | /* WMI_MAC_ADDR_RESP_EVENTID */ |
| 2270 | struct wmi_mac_addr_resp_event { |
| 2271 | u8 mac[WMI_MAC_LEN]; |
| 2272 | u8 auth_mode; |
| 2273 | u8 crypt_mode; |
| 2274 | __le32 offload_mode; |
| 2275 | } __packed; |
| 2276 | |
| 2277 | /* WMI_EAPOL_RX_EVENTID */ |
| 2278 | struct wmi_eapol_rx_event { |
| 2279 | u8 src_mac[WMI_MAC_LEN]; |
| 2280 | __le16 eapol_len; |
| 2281 | u8 eapol[0]; |
| 2282 | } __packed; |
| 2283 | |
| 2284 | /* WMI_READY_EVENTID */ |
| 2285 | enum wmi_phy_capability { |
| 2286 | WMI_11A_CAPABILITY = 0x01, |
| 2287 | WMI_11G_CAPABILITY = 0x02, |
| 2288 | WMI_11AG_CAPABILITY = 0x03, |
| 2289 | WMI_11NA_CAPABILITY = 0x04, |
| 2290 | WMI_11NG_CAPABILITY = 0x05, |
| 2291 | WMI_11NAG_CAPABILITY = 0x06, |
| 2292 | WMI_11AD_CAPABILITY = 0x07, |
| 2293 | WMI_11N_CAPABILITY_OFFSET = 0x03, |
| 2294 | }; |
| 2295 | |
| 2296 | struct wmi_ready_event { |
| 2297 | __le32 sw_version; |
| 2298 | __le32 abi_version; |
| 2299 | u8 mac[WMI_MAC_LEN]; |
| 2300 | /* enum wmi_phy_capability */ |
| 2301 | u8 phy_capability; |
| 2302 | u8 numof_additional_mids; |
| 2303 | /* rfc read calibration result. 5..15 */ |
| 2304 | u8 rfc_read_calib_result; |
| 2305 | /* Max associated STAs supported by FW in AP mode (default 0 means 8 |
| 2306 | * STA) |
| 2307 | */ |
| 2308 | u8 max_assoc_sta; |
| 2309 | u8 reserved[2]; |
| 2310 | } __packed; |
| 2311 | |
| 2312 | /* WMI_NOTIFY_REQ_DONE_EVENTID */ |
| 2313 | struct wmi_notify_req_done_event { |
| 2314 | /* beamforming status, 0: fail; 1: OK; 2: retrying */ |
| 2315 | __le32 status; |
| 2316 | __le64 tsf; |
| 2317 | s8 rssi; |
| 2318 | /* enum wmi_edmg_tx_mode */ |
| 2319 | u8 tx_mode; |
| 2320 | u8 reserved0[2]; |
| 2321 | __le32 tx_tpt; |
| 2322 | __le32 tx_goodput; |
| 2323 | __le32 rx_goodput; |
| 2324 | __le16 bf_mcs; |
| 2325 | __le16 my_rx_sector; |
| 2326 | __le16 my_tx_sector; |
| 2327 | __le16 other_rx_sector; |
| 2328 | __le16 other_tx_sector; |
| 2329 | __le16 range; |
| 2330 | u8 sqi; |
| 2331 | u8 reserved[3]; |
| 2332 | } __packed; |
| 2333 | |
| 2334 | /* WMI_CONNECT_EVENTID */ |
| 2335 | struct wmi_connect_event { |
| 2336 | /* enum wmi_channel WMI_CHANNEL_1..WMI_CHANNEL_6; for EDMG this is |
| 2337 | * the primary channel number |
| 2338 | */ |
| 2339 | u8 channel; |
| 2340 | /* enum wmi_channel WMI_CHANNEL_9..WMI_CHANNEL_12 */ |
| 2341 | u8 edmg_channel; |
| 2342 | u8 bssid[WMI_MAC_LEN]; |
| 2343 | __le16 listen_interval; |
| 2344 | __le16 beacon_interval; |
| 2345 | u8 network_type; |
| 2346 | u8 reserved1[3]; |
| 2347 | u8 beacon_ie_len; |
| 2348 | u8 assoc_req_len; |
| 2349 | u8 assoc_resp_len; |
| 2350 | u8 cid; |
| 2351 | u8 aid; |
| 2352 | u8 reserved2[2]; |
| 2353 | /* not in use */ |
| 2354 | u8 assoc_info[0]; |
| 2355 | } __packed; |
| 2356 | |
| 2357 | /* disconnect_reason */ |
| 2358 | enum wmi_disconnect_reason { |
| 2359 | WMI_DIS_REASON_NO_NETWORK_AVAIL = 0x01, |
| 2360 | /* bmiss */ |
| 2361 | WMI_DIS_REASON_LOST_LINK = 0x02, |
| 2362 | WMI_DIS_REASON_DISCONNECT_CMD = 0x03, |
| 2363 | WMI_DIS_REASON_BSS_DISCONNECTED = 0x04, |
| 2364 | WMI_DIS_REASON_AUTH_FAILED = 0x05, |
| 2365 | WMI_DIS_REASON_ASSOC_FAILED = 0x06, |
| 2366 | WMI_DIS_REASON_NO_RESOURCES_AVAIL = 0x07, |
| 2367 | WMI_DIS_REASON_CSERV_DISCONNECT = 0x08, |
| 2368 | WMI_DIS_REASON_INVALID_PROFILE = 0x0A, |
| 2369 | WMI_DIS_REASON_DOT11H_CHANNEL_SWITCH = 0x0B, |
| 2370 | WMI_DIS_REASON_PROFILE_MISMATCH = 0x0C, |
| 2371 | WMI_DIS_REASON_CONNECTION_EVICTED = 0x0D, |
| 2372 | WMI_DIS_REASON_IBSS_MERGE = 0x0E, |
| 2373 | WMI_DIS_REASON_HIGH_TEMPERATURE = 0x0F, |
| 2374 | }; |
| 2375 | |
| 2376 | /* WMI_DISCONNECT_EVENTID */ |
| 2377 | struct wmi_disconnect_event { |
| 2378 | /* reason code, see 802.11 spec. */ |
| 2379 | __le16 protocol_reason_status; |
| 2380 | /* set if known */ |
| 2381 | u8 bssid[WMI_MAC_LEN]; |
| 2382 | /* see enum wmi_disconnect_reason */ |
| 2383 | u8 disconnect_reason; |
| 2384 | /* last assoc req may passed to host - not in used */ |
| 2385 | u8 assoc_resp_len; |
| 2386 | /* last assoc req may passed to host - not in used */ |
| 2387 | u8 assoc_info[0]; |
| 2388 | } __packed; |
| 2389 | |
| 2390 | /* WMI_SCAN_COMPLETE_EVENTID */ |
| 2391 | enum scan_status { |
| 2392 | WMI_SCAN_SUCCESS = 0x00, |
| 2393 | WMI_SCAN_FAILED = 0x01, |
| 2394 | WMI_SCAN_ABORTED = 0x02, |
| 2395 | WMI_SCAN_REJECTED = 0x03, |
| 2396 | WMI_SCAN_ABORT_REJECTED = 0x04, |
| 2397 | }; |
| 2398 | |
| 2399 | struct wmi_scan_complete_event { |
| 2400 | /* enum scan_status */ |
| 2401 | __le32 status; |
| 2402 | } __packed; |
| 2403 | |
| 2404 | /* WMI_FT_AUTH_STATUS_EVENTID */ |
| 2405 | struct wmi_ft_auth_status_event { |
| 2406 | /* enum wmi_fw_status */ |
| 2407 | u8 status; |
| 2408 | u8 reserved[3]; |
| 2409 | u8 mac_addr[WMI_MAC_LEN]; |
| 2410 | __le16 ie_len; |
| 2411 | u8 ie_info[0]; |
| 2412 | } __packed; |
| 2413 | |
| 2414 | /* WMI_FT_REASSOC_STATUS_EVENTID */ |
| 2415 | struct wmi_ft_reassoc_status_event { |
| 2416 | /* enum wmi_fw_status */ |
| 2417 | u8 status; |
| 2418 | /* association id received from new AP */ |
| 2419 | u8 aid; |
| 2420 | /* enum wmi_channel */ |
| 2421 | u8 channel; |
| 2422 | /* enum wmi_channel */ |
| 2423 | u8 edmg_channel; |
| 2424 | u8 mac_addr[WMI_MAC_LEN]; |
| 2425 | __le16 beacon_ie_len; |
| 2426 | __le16 reassoc_req_ie_len; |
| 2427 | __le16 reassoc_resp_ie_len; |
| 2428 | u8 reserved[4]; |
| 2429 | u8 ie_info[0]; |
| 2430 | } __packed; |
| 2431 | |
| 2432 | /* wmi_rx_mgmt_info */ |
| 2433 | struct wmi_rx_mgmt_info { |
| 2434 | u8 mcs; |
| 2435 | s8 rssi; |
| 2436 | u8 range; |
| 2437 | u8 sqi; |
| 2438 | __le16 stype; |
| 2439 | __le16 status; |
| 2440 | __le32 len; |
| 2441 | /* Not resolved when == 0xFFFFFFFF == > Broadcast to all MIDS */ |
| 2442 | u8 qid; |
| 2443 | /* Not resolved when == 0xFFFFFFFF == > Broadcast to all MIDS */ |
| 2444 | u8 mid; |
| 2445 | u8 cid; |
| 2446 | /* From Radio MNGR */ |
| 2447 | u8 channel; |
| 2448 | } __packed; |
| 2449 | |
| 2450 | /* WMI_START_SCHED_SCAN_EVENTID */ |
| 2451 | enum wmi_pno_result { |
| 2452 | WMI_PNO_SUCCESS = 0x00, |
| 2453 | WMI_PNO_REJECT = 0x01, |
| 2454 | WMI_PNO_INVALID_PARAMETERS = 0x02, |
| 2455 | WMI_PNO_NOT_ENABLED = 0x03, |
| 2456 | }; |
| 2457 | |
| 2458 | struct wmi_start_sched_scan_event { |
| 2459 | /* wmi_pno_result */ |
| 2460 | u8 result; |
| 2461 | u8 reserved[3]; |
| 2462 | } __packed; |
| 2463 | |
| 2464 | struct wmi_stop_sched_scan_event { |
| 2465 | /* wmi_pno_result */ |
| 2466 | u8 result; |
| 2467 | u8 reserved[3]; |
| 2468 | } __packed; |
| 2469 | |
| 2470 | struct wmi_sched_scan_result_event { |
| 2471 | struct wmi_rx_mgmt_info info; |
| 2472 | u8 payload[0]; |
| 2473 | } __packed; |
| 2474 | |
| 2475 | /* WMI_ACS_PASSIVE_SCAN_COMPLETE_EVENT */ |
| 2476 | enum wmi_acs_info_bitmask { |
| 2477 | WMI_ACS_INFO_BITMASK_BEACON_FOUND = 0x01, |
| 2478 | WMI_ACS_INFO_BITMASK_BUSY_TIME = 0x02, |
| 2479 | WMI_ACS_INFO_BITMASK_TX_TIME = 0x04, |
| 2480 | WMI_ACS_INFO_BITMASK_RX_TIME = 0x08, |
| 2481 | WMI_ACS_INFO_BITMASK_NOISE = 0x10, |
| 2482 | }; |
| 2483 | |
| 2484 | struct scan_acs_info { |
| 2485 | u8 channel; |
| 2486 | u8 beacon_found; |
| 2487 | /* msec */ |
| 2488 | __le16 busy_time; |
| 2489 | __le16 tx_time; |
| 2490 | __le16 rx_time; |
| 2491 | u8 noise; |
| 2492 | u8 reserved[3]; |
| 2493 | } __packed; |
| 2494 | |
| 2495 | struct wmi_acs_passive_scan_complete_event { |
| 2496 | __le32 dwell_time; |
| 2497 | /* valid fields within channel info according to |
| 2498 | * their appearance in struct order |
| 2499 | */ |
| 2500 | __le16 filled; |
| 2501 | u8 num_scanned_channels; |
| 2502 | u8 reserved; |
| 2503 | struct scan_acs_info scan_info_list[0]; |
| 2504 | } __packed; |
| 2505 | |
| 2506 | /* WMI_BA_STATUS_EVENTID */ |
| 2507 | enum wmi_vring_ba_status { |
| 2508 | WMI_BA_AGREED = 0x00, |
| 2509 | WMI_BA_NON_AGREED = 0x01, |
| 2510 | /* BA_EN in middle of teardown flow */ |
| 2511 | WMI_BA_TD_WIP = 0x02, |
| 2512 | /* BA_DIS or BA_EN in middle of BA SETUP flow */ |
| 2513 | WMI_BA_SETUP_WIP = 0x03, |
| 2514 | /* BA_EN when the BA session is already active */ |
| 2515 | WMI_BA_SESSION_ACTIVE = 0x04, |
| 2516 | /* BA_DIS when the BA session is not active */ |
| 2517 | WMI_BA_SESSION_NOT_ACTIVE = 0x05, |
| 2518 | }; |
| 2519 | |
| 2520 | struct wmi_ba_status_event { |
| 2521 | /* enum wmi_vring_ba_status */ |
| 2522 | __le16 status; |
| 2523 | u8 reserved[2]; |
| 2524 | u8 ringid; |
| 2525 | u8 agg_wsize; |
| 2526 | __le16 ba_timeout; |
| 2527 | u8 amsdu; |
| 2528 | } __packed; |
| 2529 | |
| 2530 | /* WMI_DELBA_EVENTID */ |
| 2531 | struct wmi_delba_event { |
| 2532 | /* Used for cid less than 8. For higher cid set |
| 2533 | * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead |
| 2534 | */ |
| 2535 | u8 cidxtid; |
| 2536 | u8 from_initiator; |
| 2537 | __le16 reason; |
| 2538 | /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ |
| 2539 | u8 cid; |
| 2540 | /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ |
| 2541 | u8 tid; |
| 2542 | u8 reserved[2]; |
| 2543 | } __packed; |
| 2544 | |
| 2545 | /* WMI_VRING_CFG_DONE_EVENTID */ |
| 2546 | struct wmi_vring_cfg_done_event { |
| 2547 | u8 ringid; |
| 2548 | u8 status; |
| 2549 | u8 reserved[2]; |
| 2550 | __le32 tx_vring_tail_ptr; |
| 2551 | } __packed; |
| 2552 | |
| 2553 | /* WMI_RCP_ADDBA_RESP_SENT_EVENTID */ |
| 2554 | struct wmi_rcp_addba_resp_sent_event { |
| 2555 | /* Used for cid less than 8. For higher cid set |
| 2556 | * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead |
| 2557 | */ |
| 2558 | u8 cidxtid; |
| 2559 | u8 reserved; |
| 2560 | __le16 status; |
| 2561 | /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ |
| 2562 | u8 cid; |
| 2563 | /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ |
| 2564 | u8 tid; |
| 2565 | u8 reserved2[2]; |
| 2566 | } __packed; |
| 2567 | |
| 2568 | /* WMI_TX_STATUS_RING_CFG_DONE_EVENTID */ |
| 2569 | struct wmi_tx_status_ring_cfg_done_event { |
| 2570 | u8 ring_id; |
| 2571 | /* wmi_fw_status */ |
| 2572 | u8 status; |
| 2573 | u8 reserved[2]; |
| 2574 | __le32 ring_tail_ptr; |
| 2575 | } __packed; |
| 2576 | |
| 2577 | /* WMI_RX_STATUS_RING_CFG_DONE_EVENTID */ |
| 2578 | struct wmi_rx_status_ring_cfg_done_event { |
| 2579 | u8 ring_id; |
| 2580 | /* wmi_fw_status */ |
| 2581 | u8 status; |
| 2582 | u8 reserved[2]; |
| 2583 | __le32 ring_tail_ptr; |
| 2584 | } __packed; |
| 2585 | |
| 2586 | /* WMI_CFG_DEF_RX_OFFLOAD_DONE_EVENTID */ |
| 2587 | struct wmi_cfg_def_rx_offload_done_event { |
| 2588 | /* wmi_fw_status */ |
| 2589 | u8 status; |
| 2590 | u8 reserved[3]; |
| 2591 | } __packed; |
| 2592 | |
| 2593 | /* WMI_TX_DESC_RING_CFG_DONE_EVENTID */ |
| 2594 | struct wmi_tx_desc_ring_cfg_done_event { |
| 2595 | u8 ring_id; |
| 2596 | /* wmi_fw_status */ |
| 2597 | u8 status; |
| 2598 | u8 reserved[2]; |
| 2599 | __le32 ring_tail_ptr; |
| 2600 | } __packed; |
| 2601 | |
| 2602 | /* WMI_RX_DESC_RING_CFG_DONE_EVENTID */ |
| 2603 | struct wmi_rx_desc_ring_cfg_done_event { |
| 2604 | u8 ring_id; |
| 2605 | /* wmi_fw_status */ |
| 2606 | u8 status; |
| 2607 | u8 reserved[2]; |
| 2608 | __le32 ring_tail_ptr; |
| 2609 | } __packed; |
| 2610 | |
| 2611 | /* WMI_RCP_ADDBA_REQ_EVENTID */ |
| 2612 | struct wmi_rcp_addba_req_event { |
| 2613 | /* Used for cid less than 8. For higher cid set |
| 2614 | * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead |
| 2615 | */ |
| 2616 | u8 cidxtid; |
| 2617 | u8 dialog_token; |
| 2618 | /* ieee80211_ba_parameterset as it received */ |
| 2619 | __le16 ba_param_set; |
| 2620 | __le16 ba_timeout; |
| 2621 | /* ieee80211_ba_seqstrl field as it received */ |
| 2622 | __le16 ba_seq_ctrl; |
| 2623 | /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ |
| 2624 | u8 cid; |
| 2625 | /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */ |
| 2626 | u8 tid; |
| 2627 | u8 reserved[2]; |
| 2628 | } __packed; |
| 2629 | |
| 2630 | /* WMI_CFG_RX_CHAIN_DONE_EVENTID */ |
| 2631 | enum wmi_cfg_rx_chain_done_event_status { |
| 2632 | WMI_CFG_RX_CHAIN_SUCCESS = 0x01, |
| 2633 | }; |
| 2634 | |
| 2635 | struct wmi_cfg_rx_chain_done_event { |
| 2636 | /* V-Ring Tail pointer */ |
| 2637 | __le32 rx_ring_tail_ptr; |
| 2638 | __le32 status; |
| 2639 | } __packed; |
| 2640 | |
| 2641 | /* WMI_WBE_LINK_DOWN_EVENTID */ |
| 2642 | enum wmi_wbe_link_down_event_reason { |
| 2643 | WMI_WBE_REASON_USER_REQUEST = 0x00, |
| 2644 | WMI_WBE_REASON_RX_DISASSOC = 0x01, |
| 2645 | WMI_WBE_REASON_BAD_PHY_LINK = 0x02, |
| 2646 | }; |
| 2647 | |
| 2648 | /* WMI_WBE_LINK_DOWN_EVENTID */ |
| 2649 | struct wmi_wbe_link_down_event { |
| 2650 | u8 cid; |
| 2651 | u8 reserved[3]; |
| 2652 | __le32 reason; |
| 2653 | } __packed; |
| 2654 | |
| 2655 | /* WMI_DATA_PORT_OPEN_EVENTID */ |
| 2656 | struct wmi_data_port_open_event { |
| 2657 | u8 cid; |
| 2658 | u8 reserved[3]; |
| 2659 | } __packed; |
| 2660 | |
| 2661 | /* WMI_RING_EN_EVENTID */ |
| 2662 | struct wmi_ring_en_event { |
| 2663 | u8 ring_index; |
| 2664 | u8 reserved[3]; |
| 2665 | } __packed; |
| 2666 | |
| 2667 | /* WMI_GET_PCP_CHANNEL_EVENTID */ |
| 2668 | struct wmi_get_pcp_channel_event { |
| 2669 | u8 channel; |
| 2670 | u8 reserved[3]; |
| 2671 | } __packed; |
| 2672 | |
| 2673 | /* WMI_P2P_CFG_DONE_EVENTID */ |
| 2674 | struct wmi_p2p_cfg_done_event { |
| 2675 | /* wmi_fw_status */ |
| 2676 | u8 status; |
| 2677 | u8 reserved[3]; |
| 2678 | } __packed; |
| 2679 | |
| 2680 | /* WMI_PORT_ALLOCATED_EVENTID */ |
| 2681 | struct wmi_port_allocated_event { |
| 2682 | /* wmi_fw_status */ |
| 2683 | u8 status; |
| 2684 | u8 reserved[3]; |
| 2685 | } __packed; |
| 2686 | |
| 2687 | /* WMI_PORT_DELETED_EVENTID */ |
| 2688 | struct wmi_port_deleted_event { |
| 2689 | /* wmi_fw_status */ |
| 2690 | u8 status; |
| 2691 | u8 reserved[3]; |
| 2692 | } __packed; |
| 2693 | |
| 2694 | /* WMI_LISTEN_STARTED_EVENTID */ |
| 2695 | struct wmi_listen_started_event { |
| 2696 | /* wmi_fw_status */ |
| 2697 | u8 status; |
| 2698 | u8 reserved[3]; |
| 2699 | } __packed; |
| 2700 | |
| 2701 | /* WMI_SEARCH_STARTED_EVENTID */ |
| 2702 | struct wmi_search_started_event { |
| 2703 | /* wmi_fw_status */ |
| 2704 | u8 status; |
| 2705 | u8 reserved[3]; |
| 2706 | } __packed; |
| 2707 | |
| 2708 | /* WMI_PCP_STARTED_EVENTID */ |
| 2709 | struct wmi_pcp_started_event { |
| 2710 | /* wmi_fw_status */ |
| 2711 | u8 status; |
| 2712 | u8 reserved[3]; |
| 2713 | } __packed; |
| 2714 | |
| 2715 | /* WMI_PCP_FACTOR_EVENTID */ |
| 2716 | struct wmi_pcp_factor_event { |
| 2717 | __le32 pcp_factor; |
| 2718 | } __packed; |
| 2719 | |
| 2720 | enum wmi_sw_tx_status { |
| 2721 | WMI_TX_SW_STATUS_SUCCESS = 0x00, |
| 2722 | WMI_TX_SW_STATUS_FAILED_NO_RESOURCES = 0x01, |
| 2723 | WMI_TX_SW_STATUS_FAILED_TX = 0x02, |
| 2724 | }; |
| 2725 | |
| 2726 | /* WMI_SW_TX_COMPLETE_EVENTID */ |
| 2727 | struct wmi_sw_tx_complete_event { |
| 2728 | /* enum wmi_sw_tx_status */ |
| 2729 | u8 status; |
| 2730 | u8 reserved[3]; |
| 2731 | } __packed; |
| 2732 | |
| 2733 | /* WMI_CORR_MEASURE_EVENTID - deprecated */ |
| 2734 | struct wmi_corr_measure_event { |
| 2735 | /* signed */ |
| 2736 | __le32 i; |
| 2737 | /* signed */ |
| 2738 | __le32 q; |
| 2739 | /* signed */ |
| 2740 | __le32 image_i; |
| 2741 | /* signed */ |
| 2742 | __le32 image_q; |
| 2743 | } __packed; |
| 2744 | |
| 2745 | /* WMI_READ_RSSI_EVENTID */ |
| 2746 | struct wmi_read_rssi_event { |
| 2747 | __le32 ina_rssi_adc_dbm; |
| 2748 | } __packed; |
| 2749 | |
| 2750 | /* WMI_GET_SSID_EVENTID */ |
| 2751 | struct wmi_get_ssid_event { |
| 2752 | __le32 ssid_len; |
| 2753 | u8 ssid[WMI_MAX_SSID_LEN]; |
| 2754 | } __packed; |
| 2755 | |
| 2756 | /* EVENT: WMI_RF_XPM_READ_RESULT_EVENTID */ |
| 2757 | struct wmi_rf_xpm_read_result_event { |
| 2758 | /* enum wmi_fw_status_e - success=0 or fail=1 */ |
| 2759 | u8 status; |
| 2760 | u8 reserved[3]; |
| 2761 | /* requested num_bytes of data */ |
| 2762 | u8 data_bytes[0]; |
| 2763 | } __packed; |
| 2764 | |
| 2765 | /* EVENT: WMI_RF_XPM_WRITE_RESULT_EVENTID */ |
| 2766 | struct wmi_rf_xpm_write_result_event { |
| 2767 | /* enum wmi_fw_status_e - success=0 or fail=1 */ |
| 2768 | u8 status; |
| 2769 | u8 reserved[3]; |
| 2770 | } __packed; |
| 2771 | |
| 2772 | /* WMI_TX_MGMT_PACKET_EVENTID */ |
| 2773 | struct wmi_tx_mgmt_packet_event { |
| 2774 | u8 payload[0]; |
| 2775 | } __packed; |
| 2776 | |
| 2777 | /* WMI_RX_MGMT_PACKET_EVENTID */ |
| 2778 | struct wmi_rx_mgmt_packet_event { |
| 2779 | struct wmi_rx_mgmt_info info; |
| 2780 | u8 payload[0]; |
| 2781 | } __packed; |
| 2782 | |
| 2783 | /* WMI_ECHO_RSP_EVENTID */ |
| 2784 | struct wmi_echo_rsp_event { |
| 2785 | __le32 echoed_value; |
| 2786 | } __packed; |
| 2787 | |
| 2788 | /* WMI_DEEP_ECHO_RSP_EVENTID */ |
| 2789 | struct wmi_deep_echo_rsp_event { |
| 2790 | __le32 echoed_value; |
| 2791 | } __packed; |
| 2792 | |
| 2793 | /* WMI_RF_PWR_ON_DELAY_RSP_EVENTID */ |
| 2794 | struct wmi_rf_pwr_on_delay_rsp_event { |
| 2795 | /* wmi_fw_status */ |
| 2796 | u8 status; |
| 2797 | u8 reserved[3]; |
| 2798 | } __packed; |
| 2799 | |
| 2800 | /* WMI_SET_HIGH_POWER_TABLE_PARAMS_EVENTID */ |
| 2801 | struct wmi_set_high_power_table_params_event { |
| 2802 | /* wmi_fw_status */ |
| 2803 | u8 status; |
| 2804 | u8 reserved[3]; |
| 2805 | } __packed; |
| 2806 | |
| 2807 | /* WMI_FIXED_SCHEDULING_UL_CONFIG_EVENTID */ |
| 2808 | struct wmi_fixed_scheduling_ul_config_event { |
| 2809 | /* wmi_fw_status */ |
| 2810 | u8 status; |
| 2811 | u8 reserved[3]; |
| 2812 | } __packed; |
| 2813 | |
| 2814 | /* WMI_TEMP_SENSE_DONE_EVENTID |
| 2815 | * |
| 2816 | * Measure MAC and radio temperatures |
| 2817 | */ |
| 2818 | struct wmi_temp_sense_done_event { |
| 2819 | /* Temperature times 1000 (actual temperature will be achieved by |
| 2820 | * dividing the value by 1000). When temperature cannot be read from |
| 2821 | * device return WMI_INVALID_TEMPERATURE |
| 2822 | */ |
| 2823 | __le32 baseband_t1000; |
| 2824 | /* Temperature times 1000 (actual temperature will be achieved by |
| 2825 | * dividing the value by 1000). When temperature cannot be read from |
| 2826 | * device return WMI_INVALID_TEMPERATURE |
| 2827 | */ |
| 2828 | __le32 rf_t1000; |
| 2829 | } __packed; |
| 2830 | |
| 2831 | #define WMI_SCAN_DWELL_TIME_MS (100) |
| 2832 | #define WMI_SURVEY_TIMEOUT_MS (10000) |
| 2833 | |
| 2834 | enum wmi_hidden_ssid { |
| 2835 | WMI_HIDDEN_SSID_DISABLED = 0x00, |
| 2836 | WMI_HIDDEN_SSID_SEND_EMPTY = 0x10, |
| 2837 | WMI_HIDDEN_SSID_CLEAR = 0xFE, |
| 2838 | }; |
| 2839 | |
| 2840 | /* WMI_LED_CFG_CMDID |
| 2841 | * |
| 2842 | * Configure LED On\Off\Blinking operation |
| 2843 | * |
| 2844 | * Returned events: |
| 2845 | * - WMI_LED_CFG_DONE_EVENTID |
| 2846 | */ |
| 2847 | enum led_mode { |
| 2848 | LED_DISABLE = 0x00, |
| 2849 | LED_ENABLE = 0x01, |
| 2850 | }; |
| 2851 | |
| 2852 | /* The names of the led as |
| 2853 | * described on HW schemes. |
| 2854 | */ |
| 2855 | enum wmi_led_id { |
| 2856 | WMI_LED_WLAN = 0x00, |
| 2857 | WMI_LED_WPAN = 0x01, |
| 2858 | WMI_LED_WWAN = 0x02, |
| 2859 | }; |
| 2860 | |
| 2861 | /* Led polarity mode. */ |
| 2862 | enum wmi_led_polarity { |
| 2863 | LED_POLARITY_HIGH_ACTIVE = 0x00, |
| 2864 | LED_POLARITY_LOW_ACTIVE = 0x01, |
| 2865 | }; |
| 2866 | |
| 2867 | /* Combination of on and off |
| 2868 | * creates the blinking period |
| 2869 | */ |
| 2870 | struct wmi_led_blink_mode { |
| 2871 | __le32 blink_on; |
| 2872 | __le32 blink_off; |
| 2873 | } __packed; |
| 2874 | |
| 2875 | /* WMI_LED_CFG_CMDID */ |
| 2876 | struct wmi_led_cfg_cmd { |
| 2877 | /* enum led_mode_e */ |
| 2878 | u8 led_mode; |
| 2879 | /* enum wmi_led_id_e */ |
| 2880 | u8 id; |
| 2881 | /* slow speed blinking combination */ |
| 2882 | struct wmi_led_blink_mode slow_blink_cfg; |
| 2883 | /* medium speed blinking combination */ |
| 2884 | struct wmi_led_blink_mode medium_blink_cfg; |
| 2885 | /* high speed blinking combination */ |
| 2886 | struct wmi_led_blink_mode fast_blink_cfg; |
| 2887 | /* polarity of the led */ |
| 2888 | u8 led_polarity; |
| 2889 | /* reserved */ |
| 2890 | u8 reserved; |
| 2891 | } __packed; |
| 2892 | |
| 2893 | /* \WMI_SET_CONNECT_SNR_THR_CMDID */ |
| 2894 | struct wmi_set_connect_snr_thr_cmd { |
| 2895 | u8 enable; |
| 2896 | u8 reserved; |
| 2897 | /* 1/4 Db units */ |
| 2898 | __le16 omni_snr_thr; |
| 2899 | /* 1/4 Db units */ |
| 2900 | __le16 direct_snr_thr; |
| 2901 | } __packed; |
| 2902 | |
| 2903 | /* WMI_LED_CFG_DONE_EVENTID */ |
| 2904 | struct wmi_led_cfg_done_event { |
| 2905 | /* led config status */ |
| 2906 | __le32 status; |
| 2907 | } __packed; |
| 2908 | |
| 2909 | /* Rate search parameters configuration per connection */ |
| 2910 | struct wmi_rs_cfg { |
| 2911 | /* The maximal allowed PER for each MCS |
| 2912 | * MCS will be considered as failed if PER during RS is higher |
| 2913 | */ |
| 2914 | u8 per_threshold[WMI_NUM_MCS]; |
| 2915 | /* Number of MPDUs for each MCS |
| 2916 | * this is the minimal statistic required to make an educated |
| 2917 | * decision |
| 2918 | */ |
| 2919 | u8 min_frame_cnt[WMI_NUM_MCS]; |
| 2920 | /* stop threshold [0-100] */ |
| 2921 | u8 stop_th; |
| 2922 | /* MCS1 stop threshold [0-100] */ |
| 2923 | u8 mcs1_fail_th; |
| 2924 | u8 max_back_failure_th; |
| 2925 | /* Debug feature for disabling internal RS trigger (which is |
| 2926 | * currently triggered by BF Done) |
| 2927 | */ |
| 2928 | u8 dbg_disable_internal_trigger; |
| 2929 | __le32 back_failure_mask; |
| 2930 | __le32 mcs_en_vec; |
| 2931 | } __packed; |
| 2932 | |
| 2933 | enum wmi_edmg_tx_mode { |
| 2934 | WMI_TX_MODE_DMG = 0x0, |
| 2935 | WMI_TX_MODE_EDMG_CB1 = 0x1, |
| 2936 | WMI_TX_MODE_EDMG_CB2 = 0x2, |
| 2937 | WMI_TX_MODE_EDMG_CB1_LONG_LDPC = 0x3, |
| 2938 | WMI_TX_MODE_EDMG_CB2_LONG_LDPC = 0x4, |
| 2939 | WMI_TX_MODE_MAX, |
| 2940 | }; |
| 2941 | |
| 2942 | /* Rate search parameters common configuration */ |
| 2943 | struct wmi_rs_cfg_ex_common { |
| 2944 | /* enum wmi_edmg_tx_mode */ |
| 2945 | u8 mode; |
| 2946 | /* stop threshold [0-100] */ |
| 2947 | u8 stop_th; |
| 2948 | /* MCS1 stop threshold [0-100] */ |
| 2949 | u8 mcs1_fail_th; |
| 2950 | u8 max_back_failure_th; |
| 2951 | /* Debug feature for disabling internal RS trigger (which is |
| 2952 | * currently triggered by BF Done) |
| 2953 | */ |
| 2954 | u8 dbg_disable_internal_trigger; |
| 2955 | u8 reserved[3]; |
| 2956 | __le32 back_failure_mask; |
| 2957 | } __packed; |
| 2958 | |
| 2959 | /* Rate search parameters configuration per MCS */ |
| 2960 | struct wmi_rs_cfg_ex_mcs { |
| 2961 | /* The maximal allowed PER for each MCS |
| 2962 | * MCS will be considered as failed if PER during RS is higher |
| 2963 | */ |
| 2964 | u8 per_threshold; |
| 2965 | /* Number of MPDUs for each MCS |
| 2966 | * this is the minimal statistic required to make an educated |
| 2967 | * decision |
| 2968 | */ |
| 2969 | u8 min_frame_cnt; |
| 2970 | u8 reserved[2]; |
| 2971 | } __packed; |
| 2972 | |
| 2973 | /* WMI_RS_CFG_EX_CMDID */ |
| 2974 | struct wmi_rs_cfg_ex_cmd { |
| 2975 | /* Configuration for all MCSs */ |
| 2976 | struct wmi_rs_cfg_ex_common common_cfg; |
| 2977 | u8 each_mcs_cfg_size; |
| 2978 | u8 reserved[3]; |
| 2979 | /* Configuration for each MCS */ |
| 2980 | struct wmi_rs_cfg_ex_mcs each_mcs_cfg[0]; |
| 2981 | } __packed; |
| 2982 | |
| 2983 | /* WMI_RS_CFG_EX_EVENTID */ |
| 2984 | struct wmi_rs_cfg_ex_event { |
| 2985 | /* enum wmi_edmg_tx_mode */ |
| 2986 | u8 mode; |
| 2987 | /* enum wmi_fw_status */ |
| 2988 | u8 status; |
| 2989 | u8 reserved[2]; |
| 2990 | } __packed; |
| 2991 | |
| 2992 | /* WMI_RS_ENABLE_CMDID */ |
| 2993 | struct wmi_rs_enable_cmd { |
| 2994 | u8 cid; |
| 2995 | /* enable or disable rate search */ |
| 2996 | u8 rs_enable; |
| 2997 | u8 reserved[2]; |
| 2998 | __le32 mcs_en_vec; |
| 2999 | } __packed; |
| 3000 | |
| 3001 | /* WMI_RS_ENABLE_EVENTID */ |
| 3002 | struct wmi_rs_enable_event { |
| 3003 | /* enum wmi_fw_status */ |
| 3004 | u8 status; |
| 3005 | u8 reserved[3]; |
| 3006 | } __packed; |
| 3007 | |
| 3008 | /* Slot types */ |
| 3009 | enum wmi_sched_scheme_slot_type { |
| 3010 | WMI_SCHED_SLOT_SP = 0x0, |
| 3011 | WMI_SCHED_SLOT_CBAP = 0x1, |
| 3012 | WMI_SCHED_SLOT_IDLE = 0x2, |
| 3013 | WMI_SCHED_SLOT_ANNOUNCE_NO_ACK = 0x3, |
| 3014 | WMI_SCHED_SLOT_DISCOVERY = 0x4, |
| 3015 | }; |
| 3016 | |
| 3017 | enum wmi_sched_scheme_slot_flags { |
| 3018 | WMI_SCHED_SCHEME_SLOT_PERIODIC = 0x1, |
| 3019 | }; |
| 3020 | |
| 3021 | struct wmi_sched_scheme_slot { |
| 3022 | /* in microsecond */ |
| 3023 | __le32 tbtt_offset; |
| 3024 | /* wmi_sched_scheme_slot_flags */ |
| 3025 | u8 flags; |
| 3026 | /* wmi_sched_scheme_slot_type */ |
| 3027 | u8 type; |
| 3028 | /* in microsecond */ |
| 3029 | __le16 duration; |
| 3030 | /* frame_exchange_sequence_duration */ |
| 3031 | __le16 tx_op; |
| 3032 | /* time in microseconds between two consecutive slots |
| 3033 | * relevant only if flag WMI_SCHED_SCHEME_SLOT_PERIODIC set |
| 3034 | */ |
| 3035 | __le16 period; |
| 3036 | /* relevant only if flag WMI_SCHED_SCHEME_SLOT_PERIODIC set |
| 3037 | * number of times to repeat allocation |
| 3038 | */ |
| 3039 | u8 num_of_blocks; |
| 3040 | /* relevant only if flag WMI_SCHED_SCHEME_SLOT_PERIODIC set |
| 3041 | * every idle_period allocation will be idle |
| 3042 | */ |
| 3043 | u8 idle_period; |
| 3044 | u8 src_aid; |
| 3045 | u8 dest_aid; |
| 3046 | __le32 reserved; |
| 3047 | } __packed; |
| 3048 | |
| 3049 | enum wmi_sched_scheme_flags { |
| 3050 | /* should not be set when clearing scheduling scheme */ |
| 3051 | WMI_SCHED_SCHEME_ENABLE = 0x01, |
| 3052 | WMI_SCHED_PROTECTED_SP = 0x02, |
| 3053 | /* should be set only on first WMI fragment of scheme */ |
| 3054 | WMI_SCHED_FIRST = 0x04, |
| 3055 | /* should be set only on last WMI fragment of scheme */ |
| 3056 | WMI_SCHED_LAST = 0x08, |
| 3057 | WMI_SCHED_IMMEDIATE_START = 0x10, |
| 3058 | }; |
| 3059 | |
| 3060 | enum wmi_sched_scheme_advertisment { |
| 3061 | /* ESE is not advertised at all, STA has to be configured with WMI |
| 3062 | * also |
| 3063 | */ |
| 3064 | WMI_ADVERTISE_ESE_DISABLED = 0x0, |
| 3065 | WMI_ADVERTISE_ESE_IN_BEACON = 0x1, |
| 3066 | WMI_ADVERTISE_ESE_IN_ANNOUNCE_FRAME = 0x2, |
| 3067 | }; |
| 3068 | |
| 3069 | /* WMI_SCHEDULING_SCHEME_CMD */ |
| 3070 | struct wmi_scheduling_scheme_cmd { |
| 3071 | u8 serial_num; |
| 3072 | /* wmi_sched_scheme_advertisment */ |
| 3073 | u8 ese_advertisment; |
| 3074 | /* wmi_sched_scheme_flags */ |
| 3075 | __le16 flags; |
| 3076 | u8 num_allocs; |
| 3077 | u8 reserved[3]; |
| 3078 | __le64 start_tbtt; |
| 3079 | /* allocations list */ |
| 3080 | struct wmi_sched_scheme_slot allocs[WMI_SCHED_MAX_ALLOCS_PER_CMD]; |
| 3081 | } __packed; |
| 3082 | |
| 3083 | enum wmi_sched_scheme_failure_type { |
| 3084 | WMI_SCHED_SCHEME_FAILURE_NO_ERROR = 0x00, |
| 3085 | WMI_SCHED_SCHEME_FAILURE_OLD_START_TSF_ERR = 0x01, |
| 3086 | }; |
| 3087 | |
| 3088 | /* WMI_SCHEDULING_SCHEME_EVENTID */ |
| 3089 | struct wmi_scheduling_scheme_event { |
| 3090 | /* wmi_fw_status_e */ |
| 3091 | u8 status; |
| 3092 | /* serial number given in command */ |
| 3093 | u8 serial_num; |
| 3094 | /* wmi_sched_scheme_failure_type */ |
| 3095 | u8 failure_type; |
| 3096 | /* alignment to 32b */ |
| 3097 | u8 reserved[1]; |
| 3098 | } __packed; |
| 3099 | |
| 3100 | /* WMI_RS_CFG_CMDID - deprecated */ |
| 3101 | struct wmi_rs_cfg_cmd { |
| 3102 | /* connection id */ |
| 3103 | u8 cid; |
| 3104 | /* enable or disable rate search */ |
| 3105 | u8 rs_enable; |
| 3106 | /* rate search configuration */ |
| 3107 | struct wmi_rs_cfg rs_cfg; |
| 3108 | } __packed; |
| 3109 | |
| 3110 | /* WMI_RS_CFG_DONE_EVENTID - deprecated */ |
| 3111 | struct wmi_rs_cfg_done_event { |
| 3112 | u8 cid; |
| 3113 | /* enum wmi_fw_status */ |
| 3114 | u8 status; |
| 3115 | u8 reserved[2]; |
| 3116 | } __packed; |
| 3117 | |
| 3118 | /* WMI_GET_DETAILED_RS_RES_CMDID - deprecated */ |
| 3119 | struct wmi_get_detailed_rs_res_cmd { |
| 3120 | /* connection id */ |
| 3121 | u8 cid; |
| 3122 | u8 reserved[3]; |
| 3123 | } __packed; |
| 3124 | |
| 3125 | /* RS results status */ |
| 3126 | enum wmi_rs_results_status { |
| 3127 | WMI_RS_RES_VALID = 0x00, |
| 3128 | WMI_RS_RES_INVALID = 0x01, |
| 3129 | }; |
| 3130 | |
| 3131 | /* Rate search results */ |
| 3132 | struct wmi_rs_results { |
| 3133 | /* number of sent MPDUs */ |
| 3134 | u8 num_of_tx_pkt[WMI_NUM_MCS]; |
| 3135 | /* number of non-acked MPDUs */ |
| 3136 | u8 num_of_non_acked_pkt[WMI_NUM_MCS]; |
| 3137 | /* RS timestamp */ |
| 3138 | __le32 tsf; |
| 3139 | /* RS selected MCS */ |
| 3140 | u8 mcs; |
| 3141 | } __packed; |
| 3142 | |
| 3143 | /* WMI_GET_DETAILED_RS_RES_EVENTID - deprecated */ |
| 3144 | struct wmi_get_detailed_rs_res_event { |
| 3145 | u8 cid; |
| 3146 | /* enum wmi_rs_results_status */ |
| 3147 | u8 status; |
| 3148 | /* detailed rs results */ |
| 3149 | struct wmi_rs_results rs_results; |
| 3150 | u8 reserved[3]; |
| 3151 | } __packed; |
| 3152 | |
| 3153 | /* WMI_GET_DETAILED_RS_RES_EX_CMDID */ |
| 3154 | struct wmi_get_detailed_rs_res_ex_cmd { |
| 3155 | u8 cid; |
| 3156 | u8 reserved[3]; |
| 3157 | } __packed; |
| 3158 | |
| 3159 | /* Rate search results */ |
| 3160 | struct wmi_rs_results_ex_common { |
| 3161 | /* RS timestamp */ |
| 3162 | __le32 tsf; |
| 3163 | /* RS selected MCS */ |
| 3164 | u8 mcs; |
| 3165 | /* enum wmi_edmg_tx_mode */ |
| 3166 | u8 mode; |
| 3167 | u8 reserved[2]; |
| 3168 | } __packed; |
| 3169 | |
| 3170 | /* Rate search results */ |
| 3171 | struct wmi_rs_results_ex_mcs { |
| 3172 | /* number of sent MPDUs */ |
| 3173 | u8 num_of_tx_pkt; |
| 3174 | /* number of non-acked MPDUs */ |
| 3175 | u8 num_of_non_acked_pkt; |
| 3176 | u8 reserved[2]; |
| 3177 | } __packed; |
| 3178 | |
| 3179 | /* WMI_GET_DETAILED_RS_RES_EX_EVENTID */ |
| 3180 | struct wmi_get_detailed_rs_res_ex_event { |
| 3181 | u8 cid; |
| 3182 | /* enum wmi_rs_results_status */ |
| 3183 | u8 status; |
| 3184 | u8 reserved0[2]; |
| 3185 | struct wmi_rs_results_ex_common common_rs_results; |
| 3186 | u8 each_mcs_results_size; |
| 3187 | u8 reserved1[3]; |
| 3188 | /* Results for each MCS */ |
| 3189 | struct wmi_rs_results_ex_mcs each_mcs_results[0]; |
| 3190 | } __packed; |
| 3191 | |
| 3192 | /* BRP antenna limit mode */ |
| 3193 | enum wmi_brp_ant_limit_mode { |
| 3194 | /* Disable BRP force antenna limit */ |
| 3195 | WMI_BRP_ANT_LIMIT_MODE_DISABLE = 0x00, |
| 3196 | /* Define maximal antennas limit. Only effective antennas will be |
| 3197 | * actually used |
| 3198 | */ |
| 3199 | WMI_BRP_ANT_LIMIT_MODE_EFFECTIVE = 0x01, |
| 3200 | /* Force a specific number of antennas */ |
| 3201 | WMI_BRP_ANT_LIMIT_MODE_FORCE = 0x02, |
| 3202 | /* number of BRP antenna limit modes */ |
| 3203 | WMI_BRP_ANT_LIMIT_MODES_NUM = 0x03, |
| 3204 | }; |
| 3205 | |
| 3206 | /* WMI_BRP_SET_ANT_LIMIT_CMDID */ |
| 3207 | struct wmi_brp_set_ant_limit_cmd { |
| 3208 | /* connection id */ |
| 3209 | u8 cid; |
| 3210 | /* enum wmi_brp_ant_limit_mode */ |
| 3211 | u8 limit_mode; |
| 3212 | /* antenna limit count, 1-27 |
| 3213 | * disable_mode - ignored |
| 3214 | * effective_mode - upper limit to number of antennas to be used |
| 3215 | * force_mode - exact number of antennas to be used |
| 3216 | */ |
| 3217 | u8 ant_limit; |
| 3218 | u8 reserved; |
| 3219 | } __packed; |
| 3220 | |
| 3221 | /* WMI_BRP_SET_ANT_LIMIT_EVENTID */ |
| 3222 | struct wmi_brp_set_ant_limit_event { |
| 3223 | /* wmi_fw_status */ |
| 3224 | u8 status; |
| 3225 | u8 reserved[3]; |
| 3226 | } __packed; |
| 3227 | |
| 3228 | enum wmi_bf_type { |
| 3229 | WMI_BF_TYPE_SLS = 0x00, |
| 3230 | WMI_BF_TYPE_BRP_RX = 0x01, |
| 3231 | }; |
| 3232 | |
| 3233 | /* WMI_BF_TRIG_CMDID */ |
| 3234 | struct wmi_bf_trig_cmd { |
| 3235 | /* enum wmi_bf_type - type of requested beamforming */ |
| 3236 | u8 bf_type; |
| 3237 | /* used only for WMI_BF_TYPE_BRP_RX */ |
| 3238 | u8 cid; |
| 3239 | /* used only for WMI_BF_TYPE_SLS */ |
| 3240 | u8 dst_mac[WMI_MAC_LEN]; |
| 3241 | u8 reserved[4]; |
| 3242 | } __packed; |
| 3243 | |
| 3244 | /* WMI_BF_TRIG_EVENTID */ |
| 3245 | struct wmi_bf_trig_event { |
| 3246 | /* enum wmi_fw_status */ |
| 3247 | u8 status; |
| 3248 | u8 cid; |
| 3249 | u8 reserved[2]; |
| 3250 | } __packed; |
| 3251 | |
| 3252 | /* broadcast connection ID */ |
| 3253 | #define WMI_LINK_MAINTAIN_CFG_CID_BROADCAST (0xFFFFFFFF) |
| 3254 | |
| 3255 | /* Types wmi_link_maintain_cfg presets for WMI_LINK_MAINTAIN_CFG_WRITE_CMD */ |
| 3256 | enum wmi_link_maintain_cfg_type { |
| 3257 | /* AP/PCP default normal (non-FST) configuration settings */ |
| 3258 | WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_NORMAL_AP = 0x00, |
| 3259 | /* AP/PCP default FST configuration settings */ |
| 3260 | WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_FST_AP = 0x01, |
| 3261 | /* STA default normal (non-FST) configuration settings */ |
| 3262 | WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_NORMAL_STA = 0x02, |
| 3263 | /* STA default FST configuration settings */ |
| 3264 | WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_FST_STA = 0x03, |
| 3265 | /* custom configuration settings */ |
| 3266 | WMI_LINK_MAINTAIN_CFG_TYPE_CUSTOM = 0x04, |
| 3267 | /* number of defined configuration types */ |
| 3268 | WMI_LINK_MAINTAIN_CFG_TYPES_NUM = 0x05, |
| 3269 | }; |
| 3270 | |
| 3271 | /* Response status codes for WMI_LINK_MAINTAIN_CFG_WRITE/READ commands */ |
| 3272 | enum wmi_link_maintain_cfg_response_status { |
| 3273 | /* WMI_LINK_MAINTAIN_CFG_WRITE/READ command successfully accomplished |
| 3274 | */ |
| 3275 | WMI_LINK_MAINTAIN_CFG_RESPONSE_STATUS_OK = 0x00, |
| 3276 | /* ERROR due to bad argument in WMI_LINK_MAINTAIN_CFG_WRITE/READ |
| 3277 | * command request |
| 3278 | */ |
| 3279 | WMI_LINK_MAINTAIN_CFG_RESPONSE_STATUS_BAD_ARGUMENT = 0x01, |
| 3280 | }; |
| 3281 | |
| 3282 | /* Link Loss and Keep Alive configuration */ |
| 3283 | struct wmi_link_maintain_cfg { |
| 3284 | /* link_loss_enable_detectors_vec */ |
| 3285 | __le32 link_loss_enable_detectors_vec; |
| 3286 | /* detectors check period usec */ |
| 3287 | __le32 check_link_loss_period_usec; |
| 3288 | /* max allowed tx ageing */ |
| 3289 | __le32 tx_ageing_threshold_usec; |
| 3290 | /* keep alive period for high SNR */ |
| 3291 | __le32 keep_alive_period_usec_high_snr; |
| 3292 | /* keep alive period for low SNR */ |
| 3293 | __le32 keep_alive_period_usec_low_snr; |
| 3294 | /* lower snr limit for keep alive period update */ |
| 3295 | __le32 keep_alive_snr_threshold_low_db; |
| 3296 | /* upper snr limit for keep alive period update */ |
| 3297 | __le32 keep_alive_snr_threshold_high_db; |
| 3298 | /* num of successive bad bcons causing link-loss */ |
| 3299 | __le32 bad_beacons_num_threshold; |
| 3300 | /* SNR limit for bad_beacons_detector */ |
| 3301 | __le32 bad_beacons_snr_threshold_db; |
| 3302 | /* timeout for disassoc response frame in uSec */ |
| 3303 | __le32 disconnect_timeout; |
| 3304 | } __packed; |
| 3305 | |
| 3306 | /* WMI_LINK_MAINTAIN_CFG_WRITE_CMDID */ |
| 3307 | struct wmi_link_maintain_cfg_write_cmd { |
| 3308 | /* enum wmi_link_maintain_cfg_type_e - type of requested default |
| 3309 | * configuration to be applied |
| 3310 | */ |
| 3311 | __le32 cfg_type; |
| 3312 | /* requested connection ID or WMI_LINK_MAINTAIN_CFG_CID_BROADCAST */ |
| 3313 | __le32 cid; |
| 3314 | /* custom configuration settings to be applied (relevant only if |
| 3315 | * cfg_type==WMI_LINK_MAINTAIN_CFG_TYPE_CUSTOM) |
| 3316 | */ |
| 3317 | struct wmi_link_maintain_cfg lm_cfg; |
| 3318 | } __packed; |
| 3319 | |
| 3320 | /* WMI_LINK_MAINTAIN_CFG_READ_CMDID */ |
| 3321 | struct wmi_link_maintain_cfg_read_cmd { |
| 3322 | /* connection ID which configuration settings are requested */ |
| 3323 | __le32 cid; |
| 3324 | } __packed; |
| 3325 | |
| 3326 | /* WMI_LINK_MAINTAIN_CFG_WRITE_DONE_EVENTID */ |
| 3327 | struct wmi_link_maintain_cfg_write_done_event { |
| 3328 | /* requested connection ID */ |
| 3329 | __le32 cid; |
| 3330 | /* wmi_link_maintain_cfg_response_status_e - write status */ |
| 3331 | __le32 status; |
| 3332 | } __packed; |
| 3333 | |
| 3334 | /* \WMI_LINK_MAINTAIN_CFG_READ_DONE_EVENT */ |
| 3335 | struct wmi_link_maintain_cfg_read_done_event { |
| 3336 | /* requested connection ID */ |
| 3337 | __le32 cid; |
| 3338 | /* wmi_link_maintain_cfg_response_status_e - read status */ |
| 3339 | __le32 status; |
| 3340 | /* Retrieved configuration settings */ |
| 3341 | struct wmi_link_maintain_cfg lm_cfg; |
| 3342 | } __packed; |
| 3343 | |
| 3344 | enum wmi_traffic_suspend_status { |
| 3345 | WMI_TRAFFIC_SUSPEND_APPROVED = 0x0, |
| 3346 | WMI_TRAFFIC_SUSPEND_REJECTED_LINK_NOT_IDLE = 0x1, |
| 3347 | WMI_TRAFFIC_SUSPEND_REJECTED_DISCONNECT = 0x2, |
| 3348 | WMI_TRAFFIC_SUSPEND_REJECTED_OTHER = 0x3, |
| 3349 | }; |
| 3350 | |
| 3351 | /* WMI_TRAFFIC_SUSPEND_EVENTID */ |
| 3352 | struct wmi_traffic_suspend_event { |
| 3353 | /* enum wmi_traffic_suspend_status_e */ |
| 3354 | u8 status; |
| 3355 | } __packed; |
| 3356 | |
| 3357 | enum wmi_traffic_resume_status { |
| 3358 | WMI_TRAFFIC_RESUME_SUCCESS = 0x0, |
| 3359 | WMI_TRAFFIC_RESUME_FAILED = 0x1, |
| 3360 | }; |
| 3361 | |
| 3362 | enum wmi_resume_trigger { |
| 3363 | WMI_RESUME_TRIGGER_UNKNOWN = 0x0, |
| 3364 | WMI_RESUME_TRIGGER_HOST = 0x1, |
| 3365 | WMI_RESUME_TRIGGER_UCAST_RX = 0x2, |
| 3366 | WMI_RESUME_TRIGGER_BCAST_RX = 0x4, |
| 3367 | WMI_RESUME_TRIGGER_WMI_EVT = 0x8, |
| 3368 | WMI_RESUME_TRIGGER_DISCONNECT = 0x10, |
| 3369 | }; |
| 3370 | |
| 3371 | /* WMI_TRAFFIC_RESUME_EVENTID */ |
| 3372 | struct wmi_traffic_resume_event { |
| 3373 | /* enum wmi_traffic_resume_status */ |
| 3374 | u8 status; |
| 3375 | u8 reserved[3]; |
| 3376 | /* enum wmi_resume_trigger bitmap */ |
| 3377 | __le32 resume_triggers; |
| 3378 | } __packed; |
| 3379 | |
| 3380 | /* Power Save command completion status codes */ |
| 3381 | enum wmi_ps_cfg_cmd_status { |
| 3382 | WMI_PS_CFG_CMD_STATUS_SUCCESS = 0x00, |
| 3383 | WMI_PS_CFG_CMD_STATUS_BAD_PARAM = 0x01, |
| 3384 | /* other error */ |
| 3385 | WMI_PS_CFG_CMD_STATUS_ERROR = 0x02, |
| 3386 | }; |
| 3387 | |
| 3388 | /* Device Power Save Profiles */ |
| 3389 | enum wmi_ps_profile_type { |
| 3390 | WMI_PS_PROFILE_TYPE_DEFAULT = 0x00, |
| 3391 | WMI_PS_PROFILE_TYPE_PS_DISABLED = 0x01, |
| 3392 | WMI_PS_PROFILE_TYPE_MAX_PS = 0x02, |
| 3393 | WMI_PS_PROFILE_TYPE_LOW_LATENCY_PS = 0x03, |
| 3394 | }; |
| 3395 | |
| 3396 | /* WMI_PS_DEV_PROFILE_CFG_READ_CMDID */ |
| 3397 | struct wmi_ps_dev_profile_cfg_read_cmd { |
| 3398 | /* reserved */ |
| 3399 | __le32 reserved; |
| 3400 | } __packed; |
| 3401 | |
| 3402 | /* WMI_PS_DEV_PROFILE_CFG_READ_EVENTID */ |
| 3403 | struct wmi_ps_dev_profile_cfg_read_event { |
| 3404 | /* wmi_ps_profile_type_e */ |
| 3405 | u8 ps_profile; |
| 3406 | u8 reserved[3]; |
| 3407 | } __packed; |
| 3408 | |
| 3409 | /* WMI_PS_DEV_PROFILE_CFG_CMDID |
| 3410 | * |
| 3411 | * Power save profile to be used by the device |
| 3412 | * |
| 3413 | * Returned event: |
| 3414 | * - WMI_PS_DEV_PROFILE_CFG_EVENTID |
| 3415 | */ |
| 3416 | struct wmi_ps_dev_profile_cfg_cmd { |
| 3417 | /* wmi_ps_profile_type_e */ |
| 3418 | u8 ps_profile; |
| 3419 | u8 reserved[3]; |
| 3420 | } __packed; |
| 3421 | |
| 3422 | /* WMI_PS_DEV_PROFILE_CFG_EVENTID */ |
| 3423 | struct wmi_ps_dev_profile_cfg_event { |
| 3424 | /* wmi_ps_cfg_cmd_status_e */ |
| 3425 | __le32 status; |
| 3426 | } __packed; |
| 3427 | |
| 3428 | enum wmi_ps_level { |
| 3429 | WMI_PS_LEVEL_DEEP_SLEEP = 0x00, |
| 3430 | WMI_PS_LEVEL_SHALLOW_SLEEP = 0x01, |
| 3431 | /* awake = all PS mechanisms are disabled */ |
| 3432 | WMI_PS_LEVEL_AWAKE = 0x02, |
| 3433 | }; |
| 3434 | |
| 3435 | enum wmi_ps_deep_sleep_clk_level { |
| 3436 | /* 33k */ |
| 3437 | WMI_PS_DEEP_SLEEP_CLK_LEVEL_RTC = 0x00, |
| 3438 | /* 10k */ |
| 3439 | WMI_PS_DEEP_SLEEP_CLK_LEVEL_OSC = 0x01, |
| 3440 | /* @RTC Low latency */ |
| 3441 | WMI_PS_DEEP_SLEEP_CLK_LEVEL_RTC_LT = 0x02, |
| 3442 | WMI_PS_DEEP_SLEEP_CLK_LEVEL_XTAL = 0x03, |
| 3443 | WMI_PS_DEEP_SLEEP_CLK_LEVEL_SYSCLK = 0x04, |
| 3444 | /* Not Applicable */ |
| 3445 | WMI_PS_DEEP_SLEEP_CLK_LEVEL_N_A = 0xFF, |
| 3446 | }; |
| 3447 | |
| 3448 | /* Response by the FW to a D3 entry request */ |
| 3449 | enum wmi_ps_d3_resp_policy { |
| 3450 | WMI_PS_D3_RESP_POLICY_DEFAULT = 0x00, |
| 3451 | /* debug -D3 req is always denied */ |
| 3452 | WMI_PS_D3_RESP_POLICY_DENIED = 0x01, |
| 3453 | /* debug -D3 req is always approved */ |
| 3454 | WMI_PS_D3_RESP_POLICY_APPROVED = 0x02, |
| 3455 | }; |
| 3456 | |
| 3457 | #define WMI_AOA_MAX_DATA_SIZE (128) |
| 3458 | |
| 3459 | enum wmi_aoa_meas_status { |
| 3460 | WMI_AOA_MEAS_SUCCESS = 0x00, |
| 3461 | WMI_AOA_MEAS_PEER_INCAPABLE = 0x01, |
| 3462 | WMI_AOA_MEAS_FAILURE = 0x02, |
| 3463 | }; |
| 3464 | |
| 3465 | /* WMI_AOA_MEAS_EVENTID */ |
| 3466 | struct wmi_aoa_meas_event { |
| 3467 | u8 mac_addr[WMI_MAC_LEN]; |
| 3468 | /* channels IDs: |
| 3469 | * 0 - 58320 MHz |
| 3470 | * 1 - 60480 MHz |
| 3471 | * 2 - 62640 MHz |
| 3472 | */ |
| 3473 | u8 channel; |
| 3474 | /* enum wmi_aoa_meas_type */ |
| 3475 | u8 aoa_meas_type; |
| 3476 | /* Measurments are from RFs, defined by the mask */ |
| 3477 | __le32 meas_rf_mask; |
| 3478 | /* enum wmi_aoa_meas_status */ |
| 3479 | u8 meas_status; |
| 3480 | u8 reserved; |
| 3481 | /* Length of meas_data in bytes */ |
| 3482 | __le16 length; |
| 3483 | u8 meas_data[WMI_AOA_MAX_DATA_SIZE]; |
| 3484 | } __packed; |
| 3485 | |
| 3486 | /* WMI_SET_MGMT_RETRY_LIMIT_EVENTID */ |
| 3487 | struct wmi_set_mgmt_retry_limit_event { |
| 3488 | /* enum wmi_fw_status */ |
| 3489 | u8 status; |
| 3490 | /* alignment to 32b */ |
| 3491 | u8 reserved[3]; |
| 3492 | } __packed; |
| 3493 | |
| 3494 | /* WMI_GET_MGMT_RETRY_LIMIT_EVENTID */ |
| 3495 | struct wmi_get_mgmt_retry_limit_event { |
| 3496 | /* MAC retransmit limit for mgmt frames */ |
| 3497 | u8 mgmt_retry_limit; |
| 3498 | /* alignment to 32b */ |
| 3499 | u8 reserved[3]; |
| 3500 | } __packed; |
| 3501 | |
| 3502 | /* WMI_TOF_GET_CAPABILITIES_EVENTID */ |
| 3503 | struct wmi_tof_get_capabilities_event { |
| 3504 | u8 ftm_capability; |
| 3505 | /* maximum supported number of destination to start TOF */ |
| 3506 | u8 max_num_of_dest; |
| 3507 | /* maximum supported number of measurements per burst */ |
| 3508 | u8 max_num_of_meas_per_burst; |
| 3509 | u8 reserved; |
| 3510 | /* maximum supported multi bursts */ |
| 3511 | __le16 max_multi_bursts_sessions; |
| 3512 | /* maximum supported FTM burst duration , wmi_tof_burst_duration_e */ |
| 3513 | __le16 max_ftm_burst_duration; |
| 3514 | /* AOA supported types */ |
| 3515 | __le32 aoa_supported_types; |
| 3516 | } __packed; |
| 3517 | |
| 3518 | /* WMI_SET_THERMAL_THROTTLING_CFG_EVENTID */ |
| 3519 | struct wmi_set_thermal_throttling_cfg_event { |
| 3520 | /* wmi_fw_status */ |
| 3521 | u8 status; |
| 3522 | u8 reserved[3]; |
| 3523 | } __packed; |
| 3524 | |
| 3525 | /* WMI_GET_THERMAL_THROTTLING_CFG_EVENTID */ |
| 3526 | struct wmi_get_thermal_throttling_cfg_event { |
| 3527 | /* Status data */ |
| 3528 | struct wmi_tt_data tt_data; |
| 3529 | } __packed; |
| 3530 | |
| 3531 | enum wmi_tof_session_end_status { |
| 3532 | WMI_TOF_SESSION_END_NO_ERROR = 0x00, |
| 3533 | WMI_TOF_SESSION_END_FAIL = 0x01, |
| 3534 | WMI_TOF_SESSION_END_PARAMS_ERROR = 0x02, |
| 3535 | WMI_TOF_SESSION_END_ABORTED = 0x03, |
| 3536 | WMI_TOF_SESSION_END_BUSY = 0x04, |
| 3537 | }; |
| 3538 | |
| 3539 | /* WMI_TOF_SESSION_END_EVENTID */ |
| 3540 | struct wmi_tof_session_end_event { |
| 3541 | /* FTM session ID */ |
| 3542 | __le32 session_id; |
| 3543 | /* wmi_tof_session_end_status_e */ |
| 3544 | u8 status; |
| 3545 | u8 reserved[3]; |
| 3546 | } __packed; |
| 3547 | |
| 3548 | /* WMI_TOF_SET_LCI_EVENTID */ |
| 3549 | struct wmi_tof_set_lci_event { |
| 3550 | /* enum wmi_fw_status */ |
| 3551 | u8 status; |
| 3552 | u8 reserved[3]; |
| 3553 | } __packed; |
| 3554 | |
| 3555 | /* WMI_TOF_SET_LCR_EVENTID */ |
| 3556 | struct wmi_tof_set_lcr_event { |
| 3557 | /* enum wmi_fw_status */ |
| 3558 | u8 status; |
| 3559 | u8 reserved[3]; |
| 3560 | } __packed; |
| 3561 | |
| 3562 | /* Responder FTM Results */ |
| 3563 | struct wmi_responder_ftm_res { |
| 3564 | u8 t1[6]; |
| 3565 | u8 t2[6]; |
| 3566 | u8 t3[6]; |
| 3567 | u8 t4[6]; |
| 3568 | __le16 tod_err; |
| 3569 | __le16 toa_err; |
| 3570 | __le16 tod_err_initiator; |
| 3571 | __le16 toa_err_initiator; |
| 3572 | } __packed; |
| 3573 | |
| 3574 | enum wmi_tof_ftm_per_dest_res_status { |
| 3575 | WMI_PER_DEST_RES_NO_ERROR = 0x00, |
| 3576 | WMI_PER_DEST_RES_TX_RX_FAIL = 0x01, |
| 3577 | WMI_PER_DEST_RES_PARAM_DONT_MATCH = 0x02, |
| 3578 | }; |
| 3579 | |
| 3580 | enum wmi_tof_ftm_per_dest_res_flags { |
| 3581 | WMI_PER_DEST_RES_REQ_START = 0x01, |
| 3582 | WMI_PER_DEST_RES_BURST_REPORT_END = 0x02, |
| 3583 | WMI_PER_DEST_RES_REQ_END = 0x04, |
| 3584 | WMI_PER_DEST_RES_PARAM_UPDATE = 0x08, |
| 3585 | }; |
| 3586 | |
| 3587 | /* WMI_TOF_FTM_PER_DEST_RES_EVENTID */ |
| 3588 | struct wmi_tof_ftm_per_dest_res_event { |
| 3589 | /* FTM session ID */ |
| 3590 | __le32 session_id; |
| 3591 | /* destination MAC address */ |
| 3592 | u8 dst_mac[WMI_MAC_LEN]; |
| 3593 | /* wmi_tof_ftm_per_dest_res_flags_e */ |
| 3594 | u8 flags; |
| 3595 | /* wmi_tof_ftm_per_dest_res_status_e */ |
| 3596 | u8 status; |
| 3597 | /* responder ASAP */ |
| 3598 | u8 responder_asap; |
| 3599 | /* responder number of FTM per burst */ |
| 3600 | u8 responder_num_ftm_per_burst; |
| 3601 | /* responder number of FTM burst exponent */ |
| 3602 | u8 responder_num_ftm_bursts_exp; |
| 3603 | /* responder burst duration ,wmi_tof_burst_duration_e */ |
| 3604 | u8 responder_burst_duration; |
| 3605 | /* responder burst period, indicate interval between two consecutive |
| 3606 | * burst instances, in units of 100 ms |
| 3607 | */ |
| 3608 | __le16 responder_burst_period; |
| 3609 | /* receive burst counter */ |
| 3610 | __le16 bursts_cnt; |
| 3611 | /* tsf of responder start burst */ |
| 3612 | __le32 tsf_sync; |
| 3613 | /* actual received ftm per burst */ |
| 3614 | u8 actual_ftm_per_burst; |
| 3615 | /* Measurments are from RFs, defined by the mask */ |
| 3616 | __le32 meas_rf_mask; |
| 3617 | u8 reserved0[3]; |
| 3618 | struct wmi_responder_ftm_res responder_ftm_res[0]; |
| 3619 | } __packed; |
| 3620 | |
| 3621 | /* WMI_TOF_CFG_RESPONDER_EVENTID */ |
| 3622 | struct wmi_tof_cfg_responder_event { |
| 3623 | /* enum wmi_fw_status */ |
| 3624 | u8 status; |
| 3625 | u8 reserved[3]; |
| 3626 | } __packed; |
| 3627 | |
| 3628 | enum wmi_tof_channel_info_type { |
| 3629 | WMI_TOF_CHANNEL_INFO_AOA = 0x00, |
| 3630 | WMI_TOF_CHANNEL_INFO_LCI = 0x01, |
| 3631 | WMI_TOF_CHANNEL_INFO_LCR = 0x02, |
| 3632 | WMI_TOF_CHANNEL_INFO_VENDOR_SPECIFIC = 0x03, |
| 3633 | WMI_TOF_CHANNEL_INFO_CIR = 0x04, |
| 3634 | WMI_TOF_CHANNEL_INFO_RSSI = 0x05, |
| 3635 | WMI_TOF_CHANNEL_INFO_SNR = 0x06, |
| 3636 | WMI_TOF_CHANNEL_INFO_DEBUG = 0x07, |
| 3637 | }; |
| 3638 | |
| 3639 | /* WMI_TOF_CHANNEL_INFO_EVENTID */ |
| 3640 | struct wmi_tof_channel_info_event { |
| 3641 | /* FTM session ID */ |
| 3642 | __le32 session_id; |
| 3643 | /* destination MAC address */ |
| 3644 | u8 dst_mac[WMI_MAC_LEN]; |
| 3645 | /* wmi_tof_channel_info_type_e */ |
| 3646 | u8 type; |
| 3647 | /* data report length */ |
| 3648 | u8 len; |
| 3649 | /* data report payload */ |
| 3650 | u8 report[0]; |
| 3651 | } __packed; |
| 3652 | |
| 3653 | /* WMI_TOF_SET_TX_RX_OFFSET_EVENTID */ |
| 3654 | struct wmi_tof_set_tx_rx_offset_event { |
| 3655 | /* enum wmi_fw_status */ |
| 3656 | u8 status; |
| 3657 | u8 reserved[3]; |
| 3658 | } __packed; |
| 3659 | |
| 3660 | /* WMI_TOF_GET_TX_RX_OFFSET_EVENTID */ |
| 3661 | struct wmi_tof_get_tx_rx_offset_event { |
| 3662 | /* enum wmi_fw_status */ |
| 3663 | u8 status; |
| 3664 | /* RF index used to read the offsets */ |
| 3665 | u8 rf_index; |
| 3666 | u8 reserved1[2]; |
| 3667 | /* TX delay offset */ |
| 3668 | __le32 tx_offset; |
| 3669 | /* RX delay offset */ |
| 3670 | __le32 rx_offset; |
| 3671 | /* Offset to strongest tap of CIR */ |
| 3672 | __le32 precursor; |
| 3673 | } __packed; |
| 3674 | |
| 3675 | /* Result status codes for WMI commands */ |
| 3676 | enum wmi_rf_sector_status { |
| 3677 | WMI_RF_SECTOR_STATUS_SUCCESS = 0x00, |
| 3678 | WMI_RF_SECTOR_STATUS_BAD_PARAMETERS_ERROR = 0x01, |
| 3679 | WMI_RF_SECTOR_STATUS_BUSY_ERROR = 0x02, |
| 3680 | WMI_RF_SECTOR_STATUS_NOT_SUPPORTED_ERROR = 0x03, |
| 3681 | }; |
| 3682 | |
| 3683 | /* Types of the RF sector (TX,RX) */ |
| 3684 | enum wmi_rf_sector_type { |
| 3685 | WMI_RF_SECTOR_TYPE_RX = 0x00, |
| 3686 | WMI_RF_SECTOR_TYPE_TX = 0x01, |
| 3687 | }; |
| 3688 | |
| 3689 | /* Content of RF Sector (six 32-bits registers) */ |
| 3690 | struct wmi_rf_sector_info { |
| 3691 | /* Phase values for RF Chains[15-0] (2bits per RF chain) */ |
| 3692 | __le32 psh_hi; |
| 3693 | /* Phase values for RF Chains[31-16] (2bits per RF chain) */ |
| 3694 | __le32 psh_lo; |
| 3695 | /* ETYPE Bit0 for all RF chains[31-0] - bit0 of Edge amplifier gain |
| 3696 | * index |
| 3697 | */ |
| 3698 | __le32 etype0; |
| 3699 | /* ETYPE Bit1 for all RF chains[31-0] - bit1 of Edge amplifier gain |
| 3700 | * index |
| 3701 | */ |
| 3702 | __le32 etype1; |
| 3703 | /* ETYPE Bit2 for all RF chains[31-0] - bit2 of Edge amplifier gain |
| 3704 | * index |
| 3705 | */ |
| 3706 | __le32 etype2; |
| 3707 | /* D-Type values (3bits each) for 8 Distribution amplifiers + X16 |
| 3708 | * switch bits |
| 3709 | */ |
| 3710 | __le32 dtype_swch_off; |
| 3711 | } __packed; |
| 3712 | |
| 3713 | #define WMI_INVALID_RF_SECTOR_INDEX (0xFFFF) |
| 3714 | #define WMI_MAX_RF_MODULES_NUM (8) |
| 3715 | |
| 3716 | /* WMI_GET_RF_SECTOR_PARAMS_CMD */ |
| 3717 | struct wmi_get_rf_sector_params_cmd { |
| 3718 | /* Sector number to be retrieved */ |
| 3719 | __le16 sector_idx; |
| 3720 | /* enum wmi_rf_sector_type - type of requested RF sector */ |
| 3721 | u8 sector_type; |
| 3722 | /* bitmask vector specifying destination RF modules */ |
| 3723 | u8 rf_modules_vec; |
| 3724 | } __packed; |
| 3725 | |
| 3726 | /* \WMI_GET_RF_SECTOR_PARAMS_DONE_EVENT */ |
| 3727 | struct wmi_get_rf_sector_params_done_event { |
| 3728 | /* result status of WMI_GET_RF_SECTOR_PARAMS_CMD (enum |
| 3729 | * wmi_rf_sector_status) |
| 3730 | */ |
| 3731 | u8 status; |
| 3732 | /* align next field to U64 boundary */ |
| 3733 | u8 reserved[7]; |
| 3734 | /* TSF timestamp when RF sectors where retrieved */ |
| 3735 | __le64 tsf; |
| 3736 | /* Content of RF sector retrieved from each RF module */ |
| 3737 | struct wmi_rf_sector_info sectors_info[WMI_MAX_RF_MODULES_NUM]; |
| 3738 | } __packed; |
| 3739 | |
| 3740 | /* WMI_SET_RF_SECTOR_PARAMS_CMD */ |
| 3741 | struct wmi_set_rf_sector_params_cmd { |
| 3742 | /* Sector number to be retrieved */ |
| 3743 | __le16 sector_idx; |
| 3744 | /* enum wmi_rf_sector_type - type of requested RF sector */ |
| 3745 | u8 sector_type; |
| 3746 | /* bitmask vector specifying destination RF modules */ |
| 3747 | u8 rf_modules_vec; |
| 3748 | /* Content of RF sector to be written to each RF module */ |
| 3749 | struct wmi_rf_sector_info sectors_info[WMI_MAX_RF_MODULES_NUM]; |
| 3750 | } __packed; |
| 3751 | |
| 3752 | /* \WMI_SET_RF_SECTOR_PARAMS_DONE_EVENT */ |
| 3753 | struct wmi_set_rf_sector_params_done_event { |
| 3754 | /* result status of WMI_SET_RF_SECTOR_PARAMS_CMD (enum |
| 3755 | * wmi_rf_sector_status) |
| 3756 | */ |
| 3757 | u8 status; |
| 3758 | } __packed; |
| 3759 | |
| 3760 | /* WMI_GET_SELECTED_RF_SECTOR_INDEX_CMD - Get RF sector index selected by |
| 3761 | * TXSS/BRP for communication with specified CID |
| 3762 | */ |
| 3763 | struct wmi_get_selected_rf_sector_index_cmd { |
| 3764 | /* Connection/Station ID in [0:7] range */ |
| 3765 | u8 cid; |
| 3766 | /* type of requested RF sector (enum wmi_rf_sector_type) */ |
| 3767 | u8 sector_type; |
| 3768 | /* align to U32 boundary */ |
| 3769 | u8 reserved[2]; |
| 3770 | } __packed; |
| 3771 | |
| 3772 | /* \WMI_GET_SELECTED_RF_SECTOR_INDEX_DONE_EVENT - Returns retrieved RF sector |
| 3773 | * index selected by TXSS/BRP for communication with specified CID |
| 3774 | */ |
| 3775 | struct wmi_get_selected_rf_sector_index_done_event { |
| 3776 | /* Retrieved sector index selected in TXSS (for TX sector request) or |
| 3777 | * BRP (for RX sector request) |
| 3778 | */ |
| 3779 | __le16 sector_idx; |
| 3780 | /* result status of WMI_GET_SELECTED_RF_SECTOR_INDEX_CMD (enum |
| 3781 | * wmi_rf_sector_status) |
| 3782 | */ |
| 3783 | u8 status; |
| 3784 | /* align next field to U64 boundary */ |
| 3785 | u8 reserved[5]; |
| 3786 | /* TSF timestamp when result was retrieved */ |
| 3787 | __le64 tsf; |
| 3788 | } __packed; |
| 3789 | |
| 3790 | /* WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD - Force RF sector index for |
| 3791 | * communication with specified CID. Assumes that TXSS/BRP is disabled by |
| 3792 | * other command |
| 3793 | */ |
| 3794 | struct wmi_set_selected_rf_sector_index_cmd { |
| 3795 | /* Connection/Station ID in [0:7] range */ |
| 3796 | u8 cid; |
| 3797 | /* type of requested RF sector (enum wmi_rf_sector_type) */ |
| 3798 | u8 sector_type; |
| 3799 | /* Forced sector index */ |
| 3800 | __le16 sector_idx; |
| 3801 | } __packed; |
| 3802 | |
| 3803 | /* \WMI_SET_SELECTED_RF_SECTOR_INDEX_DONE_EVENT - Success/Fail status for |
| 3804 | * WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD |
| 3805 | */ |
| 3806 | struct wmi_set_selected_rf_sector_index_done_event { |
| 3807 | /* result status of WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD (enum |
| 3808 | * wmi_rf_sector_status) |
| 3809 | */ |
| 3810 | u8 status; |
| 3811 | /* align to U32 boundary */ |
| 3812 | u8 reserved[3]; |
| 3813 | } __packed; |
| 3814 | |
| 3815 | /* WMI_SET_RF_SECTOR_ON_CMD - Activates specified sector for specified rf |
| 3816 | * modules |
| 3817 | */ |
| 3818 | struct wmi_set_rf_sector_on_cmd { |
| 3819 | /* Sector index to be activated */ |
| 3820 | __le16 sector_idx; |
| 3821 | /* type of requested RF sector (enum wmi_rf_sector_type) */ |
| 3822 | u8 sector_type; |
| 3823 | /* bitmask vector specifying destination RF modules */ |
| 3824 | u8 rf_modules_vec; |
| 3825 | } __packed; |
| 3826 | |
| 3827 | /* \WMI_SET_RF_SECTOR_ON_DONE_EVENT - Success/Fail status for |
| 3828 | * WMI_SET_RF_SECTOR_ON_CMD |
| 3829 | */ |
| 3830 | struct wmi_set_rf_sector_on_done_event { |
| 3831 | /* result status of WMI_SET_RF_SECTOR_ON_CMD (enum |
| 3832 | * wmi_rf_sector_status) |
| 3833 | */ |
| 3834 | u8 status; |
| 3835 | /* align to U32 boundary */ |
| 3836 | u8 reserved[3]; |
| 3837 | } __packed; |
| 3838 | |
| 3839 | enum wmi_sector_sweep_type { |
| 3840 | WMI_SECTOR_SWEEP_TYPE_TXSS = 0x00, |
| 3841 | WMI_SECTOR_SWEEP_TYPE_BCON = 0x01, |
| 3842 | WMI_SECTOR_SWEEP_TYPE_TXSS_AND_BCON = 0x02, |
| 3843 | WMI_SECTOR_SWEEP_TYPE_NUM = 0x03, |
| 3844 | }; |
| 3845 | |
| 3846 | /* WMI_PRIO_TX_SECTORS_ORDER_CMDID |
| 3847 | * |
| 3848 | * Set the order of TX sectors in TXSS and/or Beacon(AP). |
| 3849 | * |
| 3850 | * Returned event: |
| 3851 | * - WMI_PRIO_TX_SECTORS_ORDER_EVENTID |
| 3852 | */ |
| 3853 | struct wmi_prio_tx_sectors_order_cmd { |
| 3854 | /* tx sectors order to be applied, 0xFF for end of array */ |
| 3855 | u8 tx_sectors_priority_array[MAX_NUM_OF_SECTORS]; |
| 3856 | /* enum wmi_sector_sweep_type, TXSS and/or Beacon */ |
| 3857 | u8 sector_sweep_type; |
| 3858 | /* needed only for TXSS configuration */ |
| 3859 | u8 cid; |
| 3860 | /* alignment to 32b */ |
| 3861 | u8 reserved[2]; |
| 3862 | } __packed; |
| 3863 | |
| 3864 | /* completion status codes */ |
| 3865 | enum wmi_prio_tx_sectors_cmd_status { |
| 3866 | WMI_PRIO_TX_SECT_CMD_STATUS_SUCCESS = 0x00, |
| 3867 | WMI_PRIO_TX_SECT_CMD_STATUS_BAD_PARAM = 0x01, |
| 3868 | /* other error */ |
| 3869 | WMI_PRIO_TX_SECT_CMD_STATUS_ERROR = 0x02, |
| 3870 | }; |
| 3871 | |
| 3872 | /* WMI_PRIO_TX_SECTORS_ORDER_EVENTID */ |
| 3873 | struct wmi_prio_tx_sectors_order_event { |
| 3874 | /* enum wmi_prio_tx_sectors_cmd_status */ |
| 3875 | u8 status; |
| 3876 | /* alignment to 32b */ |
| 3877 | u8 reserved[3]; |
| 3878 | } __packed; |
| 3879 | |
| 3880 | struct wmi_prio_tx_sectors_num_cmd { |
| 3881 | /* [0-128], 0 = No changes */ |
| 3882 | u8 beacon_number_of_sectors; |
| 3883 | /* [0-128], 0 = No changes */ |
| 3884 | u8 txss_number_of_sectors; |
| 3885 | /* [0-8] needed only for TXSS configuration */ |
| 3886 | u8 cid; |
| 3887 | } __packed; |
| 3888 | |
| 3889 | /* WMI_PRIO_TX_SECTORS_NUMBER_CMDID |
| 3890 | * |
| 3891 | * Set the number of active sectors in TXSS and/or Beacon. |
| 3892 | * |
| 3893 | * Returned event: |
| 3894 | * - WMI_PRIO_TX_SECTORS_NUMBER_EVENTID |
| 3895 | */ |
| 3896 | struct wmi_prio_tx_sectors_number_cmd { |
| 3897 | struct wmi_prio_tx_sectors_num_cmd active_sectors_num; |
| 3898 | /* alignment to 32b */ |
| 3899 | u8 reserved; |
| 3900 | } __packed; |
| 3901 | |
| 3902 | /* WMI_PRIO_TX_SECTORS_NUMBER_EVENTID */ |
| 3903 | struct wmi_prio_tx_sectors_number_event { |
| 3904 | /* enum wmi_prio_tx_sectors_cmd_status */ |
| 3905 | u8 status; |
| 3906 | /* alignment to 32b */ |
| 3907 | u8 reserved[3]; |
| 3908 | } __packed; |
| 3909 | |
| 3910 | /* WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_CMDID |
| 3911 | * |
| 3912 | * Set default sectors order and number (hard coded in board file) |
| 3913 | * in TXSS and/or Beacon. |
| 3914 | * |
| 3915 | * Returned event: |
| 3916 | * - WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_EVENTID |
| 3917 | */ |
| 3918 | struct wmi_prio_tx_sectors_set_default_cfg_cmd { |
| 3919 | /* enum wmi_sector_sweep_type, TXSS and/or Beacon */ |
| 3920 | u8 sector_sweep_type; |
| 3921 | /* needed only for TXSS configuration */ |
| 3922 | u8 cid; |
| 3923 | /* alignment to 32b */ |
| 3924 | u8 reserved[2]; |
| 3925 | } __packed; |
| 3926 | |
| 3927 | /* WMI_PRIO_TX_SECTORS_SET_DEFAULT_CFG_EVENTID */ |
| 3928 | struct wmi_prio_tx_sectors_set_default_cfg_event { |
| 3929 | /* enum wmi_prio_tx_sectors_cmd_status */ |
| 3930 | u8 status; |
| 3931 | /* alignment to 32b */ |
| 3932 | u8 reserved[3]; |
| 3933 | } __packed; |
| 3934 | |
| 3935 | /* WMI_SET_SILENT_RSSI_TABLE_DONE_EVENTID */ |
| 3936 | struct wmi_set_silent_rssi_table_done_event { |
| 3937 | /* enum wmi_silent_rssi_status */ |
| 3938 | __le32 status; |
| 3939 | /* enum wmi_silent_rssi_table */ |
| 3940 | __le32 table; |
| 3941 | } __packed; |
| 3942 | |
| 3943 | /* WMI_VRING_SWITCH_TIMING_CONFIG_EVENTID */ |
| 3944 | struct wmi_vring_switch_timing_config_event { |
| 3945 | /* enum wmi_fw_status */ |
| 3946 | u8 status; |
| 3947 | u8 reserved[3]; |
| 3948 | } __packed; |
| 3949 | |
| 3950 | /* WMI_GET_ASSOC_LIST_RES_EVENTID */ |
| 3951 | struct wmi_assoc_sta_info { |
| 3952 | u8 mac[WMI_MAC_LEN]; |
| 3953 | u8 omni_index_address; |
| 3954 | u8 reserved; |
| 3955 | } __packed; |
| 3956 | |
| 3957 | #define WMI_GET_ASSOC_LIST_SIZE (8) |
| 3958 | |
| 3959 | /* WMI_GET_ASSOC_LIST_RES_EVENTID |
| 3960 | * Returns up to MAX_ASSOC_STA_LIST_SIZE associated STAs |
| 3961 | */ |
| 3962 | struct wmi_get_assoc_list_res_event { |
| 3963 | struct wmi_assoc_sta_info assoc_sta_list[WMI_GET_ASSOC_LIST_SIZE]; |
| 3964 | /* STA count */ |
| 3965 | u8 count; |
| 3966 | u8 reserved[3]; |
| 3967 | } __packed; |
| 3968 | |
| 3969 | /* WMI_BF_CONTROL_EVENTID - deprecated */ |
| 3970 | struct wmi_bf_control_event { |
| 3971 | /* wmi_fw_status */ |
| 3972 | u8 status; |
| 3973 | u8 reserved[3]; |
| 3974 | } __packed; |
| 3975 | |
| 3976 | /* WMI_BF_CONTROL_EX_EVENTID */ |
| 3977 | struct wmi_bf_control_ex_event { |
| 3978 | /* wmi_fw_status */ |
| 3979 | u8 status; |
| 3980 | u8 reserved[3]; |
| 3981 | } __packed; |
| 3982 | |
| 3983 | /* WMI_COMMAND_NOT_SUPPORTED_EVENTID */ |
| 3984 | struct wmi_command_not_supported_event { |
| 3985 | /* device id */ |
| 3986 | u8 mid; |
| 3987 | u8 reserved0; |
| 3988 | __le16 command_id; |
| 3989 | /* for UT command only, otherwise reserved */ |
| 3990 | __le16 command_subtype; |
| 3991 | __le16 reserved1; |
| 3992 | } __packed; |
| 3993 | |
| 3994 | /* WMI_TSF_SYNC_CMDID */ |
| 3995 | struct wmi_tsf_sync_cmd { |
| 3996 | /* The time interval to send announce frame in one BI */ |
| 3997 | u8 interval_ms; |
| 3998 | /* The mcs to send announce frame */ |
| 3999 | u8 mcs; |
| 4000 | u8 reserved[6]; |
| 4001 | } __packed; |
| 4002 | |
| 4003 | /* WMI_TSF_SYNC_STATUS_EVENTID */ |
| 4004 | enum wmi_tsf_sync_status { |
| 4005 | WMI_TSF_SYNC_SUCCESS = 0x00, |
| 4006 | WMI_TSF_SYNC_FAILED = 0x01, |
| 4007 | WMI_TSF_SYNC_REJECTED = 0x02, |
| 4008 | }; |
| 4009 | |
| 4010 | /* WMI_TSF_SYNC_STATUS_EVENTID */ |
| 4011 | struct wmi_tsf_sync_status_event { |
| 4012 | /* enum wmi_tsf_sync_status */ |
| 4013 | u8 status; |
| 4014 | u8 reserved[3]; |
| 4015 | } __packed; |
| 4016 | |
| 4017 | /* WMI_GET_CCA_INDICATIONS_EVENTID */ |
| 4018 | struct wmi_get_cca_indications_event { |
| 4019 | /* wmi_fw_status */ |
| 4020 | u8 status; |
| 4021 | /* CCA-Energy Detect in percentage over last BI (0..100) */ |
| 4022 | u8 cca_ed_percent; |
| 4023 | /* Averaged CCA-Energy Detect in percent over number of BIs (0..100) */ |
| 4024 | u8 cca_ed_avg_percent; |
| 4025 | /* NAV percent over last BI (0..100) */ |
| 4026 | u8 nav_percent; |
| 4027 | /* Averaged NAV percent over number of BIs (0..100) */ |
| 4028 | u8 nav_avg_percent; |
| 4029 | u8 reserved[3]; |
| 4030 | } __packed; |
| 4031 | |
| 4032 | /* WMI_SET_CCA_INDICATIONS_BI_AVG_NUM_CMDID */ |
| 4033 | struct wmi_set_cca_indications_bi_avg_num_cmd { |
| 4034 | /* set the number of bis to average cca_ed (0..255) */ |
| 4035 | u8 bi_number; |
| 4036 | u8 reserved[3]; |
| 4037 | } __packed; |
| 4038 | |
| 4039 | /* WMI_SET_CCA_INDICATIONS_BI_AVG_NUM_EVENTID */ |
| 4040 | struct wmi_set_cca_indications_bi_avg_num_event { |
| 4041 | /* wmi_fw_status */ |
| 4042 | u8 status; |
| 4043 | u8 reserved[3]; |
| 4044 | } __packed; |
| 4045 | |
| 4046 | /* WMI_INTERNAL_FW_SET_CHANNEL */ |
| 4047 | struct wmi_internal_fw_set_channel_event { |
| 4048 | u8 channel_num; |
| 4049 | u8 reserved[3]; |
| 4050 | } __packed; |
| 4051 | |
| 4052 | /* WMI_LINK_STATS_CONFIG_DONE_EVENTID */ |
| 4053 | struct wmi_link_stats_config_done_event { |
| 4054 | /* wmi_fw_status_e */ |
| 4055 | u8 status; |
| 4056 | u8 reserved[3]; |
| 4057 | } __packed; |
| 4058 | |
| 4059 | /* WMI_LINK_STATS_EVENTID */ |
| 4060 | struct wmi_link_stats_event { |
| 4061 | __le64 tsf; |
| 4062 | __le16 payload_size; |
| 4063 | u8 has_next; |
| 4064 | u8 reserved[5]; |
| 4065 | /* a stream of wmi_link_stats_record_s */ |
| 4066 | u8 payload[0]; |
| 4067 | } __packed; |
| 4068 | |
| 4069 | /* WMI_LINK_STATS_EVENT */ |
| 4070 | struct wmi_link_stats_record { |
| 4071 | /* wmi_link_stats_record_type_e */ |
| 4072 | u8 record_type_id; |
| 4073 | u8 reserved; |
| 4074 | __le16 record_size; |
| 4075 | u8 record[0]; |
| 4076 | } __packed; |
| 4077 | |
| 4078 | /* WMI_LINK_STATS_TYPE_BASIC */ |
| 4079 | struct wmi_link_stats_basic { |
| 4080 | u8 cid; |
| 4081 | s8 rssi; |
| 4082 | u8 sqi; |
| 4083 | u8 bf_mcs; |
| 4084 | u8 per_average; |
| 4085 | u8 selected_rfc; |
| 4086 | u8 rx_effective_ant_num; |
| 4087 | u8 my_rx_sector; |
| 4088 | u8 my_tx_sector; |
| 4089 | u8 other_rx_sector; |
| 4090 | u8 other_tx_sector; |
| 4091 | u8 reserved[7]; |
| 4092 | /* 1/4 Db units */ |
| 4093 | __le16 snr; |
| 4094 | __le32 tx_tpt; |
| 4095 | __le32 tx_goodput; |
| 4096 | __le32 rx_goodput; |
| 4097 | __le32 bf_count; |
| 4098 | __le32 rx_bcast_frames; |
| 4099 | } __packed; |
| 4100 | |
| 4101 | /* WMI_LINK_STATS_TYPE_GLOBAL */ |
| 4102 | struct wmi_link_stats_global { |
| 4103 | /* all ack-able frames */ |
| 4104 | __le32 rx_frames; |
| 4105 | /* all ack-able frames */ |
| 4106 | __le32 tx_frames; |
| 4107 | __le32 rx_ba_frames; |
| 4108 | __le32 tx_ba_frames; |
| 4109 | __le32 tx_beacons; |
| 4110 | __le32 rx_mic_errors; |
| 4111 | __le32 rx_crc_errors; |
| 4112 | __le32 tx_fail_no_ack; |
| 4113 | u8 reserved[8]; |
| 4114 | } __packed; |
| 4115 | |
| 4116 | /* WMI_SET_GRANT_MCS_EVENTID */ |
| 4117 | struct wmi_set_grant_mcs_event { |
| 4118 | /* wmi_fw_status */ |
| 4119 | u8 status; |
| 4120 | u8 reserved[3]; |
| 4121 | } __packed; |
| 4122 | |
| 4123 | /* WMI_SET_AP_SLOT_SIZE_EVENTID */ |
| 4124 | struct wmi_set_ap_slot_size_event { |
| 4125 | /* wmi_fw_status */ |
| 4126 | u8 status; |
| 4127 | u8 reserved[3]; |
| 4128 | } __packed; |
| 4129 | |
| 4130 | /* WMI_SET_VRING_PRIORITY_WEIGHT_EVENTID */ |
| 4131 | struct wmi_set_vring_priority_weight_event { |
| 4132 | /* wmi_fw_status */ |
| 4133 | u8 status; |
| 4134 | u8 reserved[3]; |
| 4135 | } __packed; |
| 4136 | |
| 4137 | /* WMI_SET_VRING_PRIORITY_EVENTID */ |
| 4138 | struct wmi_set_vring_priority_event { |
| 4139 | /* wmi_fw_status */ |
| 4140 | u8 status; |
| 4141 | u8 reserved[3]; |
| 4142 | } __packed; |
| 4143 | |
| 4144 | /* WMI_RADAR_PCI_CTRL_BLOCK struct */ |
| 4145 | struct wmi_radar_pci_ctrl_block { |
| 4146 | /* last fw tail address index */ |
| 4147 | __le32 fw_tail_index; |
| 4148 | /* last SW head address index known to FW */ |
| 4149 | __le32 sw_head_index; |
| 4150 | __le32 last_wr_pulse_tsf_low; |
| 4151 | __le32 last_wr_pulse_count; |
| 4152 | __le32 last_wr_in_bytes; |
| 4153 | __le32 last_wr_pulse_id; |
| 4154 | __le32 last_wr_burst_id; |
| 4155 | /* When pre overflow detected, advance sw head in unit of pulses */ |
| 4156 | __le32 sw_head_inc; |
| 4157 | __le32 reserved[8]; |
| 4158 | } __packed; |
| 4159 | |
| 4160 | /* WMI_RBUFCAP_CFG_CMD */ |
| 4161 | struct wmi_rbufcap_cfg_cmd { |
| 4162 | u8 enable; |
| 4163 | u8 reserved; |
| 4164 | /* RBUFCAP indicates rx space unavailable when number of rx |
| 4165 | * descriptors drops below this threshold. Set 0 to use system |
| 4166 | * default |
| 4167 | */ |
| 4168 | __le16 rx_desc_threshold; |
| 4169 | } __packed; |
| 4170 | |
| 4171 | /* WMI_RBUFCAP_CFG_EVENTID */ |
| 4172 | struct wmi_rbufcap_cfg_event { |
| 4173 | /* enum wmi_fw_status */ |
| 4174 | u8 status; |
| 4175 | u8 reserved[3]; |
| 4176 | } __packed; |
| 4177 | |
| 4178 | /* WMI_TEMP_SENSE_ALL_DONE_EVENTID |
| 4179 | * Measure MAC and all radio temperatures |
| 4180 | */ |
| 4181 | struct wmi_temp_sense_all_done_event { |
| 4182 | /* enum wmi_fw_status */ |
| 4183 | u8 status; |
| 4184 | /* Bitmap of connected RFs */ |
| 4185 | u8 rf_bitmap; |
| 4186 | u8 reserved[2]; |
| 4187 | /* Temperature times 1000 (actual temperature will be achieved by |
| 4188 | * dividing the value by 1000). When temperature cannot be read from |
| 4189 | * device return WMI_INVALID_TEMPERATURE |
| 4190 | */ |
| 4191 | __le32 rf_t1000[WMI_MAX_XIF_PORTS_NUM]; |
| 4192 | /* Temperature times 1000 (actual temperature will be achieved by |
| 4193 | * dividing the value by 1000). When temperature cannot be read from |
| 4194 | * device return WMI_INVALID_TEMPERATURE |
| 4195 | */ |
| 4196 | __le32 baseband_t1000; |
| 4197 | } __packed; |
| 4198 | |
| 4199 | #endif /* __WILOCITY_WMI_H__ */ |