xref: /openbmc/linux/drivers/net/wireless/intel/iwlegacy/iwl-spectrum.h (revision 7ac9a364c1721a863ecc6cc9aba66e10114908db)
1*7ac9a364SKalle Valo /******************************************************************************
2*7ac9a364SKalle Valo  *
3*7ac9a364SKalle Valo  * Copyright(c) 2003 - 2011 Intel Corporation. All rights reserved.
4*7ac9a364SKalle Valo  *
5*7ac9a364SKalle Valo  * Portions of this file are derived from the ieee80211 subsystem header files.
6*7ac9a364SKalle Valo  *
7*7ac9a364SKalle Valo  * This program is free software; you can redistribute it and/or modify it
8*7ac9a364SKalle Valo  * under the terms of version 2 of the GNU General Public License as
9*7ac9a364SKalle Valo  * published by the Free Software Foundation.
10*7ac9a364SKalle Valo  *
11*7ac9a364SKalle Valo  * This program is distributed in the hope that it will be useful, but WITHOUT
12*7ac9a364SKalle Valo  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13*7ac9a364SKalle Valo  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
14*7ac9a364SKalle Valo  * more details.
15*7ac9a364SKalle Valo  *
16*7ac9a364SKalle Valo  * You should have received a copy of the GNU General Public License along with
17*7ac9a364SKalle Valo  * this program; if not, write to the Free Software Foundation, Inc.,
18*7ac9a364SKalle Valo  * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19*7ac9a364SKalle Valo  *
20*7ac9a364SKalle Valo  * The full GNU General Public License is included in this distribution in the
21*7ac9a364SKalle Valo  * file called LICENSE.
22*7ac9a364SKalle Valo  *
23*7ac9a364SKalle Valo  * Contact Information:
24*7ac9a364SKalle Valo  *  Intel Linux Wireless <ilw@linux.intel.com>
25*7ac9a364SKalle Valo  * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
26*7ac9a364SKalle Valo  *
27*7ac9a364SKalle Valo  *****************************************************************************/
28*7ac9a364SKalle Valo 
29*7ac9a364SKalle Valo #ifndef __il_spectrum_h__
30*7ac9a364SKalle Valo #define __il_spectrum_h__
31*7ac9a364SKalle Valo enum {				/* ieee80211_basic_report.map */
32*7ac9a364SKalle Valo 	IEEE80211_BASIC_MAP_BSS = (1 << 0),
33*7ac9a364SKalle Valo 	IEEE80211_BASIC_MAP_OFDM = (1 << 1),
34*7ac9a364SKalle Valo 	IEEE80211_BASIC_MAP_UNIDENTIFIED = (1 << 2),
35*7ac9a364SKalle Valo 	IEEE80211_BASIC_MAP_RADAR = (1 << 3),
36*7ac9a364SKalle Valo 	IEEE80211_BASIC_MAP_UNMEASURED = (1 << 4),
37*7ac9a364SKalle Valo 	/* Bits 5-7 are reserved */
38*7ac9a364SKalle Valo 
39*7ac9a364SKalle Valo };
40*7ac9a364SKalle Valo struct ieee80211_basic_report {
41*7ac9a364SKalle Valo 	u8 channel;
42*7ac9a364SKalle Valo 	__le64 start_time;
43*7ac9a364SKalle Valo 	__le16 duration;
44*7ac9a364SKalle Valo 	u8 map;
45*7ac9a364SKalle Valo } __packed;
46*7ac9a364SKalle Valo 
47*7ac9a364SKalle Valo enum {				/* ieee80211_measurement_request.mode */
48*7ac9a364SKalle Valo 	/* Bit 0 is reserved */
49*7ac9a364SKalle Valo 	IEEE80211_MEASUREMENT_ENABLE = (1 << 1),
50*7ac9a364SKalle Valo 	IEEE80211_MEASUREMENT_REQUEST = (1 << 2),
51*7ac9a364SKalle Valo 	IEEE80211_MEASUREMENT_REPORT = (1 << 3),
52*7ac9a364SKalle Valo 	/* Bits 4-7 are reserved */
53*7ac9a364SKalle Valo };
54*7ac9a364SKalle Valo 
55*7ac9a364SKalle Valo enum {
56*7ac9a364SKalle Valo 	IEEE80211_REPORT_BASIC = 0,	/* required */
57*7ac9a364SKalle Valo 	IEEE80211_REPORT_CCA = 1,	/* optional */
58*7ac9a364SKalle Valo 	IEEE80211_REPORT_RPI = 2,	/* optional */
59*7ac9a364SKalle Valo 	/* 3-255 reserved */
60*7ac9a364SKalle Valo };
61*7ac9a364SKalle Valo 
62*7ac9a364SKalle Valo struct ieee80211_measurement_params {
63*7ac9a364SKalle Valo 	u8 channel;
64*7ac9a364SKalle Valo 	__le64 start_time;
65*7ac9a364SKalle Valo 	__le16 duration;
66*7ac9a364SKalle Valo } __packed;
67*7ac9a364SKalle Valo 
68*7ac9a364SKalle Valo struct ieee80211_info_element {
69*7ac9a364SKalle Valo 	u8 id;
70*7ac9a364SKalle Valo 	u8 len;
71*7ac9a364SKalle Valo 	u8 data[0];
72*7ac9a364SKalle Valo } __packed;
73*7ac9a364SKalle Valo 
74*7ac9a364SKalle Valo struct ieee80211_measurement_request {
75*7ac9a364SKalle Valo 	struct ieee80211_info_element ie;
76*7ac9a364SKalle Valo 	u8 token;
77*7ac9a364SKalle Valo 	u8 mode;
78*7ac9a364SKalle Valo 	u8 type;
79*7ac9a364SKalle Valo 	struct ieee80211_measurement_params params[0];
80*7ac9a364SKalle Valo } __packed;
81*7ac9a364SKalle Valo 
82*7ac9a364SKalle Valo struct ieee80211_measurement_report {
83*7ac9a364SKalle Valo 	struct ieee80211_info_element ie;
84*7ac9a364SKalle Valo 	u8 token;
85*7ac9a364SKalle Valo 	u8 mode;
86*7ac9a364SKalle Valo 	u8 type;
87*7ac9a364SKalle Valo 	union {
88*7ac9a364SKalle Valo 		struct ieee80211_basic_report basic[0];
89*7ac9a364SKalle Valo 	} u;
90*7ac9a364SKalle Valo } __packed;
91*7ac9a364SKalle Valo 
92*7ac9a364SKalle Valo #endif
93