Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / drivers / net / wireless / intel / iwlegacy / iwl-spectrum.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /******************************************************************************
3  *
4  * Copyright(c) 2003 - 2011 Intel Corporation. All rights reserved.
5  *
6  * Portions of this file are derived from the ieee80211 subsystem header files.
7  *
8  * Contact Information:
9  *  Intel Linux Wireless <ilw@linux.intel.com>
10  * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
11  *
12  *****************************************************************************/
13
14 #ifndef __il_spectrum_h__
15 #define __il_spectrum_h__
16 enum {                          /* ieee80211_basic_report.map */
17         IEEE80211_BASIC_MAP_BSS = (1 << 0),
18         IEEE80211_BASIC_MAP_OFDM = (1 << 1),
19         IEEE80211_BASIC_MAP_UNIDENTIFIED = (1 << 2),
20         IEEE80211_BASIC_MAP_RADAR = (1 << 3),
21         IEEE80211_BASIC_MAP_UNMEASURED = (1 << 4),
22         /* Bits 5-7 are reserved */
23
24 };
25 struct ieee80211_basic_report {
26         u8 channel;
27         __le64 start_time;
28         __le16 duration;
29         u8 map;
30 } __packed;
31
32 enum {                          /* ieee80211_measurement_request.mode */
33         /* Bit 0 is reserved */
34         IEEE80211_MEASUREMENT_ENABLE = (1 << 1),
35         IEEE80211_MEASUREMENT_REQUEST = (1 << 2),
36         IEEE80211_MEASUREMENT_REPORT = (1 << 3),
37         /* Bits 4-7 are reserved */
38 };
39
40 enum {
41         IEEE80211_REPORT_BASIC = 0,     /* required */
42         IEEE80211_REPORT_CCA = 1,       /* optional */
43         IEEE80211_REPORT_RPI = 2,       /* optional */
44         /* 3-255 reserved */
45 };
46
47 struct ieee80211_measurement_params {
48         u8 channel;
49         __le64 start_time;
50         __le16 duration;
51 } __packed;
52
53 struct ieee80211_info_element {
54         u8 id;
55         u8 len;
56         u8 data[0];
57 } __packed;
58
59 struct ieee80211_measurement_request {
60         struct ieee80211_info_element ie;
61         u8 token;
62         u8 mode;
63         u8 type;
64         struct ieee80211_measurement_params params[0];
65 } __packed;
66
67 struct ieee80211_measurement_report {
68         struct ieee80211_info_element ie;
69         u8 token;
70         u8 mode;
71         u8 type;
72         union {
73                 struct ieee80211_basic_report basic[0];
74         } u;
75 } __packed;
76
77 #endif