1 /* Copyright (c) 2015, The Linux Foundation. All rights reserved. 2 * 3 * Redistribution and use in source and binary forms, with or without 4 * modification, are permitted provided that the following conditions are 5 * met: 6 * * Redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer. 8 * * Redistributions in binary form must reproduce the above 9 * copyright notice, this list of conditions and the following 10 * disclaimer in the documentation and/or other materials provided 11 * with the distribution. 12 * * Neither the name of The Linux Foundation nor the names of its 13 * contributors may be used to endorse or promote products derived 14 * from this software without specific prior written permission. 15 * 16 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 20 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 23 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 26 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 #ifndef WIFILOGGER_EVENT_DEFS_H 30 #define WIFILOGGER_EVENT_DEFS_H 31 32 typedef enum { 33 EVENT_DROP_ID = 0, 34 35 EVENT_WLAN_PE = 0x67A, /* 16 byte payload */ 36 37 /* Events between 0x67b to 0x67f are not used */ 38 39 EVENT_WLAN_ADD_BLOCK_ACK_SUCCESS = 0x67B, /* 11 byte payload */ 40 EVENT_WLAN_ADD_BLOCK_ACK_FAILED = 0x67C, /* 9 byte payload */ 41 42 EVENT_WLAN_EXTSCAN_FEATURE_STARTED = 0xA8E, /* 240 byte payload */ 43 EVENT_WLAN_EXTSCAN_FEATURE_CHANNEL_CONFIG = 0xA8F, /* 243 byte payload */ 44 EVENT_WLAN_EXTSCAN_CYCLE_STARTED = 0xA90, /* 12 byte payload */ 45 EVENT_WLAN_EXTSCAN_CYCLE_COMPLETED = 0xA91, /* 12 byte payload */ 46 EVENT_WLAN_EXTSCAN_BUCKET_STARTED = 0xA92, /* 1 byte payload */ 47 EVENT_WLAN_EXTSCAN_BUCKET_COMPLETED = 0xA93, /* 4 byte payload */ 48 EVENT_WLAN_ROAM_SCAN_STARTED = 0xA94, /* 128 byte payload */ 49 50 51 EVENT_WLAN_ROAM_SCAN_COMPLETE = 0xA95, 52 EVENT_WLAN_ROAM_CANDIDATE_FOUND = 0xA96, 53 EVENT_WLAN_ROAM_SCAN_CONFIG = 0xA97, 54 EVENT_WLAN_BT_COEX_BT_SCO_START = 0xA98, 55 EVENT_WLAN_BT_COEX_BT_SCO_STOP = 0xA99, 56 EVENT_WLAN_BT_COEX_BT_SCAN_START = 0xA9A, 57 EVENT_WLAN_BT_COEX_BT_SCAN_STOP = 0xA9B, 58 EVENT_WLAN_BT_COEX_BT_HID_START = 0xA9C, 59 EVENT_WLAN_BT_COEX_BT_HID_STOP = 0xA9D, 60 EVENT_WLAN_WAKE_LOCK = 0xAA2, /* 96 bytes payload */ 61 EVENT_WLAN_EAPOL = 0xA8D, /* 96 bytes payload */ 62 EVENT_WLAN_EXTSCAN_FEATURE_STOP = 0xAA3, 63 EVENT_WLAN_EXTSCAN_RESULTS_AVAILABLE = 0xAA4, 64 EVENT_WLAN_BEACON_EVENT = 0xAA6, 65 EVENT_WLAN_LOG_COMPLETE = 0xAA7, 66 EVENT_WLAN_LOW_RESOURCE_FAILURE = 0xABB, 67 68 EVENT_MAX_ID = 0x0FFF 69 } event_id_enum_type; 70 71 typedef enum { 72 LOG_DROP_ID = 0, 73 LOG_WLAN_EXTSCAN_CAPABILITIES = 0x18F1, 74 LOG_WLAN_EXTSCAN_FEATURE_STARTED = 0x18F2, 75 } log_id_enum_type; 76 77 typedef enum 78 { 79 WLAN_PE_DIAG_SCAN_REQ_EVENT = 0, 80 WLAN_PE_DIAG_SCAN_ABORT_IND_EVENT, 81 WLAN_PE_DIAG_SCAN_RSP_EVENT, 82 WLAN_PE_DIAG_JOIN_REQ_EVENT, 83 WLAN_PE_DIAG_JOIN_RSP_EVENT, 84 WLAN_PE_DIAG_SETCONTEXT_REQ_EVENT, 85 WLAN_PE_DIAG_SETCONTEXT_RSP_EVENT, 86 WLAN_PE_DIAG_REASSOC_REQ_EVENT, 87 WLAN_PE_DIAG_REASSOC_RSP_EVENT, 88 WLAN_PE_DIAG_AUTH_REQ_EVENT, 89 WLAN_PE_DIAG_AUTH_RSP_EVENT = 10, 90 WLAN_PE_DIAG_DISASSOC_REQ_EVENT, 91 WLAN_PE_DIAG_DISASSOC_RSP_EVENT, 92 WLAN_PE_DIAG_DISASSOC_IND_EVENT, 93 WLAN_PE_DIAG_DISASSOC_CNF_EVENT, 94 WLAN_PE_DIAG_DEAUTH_REQ_EVENT, 95 WLAN_PE_DIAG_DEAUTH_RSP_EVENT, 96 WLAN_PE_DIAG_DEAUTH_IND_EVENT, 97 WLAN_PE_DIAG_START_BSS_REQ_EVENT, 98 WLAN_PE_DIAG_START_BSS_RSP_EVENT, 99 WLAN_PE_DIAG_AUTH_IND_EVENT = 20, 100 WLAN_PE_DIAG_ASSOC_IND_EVENT, 101 WLAN_PE_DIAG_ASSOC_CNF_EVENT, 102 WLAN_PE_DIAG_REASSOC_IND_EVENT, 103 WLAN_PE_DIAG_SWITCH_CHL_REQ_EVENT, 104 WLAN_PE_DIAG_SWITCH_CHL_RSP_EVENT, 105 WLAN_PE_DIAG_STOP_BSS_REQ_EVENT, 106 WLAN_PE_DIAG_STOP_BSS_RSP_EVENT, 107 WLAN_PE_DIAG_DEAUTH_CNF_EVENT, 108 WLAN_PE_DIAG_ADDTS_REQ_EVENT, 109 WLAN_PE_DIAG_ADDTS_RSP_EVENT = 30, 110 WLAN_PE_DIAG_DELTS_REQ_EVENT, 111 WLAN_PE_DIAG_DELTS_RSP_EVENT, 112 WLAN_PE_DIAG_DELTS_IND_EVENT, 113 WLAN_PE_DIAG_ENTER_BMPS_REQ_EVENT, 114 WLAN_PE_DIAG_ENTER_BMPS_RSP_EVENT, 115 WLAN_PE_DIAG_EXIT_BMPS_REQ_EVENT, 116 WLAN_PE_DIAG_EXIT_BMPS_RSP_EVENT, 117 WLAN_PE_DIAG_EXIT_BMPS_IND_EVENT, 118 WLAN_PE_DIAG_ENTER_IMPS_REQ_EVENT, 119 WLAN_PE_DIAG_ENTER_IMPS_RSP_EVENT = 40, 120 WLAN_PE_DIAG_EXIT_IMPS_REQ_EVENT, 121 WLAN_PE_DIAG_EXIT_IMPS_RSP_EVENT, 122 WLAN_PE_DIAG_ENTER_UAPSD_REQ_EVENT, 123 WLAN_PE_DIAG_ENTER_UAPSD_RSP_EVENT, 124 WLAN_PE_DIAG_EXIT_UAPSD_REQ_EVENT, 125 WLAN_PE_DIAG_EXIT_UAPSD_RSP_EVENT, 126 WLAN_PE_DIAG_WOWL_ADD_BCAST_PTRN_EVENT, 127 WLAN_PE_DIAG_WOWL_DEL_BCAST_PTRN_EVENT, 128 WLAN_PE_DIAG_ENTER_WOWL_REQ_EVENT, 129 WLAN_PE_DIAG_ENTER_WOWL_RSP_EVENT = 50, 130 WLAN_PE_DIAG_EXIT_WOWL_REQ_EVENT, 131 WLAN_PE_DIAG_EXIT_WOWL_RSP_EVENT, 132 WLAN_PE_DIAG_HAL_ADDBA_REQ_EVENT, 133 WLAN_PE_DIAG_HAL_ADDBA_RSP_EVENT, 134 WLAN_PE_DIAG_HAL_DELBA_IND_EVENT, 135 WLAN_PE_DIAG_HB_FAILURE_TIMEOUT, 136 WLAN_PE_DIAG_PRE_AUTH_REQ_EVENT, 137 WLAN_PE_DIAG_PRE_AUTH_RSP_EVENT, 138 WLAN_PE_DIAG_PREAUTH_DONE, 139 WLAN_PE_DIAG_REASSOCIATING = 60, 140 WLAN_PE_DIAG_CONNECTED, 141 WLAN_PE_DIAG_ASSOC_REQ_EVENT, 142 WLAN_PE_DIAG_AUTH_COMP_EVENT, 143 WLAN_PE_DIAG_ASSOC_COMP_EVENT, 144 WLAN_PE_DIAG_AUTH_START_EVENT, 145 WLAN_PE_DIAG_ASSOC_START_EVENT, 146 WLAN_PE_DIAG_REASSOC_START_EVENT, 147 WLAN_PE_DIAG_ROAM_AUTH_START_EVENT, 148 WLAN_PE_DIAG_ROAM_AUTH_COMP_EVENT, 149 WLAN_PE_DIAG_ROAM_ASSOC_START_EVENT = 70, 150 WLAN_PE_DIAG_ROAM_ASSOC_COMP_EVENT, 151 WLAN_PE_DIAG_SCAN_COMP_EVENT, 152 WLAN_PE_DIAG_SCAN_RES_FOUND_EVENT, 153 WLAN_PE_DIAG_ASSOC_TIMEOUT, 154 WLAN_PE_DIAG_AUTH_TIMEOUT, 155 } wlan_host_diag_event_type; 156 157 typedef struct wlan_pe_event { 158 char bssid[6]; 159 u16 event_type; 160 u16 sme_state; 161 u16 mlm_state; 162 u16 status; 163 u16 reason_code; 164 } __attribute__((packed)) wlan_pe_event_t; 165 166 typedef enum { 167 WLAN_DRIVER_EAPOL_FRAME_TRANSMIT_REQUESTED = 0, 168 WLAN_DRIVER_EAPOL_FRAME_RECEIVED, 169 } wlan_eapol_event_type; 170 171 #define EAPOL_MASK 0x8013 172 #define EAPOL_M1_MASK 0x8000 173 #define EAPOL_M2_MASK 0x0001 174 #define EAPOL_M3_MASK 0x8013 175 #define EAPOL_M4_MASK 0x0003 176 177 typedef struct wlan_eapol_event { 178 u8 event_sub_type; 179 u8 eapol_packet_type; 180 u16 eapol_key_info; 181 u16 eapol_rate; 182 u8 dest_addr[6]; 183 u8 src_addr[6]; 184 } __attribute__((packed)) wlan_eapol_event_t; 185 186 /*EVENT_WLAN_EXTSCAN_FEATURE_STARTED */ 187 typedef struct wlan_ext_bucket { 188 u8 bucket_id; 189 u8 base_period_multiplier; 190 u16 min_dwell_time_active; 191 u16 max_dwell_time_active; 192 u16 min_dwell_time_passive; 193 u16 max_dwell_time_passive; 194 u8 num_channels; 195 u8 channel_offset; 196 u8 forwarding_flags; 197 u8 channel_band; 198 u32 notify_extscan_events; 199 } __attribute__((packed)) wlan_ext_bucket_t; 200 201 typedef struct { 202 u32 base_period; 203 u32 max_iterations; 204 u32 forwarding_flags; 205 u32 configuration_flags; 206 u32 notify_extscan_events; 207 u32 scan_priority; 208 u32 max_bssids_per_scan_cycle; 209 u32 min_rssi; 210 u32 max_table_usage; 211 u32 min_dwell_time_active; 212 u32 max_dwell_time_active; 213 u32 min_dwell_time_passive; 214 u32 max_dwell_time_passive; 215 u32 min_rest_time; 216 u32 max_rest_time; 217 u32 n_probes; 218 u32 repeat_probe_time; 219 u32 probe_spacing_time; 220 u32 idle_time; 221 u32 max_scan_time; 222 u32 probe_delay; 223 u32 scan_ctrl_flags; 224 u32 burst_duration; 225 u32 num_buckets; 226 wlan_ext_bucket bucket_list[8]; 227 } __attribute__((packed)) wlan_ext_scan_feature_started_payload_type; 228 /*End EVENT_WLAN_EXTSCAN_FEATURE_STARTED*/ 229 230 /*EVENT_WLAN_EXTSCAN_FEATURE_CHANNEL_CONFIG*/ 231 typedef struct { 232 u8 bucket_id; 233 u16 scan_channels[40]; 234 } __attribute__((packed)) wlan_ext_bucket_channels; 235 236 typedef struct { 237 wlan_ext_bucket_channels bucket_list[3]; 238 } __attribute__((packed)) wlan_ext_bucket_channel_config_payload_type; 239 240 /*End EVENT_WLAN_EXTSCAN_FEATURE_CHANNEL_CONFIG*/ 241 242 /*EVENT_WLAN_EXTSCAN_CYCLE_STARTED*/ 243 typedef struct { 244 u32 scan_id; 245 u32 timer_tick; 246 u32 scheduled_bucket_mask; 247 u32 scan_cycle_count; 248 } __attribute__((packed)) wlan_ext_scan_cycle_started_payload_type; 249 /*End EVENT_WLAN_EXTSCAN_CYCLE_STARTED*/ 250 251 /*EVENT_WLAN_EXTSCAN_CYCLE_COMPLETED*/ 252 typedef struct { 253 u32 scan_id; 254 u32 timer_tick; 255 u32 scheduled_bucket_mask; 256 u32 scan_cycle_count; 257 } __attribute__((packed)) wlan_ext_scan_cycle_completed_payload_type; 258 /*End EVENT_WLAN_EXTSCAN_CYCLE_COMPLETED*/ 259 260 /*EVENT_WLAN_EXTSCAN_BUCKET_STARTED*/ 261 typedef struct { 262 u8 bucket_id; 263 } __attribute__((packed)) wlan_ext_scan_bucket_started_payload_type; 264 /*End EVENT_WLAN_EXTSCAN_BUCKET_STARTED*/ 265 266 /*EVENT_WLAN_EXTSCAN_BUCKET_COMPLETED*/ 267 typedef struct { 268 u8 bucket_id; 269 } __attribute__((packed)) wlan_ext_scan_bucket_completed_payload_type; 270 /*End EVENT_WLAN_EXTSCAN_BUCKET_COMPLETED*/ 271 272 /*EVENT_WLAN_ROAM_SCAN_STARTED*/ 273 typedef struct { 274 u32 scan_id; 275 u32 roam_scan_flags; 276 u32 cur_rssi; 277 u16 scan_params[18]; 278 u16 scan_channels[40]; // first 40 channels only 279 } __attribute__((packed)) wlan_roam_scan_started_payload_type; 280 /*End EVENT_WLAN_ROAM_SCAN_STARTED*/ 281 282 /*EVENT_WLAN_ROAM_SCAN_COMPLETE*/ 283 typedef struct { 284 u32 scan_id; 285 u32 reason; 286 u32 completion_flags; 287 u32 num_candidate; 288 u32 flags; 289 } __attribute__((packed)) wlan_roam_scan_complete_payload_type; 290 /*End EVENT_WLAN_ROAM_SCAN_COMPLETE*/ 291 292 /*EVENT_WLAN_ROAM_CANDIDATE_FOUND*/ 293 typedef struct { 294 u8 channel; 295 u8 rssi; 296 u8 bssid[6]; 297 u8 ssid[33]; 298 u8 auth_mode; 299 u8 ucast_cipher; 300 u8 mcast_cipher; 301 } __attribute__((packed)) wlan_roam_candidate_found_payload_type; 302 /*End EVENT_WLAN_ROAM_CANDIDATE_FOUND*/ 303 304 /*EVENT_WLAN_ROAM_SCAN_CONFIG*/ 305 typedef struct { 306 u32 flags; 307 u32 roam_scan_config[8]; 308 } __attribute__((packed)) wlan_roam_scan_config_payload_type; 309 /*End EVENT_WLAN_ROAM_SCAN_CONFIG*/ 310 311 /* EVENT_WLAN_BT_COEX_BT_SCO_START */ 312 typedef struct { 313 u8 link_id; 314 u8 link_state; 315 u8 link_role; 316 u8 link_type; 317 u16 Tsco; 318 u8 Rsco; 319 } __attribute__((packed)) wlan_bt_coex_bt_sco_start_payload_type; 320 /* End EVENT_WLAN_BT_COEX_BT_SCO_START */ 321 322 /* EVENT_WLAN_BT_COEX_BT_SCO_STOP */ 323 typedef struct { 324 u8 link_id; 325 u8 link_state; 326 u8 link_role; 327 u8 link_type; 328 u16 Tsco; 329 u8 Rsco; 330 } __attribute__((packed)) wlan_bt_coex_bt_sco_stop_payload_type; 331 /* End EVENT_WLAN_BT_COEX_BT_SCO_STOP */ 332 333 /* EVENT_WLAN_BT_COEX_BT_SCAN_START */ 334 typedef struct { 335 u8 scan_type; 336 u8 scan_bitmap; 337 } __attribute__((packed)) wlan_bt_coex_bt_scan_start_payload_type; 338 339 /* End EVENT_WLAN_BT_COEX_BT_SCAN_START */ 340 341 /* EVENT_WLAN_BT_COEX_BT_SCAN_STOP */ 342 typedef struct { 343 u8 scan_type; 344 u8 scan_bitmap; 345 } __attribute__((packed)) wlan_bt_coex_bt_scan_stop_payload_type; 346 /* End EVENT_WLAN_BT_COEX_BT_SCAN_STOP */ 347 348 /* EVENT_WIFI_BT_COEX_BT_HID_START */ 349 typedef struct { 350 u8 link_id; 351 u8 link_state; 352 u8 link_role; 353 u8 Tsniff; 354 u8 attempts; 355 } __attribute__((packed)) wlan_bt_coex_bt_hid_start_payload_type; 356 /* End EVENT_WIFI_BT_COEX_BT_HID_START */ 357 358 /* EVENT_WIFI_BT_COEX_BT_HID_STOP */ 359 typedef struct { 360 u8 link_id; 361 u8 link_state; 362 u8 link_role; 363 u8 Tsniff; 364 u8 attempts; 365 } __attribute__((packed)) wlan_bt_coex_bt_hid_stop_payload_type; 366 /* End EVENT_WIFI_BT_COEX_BT_HID_STOP */ 367 368 /* EVENT_WLAN_EXTSCAN_FEATURE_STOP */ 369 typedef struct { 370 u32 request_id; 371 } __attribute__((packed)) wlan_ext_scan_feature_stop_payload_type; 372 /* End EVENT_WLAN_EXTSCAN_FEATURE_STOP */ 373 374 /* EVENT_WLAN_EXTSCAN_RESULTS_AVAILABLE */ 375 typedef struct { 376 u32 request_id; 377 u32 table_type; 378 u32 entries_in_use; 379 u32 maximum_entries; 380 u32 scan_count_after_getResults; 381 u8 threshold_num_scans; 382 } __attribute__((packed)) wlan_ext_scan_results_available_payload_type; 383 /* End EVENT_WLAN_EXTSCAN_RESULTS_AVAILABLE */ 384 385 /* Log LOG_WLAN_EXTSCAN_CAPABILITIES */ 386 typedef struct { 387 u32 header; 388 u32 request_id; 389 u32 requestor_id; 390 u32 vdev_id; 391 u32 num_extscan_cache_tables; 392 u32 num_wlan_change_monitor_tables; 393 u32 num_hotlist_monitor_tables; 394 u32 rtt_one_sided_supported; 395 u32 rtt_11v_supported; 396 u32 rtt_ftm_supported; 397 u32 num_extscan_cache_capabilities; 398 u32 num_extscan_wlan_change_capabilities; 399 u32 num_extscan_hotlist_capabilities; 400 u32 num_roam_ssid_whitelist; 401 u32 num_roam_bssid_blacklist; 402 u32 num_roam_bssid_preferred_list; 403 u32 num_extscan_hotlist_ssid; 404 u32 num_epno_networks; 405 } __attribute__((packed)) wlan_extscan_capabilities_event_fixed_param; 406 407 typedef struct { 408 u32 header; 409 u32 table_id; 410 u32 scan_cache_entry_size; 411 u32 max_scan_cache_entries; 412 u32 max_buckets; 413 u32 max_bssid_per_scan; 414 u32 max_table_usage_threshold; 415 } __attribute__((packed)) wlan_extscan_cache_capabilities; 416 417 typedef struct { 418 u32 tlv_header; 419 u32 table_id; 420 u32 wlan_hotlist_entry_size; 421 u32 max_hotlist_entries; 422 } __attribute__((packed)) wlan_extscan_hotlist_monitor_capabilities; 423 424 typedef struct { 425 u32 request_id; 426 wlan_extscan_capabilities_event_fixed_param extscan_capabilities; 427 wlan_extscan_cache_capabilities extscan_cache_capabilities; 428 wlan_extscan_hotlist_monitor_capabilities extscan_hotlist_monitor_capabilities; 429 } __attribute__((packed)) wlan_ext_scan_capabilities_payload_type; 430 /* End LOG_WLAN_EXTSCAN_CAPABILITIES */ 431 432 /* EVENT_WLAN_BEACON_RECEIVED */ 433 typedef struct { 434 u8 bssid[6]; 435 u32 beacon_rssi; 436 } __attribute__((packed)) wlan_beacon_received_payload_type; 437 /* End EVENT_WLAN_BEACON_RECEIVED */ 438 439 typedef struct { 440 u8 ucBaPeerMac[6]; 441 u8 ucBaTid; 442 u8 ucBaBufferSize; 443 u16 ucBaSSN; 444 u8 fInitiator; 445 } __attribute__((packed)) wlan_add_block_ack_success_payload_type; 446 447 /* EVENT_WLAN_ADD_BLOCK_ACK_FAILED */ 448 typedef struct { 449 u8 ucBaPeerMac[6]; 450 u8 ucBaTid; 451 u8 ucReasonCode; 452 u8 fInitiator; 453 } __attribute__((packed)) wlan_add_block_ack_failed_payload_type; 454 455 typedef enum 456 { 457 WIFI_EVENT_MEMORY_FAILURE, 458 } resource_failure_type; 459 460 typedef struct wlan_low_resource_failure_event 461 { 462 resource_failure_type event_sub_type; 463 } __attribute__((packed)) wlan_low_resource_failure_event_t; 464 465 #endif /* WIFILOGGER_EVENT_DEFS_H */ 466