xref: /wlan-dirver/qca-wifi-host-cmn/umac/regulatory/core/src/reg_db.c (revision 302a1d9701784af5f4797b1a9fe07ae820b51907)
1 /*
2  * Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
3  *
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 /**
21  * DOC: reg_db.c
22  * This file provides regulatory data base
23  */
24 
25 #include <qdf_types.h>
26 #include <qdf_trace.h>
27 #include "reg_db.h"
28 
29 enum country_code {
30 	CTRY_AFGHANISTAN = 4,
31 	CTRY_ALBANIA = 8,
32 	CTRY_ALGERIA = 12,
33 	CTRY_AMERICAN_SAMOA = 16,
34 	CTRY_ANGUILLA = 660,
35 	CTRY_ARGENTINA = 32,
36 	CTRY_ARMENIA = 51,
37 	CTRY_ARUBA = 533,
38 	CTRY_AUSTRALIA = 36,
39 	CTRY_AUSTRIA = 40,
40 	CTRY_AZERBAIJAN = 31,
41 	CTRY_BAHAMAS = 44,
42 	CTRY_BAHRAIN = 48,
43 	CTRY_BANGLADESH = 50,
44 	CTRY_BARBADOS = 52,
45 	CTRY_BELARUS = 112,
46 	CTRY_BELGIUM = 56,
47 	CTRY_BELIZE = 84,
48 	CTRY_BERMUDA = 60,
49 	CTRY_BHUTAN = 64,
50 	CTRY_BOLIVIA = 68,
51 	CTRY_BOSNIA_HERZ = 70,
52 	CTRY_BRAZIL = 76,
53 	CTRY_BRUNEI_DARUSSALAM = 96,
54 	CTRY_BULGARIA = 100,
55 	CTRY_BURKINA_FASO = 854,
56 	CTRY_CAMBODIA = 116,
57 	CTRY_CANADA = 124,
58 	CTRY_CAYMAN_ISLANDS = 136,
59 	CTRY_CENTRAL_AFRICA_REPUBLIC = 140,
60 	CTRY_CHAD = 148,
61 	CTRY_CHILE = 152,
62 	CTRY_CHINA = 156,
63 	CTRY_CHRISTMAS_ISLAND = 162,
64 	CTRY_COLOMBIA = 170,
65 	CTRY_COSTA_RICA = 188,
66 	CTRY_COTE_DIVOIRE = 384,
67 	CTRY_CROATIA = 191,
68 	CTRY_CYPRUS = 196,
69 	CTRY_CZECH = 203,
70 	CTRY_DENMARK = 208,
71 	CTRY_DOMINICA = 212,
72 	CTRY_DOMINICAN_REPUBLIC = 214,
73 	CTRY_ECUADOR = 218,
74 	CTRY_EGYPT = 818,
75 	CTRY_EL_SALVADOR = 222,
76 	CTRY_ESTONIA = 233,
77 	CTRY_ETHIOPIA = 231,
78 	CTRY_FINLAND = 246,
79 	CTRY_FRANCE = 250,
80 	CTRY_FRENCH_GUIANA = 254,
81 	CTRY_FRENCH_POLYNESIA = 258,
82 	CTRY_GEORGIA = 268,
83 	CTRY_GERMANY = 276,
84 	CTRY_GHANA = 288,
85 	CTRY_GIBRALTAR = 292,
86 	CTRY_GREECE = 300,
87 	CTRY_GREENLAND = 304,
88 	CTRY_GRENADA = 308,
89 	CTRY_GUADELOUPE = 312,
90 	CTRY_GUAM = 316,
91 	CTRY_GUATEMALA = 320,
92 	CTRY_GUYANA = 328,
93 	CTRY_HAITI = 332,
94 	CTRY_HONDURAS = 340,
95 	CTRY_HONG_KONG = 344,
96 	CTRY_HUNGARY = 348,
97 	CTRY_ICELAND = 352,
98 	CTRY_INDIA = 356,
99 	CTRY_INDONESIA = 360,
100 	CTRY_IRAQ = 368,
101 	CTRY_IRELAND = 372,
102 	CTRY_ISRAEL = 376,
103 	CTRY_ITALY = 380,
104 	CTRY_JAMAICA = 388,
105 	CTRY_JORDAN = 400,
106 	CTRY_KAZAKHSTAN = 398,
107 	CTRY_KENYA = 404,
108 	CTRY_KOREA_ROC = 410,
109 	CTRY_KUWAIT = 414,
110 	CTRY_LATVIA = 428,
111 	CTRY_LEBANON = 422,
112 	CTRY_LESOTHO = 426,
113 	CTRY_LIECHTENSTEIN = 438,
114 	CTRY_LITHUANIA = 440,
115 	CTRY_LUXEMBOURG = 442,
116 	CTRY_MACAU = 446,
117 	CTRY_MACEDONIA = 807,
118 	CTRY_MALAWI = 454,
119 	CTRY_MALAYSIA = 458,
120 	CTRY_MALDIVES = 462,
121 	CTRY_MALTA = 470,
122 	CTRY_MARSHALL_ISLANDS = 584,
123 	CTRY_MARTINIQUE = 474,
124 	CTRY_MAURITANIA = 478,
125 	CTRY_MAURITIUS = 480,
126 	CTRY_MAYOTTE = 175,
127 	CTRY_MEXICO = 484,
128 	CTRY_MICRONESIA = 583,
129 	CTRY_MOLDOVA = 498,
130 	CTRY_MONACO = 492,
131 	CTRY_MONGOLIA = 496,
132 	CTRY_MONTENEGRO = 499,
133 	CTRY_MOROCCO = 504,
134 	CTRY_NAMIBIA = 516,
135 	CTRY_NEPAL = 524,
136 	CTRY_NETHERLANDS = 528,
137 	CTRY_NETHERLANDS_ANTILLES = 530,
138 	CTRY_NEW_ZEALAND = 554,
139 	CTRY_NIGERIA = 566,
140 	CTRY_NORTHERN_MARIANA_ISLANDS = 580,
141 	CTRY_NICARAGUA = 558,
142 	CTRY_NORWAY = 578,
143 	CTRY_OMAN = 512,
144 	CTRY_PAKISTAN = 586,
145 	CTRY_PALAU = 585,
146 	CTRY_PANAMA = 591,
147 	CTRY_PAPUA_NEW_GUINEA = 598,
148 	CTRY_PARAGUAY = 600,
149 	CTRY_PERU = 604,
150 	CTRY_PHILIPPINES = 608,
151 	CTRY_POLAND = 616,
152 	CTRY_PORTUGAL = 620,
153 	CTRY_PUERTO_RICO = 630,
154 	CTRY_QATAR = 634,
155 	CTRY_REUNION = 638,
156 	CTRY_ROMANIA = 642,
157 	CTRY_RUSSIA = 643,
158 	CTRY_RWANDA = 646,
159 	CTRY_SAINT_BARTHELEMY = 652,
160 	CTRY_SAINT_KITTS_AND_NEVIS = 659,
161 	CTRY_SAINT_LUCIA = 662,
162 	CTRY_SAINT_MARTIN = 663,
163 	CTRY_SAINT_PIERRE_AND_MIQUELON = 666,
164 	CTRY_SAINT_VINCENT_AND_THE_GRENADIENS = 670,
165 	CTRY_SAMOA = 882,
166 	CTRY_SAUDI_ARABIA = 682,
167 	CTRY_SENEGAL = 686,
168 	CTRY_SERBIA = 688,
169 	CTRY_SINGAPORE = 702,
170 	CTRY_SLOVAKIA = 703,
171 	CTRY_SLOVENIA = 705,
172 	CTRY_SOUTH_AFRICA = 710,
173 	CTRY_SPAIN = 724,
174 	CTRY_SURINAME = 740,
175 	CTRY_SRI_LANKA = 144,
176 	CTRY_SWEDEN = 752,
177 	CTRY_SWITZERLAND = 756,
178 	CTRY_TAIWAN = 158,
179 	CTRY_TANZANIA = 834,
180 	CTRY_THAILAND = 764,
181 	CTRY_TOGO = 768,
182 	CTRY_TRINIDAD_Y_TOBAGO = 780,
183 	CTRY_TUNISIA = 788,
184 	CTRY_TURKEY = 792,
185 	CTRY_TURKS_AND_CAICOS = 796,
186 	CTRY_UGANDA = 800,
187 	CTRY_UKRAINE = 804,
188 	CTRY_UAE = 784,
189 	CTRY_UNITED_KINGDOM = 826,
190 	CTRY_UNITED_STATES = 840,
191 	CTRY_URUGUAY = 858,
192 	CTRY_UZBEKISTAN = 860,
193 	CTRY_VANUATU = 548,
194 	CTRY_VENEZUELA = 862,
195 	CTRY_VIET_NAM = 704,
196 	CTRY_VIRGIN_ISLANDS = 850,
197 	CTRY_WALLIS_AND_FUTUNA = 876,
198 	CTRY_YEMEN = 887,
199 	CTRY_ZIMBABWE = 716,
200 	CTRY_JAPAN = 392,
201 	CTRY_JAPAN15 = 4015,
202 	CTRY_XA = 4100,
203 };
204 
205 enum reg_domain {
206 	NULL1_WORLD = 0x03,
207 
208 	FCC1_FCCA = 0x10,
209 	FCC1_WORLD = 0x11,
210 	FCC2_FCCA = 0x20,
211 	FCC2_WORLD = 0x21,
212 	FCC2_ETSIC = 0x22,
213 	FCC3_FCCA = 0x3A,
214 	FCC3_WORLD = 0x3B,
215 	FCC3_ETSIC = 0x3F,
216 	FCC4_FCCA = 0x12,
217 	FCC5_FCCA = 0x13,
218 	FCC6_WORLD = 0x23,
219 	FCC6_FCCA = 0x14,
220 	FCC8_FCCA = 0x16,
221 	FCC9_FCCA = 0x17,
222 	FCC10_FCCA = 0x18,
223 	FCC11_WORLD = 0x19,
224 	FCC13_WORLD = 0xE4,
225 	FCC14_FCCB = 0xE6,
226 
227 	ETSI1_WORLD = 0x37,
228 	ETSI3_WORLD = 0x36,
229 	ETSI4_WORLD = 0x30,
230 	ETSI8_WORLD = 0x3D,
231 	ETSI9_WORLD = 0x3E,
232 	ETSI10_WORLD = 0x24,
233 	ETSI11_WORLD = 0x26,
234 	ETSI12_WORLD = 0x28,
235 	ETSI13_WORLD = 0x27,
236 	ETSI14_WORLD = 0x29,
237 
238 	APL1_WORLD = 0x52,
239 	APL1_ETSIC = 0x55,
240 	APL2_WORLD = 0x45,
241 	APL2_ETSIC = 0x56,
242 	APL4_WORLD = 0x42,
243 	APL6_WORLD = 0x5B,
244 	APL8_WORLD = 0x5D,
245 	APL9_WORLD = 0x5E,
246 	APL10_WORLD = 0x5F,
247 	APL11_FCCA = 0x4F,
248 	APL12_WORLD = 0x51,
249 	APL13_WORLD = 0x5A,
250 	APL14_WORLD = 0x57,
251 	APL15_WORLD = 0x59,
252 	APL16_WORLD = 0x70,
253 	APL17_ETSID = 0xE0,
254 	APL19_ETSIC = 0x71,
255 	APL20_WORLD = 0xE5,
256 	APL23_WORLD = 0xE3,
257 
258 	MKK3_MKKC = 0x82,
259 	MKK5_MKKA = 0x99,
260 	MKK5_MKKC = 0x88,
261 	MKK11_MKKC = 0xD7,
262 	MKK16_MKKC = 0xDF,
263 
264 	WORLD_60 = 0x60,
265 	WORLD_61 = 0x61,
266 	WORLD_62 = 0x62,
267 	WORLD_63 = 0x63,
268 	WORLD_65 = 0x65,
269 	WORLD_64 = 0x64,
270 	WORLD_66 = 0x66,
271 	WORLD_69 = 0x69,
272 	WORLD_67 = 0x67,
273 	WORLD_68 = 0x68,
274 	WORLD_6A = 0x6A,
275 	WORLD_6C = 0x6C,
276 };
277 
278 #ifndef CONFIG_MCL_REGDB
279 const struct country_code_to_reg_domain g_all_countries[] = {
280 	{CTRY_AFGHANISTAN, ETSI1_WORLD, "AF", 40, 160, 0},
281 	{CTRY_ALBANIA, ETSI1_WORLD, "AL", 40, 160, 0},
282 	{CTRY_ALGERIA, APL13_WORLD, "DZ", 40, 160, 0},
283 	{CTRY_AMERICAN_SAMOA, FCC3_FCCA, "AS", 40, 160, 0},
284 	{CTRY_ANGUILLA, ETSI1_WORLD, "AI", 40, 160, 0},
285 	{CTRY_ARGENTINA, APL16_WORLD, "AR", 40, 160, 0},
286 	{CTRY_ARMENIA, ETSI4_WORLD, "AM", 40, 20, 0},
287 	{CTRY_ARUBA, ETSI1_WORLD, "AW", 40, 160, 0},
288 	{CTRY_AUSTRALIA, FCC6_WORLD, "AU", 40, 160, 0},
289 	{CTRY_AUSTRIA, ETSI1_WORLD, "AT", 40, 160, 0},
290 	{CTRY_AZERBAIJAN, ETSI4_WORLD, "AZ", 40, 160, 0},
291 	{CTRY_BAHAMAS, FCC3_WORLD, "BS", 40, 160, 0},
292 	{CTRY_BAHRAIN, APL15_WORLD, "BH", 40, 20, 0},
293 	{CTRY_BANGLADESH, APL1_WORLD, "BD", 40, 160, 0},
294 	{CTRY_BARBADOS, FCC2_WORLD, "BB", 40, 160, 0},
295 	{CTRY_BELARUS, ETSI1_WORLD, "BY", 40, 160, 0},
296 	{CTRY_BELGIUM, ETSI1_WORLD, "BE", 40, 160, 0},
297 	{CTRY_BELIZE, ETSI8_WORLD, "BZ", 40, 160, 0},
298 	{CTRY_BERMUDA, FCC3_FCCA, "BM", 40, 160, 0},
299 	{CTRY_BHUTAN, ETSI1_WORLD, "BT", 40, 160, 0},
300 	{CTRY_BOLIVIA, APL8_WORLD, "BO", 40, 160, 0},
301 	{CTRY_BOSNIA_HERZ, ETSI1_WORLD, "BA", 40, 160, 0},
302 	{CTRY_BRAZIL, FCC3_ETSIC, "BR", 40, 160, 0},
303 	{CTRY_BRUNEI_DARUSSALAM, APL6_WORLD, "BN", 40, 160, 0},
304 	{CTRY_BULGARIA, ETSI1_WORLD, "BG", 40, 160, 0},
305 	{CTRY_BURKINA_FASO, FCC3_WORLD, "BF", 40, 160, 0},
306 	{CTRY_CAMBODIA, ETSI1_WORLD, "KH", 40, 160, 0},
307 	{CTRY_CANADA, FCC6_FCCA, "CA", 40, 160, 0},
308 	{CTRY_CAYMAN_ISLANDS, FCC3_WORLD, "KY", 40, 160, 0},
309 	{CTRY_CENTRAL_AFRICA_REPUBLIC, FCC3_WORLD, "CF", 40, 40, 0},
310 	{CTRY_CHAD, ETSI1_WORLD, "TD", 40, 160, 0},
311 	{CTRY_CHILE, APL23_WORLD, "CL", 40, 160, 0},
312 	{CTRY_CHINA, APL14_WORLD, "CN", 40, 160, 0},
313 	{CTRY_CHRISTMAS_ISLAND, FCC3_WORLD, "CX", 40, 160, 0},
314 	{CTRY_COLOMBIA, FCC3_WORLD, "CO", 40, 160, 0},
315 	{CTRY_COSTA_RICA, FCC3_WORLD, "CR", 40, 20, 0},
316 	{CTRY_COTE_DIVOIRE, FCC3_WORLD, "CI", 40, 160, 0},
317 	{CTRY_CROATIA, ETSI1_WORLD, "HR", 40, 160, 0},
318 	{CTRY_CYPRUS, ETSI1_WORLD, "CY", 40, 160, 0},
319 	{CTRY_CZECH, ETSI1_WORLD, "CZ", 40, 160, 0},
320 	{CTRY_DENMARK, ETSI1_WORLD, "DK", 40, 160,  0},
321 	{CTRY_DOMINICA, FCC1_FCCA, "DM", 40, 160, 0},
322 	{CTRY_DOMINICAN_REPUBLIC, FCC1_FCCA, "DO", 40, 160, 0},
323 	{CTRY_ECUADOR, FCC3_WORLD, "EC", 40, 20, 0},
324 	{CTRY_EGYPT, ETSI3_WORLD, "EG", 40, 160, 0},
325 	{CTRY_EL_SALVADOR, FCC1_WORLD, "SV", 40, 20, 0},
326 	{CTRY_ESTONIA, ETSI1_WORLD, "EE", 40, 160, 0},
327 	{CTRY_ETHIOPIA, ETSI1_WORLD, "ET", 40, 160, 0},
328 	{CTRY_FINLAND, ETSI1_WORLD, "FI", 40, 160, 0},
329 	{CTRY_FRANCE, ETSI1_WORLD, "FR", 40, 160, 0},
330 	{CTRY_FRENCH_GUIANA, ETSI1_WORLD, "GF", 40, 160, 0},
331 	{CTRY_FRENCH_POLYNESIA, ETSI1_WORLD, "PF", 40, 160, 0},
332 	{CTRY_GEORGIA, ETSI4_WORLD, "GE", 40, 160, 0},
333 	{CTRY_GERMANY, ETSI1_WORLD, "DE", 40, 160, 0},
334 	{CTRY_GHANA, FCC3_WORLD, "GH", 40, 160, 0},
335 	{CTRY_GIBRALTAR, ETSI1_WORLD, "GI", 40, 160, 0},
336 	{CTRY_GREECE, ETSI1_WORLD, "GR", 40, 160, 0},
337 	{CTRY_GREENLAND, ETSI1_WORLD, "GL", 40, 160, 0},
338 	{CTRY_GRENADA, FCC3_FCCA, "GD", 40, 160, 0},
339 	{CTRY_GUADELOUPE, ETSI1_WORLD, "GP", 40, 160, 0},
340 	{CTRY_GUAM, FCC3_FCCA, "GU", 40, 160, 0},
341 	{CTRY_GUATEMALA, ETSI1_WORLD, "GT", 40, 160, 0},
342 	{CTRY_GUYANA, APL1_ETSIC, "GY", 40, 160, 0},
343 	{CTRY_HAITI, FCC3_FCCA, "HT", 40, 160, 0},
344 	{CTRY_HONDURAS, FCC3_WORLD, "HN", 40, 160, 0},
345 	{CTRY_HONG_KONG, FCC3_WORLD, "HK", 40, 160, 0},
346 	{CTRY_HUNGARY, ETSI1_WORLD, "HU", 40, 160, 0},
347 	{CTRY_ICELAND, ETSI1_WORLD, "IS", 40, 160, 0},
348 	{CTRY_INDIA, APL15_WORLD, "IN", 40, 160, 0},
349 	{CTRY_INDONESIA, APL2_ETSIC, "ID", 40, 20, 0},
350 	{CTRY_IRAQ, ETSI1_WORLD, "IQ", 40, 160, 0},
351 	{CTRY_IRELAND, ETSI1_WORLD, "IE", 40, 160, 0},
352 	{CTRY_ISRAEL, ETSI3_WORLD, "IL", 40, 160, 0},
353 	{CTRY_ITALY, ETSI1_WORLD, "IT", 40, 160,  0},
354 	{CTRY_JAMAICA, FCC13_WORLD, "JM", 40, 160, 0},
355 	{CTRY_JORDAN, APL4_WORLD, "JO", 40, 160, 0},
356 	{CTRY_KAZAKHSTAN, NULL1_WORLD, "KZ", 40, 0, 0},
357 	{CTRY_KENYA, APL12_WORLD, "KE", 40, 160, 0},
358 	{CTRY_KOREA_ROC, APL9_WORLD, "KR", 40, 160, 0},
359 	{CTRY_KUWAIT, ETSI3_WORLD, "KW", 40, 160, 0},
360 	{CTRY_LATVIA, ETSI1_WORLD, "LV", 40, 160, 0},
361 	{CTRY_LEBANON, FCC3_WORLD, "LB", 40, 160, 0},
362 	{CTRY_LESOTHO, ETSI1_WORLD, "LS", 40, 160, 0},
363 	{CTRY_LIECHTENSTEIN, ETSI1_WORLD, "LI", 40, 160, 0},
364 	{CTRY_LITHUANIA, ETSI1_WORLD, "LT", 40, 160, 0},
365 	{CTRY_LUXEMBOURG, ETSI1_WORLD, "LU", 40, 160, 0},
366 	{CTRY_MACAU, FCC3_WORLD, "MO", 40, 160, 0},
367 	{CTRY_MACEDONIA, ETSI1_WORLD, "MK", 40, 160, 0},
368 	{CTRY_MALAWI, ETSI1_WORLD, "MW", 40, 160, 0},
369 	{CTRY_MALAYSIA, FCC11_WORLD, "MY", 40, 160, 0},
370 	{CTRY_MALDIVES, APL6_WORLD, "MV", 40, 160, 0},
371 	{CTRY_MALTA, ETSI1_WORLD, "MT", 40, 160, 0},
372 	{CTRY_MARSHALL_ISLANDS, FCC3_FCCA, "MH", 40, 160, 0},
373 	{CTRY_MARTINIQUE, ETSI1_WORLD, "MQ", 40, 160, 0},
374 	{CTRY_MAURITANIA, ETSI1_WORLD, "MR", 40, 160, 0},
375 	{CTRY_MAURITIUS, ETSI1_WORLD, "MU", 40, 160, 0},
376 	{CTRY_MAYOTTE, ETSI1_WORLD, "YT", 40, 160, 0},
377 	{CTRY_MEXICO, FCC3_ETSIC, "MX", 40, 160, 0},
378 	{CTRY_MICRONESIA, FCC3_FCCA, "FM", 40, 160, 0},
379 	{CTRY_MOLDOVA, ETSI1_WORLD, "MD", 40, 160, 0},
380 	{CTRY_MONACO, ETSI1_WORLD, "MC", 40, 160, 0},
381 	{CTRY_MONGOLIA, FCC3_WORLD, "MN", 40, 160, 0},
382 	{CTRY_MONTENEGRO, ETSI1_WORLD, "ME", 40, 160, 0},
383 	{CTRY_MOROCCO, ETSI3_WORLD, "MA", 40, 160, 0},
384 	{CTRY_NAMIBIA, APL20_WORLD, "NA", 40, 160, 0},
385 	{CTRY_NEPAL, APL23_WORLD, "NP", 40, 160, 0},
386 	{CTRY_NETHERLANDS, ETSI1_WORLD, "NL", 40, 160, 0},
387 	{CTRY_NETHERLANDS_ANTILLES, ETSI1_WORLD, "AN", 40, 160, 0},
388 	{CTRY_NEW_ZEALAND, FCC3_ETSIC, "NZ", 40, 160, 0},
389 	{CTRY_NIGERIA, APL8_WORLD, "NG", 40, 160, 0},
390 	{CTRY_NORTHERN_MARIANA_ISLANDS, FCC3_FCCA, "MP", 40, 160, 0},
391 	{CTRY_NICARAGUA, FCC3_FCCA, "NI", 40, 160, 0},
392 	{CTRY_NORWAY, ETSI1_WORLD, "NO", 40, 160, 0},
393 	{CTRY_OMAN, ETSI1_WORLD, "OM", 40, 160, 0},
394 	{CTRY_PAKISTAN, APL1_ETSIC, "PK", 40, 160, 0},
395 	{CTRY_PALAU, FCC3_FCCA, "PW", 40, 160, 0},
396 	{CTRY_PANAMA, FCC14_FCCB, "PA", 40, 160, 0},
397 	{CTRY_PAPUA_NEW_GUINEA, FCC3_WORLD, "PG", 40, 160, 0},
398 	{CTRY_PARAGUAY, FCC3_WORLD, "PY", 40, 160, 0},
399 	{CTRY_PERU, FCC3_WORLD, "PE", 40, 160, 0},
400 	{CTRY_PHILIPPINES, FCC3_WORLD, "PH", 40, 160, 0},
401 	{CTRY_POLAND, ETSI1_WORLD, "PL", 40, 160, 0},
402 	{CTRY_PORTUGAL, ETSI1_WORLD, "PT", 40, 160, 0},
403 	{CTRY_PUERTO_RICO, FCC3_FCCA, "PR", 40, 160, 0},
404 	{CTRY_QATAR, ETSI14_WORLD, "QA", 40, 160, 0},
405 	{CTRY_REUNION, ETSI1_WORLD, "RE", 40, 160, 0},
406 	{CTRY_ROMANIA, ETSI1_WORLD, "RO", 40, 160, 0},
407 	{CTRY_RUSSIA, ETSI8_WORLD, "RU", 40, 160, 0},
408 	{CTRY_RWANDA, FCC3_WORLD, "RW", 40, 160, 0},
409 	{CTRY_SAINT_BARTHELEMY, ETSI1_WORLD, "BL", 40, 160, 0},
410 	{CTRY_SAINT_KITTS_AND_NEVIS, APL10_WORLD, "KN", 40, 160, 0},
411 	{CTRY_SAINT_LUCIA, APL10_WORLD, "LC", 40, 160, 0},
412 	{CTRY_SAINT_MARTIN, ETSI1_WORLD, "MF", 40, 160, 0},
413 	{CTRY_SAINT_PIERRE_AND_MIQUELON, ETSI1_WORLD, "PM", 40, 160, 0},
414 	{CTRY_SAINT_VINCENT_AND_THE_GRENADIENS, ETSI1_WORLD,
415 	 "VC" , 40, 160, 0},
416 	{CTRY_SAMOA, ETSI1_WORLD, "WS", 40, 40, 0},
417 	{CTRY_SAUDI_ARABIA, ETSI1_WORLD, "SA", 40, 160, 0},
418 	{CTRY_SENEGAL, FCC13_WORLD, "SN", 40, 160, 0},
419 	{CTRY_SERBIA, ETSI1_WORLD, "RS", 40, 160, 0},
420 	{CTRY_SINGAPORE, FCC3_WORLD, "SG", 40, 160, 0},
421 	{CTRY_SLOVAKIA, ETSI1_WORLD, "SK", 40, 160, 0},
422 	{CTRY_SLOVENIA, ETSI1_WORLD, "SI", 40, 160, 0},
423 	{CTRY_SOUTH_AFRICA, FCC3_WORLD, "ZA", 40, 160, 0},
424 	{CTRY_SPAIN, ETSI1_WORLD, "ES", 40, 160, 0},
425 	{CTRY_SURINAME, ETSI1_WORLD, "SR", 40, 160, 0},
426 	{CTRY_SRI_LANKA, FCC3_WORLD, "LK", 40, 20, 0},
427 	{CTRY_SWEDEN, ETSI1_WORLD, "SE", 40, 160, 0},
428 	{CTRY_SWITZERLAND, ETSI1_WORLD, "CH", 40, 160, 0},
429 	{CTRY_TAIWAN, FCC3_FCCA, "TW", 40, 160, 0},
430 	{CTRY_TANZANIA, APL1_WORLD, "TZ", 40, 160, 0},
431 	{CTRY_THAILAND, FCC3_WORLD, "TH", 40, 160, 0},
432 	{CTRY_TOGO, ETSI1_WORLD, "TG", 40, 40, 0},
433 	{CTRY_TRINIDAD_Y_TOBAGO, FCC3_WORLD, "TT", 40, 160, 0},
434 	{CTRY_TUNISIA, ETSI3_WORLD, "TN", 40, 160, 0},
435 	{CTRY_TURKEY, ETSI1_WORLD, "TR", 40, 160, 0},
436 	{CTRY_TURKS_AND_CAICOS, FCC3_WORLD, "TC", 40, 160, 0},
437 	{CTRY_UGANDA, FCC3_WORLD, "UG", 40, 160, 0},
438 	{CTRY_UKRAINE, ETSI9_WORLD, "UA", 40, 160, 0},
439 	{CTRY_UAE, FCC3_WORLD, "AE", 40, 160, 0},
440 	{CTRY_UNITED_KINGDOM, ETSI1_WORLD, "GB", 40, 160, 0},
441 	{CTRY_UNITED_STATES, FCC8_FCCA, "US", 40, 160, 0},
442 	{CTRY_URUGUAY, FCC2_WORLD, "UY", 40, 160, 0},
443 	{CTRY_UZBEKISTAN, ETSI3_WORLD, "UZ", 40, 160, 0},
444 	{CTRY_VANUATU, FCC3_WORLD, "VU", 40, 160, 0},
445 	{CTRY_VENEZUELA, FCC2_ETSIC, "VE", 40, 160, 0},
446 	{CTRY_VIET_NAM, FCC3_WORLD, "VN", 40, 80, 0},
447 	{CTRY_VIRGIN_ISLANDS, FCC3_FCCA, "VI", 40, 160, 0},
448 	{CTRY_WALLIS_AND_FUTUNA, ETSI1_WORLD, "WF", 40, 160, 0},
449 	{CTRY_YEMEN, NULL1_WORLD, "YE", 40, 0, 0},
450 	{CTRY_ZIMBABWE, ETSI1_WORLD, "ZW", 40, 160, 0},
451 	{CTRY_JAPAN, MKK5_MKKC, "JP", 40, 160, 0},
452 	{CTRY_JAPAN15, MKK5_MKKC, "JP", 40, 160, 0},
453 };
454 #else
455 #ifdef WLAN_FEATURE_DSRC
456 const struct country_code_to_reg_domain g_all_countries[] = {
457 	{CTRY_AFGHANISTAN, ETSI1_WORLD, "AF", 40, 160, 0},
458 	{CTRY_ALBANIA, ETSI13_WORLD, "AL", 40, 160, 0},
459 	{CTRY_ALGERIA, APL13_WORLD, "DZ", 40, 160, 0},
460 	{CTRY_AMERICAN_SAMOA, FCC3_FCCA, "AS", 40, 160, 0},
461 	{CTRY_ANGUILLA, ETSI1_WORLD, "AI", 40, 160, 0},
462 	{CTRY_ARGENTINA, APL17_ETSID, "AR", 40, 160, 0},
463 	{CTRY_ARMENIA, ETSI4_WORLD, "AM", 40, 20, 0},
464 	{CTRY_ARUBA, ETSI1_WORLD, "AW", 40, 160, 0},
465 	{CTRY_AUSTRALIA, FCC6_WORLD, "AU", 40, 160, 0},
466 	{CTRY_AUSTRIA, ETSI10_WORLD, "AT", 40, 160, 0},
467 	{CTRY_AZERBAIJAN, ETSI4_WORLD, "AZ", 40, 160, 0},
468 	{CTRY_BAHAMAS, FCC3_WORLD, "BS", 40, 160, 0},
469 	{CTRY_BAHRAIN, APL15_WORLD, "BH", 40, 20, 0},
470 	{CTRY_BANGLADESH, APL1_WORLD, "BD", 40, 160, 0},
471 	{CTRY_BARBADOS, FCC2_WORLD, "BB", 40, 160, 0},
472 	{CTRY_BELARUS, ETSI1_WORLD, "BY", 40, 160, 0},
473 	{CTRY_BELGIUM, ETSI10_WORLD, "BE", 40, 160, 0},
474 	{CTRY_BELIZE, ETSI8_WORLD, "BZ", 40, 160, 0},
475 	{CTRY_BERMUDA, FCC3_FCCA, "BM", 40, 160, 0},
476 	{CTRY_BHUTAN, ETSI1_WORLD, "BT", 40, 160, 0},
477 	{CTRY_BOLIVIA, APL8_WORLD, "BO", 40, 160, 0},
478 	{CTRY_BOSNIA_HERZ, ETSI13_WORLD, "BA", 40, 160, 0},
479 	{CTRY_BRAZIL, FCC3_ETSIC, "BR", 40, 160, 0},
480 	{CTRY_BRUNEI_DARUSSALAM, APL6_WORLD, "BN", 40, 160, 0},
481 	{CTRY_BULGARIA, ETSI10_WORLD, "BG", 40, 160, 0},
482 	{CTRY_BURKINA_FASO, FCC3_WORLD, "BF", 40, 160, 0},
483 	{CTRY_CAMBODIA, ETSI1_WORLD, "KH", 40, 160, 0},
484 	{CTRY_CANADA, FCC3_FCCA, "CA", 40, 160, 0},
485 	{CTRY_CAYMAN_ISLANDS, FCC3_WORLD, "KY", 40, 160, 0},
486 	{CTRY_CENTRAL_AFRICA_REPUBLIC, FCC3_WORLD, "CF", 40, 40, 0},
487 	{CTRY_CHAD, ETSI1_WORLD, "TD", 40, 160, 0},
488 	{CTRY_CHILE, APL23_WORLD, "CL", 40, 160, 0},
489 	{CTRY_CHINA, APL14_WORLD, "CN", 40, 160, 0},
490 	{CTRY_CHRISTMAS_ISLAND, FCC3_WORLD, "CX", 40, 160, 0},
491 	{CTRY_COLOMBIA, FCC3_WORLD, "CO", 40, 160, 0},
492 	{CTRY_COSTA_RICA, FCC3_WORLD, "CR", 40, 20, 0},
493 	{CTRY_COTE_DIVOIRE, FCC3_WORLD, "CI", 40, 160, 0},
494 	{CTRY_CROATIA, ETSI10_WORLD, "HR", 40, 160, 0},
495 	{CTRY_CYPRUS, ETSI10_WORLD, "CY", 40, 160, 0},
496 	{CTRY_CZECH, ETSI10_WORLD, "CZ", 40, 160, 0},
497 	{CTRY_DENMARK, ETSI10_WORLD, "DK", 40, 160,  0},
498 	{CTRY_DOMINICA, FCC2_FCCA, "DM", 40, 160, 0},
499 	{CTRY_DOMINICAN_REPUBLIC, FCC2_FCCA, "DO", 40, 160, 0},
500 	{CTRY_ECUADOR, FCC3_WORLD, "EC", 40, 20, 0},
501 	{CTRY_EGYPT, ETSI3_WORLD, "EG", 40, 160, 0},
502 	{CTRY_EL_SALVADOR, FCC2_WORLD, "SV", 40, 20, 0},
503 	{CTRY_ESTONIA, ETSI10_WORLD, "EE", 40, 160, 0},
504 	{CTRY_ETHIOPIA, ETSI1_WORLD, "ET", 40, 160, 0},
505 	{CTRY_FINLAND, ETSI10_WORLD, "FI", 40, 160, 0},
506 	{CTRY_FRANCE, ETSI10_WORLD, "FR", 40, 160, 0},
507 	{CTRY_FRENCH_GUIANA, ETSI13_WORLD, "GF", 40, 160, 0},
508 	{CTRY_FRENCH_POLYNESIA, ETSI13_WORLD, "PF", 40, 160, 0},
509 	{CTRY_GEORGIA, ETSI4_WORLD, "GE", 40, 160, 0},
510 	{CTRY_GERMANY, ETSI10_WORLD, "DE", 40, 160, 0},
511 	{CTRY_GHANA, FCC3_WORLD, "GH", 40, 160, 0},
512 	{CTRY_GIBRALTAR, ETSI1_WORLD, "GI", 40, 160, 0},
513 	{CTRY_GREECE, ETSI10_WORLD, "GR", 40, 160, 0},
514 	{CTRY_GREENLAND, ETSI1_WORLD, "GL", 40, 160, 0},
515 	{CTRY_GRENADA, FCC3_FCCA, "GD", 40, 160, 0},
516 	{CTRY_GUADELOUPE, ETSI1_WORLD, "GP", 40, 160, 0},
517 	{CTRY_GUAM, FCC3_FCCA, "GU", 40, 160, 0},
518 	{CTRY_GUATEMALA, ETSI1_WORLD, "GT", 40, 160, 0},
519 	{CTRY_GUYANA, APL1_ETSIC, "GY", 40, 160, 0},
520 	{CTRY_HAITI, FCC3_FCCA, "HT", 40, 160, 0},
521 	{CTRY_HONDURAS, FCC13_WORLD, "HN", 40, 160, 0},
522 	{CTRY_HONG_KONG, FCC3_WORLD, "HK", 40, 160, 0},
523 	{CTRY_HUNGARY, ETSI10_WORLD, "HU", 40, 160, 0},
524 	{CTRY_ICELAND, ETSI10_WORLD, "IS", 40, 160, 0},
525 	{CTRY_INDIA, APL15_WORLD, "IN", 40, 160, 0},
526 	{CTRY_INDONESIA, APL2_ETSIC, "ID", 40, 20, 0},
527 	{CTRY_IRAQ, ETSI1_WORLD, "IQ", 40, 160, 0},
528 	{CTRY_IRELAND, ETSI10_WORLD, "IE", 40, 160, 0},
529 	{CTRY_ISRAEL, ETSI3_WORLD, "IL", 40, 160, 0},
530 	{CTRY_ITALY, ETSI10_WORLD, "IT", 40, 160,  0},
531 	{CTRY_JAMAICA, FCC13_WORLD, "JM", 40, 160, 0},
532 	{CTRY_JORDAN, APL4_WORLD, "JO", 40, 160, 0},
533 	{CTRY_KAZAKHSTAN, NULL1_WORLD, "KZ", 40, 0, 0},
534 	{CTRY_KENYA, APL12_WORLD, "KE", 40, 160, 0},
535 	{CTRY_KOREA_ROC, APL9_WORLD, "KR", 40, 160, 0},
536 	{CTRY_KUWAIT, ETSI3_WORLD, "KW", 40, 160, 0},
537 	{CTRY_LATVIA, ETSI10_WORLD, "LV", 40, 160, 0},
538 	{CTRY_LEBANON, FCC3_WORLD, "LB", 40, 160, 0},
539 	{CTRY_LESOTHO, ETSI1_WORLD, "LS", 40, 160, 0},
540 	{CTRY_LIECHTENSTEIN, ETSI10_WORLD, "LI", 40, 160, 0},
541 	{CTRY_LITHUANIA, ETSI10_WORLD, "LT", 40, 160, 0},
542 	{CTRY_LUXEMBOURG, ETSI10_WORLD, "LU", 40, 160, 0},
543 	{CTRY_MACAU, FCC3_WORLD, "MO", 40, 160, 0},
544 	{CTRY_MACEDONIA, ETSI13_WORLD, "MK", 40, 160, 0},
545 	{CTRY_MALAWI, ETSI1_WORLD, "MW", 40, 160, 0},
546 	{CTRY_MALAYSIA, FCC11_WORLD, "MY", 40, 160, 0},
547 	{CTRY_MALDIVES, APL6_WORLD, "MV", 40, 160, 0},
548 	{CTRY_MALTA, ETSI10_WORLD, "MT", 40, 160, 0},
549 	{CTRY_MARSHALL_ISLANDS, FCC3_FCCA, "MH", 40, 160, 0},
550 	{CTRY_MARTINIQUE, ETSI13_WORLD, "MQ", 40, 160, 0},
551 	{CTRY_MAURITANIA, ETSI1_WORLD, "MR", 40, 160, 0},
552 	{CTRY_MAURITIUS, ETSI13_WORLD, "MU", 40, 160, 0},
553 	{CTRY_MAYOTTE, ETSI1_WORLD, "YT", 40, 160, 0},
554 	{CTRY_MEXICO, FCC3_ETSIC, "MX", 40, 160, 0},
555 	{CTRY_MICRONESIA, FCC3_FCCA, "FM", 40, 160, 0},
556 	{CTRY_MOLDOVA, ETSI13_WORLD, "MD", 40, 160, 0},
557 	{CTRY_MONACO, ETSI13_WORLD, "MC", 40, 160, 0},
558 	{CTRY_MONGOLIA, FCC3_WORLD, "MN", 40, 160, 0},
559 	{CTRY_MONTENEGRO, ETSI13_WORLD, "ME", 40, 160, 0},
560 	{CTRY_MOROCCO, ETSI3_WORLD, "MA", 40, 160, 0},
561 	{CTRY_NAMIBIA, APL20_WORLD, "NA", 40, 160, 0},
562 	{CTRY_NEPAL, APL23_WORLD, "NP", 40, 160, 0},
563 	{CTRY_NETHERLANDS, ETSI10_WORLD, "NL", 40, 160, 0},
564 	{CTRY_NETHERLANDS_ANTILLES, ETSI13_WORLD, "AN", 40, 160, 0},
565 	{CTRY_NEW_ZEALAND, FCC3_ETSIC, "NZ", 40, 160, 0},
566 	{CTRY_NIGERIA, APL8_WORLD, "NG", 40, 160, 0},
567 	{CTRY_NORTHERN_MARIANA_ISLANDS, FCC3_FCCA, "MP", 40, 160, 0},
568 	{CTRY_NICARAGUA, FCC3_FCCA, "NI", 40, 160, 0},
569 	{CTRY_NORWAY, ETSI10_WORLD, "NO", 40, 160, 0},
570 	{CTRY_OMAN, ETSI1_WORLD, "OM", 40, 160, 0},
571 	{CTRY_PAKISTAN, APL1_ETSIC, "PK", 40, 160, 0},
572 	{CTRY_PALAU, FCC3_FCCA, "PW", 40, 160, 0},
573 	{CTRY_PANAMA, FCC14_FCCB, "PA", 40, 160, 0},
574 	{CTRY_PAPUA_NEW_GUINEA, FCC3_WORLD, "PG", 40, 160, 0},
575 	{CTRY_PARAGUAY, FCC3_WORLD, "PY", 40, 160, 0},
576 	{CTRY_PERU, FCC3_WORLD, "PE", 40, 160, 0},
577 	{CTRY_PHILIPPINES, FCC3_WORLD, "PH", 40, 160, 0},
578 	{CTRY_POLAND, ETSI10_WORLD, "PL", 40, 160, 0},
579 	{CTRY_PORTUGAL, ETSI10_WORLD, "PT", 40, 160, 0},
580 	{CTRY_PUERTO_RICO, FCC3_FCCA, "PR", 40, 160, 0},
581 	{CTRY_QATAR, ETSI14_WORLD, "QA", 40, 160, 0},
582 	{CTRY_REUNION, ETSI1_WORLD, "RE", 40, 160, 0},
583 	{CTRY_ROMANIA, ETSI10_WORLD, "RO", 40, 160, 0},
584 	{CTRY_RUSSIA, ETSI8_WORLD, "RU", 40, 160, 0},
585 	{CTRY_RWANDA, FCC3_WORLD, "RW", 40, 160, 0},
586 	{CTRY_SAINT_BARTHELEMY, ETSI1_WORLD, "BL", 40, 160, 0},
587 	{CTRY_SAINT_KITTS_AND_NEVIS, APL10_WORLD, "KN", 40, 160, 0},
588 	{CTRY_SAINT_LUCIA, APL10_WORLD, "LC", 40, 160, 0},
589 	{CTRY_SAINT_MARTIN, ETSI1_WORLD, "MF", 40, 160, 0},
590 	{CTRY_SAINT_PIERRE_AND_MIQUELON, ETSI13_WORLD, "PM", 40, 160, 0},
591 	{CTRY_SAINT_VINCENT_AND_THE_GRENADIENS, ETSI13_WORLD, "VC",
592 	 40, 160, 0},
593 	{CTRY_SAMOA, ETSI1_WORLD, "WS", 40, 40, 0},
594 	{CTRY_SAUDI_ARABIA, ETSI1_WORLD, "SA", 40, 160, 0},
595 	{CTRY_SENEGAL, FCC13_WORLD, "SN", 40, 160, 0},
596 	{CTRY_SERBIA, ETSI13_WORLD, "RS", 40, 160, 0},
597 	{CTRY_SINGAPORE, FCC3_WORLD, "SG", 40, 160, 0},
598 	{CTRY_SLOVAKIA, ETSI10_WORLD, "SK", 40, 160, 0},
599 	{CTRY_SLOVENIA, ETSI10_WORLD, "SI", 40, 160, 0},
600 	{CTRY_SOUTH_AFRICA, FCC3_WORLD, "ZA", 40, 160, 0},
601 	{CTRY_SPAIN, ETSI10_WORLD, "ES", 40, 160, 0},
602 	{CTRY_SURINAME, ETSI1_WORLD, "SR", 40, 160, 0},
603 	{CTRY_SRI_LANKA, FCC3_WORLD, "LK", 40, 20, 0},
604 	{CTRY_SWEDEN, ETSI10_WORLD, "SE", 40, 160, 0},
605 	{CTRY_SWITZERLAND, ETSI10_WORLD, "CH", 40, 160, 0},
606 	{CTRY_TAIWAN, FCC3_FCCA, "TW", 40, 160, 0},
607 	{CTRY_TANZANIA, APL1_WORLD, "TZ", 40, 160, 0},
608 	{CTRY_THAILAND, FCC3_WORLD, "TH", 40, 160, 0},
609 	{CTRY_TOGO, ETSI1_WORLD, "TG", 40, 40, 0},
610 	{CTRY_TRINIDAD_Y_TOBAGO, FCC3_WORLD, "TT", 40, 160, 0},
611 	{CTRY_TUNISIA, ETSI3_WORLD, "TN", 40, 160, 0},
612 	{CTRY_TURKEY, ETSI13_WORLD, "TR", 40, 160, 0},
613 	{CTRY_TURKS_AND_CAICOS, FCC3_WORLD, "TC", 40, 160, 0},
614 	{CTRY_UGANDA, FCC3_WORLD, "UG", 40, 160, 0},
615 	{CTRY_UKRAINE, ETSI9_WORLD, "UA", 40, 160, 0},
616 	{CTRY_UAE, FCC3_WORLD, "AE", 40, 160, 0},
617 	{CTRY_UNITED_KINGDOM, ETSI10_WORLD, "GB", 40, 160, 0},
618 	{CTRY_UNITED_STATES, FCC10_FCCA, "US", 40, 160, 0},
619 	{CTRY_URUGUAY, FCC2_WORLD, "UY", 40, 160, 0},
620 	{CTRY_UZBEKISTAN, ETSI3_WORLD, "UZ", 40, 160, 0},
621 	{CTRY_VANUATU, FCC3_WORLD, "VU", 40, 160, 0},
622 	{CTRY_VENEZUELA, FCC2_ETSIC, "VE", 40, 160, 0},
623 	{CTRY_VIET_NAM, FCC3_WORLD, "VN", 40, 80, 0},
624 	{CTRY_VIRGIN_ISLANDS, FCC3_FCCA, "VI", 40, 160, 0},
625 	{CTRY_WALLIS_AND_FUTUNA, ETSI1_WORLD, "WF", 40, 160, 0},
626 	{CTRY_YEMEN, NULL1_WORLD, "YE", 40, 0, 0},
627 	{CTRY_ZIMBABWE, ETSI1_WORLD, "ZW", 40, 160, 0},
628 	{CTRY_JAPAN, MKK5_MKKC, "JP", 40, 160, 0},
629 	{CTRY_XA, MKK5_MKKA, "XA", 40, 160, 0},
630 };
631 #else
632 const struct country_code_to_reg_domain g_all_countries[] = {
633 	{CTRY_AFGHANISTAN, ETSI1_WORLD, "AF", 40, 160, 0},
634 	{CTRY_ALBANIA, ETSI13_WORLD, "AL", 40, 160, 0},
635 	{CTRY_ALGERIA, APL13_WORLD, "DZ", 40, 160, 0},
636 	{CTRY_AMERICAN_SAMOA, FCC3_FCCA, "AS", 40, 160, 0},
637 	{CTRY_ANGUILLA, ETSI1_WORLD, "AI", 40, 160, 0},
638 	{CTRY_ARGENTINA, APL17_ETSID, "AR", 40, 160, 0},
639 	{CTRY_ARMENIA, ETSI4_WORLD, "AM", 40, 20, 0},
640 	{CTRY_ARUBA, ETSI1_WORLD, "AW", 40, 160, 0},
641 	{CTRY_AUSTRALIA, FCC6_WORLD, "AU", 40, 160, 0},
642 	{CTRY_AUSTRIA, ETSI13_WORLD, "AT", 40, 160, 0},
643 	{CTRY_AZERBAIJAN, ETSI4_WORLD, "AZ", 40, 160, 0},
644 	{CTRY_BAHAMAS, FCC3_WORLD, "BS", 40, 160, 0},
645 	{CTRY_BAHRAIN, APL15_WORLD, "BH", 40, 20, 0},
646 	{CTRY_BANGLADESH, APL1_WORLD, "BD", 40, 160, 0},
647 	{CTRY_BARBADOS, FCC2_WORLD, "BB", 40, 160, 0},
648 	{CTRY_BELARUS, ETSI1_WORLD, "BY", 40, 160, 0},
649 	{CTRY_BELGIUM, ETSI13_WORLD, "BE", 40, 160, 0},
650 	{CTRY_BELIZE, ETSI8_WORLD, "BZ", 40, 160, 0},
651 	{CTRY_BERMUDA, FCC3_FCCA, "BM", 40, 160, 0},
652 	{CTRY_BHUTAN, ETSI1_WORLD, "BT", 40, 160, 0},
653 	{CTRY_BOLIVIA, APL8_WORLD, "BO", 40, 160, 0},
654 	{CTRY_BOSNIA_HERZ, ETSI13_WORLD, "BA", 40, 160, 0},
655 	{CTRY_BRAZIL, FCC3_ETSIC, "BR", 40, 160, 0},
656 	{CTRY_BRUNEI_DARUSSALAM, APL6_WORLD, "BN", 40, 160, 0},
657 	{CTRY_BULGARIA, ETSI13_WORLD, "BG", 40, 160, 0},
658 	{CTRY_BURKINA_FASO, FCC3_WORLD, "BF", 40, 160, 0},
659 	{CTRY_CAMBODIA, ETSI1_WORLD, "KH", 40, 160, 0},
660 	{CTRY_CANADA, FCC3_FCCA, "CA", 40, 160, 0},
661 	{CTRY_CAYMAN_ISLANDS, FCC3_WORLD, "KY", 40, 160, 0},
662 	{CTRY_CENTRAL_AFRICA_REPUBLIC, FCC3_WORLD, "CF", 40, 40, 0},
663 	{CTRY_CHAD, ETSI1_WORLD, "TD", 40, 160, 0},
664 	{CTRY_CHILE, APL23_WORLD, "CL", 40, 160, 0},
665 	{CTRY_CHINA, APL14_WORLD, "CN", 40, 160, 0},
666 	{CTRY_CHRISTMAS_ISLAND, FCC3_WORLD, "CX", 40, 160, 0},
667 	{CTRY_COLOMBIA, FCC3_WORLD, "CO", 40, 160, 0},
668 	{CTRY_COSTA_RICA, FCC3_WORLD, "CR", 40, 20, 0},
669 	{CTRY_COTE_DIVOIRE, FCC3_WORLD, "CI", 40, 160, 0},
670 	{CTRY_CROATIA, ETSI13_WORLD, "HR", 40, 160, 0},
671 	{CTRY_CYPRUS, ETSI13_WORLD, "CY", 40, 160, 0},
672 	{CTRY_CZECH, ETSI13_WORLD, "CZ", 40, 160, 0},
673 	{CTRY_DENMARK, ETSI13_WORLD, "DK", 40, 160,  0},
674 	{CTRY_DOMINICA, FCC2_FCCA, "DM", 40, 160, 0},
675 	{CTRY_DOMINICAN_REPUBLIC, FCC2_FCCA, "DO", 40, 160, 0},
676 	{CTRY_ECUADOR, FCC3_WORLD, "EC", 40, 20, 0},
677 	{CTRY_EGYPT, ETSI3_WORLD, "EG", 40, 160, 0},
678 	{CTRY_EL_SALVADOR, FCC2_WORLD, "SV", 40, 20, 0},
679 	{CTRY_ESTONIA, ETSI13_WORLD, "EE", 40, 160, 0},
680 	{CTRY_ETHIOPIA, ETSI1_WORLD, "ET", 40, 160, 0},
681 	{CTRY_FINLAND, ETSI13_WORLD, "FI", 40, 160, 0},
682 	{CTRY_FRANCE, ETSI13_WORLD, "FR", 40, 160, 0},
683 	{CTRY_FRENCH_GUIANA, ETSI13_WORLD, "GF", 40, 160, 0},
684 	{CTRY_FRENCH_POLYNESIA, ETSI13_WORLD, "PF", 40, 160, 0},
685 	{CTRY_GEORGIA, ETSI4_WORLD, "GE", 40, 160, 0},
686 	{CTRY_GERMANY, ETSI13_WORLD, "DE", 40, 160, 0},
687 	{CTRY_GHANA, FCC3_WORLD, "GH", 40, 160, 0},
688 	{CTRY_GIBRALTAR, ETSI1_WORLD, "GI", 40, 160, 0},
689 	{CTRY_GREECE, ETSI13_WORLD, "GR", 40, 160, 0},
690 	{CTRY_GREENLAND, ETSI1_WORLD, "GL", 40, 160, 0},
691 	{CTRY_GRENADA, FCC3_FCCA, "GD", 40, 160, 0},
692 	{CTRY_GUADELOUPE, ETSI1_WORLD, "GP", 40, 160, 0},
693 	{CTRY_GUAM, FCC3_FCCA, "GU", 40, 160, 0},
694 	{CTRY_GUATEMALA, ETSI1_WORLD, "GT", 40, 160, 0},
695 	{CTRY_GUYANA, APL1_ETSIC, "GY", 40, 160, 0},
696 	{CTRY_HAITI, FCC3_FCCA, "HT", 40, 160, 0},
697 	{CTRY_HONDURAS, FCC13_WORLD, "HN", 40, 160, 0},
698 	{CTRY_HONG_KONG, FCC3_WORLD, "HK", 40, 160, 0},
699 	{CTRY_HUNGARY, ETSI13_WORLD, "HU", 40, 160, 0},
700 	{CTRY_ICELAND, ETSI13_WORLD, "IS", 40, 160, 0},
701 	{CTRY_INDIA, APL15_WORLD, "IN", 40, 160, 0},
702 	{CTRY_INDONESIA, APL2_ETSIC, "ID", 40, 20, 0},
703 	{CTRY_IRAQ, ETSI1_WORLD, "IQ", 40, 160, 0},
704 	{CTRY_IRELAND, ETSI13_WORLD, "IE", 40, 160, 0},
705 	{CTRY_ISRAEL, ETSI3_WORLD, "IL", 40, 160, 0},
706 	{CTRY_ITALY, ETSI13_WORLD, "IT", 40, 160,  0},
707 	{CTRY_JAMAICA, FCC13_WORLD, "JM", 40, 160, 0},
708 	{CTRY_JORDAN, APL4_WORLD, "JO", 40, 160, 0},
709 	{CTRY_KAZAKHSTAN, NULL1_WORLD, "KZ", 40, 0, 0},
710 	{CTRY_KENYA, APL12_WORLD, "KE", 40, 160, 0},
711 	{CTRY_KOREA_ROC, APL9_WORLD, "KR", 40, 160, 0},
712 	{CTRY_KUWAIT, ETSI3_WORLD, "KW", 40, 160, 0},
713 	{CTRY_LATVIA, ETSI13_WORLD, "LV", 40, 160, 0},
714 	{CTRY_LEBANON, FCC3_WORLD, "LB", 40, 160, 0},
715 	{CTRY_LESOTHO, ETSI1_WORLD, "LS", 40, 160, 0},
716 	{CTRY_LIECHTENSTEIN, ETSI13_WORLD, "LI", 40, 160, 0},
717 	{CTRY_LITHUANIA, ETSI13_WORLD, "LT", 40, 160, 0},
718 	{CTRY_LUXEMBOURG, ETSI13_WORLD, "LU", 40, 160, 0},
719 	{CTRY_MACAU, FCC3_WORLD, "MO", 40, 160, 0},
720 	{CTRY_MACEDONIA, ETSI13_WORLD, "MK", 40, 160, 0},
721 	{CTRY_MALAWI, ETSI1_WORLD, "MW", 40, 160, 0},
722 	{CTRY_MALAYSIA, FCC11_WORLD, "MY", 40, 160, 0},
723 	{CTRY_MALDIVES, APL6_WORLD, "MV", 40, 160, 0},
724 	{CTRY_MALTA, ETSI13_WORLD, "MT", 40, 160, 0},
725 	{CTRY_MARSHALL_ISLANDS, FCC3_FCCA, "MH", 40, 160, 0},
726 	{CTRY_MARTINIQUE, ETSI13_WORLD, "MQ", 40, 160, 0},
727 	{CTRY_MAURITANIA, ETSI1_WORLD, "MR", 40, 160, 0},
728 	{CTRY_MAURITIUS, ETSI13_WORLD, "MU", 40, 160, 0},
729 	{CTRY_MAYOTTE, ETSI1_WORLD, "YT", 40, 160, 0},
730 	{CTRY_MEXICO, FCC3_ETSIC, "MX", 40, 160, 0},
731 	{CTRY_MICRONESIA, FCC3_FCCA, "FM", 40, 160, 0},
732 	{CTRY_MOLDOVA, ETSI13_WORLD, "MD", 40, 160, 0},
733 	{CTRY_MONACO, ETSI13_WORLD, "MC", 40, 160, 0},
734 	{CTRY_MONGOLIA, FCC3_WORLD, "MN", 40, 160, 0},
735 	{CTRY_MONTENEGRO, ETSI13_WORLD, "ME", 40, 160, 0},
736 	{CTRY_MOROCCO, ETSI3_WORLD, "MA", 40, 160, 0},
737 	{CTRY_NAMIBIA, APL20_WORLD, "NA", 40, 160, 0},
738 	{CTRY_NEPAL, APL23_WORLD, "NP", 40, 160, 0},
739 	{CTRY_NETHERLANDS, ETSI13_WORLD, "NL", 40, 160, 0},
740 	{CTRY_NETHERLANDS_ANTILLES, ETSI13_WORLD, "AN", 40, 160, 0},
741 	{CTRY_NEW_ZEALAND, FCC3_ETSIC, "NZ", 40, 160, 0},
742 	{CTRY_NIGERIA, APL8_WORLD, "NG", 40, 160, 0},
743 	{CTRY_NORTHERN_MARIANA_ISLANDS, FCC3_FCCA, "MP", 40, 160, 0},
744 	{CTRY_NICARAGUA, FCC3_FCCA, "NI", 40, 160, 0},
745 	{CTRY_NORWAY, ETSI13_WORLD, "NO", 40, 160, 0},
746 	{CTRY_OMAN, ETSI1_WORLD, "OM", 40, 160, 0},
747 	{CTRY_PAKISTAN, APL1_ETSIC, "PK", 40, 160, 0},
748 	{CTRY_PALAU, FCC3_FCCA, "PW", 40, 160, 0},
749 	{CTRY_PANAMA, FCC14_FCCB, "PA", 40, 160, 0},
750 	{CTRY_PAPUA_NEW_GUINEA, FCC3_WORLD, "PG", 40, 160, 0},
751 	{CTRY_PARAGUAY, FCC3_WORLD, "PY", 40, 160, 0},
752 	{CTRY_PERU, FCC3_WORLD, "PE", 40, 160, 0},
753 	{CTRY_PHILIPPINES, FCC3_WORLD, "PH", 40, 160, 0},
754 	{CTRY_POLAND, ETSI13_WORLD, "PL", 40, 160, 0},
755 	{CTRY_PORTUGAL, ETSI13_WORLD, "PT", 40, 160, 0},
756 	{CTRY_PUERTO_RICO, FCC3_FCCA, "PR", 40, 160, 0},
757 	{CTRY_QATAR, ETSI14_WORLD, "QA", 40, 160, 0},
758 	{CTRY_REUNION, ETSI1_WORLD, "RE", 40, 160, 0},
759 	{CTRY_ROMANIA, ETSI13_WORLD, "RO", 40, 160, 0},
760 	{CTRY_RUSSIA, ETSI8_WORLD, "RU", 40, 160, 0},
761 	{CTRY_RWANDA, FCC3_WORLD, "RW", 40, 160, 0},
762 	{CTRY_SAINT_BARTHELEMY, ETSI1_WORLD, "BL", 40, 160, 0},
763 	{CTRY_SAINT_KITTS_AND_NEVIS, APL10_WORLD, "KN", 40, 160, 0},
764 	{CTRY_SAINT_LUCIA, APL10_WORLD, "LC", 40, 160, 0},
765 	{CTRY_SAINT_MARTIN, ETSI1_WORLD, "MF", 40, 160, 0},
766 	{CTRY_SAINT_PIERRE_AND_MIQUELON, ETSI13_WORLD, "PM", 40, 160, 0},
767 	{CTRY_SAINT_VINCENT_AND_THE_GRENADIENS, ETSI13_WORLD, "VC",
768 	 40, 160, 0},
769 	{CTRY_SAMOA, ETSI1_WORLD, "WS", 40, 40, 0},
770 	{CTRY_SAUDI_ARABIA, ETSI1_WORLD, "SA", 40, 160, 0},
771 	{CTRY_SENEGAL, FCC13_WORLD, "SN", 40, 160, 0},
772 	{CTRY_SERBIA, ETSI13_WORLD, "RS", 40, 160, 0},
773 	{CTRY_SINGAPORE, FCC3_WORLD, "SG", 40, 160, 0},
774 	{CTRY_SLOVAKIA, ETSI13_WORLD, "SK", 40, 160, 0},
775 	{CTRY_SLOVENIA, ETSI13_WORLD, "SI", 40, 160, 0},
776 	{CTRY_SOUTH_AFRICA, FCC3_WORLD, "ZA", 40, 160, 0},
777 	{CTRY_SPAIN, ETSI13_WORLD, "ES", 40, 160, 0},
778 	{CTRY_SURINAME, ETSI1_WORLD, "SR", 40, 160, 0},
779 	{CTRY_SRI_LANKA, FCC3_WORLD, "LK", 40, 20, 0},
780 	{CTRY_SWEDEN, ETSI13_WORLD, "SE", 40, 160, 0},
781 	{CTRY_SWITZERLAND, ETSI13_WORLD, "CH", 40, 160, 0},
782 	{CTRY_TAIWAN, FCC3_FCCA, "TW", 40, 160, 0},
783 	{CTRY_TANZANIA, APL1_WORLD, "TZ", 40, 160, 0},
784 	{CTRY_THAILAND, FCC3_WORLD, "TH", 40, 160, 0},
785 	{CTRY_TOGO, ETSI1_WORLD, "TG", 40, 40, 0},
786 	{CTRY_TRINIDAD_Y_TOBAGO, FCC3_WORLD, "TT", 40, 160, 0},
787 	{CTRY_TUNISIA, ETSI3_WORLD, "TN", 40, 160, 0},
788 	{CTRY_TURKEY, ETSI13_WORLD, "TR", 40, 160, 0},
789 	{CTRY_TURKS_AND_CAICOS, FCC3_WORLD, "TC", 40, 160, 0},
790 	{CTRY_UGANDA, FCC3_WORLD, "UG", 40, 160, 0},
791 	{CTRY_UKRAINE, ETSI9_WORLD, "UA", 40, 160, 0},
792 	{CTRY_UAE, FCC3_WORLD, "AE", 40, 160, 0},
793 	{CTRY_UNITED_KINGDOM, ETSI13_WORLD, "GB", 40, 160, 0},
794 	{CTRY_UNITED_STATES, FCC8_FCCA, "US", 40, 160, 0},
795 	{CTRY_URUGUAY, FCC2_WORLD, "UY", 40, 160, 0},
796 	{CTRY_UZBEKISTAN, ETSI3_WORLD, "UZ", 40, 160, 0},
797 	{CTRY_VANUATU, FCC3_WORLD, "VU", 40, 160, 0},
798 	{CTRY_VENEZUELA, FCC2_ETSIC, "VE", 40, 160, 0},
799 	{CTRY_VIET_NAM, FCC3_WORLD, "VN", 40, 80, 0},
800 	{CTRY_VIRGIN_ISLANDS, FCC3_FCCA, "VI", 40, 160, 0},
801 	{CTRY_WALLIS_AND_FUTUNA, ETSI1_WORLD, "WF", 40, 160, 0},
802 	{CTRY_YEMEN, NULL1_WORLD, "YE", 40, 0, 0},
803 	{CTRY_ZIMBABWE, ETSI1_WORLD, "ZW", 40, 160, 0},
804 	{CTRY_JAPAN, MKK5_MKKC, "JP", 40, 160, 0},
805 	{CTRY_XA, MKK5_MKKA, "XA", 40, 160, 0},
806 };
807 #endif
808 #endif
809 
810 enum reg_domains_2g {
811 	FCCA,
812 	FCCB,
813 	WORLD,
814 	MKKA,
815 	MKKC,
816 	ETSIC,
817 	ETSID,
818 	WORLD_2G_1,
819 	WORLD_2G_2,
820 	WORLD_2G_3,
821 };
822 
823 enum reg_domains_5g {
824 	NULL1,
825 	FCC1,
826 	FCC2,
827 	FCC3,
828 	FCC4,
829 	FCC5,
830 	FCC6,
831 	FCC8,
832 	FCC10,
833 	FCC11,
834 	FCC13,
835 	FCC14,
836 	ETSI1,
837 	ETSI3,
838 	ETSI4,
839 	ETSI8,
840 	ETSI9,
841 	ETSI10,
842 	ETSI11,
843 	ETSI12,
844 	ETSI13,
845 	ETSI14,
846 	APL1,
847 	APL2,
848 	APL4,
849 	APL6,
850 	APL8,
851 	APL9,
852 	APL10,
853 	APL11,
854 	APL12,
855 	APL13,
856 	APL14,
857 	APL15,
858 	APL16,
859 	APL17,
860 	APL19,
861 	APL20,
862 	APL23,
863 	MKK3,
864 	MKK4,
865 	MKK5,
866 	MKK9,
867 	MKK10,
868 	MKK11,
869 	MKK16,
870 	WORLD_5G_1,
871 	WORLD_5G_2,
872 };
873 
874 
875 const struct reg_domain_pair g_reg_dmn_pairs[] = {
876 	{NULL1_WORLD, NULL1, WORLD},
877 
878 	{FCC1_FCCA, FCC1, FCCA},
879 	{FCC1_WORLD, FCC1, WORLD},
880 	{FCC2_FCCA, FCC2, FCCA},
881 	{FCC2_WORLD, FCC2, WORLD},
882 	{FCC2_ETSIC, FCC2, ETSIC},
883 	{FCC3_FCCA, FCC3, FCCA},
884 	{FCC3_WORLD, FCC3, WORLD},
885 	{FCC3_ETSIC, FCC3, ETSIC},
886 	{FCC4_FCCA, FCC4, FCCA},
887 	{FCC5_FCCA, FCC5, FCCA},
888 	{FCC6_WORLD, FCC6, WORLD},
889 	{FCC6_FCCA, FCC6, FCCA},
890 	{FCC8_FCCA, FCC8, FCCA},
891 	{FCC11_WORLD, FCC11, WORLD},
892 	{FCC13_WORLD, FCC13, WORLD},
893 	{FCC14_FCCB, FCC14, FCCB},
894 
895 	{ETSI1_WORLD, ETSI1, WORLD},
896 	{ETSI3_WORLD, ETSI3, WORLD},
897 	{ETSI4_WORLD, ETSI4, WORLD},
898 	{ETSI8_WORLD, ETSI8, WORLD},
899 	{ETSI9_WORLD, ETSI9, WORLD},
900 	{ETSI11_WORLD, ETSI11, WORLD},
901 	{ETSI12_WORLD, ETSI12, WORLD},
902 	{ETSI13_WORLD, ETSI13, WORLD},
903 	{ETSI14_WORLD, ETSI14, WORLD},
904 
905 	{APL1_WORLD, APL1, WORLD},
906 	{APL1_ETSIC, APL1, ETSIC},
907 	{APL2_WORLD, APL2, WORLD},
908 	{APL2_ETSIC, APL2, ETSIC},
909 	{APL4_WORLD, APL4, WORLD},
910 	{APL6_WORLD, APL6, WORLD},
911 	{APL8_WORLD, APL8, WORLD},
912 	{APL9_WORLD, APL9, WORLD},
913 	{APL10_WORLD, APL10, WORLD},
914 	{APL11_FCCA, APL11, FCCA},
915 	{APL12_WORLD, APL12, WORLD},
916 	{APL13_WORLD, APL13, WORLD},
917 	{APL14_WORLD, APL14, WORLD},
918 	{APL15_WORLD, APL15, WORLD},
919 	{APL16_WORLD, APL16, WORLD},
920 	{APL17_ETSID, APL17, ETSID},
921 	{APL19_ETSIC, APL19, ETSIC},
922 	{APL20_WORLD, APL20, WORLD},
923 	{APL23_WORLD, APL23, WORLD},
924 
925 	{MKK3_MKKC, MKK3, MKKC},
926 	{MKK5_MKKA, MKK5, MKKA},
927 	{MKK5_MKKC, MKK5, MKKC},
928 	{MKK11_MKKC, MKK11, MKKC},
929 	{MKK16_MKKC, MKK16, MKKC},
930 
931 	{WORLD_60, WORLD_5G_2, WORLD_2G_3},
932 	{WORLD_61, WORLD_5G_2, WORLD_2G_3},
933 	{WORLD_62, WORLD_5G_2, WORLD_2G_3},
934 	{WORLD_63, WORLD_5G_1, WORLD_2G_2},
935 	{WORLD_65, WORLD_5G_1, WORLD_2G_2},
936 	{WORLD_64, WORLD_5G_1, WORLD_2G_1},
937 	{WORLD_66, WORLD_5G_2, WORLD_2G_1},
938 	{WORLD_69, WORLD_5G_2, WORLD_2G_1},
939 	{WORLD_67, WORLD_5G_2, WORLD_2G_2},
940 	{WORLD_68, WORLD_5G_2, WORLD_2G_2},
941 	{WORLD_6A, WORLD_5G_2, WORLD_2G_2},
942 	{WORLD_6C, WORLD_5G_2, WORLD_2G_2},
943 };
944 
945 enum reg_rules_2g {
946 
947 	CHAN_1_11_1,
948 	CHAN_1_11_2,
949 	CHAN_1_11_3,
950 	CHAN_1_13_1,
951 	CHAN_1_13_2,
952 	CHAN_1_13_3,
953 	CHAN_1_13_4,
954 	CHAN_12_12_1,
955 	CHAN_12_13_1,
956 	CHAN_14_1,
957 	CHAN_14_2,
958 };
959 
960 const struct regulatory_rule reg_rules_2g[] = {
961 
962 	[CHAN_1_11_1] = {2402, 2472, 40, 30, 0},
963 	[CHAN_1_11_2] = {2402, 2472, 40, 20, 0},
964 	[CHAN_1_11_3] = {2402, 2472, 40, 36, 0},
965 	[CHAN_1_13_1] = {2402, 2482, 40, 20, 0},
966 	[CHAN_1_13_2] = {2402, 2482, 40, 30, 0},
967 	[CHAN_1_13_3] = {2402, 2482, 40, 36, 0},
968 	[CHAN_1_13_4] = {2402, 2482, 40, 23, 0},
969 	[CHAN_12_12_1] = {2457, 2477, 40, 20, REGULATORY_CHAN_NO_IR},
970 	[CHAN_12_13_1] = {2457, 2482, 40, 20, REGULATORY_CHAN_NO_IR},
971 	[CHAN_14_1] = {2474, 2494, 20, 23, REGULATORY_CHAN_NO_OFDM},
972 	[CHAN_14_2] = {2474, 2494, 20, 20,
973 		       REGULATORY_CHAN_NO_OFDM | REGULATORY_CHAN_NO_IR},
974 };
975 
976 
977 const struct regdomain regdomains_2g[] = {
978 
979 	[FCCA] = {CTL_FCC, DFS_UNINIT_REGION, 0, 6, 1, {CHAN_1_11_1} },
980 	[FCCB] = {CTL_FCC, DFS_UNINIT_REGION, 0, 6, 1, {CHAN_1_11_3} },
981 	[WORLD] = {CTL_ETSI, DFS_UNINIT_REGION, 0, 0, 1, {CHAN_1_13_1} },
982 	[MKKA] = {CTL_MKK, DFS_UNINIT_REGION, 0, 0, 2, {CHAN_1_13_4,
983 			   CHAN_14_1} },
984 	[MKKC] = {CTL_MKK, DFS_UNINIT_REGION, 0, 0, 1, {CHAN_1_13_4} },
985 	[ETSIC] = {CTL_ETSI, DFS_UNINIT_REGION, 0, 0, 1, {CHAN_1_13_2} },
986 	[ETSID] = {CTL_ETSI, DFS_UNINIT_REGION, 0, 0, 1, {CHAN_1_13_3} },
987 	[WORLD_2G_1] = {CTL_NONE, DFS_UNINIT_REGION, 0, 0, 1, {CHAN_1_11_2} },
988 	[WORLD_2G_2] = {CTL_NONE, DFS_UNINIT_REGION, 0, 0, 2,
989 			{CHAN_1_11_2, CHAN_12_13_1} },
990 	[WORLD_2G_3] = {CTL_NONE, DFS_UNINIT_REGION, 0, 0, 2,
991 			{CHAN_1_11_2, CHAN_12_12_1} },
992 };
993 
994 
995 enum reg_rules_5g {
996 
997 	CHAN_4910_4990_1,
998 	CHAN_4940_4990_1,
999 	CHAN_5030_5090_1,
1000 	CHAN_5170_5250_1,
1001 	CHAN_5170_5250_2,
1002 	CHAN_5170_5250_3,
1003 	CHAN_5170_5250_4,
1004 	CHAN_5170_5250_5,
1005 	CHAN_5170_5250_6,
1006 	CHAN_5170_5250_7,
1007 	CHAN_5170_5250_8,
1008 	CHAN_5170_5250_9,
1009 	CHAN_5170_5330_1,
1010 	CHAN_5170_5330_2,
1011 	CHAN_5250_5330_1,
1012 	CHAN_5250_5330_2,
1013 	CHAN_5250_5330_3,
1014 	CHAN_5250_5330_4,
1015 	CHAN_5250_5330_5,
1016 	CHAN_5250_5330_6,
1017 	CHAN_5250_5330_7,
1018 	CHAN_5250_5330_8,
1019 	CHAN_5250_5330_9,
1020 	CHAN_5250_5330_10,
1021 	CHAN_5250_5330_11,
1022 	CHAN_5250_5330_12,
1023 	CHAN_5250_5330_13,
1024 	CHAN_5490_5730_1,
1025 	CHAN_5490_5730_2,
1026 	CHAN_5490_5730_3,
1027 	CHAN_5490_5730_4,
1028 	CHAN_5490_5730_5,
1029 	CHAN_5490_5730_6,
1030 	CHAN_5490_5730_7,
1031 	CHAN_5490_5710_1,
1032 	CHAN_5490_5710_2,
1033 	CHAN_5490_5710_3,
1034 	CHAN_5490_5710_4,
1035 	CHAN_5490_5710_5,
1036 	CHAN_5490_5710_6,
1037 	CHAN_5490_5710_7,
1038 	CHAN_5490_5590_1,
1039 	CHAN_5490_5590_2,
1040 	CHAN_5490_5590_3,
1041 	CHAN_5490_5570_1,
1042 	CHAN_5490_5650_2,
1043 	CHAN_5490_5670_1,
1044 	CHAN_5490_5670_2,
1045 	CHAN_5490_5630_1,
1046 	CHAN_5650_5730_1,
1047 	CHAN_5650_5730_2,
1048 	CHAN_5650_5730_3,
1049 	CHAN_5735_5835_1,
1050 	CHAN_5735_5835_2,
1051 	CHAN_5735_5835_3,
1052 	CHAN_5735_5835_4,
1053 	CHAN_5735_5835_5,
1054 	CHAN_5735_5835_6,
1055 	CHAN_5735_5835_7,
1056 	CHAN_5735_5835_8,
1057 	CHAN_5735_5875_1,
1058 	CHAN_5735_5875_2,
1059 	CHAN_5735_5875_3,
1060 	CHAN_5735_5875_4,
1061 	CHAN_5735_5875_5,
1062 	CHAN_5735_5815_1,
1063 	CHAN_5735_5775_1,
1064 	CHAN_5835_5855_1,
1065 	CHAN_5855_5875_1,
1066 	CHAN_5850_5925_1,
1067 	CHAN_5850_5925_2,
1068 };
1069 
1070 const struct regulatory_rule reg_rules_5g[] = {
1071 
1072 	[CHAN_4910_4990_1] = {4910, 4990, 20, 20, 0},
1073 	[CHAN_4940_4990_1] = {4940, 4990, 20, 33, 0},
1074 	[CHAN_5030_5090_1] = {5030, 5090, 20, 20, 0},
1075 	[CHAN_5170_5250_1] = {5170, 5250, 80, 17, 0},
1076 	[CHAN_5170_5250_2] = {5170, 5250, 80, 23, 0},
1077 	[CHAN_5170_5250_3] = {5170, 5250, 80, 20, 0},
1078 	[CHAN_5170_5250_4] = {5170, 5250, 80, 30, 0},
1079 	[CHAN_5170_5250_5] = {5170, 5250, 80, 24, 0},
1080 	[CHAN_5170_5250_6] = {5170, 5250, 80, 18, 0},
1081 	[CHAN_5170_5250_7] = {5170, 5250, 80, 20, REGULATORY_CHAN_INDOOR_ONLY},
1082 	[CHAN_5170_5250_8] = {5170, 5250, 80, 23, REGULATORY_CHAN_INDOOR_ONLY},
1083 	[CHAN_5170_5250_9] = {5170, 5250, 40, 30, 0},
1084 	[CHAN_5170_5330_1] = {5170, 5330, 160, 20, REGULATORY_CHAN_NO_IR},
1085 	[CHAN_5170_5330_2] = {5170, 5330, 160, 24, 0},
1086 	[CHAN_5250_5330_1] = {5250, 5330, 80, 23, REGULATORY_CHAN_RADAR},
1087 	[CHAN_5250_5330_2] = {5250, 5330, 80, 20, REGULATORY_CHAN_RADAR},
1088 	[CHAN_5250_5330_3] = {5250, 5330, 80, 18, REGULATORY_CHAN_RADAR},
1089 	[CHAN_5250_5330_4] = {5250, 5330, 80, 30, REGULATORY_CHAN_RADAR},
1090 	[CHAN_5250_5330_5] = {5250, 5330, 80, 23, 0},
1091 	[CHAN_5250_5330_6] = {5250, 5330, 80, 30, 0},
1092 	[CHAN_5250_5330_7] = {5250, 5330, 80, 24, REGULATORY_CHAN_RADAR},
1093 	[CHAN_5250_5330_8] = {5250, 5330, 80, 36, 0},
1094 	[CHAN_5250_5330_9] = {5250, 5330, 80, 20, 0},
1095 	[CHAN_5250_5330_10] = {5250, 5330, 80, 24, 0},
1096 	[CHAN_5250_5330_11] = {5250, 5330, 80, 20, REGULATORY_CHAN_INDOOR_ONLY},
1097 	[CHAN_5250_5330_12] = {5250, 5330, 80, 23, REGULATORY_CHAN_RADAR |
1098 						   REGULATORY_CHAN_INDOOR_ONLY},
1099 	[CHAN_5250_5330_13] = {5250, 5330, 40, 30, REGULATORY_CHAN_RADAR},
1100 	[CHAN_5490_5730_1] = {5490, 5730, 160, 24, REGULATORY_CHAN_RADAR},
1101 	[CHAN_5490_5730_2] = {5490, 5730, 160, 20, REGULATORY_CHAN_NO_IR},
1102 	[CHAN_5490_5730_3] = {5490, 5730, 160, 30, 0},
1103 	[CHAN_5490_5730_4] = {5490, 5730, 160, 24, 0},
1104 	[CHAN_5490_5730_5] = {5490, 5730, 160, 30, REGULATORY_CHAN_RADAR},
1105 	[CHAN_5490_5730_6] = {5490, 5730, 160, 23, REGULATORY_CHAN_RADAR},
1106 	[CHAN_5490_5730_7] = {5490, 5730, 160, 20, REGULATORY_CHAN_RADAR},
1107 	[CHAN_5490_5710_1] = {5490, 5710, 160, 30, REGULATORY_CHAN_RADAR},
1108 	[CHAN_5490_5710_2] = {5490, 5710, 160, 20, REGULATORY_CHAN_RADAR},
1109 	[CHAN_5490_5710_3] = {5490, 5710, 160, 27, REGULATORY_CHAN_RADAR},
1110 	[CHAN_5490_5710_4] = {5490, 5710,  40, 30, REGULATORY_CHAN_RADAR},
1111 	[CHAN_5490_5710_5] = {5490, 5710, 160, 24, REGULATORY_CHAN_RADAR},
1112 	[CHAN_5490_5710_6] = {5490, 5710, 160, 26, REGULATORY_CHAN_RADAR},
1113 	[CHAN_5490_5710_7] = {5490, 5710, 160, 23, REGULATORY_CHAN_RADAR},
1114 	[CHAN_5490_5590_1] = {5490, 5590, 80, 24, REGULATORY_CHAN_RADAR},
1115 	[CHAN_5490_5590_2] = {5490, 5590, 80, 30, 0},
1116 	[CHAN_5490_5590_3] = {5490, 5590, 80, 36, 0},
1117 	[CHAN_5490_5570_1] = {5490, 5570, 80, 30, REGULATORY_CHAN_RADAR},
1118 	[CHAN_5490_5650_2] = {5490, 5650, 160, 24, REGULATORY_CHAN_RADAR},
1119 	[CHAN_5490_5670_1] = {5490, 5670, 160, 20, REGULATORY_CHAN_RADAR},
1120 	[CHAN_5490_5670_2] = {5490, 5670, 160, 23, REGULATORY_CHAN_RADAR},
1121 	[CHAN_5490_5630_1] = {5490, 5630, 80, 30, REGULATORY_CHAN_RADAR},
1122 	[CHAN_5650_5730_1] = {5650, 5730, 80, 24, REGULATORY_CHAN_RADAR},
1123 	[CHAN_5650_5730_2] = {5650, 5730, 80, 30, 0},
1124 	[CHAN_5650_5730_3] = {5650, 5730, 80, 36, 0},
1125 	[CHAN_5735_5835_1] = {5735, 5835, 80, 23, 0},
1126 	[CHAN_5735_5835_2] = {5735, 5835, 80, 30, 0},
1127 	[CHAN_5735_5835_3] = {5735, 5835, 80, 20, 0},
1128 	[CHAN_5735_5835_4] = {5735, 5835, 80, 33, 0},
1129 	[CHAN_5735_5835_5] = {5735, 5835, 80, 20, REGULATORY_CHAN_NO_IR},
1130 	[CHAN_5735_5835_6] = {5735, 5835, 80, 24, 0},
1131 	[CHAN_5735_5835_7] = {5735, 5835, 80, 36, 0},
1132 	[CHAN_5735_5835_8] = {5735, 5835, 80, 23, REGULATORY_CHAN_RADAR},
1133 	[CHAN_5735_5875_1] = {5735, 5875, 20, 27, REGULATORY_CHAN_RADAR},
1134 	[CHAN_5735_5875_2] = {5735, 5875, 20, 30, 0},
1135 	[CHAN_5735_5875_3] = {5735, 5875, 80, 30, 0},
1136 	[CHAN_5735_5875_4] = {5735, 5875, 80, 14, 0},
1137 	[CHAN_5735_5875_5] = {5735, 5875, 80, 20, REGULATORY_CHAN_RADAR},
1138 	[CHAN_5735_5815_1] = {5735, 5815, 80, 30, 0},
1139 	[CHAN_5735_5775_1] = {5735, 5775, 40, 23, 0},
1140 	[CHAN_5835_5855_1] = {5835, 5855, 20, 30, 0},
1141 	[CHAN_5855_5875_1] = {5855, 5875, 20, 30, 0},
1142 	[CHAN_5850_5925_1] = {5850, 5925, 20, 24, 0},
1143 	[CHAN_5850_5925_2] = {5850, 5925, 20, 30, 0},
1144 };
1145 
1146 
1147 const struct regdomain regdomains_5g[] = {
1148 
1149 	[FCC1] = {CTL_FCC, DFS_FCC_REGION, 2, 6, 3, {CHAN_5170_5250_1,
1150 					      CHAN_5250_5330_1,
1151 					      CHAN_5735_5835_2} },
1152 
1153 	[FCC2] = {CTL_FCC, DFS_FCC_REGION, 2, 6, 3, {CHAN_5170_5250_2,
1154 					     CHAN_5250_5330_1,
1155 					     CHAN_5735_5835_2} },
1156 
1157 	[FCC3] = {CTL_FCC, DFS_FCC_REGION, 2, 6, 4, {CHAN_5170_5250_5,
1158 					      CHAN_5250_5330_7,
1159 					      CHAN_5490_5730_1,
1160 					      CHAN_5735_5835_2} },
1161 
1162 	[FCC4] = {CTL_FCC, DFS_FCC_REGION, 2, 6, 1, {CHAN_4940_4990_1} },
1163 
1164 	[FCC5] = {CTL_FCC, DFS_UNINIT_REGION, 2, 6, 2, {CHAN_5170_5250_4,
1165 					      CHAN_5735_5835_2} },
1166 
1167 	[FCC6] = {CTL_FCC, DFS_FCC_REGION, 2, 6, 5, {CHAN_5170_5250_5,
1168 					      CHAN_5250_5330_7,
1169 					      CHAN_5490_5590_1,
1170 					      CHAN_5650_5730_1,
1171 					      CHAN_5735_5835_2} },
1172 
1173 	[FCC8] = {CTL_FCC, DFS_FCC_REGION, 2, 6, 4, {CHAN_5170_5250_4,
1174 					      CHAN_5250_5330_7,
1175 					      CHAN_5490_5730_1,
1176 					      CHAN_5735_5835_2} },
1177 
1178 	[FCC10] = {CTL_FCC, DFS_FCC_REGION, 2, 0, 5, {CHAN_5170_5250_4,
1179 						   CHAN_5250_5330_7,
1180 						   CHAN_5490_5730_1,
1181 						   CHAN_5735_5835_2,
1182 						   CHAN_5850_5925_1} },
1183 
1184 	[FCC11] = {CTL_FCC, DFS_FCC_REGION, 2, 6, 4, {CHAN_5170_5250_5,
1185 					      CHAN_5250_5330_7,
1186 					      CHAN_5490_5650_2,
1187 					      CHAN_5735_5835_6} },
1188 
1189 	[FCC13] = {CTL_FCC, DFS_UNINIT_REGION, 2, 0, 4, {CHAN_5170_5330_2,
1190 					      CHAN_5250_5330_10,
1191 					      CHAN_5490_5730_4,
1192 					      CHAN_5735_5835_2} },
1193 
1194 	[FCC14] = {CTL_FCC, DFS_UNINIT_REGION, 2, 0, 4, {CHAN_5170_5250_4,
1195 					      CHAN_5250_5330_10,
1196 					      CHAN_5490_5730_4,
1197 					      CHAN_5735_5835_2} },
1198 
1199 	[ETSI1] = {CTL_ETSI, DFS_ETSI_REGION, 2, 0, 3, {CHAN_5170_5250_2,
1200 						 CHAN_5250_5330_1,
1201 						 CHAN_5490_5710_1} },
1202 
1203 	[ETSI3] = {CTL_ETSI, DFS_ETSI_REGION, 5, 0, 2, {CHAN_5170_5250_2,
1204 						 CHAN_5250_5330_1} },
1205 
1206 	[ETSI4] = {CTL_ETSI, DFS_ETSI_REGION, 2, 0, 2, {CHAN_5170_5250_6,
1207 						 CHAN_5250_5330_3} },
1208 
1209 	[ETSI8] = {CTL_ETSI, DFS_UNINIT_REGION, 20, 0, 4, {CHAN_5170_5250_2,
1210 						  CHAN_5250_5330_5,
1211 						  CHAN_5490_5730_3,
1212 						  CHAN_5735_5835_2} },
1213 
1214 	[ETSI9] = {CTL_ETSI, DFS_ETSI_REGION, 20, 0, 4, {CHAN_5170_5250_2,
1215 						  CHAN_5250_5330_1,
1216 						  CHAN_5490_5710_5,
1217 						  CHAN_5735_5835_6} },
1218 
1219 	[ETSI10] = {CTL_ETSI, DFS_ETSI_REGION, 10, 0, 4, {CHAN_5170_5250_3,
1220 						       CHAN_5250_5330_2,
1221 						       CHAN_5490_5710_3,
1222 						       CHAN_5850_5925_2} },
1223 
1224 	[ETSI11] = {CTL_ETSI, DFS_ETSI_REGION, 10, 0, 4, {CHAN_5170_5250_3,
1225 						       CHAN_5250_5330_2,
1226 						       CHAN_5490_5710_3,
1227 						       CHAN_5735_5875_1} },
1228 
1229 	[ETSI12] = {CTL_ETSI, DFS_ETSI_REGION, 2, 0, 4, {CHAN_5170_5250_3,
1230 						  CHAN_5250_5330_2,
1231 						  CHAN_5490_5730_6,
1232 						  CHAN_5735_5835_8} },
1233 
1234 	[ETSI13] = {CTL_ETSI, DFS_ETSI_REGION, 2, 0, 4, {CHAN_5170_5250_2,
1235 						  CHAN_5250_5330_1,
1236 						  CHAN_5490_5730_5,
1237 						  CHAN_5735_5875_4} },
1238 
1239 	[ETSI14] = {CTL_ETSI, DFS_ETSI_REGION, 2, 0, 4, {CHAN_5170_5250_2,
1240 						  CHAN_5250_5330_1,
1241 						  CHAN_5490_5730_7,
1242 						  CHAN_5735_5875_5} },
1243 
1244 	[APL1] = {CTL_ETSI, DFS_UNINIT_REGION, 2, 0, 1, {CHAN_5735_5835_2} },
1245 
1246 	[APL2] = {CTL_ETSI, DFS_UNINIT_REGION, 2, 0, 1, {CHAN_5735_5815_1} },
1247 
1248 	[APL4] = {CTL_ETSI, DFS_UNINIT_REGION, 2, 0, 2, {CHAN_5170_5250_2,
1249 						  CHAN_5735_5835_1} },
1250 
1251 	[APL6] = {CTL_ETSI, DFS_ETSI_REGION, 2, 0, 3, {CHAN_5170_5250_3,
1252 						CHAN_5250_5330_2,
1253 						CHAN_5735_5835_3} },
1254 
1255 	[APL8] = {CTL_ETSI, DFS_ETSI_REGION, 2, 0, 2, {CHAN_5250_5330_4,
1256 						CHAN_5735_5835_2} },
1257 
1258 	[APL9] = {CTL_ETSI, DFS_KR_REGION, 2, 6, 4, {CHAN_5170_5250_3,
1259 					      CHAN_5250_5330_1,
1260 					      CHAN_5490_5710_1,
1261 					      CHAN_5735_5835_2} },
1262 
1263 	[APL10] = {CTL_ETSI, DFS_FCC_REGION, 2, 6, 4, {CHAN_5170_5250_2,
1264 						 CHAN_5250_5330_4,
1265 						 CHAN_5490_5710_1,
1266 						 CHAN_5735_5815_1} },
1267 
1268 	[APL11] = { CTL_ETSI, DFS_ETSI_REGION, 2, 0, 4, {CHAN_5170_5250_9,
1269 						 CHAN_5250_5330_13,
1270 						 CHAN_5490_5710_4,
1271 						 CHAN_5735_5875_2} },
1272 
1273 	[APL12] = {CTL_ETSI, DFS_ETSI_REGION, 2, 0, 3, {CHAN_5170_5250_2,
1274 						 CHAN_5490_5570_1,
1275 						 CHAN_5735_5775_1} },
1276 
1277 	[APL13] = {CTL_ETSI, DFS_ETSI_REGION, 2, 0, 3, {CHAN_5170_5250_2,
1278 						 CHAN_5250_5330_1,
1279 						 CHAN_5490_5670_2} },
1280 
1281 	[APL14] = {CTL_FCC, DFS_CN_REGION, 2, 0, 3, {CHAN_5170_5250_2,
1282 					      CHAN_5250_5330_1,
1283 					      CHAN_5735_5835_4} },
1284 
1285 	[APL15] = {CTL_FCC, DFS_UNINIT_REGION, 2, 0, 3, {CHAN_5170_5250_2,
1286 					      CHAN_5250_5330_5,
1287 					      CHAN_5735_5835_4} },
1288 
1289 	[APL16] = {CTL_FCC, DFS_UNINIT_REGION, 2, 0, 5, {CHAN_5170_5250_1,
1290 					    CHAN_5250_5330_6,
1291 					    CHAN_5490_5590_2,
1292 					    CHAN_5650_5730_2,
1293 					    CHAN_5735_5835_2} },
1294 
1295 	[APL17] = {CTL_FCC, DFS_UNINIT_REGION, 2, 0, 5, {CHAN_5170_5250_2,
1296 					    CHAN_5250_5330_8,
1297 					    CHAN_5490_5590_3,
1298 					    CHAN_5650_5730_3,
1299 					    CHAN_5735_5835_7} },
1300 
1301 	[APL19] = {CTL_FCC, DFS_UNINIT_REGION, 2, 0, 3, {CHAN_5170_5250_2,
1302 					    CHAN_5250_5330_5,
1303 					    CHAN_5735_5875_3} },
1304 
1305 	[APL20] = {CTL_ETSI, DFS_ETSI_REGION, 2, 0, 4, {CHAN_5170_5250_8,
1306 					     CHAN_5250_5330_12,
1307 					     CHAN_5490_5730_5,
1308 					     CHAN_5735_5835_4} },
1309 
1310 	[APL23] = {CTL_ETSI, DFS_UNINIT_REGION, 2, 0, 3, {CHAN_5170_5250_7,
1311 					     CHAN_5250_5330_11,
1312 					     CHAN_5735_5835_3} },
1313 
1314 	[MKK3] = {CTL_MKK, DFS_UNINIT_REGION, 2, 0, 1, {CHAN_5170_5250_3} },
1315 
1316 	[MKK5] = {CTL_MKK, DFS_MKK_REGION, 2, 0, 3, {CHAN_5170_5250_2,
1317 					      CHAN_5250_5330_1,
1318 					      CHAN_5490_5710_7} },
1319 
1320 	[MKK11] = {CTL_MKK, DFS_MKK_REGION, 2, 0, 5, {CHAN_4910_4990_1,
1321 					       CHAN_5170_5250_2,
1322 					       CHAN_5030_5090_1,
1323 					       CHAN_5250_5330_1,
1324 					       CHAN_5490_5710_7} },
1325 
1326 	[MKK16] = {CTL_MKK, DFS_MKK_REGION, 2, 0, 1, {CHAN_5490_5710_6} },
1327 
1328 	[WORLD_5G_1] = {CTL_NONE, DFS_UNINIT_REGION, 2, 0, 2, {CHAN_5170_5330_1,
1329 						       CHAN_5735_5835_5} },
1330 
1331 	[WORLD_5G_2] = {CTL_NONE, DFS_UNINIT_REGION, 2, 0, 3, {CHAN_5170_5330_1,
1332 						       CHAN_5490_5730_2,
1333 						       CHAN_5735_5835_5} },
1334 };
1335 
1336 QDF_STATUS reg_get_num_countries(int *num_countries)
1337 {
1338 	*num_countries = QDF_ARRAY_SIZE(g_all_countries);
1339 
1340 	return QDF_STATUS_SUCCESS;
1341 }
1342 
1343 QDF_STATUS reg_get_num_reg_dmn_pairs(int *num_reg_dmn)
1344 {
1345 	*num_reg_dmn = QDF_ARRAY_SIZE(g_reg_dmn_pairs);
1346 
1347 	return QDF_STATUS_SUCCESS;
1348 }
1349 
1350 QDF_STATUS reg_get_default_country(uint16_t *default_country)
1351 {
1352 	*default_country = CTRY_UNITED_STATES;
1353 
1354 	return QDF_STATUS_SUCCESS;
1355 }
1356 
1357 bool reg_etsi13_regdmn(uint8_t reg_dmn)
1358 {
1359 	return reg_dmn == ETSI13;
1360 }
1361