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