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