• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *************************************************************************
3  * Ralink Tech Inc.
4  * 5F., No.36, Taiyuan St., Jhubei City,
5  * Hsinchu County 302,
6  * Taiwan, R.O.C.
7  *
8  * (c) Copyright 2002-2007, Ralink Technology, Inc.
9  *
10  * This program is free software; you can redistribute it and/or modify  *
11  * it under the terms of the GNU General Public License as published by  *
12  * the Free Software Foundation; either version 2 of the License, or     *
13  * (at your option) any later version.                                   *
14  *                                                                       *
15  * This program is distributed in the hope that it will be useful,       *
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
18  * GNU General Public License for more details.                          *
19  *                                                                       *
20  * You should have received a copy of the GNU General Public License     *
21  * along with this program; if not, write to the                         *
22  * Free Software Foundation, Inc.,                                       *
23  * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
24  *                                                                       *
25  *************************************************************************
26 
27 	Module Name:
28 	aironet.h
29 
30 	Abstract:
31 
32 	Revision History:
33 	Who			When			What
34 	--------	----------		----------------------------------------------
35 	Name		Date			Modification logs
36 	Paul Lin	04-06-15		Initial
37 */
38 
39 #ifndef	__AIRONET_H__
40 #define	__AIRONET_H__
41 
42 // Measurement Type definition
43 #define	MSRN_TYPE_UNUSED				0
44 #define	MSRN_TYPE_CHANNEL_LOAD_REQ		1
45 #define	MSRN_TYPE_NOISE_HIST_REQ		2
46 #define	MSRN_TYPE_BEACON_REQ			3
47 #define	MSRN_TYPE_FRAME_REQ				4
48 
49 // Scan Mode in Beacon Request
50 #define	MSRN_SCAN_MODE_PASSIVE			0
51 #define	MSRN_SCAN_MODE_ACTIVE			1
52 #define	MSRN_SCAN_MODE_BEACON_TABLE		2
53 
54 // PHY type definition for Aironet beacon report, CCX 2 table 36-9
55 #define	PHY_FH							1
56 #define	PHY_DSS							2
57 #define	PHY_UNUSED						3
58 #define	PHY_OFDM						4
59 #define	PHY_HR_DSS						5
60 #define	PHY_ERP							6
61 
62 // RPI table in dBm
63 #define	RPI_0			0			//	Power <= -87
64 #define	RPI_1			1			//	-87 < Power <= -82
65 #define	RPI_2			2			//	-82 < Power <= -77
66 #define	RPI_3			3			//	-77 < Power <= -72
67 #define	RPI_4			4			//	-72 < Power <= -67
68 #define	RPI_5			5			//	-67 < Power <= -62
69 #define	RPI_6			6			//	-62 < Power <= -57
70 #define	RPI_7			7			//	-57 < Power
71 
72 // Cisco Aironet IAPP definetions
73 #define	AIRONET_IAPP_TYPE					0x32
74 #define	AIRONET_IAPP_SUBTYPE_REQUEST		0x01
75 #define	AIRONET_IAPP_SUBTYPE_REPORT			0x81
76 
77 // Measurement Request detail format
78 typedef	struct	_MEASUREMENT_REQUEST	{
79 	UCHAR	Channel;
80 	UCHAR	ScanMode;			// Use only in beacon request, other requests did not use this field
81 	USHORT	Duration;
82 }	MEASUREMENT_REQUEST, *PMEASUREMENT_REQUEST;
83 
84 // Beacon Measurement Report
85 // All these field might change to UCHAR, because we didn't do anything to these report.
86 // We copy all these beacons and report to CCX 2 AP.
87 typedef	struct	_BEACON_REPORT	{
88 	UCHAR	Channel;
89 	UCHAR	Spare;
90 	USHORT	Duration;
91 	UCHAR	PhyType;			// Definiation is listed above table 36-9
92 	UCHAR	RxPower;
93 	UCHAR	BSSID[6];
94 	UCHAR	ParentTSF[4];
95 	UCHAR	TargetTSF[8];
96 	USHORT	BeaconInterval;
97 	USHORT	CapabilityInfo;
98 }	BEACON_REPORT, *PBEACON_REPORT;
99 
100 // Frame Measurement Report (Optional)
101 typedef	struct	_FRAME_REPORT	{
102 	UCHAR	Channel;
103 	UCHAR	Spare;
104 	USHORT	Duration;
105 	UCHAR	TA;
106 	UCHAR	BSSID[6];
107 	UCHAR	RSSI;
108 	UCHAR	Count;
109 }	FRAME_REPORT, *PFRAME_REPORT;
110 
111 #pragma pack(1)
112 // Channel Load Report
113 typedef	struct	_CHANNEL_LOAD_REPORT	{
114 	UCHAR	Channel;
115 	UCHAR	Spare;
116 	USHORT	Duration;
117 	UCHAR	CCABusy;
118 }	CHANNEL_LOAD_REPORT, *PCHANNEL_LOAD_REPORT;
119 #pragma pack()
120 
121 // Nosie Histogram Report
122 typedef	struct	_NOISE_HIST_REPORT	{
123 	UCHAR	Channel;
124 	UCHAR	Spare;
125 	USHORT	Duration;
126 	UCHAR	Density[8];
127 }	NOISE_HIST_REPORT, *PNOISE_HIST_REPORT;
128 
129 // Radio Management Capability element
130 typedef	struct	_RADIO_MANAGEMENT_CAPABILITY	{
131 	UCHAR	Eid;				// TODO: Why the Eid is 1 byte, not normal 2 bytes???
132 	UCHAR	Length;
133 	UCHAR	AironetOui[3];		// AIronet OUI (00 40 96)
134 	UCHAR	Type;				// Type / Version
135 	USHORT	Status;				// swap16 required
136 }	RADIO_MANAGEMENT_CAPABILITY, *PRADIO_MANAGEMENT_CAPABILITY;
137 
138 // Measurement Mode Bit definition
139 typedef	struct	_MEASUREMENT_MODE	{
140 	UCHAR	Rsvd:4;
141 	UCHAR	Report:1;
142 	UCHAR	NotUsed:1;
143 	UCHAR	Enable:1;
144 	UCHAR	Parallel:1;
145 }	MEASUREMENT_MODE, *PMEASUREMENT_MODE;
146 
147 // Measurement Request element, This is little endian mode
148 typedef	struct	_MEASUREMENT_REQUEST_ELEMENT	{
149 	USHORT				Eid;
150 	USHORT				Length;				// swap16 required
151 	USHORT				Token;				// non-zero unique token
152 	UCHAR				Mode;				// Measurement Mode
153 	UCHAR				Type;				// Measurement type
154 }	MEASUREMENT_REQUEST_ELEMENT, *PMEASUREMENT_REQUEST_ELEMENT;
155 
156 // Measurement Report element, This is little endian mode
157 typedef	struct	_MEASUREMENT_REPORT_ELEMENT	{
158 	USHORT				Eid;
159 	USHORT				Length;				// swap16 required
160 	USHORT				Token;				// non-zero unique token
161 	UCHAR				Mode;				// Measurement Mode
162 	UCHAR				Type;				// Measurement type
163 }	MEASUREMENT_REPORT_ELEMENT, *PMEASUREMENT_REPORT_ELEMENT;
164 
165 // Cisco Aironet IAPP Frame Header, Network byte order used
166 typedef	struct	_AIRONET_IAPP_HEADER {
167 	UCHAR	CiscoSnapHeader[8];	// 8 bytes Cisco snap header
168 	USHORT	Length;				// IAPP ID & length, remember to swap16 in LE system
169 	UCHAR	Type;				// IAPP type
170 	UCHAR	SubType;			// IAPP subtype
171 	UCHAR	DA[6];				// Destination MAC address
172 	UCHAR	SA[6];				// Source MAC address
173 	USHORT	Token;				// Dialog token, no need to swap16 since it is for yoken usage only
174 }	AIRONET_IAPP_HEADER, *PAIRONET_IAPP_HEADER;
175 
176 // Radio Measurement Request frame
177 typedef	struct	_AIRONET_RM_REQUEST_FRAME	{
178     AIRONET_IAPP_HEADER	IAPP;			// Common header
179 	UCHAR				Delay;			// Activation Delay
180 	UCHAR				Offset;			// Measurement offset
181 }	AIRONET_RM_REQUEST_FRAME, *PAIRONET_RM_REQUEST_FRAME;
182 
183 // Radio Measurement Report frame
184 typedef	struct	_AIRONET_RM_REPORT_FRAME	{
185     AIRONET_IAPP_HEADER	IAPP;			// Common header
186 }	AIRONET_RM_REPORT_FRAME, *PAIRONET_RM_REPORT_FRAME;
187 
188 // Saved element request actions which will saved in StaCfg.
189 typedef	struct	_RM_REQUEST_ACTION	{
190 	MEASUREMENT_REQUEST_ELEMENT	ReqElem;		// Saved request element
191 	MEASUREMENT_REQUEST			Measurement;	// Saved measurement within the request element
192 }	RM_REQUEST_ACTION, *PRM_REQUEST_ACTION;
193 
194 // CCX administration control
195 typedef	union	_CCX_CONTROL	{
196 	struct	{
197 		UINT32		Enable:1;			// Enable CCX2
198 		UINT32		LeapEnable:1;		// Enable LEAP at CCX2
199 		UINT32		RMEnable:1;			// Radio Measurement Enable
200 		UINT32		DCRMEnable:1;		// Non serving channel Radio Measurement enable
201 		UINT32		QOSEnable:1;		// Enable QOS for CCX 2.0 support
202 		UINT32		FastRoamEnable:1;	// Enable fast roaming
203 		UINT32		Rsvd:2;				// Not used
204 		UINT32		dBmToRoam:8;		// the condition to roam when receiving Rssi less than this value. It's negative value.
205 		UINT32		TuLimit:16;			// Limit for different channel scan
206 	}	field;
207 	UINT32			word;
208 }	CCX_CONTROL, *PCCX_CONTROL;
209 
210 #endif	// __AIRONET_H__
211