blob: 94cfa5b174fcc6a8e1b974f2c4bc77e11e9df57f [file] [log] [blame]
Greg Kroah-Hartmanc55519f2008-12-17 17:04:23 -08001/*
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
28#ifndef __SPECTRUM_H__
29#define __SPECTRUM_H__
30
31#include "rtmp_type.h"
32#include "spectrum_def.h"
33
34typedef struct PACKED _TPC_REPORT_INFO
35{
36 UINT8 TxPwr;
37 UINT8 LinkMargin;
38} TPC_REPORT_INFO, *PTPC_REPORT_INFO;
39
40typedef struct PACKED _CH_SW_ANN_INFO
41{
42 UINT8 ChSwMode;
43 UINT8 Channel;
44 UINT8 ChSwCnt;
45} CH_SW_ANN_INFO, *PCH_SW_ANN_INFO;
46
47typedef union PACKED _MEASURE_REQ_MODE
48{
49#ifdef RT_BIG_ENDIAN
50 struct PACKED
51 {
52 UINT8 Rev1:4;
53 UINT8 Report:1;
54 UINT8 Request:1;
55 UINT8 Enable:1;
56 UINT8 Rev0:1;
57 } field;
58#else
59 struct PACKED
60 {
61 UINT8 Rev0:1;
62 UINT8 Enable:1;
63 UINT8 Request:1;
64 UINT8 Report:1;
65 UINT8 Rev1:4;
66 } field;
67#endif // RT_BIG_ENDIAN //
68 UINT8 word;
69} MEASURE_REQ_MODE, *PMEASURE_REQ_MODE;
70
71typedef struct PACKED _MEASURE_REQ
72{
73 UINT8 ChNum;
74 UINT64 MeasureStartTime;
75 UINT16 MeasureDuration;
76} MEASURE_REQ, *PMEASURE_REQ;
77
78typedef struct PACKED _MEASURE_REQ_INFO
79{
80 UINT8 Token;
81 MEASURE_REQ_MODE ReqMode;
82 UINT8 ReqType;
83 MEASURE_REQ MeasureReq;
84} MEASURE_REQ_INFO, *PMEASURE_REQ_INFO;
85
86typedef union PACKED _MEASURE_BASIC_REPORT_MAP
87{
88#ifdef RT_BIG_ENDIAN
89 struct PACKED
90 {
91 UINT8 Rev:3;
92 UINT8 Unmeasure:1;
93 UINT8 Radar:1;
94 UINT8 UnidentifiedSignal:1;
95 UINT8 OfdmPreamble:1;
96 UINT8 BSS:1;
97 } field;
98#else
99 struct PACKED
100 {
101 UINT8 BSS:1;
102 UINT8 OfdmPreamble:1;
103 UINT8 UnidentifiedSignal:1;
104 UINT8 Radar:1;
105 UINT8 Unmeasure:1;
106 UINT8 Rev:3;
107 } field;
108#endif // RT_BIG_ENDIAN //
109 UINT8 word;
110} MEASURE_BASIC_REPORT_MAP, *PMEASURE_BASIC_REPORT_MAP;
111
112typedef struct PACKED _MEASURE_BASIC_REPORT
113{
114 UINT8 ChNum;
115 UINT64 MeasureStartTime;
116 UINT16 MeasureDuration;
117 MEASURE_BASIC_REPORT_MAP Map;
118} MEASURE_BASIC_REPORT, *PMEASURE_BASIC_REPORT;
119
120typedef struct PACKED _MEASURE_CCA_REPORT
121{
122 UINT8 ChNum;
123 UINT64 MeasureStartTime;
124 UINT16 MeasureDuration;
125 UINT8 CCA_Busy_Fraction;
126} MEASURE_CCA_REPORT, *PMEASURE_CCA_REPORT;
127
128typedef struct PACKED _MEASURE_RPI_REPORT
129{
130 UINT8 ChNum;
131 UINT64 MeasureStartTime;
132 UINT16 MeasureDuration;
133 UINT8 RPI_Density[8];
134} MEASURE_RPI_REPORT, *PMEASURE_RPI_REPORT;
135
136typedef union PACKED _MEASURE_REPORT_MODE
137{
138 struct PACKED
139 {
140#ifdef RT_BIG_ENDIAN
141 UINT8 Rev:5;
142 UINT8 Refused:1;
143 UINT8 Incapable:1;
144 UINT8 Late:1;
145#else
146 UINT8 Late:1;
147 UINT8 Incapable:1;
148 UINT8 Refused:1;
149 UINT8 Rev:5;
150#endif // RT_BIG_ENDIAN //
151 } field;
152 UINT8 word;
153} MEASURE_REPORT_MODE, *PMEASURE_REPORT_MODE;
154
155typedef struct PACKED _MEASURE_REPORT_INFO
156{
157 UINT8 Token;
158 MEASURE_REPORT_MODE ReportMode;
159 UINT8 ReportType;
160 UINT8 Octect[0];
161} MEASURE_REPORT_INFO, *PMEASURE_REPORT_INFO;
162
163typedef struct PACKED _QUIET_INFO
164{
165 UINT8 QuietCnt;
166 UINT8 QuietPeriod;
167 UINT8 QuietDuration;
168 UINT8 QuietOffset;
169} QUIET_INFO, *PQUIET_INFO;
170
171/*
172 ==========================================================================
173 Description:
174 Prepare Measurement request action frame and enqueue it into
175 management queue waiting for transmition.
176
177 Parametrs:
178 1. the destination mac address of the frame.
179
180 Return : None.
181 ==========================================================================
182 */
183VOID EnqueueMeasurementReq(
184 IN PRTMP_ADAPTER pAd,
185 IN PUCHAR pDA,
186 IN UINT8 MeasureToken,
187 IN UINT8 MeasureReqMode,
188 IN UINT8 MeasureReqType,
189 IN UINT8 MeasureCh,
190 IN UINT16 MeasureDuration);
191
192/*
193 ==========================================================================
194 Description:
195 Prepare Measurement report action frame and enqueue it into
196 management queue waiting for transmition.
197
198 Parametrs:
199 1. the destination mac address of the frame.
200
201 Return : None.
202 ==========================================================================
203 */
204VOID EnqueueMeasurementRep(
205 IN PRTMP_ADAPTER pAd,
206 IN PUCHAR pDA,
207 IN UINT8 DialogToken,
208 IN UINT8 MeasureToken,
209 IN UINT8 MeasureReqMode,
210 IN UINT8 MeasureReqType,
211 IN UINT8 ReportInfoLen,
212 IN PUINT8 pReportInfo);
213
214/*
215 ==========================================================================
216 Description:
217 Prepare TPC Request action frame and enqueue it into
218 management queue waiting for transmition.
219
220 Parametrs:
221 1. the destination mac address of the frame.
222
223 Return : None.
224 ==========================================================================
225 */
226VOID EnqueueTPCReq(
227 IN PRTMP_ADAPTER pAd,
228 IN PUCHAR pDA,
229 IN UCHAR DialogToken);
230
231/*
232 ==========================================================================
233 Description:
234 Prepare TPC Report action frame and enqueue it into
235 management queue waiting for transmition.
236
237 Parametrs:
238 1. the destination mac address of the frame.
239
240 Return : None.
241 ==========================================================================
242 */
243VOID EnqueueTPCRep(
244 IN PRTMP_ADAPTER pAd,
245 IN PUCHAR pDA,
246 IN UINT8 DialogToken,
247 IN UINT8 TxPwr,
248 IN UINT8 LinkMargin);
249
250/*
251 ==========================================================================
252 Description:
253 Prepare Channel Switch Announcement action frame and enqueue it into
254 management queue waiting for transmition.
255
256 Parametrs:
257 1. the destination mac address of the frame.
258 2. Channel switch announcement mode.
259 2. a New selected channel.
260
261 Return : None.
262 ==========================================================================
263 */
264VOID EnqueueChSwAnn(
265 IN PRTMP_ADAPTER pAd,
266 IN PUCHAR pDA,
267 IN UINT8 ChSwMode,
268 IN UINT8 NewCh);
269
270/*
271 ==========================================================================
272 Description:
273 Spectrun action frames Handler such as channel switch annoucement,
274 measurement report, measurement request actions frames.
275
276 Parametrs:
277 Elme - MLME message containing the received frame
278
279 Return : None.
280 ==========================================================================
281 */
282VOID PeerSpectrumAction(
283 IN PRTMP_ADAPTER pAd,
284 IN MLME_QUEUE_ELEM *Elem);
285
286/*
287 ==========================================================================
288 Description:
289
290 Parametrs:
291
292 Return : None.
293 ==========================================================================
294 */
295INT Set_MeasureReq_Proc(
296 IN PRTMP_ADAPTER pAd,
297 IN PUCHAR arg);
298
299INT Set_TpcReq_Proc(
300 IN PRTMP_ADAPTER pAd,
301 IN PUCHAR arg);
302
303VOID MeasureReqTabInit(
304 IN PRTMP_ADAPTER pAd);
305
306VOID MeasureReqTabExit(
307 IN PRTMP_ADAPTER pAd);
308
309VOID TpcReqTabInit(
310 IN PRTMP_ADAPTER pAd);
311
312VOID TpcReqTabExit(
313 IN PRTMP_ADAPTER pAd);
314
315VOID NotifyChSwAnnToPeerAPs(
316 IN PRTMP_ADAPTER pAd,
317 IN PUCHAR pRA,
318 IN PUCHAR pTA,
319 IN UINT8 ChSwMode,
320 IN UINT8 Channel);
321#endif // __SPECTRUM_H__ //
322