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
32typedef 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
71typedef 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
77typedef 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
157typedef 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
166typedef 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
177typedef 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 */
187typedef 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
201typedef 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*/
231typedef struct {
232    u8 bucket_id;
233    u16 scan_channels[40];
234} __attribute__((packed)) wlan_ext_bucket_channels;
235
236typedef 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*/
243typedef 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*/
252typedef 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*/
261typedef 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*/
267typedef 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*/
273typedef 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*/
283typedef 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*/
293typedef 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*/
305typedef 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 */
312typedef 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 */
323typedef 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 */
334typedef 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 */
342typedef 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 */
349typedef 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 */
359typedef 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 */
369typedef 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 */
375typedef 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 */
386typedef 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
407typedef 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
417typedef 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
424typedef 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 */
433typedef struct {
434    u8 bssid[6];
435    u32 beacon_rssi;
436} __attribute__((packed)) wlan_beacon_received_payload_type;
437/* End EVENT_WLAN_BEACON_RECEIVED */
438
439typedef 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 */
448typedef 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
455typedef enum
456{
457    WIFI_EVENT_MEMORY_FAILURE,
458} resource_failure_type;
459
460typedef 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