mac80211: rewrite HT handling
[linux-2.6] / drivers / net / wireless / ath9k / regd_common.h
1 /*
2  * Copyright (c) 2008 Atheros Communications Inc.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16
17 #ifndef REGD_COMMON_H
18 #define REGD_COMMON_H
19
20 enum EnumRd {
21         NO_ENUMRD = 0x00,
22         NULL1_WORLD = 0x03,
23         NULL1_ETSIB = 0x07,
24         NULL1_ETSIC = 0x08,
25         FCC1_FCCA = 0x10,
26         FCC1_WORLD = 0x11,
27         FCC4_FCCA = 0x12,
28         FCC5_FCCA = 0x13,
29         FCC6_FCCA = 0x14,
30
31         FCC2_FCCA = 0x20,
32         FCC2_WORLD = 0x21,
33         FCC2_ETSIC = 0x22,
34         FCC6_WORLD = 0x23,
35         FRANCE_RES = 0x31,
36         FCC3_FCCA = 0x3A,
37         FCC3_WORLD = 0x3B,
38
39         ETSI1_WORLD = 0x37,
40         ETSI3_ETSIA = 0x32,
41         ETSI2_WORLD = 0x35,
42         ETSI3_WORLD = 0x36,
43         ETSI4_WORLD = 0x30,
44         ETSI4_ETSIC = 0x38,
45         ETSI5_WORLD = 0x39,
46         ETSI6_WORLD = 0x34,
47         ETSI_RESERVED = 0x33,
48
49         MKK1_MKKA = 0x40,
50         MKK1_MKKB = 0x41,
51         APL4_WORLD = 0x42,
52         MKK2_MKKA = 0x43,
53         APL_RESERVED = 0x44,
54         APL2_WORLD = 0x45,
55         APL2_APLC = 0x46,
56         APL3_WORLD = 0x47,
57         MKK1_FCCA = 0x48,
58         APL2_APLD = 0x49,
59         MKK1_MKKA1 = 0x4A,
60         MKK1_MKKA2 = 0x4B,
61         MKK1_MKKC = 0x4C,
62
63         APL3_FCCA = 0x50,
64         APL1_WORLD = 0x52,
65         APL1_FCCA = 0x53,
66         APL1_APLA = 0x54,
67         APL1_ETSIC = 0x55,
68         APL2_ETSIC = 0x56,
69         APL5_WORLD = 0x58,
70         APL6_WORLD = 0x5B,
71         APL7_FCCA = 0x5C,
72         APL8_WORLD = 0x5D,
73         APL9_WORLD = 0x5E,
74
75         WOR0_WORLD = 0x60,
76         WOR1_WORLD = 0x61,
77         WOR2_WORLD = 0x62,
78         WOR3_WORLD = 0x63,
79         WOR4_WORLD = 0x64,
80         WOR5_ETSIC = 0x65,
81
82         WOR01_WORLD = 0x66,
83         WOR02_WORLD = 0x67,
84         EU1_WORLD = 0x68,
85
86         WOR9_WORLD = 0x69,
87         WORA_WORLD = 0x6A,
88         WORB_WORLD = 0x6B,
89
90         MKK3_MKKB = 0x80,
91         MKK3_MKKA2 = 0x81,
92         MKK3_MKKC = 0x82,
93
94         MKK4_MKKB = 0x83,
95         MKK4_MKKA2 = 0x84,
96         MKK4_MKKC = 0x85,
97
98         MKK5_MKKB = 0x86,
99         MKK5_MKKA2 = 0x87,
100         MKK5_MKKC = 0x88,
101
102         MKK6_MKKB = 0x89,
103         MKK6_MKKA2 = 0x8A,
104         MKK6_MKKC = 0x8B,
105
106         MKK7_MKKB = 0x8C,
107         MKK7_MKKA2 = 0x8D,
108         MKK7_MKKC = 0x8E,
109
110         MKK8_MKKB = 0x8F,
111         MKK8_MKKA2 = 0x90,
112         MKK8_MKKC = 0x91,
113
114         MKK14_MKKA1 = 0x92,
115         MKK15_MKKA1 = 0x93,
116
117         MKK10_FCCA = 0xD0,
118         MKK10_MKKA1 = 0xD1,
119         MKK10_MKKC = 0xD2,
120         MKK10_MKKA2 = 0xD3,
121
122         MKK11_MKKA = 0xD4,
123         MKK11_FCCA = 0xD5,
124         MKK11_MKKA1 = 0xD6,
125         MKK11_MKKC = 0xD7,
126         MKK11_MKKA2 = 0xD8,
127
128         MKK12_MKKA = 0xD9,
129         MKK12_FCCA = 0xDA,
130         MKK12_MKKA1 = 0xDB,
131         MKK12_MKKC = 0xDC,
132         MKK12_MKKA2 = 0xDD,
133
134         MKK13_MKKB = 0xDE,
135
136         MKK3_MKKA = 0xF0,
137         MKK3_MKKA1 = 0xF1,
138         MKK3_FCCA = 0xF2,
139         MKK4_MKKA = 0xF3,
140         MKK4_MKKA1 = 0xF4,
141         MKK4_FCCA = 0xF5,
142         MKK9_MKKA = 0xF6,
143         MKK10_MKKA = 0xF7,
144         MKK6_MKKA1 = 0xF8,
145         MKK6_FCCA = 0xF9,
146         MKK7_MKKA1 = 0xFA,
147         MKK7_FCCA = 0xFB,
148         MKK9_FCCA = 0xFC,
149         MKK9_MKKA1 = 0xFD,
150         MKK9_MKKC = 0xFE,
151         MKK9_MKKA2 = 0xFF,
152
153         APL1 = 0x0150,
154         APL2 = 0x0250,
155         APL3 = 0x0350,
156         APL4 = 0x0450,
157         APL5 = 0x0550,
158         APL6 = 0x0650,
159         APL7 = 0x0750,
160         APL8 = 0x0850,
161         APL9 = 0x0950,
162         APL10 = 0x1050,
163
164         ETSI1 = 0x0130,
165         ETSI2 = 0x0230,
166         ETSI3 = 0x0330,
167         ETSI4 = 0x0430,
168         ETSI5 = 0x0530,
169         ETSI6 = 0x0630,
170         ETSIA = 0x0A30,
171         ETSIB = 0x0B30,
172         ETSIC = 0x0C30,
173
174         FCC1 = 0x0110,
175         FCC2 = 0x0120,
176         FCC3 = 0x0160,
177         FCC4 = 0x0165,
178         FCC5 = 0x0510,
179         FCC6 = 0x0610,
180         FCCA = 0x0A10,
181
182         APLD = 0x0D50,
183
184         MKK1 = 0x0140,
185         MKK2 = 0x0240,
186         MKK3 = 0x0340,
187         MKK4 = 0x0440,
188         MKK5 = 0x0540,
189         MKK6 = 0x0640,
190         MKK7 = 0x0740,
191         MKK8 = 0x0840,
192         MKK9 = 0x0940,
193         MKK10 = 0x0B40,
194         MKK11 = 0x1140,
195         MKK12 = 0x1240,
196         MKK13 = 0x0C40,
197         MKK14 = 0x1440,
198         MKK15 = 0x1540,
199         MKKA = 0x0A40,
200         MKKC = 0x0A50,
201
202         NULL1 = 0x0198,
203         WORLD = 0x0199,
204         DEBUG_REG_DMN = 0x01ff,
205 };
206
207 enum {
208         FCC = 0x10,
209         MKK = 0x40,
210         ETSI = 0x30,
211 };
212
213 enum {
214         NO_REQ = 0x00000000,
215         DISALLOW_ADHOC_11A = 0x00000001,
216         DISALLOW_ADHOC_11A_TURB = 0x00000002,
217         NEED_NFC = 0x00000004,
218
219         ADHOC_PER_11D = 0x00000008,
220         ADHOC_NO_11A = 0x00000010,
221
222         PUBLIC_SAFETY_DOMAIN = 0x00000020,
223         LIMIT_FRAME_4MS = 0x00000040,
224
225         NO_HOSTAP = 0x00000080,
226
227         REQ_MASK = 0x000000FF,
228 };
229
230 #define REG_DOMAIN_2GHZ_MASK    (REQ_MASK & \
231         (!(ADHOC_NO_11A | DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB)))
232 #define REG_DOMAIN_5GHZ_MASK    REQ_MASK
233
234 static struct reg_dmn_pair_mapping regDomainPairs[] = {
235         {NO_ENUMRD, DEBUG_REG_DMN, DEBUG_REG_DMN, NO_REQ, NO_REQ,
236          PSCAN_DEFER, 0},
237         {NULL1_WORLD, NULL1, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
238         {NULL1_ETSIB, NULL1, ETSIB, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
239         {NULL1_ETSIC, NULL1, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
240
241         {FCC2_FCCA, FCC2, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
242         {FCC2_WORLD, FCC2, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
243         {FCC2_ETSIC, FCC2, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
244         {FCC3_FCCA, FCC3, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
245         {FCC3_WORLD, FCC3, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
246         {FCC4_FCCA, FCC4, FCCA,
247          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER,
248          0},
249         {FCC5_FCCA, FCC5, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
250         {FCC6_FCCA, FCC6, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
251         {FCC6_WORLD, FCC6, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
252
253         {ETSI1_WORLD, ETSI1, WORLD,
254          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER,
255          0},
256         {ETSI2_WORLD, ETSI2, WORLD,
257          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER,
258          0},
259         {ETSI3_WORLD, ETSI3, WORLD,
260          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER,
261          0},
262         {ETSI4_WORLD, ETSI4, WORLD,
263          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER,
264          0},
265         {ETSI5_WORLD, ETSI5, WORLD,
266          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER,
267          0},
268         {ETSI6_WORLD, ETSI6, WORLD,
269          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER,
270          0},
271
272         {ETSI3_ETSIA, ETSI3, WORLD,
273          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER,
274          0},
275         {FRANCE_RES, ETSI3, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
276
277         {FCC1_WORLD, FCC1, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
278         {FCC1_FCCA, FCC1, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
279         {APL1_WORLD, APL1, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
280         {APL2_WORLD, APL2, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
281         {APL3_WORLD, APL3, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
282         {APL4_WORLD, APL4, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
283         {APL5_WORLD, APL5, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
284         {APL6_WORLD, APL6, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
285         {APL8_WORLD, APL8, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
286         {APL9_WORLD, APL9, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
287
288         {APL3_FCCA, APL3, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
289         {APL1_ETSIC, APL1, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
290         {APL2_ETSIC, APL2, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
291         {APL2_APLD, APL2, APLD, NO_REQ, NO_REQ, PSCAN_DEFER,},
292
293         {MKK1_MKKA, MKK1, MKKA,
294          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
295          PSCAN_MKK1 | PSCAN_MKKA, CTRY_JAPAN},
296         {MKK1_MKKB, MKK1, MKKA,
297          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC |
298          LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK1 | PSCAN_MKKA | PSCAN_MKKA_G,
299          CTRY_JAPAN1},
300         {MKK1_FCCA, MKK1, FCCA,
301          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
302          PSCAN_MKK1, CTRY_JAPAN2},
303         {MKK1_MKKA1, MKK1, MKKA,
304          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
305          PSCAN_MKK1 | PSCAN_MKKA1 | PSCAN_MKKA1_G, CTRY_JAPAN4},
306         {MKK1_MKKA2, MKK1, MKKA,
307          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
308          PSCAN_MKK1 | PSCAN_MKKA2 | PSCAN_MKKA2_G, CTRY_JAPAN5},
309         {MKK1_MKKC, MKK1, MKKC,
310          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
311          PSCAN_MKK1, CTRY_JAPAN6},
312
313         {MKK2_MKKA, MKK2, MKKA,
314          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC |
315          LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK2 | PSCAN_MKKA | PSCAN_MKKA_G,
316          CTRY_JAPAN3},
317
318         {MKK3_MKKA, MKK3, MKKA,
319          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
320          PSCAN_MKKA, CTRY_JAPAN25},
321         {MKK3_MKKB, MKK3, MKKA,
322          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC |
323          LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKKA | PSCAN_MKKA_G,
324          CTRY_JAPAN7},
325         {MKK3_MKKA1, MKK3, MKKA,
326          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
327          PSCAN_MKKA1 | PSCAN_MKKA1_G, CTRY_JAPAN26},
328         {MKK3_MKKA2, MKK3, MKKA,
329          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
330          PSCAN_MKKA2 | PSCAN_MKKA2_G, CTRY_JAPAN8},
331         {MKK3_MKKC, MKK3, MKKC,
332          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
333          NO_PSCAN, CTRY_JAPAN9},
334         {MKK3_FCCA, MKK3, FCCA,
335          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
336          NO_PSCAN, CTRY_JAPAN27},
337
338         {MKK4_MKKA, MKK4, MKKA,
339          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
340          PSCAN_MKK3, CTRY_JAPAN36},
341         {MKK4_MKKB, MKK4, MKKA,
342          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC |
343          LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G,
344          CTRY_JAPAN10},
345         {MKK4_MKKA1, MKK4, MKKA,
346          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
347          PSCAN_MKK3 | PSCAN_MKKA1 | PSCAN_MKKA1_G, CTRY_JAPAN28},
348         {MKK4_MKKA2, MKK4, MKKA,
349          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
350          PSCAN_MKK3 | PSCAN_MKKA2 | PSCAN_MKKA2_G, CTRY_JAPAN11},
351         {MKK4_MKKC, MKK4, MKKC,
352          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
353          PSCAN_MKK3, CTRY_JAPAN12},
354         {MKK4_FCCA, MKK4, FCCA,
355          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
356          PSCAN_MKK3, CTRY_JAPAN29},
357
358         {MKK5_MKKB, MKK5, MKKA,
359          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC |
360          LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G,
361          CTRY_JAPAN13},
362         {MKK5_MKKA2, MKK5, MKKA,
363          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
364          PSCAN_MKK3 | PSCAN_MKKA2 | PSCAN_MKKA2_G, CTRY_JAPAN14},
365         {MKK5_MKKC, MKK5, MKKC,
366          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
367          PSCAN_MKK3, CTRY_JAPAN15},
368
369         {MKK6_MKKB, MKK6, MKKA,
370          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
371          PSCAN_MKK1 | PSCAN_MKKA | PSCAN_MKKA_G, CTRY_JAPAN16},
372         {MKK6_MKKA1, MKK6, MKKA,
373          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
374          PSCAN_MKK1 | PSCAN_MKKA1 | PSCAN_MKKA1_G, CTRY_JAPAN30},
375         {MKK6_MKKA2, MKK6, MKKA,
376          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
377          PSCAN_MKK1 | PSCAN_MKKA2 | PSCAN_MKKA2_G, CTRY_JAPAN17},
378         {MKK6_MKKC, MKK6, MKKC,
379          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
380          PSCAN_MKK1, CTRY_JAPAN18},
381         {MKK6_FCCA, MKK6, FCCA,
382          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
383          NO_PSCAN, CTRY_JAPAN31},
384
385         {MKK7_MKKB, MKK7, MKKA,
386          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
387          PSCAN_MKK1 | PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G,
388          CTRY_JAPAN19},
389         {MKK7_MKKA1, MKK7, MKKA,
390          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
391          PSCAN_MKK1 | PSCAN_MKKA1 | PSCAN_MKKA1_G, CTRY_JAPAN32},
392         {MKK7_MKKA2, MKK7, MKKA,
393          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
394          PSCAN_MKK1 | PSCAN_MKK3 | PSCAN_MKKA2 | PSCAN_MKKA2_G,
395          CTRY_JAPAN20},
396         {MKK7_MKKC, MKK7, MKKC,
397          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
398          PSCAN_MKK1 | PSCAN_MKK3, CTRY_JAPAN21},
399         {MKK7_FCCA, MKK7, FCCA,
400          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
401          PSCAN_MKK1 | PSCAN_MKK3, CTRY_JAPAN33},
402
403         {MKK8_MKKB, MKK8, MKKA,
404          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
405          PSCAN_MKK1 | PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G,
406          CTRY_JAPAN22},
407         {MKK8_MKKA2, MKK8, MKKA,
408          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
409          PSCAN_MKK1 | PSCAN_MKK3 | PSCAN_MKKA2 | PSCAN_MKKA2_G,
410          CTRY_JAPAN23},
411         {MKK8_MKKC, MKK8, MKKC,
412          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
413          PSCAN_MKK1 | PSCAN_MKK3, CTRY_JAPAN24},
414
415         {MKK9_MKKA, MKK9, MKKA,
416          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC |
417          LIMIT_FRAME_4MS, NEED_NFC,
418          PSCAN_MKK2 | PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G,
419          CTRY_JAPAN34},
420         {MKK9_FCCA, MKK9, FCCA,
421          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
422          NO_PSCAN, CTRY_JAPAN37},
423         {MKK9_MKKA1, MKK9, MKKA,
424          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
425          PSCAN_MKKA1 | PSCAN_MKKA1_G, CTRY_JAPAN38},
426         {MKK9_MKKA2, MKK9, MKKA,
427          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
428          PSCAN_MKKA2 | PSCAN_MKKA2_G, CTRY_JAPAN40},
429         {MKK9_MKKC, MKK9, MKKC,
430          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
431          NO_PSCAN, CTRY_JAPAN39},
432
433         {MKK10_MKKA, MKK10, MKKA,
434          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC |
435          LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK2 | PSCAN_MKK3, CTRY_JAPAN35},
436         {MKK10_FCCA, MKK10, FCCA,
437          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
438          NO_PSCAN, CTRY_JAPAN41},
439         {MKK10_MKKA1, MKK10, MKKA,
440          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
441          PSCAN_MKKA1 | PSCAN_MKKA1_G, CTRY_JAPAN42},
442         {MKK10_MKKA2, MKK10, MKKA,
443          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
444          PSCAN_MKKA2 | PSCAN_MKKA2_G, CTRY_JAPAN44},
445         {MKK10_MKKC, MKK10, MKKC,
446          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
447          NO_PSCAN, CTRY_JAPAN43},
448
449         {MKK11_MKKA, MKK11, MKKA,
450          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
451          PSCAN_MKK3, CTRY_JAPAN45},
452         {MKK11_FCCA, MKK11, FCCA,
453          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
454          PSCAN_MKK3, CTRY_JAPAN46},
455         {MKK11_MKKA1, MKK11, MKKA,
456          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
457          PSCAN_MKK3 | PSCAN_MKKA1 | PSCAN_MKKA1_G, CTRY_JAPAN47},
458         {MKK11_MKKA2, MKK11, MKKA,
459          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
460          PSCAN_MKK3 | PSCAN_MKKA2 | PSCAN_MKKA2_G, CTRY_JAPAN49},
461         {MKK11_MKKC, MKK11, MKKC,
462          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
463          PSCAN_MKK3, CTRY_JAPAN48},
464
465         {MKK12_MKKA, MKK12, MKKA,
466          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
467          PSCAN_MKK1 | PSCAN_MKK3, CTRY_JAPAN50},
468         {MKK12_FCCA, MKK12, FCCA,
469          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
470          PSCAN_MKK1 | PSCAN_MKK3, CTRY_JAPAN51},
471         {MKK12_MKKA1, MKK12, MKKA,
472          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
473          PSCAN_MKK1 | PSCAN_MKK3 | PSCAN_MKKA1 | PSCAN_MKKA1_G,
474          CTRY_JAPAN52},
475         {MKK12_MKKA2, MKK12, MKKA,
476          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
477          PSCAN_MKK1 | PSCAN_MKK3 | PSCAN_MKKA2 | PSCAN_MKKA2_G,
478          CTRY_JAPAN54},
479         {MKK12_MKKC, MKK12, MKKC,
480          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
481          PSCAN_MKK1 | PSCAN_MKK3, CTRY_JAPAN53},
482
483         {MKK13_MKKB, MKK13, MKKA,
484          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC |
485          LIMIT_FRAME_4MS, NEED_NFC,
486          PSCAN_MKK1 | PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G,
487          CTRY_JAPAN57},
488
489         {MKK14_MKKA1, MKK14, MKKA,
490          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
491          PSCAN_MKK1 | PSCAN_MKKA1 | PSCAN_MKKA1_G, CTRY_JAPAN58},
492         {MKK15_MKKA1, MKK15, MKKA,
493          DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC,
494          PSCAN_MKK1 | PSCAN_MKKA1 | PSCAN_MKKA1_G, CTRY_JAPAN59},
495
496         {WOR0_WORLD, WOR0_WORLD, WOR0_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER,
497          0},
498         {WOR1_WORLD, WOR1_WORLD, WOR1_WORLD,
499          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER,
500          0},
501         {WOR2_WORLD, WOR2_WORLD, WOR2_WORLD, DISALLOW_ADHOC_11A_TURB,
502          NO_REQ, PSCAN_DEFER, 0},
503         {WOR3_WORLD, WOR3_WORLD, WOR3_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER,
504          0},
505         {WOR4_WORLD, WOR4_WORLD, WOR4_WORLD,
506          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER,
507          0},
508         {WOR5_ETSIC, WOR5_ETSIC, WOR5_ETSIC,
509          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER,
510          0},
511         {WOR01_WORLD, WOR01_WORLD, WOR01_WORLD, NO_REQ, NO_REQ,
512          PSCAN_DEFER, 0},
513         {WOR02_WORLD, WOR02_WORLD, WOR02_WORLD, NO_REQ, NO_REQ,
514          PSCAN_DEFER, 0},
515         {EU1_WORLD, EU1_WORLD, EU1_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0},
516         {WOR9_WORLD, WOR9_WORLD, WOR9_WORLD,
517          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER,
518          0},
519         {WORA_WORLD, WORA_WORLD, WORA_WORLD,
520          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER,
521          0},
522         {WORB_WORLD, WORB_WORLD, WORB_WORLD,
523          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER,
524          0},
525 };
526
527 #define NO_INTERSECT_REQ        0xFFFFFFFF
528 #define NO_UNION_REQ            0
529
530 static struct country_code_to_enum_rd allCountries[] = {
531         {CTRY_DEBUG, NO_ENUMRD, "DB", "DEBUG", YES, YES, YES, YES, YES,
532          YES, YES, 7000},
533         {CTRY_DEFAULT, DEF_REGDMN, "NA", "NO_COUNTRY_SET", YES, YES, YES,
534          YES, YES, YES, YES, 7000},
535         {CTRY_ALBANIA, NULL1_WORLD, "AL", "ALBANIA", YES, NO, YES, YES, NO,
536          NO, NO, 7000},
537         {CTRY_ALGERIA, NULL1_WORLD, "DZ", "ALGERIA", YES, NO, YES, YES, NO,
538          NO, NO, 7000},
539         {CTRY_ARGENTINA, APL3_WORLD, "AR", "ARGENTINA", YES, NO, NO, YES,
540          NO, YES, NO, 7000},
541         {CTRY_ARMENIA, ETSI4_WORLD, "AM", "ARMENIA", YES, NO, YES, YES,
542          YES, NO, NO, 7000},
543         {CTRY_AUSTRALIA, FCC2_WORLD, "AU", "AUSTRALIA", YES, YES, YES, YES,
544          YES, YES, YES, 7000},
545         {CTRY_AUSTRALIA2, FCC6_WORLD, "AU", "AUSTRALIA2", YES, YES, YES,
546          YES, YES, YES, YES, 7000},
547         {CTRY_AUSTRIA, ETSI1_WORLD, "AT", "AUSTRIA", YES, NO, YES, YES,
548          YES, YES, YES, 7000},
549         {CTRY_AZERBAIJAN, ETSI4_WORLD, "AZ", "AZERBAIJAN", YES, YES, YES,
550          YES, YES, YES, YES, 7000},
551         {CTRY_BAHRAIN, APL6_WORLD, "BH", "BAHRAIN", YES, NO, YES, YES, YES,
552          YES, NO, 7000},
553         {CTRY_BELARUS, ETSI1_WORLD, "BY", "BELARUS", YES, NO, YES, YES,
554          YES, YES, YES, 7000},
555         {CTRY_BELGIUM, ETSI1_WORLD, "BE", "BELGIUM", YES, NO, YES, YES,
556          YES, YES, YES, 7000},
557         {CTRY_BELGIUM2, ETSI4_WORLD, "BL", "BELGIUM", YES, NO, YES, YES,
558          YES, YES, YES, 7000},
559         {CTRY_BELIZE, APL1_ETSIC, "BZ", "BELIZE", YES, YES, YES, YES, YES,
560          YES, YES, 7000},
561         {CTRY_BOLIVIA, APL1_ETSIC, "BO", "BOLVIA", YES, YES, YES, YES, YES,
562          YES, YES, 7000},
563         {CTRY_BOSNIA_HERZ, ETSI1_WORLD, "BA", "BOSNIA_HERZGOWINA", YES, NO,
564          YES, YES, YES, YES, NO, 7000},
565         {CTRY_BRAZIL, FCC3_WORLD, "BR", "BRAZIL", YES, NO, NO, YES, NO,
566          YES, NO, 7000},
567         {CTRY_BRUNEI_DARUSSALAM, APL1_WORLD, "BN", "BRUNEI DARUSSALAM",
568          YES, YES, YES, YES, YES, YES, YES, 7000},
569         {CTRY_BULGARIA, ETSI6_WORLD, "BG", "BULGARIA", YES, NO, YES, YES,
570          YES, YES, YES, 7000},
571         {CTRY_CANADA, FCC2_FCCA, "CA", "CANADA", YES, YES, YES, YES, YES,
572          YES, YES, 7000},
573         {CTRY_CANADA2, FCC6_FCCA, "CA", "CANADA2", YES, YES, YES, YES, YES,
574          YES, YES, 7000},
575         {CTRY_CHILE, APL6_WORLD, "CL", "CHILE", YES, YES, YES, YES, YES,
576          YES, YES, 7000},
577         {CTRY_CHINA, APL1_WORLD, "CN", "CHINA", YES, YES, YES, YES, YES,
578          YES, YES, 7000},
579         {CTRY_COLOMBIA, FCC1_FCCA, "CO", "COLOMBIA", YES, NO, YES, YES,
580          YES, YES, NO, 7000},
581         {CTRY_COSTA_RICA, FCC1_WORLD, "CR", "COSTA RICA", YES, NO, YES,
582          YES, YES, YES, NO, 7000},
583         {CTRY_CROATIA, ETSI3_WORLD, "HR", "CROATIA", YES, NO, YES, YES,
584          YES, YES, NO, 7000},
585         {CTRY_CYPRUS, ETSI1_WORLD, "CY", "CYPRUS", YES, YES, YES, YES, YES,
586          YES, YES, 7000},
587         {CTRY_CZECH, ETSI3_WORLD, "CZ", "CZECH REPUBLIC", YES, NO, YES,
588          YES, YES, YES, YES, 7000},
589         {CTRY_DENMARK, ETSI1_WORLD, "DK", "DENMARK", YES, NO, YES, YES,
590          YES, YES, YES, 7000},
591         {CTRY_DOMINICAN_REPUBLIC, FCC1_FCCA, "DO", "DOMINICAN REPUBLIC",
592          YES, YES, YES, YES, YES, YES, YES, 7000},
593         {CTRY_ECUADOR, FCC1_WORLD, "EC", "ECUADOR", YES, NO, NO, YES, YES,
594          YES, NO, 7000},
595         {CTRY_EGYPT, ETSI3_WORLD, "EG", "EGYPT", YES, NO, YES, YES, YES,
596          YES, NO, 7000},
597         {CTRY_EL_SALVADOR, FCC1_WORLD, "SV", "EL SALVADOR", YES, NO, YES,
598          YES, YES, YES, NO, 7000},
599         {CTRY_ESTONIA, ETSI1_WORLD, "EE", "ESTONIA", YES, NO, YES, YES,
600          YES, YES, YES, 7000},
601         {CTRY_FINLAND, ETSI1_WORLD, "FI", "FINLAND", YES, NO, YES, YES,
602          YES, YES, YES, 7000},
603         {CTRY_FRANCE, ETSI1_WORLD, "FR", "FRANCE", YES, NO, YES, YES, YES,
604          YES, YES, 7000},
605         {CTRY_GEORGIA, ETSI4_WORLD, "GE", "GEORGIA", YES, YES, YES, YES,
606          YES, YES, YES, 7000},
607         {CTRY_GERMANY, ETSI1_WORLD, "DE", "GERMANY", YES, NO, YES, YES,
608          YES, YES, YES, 7000},
609         {CTRY_GREECE, ETSI1_WORLD, "GR", "GREECE", YES, NO, YES, YES, YES,
610          YES, YES, 7000},
611         {CTRY_GUATEMALA, FCC1_FCCA, "GT", "GUATEMALA", YES, YES, YES, YES,
612          YES, YES, YES, 7000},
613         {CTRY_HONDURAS, NULL1_WORLD, "HN", "HONDURAS", YES, NO, YES, YES,
614          YES, NO, NO, 7000},
615         {CTRY_HONG_KONG, FCC2_WORLD, "HK", "HONG KONG", YES, YES, YES, YES,
616          YES, YES, YES, 7000},
617         {CTRY_HUNGARY, ETSI1_WORLD, "HU", "HUNGARY", YES, NO, YES, YES,
618          YES, YES, YES, 7000},
619         {CTRY_ICELAND, ETSI1_WORLD, "IS", "ICELAND", YES, NO, YES, YES,
620          YES, YES, YES, 7000},
621         {CTRY_INDIA, APL6_WORLD, "IN", "INDIA", YES, NO, YES, YES, YES,
622          YES, NO, 7000},
623         {CTRY_INDONESIA, APL1_WORLD, "ID", "INDONESIA", YES, NO, YES, YES,
624          YES, YES, NO, 7000},
625         {CTRY_IRAN, APL1_WORLD, "IR", "IRAN", YES, YES, YES, YES, YES, YES,
626          YES, 7000},
627         {CTRY_IRELAND, ETSI1_WORLD, "IE", "IRELAND", YES, NO, YES, YES,
628          YES, YES, YES, 7000},
629         {CTRY_ISRAEL, NULL1_WORLD, "IL", "ISRAEL", YES, NO, YES, YES, YES,
630          NO, NO, 7000},
631         {CTRY_ITALY, ETSI1_WORLD, "IT", "ITALY", YES, NO, YES, YES, YES,
632          YES, YES, 7000},
633         {CTRY_JAMAICA, ETSI1_WORLD, "JM", "JAMAICA", YES, NO, YES, YES,
634          YES, YES, YES, 7000},
635
636         {CTRY_JAPAN, MKK1_MKKA, "JP", "JAPAN", YES, NO, NO, YES, YES, YES,
637          YES, 7000},
638         {CTRY_JAPAN1, MKK1_MKKB, "JP", "JAPAN1", YES, NO, NO, YES, YES,
639          YES, YES, 7000},
640         {CTRY_JAPAN2, MKK1_FCCA, "JP", "JAPAN2", YES, NO, NO, YES, YES,
641          YES, YES, 7000},
642         {CTRY_JAPAN3, MKK2_MKKA, "JP", "JAPAN3", YES, NO, NO, YES, YES,
643          YES, YES, 7000},
644         {CTRY_JAPAN4, MKK1_MKKA1, "JP", "JAPAN4", YES, NO, NO, YES, YES,
645          YES, YES, 7000},
646         {CTRY_JAPAN5, MKK1_MKKA2, "JP", "JAPAN5", YES, NO, NO, YES, YES,
647          YES, YES, 7000},
648         {CTRY_JAPAN6, MKK1_MKKC, "JP", "JAPAN6", YES, NO, NO, YES, YES,
649          YES, YES, 7000},
650
651         {CTRY_JAPAN7, MKK3_MKKB, "JP", "JAPAN7", YES, NO, NO, YES, YES,
652          YES, YES, 7000},
653         {CTRY_JAPAN8, MKK3_MKKA2, "JP", "JAPAN8", YES, NO, NO, YES, YES,
654          YES, YES, 7000},
655         {CTRY_JAPAN9, MKK3_MKKC, "JP", "JAPAN9", YES, NO, NO, YES, YES,
656          YES, YES, 7000},
657
658         {CTRY_JAPAN10, MKK4_MKKB, "JP", "JAPAN10", YES, NO, NO, YES, YES,
659          YES, YES, 7000},
660         {CTRY_JAPAN11, MKK4_MKKA2, "JP", "JAPAN11", YES, NO, NO, YES, YES,
661          YES, YES, 7000},
662         {CTRY_JAPAN12, MKK4_MKKC, "JP", "JAPAN12", YES, NO, NO, YES, YES,
663          YES, YES, 7000},
664
665         {CTRY_JAPAN13, MKK5_MKKB, "JP", "JAPAN13", YES, NO, NO, YES, YES,
666          YES, YES, 7000},
667         {CTRY_JAPAN14, MKK5_MKKA2, "JP", "JAPAN14", YES, NO, NO, YES, YES,
668          YES, YES, 7000},
669         {CTRY_JAPAN15, MKK5_MKKC, "JP", "JAPAN15", YES, NO, NO, YES, YES,
670          YES, YES, 7000},
671
672         {CTRY_JAPAN16, MKK6_MKKB, "JP", "JAPAN16", YES, NO, NO, YES, YES,
673          YES, YES, 7000},
674         {CTRY_JAPAN17, MKK6_MKKA2, "JP", "JAPAN17", YES, NO, NO, YES, YES,
675          YES, YES, 7000},
676         {CTRY_JAPAN18, MKK6_MKKC, "JP", "JAPAN18", YES, NO, NO, YES, YES,
677          YES, YES, 7000},
678
679         {CTRY_JAPAN19, MKK7_MKKB, "JP", "JAPAN19", YES, NO, NO, YES, YES,
680          YES, YES, 7000},
681         {CTRY_JAPAN20, MKK7_MKKA2, "JP", "JAPAN20", YES, NO, NO, YES, YES,
682          YES, YES, 7000},
683         {CTRY_JAPAN21, MKK7_MKKC, "JP", "JAPAN21", YES, NO, NO, YES, YES,
684          YES, YES, 7000},
685
686         {CTRY_JAPAN22, MKK8_MKKB, "JP", "JAPAN22", YES, NO, NO, YES, YES,
687          YES, YES, 7000},
688         {CTRY_JAPAN23, MKK8_MKKA2, "JP", "JAPAN23", YES, NO, NO, YES, YES,
689          YES, YES, 7000},
690         {CTRY_JAPAN24, MKK8_MKKC, "JP", "JAPAN24", YES, NO, NO, YES, YES,
691          YES, YES, 7000},
692
693         {CTRY_JAPAN25, MKK3_MKKA, "JP", "JAPAN25", YES, NO, NO, YES, YES,
694          YES, YES, 7000},
695         {CTRY_JAPAN26, MKK3_MKKA1, "JP", "JAPAN26", YES, NO, NO, YES, YES,
696          YES, YES, 7000},
697         {CTRY_JAPAN27, MKK3_FCCA, "JP", "JAPAN27", YES, NO, NO, YES, YES,
698          YES, YES, 7000},
699         {CTRY_JAPAN28, MKK4_MKKA1, "JP", "JAPAN28", YES, NO, NO, YES, YES,
700          YES, YES, 7000},
701         {CTRY_JAPAN29, MKK4_FCCA, "JP", "JAPAN29", YES, NO, NO, YES, YES,
702          YES, YES, 7000},
703         {CTRY_JAPAN30, MKK6_MKKA1, "JP", "JAPAN30", YES, NO, NO, YES, YES,
704          YES, YES, 7000},
705         {CTRY_JAPAN31, MKK6_FCCA, "JP", "JAPAN31", YES, NO, NO, YES, YES,
706          YES, YES, 7000},
707         {CTRY_JAPAN32, MKK7_MKKA1, "JP", "JAPAN32", YES, NO, NO, YES, YES,
708          YES, YES, 7000},
709         {CTRY_JAPAN33, MKK7_FCCA, "JP", "JAPAN33", YES, NO, NO, YES, YES,
710          YES, YES, 7000},
711         {CTRY_JAPAN34, MKK9_MKKA, "JP", "JAPAN34", YES, NO, NO, YES, YES,
712          YES, YES, 7000},
713         {CTRY_JAPAN35, MKK10_MKKA, "JP", "JAPAN35", YES, NO, NO, YES, YES,
714          YES, YES, 7000},
715         {CTRY_JAPAN36, MKK4_MKKA, "JP", "JAPAN36", YES, NO, NO, YES, YES,
716          YES, YES, 7000},
717         {CTRY_JAPAN37, MKK9_FCCA, "JP", "JAPAN37", YES, NO, NO, YES, YES,
718          YES, YES, 7000},
719         {CTRY_JAPAN38, MKK9_MKKA1, "JP", "JAPAN38", YES, NO, NO, YES, YES,
720          YES, YES, 7000},
721         {CTRY_JAPAN39, MKK9_MKKC, "JP", "JAPAN39", YES, NO, NO, YES, YES,
722          YES, YES, 7000},
723         {CTRY_JAPAN40, MKK9_MKKA2, "JP", "JAPAN40", YES, NO, NO, YES, YES,
724          YES, YES, 7000},
725         {CTRY_JAPAN41, MKK10_FCCA, "JP", "JAPAN41", YES, NO, NO, YES, YES,
726          YES, YES, 7000},
727         {CTRY_JAPAN42, MKK10_MKKA1, "JP", "JAPAN42", YES, NO, NO, YES, YES,
728          YES, YES, 7000},
729         {CTRY_JAPAN43, MKK10_MKKC, "JP", "JAPAN43", YES, NO, NO, YES, YES,
730          YES, YES, 7000},
731         {CTRY_JAPAN44, MKK10_MKKA2, "JP", "JAPAN44", YES, NO, NO, YES, YES,
732          YES, YES, 7000},
733         {CTRY_JAPAN45, MKK11_MKKA, "JP", "JAPAN45", YES, NO, NO, YES, YES,
734          YES, YES, 7000},
735         {CTRY_JAPAN46, MKK11_FCCA, "JP", "JAPAN46", YES, NO, NO, YES, YES,
736          YES, YES, 7000},
737         {CTRY_JAPAN47, MKK11_MKKA1, "JP", "JAPAN47", YES, NO, NO, YES, YES,
738          YES, YES, 7000},
739         {CTRY_JAPAN48, MKK11_MKKC, "JP", "JAPAN48", YES, NO, NO, YES, YES,
740          YES, YES, 7000},
741         {CTRY_JAPAN49, MKK11_MKKA2, "JP", "JAPAN49", YES, NO, NO, YES, YES,
742          YES, YES, 7000},
743         {CTRY_JAPAN50, MKK12_MKKA, "JP", "JAPAN50", YES, NO, NO, YES, YES,
744          YES, YES, 7000},
745         {CTRY_JAPAN51, MKK12_FCCA, "JP", "JAPAN51", YES, NO, NO, YES, YES,
746          YES, YES, 7000},
747         {CTRY_JAPAN52, MKK12_MKKA1, "JP", "JAPAN52", YES, NO, NO, YES, YES,
748          YES, YES, 7000},
749         {CTRY_JAPAN53, MKK12_MKKC, "JP", "JAPAN53", YES, NO, NO, YES, YES,
750          YES, YES, 7000},
751         {CTRY_JAPAN54, MKK12_MKKA2, "JP", "JAPAN54", YES, NO, NO, YES, YES,
752          YES, YES, 7000},
753
754         {CTRY_JAPAN57, MKK13_MKKB, "JP", "JAPAN57", YES, NO, NO, YES, YES,
755          YES, YES, 7000},
756         {CTRY_JAPAN58, MKK14_MKKA1, "JP", "JAPAN58", YES, NO, NO, YES, YES,
757          YES, YES, 7000},
758         {CTRY_JAPAN59, MKK15_MKKA1, "JP", "JAPAN59", YES, NO, NO, YES, YES,
759          YES, YES, 7000},
760
761         {CTRY_JORDAN, ETSI2_WORLD, "JO", "JORDAN", YES, NO, YES, YES, YES,
762          YES, NO, 7000},
763         {CTRY_KAZAKHSTAN, NULL1_WORLD, "KZ", "KAZAKHSTAN", YES, NO, YES,
764          YES, YES, NO, NO, 7000},
765         {CTRY_KOREA_NORTH, APL9_WORLD, "KP", "NORTH KOREA", YES, NO, NO,
766          YES, YES, YES, YES, 7000},
767         {CTRY_KOREA_ROC, APL9_WORLD, "KR", "KOREA REPUBLIC", YES, NO, NO,
768          YES, NO, YES, NO, 7000},
769         {CTRY_KOREA_ROC2, APL2_WORLD, "K2", "KOREA REPUBLIC2", YES, NO, NO,
770          YES, NO, YES, NO, 7000},
771         {CTRY_KOREA_ROC3, APL9_WORLD, "K3", "KOREA REPUBLIC3", YES, NO, NO,
772          YES, NO, YES, NO, 7000},
773         {CTRY_KUWAIT, NULL1_WORLD, "KW", "KUWAIT", YES, NO, YES, YES, YES,
774          NO, NO, 7000},
775         {CTRY_LATVIA, ETSI1_WORLD, "LV", "LATVIA", YES, NO, YES, YES, YES,
776          YES, YES, 7000},
777         {CTRY_LEBANON, NULL1_WORLD, "LB", "LEBANON", YES, NO, YES, YES,
778          YES, NO, NO, 7000},
779         {CTRY_LIECHTENSTEIN, ETSI1_WORLD, "LI", "LIECHTENSTEIN", YES, NO,
780          YES, YES, YES, YES, YES, 7000},
781         {CTRY_LITHUANIA, ETSI1_WORLD, "LT", "LITHUANIA", YES, NO, YES, YES,
782          YES, YES, YES, 7000},
783         {CTRY_LUXEMBOURG, ETSI1_WORLD, "LU", "LUXEMBOURG", YES, NO, YES,
784          YES, YES, YES, YES, 7000},
785         {CTRY_MACAU, FCC2_WORLD, "MO", "MACAU", YES, YES, YES, YES, YES,
786          YES, YES, 7000},
787         {CTRY_MACEDONIA, NULL1_WORLD, "MK", "MACEDONIA", YES, NO, YES, YES,
788          YES, NO, NO, 7000},
789         {CTRY_MALAYSIA, APL8_WORLD, "MY", "MALAYSIA", YES, NO, NO, YES, NO,
790          YES, NO, 7000},
791         {CTRY_MALTA, ETSI1_WORLD, "MT", "MALTA", YES, NO, YES, YES, YES,
792          YES, YES, 7000},
793         {CTRY_MEXICO, FCC1_FCCA, "MX", "MEXICO", YES, YES, YES, YES, YES,
794          YES, YES, 7000},
795         {CTRY_MONACO, ETSI4_WORLD, "MC", "MONACO", YES, YES, YES, YES, YES,
796          YES, YES, 7000},
797         {CTRY_MOROCCO, NULL1_WORLD, "MA", "MOROCCO", YES, NO, YES, YES,
798          YES, NO, NO, 7000},
799         {CTRY_NEPAL, APL1_WORLD, "NP", "NEPAL", YES, NO, YES, YES, YES,
800          YES, YES, 7000},
801         {CTRY_NETHERLANDS, ETSI1_WORLD, "NL", "NETHERLANDS", YES, NO, YES,
802          YES, YES, YES, YES, 7000},
803         {CTRY_NETHERLANDS_ANTILLES, ETSI1_WORLD, "AN",
804          "NETHERLANDS-ANTILLES", YES, NO, YES, YES, YES, YES, YES, 7000},
805         {CTRY_NEW_ZEALAND, FCC2_ETSIC, "NZ", "NEW ZEALAND", YES, NO, YES,
806          YES, YES, YES, NO, 7000},
807         {CTRY_NORWAY, ETSI1_WORLD, "NO", "NORWAY", YES, NO, YES, YES, YES,
808          YES, YES, 7000},
809         {CTRY_OMAN, APL6_WORLD, "OM", "OMAN", YES, NO, YES, YES, YES, YES,
810          NO, 7000},
811         {CTRY_PAKISTAN, NULL1_WORLD, "PK", "PAKISTAN", YES, NO, YES, YES,
812          YES, NO, NO, 7000},
813         {CTRY_PANAMA, FCC1_FCCA, "PA", "PANAMA", YES, YES, YES, YES, YES,
814          YES, YES, 7000},
815         {CTRY_PAPUA_NEW_GUINEA, FCC1_WORLD, "PG", "PAPUA NEW GUINEA", YES,
816          YES, YES, YES, YES, YES, YES, 7000},
817         {CTRY_PERU, APL1_WORLD, "PE", "PERU", YES, NO, YES, YES, YES, YES,
818          NO, 7000},
819         {CTRY_PHILIPPINES, APL1_WORLD, "PH", "PHILIPPINES", YES, YES, YES,
820          YES, YES, YES, YES, 7000},
821         {CTRY_POLAND, ETSI1_WORLD, "PL", "POLAND", YES, NO, YES, YES, YES,
822          YES, YES, 7000},
823         {CTRY_PORTUGAL, ETSI1_WORLD, "PT", "PORTUGAL", YES, NO, YES, YES,
824          YES, YES, YES, 7000},
825         {CTRY_PUERTO_RICO, FCC1_FCCA, "PR", "PUERTO RICO", YES, YES, YES,
826          YES, YES, YES, YES, 7000},
827         {CTRY_QATAR, NULL1_WORLD, "QA", "QATAR", YES, NO, YES, YES, YES,
828          NO, NO, 7000},
829         {CTRY_ROMANIA, NULL1_WORLD, "RO", "ROMANIA", YES, NO, YES, YES,
830          YES, NO, NO, 7000},
831         {CTRY_RUSSIA, NULL1_WORLD, "RU", "RUSSIA", YES, NO, YES, YES, YES,
832          NO, NO, 7000},
833         {CTRY_SAUDI_ARABIA, NULL1_WORLD, "SA", "SAUDI ARABIA", YES, NO,
834          YES, YES, YES, NO, NO, 7000},
835         {CTRY_SERBIA_MONTENEGRO, ETSI1_WORLD, "CS", "SERBIA & MONTENEGRO",
836          YES, NO, YES, YES, YES, YES, YES, 7000},
837         {CTRY_SINGAPORE, APL6_WORLD, "SG", "SINGAPORE", YES, YES, YES, YES,
838          YES, YES, YES, 7000},
839         {CTRY_SLOVAKIA, ETSI1_WORLD, "SK", "SLOVAK REPUBLIC", YES, NO, YES,
840          YES, YES, YES, YES, 7000},
841         {CTRY_SLOVENIA, ETSI1_WORLD, "SI", "SLOVENIA", YES, NO, YES, YES,
842          YES, YES, YES, 7000},
843         {CTRY_SOUTH_AFRICA, FCC3_WORLD, "ZA", "SOUTH AFRICA", YES, NO, YES,
844          YES, YES, YES, NO, 7000},
845         {CTRY_SPAIN, ETSI1_WORLD, "ES", "SPAIN", YES, NO, YES, YES, YES,
846          YES, YES, 7000},
847         {CTRY_SRI_LANKA, FCC3_WORLD, "LK", "SRI LANKA", YES, NO, YES, YES,
848          YES, YES, NO, 7000},
849         {CTRY_SWEDEN, ETSI1_WORLD, "SE", "SWEDEN", YES, NO, YES, YES, YES,
850          YES, YES, 7000},
851         {CTRY_SWITZERLAND, ETSI1_WORLD, "CH", "SWITZERLAND", YES, NO, YES,
852          YES, YES, YES, YES, 7000},
853         {CTRY_SYRIA, NULL1_WORLD, "SY", "SYRIA", YES, NO, YES, YES, YES,
854          NO, NO, 7000},
855         {CTRY_TAIWAN, APL3_FCCA, "TW", "TAIWAN", YES, YES, YES, YES, YES,
856          YES, YES, 7000},
857         {CTRY_THAILAND, NULL1_WORLD, "TH", "THAILAND", YES, NO, YES, YES,
858          YES, NO, NO, 7000},
859         {CTRY_TRINIDAD_Y_TOBAGO, ETSI4_WORLD, "TT", "TRINIDAD & TOBAGO",
860          YES, NO, YES, YES, YES, YES, NO, 7000},
861         {CTRY_TUNISIA, ETSI3_WORLD, "TN", "TUNISIA", YES, NO, YES, YES,
862          YES, YES, NO, 7000},
863         {CTRY_TURKEY, ETSI3_WORLD, "TR", "TURKEY", YES, NO, YES, YES, YES,
864          YES, NO, 7000},
865         {CTRY_UKRAINE, NULL1_WORLD, "UA", "UKRAINE", YES, NO, YES, YES,
866          YES, NO, NO, 7000},
867         {CTRY_UAE, NULL1_WORLD, "AE", "UNITED ARAB EMIRATES", YES, NO, YES,
868          YES, YES, NO, NO, 7000},
869         {CTRY_UNITED_KINGDOM, ETSI1_WORLD, "GB", "UNITED KINGDOM", YES, NO,
870          YES, YES, YES, YES, YES, 7000},
871         {CTRY_UNITED_STATES, FCC3_FCCA, "US", "UNITED STATES", YES, YES,
872          YES, YES, YES, YES, YES, 5825},
873         {CTRY_UNITED_STATES_FCC49, FCC4_FCCA, "PS",
874          "UNITED STATES (PUBLIC SAFETY)", YES, YES, YES, YES, YES, YES,
875          YES, 7000},
876         {CTRY_URUGUAY, APL2_WORLD, "UY", "URUGUAY", YES, NO, YES, YES, YES,
877          YES, NO, 7000},
878         {CTRY_UZBEKISTAN, FCC3_FCCA, "UZ", "UZBEKISTAN", YES, YES, YES,
879          YES, YES, YES, YES, 7000},
880         {CTRY_VENEZUELA, APL2_ETSIC, "VE", "VENEZUELA", YES, NO, YES, YES,
881          YES, YES, NO, 7000},
882         {CTRY_VIET_NAM, NULL1_WORLD, "VN", "VIET NAM", YES, NO, YES, YES,
883          YES, NO, NO, 7000},
884         {CTRY_YEMEN, NULL1_WORLD, "YE", "YEMEN", YES, NO, YES, YES, YES,
885          NO, NO, 7000},
886         {CTRY_ZIMBABWE, NULL1_WORLD, "ZW", "ZIMBABWE", YES, NO, YES, YES,
887          YES, NO, NO, 7000}
888 };
889
890 enum {
891         NO_DFS = 0x0000000000000000ULL,
892         DFS_FCC3 = 0x0000000000000001ULL,
893         DFS_ETSI = 0x0000000000000002ULL,
894         DFS_MKK4 = 0x0000000000000004ULL,
895 };
896
897 enum {
898         F1_4915_4925,
899         F1_4935_4945,
900         F1_4920_4980,
901         F1_4942_4987,
902         F1_4945_4985,
903         F1_4950_4980,
904         F1_5035_5040,
905         F1_5040_5080,
906         F1_5055_5055,
907
908         F1_5120_5240,
909
910         F1_5170_5230,
911         F2_5170_5230,
912
913         F1_5180_5240,
914         F2_5180_5240,
915         F3_5180_5240,
916         F4_5180_5240,
917         F5_5180_5240,
918         F6_5180_5240,
919         F7_5180_5240,
920         F8_5180_5240,
921
922         F1_5180_5320,
923
924         F1_5240_5280,
925
926         F1_5260_5280,
927
928         F1_5260_5320,
929         F2_5260_5320,
930         F3_5260_5320,
931         F4_5260_5320,
932         F5_5260_5320,
933         F6_5260_5320,
934
935         F1_5260_5700,
936
937         F1_5280_5320,
938
939         F1_5500_5580,
940
941         F1_5500_5620,
942
943         F1_5500_5700,
944         F2_5500_5700,
945         F3_5500_5700,
946         F4_5500_5700,
947         F5_5500_5700,
948
949         F1_5660_5700,
950
951         F1_5745_5805,
952         F2_5745_5805,
953         F3_5745_5805,
954
955         F1_5745_5825,
956         F2_5745_5825,
957         F3_5745_5825,
958         F4_5745_5825,
959         F5_5745_5825,
960         F6_5745_5825,
961
962         W1_4920_4980,
963         W1_5040_5080,
964         W1_5170_5230,
965         W1_5180_5240,
966         W1_5260_5320,
967         W1_5745_5825,
968         W1_5500_5700,
969         A_DEMO_ALL_CHANNELS
970 };
971
972 static struct RegDmnFreqBand regDmn5GhzFreq[] = {
973         {4915, 4925, 23, 0, 10, 5, NO_DFS, PSCAN_MKK2, 16},
974         {4935, 4945, 23, 0, 10, 5, NO_DFS, PSCAN_MKK2, 16},
975         {4920, 4980, 23, 0, 20, 20, NO_DFS, PSCAN_MKK2, 7},
976         {4942, 4987, 27, 6, 5, 5, NO_DFS, PSCAN_FCC, 0},
977         {4945, 4985, 30, 6, 10, 5, NO_DFS, PSCAN_FCC, 0},
978         {4950, 4980, 33, 6, 20, 5, NO_DFS, PSCAN_FCC, 0},
979         {5035, 5040, 23, 0, 10, 5, NO_DFS, PSCAN_MKK2, 12},
980         {5040, 5080, 23, 0, 20, 20, NO_DFS, PSCAN_MKK2, 2},
981         {5055, 5055, 23, 0, 10, 5, NO_DFS, PSCAN_MKK2, 12},
982
983         {5120, 5240, 5, 6, 20, 20, NO_DFS, NO_PSCAN, 0},
984
985         {5170, 5230, 23, 0, 20, 20, NO_DFS, PSCAN_MKK1 | PSCAN_MKK2, 1},
986         {5170, 5230, 20, 0, 20, 20, NO_DFS, PSCAN_MKK1 | PSCAN_MKK2, 1},
987
988         {5180, 5240, 15, 0, 20, 20, NO_DFS, PSCAN_FCC | PSCAN_ETSI, 0},
989         {5180, 5240, 17, 6, 20, 20, NO_DFS, NO_PSCAN, 1},
990         {5180, 5240, 18, 0, 20, 20, NO_DFS, PSCAN_FCC | PSCAN_ETSI, 0},
991         {5180, 5240, 20, 0, 20, 20, NO_DFS, PSCAN_FCC | PSCAN_ETSI, 0},
992         {5180, 5240, 23, 0, 20, 20, NO_DFS, PSCAN_FCC | PSCAN_ETSI, 0},
993         {5180, 5240, 23, 6, 20, 20, NO_DFS, PSCAN_FCC, 0},
994         {5180, 5240, 20, 0, 20, 20, NO_DFS, PSCAN_MKK1 | PSCAN_MKK3, 0},
995         {5180, 5240, 23, 6, 20, 20, NO_DFS, NO_PSCAN, 0},
996
997         {5180, 5320, 20, 6, 20, 20, NO_DFS, PSCAN_ETSI, 0},
998
999         {5240, 5280, 23, 0, 20, 20, DFS_FCC3, PSCAN_FCC | PSCAN_ETSI, 0},
1000
1001         {5260, 5280, 23, 0, 20, 20, DFS_FCC3 | DFS_ETSI,
1002          PSCAN_FCC | PSCAN_ETSI, 0},
1003
1004         {5260, 5320, 18, 0, 20, 20, DFS_FCC3 | DFS_ETSI,
1005          PSCAN_FCC | PSCAN_ETSI, 0},
1006
1007         {5260, 5320, 20, 0, 20, 20, DFS_FCC3 | DFS_ETSI | DFS_MKK4,
1008          PSCAN_FCC | PSCAN_ETSI | PSCAN_MKK3, 0},
1009
1010
1011         {5260, 5320, 20, 6, 20, 20, DFS_FCC3 | DFS_ETSI,
1012          PSCAN_FCC | PSCAN_ETSI, 2},
1013         {5260, 5320, 23, 6, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC, 2},
1014         {5260, 5320, 23, 6, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC, 0},
1015         {5260, 5320, 30, 0, 20, 20, NO_DFS, NO_PSCAN, 0},
1016
1017         {5260, 5700, 5, 6, 20, 20, DFS_FCC3 | DFS_ETSI, NO_PSCAN, 0},
1018
1019         {5280, 5320, 17, 6, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC, 0},
1020
1021         {5500, 5580, 23, 6, 20, 20, DFS_FCC3, PSCAN_FCC, 0},
1022
1023         {5500, 5620, 30, 6, 20, 20, DFS_ETSI, PSCAN_ETSI, 0},
1024
1025         {5500, 5700, 20, 6, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC, 4},
1026         {5500, 5700, 27, 0, 20, 20, DFS_FCC3 | DFS_ETSI,
1027          PSCAN_FCC | PSCAN_ETSI, 0},
1028         {5500, 5700, 30, 0, 20, 20, DFS_FCC3 | DFS_ETSI,
1029          PSCAN_FCC | PSCAN_ETSI, 0},
1030         {5500, 5700, 23, 0, 20, 20, DFS_FCC3 | DFS_ETSI | DFS_MKK4,
1031          PSCAN_MKK3 | PSCAN_FCC, 0},
1032         {5500, 5700, 30, 6, 20, 20, DFS_ETSI, PSCAN_ETSI, 0},
1033
1034         {5660, 5700, 23, 6, 20, 20, DFS_FCC3, PSCAN_FCC, 0},
1035
1036         {5745, 5805, 23, 0, 20, 20, NO_DFS, NO_PSCAN, 0},
1037         {5745, 5805, 30, 6, 20, 20, NO_DFS, NO_PSCAN, 0},
1038         {5745, 5805, 30, 6, 20, 20, NO_DFS, PSCAN_ETSI, 0},
1039         {5745, 5825, 5, 6, 20, 20, NO_DFS, NO_PSCAN, 0},
1040         {5745, 5825, 17, 0, 20, 20, NO_DFS, NO_PSCAN, 0},
1041         {5745, 5825, 20, 0, 20, 20, NO_DFS, NO_PSCAN, 0},
1042         {5745, 5825, 30, 0, 20, 20, NO_DFS, NO_PSCAN, 0},
1043         {5745, 5825, 30, 6, 20, 20, NO_DFS, NO_PSCAN, 3},
1044         {5745, 5825, 30, 6, 20, 20, NO_DFS, NO_PSCAN, 0},
1045
1046
1047         {4920, 4980, 30, 0, 20, 20, NO_DFS, PSCAN_WWR, 0},
1048         {5040, 5080, 30, 0, 20, 20, NO_DFS, PSCAN_WWR, 0},
1049         {5170, 5230, 30, 0, 20, 20, NO_DFS, PSCAN_WWR, 0},
1050         {5180, 5240, 30, 0, 20, 20, NO_DFS, PSCAN_WWR, 0},
1051         {5260, 5320, 30, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_WWR, 0},
1052         {5745, 5825, 30, 0, 20, 20, NO_DFS, PSCAN_WWR, 0},
1053         {5500, 5700, 30, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_WWR, 0},
1054         {4920, 6100, 30, 6, 20, 20, NO_DFS, NO_PSCAN, 0},
1055 };
1056
1057 enum {
1058         T1_5130_5650,
1059         T1_5150_5670,
1060
1061         T1_5200_5200,
1062         T2_5200_5200,
1063         T3_5200_5200,
1064         T4_5200_5200,
1065         T5_5200_5200,
1066         T6_5200_5200,
1067         T7_5200_5200,
1068         T8_5200_5200,
1069
1070         T1_5200_5280,
1071         T2_5200_5280,
1072         T3_5200_5280,
1073         T4_5200_5280,
1074         T5_5200_5280,
1075         T6_5200_5280,
1076
1077         T1_5200_5240,
1078         T1_5210_5210,
1079         T2_5210_5210,
1080         T3_5210_5210,
1081         T4_5210_5210,
1082         T5_5210_5210,
1083         T6_5210_5210,
1084         T7_5210_5210,
1085         T8_5210_5210,
1086         T9_5210_5210,
1087         T10_5210_5210,
1088         T1_5240_5240,
1089
1090         T1_5210_5250,
1091         T1_5210_5290,
1092         T2_5210_5290,
1093         T3_5210_5290,
1094
1095         T1_5280_5280,
1096         T2_5280_5280,
1097         T1_5290_5290,
1098         T2_5290_5290,
1099         T3_5290_5290,
1100         T1_5250_5290,
1101         T2_5250_5290,
1102         T3_5250_5290,
1103         T4_5250_5290,
1104
1105         T1_5540_5660,
1106         T2_5540_5660,
1107         T3_5540_5660,
1108         T1_5760_5800,
1109         T2_5760_5800,
1110         T3_5760_5800,
1111         T4_5760_5800,
1112         T5_5760_5800,
1113         T6_5760_5800,
1114         T7_5760_5800,
1115
1116         T1_5765_5805,
1117         T2_5765_5805,
1118         T3_5765_5805,
1119         T4_5765_5805,
1120         T5_5765_5805,
1121         T6_5765_5805,
1122         T7_5765_5805,
1123         T8_5765_5805,
1124         T9_5765_5805,
1125
1126         WT1_5210_5250,
1127         WT1_5290_5290,
1128         WT1_5540_5660,
1129         WT1_5760_5800,
1130 };
1131
1132 enum {
1133         F1_2312_2372,
1134         F2_2312_2372,
1135
1136         F1_2412_2472,
1137         F2_2412_2472,
1138         F3_2412_2472,
1139
1140         F1_2412_2462,
1141         F2_2412_2462,
1142
1143         F1_2432_2442,
1144
1145         F1_2457_2472,
1146
1147         F1_2467_2472,
1148
1149         F1_2484_2484,
1150         F2_2484_2484,
1151
1152         F1_2512_2732,
1153
1154         W1_2312_2372,
1155         W1_2412_2412,
1156         W1_2417_2432,
1157         W1_2437_2442,
1158         W1_2447_2457,
1159         W1_2462_2462,
1160         W1_2467_2467,
1161         W2_2467_2467,
1162         W1_2472_2472,
1163         W2_2472_2472,
1164         W1_2484_2484,
1165         W2_2484_2484,
1166 };
1167
1168 static struct RegDmnFreqBand regDmn2GhzFreq[] = {
1169         {2312, 2372, 5, 6, 20, 5, NO_DFS, NO_PSCAN, 0},
1170         {2312, 2372, 20, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1171
1172         {2412, 2472, 5, 6, 20, 5, NO_DFS, NO_PSCAN, 0},
1173         {2412, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA, 0},
1174         {2412, 2472, 30, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1175
1176         {2412, 2462, 27, 6, 20, 5, NO_DFS, NO_PSCAN, 0},
1177         {2412, 2462, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA, 0},
1178
1179         {2432, 2442, 20, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1180
1181         {2457, 2472, 20, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1182
1183         {2467, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA2 | PSCAN_MKKA, 0},
1184
1185         {2484, 2484, 5, 6, 20, 5, NO_DFS, NO_PSCAN, 0},
1186         {2484, 2484, 20, 0, 20, 5, NO_DFS,
1187          PSCAN_MKKA | PSCAN_MKKA1 | PSCAN_MKKA2, 0},
1188
1189         {2512, 2732, 5, 6, 20, 5, NO_DFS, NO_PSCAN, 0},
1190
1191         {2312, 2372, 20, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1192         {2412, 2412, 20, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1193         {2417, 2432, 20, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1194         {2437, 2442, 20, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1195         {2447, 2457, 20, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1196         {2462, 2462, 20, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1197         {2467, 2467, 20, 0, 20, 5, NO_DFS, PSCAN_WWR | IS_ECM_CHAN, 0},
1198         {2467, 2467, 20, 0, 20, 5, NO_DFS, NO_PSCAN | IS_ECM_CHAN, 0},
1199         {2472, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_WWR | IS_ECM_CHAN, 0},
1200         {2472, 2472, 20, 0, 20, 5, NO_DFS, NO_PSCAN | IS_ECM_CHAN, 0},
1201         {2484, 2484, 20, 0, 20, 5, NO_DFS, PSCAN_WWR | IS_ECM_CHAN, 0},
1202         {2484, 2484, 20, 0, 20, 5, NO_DFS, NO_PSCAN | IS_ECM_CHAN, 0},
1203 };
1204
1205 enum {
1206         G1_2312_2372,
1207         G2_2312_2372,
1208
1209         G1_2412_2472,
1210         G2_2412_2472,
1211         G3_2412_2472,
1212
1213         G1_2412_2462,
1214         G2_2412_2462,
1215
1216         G1_2432_2442,
1217
1218         G1_2457_2472,
1219
1220         G1_2512_2732,
1221
1222         G1_2467_2472,
1223
1224         WG1_2312_2372,
1225         WG1_2412_2462,
1226         WG1_2467_2472,
1227         WG2_2467_2472,
1228         G_DEMO_ALL_CHANNELS
1229 };
1230
1231 static struct RegDmnFreqBand regDmn2Ghz11gFreq[] = {
1232         {2312, 2372, 5, 6, 20, 5, NO_DFS, NO_PSCAN, 0},
1233         {2312, 2372, 20, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1234
1235         {2412, 2472, 5, 6, 20, 5, NO_DFS, NO_PSCAN, 0},
1236         {2412, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA_G, 0},
1237         {2412, 2472, 30, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1238
1239         {2412, 2462, 27, 6, 20, 5, NO_DFS, NO_PSCAN, 0},
1240         {2412, 2462, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA_G, 0},
1241
1242         {2432, 2442, 20, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1243
1244         {2457, 2472, 20, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1245
1246         {2512, 2732, 5, 6, 20, 5, NO_DFS, NO_PSCAN, 0},
1247
1248         {2467, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA2 | PSCAN_MKKA, 0},
1249
1250         {2312, 2372, 20, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1251         {2412, 2462, 20, 0, 20, 5, NO_DFS, NO_PSCAN, 0},
1252         {2467, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_WWR | IS_ECM_CHAN, 0},
1253         {2467, 2472, 20, 0, 20, 5, NO_DFS, NO_PSCAN | IS_ECM_CHAN, 0},
1254         {2312, 2732, 27, 6, 20, 5, NO_DFS, NO_PSCAN, 0},
1255 };
1256
1257 enum {
1258         T1_2312_2372,
1259         T1_2437_2437,
1260         T2_2437_2437,
1261         T3_2437_2437,
1262         T1_2512_2732
1263 };
1264
1265 static struct regDomain regDomains[] = {
1266
1267         {DEBUG_REG_DMN, FCC, DFS_FCC3, NO_PSCAN, NO_REQ,
1268          BM(A_DEMO_ALL_CHANNELS, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1269             -1),
1270          BM(T1_5130_5650, T1_5150_5670, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1271             -1),
1272          BM(T1_5200_5240, T1_5280_5280, T1_5540_5660, T1_5765_5805, -1, -1,
1273             -1, -1, -1, -1, -1, -1),
1274          BM(F1_2312_2372, F1_2412_2472, F1_2484_2484, F1_2512_2732, -1, -1,
1275             -1, -1, -1, -1, -1, -1),
1276          BM(G_DEMO_ALL_CHANNELS, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1277             -1),
1278          BM(T1_2312_2372, T1_2437_2437, T1_2512_2732, -1, -1, -1, -1, -1,
1279             -1, -1, -1, -1)},
1280
1281         {APL1, FCC, NO_DFS, NO_PSCAN, NO_REQ,
1282          BM(F4_5745_5825, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1283          BM(T2_5760_5800, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1284          BM(T1_5765_5805, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1285          BMZERO,
1286          BMZERO,
1287          BMZERO},
1288
1289         {APL2, FCC, NO_DFS, NO_PSCAN, NO_REQ,
1290          BM(F1_5745_5805, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1291          BM(T1_5760_5800, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1292          BM(T2_5765_5805, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1293          BMZERO,
1294          BMZERO,
1295          BMZERO},
1296
1297         {APL3, FCC, NO_DFS, NO_PSCAN, NO_REQ,
1298          BM(F1_5280_5320, F2_5745_5805, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1299             -1),
1300          BM(T1_5290_5290, T1_5760_5800, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1301             -1),
1302          BM(T1_5765_5805, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1303          BMZERO,
1304          BMZERO,
1305          BMZERO},
1306
1307         {APL4, FCC, NO_DFS, NO_PSCAN, NO_REQ,
1308          BM(F4_5180_5240, F3_5745_5825, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1309             -1),
1310          BM(T1_5210_5210, T3_5760_5800, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1311             -1),
1312          BM(T1_5200_5200, T3_5765_5805, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1313             -1),
1314          BMZERO,
1315          BMZERO,
1316          BMZERO},
1317
1318         {APL5, FCC, NO_DFS, NO_PSCAN, NO_REQ,
1319          BM(F2_5745_5825, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1320          BM(T4_5760_5800, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1321          BM(T4_5765_5805, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1322          BMZERO,
1323          BMZERO,
1324          BMZERO},
1325
1326         {APL6, ETSI, DFS_ETSI, PSCAN_FCC_T | PSCAN_FCC, NO_REQ,
1327          BM(F4_5180_5240, F2_5260_5320, F3_5745_5825, -1, -1, -1, -1, -1,
1328             -1, -1, -1, -1),
1329          BM(T2_5210_5210, T1_5250_5290, T1_5760_5800, -1, -1, -1, -1, -1,
1330             -1, -1, -1, -1),
1331          BM(T1_5200_5280, T5_5765_5805, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1332             -1),
1333          BMZERO,
1334          BMZERO,
1335          BMZERO},
1336
1337         {APL7, ETSI, DFS_ETSI, PSCAN_ETSI, NO_REQ,
1338          BM(F1_5280_5320, F5_5500_5700, F3_5745_5805, -1, -1, -1, -1, -1,
1339             -1, -1, -1, -1),
1340          BM(T3_5290_5290, T5_5760_5800, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1341             -1),
1342          BM(T1_5540_5660, T6_5765_5805, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1343             -1),
1344          BMZERO,
1345          BMZERO,
1346          BMZERO},
1347
1348         {APL8, ETSI, NO_DFS, NO_PSCAN,
1349          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB,
1350          BM(F6_5260_5320, F4_5745_5825, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1351             -1),
1352          BM(T2_5290_5290, T2_5760_5800, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1353             -1),
1354          BM(T1_5280_5280, T1_5765_5805, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1355             -1),
1356          BMZERO,
1357          BMZERO,
1358          BMZERO},
1359
1360         {APL9, ETSI, DFS_ETSI, PSCAN_ETSI,
1361          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB,
1362          BM(F1_5180_5320, F1_5500_5620, F3_5745_5805, -1, -1, -1, -1, -1,
1363             -1, -1, -1, -1),
1364          BM(T3_5290_5290, T5_5760_5800, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1365             -1),
1366          BM(T1_5540_5660, T6_5765_5805, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1367             -1),
1368          BMZERO,
1369          BMZERO,
1370          BMZERO},
1371
1372         {APL10, ETSI, DFS_ETSI, PSCAN_ETSI,
1373          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB,
1374          BM(F1_5180_5320, F5_5500_5700, F3_5745_5805, -1, -1, -1, -1, -1,
1375             -1, -1, -1, -1),
1376          BM(T3_5290_5290, T5_5760_5800, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1377             -1),
1378          BM(T1_5540_5660, T6_5765_5805, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1379             -1),
1380          BMZERO,
1381          BMZERO,
1382          BMZERO},
1383
1384         {ETSI1, ETSI, DFS_ETSI, PSCAN_ETSI,
1385          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB,
1386          BM(F4_5180_5240, F2_5260_5320, F2_5500_5700, -1, -1, -1, -1, -1,
1387             -1, -1, -1, -1),
1388          BM(T1_5210_5290, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1389          BM(T2_5200_5280, T2_5540_5660, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1390             -1),
1391          BMZERO,
1392          BMZERO,
1393          BMZERO},
1394
1395         {ETSI2, ETSI, DFS_ETSI, PSCAN_ETSI,
1396          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB,
1397          BM(F3_5180_5240, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1398          BM(T3_5210_5210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1399          BM(T2_5200_5200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1400          BMZERO,
1401          BMZERO,
1402          BMZERO},
1403
1404         {ETSI3, ETSI, DFS_ETSI, PSCAN_ETSI,
1405          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB,
1406          BM(F4_5180_5240, F2_5260_5320, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1407             -1),
1408          BM(T1_5210_5290, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1409          BM(T2_5200_5280, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1410          BMZERO,
1411          BMZERO,
1412          BMZERO},
1413
1414         {ETSI4, ETSI, DFS_ETSI, PSCAN_ETSI,
1415          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB,
1416          BM(F3_5180_5240, F1_5260_5320, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1417             -1),
1418          BM(T2_5210_5290, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1419          BM(T3_5200_5280, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1420          BMZERO,
1421          BMZERO,
1422          BMZERO},
1423
1424         {ETSI5, ETSI, DFS_ETSI, PSCAN_ETSI,
1425          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB,
1426          BM(F1_5180_5240, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1427          BM(T4_5210_5210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1428          BM(T3_5200_5200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1429          BMZERO,
1430          BMZERO,
1431          BMZERO},
1432
1433         {ETSI6, ETSI, DFS_ETSI, PSCAN_ETSI,
1434          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB,
1435          BM(F5_5180_5240, F1_5260_5280, F3_5500_5700, -1, -1, -1, -1, -1,
1436             -1, -1, -1, -1),
1437          BM(T1_5210_5250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1438          BM(T4_5200_5280, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1439          BMZERO,
1440          BMZERO,
1441          BMZERO},
1442
1443         {FCC1, FCC, NO_DFS, NO_PSCAN, NO_REQ,
1444          BM(F2_5180_5240, F4_5260_5320, F5_5745_5825, -1, -1, -1, -1, -1,
1445             -1, -1, -1, -1),
1446          BM(T6_5210_5210, T2_5250_5290, T6_5760_5800, -1, -1, -1, -1, -1,
1447             -1, -1, -1, -1),
1448          BM(T1_5200_5240, T2_5280_5280, T7_5765_5805, -1, -1, -1, -1, -1,
1449             -1, -1, -1, -1),
1450          BMZERO,
1451          BMZERO,
1452          BMZERO},
1453
1454         {FCC2, FCC, NO_DFS, NO_PSCAN, NO_REQ,
1455          BM(F6_5180_5240, F5_5260_5320, F6_5745_5825, -1, -1, -1, -1, -1,
1456             -1, -1, -1, -1),
1457          BM(T7_5210_5210, T3_5250_5290, T2_5760_5800, -1, -1, -1, -1, -1,
1458             -1, -1, -1, -1),
1459          BM(T7_5200_5200, T1_5240_5240, T2_5280_5280, T1_5765_5805, -1, -1,
1460             -1, -1, -1, -1, -1, -1),
1461          BMZERO,
1462          BMZERO,
1463          BMZERO},
1464
1465         {FCC3, FCC, DFS_FCC3, PSCAN_FCC | PSCAN_FCC_T, NO_REQ,
1466          BM(F2_5180_5240, F3_5260_5320, F1_5500_5700, F5_5745_5825, -1, -1,
1467             -1, -1, -1, -1, -1, -1),
1468          BM(T6_5210_5210, T2_5760_5800, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1469             -1),
1470          BM(T4_5200_5200, T8_5765_5805, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1471             -1),
1472          BMZERO,
1473          BMZERO,
1474          BMZERO},
1475
1476         {FCC4, FCC, DFS_FCC3, PSCAN_FCC | PSCAN_FCC_T, NO_REQ,
1477          BM(F1_4942_4987, F1_4945_4985, F1_4950_4980, -1, -1, -1, -1, -1,
1478             -1, -1, -1, -1),
1479          BM(T8_5210_5210, T4_5250_5290, T7_5760_5800, -1, -1, -1, -1, -1,
1480             -1, -1, -1, -1),
1481          BM(T1_5200_5240, T1_5280_5280, T9_5765_5805, -1, -1, -1, -1, -1,
1482             -1, -1, -1, -1),
1483          BMZERO,
1484          BMZERO,
1485          BMZERO},
1486
1487         {FCC5, FCC, NO_DFS, NO_PSCAN, NO_REQ,
1488          BM(F2_5180_5240, F6_5745_5825, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1489             -1),
1490          BM(T6_5210_5210, T2_5760_5800, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1491             -1),
1492          BM(T8_5200_5200, T7_5765_5805, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1493             -1),
1494          BMZERO,
1495          BMZERO,
1496          BMZERO},
1497
1498         {FCC6, FCC, DFS_FCC3, PSCAN_FCC, NO_REQ,
1499          BM(F8_5180_5240, F5_5260_5320, F1_5500_5580, F1_5660_5700,
1500             F6_5745_5825, -1, -1, -1, -1, -1, -1, -1),
1501          BM(T7_5210_5210, T3_5250_5290, T2_5760_5800, -1, -1, -1, -1, -1,
1502             -1, -1, -1, -1),
1503          BM(T7_5200_5200, T1_5240_5240, T2_5280_5280, T1_5765_5805, -1, -1,
1504             -1, -1, -1, -1, -1, -1),
1505          BMZERO,
1506          BMZERO,
1507          BMZERO},
1508
1509         {MKK1, MKK, NO_DFS, PSCAN_MKK1, DISALLOW_ADHOC_11A_TURB,
1510          BM(F1_5170_5230, F4_5180_5240, F2_5260_5320, F4_5500_5700, -1, -1,
1511             -1, -1, -1, -1, -1, -1),
1512          BM(T7_5210_5210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1513          BM(T5_5200_5200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1514          BMZERO,
1515          BMZERO,
1516          BMZERO},
1517
1518         {MKK2, MKK, NO_DFS, PSCAN_MKK2, DISALLOW_ADHOC_11A_TURB,
1519          BM(F1_4915_4925, F1_4935_4945, F1_4920_4980, F1_5035_5040,
1520             F1_5055_5055, F1_5040_5080, F1_5170_5230, F4_5180_5240,
1521             F2_5260_5320, F4_5500_5700, -1, -1),
1522          BM(T7_5210_5210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1523          BM(T5_5200_5200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1524          BMZERO,
1525          BMZERO,
1526          BMZERO},
1527
1528
1529         {MKK3, MKK, NO_DFS, PSCAN_MKK3, DISALLOW_ADHOC_11A_TURB,
1530          BM(F4_5180_5240, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1531          BM(T9_5210_5210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1532          BM(T1_5200_5200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1533          BMZERO,
1534          BMZERO,
1535          BMZERO},
1536
1537
1538         {MKK4, MKK, DFS_MKK4, PSCAN_MKK3, DISALLOW_ADHOC_11A_TURB,
1539          BM(F4_5180_5240, F2_5260_5320, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1540             -1),
1541          BM(T10_5210_5210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1542          BM(T6_5200_5200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1543          BMZERO,
1544          BMZERO,
1545          BMZERO},
1546
1547
1548         {MKK5, MKK, DFS_MKK4, PSCAN_MKK3, DISALLOW_ADHOC_11A_TURB,
1549          BM(F4_5180_5240, F2_5260_5320, F4_5500_5700, -1, -1, -1, -1, -1,
1550             -1, -1, -1, -1),
1551          BM(T3_5210_5290, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1552          BM(T5_5200_5280, T3_5540_5660, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1553             -1),
1554          BMZERO,
1555          BMZERO,
1556          BMZERO},
1557
1558
1559         {MKK6, MKK, NO_DFS, PSCAN_MKK1, DISALLOW_ADHOC_11A_TURB,
1560          BM(F2_5170_5230, F4_5180_5240, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1561             -1),
1562          BM(T3_5210_5210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1563          BM(T6_5200_5200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1564          BMZERO,
1565          BMZERO,
1566          BMZERO},
1567
1568
1569         {MKK7, MKK, DFS_MKK4, PSCAN_MKK1 | PSCAN_MKK3,
1570          DISALLOW_ADHOC_11A_TURB,
1571          BM(F1_5170_5230, F4_5180_5240, F2_5260_5320, -1, -1, -1, -1, -1,
1572             -1, -1, -1, -1),
1573          BM(T3_5210_5290, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1574          BM(T5_5200_5280, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1575          BMZERO,
1576          BMZERO,
1577          BMZERO},
1578
1579
1580         {MKK8, MKK, DFS_MKK4, PSCAN_MKK1 | PSCAN_MKK3,
1581          DISALLOW_ADHOC_11A_TURB,
1582          BM(F1_5170_5230, F4_5180_5240, F2_5260_5320, F4_5500_5700, -1, -1,
1583             -1, -1, -1, -1, -1, -1),
1584          BM(T3_5210_5290, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1585          BM(T5_5200_5280, T3_5540_5660, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1586             -1),
1587          BMZERO,
1588          BMZERO,
1589          BMZERO},
1590
1591
1592         {MKK9, MKK, NO_DFS, PSCAN_MKK2 | PSCAN_MKK3,
1593          DISALLOW_ADHOC_11A_TURB,
1594          BM(F1_4915_4925, F1_4935_4945, F1_4920_4980, F1_5035_5040,
1595             F1_5055_5055, F1_5040_5080, F4_5180_5240, -1, -1, -1, -1, -1),
1596          BM(T9_5210_5210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1597          BM(T1_5200_5200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1598          BMZERO,
1599          BMZERO,
1600          BMZERO},
1601
1602
1603         {MKK10, MKK, DFS_MKK4, PSCAN_MKK2 | PSCAN_MKK3,
1604          DISALLOW_ADHOC_11A_TURB,
1605          BM(F1_4915_4925, F1_4935_4945, F1_4920_4980, F1_5035_5040,
1606             F1_5055_5055, F1_5040_5080, F4_5180_5240, F2_5260_5320, -1, -1,
1607             -1, -1),
1608          BM(T3_5210_5290, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1609          BM(T1_5200_5280, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1610          BMZERO,
1611          BMZERO,
1612          BMZERO},
1613
1614
1615         {MKK11, MKK, DFS_MKK4, PSCAN_MKK3, DISALLOW_ADHOC_11A_TURB,
1616          BM(F1_4915_4925, F1_4935_4945, F1_4920_4980, F1_5035_5040,
1617             F1_5055_5055, F1_5040_5080, F4_5180_5240, F2_5260_5320,
1618             F4_5500_5700, -1, -1, -1),
1619          BM(T3_5210_5290, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1620          BM(T1_5200_5280, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1621          BMZERO,
1622          BMZERO,
1623          BMZERO},
1624
1625
1626         {MKK12, MKK, DFS_MKK4, PSCAN_MKK1 | PSCAN_MKK3,
1627          DISALLOW_ADHOC_11A_TURB,
1628          BM(F1_4915_4925, F1_4935_4945, F1_4920_4980, F1_5035_5040,
1629             F1_5055_5055, F1_5040_5080, F1_5170_5230, F4_5180_5240,
1630             F2_5260_5320, F4_5500_5700, -1, -1),
1631          BM(T3_5210_5290, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1632          BM(T1_5200_5280, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1633          BMZERO,
1634          BMZERO,
1635          BMZERO},
1636
1637
1638         {MKK13, MKK, DFS_MKK4, PSCAN_MKK1 | PSCAN_MKK3,
1639          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB,
1640          BM(F1_5170_5230, F7_5180_5240, F2_5260_5320, F4_5500_5700, -1, -1,
1641             -1, -1, -1, -1, -1, -1),
1642          BMZERO,
1643          BMZERO,
1644          BMZERO,
1645          BMZERO,
1646          BMZERO},
1647
1648
1649         {MKK14, MKK, DFS_MKK4, PSCAN_MKK1, DISALLOW_ADHOC_11A_TURB,
1650          BM(F1_4915_4925, F1_4935_4945, F1_4920_4980, F1_5035_5040,
1651             F1_5040_5080, F1_5055_5055, F1_5170_5230, F4_5180_5240, -1, -1,
1652             -1, -1),
1653          BMZERO,
1654          BMZERO,
1655          BMZERO,
1656          BMZERO,
1657          BMZERO},
1658
1659
1660         {MKK15, MKK, DFS_MKK4, PSCAN_MKK1, DISALLOW_ADHOC_11A_TURB,
1661          BM(F1_4915_4925, F1_4935_4945, F1_4920_4980, F1_5035_5040,
1662             F1_5040_5080, F1_5055_5055, F1_5170_5230, F4_5180_5240,
1663             F2_5260_5320, -1, -1, -1),
1664          BMZERO,
1665          BMZERO,
1666          BMZERO,
1667          BMZERO,
1668          BMZERO},
1669
1670
1671         {APLD, NO_CTL, NO_DFS, NO_PSCAN, NO_REQ,
1672          BMZERO,
1673          BMZERO,
1674          BMZERO,
1675          BM(F2_2312_2372, F2_2412_2472, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1676             -1),
1677          BM(G2_2312_2372, G2_2412_2472, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1678             -1),
1679          BMZERO},
1680
1681         {ETSIA, NO_CTL, NO_DFS, PSCAN_ETSIA,
1682          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB,
1683          BMZERO,
1684          BMZERO,
1685          BMZERO,
1686          BM(F1_2457_2472, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1687          BM(G1_2457_2472, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1688          BM(T2_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1689
1690         {ETSIB, ETSI, NO_DFS, PSCAN_ETSIB,
1691          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB,
1692          BMZERO,
1693          BMZERO,
1694          BMZERO,
1695          BM(F1_2432_2442, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1696          BM(G1_2432_2442, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1697          BM(T2_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1698
1699         {ETSIC, ETSI, NO_DFS, PSCAN_ETSIC,
1700          DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB,
1701          BMZERO,
1702          BMZERO,
1703          BMZERO,
1704          BM(F3_2412_2472, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1705          BM(G3_2412_2472, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1706          BM(T2_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1707
1708         {FCCA, FCC, NO_DFS, NO_PSCAN, NO_REQ,
1709          BMZERO,
1710          BMZERO,
1711          BMZERO,
1712          BM(F1_2412_2462, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1713          BM(G1_2412_2462, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1714          BM(T2_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1715
1716         {MKKA, MKK, NO_DFS,
1717          PSCAN_MKKA | PSCAN_MKKA_G | PSCAN_MKKA1 | PSCAN_MKKA1_G |
1718          PSCAN_MKKA2 | PSCAN_MKKA2_G, DISALLOW_ADHOC_11A_TURB,
1719          BMZERO,
1720          BMZERO,
1721          BMZERO,
1722          BM(F2_2412_2462, F1_2467_2472, F2_2484_2484, -1, -1, -1, -1, -1,
1723             -1, -1, -1, -1),
1724          BM(G2_2412_2462, G1_2467_2472, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1725             -1),
1726          BM(T2_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1727
1728         {MKKC, MKK, NO_DFS, NO_PSCAN, NO_REQ,
1729          BMZERO,
1730          BMZERO,
1731          BMZERO,
1732          BM(F2_2412_2472, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1733          BM(G2_2412_2472, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1734          BM(T2_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1735
1736         {WORLD, ETSI, NO_DFS, NO_PSCAN, NO_REQ,
1737          BMZERO,
1738          BMZERO,
1739          BMZERO,
1740          BM(F2_2412_2472, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1741          BM(G2_2412_2472, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1742          BM(T2_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1743
1744         {WOR0_WORLD, NO_CTL, DFS_FCC3 | DFS_ETSI, PSCAN_WWR, ADHOC_PER_11D,
1745          BM(W1_5260_5320, W1_5180_5240, W1_5170_5230, W1_5745_5825,
1746             W1_5500_5700, -1, -1, -1, -1, -1, -1, -1),
1747          BM(WT1_5210_5250, WT1_5290_5290, WT1_5760_5800, -1, -1, -1, -1,
1748             -1, -1, -1, -1, -1),
1749          BMZERO,
1750          BM(W1_2412_2412, W1_2437_2442, W1_2462_2462, W1_2472_2472,
1751             W1_2417_2432, W1_2447_2457, W1_2467_2467, W1_2484_2484, -1, -1,
1752             -1, -1),
1753          BM(WG1_2412_2462, WG1_2467_2472, -1, -1, -1, -1, -1, -1, -1, -1,
1754             -1, -1),
1755          BM(T3_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1756
1757         {WOR01_WORLD, NO_CTL, DFS_FCC3 | DFS_ETSI, PSCAN_WWR,
1758          ADHOC_PER_11D,
1759          BM(W1_5260_5320, W1_5180_5240, W1_5170_5230, W1_5745_5825,
1760             W1_5500_5700, -1, -1, -1, -1, -1, -1, -1),
1761          BM(WT1_5210_5250, WT1_5290_5290, WT1_5760_5800, -1, -1, -1, -1,
1762             -1, -1, -1, -1, -1),
1763          BMZERO,
1764          BM(W1_2412_2412, W1_2437_2442, W1_2462_2462, W1_2417_2432,
1765             W1_2447_2457, -1, -1, -1, -1, -1, -1, -1),
1766          BM(WG1_2412_2462, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1767          BM(T3_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1768
1769         {WOR02_WORLD, NO_CTL, DFS_FCC3 | DFS_ETSI, PSCAN_WWR,
1770          ADHOC_PER_11D,
1771          BM(W1_5260_5320, W1_5180_5240, W1_5170_5230, W1_5745_5825,
1772             W1_5500_5700, -1, -1, -1, -1, -1, -1, -1),
1773          BM(WT1_5210_5250, WT1_5290_5290, WT1_5760_5800, -1, -1, -1, -1,
1774             -1, -1, -1, -1, -1),
1775          BMZERO,
1776          BM(W1_2412_2412, W1_2437_2442, W1_2462_2462, W1_2472_2472,
1777             W1_2417_2432, W1_2447_2457, W1_2467_2467, -1, -1, -1, -1, -1),
1778          BM(WG1_2412_2462, WG1_2467_2472, -1, -1, -1, -1, -1, -1, -1, -1,
1779             -1, -1),
1780          BM(T3_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1781
1782         {EU1_WORLD, NO_CTL, DFS_FCC3 | DFS_ETSI, PSCAN_WWR, ADHOC_PER_11D,
1783          BM(W1_5260_5320, W1_5180_5240, W1_5170_5230, W1_5745_5825,
1784             W1_5500_5700, -1, -1, -1, -1, -1, -1, -1),
1785          BM(WT1_5210_5250, WT1_5290_5290, WT1_5760_5800, -1, -1, -1, -1,
1786             -1, -1, -1, -1, -1),
1787          BMZERO,
1788          BM(W1_2412_2412, W1_2437_2442, W1_2462_2462, W2_2472_2472,
1789             W1_2417_2432, W1_2447_2457, W2_2467_2467, -1, -1, -1, -1, -1),
1790          BM(WG1_2412_2462, WG2_2467_2472, -1, -1, -1, -1, -1, -1, -1, -1,
1791             -1, -1),
1792          BM(T3_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1793
1794         {WOR1_WORLD, NO_CTL, DFS_FCC3 | DFS_ETSI, PSCAN_WWR, ADHOC_NO_11A,
1795          BM(W1_5260_5320, W1_5180_5240, W1_5170_5230, W1_5745_5825,
1796             W1_5500_5700, -1, -1, -1, -1, -1, -1, -1),
1797          BMZERO,
1798          BMZERO,
1799          BM(W1_2412_2412, W1_2437_2442, W1_2462_2462, W1_2472_2472,
1800             W1_2417_2432, W1_2447_2457, W1_2467_2467, W1_2484_2484, -1, -1,
1801             -1, -1),
1802          BM(WG1_2412_2462, WG1_2467_2472, -1, -1, -1, -1, -1, -1, -1, -1,
1803             -1, -1),
1804          BM(T3_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1805
1806         {WOR2_WORLD, NO_CTL, DFS_FCC3 | DFS_ETSI, PSCAN_WWR, ADHOC_NO_11A,
1807          BM(W1_5260_5320, W1_5180_5240, W1_5170_5230, W1_5745_5825,
1808             W1_5500_5700, -1, -1, -1, -1, -1, -1, -1),
1809          BM(WT1_5210_5250, WT1_5290_5290, WT1_5760_5800, -1, -1, -1, -1,
1810             -1, -1, -1, -1, -1),
1811          BMZERO,
1812          BM(W1_2412_2412, W1_2437_2442, W1_2462_2462, W1_2472_2472,
1813             W1_2417_2432, W1_2447_2457, W1_2467_2467, W1_2484_2484, -1, -1,
1814             -1, -1),
1815          BM(WG1_2412_2462, WG1_2467_2472, -1, -1, -1, -1, -1, -1, -1, -1,
1816             -1, -1),
1817          BM(T3_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1818
1819         {WOR3_WORLD, NO_CTL, DFS_FCC3 | DFS_ETSI, PSCAN_WWR, ADHOC_PER_11D,
1820          BM(W1_5260_5320, W1_5180_5240, W1_5170_5230, W1_5745_5825, -1, -1,
1821             -1, -1, -1, -1, -1, -1),
1822          BM(WT1_5210_5250, WT1_5290_5290, WT1_5760_5800, -1, -1, -1, -1,
1823             -1, -1, -1, -1, -1),
1824          BMZERO,
1825          BM(W1_2412_2412, W1_2437_2442, W1_2462_2462, W1_2472_2472,
1826             W1_2417_2432, W1_2447_2457, W1_2467_2467, -1, -1, -1, -1, -1),
1827          BM(WG1_2412_2462, WG2_2467_2472, -1, -1, -1, -1, -1, -1, -1, -1,
1828             -1, -1),
1829          BM(T3_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1830
1831         {WOR4_WORLD, NO_CTL, DFS_FCC3 | DFS_ETSI, PSCAN_WWR, ADHOC_NO_11A,
1832          BM(W1_5260_5320, W1_5180_5240, W1_5745_5825, -1, -1, -1, -1, -1,
1833             -1, -1, -1, -1),
1834          BM(WT1_5210_5250, WT1_5290_5290, WT1_5760_5800, -1, -1, -1, -1,
1835             -1, -1, -1, -1, -1),
1836          BMZERO,
1837          BM(W1_2412_2412, W1_2437_2442, W1_2462_2462, W1_2417_2432,
1838             W1_2447_2457, -1, -1, -1, -1, -1, -1, -1),
1839          BM(WG1_2412_2462, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1840          BM(T3_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1841
1842         {WOR5_ETSIC, NO_CTL, DFS_FCC3 | DFS_ETSI, PSCAN_WWR, ADHOC_NO_11A,
1843          BM(W1_5260_5320, W1_5180_5240, W1_5745_5825, -1, -1, -1, -1, -1,
1844             -1, -1, -1, -1),
1845          BMZERO,
1846          BMZERO,
1847          BM(W1_2412_2412, W1_2437_2442, W1_2462_2462, W1_2472_2472,
1848             W1_2417_2432, W1_2447_2457, W1_2467_2467, -1, -1, -1, -1, -1),
1849          BM(WG1_2412_2462, WG1_2467_2472, -1, -1, -1, -1, -1, -1, -1, -1,
1850             -1, -1),
1851          BM(T3_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1852
1853         {WOR9_WORLD, NO_CTL, DFS_FCC3 | DFS_ETSI, PSCAN_WWR, ADHOC_NO_11A,
1854          BM(W1_5260_5320, W1_5180_5240, W1_5745_5825, W1_5500_5700, -1, -1,
1855             -1, -1, -1, -1, -1, -1),
1856          BM(WT1_5210_5250, WT1_5290_5290, WT1_5760_5800, -1, -1, -1, -1,
1857             -1, -1, -1, -1, -1),
1858          BMZERO,
1859          BM(W1_2412_2412, W1_2437_2442, W1_2462_2462, W1_2417_2432,
1860             W1_2447_2457, -1, -1, -1, -1, -1, -1, -1),
1861          BM(WG1_2412_2462, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1),
1862          BM(T3_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1863
1864         {WORA_WORLD, NO_CTL, DFS_FCC3 | DFS_ETSI, PSCAN_WWR, ADHOC_NO_11A,
1865          BM(W1_5260_5320, W1_5180_5240, W1_5745_5825, W1_5500_5700, -1, -1,
1866             -1, -1, -1, -1, -1, -1),
1867          BMZERO,
1868          BMZERO,
1869          BM(W1_2412_2412, W1_2437_2442, W1_2462_2462, W1_2472_2472,
1870             W1_2417_2432, W1_2447_2457, W1_2467_2467, -1, -1, -1, -1, -1),
1871          BM(WG1_2412_2462, WG1_2467_2472, -1, -1, -1, -1, -1, -1, -1, -1,
1872             -1, -1),
1873          BM(T3_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1874
1875         {WORB_WORLD, NO_CTL, DFS_FCC3 | DFS_ETSI, PSCAN_WWR, ADHOC_NO_11A,
1876          BM(W1_5260_5320, W1_5180_5240, W1_5500_5700, -1, -1, -1, -1, -1,
1877             -1, -1, -1, -1),
1878          BMZERO,
1879          BMZERO,
1880          BM(W1_2412_2412, W1_2437_2442, W1_2462_2462, W1_2472_2472,
1881             W1_2417_2432, W1_2447_2457, W1_2467_2467, -1, -1, -1, -1, -1),
1882          BM(WG1_2412_2462, WG1_2467_2472, -1, -1, -1, -1, -1, -1, -1, -1,
1883             -1, -1),
1884          BM(T3_2437_2437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)},
1885
1886         {NULL1, NO_CTL, NO_DFS, NO_PSCAN, NO_REQ,
1887          BMZERO,
1888          BMZERO,
1889          BMZERO,
1890          BMZERO,
1891          BMZERO,
1892          BMZERO}
1893 };
1894
1895 static const struct cmode modes[] = {
1896         {ATH9K_MODE_11A, CHANNEL_A},
1897         {ATH9K_MODE_11B, CHANNEL_B},
1898         {ATH9K_MODE_11G, CHANNEL_G},
1899         {ATH9K_MODE_11NG_HT20, CHANNEL_G_HT20},
1900         {ATH9K_MODE_11NG_HT40PLUS, CHANNEL_G_HT40PLUS},
1901         {ATH9K_MODE_11NG_HT40MINUS, CHANNEL_G_HT40MINUS},
1902         {ATH9K_MODE_11NA_HT20, CHANNEL_A_HT20},
1903         {ATH9K_MODE_11NA_HT40PLUS, CHANNEL_A_HT40PLUS},
1904         {ATH9K_MODE_11NA_HT40MINUS, CHANNEL_A_HT40MINUS},
1905 };
1906
1907 static struct japan_bandcheck j_bandcheck[] = {
1908         {F1_5170_5230, AR_EEPROM_EEREGCAP_EN_KK_U1_ODD},
1909         {F4_5180_5240, AR_EEPROM_EEREGCAP_EN_KK_U1_EVEN},
1910         {F2_5260_5320, AR_EEPROM_EEREGCAP_EN_KK_U2},
1911         {F4_5500_5700, AR_EEPROM_EEREGCAP_EN_KK_MIDBAND}
1912 };
1913
1914
1915 #endif