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