116da78b7SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
27ac9a364SKalle Valo /******************************************************************************
37ac9a364SKalle Valo  *
47ac9a364SKalle Valo  * Copyright(c) 2003 - 2011 Intel Corporation. All rights reserved.
57ac9a364SKalle Valo  *
67ac9a364SKalle Valo  * Portions of this file are derived from the ieee80211 subsystem header files.
77ac9a364SKalle Valo  *
87ac9a364SKalle Valo  * Contact Information:
97ac9a364SKalle Valo  *  Intel Linux Wireless <ilw@linux.intel.com>
107ac9a364SKalle Valo  * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
117ac9a364SKalle Valo  *
127ac9a364SKalle Valo  *****************************************************************************/
137ac9a364SKalle Valo 
147ac9a364SKalle Valo #ifndef __il_spectrum_h__
157ac9a364SKalle Valo #define __il_spectrum_h__
167ac9a364SKalle Valo enum {				/* ieee80211_basic_report.map */
177ac9a364SKalle Valo 	IEEE80211_BASIC_MAP_BSS = (1 << 0),
187ac9a364SKalle Valo 	IEEE80211_BASIC_MAP_OFDM = (1 << 1),
197ac9a364SKalle Valo 	IEEE80211_BASIC_MAP_UNIDENTIFIED = (1 << 2),
207ac9a364SKalle Valo 	IEEE80211_BASIC_MAP_RADAR = (1 << 3),
217ac9a364SKalle Valo 	IEEE80211_BASIC_MAP_UNMEASURED = (1 << 4),
227ac9a364SKalle Valo 	/* Bits 5-7 are reserved */
237ac9a364SKalle Valo 
247ac9a364SKalle Valo };
257ac9a364SKalle Valo struct ieee80211_basic_report {
267ac9a364SKalle Valo 	u8 channel;
277ac9a364SKalle Valo 	__le64 start_time;
287ac9a364SKalle Valo 	__le16 duration;
297ac9a364SKalle Valo 	u8 map;
307ac9a364SKalle Valo } __packed;
317ac9a364SKalle Valo 
327ac9a364SKalle Valo enum {				/* ieee80211_measurement_request.mode */
337ac9a364SKalle Valo 	/* Bit 0 is reserved */
347ac9a364SKalle Valo 	IEEE80211_MEASUREMENT_ENABLE = (1 << 1),
357ac9a364SKalle Valo 	IEEE80211_MEASUREMENT_REQUEST = (1 << 2),
367ac9a364SKalle Valo 	IEEE80211_MEASUREMENT_REPORT = (1 << 3),
377ac9a364SKalle Valo 	/* Bits 4-7 are reserved */
387ac9a364SKalle Valo };
397ac9a364SKalle Valo 
407ac9a364SKalle Valo enum {
417ac9a364SKalle Valo 	IEEE80211_REPORT_BASIC = 0,	/* required */
427ac9a364SKalle Valo 	IEEE80211_REPORT_CCA = 1,	/* optional */
437ac9a364SKalle Valo 	IEEE80211_REPORT_RPI = 2,	/* optional */
447ac9a364SKalle Valo 	/* 3-255 reserved */
457ac9a364SKalle Valo };
467ac9a364SKalle Valo 
477ac9a364SKalle Valo struct ieee80211_measurement_params {
487ac9a364SKalle Valo 	u8 channel;
497ac9a364SKalle Valo 	__le64 start_time;
507ac9a364SKalle Valo 	__le16 duration;
517ac9a364SKalle Valo } __packed;
527ac9a364SKalle Valo 
537ac9a364SKalle Valo struct ieee80211_info_element {
547ac9a364SKalle Valo 	u8 id;
557ac9a364SKalle Valo 	u8 len;
568863b121SGustavo A. R. Silva 	u8 data[];
577ac9a364SKalle Valo } __packed;
587ac9a364SKalle Valo 
597ac9a364SKalle Valo struct ieee80211_measurement_request {
607ac9a364SKalle Valo 	struct ieee80211_info_element ie;
617ac9a364SKalle Valo 	u8 token;
627ac9a364SKalle Valo 	u8 mode;
637ac9a364SKalle Valo 	u8 type;
648863b121SGustavo A. R. Silva 	struct ieee80211_measurement_params params[];
657ac9a364SKalle Valo } __packed;
667ac9a364SKalle Valo 
677ac9a364SKalle Valo struct ieee80211_measurement_report {
687ac9a364SKalle Valo 	struct ieee80211_info_element ie;
697ac9a364SKalle Valo 	u8 token;
707ac9a364SKalle Valo 	u8 mode;
717ac9a364SKalle Valo 	u8 type;
727ac9a364SKalle Valo 	union {
737ac9a364SKalle Valo 		struct ieee80211_basic_report basic[0];
747ac9a364SKalle Valo 	} u;
757ac9a364SKalle Valo } __packed;
767ac9a364SKalle Valo 
777ac9a364SKalle Valo #endif
78