1 /* 2 * Copyright (c) 2017 The Linux Foundation. All rights reserved. 3 * 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 /** 21 * DOC: reg_db.c 22 * This file provides regulatory data base 23 */ 24 25 #include <qdf_types.h> 26 #include <qdf_trace.h> 27 #include "reg_db.h" 28 29 enum country_code { 30 CTRY_AFGHANISTAN = 4, 31 CTRY_ALBANIA = 8, 32 CTRY_ALGERIA = 12, 33 CTRY_AMERICAN_SAMOA = 16, 34 CTRY_ANGUILLA = 660, 35 CTRY_ARGENTINA = 32, 36 CTRY_ARGENTINA2 = 5003, 37 CTRY_ARMENIA = 51, 38 CTRY_ARUBA = 533, 39 CTRY_AUSTRALIA = 36, 40 CTRY_AUSTRALIA2 = 5000, 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_BELGIUM2 = 4101, 50 CTRY_BELIZE = 84, 51 CTRY_BERMUDA = 60, 52 CTRY_BHUTAN = 64, 53 CTRY_BOLIVIA = 68, 54 CTRY_BOSNIA_HERZ = 70, 55 CTRY_BRAZIL = 76, 56 CTRY_BRUNEI_DARUSSALAM = 96, 57 CTRY_BULGARIA = 100, 58 CTRY_BURKINA_FASO = 854, 59 CTRY_CAMBODIA = 116, 60 CTRY_CANADA = 124, 61 CTRY_CANADA2 = 5001, 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_INDIA2 = 5006, 104 CTRY_INDONESIA = 360, 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_UNITED_STATES1 = 841, 196 CTRY_UNITED_STATES_PS = 842, 197 CTRY_UNITED_STATES2 = 843, 198 CTRY_URUGUAY = 858, 199 CTRY_UZBEKISTAN = 860, 200 CTRY_VANUATU = 548, 201 CTRY_VENEZUELA = 862, 202 CTRY_VIET_NAM = 704, 203 CTRY_VIRGIN_ISLANDS = 850, 204 CTRY_WALLIS_AND_FUTUNA = 876, 205 CTRY_YEMEN = 887, 206 CTRY_ZIMBABWE = 716, 207 CTRY_JAPAN15 = 4015, 208 CTRY_JAPAN9 = 4009, 209 CTRY_JAPAN48 = 4048, 210 CTRY_JAPAN55 = 4055, 211 CTRY_JAPAN60 = 4060, 212 CTRY_XA = 4100, 213 }; 214 215 enum reg_domain { 216 NULL1_WORLD = 0x03, 217 218 FCC1_FCCA = 0x10, 219 FCC1_WORLD = 0x11, 220 FCC2_WORLD = 0x21, 221 FCC2_ETSIC = 0x22, 222 FCC3_FCCA = 0x3A, 223 FCC3_WORLD = 0x3B, 224 FCC3_ETSIC = 0x3F, 225 FCC4_FCCA = 0x12, 226 FCC6_WORLD = 0x23, 227 FCC6_FCCA = 0x14, 228 FCC8_FCCA = 0x16, 229 FCC11_WORLD = 0x19, 230 FCC13_WORLD = 0xE4, 231 FCC14_FCCB = 0xE6, 232 233 ETSI1_WORLD = 0x37, 234 ETSI3_WORLD = 0x36, 235 ETSI4_WORLD = 0x30, 236 ETSI8_WORLD = 0x3D, 237 ETSI9_WORLD = 0x3E, 238 ETSI11_WORLD = 0x26, 239 240 APL1_WORLD = 0x52, 241 APL1_ETSIC = 0x55, 242 APL2_WORLD = 0x45, 243 APL2_ETSIC = 0x56, 244 APL4_WORLD = 0x42, 245 APL6_WORLD = 0x5B, 246 APL8_WORLD = 0x5D, 247 APL9_WORLD = 0x5E, 248 APL10_WORLD = 0x5F, 249 APL11_FCCA = 0x4F, 250 APL12_WORLD = 0x51, 251 APL13_WORLD = 0x5A, 252 APL14_WORLD = 0x57, 253 APL15_WORLD = 0x59, 254 APL16_WORLD = 0x70, 255 APL17_ETSID = 0xE0, 256 APL19_ETSIC = 0x71, 257 APL20_WORLD = 0xE5, 258 APL23_WORLD = 0xE3, 259 260 MKK3_MKKC = 0x82, 261 MKK5_MKKA = 0x99, 262 MKK5_MKKC = 0x88, 263 MKK11_MKKC = 0xD7, 264 MKK16_MKKC = 0xDF, 265 266 WORLD_60 = 0x60, 267 WORLD_61 = 0x61, 268 WORLD_62 = 0x62, 269 WORLD_63 = 0x63, 270 WORLD_65 = 0x65, 271 WORLD_64 = 0x64, 272 WORLD_66 = 0x66, 273 WORLD_69 = 0x69, 274 WORLD_67 = 0x67, 275 WORLD_68 = 0x68, 276 WORLD_6A = 0x6A, 277 WORLD_6C = 0x6C, 278 }; 279 280 const struct country_code_to_reg_domain g_all_countries[] = { 281 {CTRY_AFGHANISTAN, ETSI1_WORLD, "AF", "AF" , 40, 160, 0}, 282 {CTRY_ALBANIA, ETSI1_WORLD, "AL", "AL", 40, 160, 0}, 283 {CTRY_ALGERIA, APL13_WORLD, "DZ", "DZ", 40, 160, 0}, 284 {CTRY_AMERICAN_SAMOA, FCC3_FCCA, "AS", "AS", 40, 160, 0}, 285 {CTRY_ANGUILLA, ETSI1_WORLD, "AI", "AI", 40, 160, 0}, 286 {CTRY_ARGENTINA, FCC3_WORLD, "AR1", "AR", 40, 160, 0}, 287 {CTRY_ARGENTINA2, APL16_WORLD, "AR", "AR", 40, 160, 0}, 288 {CTRY_ARMENIA, ETSI4_WORLD, "AM", "AM", 40, 20, 0}, 289 {CTRY_ARUBA, ETSI1_WORLD, "AW", "AW", 40, 160, 0}, 290 {CTRY_AUSTRALIA, FCC3_WORLD, "AU1", "AU", 40, 160, 0}, 291 {CTRY_AUSTRALIA2, FCC6_WORLD, "AU", "AU", 40, 160, 0}, 292 {CTRY_AUSTRIA, ETSI1_WORLD, "AT", "AT", 40, 160, 0}, 293 {CTRY_AZERBAIJAN, ETSI4_WORLD, "AZ", "AZ", 40, 160, 0}, 294 {CTRY_BAHAMAS, FCC3_WORLD, "BS", "BS", 40, 160, 0}, 295 {CTRY_BAHRAIN, APL15_WORLD, "BH", "BH", 40, 20, 0}, 296 {CTRY_BANGLADESH, APL1_WORLD, "BD", "BD", 40, 160, 0}, 297 {CTRY_BARBADOS, FCC2_WORLD, "BB", "BB", 40, 160, 0}, 298 {CTRY_BELARUS, ETSI1_WORLD, "BY", "BY", 40, 160, 0}, 299 {CTRY_BELGIUM, ETSI1_WORLD, "BE", "BE", 40, 160, 0}, 300 {CTRY_BELGIUM2, ETSI4_WORLD, "BEL", "BE", 40, 160, 0}, 301 {CTRY_BELIZE, FCC3_ETSIC, "BZ", "BZ", 40, 160, 0}, 302 {CTRY_BERMUDA, FCC3_FCCA, "BM", "BM", 40, 160, 0}, 303 {CTRY_BHUTAN, ETSI1_WORLD, "BT", "BT", 40, 160, 0}, 304 {CTRY_BOLIVIA, APL8_WORLD, "BO", "BO", 40, 160, 0}, 305 {CTRY_BOSNIA_HERZ, ETSI1_WORLD, "BA", "BA", 40, 160, 0}, 306 {CTRY_BRAZIL, FCC3_ETSIC, "BR", "BR", 40, 160, 0}, 307 {CTRY_BRUNEI_DARUSSALAM, APL6_WORLD, "BN", "BN", 40, 160, 0}, 308 {CTRY_BULGARIA, ETSI1_WORLD, "BG", "BG", 40, 160, 0}, 309 {CTRY_BURKINA_FASO, FCC3_WORLD, "BF", "BF", 40, 160, 0}, 310 {CTRY_CAMBODIA, ETSI1_WORLD, "KH", "KH", 40, 160, 0}, 311 {CTRY_CANADA, FCC3_FCCA, "CA1", "CA", 40, 160, 0}, 312 {CTRY_CANADA2, FCC6_FCCA, "CA", "CA", 40, 160, 0}, 313 {CTRY_CAYMAN_ISLANDS, FCC3_WORLD, "KY", "KY", 40, 160, 0}, 314 {CTRY_CENTRAL_AFRICA_REPUBLIC, FCC3_WORLD, "CF", "CF", 40, 40, 0}, 315 {CTRY_CHAD, ETSI1_WORLD, "TD", "TD", 40, 160, 0}, 316 {CTRY_CHILE, APL6_WORLD, "CL", "CL", 40, 160, 0}, 317 {CTRY_CHINA, APL14_WORLD, "CN", "CN", 40, 160, 0}, 318 {CTRY_CHRISTMAS_ISLAND, FCC3_WORLD, "CX", "CX", 40, 160, 0}, 319 {CTRY_COLOMBIA, FCC3_WORLD, "CO", "CO", 40, 160, 0}, 320 {CTRY_COSTA_RICA, FCC3_WORLD, "CR", "CR", 40, 20, 0}, 321 {CTRY_COTE_DIVOIRE, FCC3_WORLD, "CI", "CI", 40, 160, 0}, 322 {CTRY_CROATIA, ETSI1_WORLD, "HR", "HR", 40, 160, 0}, 323 {CTRY_CYPRUS, ETSI1_WORLD, "CY", "CY", 40, 160, 0}, 324 {CTRY_CZECH, ETSI1_WORLD, "CZ", "CZ", 40, 160, 0}, 325 {CTRY_DENMARK, ETSI1_WORLD, "DK", "DK" , 40, 160, 0}, 326 {CTRY_DOMINICA, FCC1_FCCA, "DM", "DM", 40, 160, 0}, 327 {CTRY_DOMINICAN_REPUBLIC, FCC1_FCCA, "DO", "DO", 40, 160, 0}, 328 {CTRY_ECUADOR, FCC3_WORLD, "EC", "EC", 40, 20, 0}, 329 {CTRY_EGYPT, ETSI3_WORLD, "EG", "EG", 40, 40, 0}, 330 {CTRY_EL_SALVADOR, FCC1_WORLD, "SV", "SV", 40, 20, 0}, 331 {CTRY_ESTONIA, ETSI1_WORLD, "EE", "EE", 40, 160, 0}, 332 {CTRY_ETHIOPIA, ETSI1_WORLD, "ET", "ET", 40, 160, 0}, 333 {CTRY_FINLAND, ETSI1_WORLD, "FI", "FI" , 40, 160, 0}, 334 {CTRY_FRANCE, ETSI1_WORLD, "FR", "FR", 40, 160, 0}, 335 {CTRY_FRENCH_GUIANA, ETSI1_WORLD, "GF", "GF", 40, 160, 0}, 336 {CTRY_FRENCH_POLYNESIA, ETSI1_WORLD, "PF", "PF", 40, 160, 0}, 337 {CTRY_GEORGIA, ETSI4_WORLD, "GE", "GE", 40, 160, 0}, 338 {CTRY_GERMANY, ETSI1_WORLD, "DE", "DE", 40, 160, 0}, 339 {CTRY_GHANA, FCC3_WORLD, "GH", "GH", 40, 160, 0}, 340 {CTRY_GIBRALTAR, ETSI1_WORLD, "GI", "GI", 40, 160, 0}, 341 {CTRY_GREECE, ETSI1_WORLD, "GR", "GR", 40, 160, 0}, 342 {CTRY_GREENLAND, ETSI1_WORLD, "GL", "GL", 40, 160, 0}, 343 {CTRY_GRENADA, FCC3_FCCA, "GD", "GD", 40, 160, 0}, 344 {CTRY_GUADELOUPE, ETSI1_WORLD, "GP", "GP", 40, 160, 0}, 345 {CTRY_GUAM, FCC3_FCCA, "GU", "GU", 40, 160, 0}, 346 {CTRY_GUATEMALA, ETSI1_WORLD, "GT", "GT", 40, 160, 0}, 347 {CTRY_GUYANA, APL1_ETSIC, "GY", "GY", 40, 160, 0}, 348 {CTRY_HAITI, FCC3_FCCA, "HT", "HT", 40, 160, 0}, 349 {CTRY_HONDURAS, FCC3_WORLD, "HN", "HN", 40, 160, 0}, 350 {CTRY_HONG_KONG, FCC3_WORLD, "HK", "HK", 40, 160, 0}, 351 {CTRY_HUNGARY, ETSI1_WORLD, "HU", "HU" , 40, 160, 0}, 352 {CTRY_ICELAND, ETSI1_WORLD, "IS", "IS" , 40, 160, 0}, 353 {CTRY_INDIA, APL15_WORLD, "IN", "IN", 40, 160, 0}, 354 {CTRY_INDIA2, APL19_ETSIC, "IN", "IN", 40, 160, 0}, 355 {CTRY_INDONESIA, APL2_ETSIC, "ID", "ID", 40, 20, 0}, 356 {CTRY_IRELAND, ETSI1_WORLD, "IE", "IE", 40, 160, 0}, 357 {CTRY_ISRAEL, ETSI3_WORLD, "IL", "IL", 40, 160, 0}, 358 {CTRY_ITALY, ETSI1_WORLD, "IT", "IT", 40, 160, 0}, 359 {CTRY_JAMAICA, FCC3_WORLD, "JM", "JM", 40, 160, 0}, 360 {CTRY_JORDAN, APL4_WORLD, "JO", "JO", 40, 160, 0}, 361 {CTRY_KAZAKHSTAN, NULL1_WORLD, "KZ", "KZ", 40, 0, 0}, 362 {CTRY_KENYA, APL12_WORLD, "KE", "KE", 40, 160, 0}, 363 {CTRY_KOREA_ROC, APL9_WORLD, "KR", "KR", 40, 160, 0}, 364 {CTRY_KUWAIT, ETSI3_WORLD, "KW", "KW", 40, 160, 0}, 365 {CTRY_LATVIA, ETSI1_WORLD, "LV", "LV", 40, 160, 0}, 366 {CTRY_LEBANON, FCC3_WORLD, "LB", "LB", 40, 160, 0}, 367 {CTRY_LESOTHO, ETSI1_WORLD, "LS", "LS", 40, 160, 0}, 368 {CTRY_LIECHTENSTEIN, ETSI1_WORLD, "LI", "LI", 40, 160, 0}, 369 {CTRY_LITHUANIA, ETSI1_WORLD, "LT", "LT", 40, 160, 0}, 370 {CTRY_LUXEMBOURG, ETSI1_WORLD, "LU", "LU", 40, 160, 0}, 371 {CTRY_MACAU, FCC3_WORLD, "MO", "MO", 40, 160, 0}, 372 {CTRY_MACEDONIA, ETSI1_WORLD, "MK", "MK", 40, 160, 0}, 373 {CTRY_MALAWI, ETSI1_WORLD, "MW", "MW", 40, 160, 0}, 374 {CTRY_MALAYSIA, FCC11_WORLD, "MY", "MY", 40, 160, 0}, 375 {CTRY_MALDIVES, APL6_WORLD, "MV", "MV", 40, 160, 0}, 376 {CTRY_MALTA, ETSI1_WORLD, "MT", "MT", 40, 160, 0}, 377 {CTRY_MARSHALL_ISLANDS, FCC3_FCCA, "MH", "MH", 40, 160, 0}, 378 {CTRY_MARTINIQUE, ETSI1_WORLD, "MQ", "MQ", 40, 160, 0}, 379 {CTRY_MAURITANIA, ETSI1_WORLD, "MR", "MR", 40, 160, 0}, 380 {CTRY_MAURITIUS, FCC3_WORLD, "MU", "MU", 40, 160, 0}, 381 {CTRY_MAYOTTE, ETSI1_WORLD, "YT", "YT", 40, 160, 0}, 382 {CTRY_MEXICO, FCC3_ETSIC, "MX", "MX", 40, 160, 0}, 383 {CTRY_MICRONESIA, FCC3_FCCA, "FM", "FM", 40, 160, 0}, 384 {CTRY_MOLDOVA, ETSI1_WORLD, "MD", "MD", 40, 160, 0}, 385 {CTRY_MONACO, ETSI1_WORLD, "MC", "MC", 40, 160, 0}, 386 {CTRY_MONGOLIA, FCC3_WORLD, "MN", "MN", 40, 160, 0}, 387 {CTRY_MONTENEGRO, ETSI1_WORLD, "ME", "ME", 40, 160, 0}, 388 {CTRY_MOROCCO, ETSI3_WORLD, "MA", "MA", 40, 160, 0}, 389 {CTRY_NAMIBIA, APL9_WORLD, "NA", "NA", 40, 160, 0}, 390 {CTRY_NEPAL, APL6_WORLD, "NP", "NP", 40, 160, 0}, 391 {CTRY_NETHERLANDS, ETSI1_WORLD, "NL", "NP", 40, 160, 0}, 392 {CTRY_NETHERLANDS_ANTILLES, ETSI1_WORLD, "AN", "AN", 40, 160, 0}, 393 {CTRY_NEW_ZEALAND, FCC3_ETSIC, "NZ", "NZ", 40, 160, 0}, 394 {CTRY_NIGERIA, APL8_WORLD, "NG", "NG", 40, 160, 0}, 395 {CTRY_NORTHERN_MARIANA_ISLANDS, FCC3_FCCA, "MP", "MP", 40, 160, 0}, 396 {CTRY_NICARAGUA, FCC3_FCCA, "NI", "NI", 40, 160, 0}, 397 {CTRY_NORWAY, ETSI1_WORLD, "NO", "NO", 40, 160, 0}, 398 {CTRY_OMAN, ETSI1_WORLD, "OM", "OM", 40, 160, 0}, 399 {CTRY_PAKISTAN, APL1_ETSIC, "PK", "PK", 40, 160, 0}, 400 {CTRY_PALAU, FCC3_FCCA, "PW", "PW", 40, 160, 0}, 401 {CTRY_PANAMA, FCC14_FCCB, "PA", "PA", 40, 160, 0}, 402 {CTRY_PAPUA_NEW_GUINEA, FCC3_WORLD, "PG", "PG", 40, 160, 0}, 403 {CTRY_PARAGUAY, FCC3_WORLD, "PY", "PY", 40, 160, 0}, 404 {CTRY_PERU, FCC3_WORLD, "PE", "PE", 40, 160, 0}, 405 {CTRY_PHILIPPINES, FCC3_WORLD, "PH", "PH", 40, 160, 0}, 406 {CTRY_POLAND, ETSI1_WORLD, "PL", "PL", 40, 160, 0}, 407 {CTRY_PORTUGAL, ETSI1_WORLD, "PT", "PT", 40, 160, 0}, 408 {CTRY_PUERTO_RICO, FCC3_FCCA, "PR", "PR", 40, 160, 0}, 409 {CTRY_QATAR, APL1_WORLD, "QA", "QA" , 40, 160, 0}, 410 {CTRY_REUNION, ETSI1_WORLD, "RE", "RE", 40, 160, 0}, 411 {CTRY_ROMANIA, ETSI1_WORLD, "RO", "RO", 40, 160, 0}, 412 {CTRY_RUSSIA, ETSI8_WORLD, "RU", "RU", 40, 160, 0}, 413 {CTRY_RWANDA, FCC3_WORLD, "RW", "RW", 40, 160, 0}, 414 {CTRY_SAINT_BARTHELEMY, ETSI1_WORLD, "BL", "BL", 40, 160, 0}, 415 {CTRY_SAINT_KITTS_AND_NEVIS, APL10_WORLD, "KN", "KN", 40, 160, 0}, 416 {CTRY_SAINT_LUCIA, APL10_WORLD, "LC", "LC", 40, 160, 0}, 417 {CTRY_SAINT_MARTIN, ETSI1_WORLD, "MF", "MF", 40, 160, 0}, 418 {CTRY_SAINT_PIERRE_AND_MIQUELON, ETSI1_WORLD, "PM", "PM", 40, 160, 0}, 419 {CTRY_SAINT_VINCENT_AND_THE_GRENADIENS, ETSI1_WORLD, "VC", 420 "VC" , 40, 160, 0}, 421 {CTRY_SAMOA, ETSI1_WORLD, "WS", "WS", 40, 40, 0}, 422 {CTRY_SAUDI_ARABIA, ETSI1_WORLD, "SA", "SA", 40, 160, 0}, 423 {CTRY_SENEGAL, FCC3_WORLD, "SN", "SN", 40, 160, 0}, 424 {CTRY_SERBIA, ETSI1_WORLD, "RS", "RS", 40, 160, 0}, 425 {CTRY_SINGAPORE, FCC3_WORLD, "SG", "SG", 40, 160, 0}, 426 {CTRY_SLOVAKIA, ETSI1_WORLD, "SK", "SK", 40, 160, 0}, 427 {CTRY_SLOVENIA, ETSI1_WORLD, "SI", "SI", 40, 160, 0}, 428 {CTRY_SOUTH_AFRICA, FCC3_WORLD, "ZA", "ZA", 40, 160, 0}, 429 {CTRY_SPAIN, ETSI1_WORLD, "ES", "ES", 40, 160, 0}, 430 {CTRY_SURINAME, ETSI1_WORLD, "SR", "SR", 40, 160, 0}, 431 {CTRY_SRI_LANKA, FCC3_WORLD, "LK", "LK", 40, 20, 0}, 432 {CTRY_SWEDEN, ETSI1_WORLD, "SE", "SE", 40, 160, 0}, 433 {CTRY_SWITZERLAND, ETSI1_WORLD, "CH", "CH", 40, 160, 0}, 434 {CTRY_TAIWAN, FCC3_FCCA, "TW", "TW", 40, 160, 0}, 435 {CTRY_TANZANIA, APL1_WORLD, "TZ", "TZ", 40, 160, 0}, 436 {CTRY_THAILAND, FCC3_WORLD, "TH", "TH", 40, 160, 0}, 437 {CTRY_TOGO, ETSI1_WORLD, "TG", "TG", 40, 40, 0}, 438 {CTRY_TRINIDAD_Y_TOBAGO, FCC3_WORLD, "TT", "TT", 40, 160, 0}, 439 {CTRY_TUNISIA, ETSI3_WORLD, "TN", "TN", 40, 160, 0}, 440 {CTRY_TURKEY, ETSI1_WORLD, "TR", "TR", 40, 160, 0}, 441 {CTRY_TURKS_AND_CAICOS, FCC3_WORLD, "TC", "TC", 40, 160, 0}, 442 {CTRY_UGANDA, FCC3_WORLD, "UG", "UG", 40, 160, 0}, 443 {CTRY_UKRAINE, ETSI9_WORLD, "UA", "UA", 40, 160, 0}, 444 {CTRY_UAE, FCC3_WORLD, "AE", "AE", 40, 160, 0}, 445 {CTRY_UNITED_KINGDOM, ETSI1_WORLD, "GB", "GB", 40, 160, 0}, 446 {CTRY_UNITED_STATES, FCC3_FCCA, "US", "US", 40, 160, 0}, 447 {CTRY_UNITED_STATES1, FCC6_FCCA, "US1", "US", 40, 160, 0}, 448 {CTRY_UNITED_STATES_PS, FCC4_FCCA, "PS", "PS", 40, 160, 0}, 449 {CTRY_UNITED_STATES2, FCC8_FCCA, "US2", "US", 40, 160, 0}, 450 {CTRY_URUGUAY, FCC2_WORLD, "UY", "UY", 40, 160, 0}, 451 {CTRY_UZBEKISTAN, ETSI3_WORLD, "UZ", "UZ", 40, 160, 0}, 452 {CTRY_VANUATU, FCC3_WORLD, "VU", "VU", 40, 160, 0}, 453 {CTRY_VENEZUELA, FCC2_ETSIC, "VE", "VE", 40, 160, 0}, 454 {CTRY_VIET_NAM, FCC3_WORLD, "VN", "VN", 40, 80, 0}, 455 {CTRY_VIRGIN_ISLANDS, FCC3_FCCA, "VI", "VI", 40, 160, 0}, 456 {CTRY_WALLIS_AND_FUTUNA, ETSI1_WORLD, "WF", "WF", 40, 160, 0}, 457 {CTRY_YEMEN, NULL1_WORLD, "YE", "YE", 40, 0, 0}, 458 {CTRY_ZIMBABWE, ETSI1_WORLD, "ZW", "ZW", 40, 160, 0}, 459 {CTRY_JAPAN15, MKK5_MKKC, "J15", "JP" , 40, 160, 0}, 460 {CTRY_JAPAN9, MKK3_MKKC, "J9", "JP", 40, 160, 0}, 461 {CTRY_JAPAN48, MKK11_MKKC, "J48", "JP", 40, 160, 0}, 462 {CTRY_JAPAN55, MKK5_MKKA, "J55", "JP", 40, 160, 0}, 463 {CTRY_JAPAN60, MKK16_MKKC, "J60", "JP", 40, 160, 0}, 464 {CTRY_XA, MKK5_MKKA, "XA", "XA", 40, 160, 0}, 465 }; 466 467 enum reg_domains_2g { 468 FCCA, 469 FCCB, 470 WORLD, 471 MKKA, 472 MKKC, 473 ETSIC, 474 ETSID, 475 WORLD_2G_1, 476 WORLD_2G_2, 477 WORLD_2G_3, 478 }; 479 480 enum reg_domains_5g { 481 NULL1, 482 FCC1, 483 FCC2, 484 FCC3, 485 FCC4, 486 FCC6, 487 FCC8, 488 FCC11, 489 FCC13, 490 FCC14, 491 ETSI1, 492 ETSI3, 493 ETSI4, 494 ETSI8, 495 ETSI9, 496 ETSI11, 497 APL1, 498 APL2, 499 APL4, 500 APL6, 501 APL8, 502 APL9, 503 APL10, 504 APL11, 505 APL12, 506 APL13, 507 APL14, 508 APL15, 509 APL16, 510 APL17, 511 APL19, 512 APL20, 513 APL23, 514 MKK3, 515 MKK4, 516 MKK5, 517 MKK9, 518 MKK10, 519 MKK11, 520 MKK16, 521 WORLD_5G_1, 522 WORLD_5G_2, 523 }; 524 525 526 const struct reg_domain_pair g_reg_dmn_pairs[] = { 527 {NULL1_WORLD, NULL1, WORLD}, 528 529 {FCC1_FCCA, FCC1, FCCA}, 530 {FCC1_WORLD, FCC1, WORLD}, 531 {FCC2_WORLD, FCC2, WORLD}, 532 {FCC2_ETSIC, FCC2, ETSIC}, 533 {FCC3_FCCA, FCC3, FCCA}, 534 {FCC3_WORLD, FCC3, WORLD}, 535 {FCC3_ETSIC, FCC3, ETSIC}, 536 {FCC4_FCCA, FCC4, FCCA}, 537 {FCC6_WORLD, FCC6, WORLD}, 538 {FCC6_FCCA, FCC6, FCCA}, 539 {FCC8_FCCA, FCC8, FCCA}, 540 {FCC11_WORLD, FCC11, WORLD}, 541 {FCC13_WORLD, FCC13, WORLD}, 542 {FCC14_FCCB, FCC14, FCCB}, 543 544 {ETSI1_WORLD, ETSI1, WORLD}, 545 {ETSI3_WORLD, ETSI3, WORLD}, 546 {ETSI4_WORLD, ETSI4, WORLD}, 547 {ETSI8_WORLD, ETSI8, WORLD}, 548 {ETSI9_WORLD, ETSI9, WORLD}, 549 {ETSI11_WORLD, ETSI11, WORLD}, 550 551 {APL1_WORLD, APL1, WORLD}, 552 {APL1_ETSIC, APL1, ETSIC}, 553 {APL2_WORLD, APL2, WORLD}, 554 {APL2_ETSIC, APL2, ETSIC}, 555 {APL4_WORLD, APL4, WORLD}, 556 {APL6_WORLD, APL6, WORLD}, 557 {APL8_WORLD, APL8, WORLD}, 558 {APL9_WORLD, APL9, WORLD}, 559 {APL10_WORLD, APL10, WORLD}, 560 {APL11_FCCA, APL11, FCCA}, 561 {APL12_WORLD, APL12, WORLD}, 562 {APL13_WORLD, APL13, WORLD}, 563 {APL14_WORLD, APL14, WORLD}, 564 {APL15_WORLD, APL15, WORLD}, 565 {APL16_WORLD, APL16, WORLD}, 566 {APL17_ETSID, APL17, ETSID}, 567 {APL19_ETSIC, APL19, ETSIC}, 568 {APL20_WORLD, APL20, WORLD}, 569 {APL23_WORLD, APL23, WORLD}, 570 571 {MKK3_MKKC, MKK3, MKKC}, 572 {MKK5_MKKA, MKK5, MKKA}, 573 {MKK5_MKKC, MKK5, MKKC}, 574 {MKK11_MKKC, MKK11, MKKC}, 575 {MKK16_MKKC, MKK16, MKKC}, 576 577 {WORLD_60, WORLD_5G_2, WORLD_2G_3}, 578 {WORLD_61, WORLD_5G_2, WORLD_2G_3}, 579 {WORLD_62, WORLD_5G_2, WORLD_2G_3}, 580 {WORLD_63, WORLD_5G_1, WORLD_2G_2}, 581 {WORLD_65, WORLD_5G_1, WORLD_2G_2}, 582 {WORLD_64, WORLD_5G_1, WORLD_2G_1}, 583 {WORLD_66, WORLD_5G_2, WORLD_2G_1}, 584 {WORLD_69, WORLD_5G_2, WORLD_2G_1}, 585 {WORLD_67, WORLD_5G_2, WORLD_2G_2}, 586 {WORLD_68, WORLD_5G_2, WORLD_2G_2}, 587 {WORLD_6A, WORLD_5G_2, WORLD_2G_2}, 588 {WORLD_6C, WORLD_5G_2, WORLD_2G_2}, 589 }; 590 591 enum reg_rules_2g { 592 593 CHAN_1_11_1, 594 CHAN_1_11_2, 595 CHAN_1_11_3, 596 CHAN_1_13_1, 597 CHAN_1_13_2, 598 CHAN_1_13_3, 599 CHAN_12_13_1, 600 CHAN_14_1, 601 CHAN_14_2, 602 }; 603 604 const struct regulatory_rule reg_rules_2g[] = { 605 606 [CHAN_1_11_1] = {2402, 2472, 40, 30, 0}, 607 [CHAN_1_11_2] = {2402, 2472, 40, 20, 0}, 608 [CHAN_1_11_3] = {2402, 2472, 40, 36, 0}, 609 [CHAN_1_13_1] = {2402, 2482, 40, 20, 0}, 610 [CHAN_1_13_2] = {2402, 2482, 40, 30, 0}, 611 [CHAN_1_13_3] = {2402, 2482, 40, 36, 0}, 612 [CHAN_12_13_1] = {2457, 2482, 40, 30, REGULATORY_CHAN_NO_IR}, 613 [CHAN_14_1] = {2474, 2494, 20, 20, REGULATORY_CHAN_NO_OFDM}, 614 [CHAN_14_2] = {2474, 2494, 20, 20, 615 REGULATORY_CHAN_NO_OFDM | REGULATORY_CHAN_NO_IR}, 616 }; 617 618 619 const struct regdomain regdomains_2g[] = { 620 621 [FCCA] = {CTL_FCC, DFS_UNINIT_REG, 0, 6, 1, {CHAN_1_11_1} }, 622 [FCCB] = {CTL_FCC, DFS_UNINIT_REG, 0, 6, 1, {CHAN_1_11_3} }, 623 [WORLD] = {CTL_ETSI, DFS_UNINIT_REG, 0, 0, 1, {CHAN_1_13_1} }, 624 [MKKA] = {CTL_MKK, DFS_UNINIT_REG, 0, 0, 2, {CHAN_1_13_1, CHAN_14_1} }, 625 [MKKC] = {CTL_MKK, DFS_UNINIT_REG, 0, 0, 1, {CHAN_1_13_1} }, 626 [ETSIC] = {CTL_ETSI, DFS_UNINIT_REG, 0, 0, 1, {CHAN_1_13_2} }, 627 [ETSID] = {CTL_ETSI, DFS_UNINIT_REG, 0, 0, 1, {CHAN_1_13_3} }, 628 [WORLD_2G_1] = {CTL_NONE, DFS_UNINIT_REG, 0, 0, 1, {CHAN_1_11_2} }, 629 [WORLD_2G_2] = {CTL_NONE, DFS_UNINIT_REG, 0, 0, 2, 630 {CHAN_1_11_2, CHAN_12_13_1} }, 631 [WORLD_2G_3] = {CTL_NONE, DFS_UNINIT_REG, 0, 0, 3, 632 {CHAN_1_11_2, CHAN_12_13_1, CHAN_14_2} }, 633 }; 634 635 636 enum reg_rules_5g { 637 638 CHAN_4910_4990_1, 639 CHAN_4940_4990_1, 640 CHAN_5030_5090_1, 641 CHAN_5170_5250_1, 642 CHAN_5170_5250_2, 643 CHAN_5170_5250_3, 644 CHAN_5170_5250_4, 645 CHAN_5170_5250_5, 646 CHAN_5170_5250_6, 647 CHAN_5170_5250_7, 648 CHAN_5170_5250_8, 649 CHAN_5170_5250_9, 650 CHAN_5170_5330_1, 651 CHAN_5170_5330_2, 652 CHAN_5250_5330_1, 653 CHAN_5250_5330_2, 654 CHAN_5250_5330_3, 655 CHAN_5250_5330_4, 656 CHAN_5250_5330_5, 657 CHAN_5250_5330_6, 658 CHAN_5250_5330_7, 659 CHAN_5250_5330_8, 660 CHAN_5250_5330_9, 661 CHAN_5250_5330_10, 662 CHAN_5250_5330_11, 663 CHAN_5250_5330_12, 664 CHAN_5250_5330_13, 665 CHAN_5490_5730_1, 666 CHAN_5490_5730_2, 667 CHAN_5490_5730_3, 668 CHAN_5490_5730_4, 669 CHAN_5490_5730_5, 670 CHAN_5490_5710_1, 671 CHAN_5490_5710_2, 672 CHAN_5490_5710_3, 673 CHAN_5490_5710_4, 674 CHAN_5490_5590_1, 675 CHAN_5490_5590_2, 676 CHAN_5490_5590_3, 677 CHAN_5490_5570_1, 678 CHAN_5490_5650_1, 679 CHAN_5490_5650_2, 680 CHAN_5490_5670_1, 681 CHAN_5490_5630_1, 682 CHAN_5650_5730_1, 683 CHAN_5650_5730_2, 684 CHAN_5650_5730_3, 685 CHAN_5735_5835_1, 686 CHAN_5735_5835_2, 687 CHAN_5735_5835_3, 688 CHAN_5735_5835_4, 689 CHAN_5735_5835_5, 690 CHAN_5735_5835_6, 691 CHAN_5735_5835_7, 692 CHAN_5735_5875_1, 693 CHAN_5735_5875_2, 694 CHAN_5735_5875_3, 695 CHAN_5735_5815_1, 696 CHAN_5735_5775_1, 697 CHAN_5835_5855_1, 698 CHAN_5855_5875_1, 699 }; 700 701 const struct regulatory_rule reg_rules_5g[] = { 702 703 [CHAN_4910_4990_1] = {4910, 4990, 20, 20, 0}, 704 [CHAN_4940_4990_1] = {4940, 4990, 20, 33, 0}, 705 [CHAN_5030_5090_1] = {5030, 5090, 20, 20, 0}, 706 [CHAN_5170_5250_1] = {5170, 5250, 80, 17, 0}, 707 [CHAN_5170_5250_2] = {5170, 5250, 80, 23, 0}, 708 [CHAN_5170_5250_3] = {5170, 5250, 80, 20, 0}, 709 [CHAN_5170_5250_4] = {5170, 5250, 80, 30, 0}, 710 [CHAN_5170_5250_5] = {5170, 5250, 80, 24, 0}, 711 [CHAN_5170_5250_6] = {5170, 5250, 80, 18, 0}, 712 [CHAN_5170_5250_7] = {5170, 5250, 80, 20, REGULATORY_CHAN_INDOOR_ONLY}, 713 [CHAN_5170_5250_8] = {5170, 5250, 80, 23, REGULATORY_CHAN_INDOOR_ONLY}, 714 [CHAN_5170_5250_9] = {5170, 5250, 40, 30, 0}, 715 [CHAN_5170_5330_1] = {5170, 5330, 160, 20, REGULATORY_CHAN_NO_IR}, 716 [CHAN_5170_5330_2] = {5170, 5330, 160, 24, 0}, 717 [CHAN_5250_5330_1] = {5250, 5330, 80, 23, REGULATORY_CHAN_RADAR}, 718 [CHAN_5250_5330_2] = {5250, 5330, 80, 20, REGULATORY_CHAN_RADAR}, 719 [CHAN_5250_5330_3] = {5250, 5330, 80, 18, REGULATORY_CHAN_RADAR}, 720 [CHAN_5250_5330_4] = {5250, 5330, 80, 30, REGULATORY_CHAN_RADAR}, 721 [CHAN_5250_5330_5] = {5250, 5330, 80, 23, 0}, 722 [CHAN_5250_5330_6] = {5250, 5330, 80, 30, 0}, 723 [CHAN_5250_5330_7] = {5250, 5330, 80, 24, REGULATORY_CHAN_RADAR}, 724 [CHAN_5250_5330_8] = {5250, 5330, 80, 36, 0}, 725 [CHAN_5250_5330_9] = {5250, 5330, 80, 20, 0}, 726 [CHAN_5250_5330_10] = {5250, 5330, 80, 24, 0}, 727 [CHAN_5250_5330_11] = {5250, 5330, 80, 20, REGULATORY_CHAN_INDOOR_ONLY}, 728 [CHAN_5250_5330_12] = {5250, 5330, 80, 23, REGULATORY_CHAN_RADAR | 729 REGULATORY_CHAN_INDOOR_ONLY}, 730 [CHAN_5250_5330_13] = {5250, 5330, 40, 30, REGULATORY_CHAN_RADAR}, 731 [CHAN_5490_5730_1] = {5490, 5730, 160, 24, REGULATORY_CHAN_RADAR}, 732 [CHAN_5490_5730_2] = {5490, 5730, 160, 20, REGULATORY_CHAN_NO_IR}, 733 [CHAN_5490_5730_3] = {5490, 5730, 160, 30, 0}, 734 [CHAN_5490_5730_4] = {5490, 5730, 160, 24, 0}, 735 [CHAN_5490_5730_5] = {5490, 5730, 160, 30, REGULATORY_CHAN_RADAR}, 736 [CHAN_5490_5710_1] = {5490, 5710, 160, 30, REGULATORY_CHAN_RADAR}, 737 [CHAN_5490_5710_2] = {5490, 5710, 160, 20, REGULATORY_CHAN_RADAR}, 738 [CHAN_5490_5710_3] = {5490, 5710, 160, 27, REGULATORY_CHAN_RADAR}, 739 [CHAN_5490_5710_4] = {5490, 5710, 40, 30, REGULATORY_CHAN_RADAR}, 740 [CHAN_5490_5590_1] = {5490, 5590, 80, 24, REGULATORY_CHAN_RADAR}, 741 [CHAN_5490_5590_2] = {5490, 5590, 80, 30, 0}, 742 [CHAN_5490_5590_3] = {5490, 5590, 80, 36, 0}, 743 [CHAN_5490_5570_1] = {5490, 5570, 80, 30, REGULATORY_CHAN_RADAR}, 744 [CHAN_5490_5650_1] = {5490, 5650, 160, 23, REGULATORY_CHAN_RADAR}, 745 [CHAN_5490_5650_2] = {5490, 5650, 160, 24, REGULATORY_CHAN_RADAR}, 746 [CHAN_5490_5670_1] = {5490, 5670, 160, 20, REGULATORY_CHAN_RADAR}, 747 [CHAN_5490_5630_1] = {5490, 5630, 80, 30, REGULATORY_CHAN_RADAR}, 748 [CHAN_5650_5730_1] = {5650, 5730, 80, 24, REGULATORY_CHAN_RADAR}, 749 [CHAN_5650_5730_2] = {5650, 5730, 80, 30, 0}, 750 [CHAN_5650_5730_3] = {5650, 5730, 80, 36, 0}, 751 [CHAN_5735_5835_1] = {5735, 5835, 80, 23, 0}, 752 [CHAN_5735_5835_2] = {5735, 5835, 80, 30, 0}, 753 [CHAN_5735_5835_3] = {5735, 5835, 80, 20, 0}, 754 [CHAN_5735_5835_4] = {5735, 5835, 80, 33, 0}, 755 [CHAN_5735_5835_5] = {5735, 5835, 80, 20, REGULATORY_CHAN_NO_IR}, 756 [CHAN_5735_5835_6] = {5735, 5835, 80, 24, 0}, 757 [CHAN_5735_5835_7] = {5735, 5835, 80, 36, 0}, 758 [CHAN_5735_5875_1] = {5735, 5875, 20, 27, 0}, 759 [CHAN_5735_5875_2] = {5735, 5875, 20, 30, 0}, 760 [CHAN_5735_5875_3] = {5735, 5875, 80, 30, 0}, 761 [CHAN_5735_5815_1] = {5735, 5815, 80, 30, 0}, 762 [CHAN_5735_5775_1] = {5735, 5775, 40, 23, 0}, 763 [CHAN_5835_5855_1] = {5835, 5855, 20, 30, 0}, 764 [CHAN_5855_5875_1] = {5855, 5875, 20, 30, 0}, 765 }; 766 767 768 const struct regdomain regdomains_5g[] = { 769 770 [FCC1] = {CTL_FCC, DFS_FCC_REG, 2, 6, 3, {CHAN_5170_5250_1, 771 CHAN_5250_5330_1, 772 CHAN_5735_5835_2} }, 773 774 [FCC2] = {CTL_FCC, DFS_FCC_REG, 2, 6, 3, {CHAN_5170_5250_2, 775 CHAN_5250_5330_1, 776 CHAN_5735_5835_2} }, 777 778 [FCC3] = {CTL_FCC, DFS_FCC_REG, 2, 6, 4, {CHAN_5170_5250_5, 779 CHAN_5250_5330_7, 780 CHAN_5490_5730_1, 781 CHAN_5735_5835_2} }, 782 783 [FCC4] = {CTL_FCC, DFS_FCC_REG, 2, 6, 1, {CHAN_4940_4990_1} }, 784 785 [FCC6] = {CTL_FCC, DFS_FCC_REG, 2, 6, 5, {CHAN_5170_5250_5, 786 CHAN_5250_5330_7, 787 CHAN_5490_5590_1, 788 CHAN_5650_5730_1, 789 CHAN_5735_5835_2} }, 790 791 [FCC8] = {CTL_FCC, DFS_FCC_REG, 2, 6, 4, {CHAN_5170_5250_4, 792 CHAN_5250_5330_7, 793 CHAN_5490_5730_1, 794 CHAN_5735_5835_2} }, 795 796 [FCC11] = {CTL_FCC, DFS_FCC_REG, 2, 6, 4, {CHAN_5170_5250_5, 797 CHAN_5250_5330_7, 798 CHAN_5490_5650_2, 799 CHAN_5735_5835_6} }, 800 801 [FCC13] = {CTL_FCC, DFS_UNINIT_REG, 2, 0, 4, {CHAN_5170_5330_2, 802 CHAN_5250_5330_10, 803 CHAN_5490_5730_4, 804 CHAN_5735_5835_2} }, 805 806 [FCC14] = {CTL_FCC, DFS_UNINIT_REG, 2, 0, 3, {CHAN_5170_5250_2, 807 CHAN_5250_5330_6, 808 CHAN_5735_5835_7} }, 809 810 [ETSI1] = {CTL_ETSI, DFS_ETSI_REG, 2, 0, 3, {CHAN_5170_5250_2, 811 CHAN_5250_5330_1, 812 CHAN_5490_5710_1} }, 813 814 [ETSI3] = {CTL_ETSI, DFS_ETSI_REG, 5, 0, 2, {CHAN_5170_5250_2, 815 CHAN_5250_5330_1} }, 816 817 [ETSI4] = {CTL_ETSI, DFS_ETSI_REG, 2, 0, 2, {CHAN_5170_5250_6, 818 CHAN_5250_5330_3} }, 819 820 [ETSI8] = {CTL_ETSI, DFS_UNINIT_REG, 20, 0, 4, {CHAN_5170_5250_2, 821 CHAN_5250_5330_5, 822 CHAN_5490_5730_3, 823 CHAN_5735_5835_2} }, 824 825 [ETSI9] = {CTL_ETSI, DFS_ETSI_REG, 20, 0, 4, {CHAN_5170_5250_3, 826 CHAN_5250_5330_2, 827 CHAN_5490_5670_1, 828 CHAN_5735_5835_3} }, 829 830 [ETSI11] = {CTL_ETSI, DFS_ETSI_REG, 10, 0, 4, {CHAN_5170_5250_3, 831 CHAN_5250_5330_2, 832 CHAN_5490_5710_3, 833 CHAN_5735_5875_1} }, 834 835 [APL1] = {CTL_ETSI, DFS_UNINIT_REG, 2, 0, 1, {CHAN_5735_5835_2} }, 836 837 [APL2] = {CTL_ETSI, DFS_UNINIT_REG, 2, 0, 1, {CHAN_5735_5815_1} }, 838 839 [APL4] = {CTL_ETSI, DFS_UNINIT_REG, 2, 0, 2, {CHAN_5170_5250_2, 840 CHAN_5735_5835_1} }, 841 842 [APL6] = {CTL_ETSI, DFS_ETSI_REG, 2, 0, 3, {CHAN_5170_5250_3, 843 CHAN_5250_5330_2, 844 CHAN_5735_5835_3} }, 845 846 [APL8] = {CTL_ETSI, DFS_ETSI_REG, 2, 0, 2, {CHAN_5250_5330_4, 847 CHAN_5735_5835_2} }, 848 849 [APL9] = {CTL_ETSI, DFS_KR_REG, 2, 6, 4, {CHAN_5170_5250_3, 850 CHAN_5250_5330_2, 851 CHAN_5490_5730_5, 852 CHAN_5735_5835_2} }, 853 854 [APL10] = {CTL_ETSI, DFS_FCC_REG, 2, 6, 4, {CHAN_5170_5250_2, 855 CHAN_5250_5330_4, 856 CHAN_5490_5710_1, 857 CHAN_5735_5815_1} }, 858 859 [APL11] = { CTL_ETSI, DFS_ETSI_REG, 2, 0, 4, {CHAN_5170_5250_9, 860 CHAN_5250_5330_13, 861 CHAN_5490_5710_4, 862 CHAN_5735_5875_2} }, 863 864 [APL12] = {CTL_ETSI, DFS_ETSI_REG, 2, 0, 3, {CHAN_5170_5250_2, 865 CHAN_5490_5570_1, 866 CHAN_5735_5775_1} }, 867 868 [APL13] = {CTL_ETSI, DFS_ETSI_REG, 2, 0, 3, {CHAN_5170_5250_2, 869 CHAN_5250_5330_1, 870 CHAN_5490_5650_1} }, 871 872 [APL14] = {CTL_FCC, DFS_CN_REG, 2, 0, 3, {CHAN_5170_5250_2, 873 CHAN_5250_5330_1, 874 CHAN_5735_5835_4} }, 875 876 [APL15] = {CTL_FCC, DFS_UNINIT_REG, 2, 0, 3, {CHAN_5170_5250_2, 877 CHAN_5250_5330_5, 878 CHAN_5735_5835_4} }, 879 880 [APL16] = {CTL_FCC, DFS_UNINIT_REG, 2, 0, 5, {CHAN_5170_5250_1, 881 CHAN_5250_5330_6, 882 CHAN_5490_5590_2, 883 CHAN_5650_5730_2, 884 CHAN_5735_5835_2} }, 885 886 [APL17] = {CTL_FCC, DFS_UNINIT_REG, 2, 0, 5, {CHAN_5170_5250_2, 887 CHAN_5250_5330_8, 888 CHAN_5490_5590_3, 889 CHAN_5650_5730_3, 890 CHAN_5735_5835_7} }, 891 892 [APL19] = {CTL_FCC, DFS_UNINIT_REG, 2, 0, 3, {CHAN_5170_5250_2, 893 CHAN_5250_5330_5, 894 CHAN_5735_5875_3} }, 895 896 [APL20] = {CTL_ETSI, DFS_ETSI_REG, 2, 0, 4, {CHAN_5170_5250_8, 897 CHAN_5250_5330_12, 898 CHAN_5490_5730_5, 899 CHAN_5735_5835_4} }, 900 901 [APL23] = {CTL_ETSI, DFS_UNINIT_REG, 2, 0, 3, {CHAN_5170_5250_7, 902 CHAN_5250_5330_11, 903 CHAN_5735_5835_3} }, 904 905 [MKK3] = {CTL_MKK, DFS_UNINIT_REG, 2, 0, 1, {CHAN_5170_5250_3} }, 906 907 [MKK5] = {CTL_MKK, DFS_MKK_REG, 2, 0, 3, {CHAN_5170_5250_3, 908 CHAN_5250_5330_2, 909 CHAN_5490_5710_2} }, 910 911 [MKK11] = {CTL_MKK, DFS_MKK_REG, 2, 0, 5, {CHAN_5170_5250_3, 912 CHAN_5250_5330_2, 913 CHAN_5490_5710_2, 914 CHAN_4910_4990_1, 915 CHAN_5030_5090_1} }, 916 917 [MKK16] = {CTL_MKK, DFS_MKK_REG, 2, 0, 1, {CHAN_5490_5710_2} }, 918 919 [WORLD_5G_1] = {CTL_NONE, DFS_UNINIT_REG, 2, 0, 2, {CHAN_5170_5330_1, 920 CHAN_5735_5835_5} }, 921 922 [WORLD_5G_2] = {CTL_NONE, DFS_UNINIT_REG, 2, 0, 3, {CHAN_5170_5330_1, 923 CHAN_5490_5730_2, 924 CHAN_5735_5835_5} }, 925 }; 926 927 QDF_STATUS reg_get_num_countries(int *num_countries) 928 { 929 *num_countries = QDF_ARRAY_SIZE(g_all_countries); 930 931 return QDF_STATUS_SUCCESS; 932 } 933 934 QDF_STATUS reg_get_num_reg_dmn_pairs(int *num_reg_dmn) 935 { 936 *num_reg_dmn = QDF_ARRAY_SIZE(g_reg_dmn_pairs); 937 938 return QDF_STATUS_SUCCESS; 939 } 940 941 QDF_STATUS reg_get_default_country(uint16_t *default_country) 942 { 943 *default_country = CTRY_UNITED_STATES; 944 945 return QDF_STATUS_SUCCESS; 946 } 947