1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * This file is part of wl18xx |
4 | * |
5 | * Copyright (C) 2012 Texas Instruments. All rights reserved. |
6 | */ |
7 | |
8 | #ifndef __WL18XX_EVENT_H__ |
9 | #define __WL18XX_EVENT_H__ |
10 | |
11 | #include "../wlcore/wlcore.h" |
12 | |
13 | enum { |
14 | SCAN_COMPLETE_EVENT_ID = BIT(8), |
15 | RADAR_DETECTED_EVENT_ID = BIT(9), |
16 | CHANNEL_SWITCH_COMPLETE_EVENT_ID = BIT(10), |
17 | BSS_LOSS_EVENT_ID = BIT(11), |
18 | MAX_TX_FAILURE_EVENT_ID = BIT(12), |
19 | DUMMY_PACKET_EVENT_ID = BIT(13), |
20 | INACTIVE_STA_EVENT_ID = BIT(14), |
21 | PEER_REMOVE_COMPLETE_EVENT_ID = BIT(15), |
22 | PERIODIC_SCAN_COMPLETE_EVENT_ID = BIT(16), |
23 | BA_SESSION_RX_CONSTRAINT_EVENT_ID = BIT(17), |
24 | REMAIN_ON_CHANNEL_COMPLETE_EVENT_ID = BIT(18), |
25 | DFS_CHANNELS_CONFIG_COMPLETE_EVENT = BIT(19), |
26 | PERIODIC_SCAN_REPORT_EVENT_ID = BIT(20), |
27 | RX_BA_WIN_SIZE_CHANGE_EVENT_ID = BIT(21), |
28 | SMART_CONFIG_SYNC_EVENT_ID = BIT(22), |
29 | SMART_CONFIG_DECODE_EVENT_ID = BIT(23), |
30 | TIME_SYNC_EVENT_ID = BIT(24), |
31 | FW_LOGGER_INDICATION = BIT(25), |
32 | }; |
33 | |
34 | enum wl18xx_radar_types { |
35 | RADAR_TYPE_NONE, |
36 | RADAR_TYPE_REGULAR, |
37 | RADAR_TYPE_CHIRP |
38 | }; |
39 | |
40 | struct wl18xx_event_mailbox { |
41 | __le32 events_vector; |
42 | |
43 | u8 number_of_scan_results; |
44 | u8 number_of_sched_scan_results; |
45 | |
46 | __le16 channel_switch_role_id_bitmap; |
47 | |
48 | s8 [NUM_OF_RSSI_SNR_TRIGGERS]; |
49 | |
50 | /* bitmap of removed links */ |
51 | __le32 hlid_removed_bitmap; |
52 | |
53 | /* rx ba constraint */ |
54 | __le16 rx_ba_role_id_bitmap; /* 0xfff means any role. */ |
55 | __le16 rx_ba_allowed_bitmap; |
56 | |
57 | /* bitmap of roc completed (by role id) */ |
58 | __le16 roc_completed_bitmap; |
59 | |
60 | /* bitmap of stations (by role id) with bss loss */ |
61 | __le16 bss_loss_bitmap; |
62 | |
63 | /* bitmap of stations (by HLID) which exceeded max tx retries */ |
64 | __le16 tx_retry_exceeded_bitmap; |
65 | |
66 | /* time sync high msb*/ |
67 | __le16 time_sync_tsf_high_msb; |
68 | |
69 | /* bitmap of inactive stations (by HLID) */ |
70 | __le16 inactive_sta_bitmap; |
71 | |
72 | /* time sync high lsb*/ |
73 | __le16 time_sync_tsf_high_lsb; |
74 | |
75 | /* rx BA win size indicated by RX_BA_WIN_SIZE_CHANGE_EVENT_ID */ |
76 | u8 rx_ba_role_id; |
77 | u8 rx_ba_link_id; |
78 | u8 rx_ba_win_size; |
79 | u8 padding; |
80 | |
81 | /* smart config */ |
82 | u8 sc_ssid_len; |
83 | u8 sc_pwd_len; |
84 | u8 sc_token_len; |
85 | u8 padding1; |
86 | u8 sc_ssid[32]; |
87 | u8 sc_pwd[64]; |
88 | u8 sc_token[32]; |
89 | |
90 | /* smart config sync channel */ |
91 | u8 sc_sync_channel; |
92 | u8 sc_sync_band; |
93 | |
94 | /* time sync low msb*/ |
95 | __le16 time_sync_tsf_low_msb; |
96 | |
97 | /* radar detect */ |
98 | u8 radar_channel; |
99 | u8 radar_type; |
100 | |
101 | /* time sync low lsb*/ |
102 | __le16 time_sync_tsf_low_lsb; |
103 | |
104 | } __packed; |
105 | |
106 | int wl18xx_wait_for_event(struct wl1271 *wl, enum wlcore_wait_event event, |
107 | bool *timeout); |
108 | int wl18xx_process_mailbox_events(struct wl1271 *wl); |
109 | |
110 | #endif |
111 | |