156746Sroberto/* 256746Sroberto * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting 356746Sroberto * Copyright (c) 2005-2006 Atheros Communications, Inc. 456746Sroberto * All rights reserved. 5132451Sroberto * 656746Sroberto * Permission to use, copy, modify, and/or distribute this software for any 756746Sroberto * purpose with or without fee is hereby granted, provided that the above 8132451Sroberto * copyright notice and this permission notice appear in all copies. 9132451Sroberto * 1082498Sroberto * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1156746Sroberto * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1282498Sroberto * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 1382498Sroberto * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1482498Sroberto * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 1582498Sroberto * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 1682498Sroberto * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1756746Sroberto * 1882498Sroberto * $FreeBSD$ 1956746Sroberto */ 2056746Sroberto 21132451Sroberto#ifndef __AH_REGDOMAIN_FREQBANDS_H__ 2256746Sroberto#define __AH_REGDOMAIN_FREQBANDS_H__ 2382498Sroberto 2456746Sroberto#define AFTER(x) ((x)+1) 25132451Sroberto 26132451Sroberto/* 2756746Sroberto * Frequency band collections are defined using bitmasks. Each bit 2882498Sroberto * in a mask is the index of an entry in one of the following tables. 2956746Sroberto * Bitmasks are BMLEN*64 bits so if a table grows beyond that the bit 30132451Sroberto * vectors must be enlarged or the tables split somehow (e.g. split 3156746Sroberto * 1/2 and 1/4 rate channels into a separate table). 3256746Sroberto * 3356746Sroberto * Beware of ordering; the indices are defined relative to the preceding 3456746Sroberto * entry so if things get off there will be confusion. A good way to 35132451Sroberto * check the indices is to collect them in a switch statement in a stub 36132451Sroberto * function so the compiler checks for duplicates. 37132451Sroberto */ 38132451Sroberto 39132451Sroberto/* 40132451Sroberto * 5GHz 11A channel tags 41132451Sroberto */ 42132451Srobertostatic REG_DMN_FREQ_BAND regDmn5GhzFreq[] = { 43132451Sroberto { 4915, 4925, 23, 0, 10, 5, NO_DFS, PSCAN_MKK2 }, 44132451Sroberto#define F1_4915_4925 0 45132451Sroberto { 4935, 4945, 23, 0, 10, 5, NO_DFS, PSCAN_MKK2 }, 46132451Sroberto#define F1_4935_4945 AFTER(F1_4915_4925) 47132451Sroberto { 4920, 4980, 23, 0, 20, 20, NO_DFS, PSCAN_MKK2 }, 48132451Sroberto#define F1_4920_4980 AFTER(F1_4935_4945) 4956746Sroberto { 4942, 4987, 27, 6, 5, 5, NO_DFS, PSCAN_FCC }, 5056746Sroberto#define F1_4942_4987 AFTER(F1_4920_4980) 5156746Sroberto { 4945, 4985, 30, 6, 10, 5, NO_DFS, PSCAN_FCC }, 5256746Sroberto#define F1_4945_4985 AFTER(F1_4942_4987) 5356746Sroberto { 4950, 4980, 33, 6, 20, 5, NO_DFS, PSCAN_FCC }, 5482498Sroberto#define F1_4950_4980 AFTER(F1_4945_4985) 55132451Sroberto { 5035, 5040, 23, 0, 10, 5, NO_DFS, PSCAN_MKK2 }, 56132451Sroberto#define F1_5035_5040 AFTER(F1_4950_4980) 57132451Sroberto { 5040, 5080, 23, 0, 20, 20, NO_DFS, PSCAN_MKK2 }, 58310419Sdelphij#define F1_5040_5080 AFTER(F1_5035_5040) 59132451Sroberto { 5055, 5055, 23, 0, 10, 5, NO_DFS, PSCAN_MKK2 }, 60132451Sroberto#define F1_5055_5055 AFTER(F1_5040_5080) 61132451Sroberto 62132451Sroberto { 5120, 5240, 5, 6, 20, 20, NO_DFS, NO_PSCAN }, 63132451Sroberto#define F1_5120_5240 AFTER(F1_5055_5055) 64132451Sroberto { 5120, 5240, 5, 6, 10, 10, NO_DFS, NO_PSCAN }, 6556746Sroberto#define F2_5120_5240 AFTER(F1_5120_5240) 66132451Sroberto { 5120, 5240, 5, 6, 5, 5, NO_DFS, NO_PSCAN }, 6756746Sroberto#define F3_5120_5240 AFTER(F2_5120_5240) 6856746Sroberto 69132451Sroberto { 5170, 5230, 23, 0, 20, 20, NO_DFS, PSCAN_MKK1 | PSCAN_MKK2 }, 70290001Sglebius#define F1_5170_5230 AFTER(F3_5120_5240) 71290001Sglebius { 5170, 5230, 20, 0, 20, 20, NO_DFS, PSCAN_MKK1 | PSCAN_MKK2 }, 7256746Sroberto#define F2_5170_5230 AFTER(F1_5170_5230) 73132451Sroberto 74132451Sroberto { 5180, 5240, 15, 0, 20, 20, NO_DFS, PSCAN_FCC | PSCAN_ETSI }, 75132451Sroberto#define F1_5180_5240 AFTER(F2_5170_5230) 76132451Sroberto { 5180, 5240, 17, 6, 20, 20, NO_DFS, PSCAN_FCC }, 77132451Sroberto#define F2_5180_5240 AFTER(F1_5180_5240) 78132451Sroberto { 5180, 5240, 18, 0, 20, 20, NO_DFS, PSCAN_FCC | PSCAN_ETSI }, 79132451Sroberto#define F3_5180_5240 AFTER(F2_5180_5240) 80132451Sroberto { 5180, 5240, 20, 0, 20, 20, NO_DFS, PSCAN_FCC | PSCAN_ETSI }, 81132451Sroberto#define F4_5180_5240 AFTER(F3_5180_5240) 82132451Sroberto { 5180, 5240, 23, 0, 20, 20, NO_DFS, PSCAN_FCC | PSCAN_ETSI }, 83132451Sroberto#define F5_5180_5240 AFTER(F4_5180_5240) 84132451Sroberto { 5180, 5240, 23, 6, 20, 20, NO_DFS, PSCAN_FCC }, 85132451Sroberto#define F6_5180_5240 AFTER(F5_5180_5240) 86132451Sroberto { 5180, 5240, 17, 6, 20, 10, NO_DFS, PSCAN_FCC }, 87132451Sroberto#define F7_5180_5240 AFTER(F6_5180_5240) 88132451Sroberto { 5180, 5240, 17, 6, 20, 5, NO_DFS, PSCAN_FCC }, 89132451Sroberto#define F8_5180_5240 AFTER(F7_5180_5240) 90132451Sroberto { 5180, 5320, 20, 6, 20, 20, DFS_ETSI, PSCAN_ETSI }, 91132451Sroberto 92132451Sroberto#define F1_5180_5320 AFTER(F8_5180_5240) 93132451Sroberto { 5240, 5280, 23, 0, 20, 20, DFS_FCC3, PSCAN_FCC | PSCAN_ETSI }, 9456746Sroberto 95132451Sroberto#define F1_5240_5280 AFTER(F1_5180_5320) 96132451Sroberto { 5260, 5280, 23, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC | PSCAN_ETSI }, 97132451Sroberto 98132451Sroberto#define F1_5260_5280 AFTER(F1_5240_5280) 99132451Sroberto { 5260, 5320, 18, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC | PSCAN_ETSI }, 100132451Sroberto 101132451Sroberto#define F1_5260_5320 AFTER(F1_5260_5280) 102132451Sroberto { 5260, 5320, 20, 0, 20, 20, DFS_FCC3 | DFS_ETSI | DFS_MKK4, PSCAN_FCC | PSCAN_ETSI | PSCAN_MKK3 }, 103132451Sroberto#define F2_5260_5320 AFTER(F1_5260_5320) 104132451Sroberto 105132451Sroberto { 5260, 5320, 20, 6, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC }, 106132451Sroberto#define F3_5260_5320 AFTER(F2_5260_5320) 107132451Sroberto { 5260, 5320, 23, 6, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC }, 108132451Sroberto#define F4_5260_5320 AFTER(F3_5260_5320) 109132451Sroberto { 5260, 5320, 23, 6, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC }, 110132451Sroberto#define F5_5260_5320 AFTER(F4_5260_5320) 111132451Sroberto { 5260, 5320, 30, 0, 20, 20, NO_DFS, NO_PSCAN }, 112132451Sroberto#define F6_5260_5320 AFTER(F5_5260_5320) 113132451Sroberto { 5260, 5320, 23, 6, 20, 10, DFS_FCC3 | DFS_ETSI, PSCAN_FCC }, 114132451Sroberto#define F7_5260_5320 AFTER(F6_5260_5320) 115132451Sroberto { 5260, 5320, 23, 6, 20, 5, DFS_FCC3 | DFS_ETSI, PSCAN_FCC }, 116132451Sroberto#define F8_5260_5320 AFTER(F7_5260_5320) 117290001Sglebius 118290001Sglebius { 5260, 5700, 5, 6, 20, 20, DFS_FCC3 | DFS_ETSI, NO_PSCAN }, 119132451Sroberto#define F1_5260_5700 AFTER(F8_5260_5320) 120132451Sroberto { 5260, 5700, 5, 6, 10, 10, DFS_FCC3 | DFS_ETSI, NO_PSCAN }, 121132451Sroberto#define F2_5260_5700 AFTER(F1_5260_5700) 122132451Sroberto { 5260, 5700, 5, 6, 5, 5, DFS_FCC3 | DFS_ETSI, NO_PSCAN }, 123132451Sroberto#define F3_5260_5700 AFTER(F2_5260_5700) 124290001Sglebius 125132451Sroberto { 5280, 5320, 17, 6, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC }, 126132451Sroberto#define F1_5280_5320 AFTER(F3_5260_5700) 127290001Sglebius 128290001Sglebius { 5500, 5620, 30, 6, 20, 20, DFS_ETSI, PSCAN_ETSI }, 129132451Sroberto#define F1_5500_5620 AFTER(F1_5280_5320) 130132451Sroberto 131290001Sglebius { 5500, 5700, 20, 6, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC }, 132290001Sglebius#define F1_5500_5700 AFTER(F1_5500_5620) 133132451Sroberto { 5500, 5700, 27, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC | PSCAN_ETSI }, 134290001Sglebius#define F2_5500_5700 AFTER(F1_5500_5700) 135290001Sglebius { 5500, 5700, 30, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC | PSCAN_ETSI }, 136132451Sroberto#define F3_5500_5700 AFTER(F2_5500_5700) 137132451Sroberto { 5500, 5700, 23, 0, 20, 20, DFS_FCC3 | DFS_ETSI | DFS_MKK4, PSCAN_MKK3 | PSCAN_FCC }, 138132451Sroberto#define F4_5500_5700 AFTER(F3_5500_5700) 139132451Sroberto 140132451Sroberto { 5745, 5805, 23, 0, 20, 20, NO_DFS, NO_PSCAN }, 141132451Sroberto#define F1_5745_5805 AFTER(F4_5500_5700) 142132451Sroberto { 5745, 5805, 30, 6, 20, 20, NO_DFS, NO_PSCAN }, 143132451Sroberto#define F2_5745_5805 AFTER(F1_5745_5805) 144132451Sroberto { 5745, 5805, 30, 6, 20, 20, DFS_ETSI, PSCAN_ETSI }, 145132451Sroberto#define F3_5745_5805 AFTER(F2_5745_5805) 146132451Sroberto { 5745, 5825, 5, 6, 20, 20, NO_DFS, NO_PSCAN }, 147132451Sroberto#define F1_5745_5825 AFTER(F3_5745_5805) 148132451Sroberto { 5745, 5825, 17, 0, 20, 20, NO_DFS, NO_PSCAN }, 149132451Sroberto#define F2_5745_5825 AFTER(F1_5745_5825) 150132451Sroberto { 5745, 5825, 20, 0, 20, 20, NO_DFS, NO_PSCAN }, 151290001Sglebius#define F3_5745_5825 AFTER(F2_5745_5825) 152132451Sroberto { 5745, 5825, 30, 0, 20, 20, NO_DFS, NO_PSCAN }, 153132451Sroberto#define F4_5745_5825 AFTER(F3_5745_5825) 154132451Sroberto { 5745, 5825, 30, 6, 20, 20, NO_DFS, NO_PSCAN }, 155132451Sroberto#define F5_5745_5825 AFTER(F4_5745_5825) 156290001Sglebius { 5745, 5825, 30, 6, 20, 20, NO_DFS, NO_PSCAN }, 157132451Sroberto#define F6_5745_5825 AFTER(F5_5745_5825) 158132451Sroberto { 5745, 5825, 5, 6, 10, 10, NO_DFS, NO_PSCAN }, 159132451Sroberto#define F7_5745_5825 AFTER(F6_5745_5825) 160132451Sroberto { 5745, 5825, 5, 6, 5, 5, NO_DFS, NO_PSCAN }, 161132451Sroberto#define F8_5745_5825 AFTER(F7_5745_5825) 162132451Sroberto { 5745, 5825, 30, 6, 20, 10, NO_DFS, NO_PSCAN }, 163132451Sroberto#define F9_5745_5825 AFTER(F8_5745_5825) 164132451Sroberto { 5745, 5825, 30, 6, 20, 5, NO_DFS, NO_PSCAN }, 165290001Sglebius#define F10_5745_5825 AFTER(F9_5745_5825) 166290001Sglebius 167290001Sglebius /* 168290001Sglebius * Below are the world roaming channels 169132451Sroberto * All WWR domains have no power limit, instead use the card's CTL 170132451Sroberto * or max power settings. 171132451Sroberto */ 172132451Sroberto { 4920, 4980, 30, 0, 20, 20, NO_DFS, PSCAN_WWR }, 173132451Sroberto#define W1_4920_4980 AFTER(F10_5745_5825) 174290001Sglebius { 5040, 5080, 30, 0, 20, 20, NO_DFS, PSCAN_WWR }, 175132451Sroberto#define W1_5040_5080 AFTER(W1_4920_4980) 176132451Sroberto { 5170, 5230, 30, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_WWR }, 177290001Sglebius#define W1_5170_5230 AFTER(W1_5040_5080) 178290001Sglebius { 5180, 5240, 30, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_WWR }, 179290001Sglebius#define W1_5180_5240 AFTER(W1_5170_5230) 180132451Sroberto { 5260, 5320, 30, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_WWR }, 181290001Sglebius#define W1_5260_5320 AFTER(W1_5180_5240) 182290001Sglebius { 5745, 5825, 30, 0, 20, 20, NO_DFS, PSCAN_WWR }, 183290001Sglebius#define W1_5745_5825 AFTER(W1_5260_5320) 184132451Sroberto { 5500, 5700, 30, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_WWR }, 185290001Sglebius#define W1_5500_5700 AFTER(W1_5745_5825) 186290001Sglebius { 5260, 5320, 30, 0, 20, 20, NO_DFS, NO_PSCAN }, 187290001Sglebius#define W2_5260_5320 AFTER(W1_5500_5700) 188132451Sroberto { 5180, 5240, 30, 0, 20, 20, NO_DFS, NO_PSCAN }, 189290001Sglebius#define W2_5180_5240 AFTER(W2_5260_5320) 190290001Sglebius { 5825, 5825, 30, 0, 20, 20, NO_DFS, PSCAN_WWR }, 191290001Sglebius#define W2_5825_5825 AFTER(W2_5180_5240) 192132451Sroberto}; 193132451Sroberto 194132451Sroberto/* 195132451Sroberto * 5GHz Turbo (dynamic & static) tags 196132451Sroberto */ 197132451Srobertostatic REG_DMN_FREQ_BAND regDmn5GhzTurboFreq[] = { 198132451Sroberto { 5130, 5210, 5, 6, 40, 40, NO_DFS, NO_PSCAN }, 199132451Sroberto#define T1_5130_5210 0 200132451Sroberto { 5250, 5330, 5, 6, 40, 40, DFS_FCC3, NO_PSCAN }, 20156746Sroberto#define T1_5250_5330 AFTER(T1_5130_5210) 20256746Sroberto { 5370, 5490, 5, 6, 40, 40, NO_DFS, NO_PSCAN }, 203132451Sroberto#define T1_5370_5490 AFTER(T1_5250_5330) 20456746Sroberto { 5530, 5650, 5, 6, 40, 40, DFS_FCC3, NO_PSCAN }, 20556746Sroberto#define T1_5530_5650 AFTER(T1_5370_5490) 20656746Sroberto 20756746Sroberto { 5150, 5190, 5, 6, 40, 40, NO_DFS, NO_PSCAN }, 20856746Sroberto#define T1_5150_5190 AFTER(T1_5530_5650) 20956746Sroberto { 5230, 5310, 5, 6, 40, 40, DFS_FCC3, NO_PSCAN }, 21056746Sroberto#define T1_5230_5310 AFTER(T1_5150_5190) 21156746Sroberto { 5350, 5470, 5, 6, 40, 40, NO_DFS, NO_PSCAN }, 21282498Sroberto#define T1_5350_5470 AFTER(T1_5230_5310) 213290001Sglebius { 5510, 5670, 5, 6, 40, 40, DFS_FCC3, NO_PSCAN }, 214132451Sroberto#define T1_5510_5670 AFTER(T1_5350_5470) 215132451Sroberto 21682498Sroberto { 5200, 5240, 17, 6, 40, 40, NO_DFS, NO_PSCAN }, 21756746Sroberto#define T1_5200_5240 AFTER(T1_5510_5670) 218132451Sroberto { 5200, 5240, 23, 6, 40, 40, NO_DFS, NO_PSCAN }, 219132451Sroberto#define T2_5200_5240 AFTER(T1_5200_5240) 220132451Sroberto { 5210, 5210, 17, 6, 40, 40, NO_DFS, NO_PSCAN }, 221132451Sroberto#define T1_5210_5210 AFTER(T2_5200_5240) 222132451Sroberto { 5210, 5210, 23, 0, 40, 40, NO_DFS, NO_PSCAN }, 223132451Sroberto#define T2_5210_5210 AFTER(T1_5210_5210) 224132451Sroberto 225132451Sroberto { 5280, 5280, 23, 6, 40, 40, DFS_FCC3, PSCAN_FCC_T }, 226132451Sroberto#define T1_5280_5280 AFTER(T2_5210_5210) 227132451Sroberto { 5280, 5280, 20, 6, 40, 40, DFS_FCC3, PSCAN_FCC_T }, 22856746Sroberto#define T2_5280_5280 AFTER(T1_5280_5280) 22956746Sroberto { 5250, 5250, 17, 0, 40, 40, DFS_FCC3, PSCAN_FCC_T }, 230290001Sglebius#define T1_5250_5250 AFTER(T2_5280_5280) 231132451Sroberto { 5290, 5290, 20, 0, 40, 40, DFS_FCC3, PSCAN_FCC_T }, 232132451Sroberto#define T1_5290_5290 AFTER(T1_5250_5250) 233132451Sroberto { 5250, 5290, 20, 0, 40, 40, DFS_FCC3, PSCAN_FCC_T }, 234132451Sroberto#define T1_5250_5290 AFTER(T1_5290_5290) 235132451Sroberto { 5250, 5290, 23, 6, 40, 40, DFS_FCC3, PSCAN_FCC_T }, 236132451Sroberto#define T2_5250_5290 AFTER(T1_5250_5290) 23756746Sroberto 238132451Sroberto { 5540, 5660, 20, 6, 40, 40, DFS_FCC3, PSCAN_FCC_T }, 239290001Sglebius#define T1_5540_5660 AFTER(T2_5250_5290) 240132451Sroberto { 5760, 5800, 20, 0, 40, 40, NO_DFS, NO_PSCAN }, 241132451Sroberto#define T1_5760_5800 AFTER(T1_5540_5660) 242132451Sroberto { 5760, 5800, 30, 6, 40, 40, NO_DFS, NO_PSCAN }, 243132451Sroberto#define T2_5760_5800 AFTER(T1_5760_5800) 244182007Sroberto 245132451Sroberto { 5765, 5805, 30, 6, 40, 40, NO_DFS, NO_PSCAN }, 246182007Sroberto#define T1_5765_5805 AFTER(T2_5760_5800) 247132451Sroberto 248132451Sroberto /* 24956746Sroberto * Below are the WWR frequencies 250290001Sglebius */ 25156746Sroberto { 5210, 5250, 15, 0, 40, 40, DFS_FCC3 | DFS_ETSI, PSCAN_WWR }, 25282498Sroberto#define WT1_5210_5250 AFTER(T1_5765_5805) 253290001Sglebius { 5290, 5290, 18, 0, 40, 40, DFS_FCC3 | DFS_ETSI, PSCAN_WWR }, 254290001Sglebius#define WT1_5290_5290 AFTER(WT1_5210_5250) 25556746Sroberto { 5540, 5660, 20, 0, 40, 40, DFS_FCC3 | DFS_ETSI, PSCAN_WWR }, 256290001Sglebius#define WT1_5540_5660 AFTER(WT1_5290_5290) 25756746Sroberto { 5760, 5800, 20, 0, 40, 40, NO_DFS, PSCAN_WWR }, 25856746Sroberto#define WT1_5760_5800 AFTER(WT1_5540_5660) 25982498Sroberto}; 26056746Sroberto 261132451Sroberto/* 26256746Sroberto * 2GHz 11b channel tags 263290001Sglebius */ 264290001Sglebiusstatic REG_DMN_FREQ_BAND regDmn2GhzFreq[] = { 26556746Sroberto { 2312, 2372, 5, 6, 20, 5, NO_DFS, NO_PSCAN }, 26656746Sroberto#define F1_2312_2372 0 26756746Sroberto { 2312, 2372, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 26856746Sroberto#define F2_2312_2372 AFTER(F1_2312_2372) 26956746Sroberto 27056746Sroberto { 2412, 2472, 5, 6, 20, 5, NO_DFS, NO_PSCAN }, 27156746Sroberto#define F1_2412_2472 AFTER(F2_2312_2372) 272132451Sroberto { 2412, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA }, 273132451Sroberto#define F2_2412_2472 AFTER(F1_2412_2472) 274132451Sroberto { 2412, 2472, 30, 0, 20, 5, NO_DFS, NO_PSCAN }, 275132451Sroberto#define F3_2412_2472 AFTER(F2_2412_2472) 276132451Sroberto 277132451Sroberto { 2412, 2462, 27, 6, 20, 5, NO_DFS, NO_PSCAN }, 278132451Sroberto#define F1_2412_2462 AFTER(F3_2412_2472) 279132451Sroberto { 2412, 2462, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA }, 280132451Sroberto#define F2_2412_2462 AFTER(F1_2412_2462) 281132451Sroberto 282132451Sroberto { 2432, 2442, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 283132451Sroberto#define F1_2432_2442 AFTER(F2_2412_2462) 284132451Sroberto 285132451Sroberto { 2457, 2472, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 286132451Sroberto#define F1_2457_2472 AFTER(F1_2432_2442) 287132451Sroberto 288132451Sroberto { 2467, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA2 | PSCAN_MKKA }, 289132451Sroberto#define F1_2467_2472 AFTER(F1_2457_2472) 290132451Sroberto 291132451Sroberto { 2484, 2484, 5, 6, 20, 5, NO_DFS, NO_PSCAN }, 292132451Sroberto#define F1_2484_2484 AFTER(F1_2467_2472) 293132451Sroberto { 2484, 2484, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA | PSCAN_MKKA1 | PSCAN_MKKA2 }, 294182007Sroberto#define F2_2484_2484 AFTER(F1_2484_2484) 295182007Sroberto 296182007Sroberto { 2512, 2732, 5, 6, 20, 5, NO_DFS, NO_PSCAN }, 297182007Sroberto#define F1_2512_2732 AFTER(F2_2484_2484) 298182007Sroberto 299182007Sroberto /* 300182007Sroberto * WWR have powers opened up to 20dBm. 301182007Sroberto * Limits should often come from CTL/Max powers 302182007Sroberto */ 303132451Sroberto { 2312, 2372, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 304132451Sroberto#define W1_2312_2372 AFTER(F1_2512_2732) 305132451Sroberto { 2412, 2412, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 306132451Sroberto#define W1_2412_2412 AFTER(W1_2312_2372) 307132451Sroberto { 2417, 2432, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 308132451Sroberto#define W1_2417_2432 AFTER(W1_2412_2412) 309132451Sroberto { 2437, 2442, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 310132451Sroberto#define W1_2437_2442 AFTER(W1_2417_2432) 311132451Sroberto { 2447, 2457, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 312132451Sroberto#define W1_2447_2457 AFTER(W1_2437_2442) 313132451Sroberto { 2462, 2462, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 314132451Sroberto#define W1_2462_2462 AFTER(W1_2447_2457) 315132451Sroberto { 2467, 2467, 20, 0, 20, 5, NO_DFS, PSCAN_WWR | IS_ECM_CHAN }, 316132451Sroberto#define W1_2467_2467 AFTER(W1_2462_2462) 317132451Sroberto { 2467, 2467, 20, 0, 20, 5, NO_DFS, NO_PSCAN | IS_ECM_CHAN }, 318132451Sroberto#define W2_2467_2467 AFTER(W1_2467_2467) 319290001Sglebius { 2472, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_WWR | IS_ECM_CHAN }, 320132451Sroberto#define W1_2472_2472 AFTER(W2_2467_2467) 321132451Sroberto { 2472, 2472, 20, 0, 20, 5, NO_DFS, NO_PSCAN | IS_ECM_CHAN }, 322290001Sglebius#define W2_2472_2472 AFTER(W1_2472_2472) 323290001Sglebius { 2484, 2484, 20, 0, 20, 5, NO_DFS, PSCAN_WWR | IS_ECM_CHAN }, 324132451Sroberto#define W1_2484_2484 AFTER(W2_2472_2472) 325132451Sroberto { 2484, 2484, 20, 0, 20, 5, NO_DFS, NO_PSCAN | IS_ECM_CHAN }, 326132451Sroberto#define W2_2484_2484 AFTER(W1_2484_2484) 327132451Sroberto}; 328132451Sroberto 329132451Sroberto/* 330132451Sroberto * 2GHz 11g channel tags 331290001Sglebius */ 332132451Srobertostatic REG_DMN_FREQ_BAND regDmn2Ghz11gFreq[] = { 333132451Sroberto { 2312, 2372, 5, 6, 20, 5, NO_DFS, NO_PSCAN }, 334132451Sroberto#define G1_2312_2372 0 335132451Sroberto { 2312, 2372, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 336132451Sroberto#define G2_2312_2372 AFTER(G1_2312_2372) 337310419Sdelphij { 2312, 2372, 5, 6, 10, 5, NO_DFS, NO_PSCAN }, 338132451Sroberto#define G3_2312_2372 AFTER(G2_2312_2372) 339132451Sroberto { 2312, 2372, 5, 6, 5, 5, NO_DFS, NO_PSCAN }, 340132451Sroberto#define G4_2312_2372 AFTER(G3_2312_2372) 341132451Sroberto 342132451Sroberto { 2412, 2472, 5, 6, 20, 5, NO_DFS, NO_PSCAN }, 343132451Sroberto#define G1_2412_2472 AFTER(G4_2312_2372) 344132451Sroberto { 2412, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA_G }, 345132451Sroberto#define G2_2412_2472 AFTER(G1_2412_2472) 346132451Sroberto { 2412, 2472, 30, 0, 20, 5, NO_DFS, NO_PSCAN }, 347132451Sroberto#define G3_2412_2472 AFTER(G2_2412_2472) 348132451Sroberto { 2412, 2472, 5, 6, 10, 5, NO_DFS, NO_PSCAN }, 349132451Sroberto#define G4_2412_2472 AFTER(G3_2412_2472) 350132451Sroberto { 2412, 2472, 5, 6, 5, 5, NO_DFS, NO_PSCAN }, 35156746Sroberto#define G5_2412_2472 AFTER(G4_2412_2472) 352290001Sglebius 35356746Sroberto { 2412, 2462, 27, 6, 20, 5, NO_DFS, NO_PSCAN }, 35456746Sroberto#define G1_2412_2462 AFTER(G5_2412_2472) 35556746Sroberto { 2412, 2462, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA_G }, 35656746Sroberto#define G2_2412_2462 AFTER(G1_2412_2462) 357132451Sroberto { 2412, 2462, 27, 6, 10, 5, NO_DFS, NO_PSCAN }, 358132451Sroberto#define G3_2412_2462 AFTER(G2_2412_2462) 359132451Sroberto { 2412, 2462, 27, 6, 5, 5, NO_DFS, NO_PSCAN }, 36056746Sroberto#define G4_2412_2462 AFTER(G3_2412_2462) 36156746Sroberto 36256746Sroberto { 2432, 2442, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 36356746Sroberto#define G1_2432_2442 AFTER(G4_2412_2462) 364132451Sroberto 36556746Sroberto { 2457, 2472, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 36656746Sroberto#define G1_2457_2472 AFTER(G1_2432_2442) 36756746Sroberto 368132451Sroberto { 2512, 2732, 5, 6, 20, 5, NO_DFS, NO_PSCAN }, 369132451Sroberto#define G1_2512_2732 AFTER(G1_2457_2472) 370132451Sroberto { 2512, 2732, 5, 6, 10, 5, NO_DFS, NO_PSCAN }, 37156746Sroberto#define G2_2512_2732 AFTER(G1_2512_2732) 37256746Sroberto { 2512, 2732, 5, 6, 5, 5, NO_DFS, NO_PSCAN }, 37356746Sroberto#define G3_2512_2732 AFTER(G2_2512_2732) 374132451Sroberto 375132451Sroberto { 2467, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA2 | PSCAN_MKKA }, 37656746Sroberto#define G1_2467_2472 AFTER(G3_2512_2732) 377132451Sroberto 378132451Sroberto /* 379132451Sroberto * WWR open up the power to 20dBm 380290001Sglebius */ 381290001Sglebius { 2312, 2372, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 382290001Sglebius#define WG1_2312_2372 AFTER(G1_2467_2472) 383132451Sroberto { 2412, 2412, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 384132451Sroberto#define WG1_2412_2412 AFTER(WG1_2312_2372) 385132451Sroberto { 2417, 2432, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 386132451Sroberto#define WG1_2417_2432 AFTER(WG1_2412_2412) 387132451Sroberto { 2437, 2442, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 388132451Sroberto#define WG1_2437_2442 AFTER(WG1_2417_2432) 389290001Sglebius { 2447, 2457, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 390132451Sroberto#define WG1_2447_2457 AFTER(WG1_2437_2442) 391132451Sroberto { 2462, 2462, 20, 0, 20, 5, NO_DFS, NO_PSCAN }, 392290001Sglebius#define WG1_2462_2462 AFTER(WG1_2447_2457) 393132451Sroberto { 2467, 2467, 20, 0, 20, 5, NO_DFS, PSCAN_WWR | IS_ECM_CHAN }, 394290001Sglebius#define WG1_2467_2467 AFTER(WG1_2462_2462) 395290001Sglebius { 2467, 2467, 20, 0, 20, 5, NO_DFS, NO_PSCAN | IS_ECM_CHAN }, 396290001Sglebius#define WG2_2467_2467 AFTER(WG1_2467_2467) 397290001Sglebius { 2472, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_WWR | IS_ECM_CHAN }, 398290001Sglebius#define WG1_2472_2472 AFTER(WG2_2467_2467) 399290001Sglebius { 2472, 2472, 20, 0, 20, 5, NO_DFS, NO_PSCAN | IS_ECM_CHAN }, 400290001Sglebius#define WG2_2472_2472 AFTER(WG1_2472_2472) 401290001Sglebius}; 402290001Sglebius 403132451Sroberto/* 404290001Sglebius * 2GHz Dynamic turbo tags 405132451Sroberto */ 406132451Srobertostatic REG_DMN_FREQ_BAND regDmn2Ghz11gTurboFreq[] = { 407132451Sroberto { 2312, 2372, 5, 6, 40, 40, NO_DFS, NO_PSCAN }, 408132451Sroberto#define T1_2312_2372 0 409132451Sroberto { 2437, 2437, 5, 6, 40, 40, NO_DFS, NO_PSCAN }, 410132451Sroberto#define T1_2437_2437 AFTER(T1_2312_2372) 411132451Sroberto { 2437, 2437, 20, 6, 40, 40, NO_DFS, NO_PSCAN }, 412132451Sroberto#define T2_2437_2437 AFTER(T1_2437_2437) 413132451Sroberto { 2437, 2437, 18, 6, 40, 40, NO_DFS, PSCAN_WWR }, 414290001Sglebius#define T3_2437_2437 AFTER(T2_2437_2437) 415310419Sdelphij { 2512, 2732, 5, 6, 40, 40, NO_DFS, NO_PSCAN }, 416290001Sglebius#define T1_2512_2732 AFTER(T3_2437_2437) 417290001Sglebius}; 418290001Sglebius 419290001Sglebius#endif 420132451Sroberto