2 ** $Id: //Department/DaVinci/BRANCHES/MT662X_593X_WIFI_DRIVER_V2_3/include/mgmt/rlm_domain.h#1 $
5 /*! \file "rlm_domain.h"
9 /*******************************************************************************
10 * Copyright (c) 2009 MediaTek Inc.
12 * All rights reserved. Copying, compilation, modification, distribution
13 * or any other use whatsoever of this material is strictly prohibited
14 * except in accordance with a Software License Agreement with
16 ********************************************************************************
19 /*******************************************************************************
22 * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND
23 * AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK
24 * SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE
25 * PROVIDED TO BUYER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY
26 * DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
27 * LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
28 * PARTICULAR PURPOSE OR NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE
29 * ANY WARRANTY WHATSOEVER WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY
30 * WHICH MAY BE USED BY, INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK
31 * SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY
32 * WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE
33 * FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S SPECIFICATION OR TO
34 * CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
36 * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
37 * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL
38 * BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT
39 * ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY
40 * BUYER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
42 * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
43 * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT
44 * OF LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING
45 * THEREOF AND RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN
46 * FRANCISCO, CA, UNDER THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE
48 ********************************************************************************
52 ** $Log: rlm_domain.h $
56 * Change the function prototype of rlmDomainGetChnlList()
59 * [WCXRP00000969] [MT6620 Wi-Fi][Driver][FW] Channel list for 5G band based on country code
60 * Use new fields ucChannelListMap and ucChannelListIndex in NVRAM
63 * [WCXRP00000969] [MT6620 Wi-Fi][Driver][FW] Channel list for 5G band based on country code
67 * [WCXRP00000756] [MT6620 Wi-Fi][Driver] 1. AIS follow channel of BOW 2. Provide legal channel function
68 * Provide legal channel function based on domain
71 * [WCXRP00000238] MT6620 Wi-Fi][Driver][FW] Support regulation domain setting from NVRAM and supplicant
72 * 1. Country code is from NVRAM or supplicant
73 * 2. Change band definition in CMD/EVENT.
77 * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
80 * [WPD00003841][LITE Driver] Migrate RLM/CNM to host driver
81 * 1st draft code for RLM module
83 * 02 23 2010 kevin.huang
84 * [BORA00000603][WIFISYS] [New Feature] AAA Module Support
85 * Add support scan channel 1~14 and update scan result's frequency infou1rwduu`wvpghlqg|n`slk+mpdkb
88 * [BORA00000018]Integrate WIFI part into BORA for the 1st time
89 * Provide query function about full channle list.
92 * [BORA00000018] Integrate WIFI part into BORA for the 1st time
93 * Declare public rDomainInfo
101 /*******************************************************************************
102 * C O M P I L E R F L A G S
103 ********************************************************************************
106 /*******************************************************************************
107 * E X T E R N A L R E F E R E N C E S
108 ********************************************************************************
111 /*******************************************************************************
113 ********************************************************************************
115 #define MAX_SUBBAND_NUM 6
118 #define COUNTRY_CODE_NULL ((UINT_16)0x0)
120 /* ISO/IEC 3166-1 two-character country codes */
121 #define COUNTRY_CODE_AG (((UINT_16) 'A' << 8) | (UINT_16) 'G') /* Antigua/Barbuda */
122 #define COUNTRY_CODE_AI (((UINT_16) 'A' << 8) | (UINT_16) 'I') /* Anguilla */
123 #define COUNTRY_CODE_AR (((UINT_16) 'A' << 8) | (UINT_16) 'T') /* Argentina */
124 #define COUNTRY_CODE_AT (((UINT_16) 'A' << 8) | (UINT_16) 'T') /* Austria */
125 #define COUNTRY_CODE_AU (((UINT_16) 'A' << 8) | (UINT_16) 'U') /* Australia */
126 #define COUNTRY_CODE_AW (((UINT_16) 'A' << 8) | (UINT_16) 'W') /* Aruba */
127 #define COUNTRY_CODE_BB (((UINT_16) 'B' << 8) | (UINT_16) 'B') /* Barbados */
128 #define COUNTRY_CODE_BE (((UINT_16) 'B' << 8) | (UINT_16) 'E') /* Belgium */
129 #define COUNTRY_CODE_BM (((UINT_16) 'B' << 8) | (UINT_16) 'M') /* Bermuda */
130 #define COUNTRY_CODE_BO (((UINT_16) 'B' << 8) | (UINT_16) 'O') /* Bolivia */
131 #define COUNTRY_CODE_BR (((UINT_16) 'B' << 8) | (UINT_16) 'R') /* Brazil */
132 #define COUNTRY_CODE_BS (((UINT_16) 'B' << 8) | (UINT_16) 'S') /* Bahamas */
133 #define COUNTRY_CODE_BY (((UINT_16) 'B' << 8) | (UINT_16) 'Y') /* Belarus */
134 #define COUNTRY_CODE_CA (((UINT_16) 'C' << 8) | (UINT_16) 'A') /* Canada */
135 #define COUNTRY_CODE_CH (((UINT_16) 'C' << 8) | (UINT_16) 'H') /* Switzerland */
136 #define COUNTRY_CODE_CL (((UINT_16) 'C' << 8) | (UINT_16) 'L') /* Chile */
137 #define COUNTRY_CODE_CN (((UINT_16) 'C' << 8) | (UINT_16) 'N') /* China */
138 #define COUNTRY_CODE_CO (((UINT_16) 'C' << 8) | (UINT_16) 'O') /* Colombia */
139 #define COUNTRY_CODE_CR (((UINT_16) 'C' << 8) | (UINT_16) 'R') /* Costa Rica */
140 #define COUNTRY_CODE_CU (((UINT_16) 'C' << 8) | (UINT_16) 'U') /* Cuba */
141 #define COUNTRY_CODE_DE (((UINT_16) 'D' << 8) | (UINT_16) 'E') /* Germany */
142 #define COUNTRY_CODE_DK (((UINT_16) 'D' << 8) | (UINT_16) 'K') /* Denmark */
143 #define COUNTRY_CODE_DM (((UINT_16) 'D' << 8) | (UINT_16) 'M') /* Dominica */
144 #define COUNTRY_CODE_DO (((UINT_16) 'D' << 8) | (UINT_16) 'O') /* Dominican Republic */
145 #define COUNTRY_CODE_EC (((UINT_16) 'E' << 8) | (UINT_16) 'C') /* Ecuador */
146 #define COUNTRY_CODE_EG (((UINT_16) 'E' << 8) | (UINT_16) 'G') /* Egypt */
147 #define COUNTRY_CODE_ES (((UINT_16) 'E' << 8) | (UINT_16) 'S') /* Spain */
148 #define COUNTRY_CODE_EU (((UINT_16) 'E' << 8) | (UINT_16) 'U') /* ETSI (Europe) */
149 #define COUNTRY_CODE_FI (((UINT_16) 'F' << 8) | (UINT_16) 'I') /* Finland */
150 #define COUNTRY_CODE_FR (((UINT_16) 'F' << 8) | (UINT_16) 'R') /* France */
151 #define COUNTRY_CODE_GB (((UINT_16) 'G' << 8) | (UINT_16) 'B') /* United Kingdom */
152 #define COUNTRY_CODE_GD (((UINT_16) 'G' << 8) | (UINT_16) 'D') /* Grenada */
153 #define COUNTRY_CODE_GR (((UINT_16) 'G' << 8) | (UINT_16) 'R') /* Greece */
154 #define COUNTRY_CODE_GY (((UINT_16) 'G' << 8) | (UINT_16) 'Y') /* Guyana */
155 #define COUNTRY_CODE_HK (((UINT_16) 'H' << 8) | (UINT_16) 'K') /* Hong Kong */
156 #define COUNTRY_CODE_HT (((UINT_16) 'H' << 8) | (UINT_16) 'T') /* Haiti */
157 #define COUNTRY_CODE_HN (((UINT_16) 'H' << 8) | (UINT_16) 'N') /* Honduras */
158 #define COUNTRY_CODE_ID (((UINT_16) 'I' << 8) | (UINT_16) 'D') /* Indonesia */
159 #define COUNTRY_CODE_IE (((UINT_16) 'I' << 8) | (UINT_16) 'E') /* Ireland */
160 #define COUNTRY_CODE_IL (((UINT_16) 'I' << 8) | (UINT_16) 'L') /* Israel */
161 #define COUNTRY_CODE_IN (((UINT_16) 'I' << 8) | (UINT_16) 'N') /* India */
162 #define COUNTRY_CODE_IR (((UINT_16) 'I' << 8) | (UINT_16) 'R') /* Iran */
163 #define COUNTRY_CODE_IS (((UINT_16) 'I' << 8) | (UINT_16) 'S') /* Iceland */
164 #define COUNTRY_CODE_IT (((UINT_16) 'I' << 8) | (UINT_16) 'T') /* Italy */
165 #define COUNTRY_CODE_JM (((UINT_16) 'J' << 8) | (UINT_16) 'M') /* Jamaica */
166 #define COUNTRY_CODE_JO (((UINT_16) 'J' << 8) | (UINT_16) 'O') /* Jordan */
167 #define COUNTRY_CODE_JP (((UINT_16) 'J' << 8) | (UINT_16) 'P') /* Japan */
168 #define COUNTRY_CODE_KN (((UINT_16) 'K' << 8) | (UINT_16) 'N') /* Saint Kitts and Nevis */
169 #define COUNTRY_CODE_KR (((UINT_16) 'K' << 8) | (UINT_16) 'R') /* South Korea */
170 #define COUNTRY_CODE_KW (((UINT_16) 'K' << 8) | (UINT_16) 'W') /* Kuwait */
171 #define COUNTRY_CODE_LC (((UINT_16) 'L' << 8) | (UINT_16) 'C') /* Saint Lucia */
172 #define COUNTRY_CODE_LI (((UINT_16) 'L' << 8) | (UINT_16) 'I') /* Liechtenstein */
173 #define COUNTRY_CODE_LK (((UINT_16) 'L' << 8) | (UINT_16) 'K') /* Sri Lanka */
174 #define COUNTRY_CODE_LU (((UINT_16) 'L' << 8) | (UINT_16) 'U') /* Luxembourg */
175 #define COUNTRY_CODE_MA (((UINT_16) 'M' << 8) | (UINT_16) 'A') /* Morocco */
176 #define COUNTRY_CODE_MD (((UINT_16) 'M' << 8) | (UINT_16) 'D') /* Moldova */
177 #define COUNTRY_CODE_MX (((UINT_16) 'M' << 8) | (UINT_16) 'X') /* Mexico */
178 #define COUNTRY_CODE_MY (((UINT_16) 'M' << 8) | (UINT_16) 'Y') /* Malaysia */
179 #define COUNTRY_CODE_NI (((UINT_16) 'N' << 8) | (UINT_16) 'I') /* Nicaragua */
180 #define COUNTRY_CODE_NL (((UINT_16) 'N' << 8) | (UINT_16) 'L') /* Netherlands */
181 #define COUNTRY_CODE_NO (((UINT_16) 'N' << 8) | (UINT_16) 'O') /* Norway */
182 #define COUNTRY_CODE_NZ (((UINT_16) 'N' << 8) | (UINT_16) 'Z') /* New Zealand */
183 #define COUNTRY_CODE_OM (((UINT_16) 'O' << 8) | (UINT_16) 'M') /* Oman */
184 #define COUNTRY_CODE_PE (((UINT_16) 'P' << 8) | (UINT_16) 'E') /* Peru */
185 #define COUNTRY_CODE_PG (((UINT_16) 'P' << 8) | (UINT_16) 'G') /* Papua New Guinea */
186 #define COUNTRY_CODE_PH (((UINT_16) 'P' << 8) | (UINT_16) 'H') /* Philippines */
187 #define COUNTRY_CODE_PK (((UINT_16) 'P' << 8) | (UINT_16) 'K') /* Pakistan */
188 #define COUNTRY_CODE_PR (((UINT_16) 'P' << 8) | (UINT_16) 'R') /* Puerto Rico */
189 #define COUNTRY_CODE_PT (((UINT_16) 'P' << 8) | (UINT_16) 'T') /* Portugal */
190 #define COUNTRY_CODE_PY (((UINT_16) 'P' << 8) | (UINT_16) 'Y') /* Paraguay */
191 #define COUNTRY_CODE_PZ (((UINT_16) 'P' << 8) | (UINT_16) 'Z') /* Panama */
192 #define COUNTRY_CODE_RU (((UINT_16) 'R' << 8) | (UINT_16) 'U') /* Russian */
193 #define COUNTRY_CODE_SA (((UINT_16) 'S' << 8) | (UINT_16) 'A') /* Saudi Arabia */
194 #define COUNTRY_CODE_SE (((UINT_16) 'S' << 8) | (UINT_16) 'E') /* Sweden */
195 #define COUNTRY_CODE_SG (((UINT_16) 'S' << 8) | (UINT_16) 'G') /* Singapore */
196 #define COUNTRY_CODE_SR (((UINT_16) 'S' << 8) | (UINT_16) 'R') /* Suriname */
197 #define COUNTRY_CODE_TW (((UINT_16) 'T' << 8) | (UINT_16) 'W') /* Taiwan */
198 #define COUNTRY_CODE_TH (((UINT_16) 'T' << 8) | (UINT_16) 'H') /* Thailand */
199 #define COUNTRY_CODE_TR (((UINT_16) 'T' << 8) | (UINT_16) 'R') /* Turkey */
200 #define COUNTRY_CODE_TT (((UINT_16) 'T' << 8) | (UINT_16) 'T') /* Trinidad */
201 #define COUNTRY_CODE_UA (((UINT_16) 'U' << 8) | (UINT_16) 'A') /* Ukraine */
202 #define COUNTRY_CODE_US (((UINT_16) 'U' << 8) | (UINT_16) 'S') /* United States */
203 #define COUNTRY_CODE_UY (((UINT_16) 'U' << 8) | (UINT_16) 'Y') /* Uruguay */
204 #define COUNTRY_CODE_VC (((UINT_16) 'V' << 8) | (UINT_16) 'C') /* Saint Vincent */
205 #define COUNTRY_CODE_VE (((UINT_16) 'V' << 8) | (UINT_16) 'E') /* Venezuela */
206 #define COUNTRY_CODE_VN (((UINT_16) 'V' << 8) | (UINT_16) 'N') /* Vietnam */
208 /* dot11RegDomainsSupportValue */
209 #define MIB_REG_DOMAIN_FCC 0x10 /* FCC (US) */
210 #define MIB_REG_DOMAIN_IC 0x20 /* IC or DOC (Canada) */
211 #define MIB_REG_DOMAIN_ETSI 0x30 /* ETSI (Europe) */
212 #define MIB_REG_DOMAIN_SPAIN 0x31 /* Spain */
213 #define MIB_REG_DOMAIN_FRANCE 0x32 /* France */
214 #define MIB_REG_DOMAIN_JAPAN 0x40 /* MPHPT (Japan) */
215 #define MIB_REG_DOMAIN_OTHER 0x00 /* other */
218 /*******************************************************************************
220 ********************************************************************************
223 /* Define channel offset in unit of 5MHz bandwidth */
224 typedef enum _ENUM_CHNL_SPAN_T {
229 } ENUM_CHNL_SPAN_T, *P_ENUM_CHNL_SPAN_T;
231 /* Define BSS operating bandwidth */
232 typedef enum _ENUM_CHNL_BW_T {
237 } ENUM_CHNL_BW_T, *P_ENUM_CHNL_BW_T;
240 /* If channel width is CHNL_BW_20_40, the first channel will be SCA and
241 * the second channel is SCB, then iteratively.
242 * Note the final channel will not be SCA.
244 typedef struct _DOMAIN_SUBBAND_INFO {
247 ENUM_CHNL_SPAN_T eChannelSpan;
248 UINT_8 ucFirstChannelNum;
249 UINT_8 ucNumChannels;
250 ENUM_CHNL_BW_T eChannelBw;
252 BOOLEAN fgIbssProhibited;
253 } DOMAIN_SUBBAND_INFO, *P_DOMAIN_SUBBAND_INFO;
255 /* Use it as all available channel list for STA */
256 typedef struct _DOMAIN_INFO_ENTRY {
257 UINT_16 u2CountryCode;
258 UINT_16 u2MibRegDomainValue;
260 /* If different attributes, put them into different rSubBands.
261 * For example, DFS shall be used or not.
263 DOMAIN_SUBBAND_INFO rSubBand[MAX_SUBBAND_NUM];
264 } DOMAIN_INFO_ENTRY, *P_DOMAIN_INFO_ENTRY;
266 #else /* New definition 20110830 */
268 /* In all bands, the first channel will be SCA and the second channel is SCB,
270 * Note the final channel will not be SCA.
272 typedef struct _DOMAIN_SUBBAND_INFO {
273 /* Note1: regulation class depends on operation bandwidth and RF band.
274 * For example: 2.4GHz, 1~13, 20MHz ==> regulation class = 81
275 * 2.4GHz, 1~13, SCA ==> regulation class = 83
276 * 2.4GHz, 1~13, SCB ==> regulation class = 84
277 * Note2: TX power limit is not specified here because path loss is unknown
279 UINT_8 ucRegClass; /* Regulation class for 20MHz */
280 UINT_8 ucBand; /* Type: ENUM_BAND_T */
281 UINT_8 ucChannelSpan; /* Type: ENUM_CHNL_SPAN_T */
282 UINT_8 ucFirstChannelNum;
283 UINT_8 ucNumChannels;
284 UINT_8 ucReserved; /* Type: BOOLEAN (fgDfsNeeded) */
285 } DOMAIN_SUBBAND_INFO, *P_DOMAIN_SUBBAND_INFO;
287 /* Use it as all available channel list for STA */
288 typedef struct _DOMAIN_INFO_ENTRY {
289 PUINT_16 pu2CountryGroup;
290 UINT_32 u4CountryNum;
292 /* If different attributes, put them into different rSubBands.
293 * For example, DFS shall be used or not.
295 DOMAIN_SUBBAND_INFO rSubBand[MAX_SUBBAND_NUM];
296 } DOMAIN_INFO_ENTRY, *P_DOMAIN_INFO_ENTRY;
299 /* The following definitions are not used yet */
300 typedef enum _ENUM_CH_SET_2G4_T {
306 } ENUM_CH_SET_2G4_T, *P_ENUM_CH_SET_2G4_T;
308 typedef enum _ENUM_CH_SET_UNII_LOW_T {
310 CH_SET_UNII_LOW_36_48,
312 } ENUM_CH_SET_UNII_LOW_T, *P_ENUM_CH_SET_UNII_LOW_T;
314 typedef enum _ENUM_CH_SET_UNII_MID_T {
316 CH_SET_UNII_MID_52_64,
318 } ENUM_CH_SET_UNII_MID_T, *P_ENUM_CH_SET_UNII_MID_T;
320 typedef enum _ENUM_CH_SET_UNII_WW_T {
322 CH_SET_UNII_WW_100_128,
323 CH_SET_UNII_WW_100_140,
324 CH_SET_UNII_WW_100_116_132_140,
326 } ENUM_CH_SET_UNII_WW_T, *P_ENUM_CH_SET_UNII_WW_T;
328 typedef enum _ENUM_CH_SET_UNII_UPPER_T {
329 CH_SET_UNII_UPPER_NA,
330 CH_SET_UNII_UPPER_149_161,
331 CH_SET_UNII_UPPER_149_165,
332 CH_SET_UNII_UPPER_149_173,
333 CH_SET_UNII_UPPER_NUM
334 } ENUM_CH_SET_UNII_UPPER_T, *P_ENUM_CH_SET_UNII_UPPER_T;
336 typedef struct _COUNTRY_CH_SET_T {
337 ENUM_CH_SET_2G4_T e2G4;
338 ENUM_CH_SET_UNII_LOW_T eUniiLow;
339 ENUM_CH_SET_UNII_MID_T eUniiMid;
340 ENUM_CH_SET_UNII_WW_T eUniiWw;
341 ENUM_CH_SET_UNII_UPPER_T eUniiUpper;
342 } COUNTRY_CH_SET_T, *P_COUNTRY_CH_SET_T;
345 /*******************************************************************************
346 * P U B L I C D A T A
347 ********************************************************************************
350 /*******************************************************************************
351 * P R I V A T E D A T A
352 ********************************************************************************
355 /*******************************************************************************
357 ********************************************************************************
360 /*******************************************************************************
361 * F U N C T I O N D E C L A R A T I O N S
362 ********************************************************************************
365 rlmDomainGetDomainInfo (
366 P_ADAPTER_T prAdapter
370 rlmDomainGetChnlList (
371 P_ADAPTER_T prAdapter,
372 ENUM_BAND_T eSpecificBand,
373 UINT_8 ucMaxChannelNum,
374 PUINT_8 pucNumOfChannel,
375 P_RF_CHANNEL_INFO_T paucChannelList
380 P_ADAPTER_T prAdapter,
385 rlmDomainIsLegalChannel (
386 P_ADAPTER_T prAdapter,
391 /*******************************************************************************
393 ********************************************************************************
396 #endif /* _RLM_DOMAIN_H */