162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/******************************************************************************
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci * Copyright(c) 2003 - 2011 Intel Corporation. All rights reserved.
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Portions of this file are derived from the ieee80211 subsystem header files.
762306a36Sopenharmony_ci *
862306a36Sopenharmony_ci * Contact Information:
962306a36Sopenharmony_ci *  Intel Linux Wireless <ilw@linux.intel.com>
1062306a36Sopenharmony_ci * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
1162306a36Sopenharmony_ci *
1262306a36Sopenharmony_ci *****************************************************************************/
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#ifndef __il_spectrum_h__
1562306a36Sopenharmony_ci#define __il_spectrum_h__
1662306a36Sopenharmony_cienum {				/* ieee80211_basic_report.map */
1762306a36Sopenharmony_ci	IEEE80211_BASIC_MAP_BSS = (1 << 0),
1862306a36Sopenharmony_ci	IEEE80211_BASIC_MAP_OFDM = (1 << 1),
1962306a36Sopenharmony_ci	IEEE80211_BASIC_MAP_UNIDENTIFIED = (1 << 2),
2062306a36Sopenharmony_ci	IEEE80211_BASIC_MAP_RADAR = (1 << 3),
2162306a36Sopenharmony_ci	IEEE80211_BASIC_MAP_UNMEASURED = (1 << 4),
2262306a36Sopenharmony_ci	/* Bits 5-7 are reserved */
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci};
2562306a36Sopenharmony_cistruct ieee80211_basic_report {
2662306a36Sopenharmony_ci	u8 channel;
2762306a36Sopenharmony_ci	__le64 start_time;
2862306a36Sopenharmony_ci	__le16 duration;
2962306a36Sopenharmony_ci	u8 map;
3062306a36Sopenharmony_ci} __packed;
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_cienum {				/* ieee80211_measurement_request.mode */
3362306a36Sopenharmony_ci	/* Bit 0 is reserved */
3462306a36Sopenharmony_ci	IEEE80211_MEASUREMENT_ENABLE = (1 << 1),
3562306a36Sopenharmony_ci	IEEE80211_MEASUREMENT_REQUEST = (1 << 2),
3662306a36Sopenharmony_ci	IEEE80211_MEASUREMENT_REPORT = (1 << 3),
3762306a36Sopenharmony_ci	/* Bits 4-7 are reserved */
3862306a36Sopenharmony_ci};
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_cienum {
4162306a36Sopenharmony_ci	IEEE80211_REPORT_BASIC = 0,	/* required */
4262306a36Sopenharmony_ci	IEEE80211_REPORT_CCA = 1,	/* optional */
4362306a36Sopenharmony_ci	IEEE80211_REPORT_RPI = 2,	/* optional */
4462306a36Sopenharmony_ci	/* 3-255 reserved */
4562306a36Sopenharmony_ci};
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_cistruct ieee80211_measurement_params {
4862306a36Sopenharmony_ci	u8 channel;
4962306a36Sopenharmony_ci	__le64 start_time;
5062306a36Sopenharmony_ci	__le16 duration;
5162306a36Sopenharmony_ci} __packed;
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_cistruct ieee80211_info_element {
5462306a36Sopenharmony_ci	u8 id;
5562306a36Sopenharmony_ci	u8 len;
5662306a36Sopenharmony_ci	u8 data[];
5762306a36Sopenharmony_ci} __packed;
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_cistruct ieee80211_measurement_request {
6062306a36Sopenharmony_ci	struct ieee80211_info_element ie;
6162306a36Sopenharmony_ci	u8 token;
6262306a36Sopenharmony_ci	u8 mode;
6362306a36Sopenharmony_ci	u8 type;
6462306a36Sopenharmony_ci	struct ieee80211_measurement_params params[];
6562306a36Sopenharmony_ci} __packed;
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_cistruct ieee80211_measurement_report {
6862306a36Sopenharmony_ci	struct ieee80211_info_element ie;
6962306a36Sopenharmony_ci	u8 token;
7062306a36Sopenharmony_ci	u8 mode;
7162306a36Sopenharmony_ci	u8 type;
7262306a36Sopenharmony_ci	union {
7362306a36Sopenharmony_ci		struct ieee80211_basic_report basic[0];
7462306a36Sopenharmony_ci	} u;
7562306a36Sopenharmony_ci} __packed;
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci#endif
78