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