Linux-libre 5.4.39-gnu
[librecmc/linux-libre.git] / drivers / net / wireless / ti / wl12xx / event.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * This file is part of wl12xx
4  *
5  * Copyright (C) 2012 Texas Instruments. All rights reserved.
6  */
7
8 #ifndef __WL12XX_EVENT_H__
9 #define __WL12XX_EVENT_H__
10
11 #include "../wlcore/wlcore.h"
12
13 enum {
14         MEASUREMENT_START_EVENT_ID               = BIT(8),
15         MEASUREMENT_COMPLETE_EVENT_ID            = BIT(9),
16         SCAN_COMPLETE_EVENT_ID                   = BIT(10),
17         WFD_DISCOVERY_COMPLETE_EVENT_ID          = BIT(11),
18         AP_DISCOVERY_COMPLETE_EVENT_ID           = BIT(12),
19         RESERVED1                                = BIT(13),
20         PSPOLL_DELIVERY_FAILURE_EVENT_ID         = BIT(14),
21         ROLE_STOP_COMPLETE_EVENT_ID              = BIT(15),
22         RADAR_DETECTED_EVENT_ID                  = BIT(16),
23         CHANNEL_SWITCH_COMPLETE_EVENT_ID         = BIT(17),
24         BSS_LOSE_EVENT_ID                        = BIT(18),
25         REGAINED_BSS_EVENT_ID                    = BIT(19),
26         MAX_TX_RETRY_EVENT_ID                    = BIT(20),
27         DUMMY_PACKET_EVENT_ID                    = BIT(21),
28         SOFT_GEMINI_SENSE_EVENT_ID               = BIT(22),
29         CHANGE_AUTO_MODE_TIMEOUT_EVENT_ID        = BIT(23),
30         SOFT_GEMINI_AVALANCHE_EVENT_ID           = BIT(24),
31         PLT_RX_CALIBRATION_COMPLETE_EVENT_ID     = BIT(25),
32         INACTIVE_STA_EVENT_ID                    = BIT(26),
33         PEER_REMOVE_COMPLETE_EVENT_ID            = BIT(27),
34         PERIODIC_SCAN_COMPLETE_EVENT_ID          = BIT(28),
35         PERIODIC_SCAN_REPORT_EVENT_ID            = BIT(29),
36         BA_SESSION_RX_CONSTRAINT_EVENT_ID        = BIT(30),
37         REMAIN_ON_CHANNEL_COMPLETE_EVENT_ID      = BIT(31),
38 };
39
40 struct wl12xx_event_mailbox {
41         __le32 events_vector;
42         __le32 events_mask;
43         __le32 reserved_1;
44         __le32 reserved_2;
45
46         u8 number_of_scan_results;
47         u8 scan_tag;
48         u8 completed_scan_status;
49         u8 reserved_3;
50
51         u8 soft_gemini_sense_info;
52         u8 soft_gemini_protective_info;
53         s8 rssi_snr_trigger_metric[NUM_OF_RSSI_SNR_TRIGGERS];
54         u8 change_auto_mode_timeout;
55         u8 scheduled_scan_status;
56         u8 reserved4;
57         /* tuned channel (roc) */
58         u8 roc_channel;
59
60         __le16 hlid_removed_bitmap;
61
62         /* bitmap of aged stations (by HLID) */
63         __le16 sta_aging_status;
64
65         /* bitmap of stations (by HLID) which exceeded max tx retries */
66         __le16 sta_tx_retry_exceeded;
67
68         /* discovery completed results */
69         u8 discovery_tag;
70         u8 number_of_preq_results;
71         u8 number_of_prsp_results;
72         u8 reserved_5;
73
74         /* rx ba constraint */
75         u8 role_id; /* 0xFF means any role. */
76         u8 rx_ba_allowed;
77         u8 reserved_6[2];
78
79         /* Channel switch results */
80
81         u8 channel_switch_role_id;
82         u8 channel_switch_status;
83         u8 reserved_7[2];
84
85         u8 ps_poll_delivery_failure_role_ids;
86         u8 stopped_role_ids;
87         u8 started_role_ids;
88
89         u8 reserved_8[9];
90 } __packed;
91
92 int wl12xx_wait_for_event(struct wl1271 *wl, enum wlcore_wait_event event,
93                           bool *timeout);
94 int wl12xx_process_mailbox_events(struct wl1271 *wl);
95
96 #endif
97