]> bbs.cooldavid.org Git - net-next-2.6.git/blob - drivers/staging/rt2860/spectrum_def.h
4ebe5f50cc2ff00c532b7ff50332e9f6f48bfbf0
[net-next-2.6.git] / drivers / staging / rt2860 / spectrum_def.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     Module Name:
28         spectrum_def.h
29
30     Abstract:
31     Handle association related requests either from WSTA or from local MLME
32
33     Revision History:
34     Who          When          What
35     ---------    ----------    ----------------------------------------------
36         Fonchi Wu    2008                  created for 802.11h
37  */
38
39 #ifndef __SPECTRUM_DEF_H__
40 #define __SPECTRUM_DEF_H__
41
42 #define MAX_MEASURE_REQ_TAB_SIZE                32
43 #define MAX_HASH_MEASURE_REQ_TAB_SIZE   MAX_MEASURE_REQ_TAB_SIZE
44
45 #define MAX_TPC_REQ_TAB_SIZE                    32
46 #define MAX_HASH_TPC_REQ_TAB_SIZE               MAX_TPC_REQ_TAB_SIZE
47
48 #define MIN_RCV_PWR                             100     /* Negative value ((dBm) */
49
50 #define TPC_REQ_AGE_OUT                 500     /* ms */
51 #define MQ_REQ_AGE_OUT                  500     /* ms */
52
53 #define TPC_DIALOGTOKEN_HASH_INDEX(_DialogToken)        ((_DialogToken) % MAX_HASH_TPC_REQ_TAB_SIZE)
54 #define MQ_DIALOGTOKEN_HASH_INDEX(_DialogToken)         ((_DialogToken) % MAX_MEASURE_REQ_TAB_SIZE)
55
56 typedef struct _MEASURE_REQ_ENTRY {
57         struct _MEASURE_REQ_ENTRY *pNext;
58         ULONG lastTime;
59         BOOLEAN Valid;
60         UINT8 DialogToken;
61         UINT8 MeasureDialogToken[3];    // 0:basic measure, 1: CCA measure, 2: RPI_Histogram measure.
62 } MEASURE_REQ_ENTRY, *PMEASURE_REQ_ENTRY;
63
64 typedef struct _MEASURE_REQ_TAB {
65         UCHAR Size;
66         PMEASURE_REQ_ENTRY Hash[MAX_HASH_MEASURE_REQ_TAB_SIZE];
67         MEASURE_REQ_ENTRY Content[MAX_MEASURE_REQ_TAB_SIZE];
68 } MEASURE_REQ_TAB, *PMEASURE_REQ_TAB;
69
70 typedef struct _TPC_REQ_ENTRY {
71         struct _TPC_REQ_ENTRY *pNext;
72         ULONG lastTime;
73         BOOLEAN Valid;
74         UINT8 DialogToken;
75 } TPC_REQ_ENTRY, *PTPC_REQ_ENTRY;
76
77 typedef struct _TPC_REQ_TAB {
78         UCHAR Size;
79         PTPC_REQ_ENTRY Hash[MAX_HASH_TPC_REQ_TAB_SIZE];
80         TPC_REQ_ENTRY Content[MAX_TPC_REQ_TAB_SIZE];
81 } TPC_REQ_TAB, *PTPC_REQ_TAB;
82
83 /* The regulatory information */
84 typedef struct _DOT11_CHANNEL_SET {
85         UCHAR NumberOfChannels;
86         UINT8 MaxTxPwr;
87         UCHAR ChannelList[16];
88 } DOT11_CHANNEL_SET, *PDOT11_CHANNEL_SET;
89
90 typedef struct _DOT11_REGULATORY_INFORMATION {
91         UCHAR RegulatoryClass;
92         DOT11_CHANNEL_SET ChannelSet;
93 } DOT11_REGULATORY_INFORMATION, *PDOT11_REGULATORY_INFORMATION;
94
95 #define RM_TPC_REQ                              0
96 #define RM_MEASURE_REQ                  1
97
98 #define RM_BASIC                                0
99 #define RM_CCA                                  1
100 #define RM_RPI_HISTOGRAM                2
101 #define RM_CH_LOAD                              3
102 #define RM_NOISE_HISTOGRAM              4
103
104 typedef struct PACKED _TPC_REPORT_INFO {
105         UINT8 TxPwr;
106         UINT8 LinkMargin;
107 } TPC_REPORT_INFO, *PTPC_REPORT_INFO;
108
109 typedef struct PACKED _CH_SW_ANN_INFO {
110         UINT8 ChSwMode;
111         UINT8 Channel;
112         UINT8 ChSwCnt;
113 } CH_SW_ANN_INFO, *PCH_SW_ANN_INFO;
114
115 typedef union PACKED _MEASURE_REQ_MODE {
116         struct PACKED {
117                 UINT8 Parallel:1;
118                 UINT8 Enable:1;
119                 UINT8 Request:1;
120                 UINT8 Report:1;
121                 UINT8 DurationMandatory:1;
122                  UINT8:3;
123         } field;
124         UINT8 word;
125 } MEASURE_REQ_MODE, *PMEASURE_REQ_MODE;
126
127 typedef struct PACKED _MEASURE_REQ {
128         UINT8 ChNum;
129         UINT64 MeasureStartTime;
130         UINT16 MeasureDuration;
131 } MEASURE_REQ, *PMEASURE_REQ;
132
133 typedef struct PACKED _MEASURE_REQ_INFO {
134         UINT8 Token;
135         MEASURE_REQ_MODE ReqMode;
136         UINT8 ReqType;
137         UINT8 Oct[0];
138 } MEASURE_REQ_INFO, *PMEASURE_REQ_INFO;
139
140 typedef union PACKED _MEASURE_BASIC_REPORT_MAP {
141         struct PACKED {
142                 UINT8 BSS:1;
143
144                 UINT8 OfdmPreamble:1;
145                 UINT8 UnidentifiedSignal:1;
146                 UINT8 Radar:1;
147                 UINT8 Unmeasure:1;
148                 UINT8 Rev:3;
149         } field;
150         UINT8 word;
151 } MEASURE_BASIC_REPORT_MAP, *PMEASURE_BASIC_REPORT_MAP;
152
153 typedef struct PACKED _MEASURE_BASIC_REPORT {
154         UINT8 ChNum;
155         UINT64 MeasureStartTime;
156         UINT16 MeasureDuration;
157         MEASURE_BASIC_REPORT_MAP Map;
158 } MEASURE_BASIC_REPORT, *PMEASURE_BASIC_REPORT;
159
160 typedef struct PACKED _MEASURE_CCA_REPORT {
161         UINT8 ChNum;
162         UINT64 MeasureStartTime;
163         UINT16 MeasureDuration;
164         UINT8 CCA_Busy_Fraction;
165 } MEASURE_CCA_REPORT, *PMEASURE_CCA_REPORT;
166
167 typedef struct PACKED _MEASURE_RPI_REPORT {
168         UINT8 ChNum;
169         UINT64 MeasureStartTime;
170         UINT16 MeasureDuration;
171         UINT8 RPI_Density[8];
172 } MEASURE_RPI_REPORT, *PMEASURE_RPI_REPORT;
173
174 typedef union PACKED _MEASURE_REPORT_MODE {
175         struct PACKED {
176                 UINT8 Late:1;
177                 UINT8 Incapable:1;
178                 UINT8 Refused:1;
179                 UINT8 Rev:5;
180         } field;
181         UINT8 word;
182 } MEASURE_REPORT_MODE, *PMEASURE_REPORT_MODE;
183
184 typedef struct PACKED _MEASURE_REPORT_INFO {
185         UINT8 Token;
186         UINT8 ReportMode;
187         UINT8 ReportType;
188         UINT8 Octect[0];
189 } MEASURE_REPORT_INFO, *PMEASURE_REPORT_INFO;
190
191 typedef struct PACKED _QUIET_INFO {
192         UINT8 QuietCnt;
193         UINT8 QuietPeriod;
194         UINT16 QuietDuration;
195         UINT16 QuietOffset;
196 } QUIET_INFO, *PQUIET_INFO;
197
198 #endif // __SPECTRUM_DEF_H__ //