From 2b94b1de5bae1533cce5dbb9f69c184d8c8e1fb3 Mon Sep 17 00:00:00 2001 From: Amar Singhal Date: Wed, 15 Mar 2017 11:49:04 -0700 Subject: [PATCH] qcacmn: New regulatory database New regulatory database that is offload friendly. The same database would be used in firmware also. Change-Id: I4f8ee3555882fcc672d893ff544e119773dfd4c0 CRs-Fixed: 2002892 --- umac/regulatory/core/inc/reg_db.h | 122 +++++ umac/regulatory/core/src/reg_db.c | 836 ++++++++++++++++++++++++++++++ 2 files changed, 958 insertions(+) diff --git a/umac/regulatory/core/inc/reg_db.h b/umac/regulatory/core/inc/reg_db.h index c9d9f12e5d7d..4b20472b6f5e 100644 --- a/umac/regulatory/core/inc/reg_db.h +++ b/umac/regulatory/core/inc/reg_db.h @@ -22,3 +22,125 @@ * This file contains regulatory component data structures */ +#include "qdf_types.h" +#include "qdf_trace.h" + +#define REGULATORY_CHAN_DISABLED (1<<0) +#define REGULATORY_CHAN_NO_IR (1<<1) +#define REGULATORY_CHAN_RADAR (1<<3) +#define REGULATORY_CHAN_NO_OFDM (1<<6) +#define REGULATORY_CHAN_INDOOR_ONLY (1<<9) + +#define REGULATORY_CHAN_NO_HT40 (1<<4) +#define REGULATORY_CHAN_NO_80MHZ (1<<7) +#define REGULATORY_CHAN_NO_160MHZ (1<<8) +#define REGULATORY_CHAN_NO_20MHZ (1<<11) +#define REGULATORY_CHAN_NO_10MHZ (1<<12) + +#define REGULATORY_PHYMODE_NO11A (1<<0) +#define REGULATORY_PHYMODE_NO11B (1<<1) +#define REGULATORY_PHYMODE_NO11G (1<<2) +#define REGULATORY_CHAN_NO11N (1<<3) +#define REGULATORY_PHYMODE_NO11AC (1<<4) +#define REGULATORY_PHYMODE_NO11AX (1<<5) + +#define MAX_REG_RULES 10 +#define REG_ALPHA2_LEN 2 + +/** + * enum dfs_region - DFS region + * @DFS_UNINIT_REGION: un-initialized region + * @DFS_FCC_REGION: FCC region + * @DFS_ETSI_REGION: ETSI region + * @DFS_MKK_REGION: MKK region + * @DFS_CN_REGION: China region + * @DFS_KR_REGION: Korea region + * @DFS_UNDEF_REGION: Undefined region + */ +enum dfs_region { + DFS_UNINIT_REGION = 0, + DFS_FCC_REGION = 1, + DFS_ETSI_REGION = 2, + DFS_MKK_REGION = 3, + DFS_CN_REGION = 4, + DFS_KR_REGION = 5, + DFS_UNDEF_REGION +}; + +/** + * struct regulatory_rule + * @start_freq: start frequency + * @end_freq: end frequency + * @max_bw: maximum bandwidth + * @reg_power: regulatory power + * @flags: regulatory flags + */ +struct regulatory_rule { + uint16_t start_freq; + uint16_t end_freq; + uint16_t max_bw; + uint8_t reg_power; + uint16_t flags; +}; + +/** + * struct regdomain + * @ctl_val: CTL value + * @dfs_region: dfs region + * @min_bw: minimum bandwidth + * @num_reg_rules: number of regulatory rules + * @reg_rules_id: regulatory rule index + */ +struct regdomain { + uint8_t ctl_val; + uint8_t dfs_region; + uint16_t min_bw; + uint8_t num_reg_rules; + uint8_t reg_rule_id[MAX_REG_RULES]; +}; + +/** + * struct country_code_to_reg_domain + * @country_code: country code + * @reg_dmn_pair_id: reg domainpair id + * @alpha2: internal alpha2(unique) + * @alpha2_11d: iso-3166 alpha2 + * @max_bw_2g: maximum 2g bandwidth + * @max_bw_5g: maximum 5g bandwidth + * @phymode_bitmap: phymodes not supported + */ +struct country_code_to_reg_domain { + uint16_t country_code; + uint16_t reg_dmn_pair_id; + uint8_t alpha2[REG_ALPHA2_LEN + 1]; + uint8_t alpha2_11d[REG_ALPHA2_LEN + 1]; + uint16_t max_bw_2g; + uint16_t max_bw_5g; + uint16_t phymode_bitmap; +}; + +/** + * struct reg_domain_pair + * @reg_dmn_pair_id: reg domainpiar value + * @dmn_id_5g: 5g reg domain value + * @dmn_id_2g: 2g regdomain value + */ +struct reg_domain_pair { + uint16_t reg_dmn_pair_id; + uint8_t dmn_id_5g; + uint8_t dmn_id_2g; +}; + +/** + * enum ctl_val - CTL value + * @FCC: FCC + * @MKK: MKK + * @ETSI: ETSI + * @NO_CTL: no CTL + */ +enum ctl_val { + FCC = 0x10, + MKK = 0x40, + ETSI = 0x30, + NO_CTL = 0xff +}; diff --git a/umac/regulatory/core/src/reg_db.c b/umac/regulatory/core/src/reg_db.c index 0ada1db1680e..c4f660e46c7f 100644 --- a/umac/regulatory/core/src/reg_db.c +++ b/umac/regulatory/core/src/reg_db.c @@ -21,3 +21,839 @@ * DOC: reg_db.c * This file provides regulatory data base */ + +#include +#include +#include "reg_db.h" + +enum country_code { + CTRY_AFGHANISTAN = 4, + CTRY_ALBANIA = 8, + CTRY_ALGERIA = 12, + CTRY_AMERICAN_SAMOA = 16, + CTRY_ANGUILLA = 660, + CTRY_ARGENTINA = 32, + CTRY_ARGENTINA2 = 5003, + CTRY_ARMENIA = 51, + CTRY_ARUBA = 533, + CTRY_AUSTRALIA = 36, + CTRY_AUSTRALIA2 = 5000, + CTRY_AUSTRIA = 40, + CTRY_AZERBAIJAN = 31, + CTRY_BAHAMAS = 44, + CTRY_BAHRAIN = 48, + CTRY_BANGLADESH = 50, + CTRY_BARBADOS = 52, + CTRY_BELARUS = 112, + CTRY_BELGIUM = 56, + CTRY_BELGIUM2 = 4101, + CTRY_BELIZE = 84, + CTRY_BERMUDA = 60, + CTRY_BHUTAN = 64, + CTRY_BOLIVIA = 68, + CTRY_BOSNIA_HERZ = 70, + CTRY_BRAZIL = 76, + CTRY_BRUNEI_DARUSSALAM = 96, + CTRY_BULGARIA = 100, + CTRY_BURKINA_FASO = 854, + CTRY_CAMBODIA = 116, + CTRY_CANADA = 124, + CTRY_CANADA2 = 5001, + CTRY_CAYMAN_ISLANDS = 136, + CTRY_CENTRAL_AFRICA_REPUBLIC = 140, + CTRY_CHAD = 148, + CTRY_CHILE = 152, + CTRY_CHINA = 156, + CTRY_CHRISTMAS_ISLAND = 162, + CTRY_COLOMBIA = 170, + CTRY_COSTA_RICA = 188, + CTRY_COTE_DIVOIRE = 384, + CTRY_CROATIA = 191, + CTRY_CYPRUS = 196, + CTRY_CZECH = 203, + CTRY_DENMARK = 208, + CTRY_DOMINICA = 212, + CTRY_DOMINICAN_REPUBLIC = 214, + CTRY_ECUADOR = 218, + CTRY_EGYPT = 818, + CTRY_EL_SALVADOR = 222, + CTRY_ESTONIA = 233, + CTRY_ETHIOPIA = 231, + CTRY_FINLAND = 246, + CTRY_FRANCE = 250, + CTRY_FRENCH_GUIANA = 254, + CTRY_FRENCH_POLYNESIA = 258, + CTRY_GEORGIA = 268, + CTRY_GERMANY = 276, + CTRY_GHANA = 288, + CTRY_GREECE = 300, + CTRY_GREENLAND = 304, + CTRY_GRENADA = 308, + CTRY_GUADELOUPE = 312, + CTRY_GUAM = 316, + CTRY_GUATEMALA = 320, + CTRY_GUYANA = 328, + CTRY_HAITI = 332, + CTRY_HONDURAS = 340, + CTRY_HONG_KONG = 344, + CTRY_HUNGARY = 348, + CTRY_ICELAND = 352, + CTRY_INDIA = 356, + CTRY_INDONESIA = 360, + CTRY_IRAN = 364, + CTRY_IRELAND = 372, + CTRY_ISRAEL = 376, + CTRY_ITALY = 380, + CTRY_JAMAICA = 388, + CTRY_JORDAN = 400, + CTRY_KAZAKHSTAN = 398, + CTRY_KENYA = 404, + CTRY_KOREA_NORTH = 408, + CTRY_KOREA_ROC = 410, + CTRY_KUWAIT = 414, + CTRY_LATVIA = 428, + CTRY_LEBANON = 422, + CTRY_LESOTHO = 426, + CTRY_LIECHTENSTEIN = 438, + CTRY_LITHUANIA = 440, + CTRY_LUXEMBOURG = 442, + CTRY_MACAU = 446, + CTRY_MACEDONIA = 807, + CTRY_MALAWI = 454, + CTRY_MALAYSIA = 458, + CTRY_MALDIVES = 462, + CTRY_MALTA = 470, + CTRY_MARSHALL_ISLANDS = 584, + CTRY_MARTINIQUE = 474, + CTRY_MAURITANIA = 478, + CTRY_MAURITIUS = 480, + CTRY_MAYOTTE = 175, + CTRY_MEXICO = 484, + CTRY_MICRONESIA = 583, + CTRY_MOLDOVA = 498, + CTRY_MONACO = 492, + CTRY_MONGOLIA = 496, + CTRY_MONTENEGRO = 499, + CTRY_MOROCCO = 504, + CTRY_NAMIBIA = 516, + CTRY_NEPAL = 524, + CTRY_NETHERLANDS = 528, + CTRY_NETHERLANDS_ANTILLES = 530, + CTRY_NEW_ZEALAND = 554, + CTRY_NIGERIA = 566, + CTRY_NORTHERN_MARIANA_ISLANDS = 580, + CTRY_NICARAGUA = 558, + CTRY_NORWAY = 578, + CTRY_OMAN = 512, + CTRY_PAKISTAN = 586, + CTRY_PALAU = 585, + CTRY_PANAMA = 591, + CTRY_PAPUA_NEW_GUINEA = 598, + CTRY_PARAGUAY = 600, + CTRY_PERU = 604, + CTRY_PHILIPPINES = 608, + CTRY_POLAND = 616, + CTRY_PORTUGAL = 620, + CTRY_PUERTO_RICO = 630, + CTRY_QATAR = 634, + CTRY_REUNION = 638, + CTRY_ROMANIA = 642, + CTRY_RUSSIA = 643, + CTRY_RWANDA = 646, + CTRY_SAINT_BARTHELEMY = 652, + CTRY_SAINT_KITTS_AND_NEVIS = 659, + CTRY_SAINT_LUCIA = 662, + CTRY_SAINT_MARTIN = 663, + CTRY_SAINT_PIERRE_AND_MIQUELON = 666, + CTRY_SAINT_VINCENT_AND_THE_GRENADIENS = 670, + CTRY_SAMOA = 882, + CTRY_SAUDI_ARABIA = 682, + CTRY_SENEGAL = 686, + CTRY_SERBIA = 688, + CTRY_SINGAPORE = 702, + CTRY_SLOVAKIA = 703, + CTRY_SLOVENIA = 705, + CTRY_SOUTH_AFRICA = 710, + CTRY_SPAIN = 724, + CTRY_SURINAME = 740, + CTRY_SRI_LANKA = 144, + CTRY_SWEDEN = 752, + CTRY_SWITZERLAND = 756, + CTRY_SYRIA = 760, + CTRY_TAIWAN = 158, + CTRY_TANZANIA = 834, + CTRY_THAILAND = 764, + CTRY_TOGO = 768, + CTRY_TRINIDAD_Y_TOBAGO = 780, + CTRY_TUNISIA = 788, + CTRY_TURKEY = 792, + CTRY_TURKS_AND_CAICOS = 796, + CTRY_UGANDA = 800, + CTRY_UKRAINE = 804, + CTRY_UAE = 784, + CTRY_UNITED_KINGDOM = 826, + CTRY_UNITED_STATES = 840, + CTRY_UNITED_STATES1 = 841, + CTRY_UNITED_STATES_PS = 842, + CTRY_UNITED_STATES2 = 843, + CTRY_URUGUAY = 858, + CTRY_UZBEKISTAN = 860, + CTRY_VANUATU = 548, + CTRY_VENEZUELA = 862, + CTRY_VIET_NAM = 704, + CTRY_VIRGIN_ISLANDS = 850, + CTRY_WALLIS_AND_FUTUNA = 876, + CTRY_YEMEN = 887, + CTRY_ZIMBABWE = 716, + CTRY_JAPAN7 = 4007, + CTRY_JAPAN8 = 4008, + CTRY_JAPAN9 = 4009, + CTRY_JAPAN10 = 4010, + CTRY_JAPAN11 = 4011, + CTRY_JAPAN12 = 4012, + CTRY_JAPAN13 = 4013, + CTRY_JAPAN14 = 4014, + CTRY_JAPAN15 = 4015, + CTRY_JAPAN25 = 4025, + CTRY_JAPAN26 = 4026, + CTRY_JAPAN27 = 4027, + CTRY_JAPAN28 = 4028, + CTRY_JAPAN29 = 4029, + CTRY_JAPAN34 = 4034, + CTRY_JAPAN35 = 4035, + CTRY_JAPAN36 = 4036, + CTRY_JAPAN37 = 4037, + CTRY_JAPAN38 = 4038, + CTRY_JAPAN39 = 4039, + CTRY_JAPAN40 = 4040, + CTRY_JAPAN41 = 4041, + CTRY_JAPAN42 = 4042, + CTRY_JAPAN43 = 4043, + CTRY_JAPAN44 = 4044, + CTRY_JAPAN45 = 4045, + CTRY_JAPAN46 = 4046, + CTRY_JAPAN47 = 4047, + CTRY_JAPAN48 = 4048, + CTRY_JAPAN49 = 4049, + CTRY_JAPAN55 = 4055, + CTRY_JAPAN56 = 4056, + CTRY_XA = 4100, +}; + +enum reg_domain { + NULL1_WORLD = 0x03, + + FCC1_FCCA = 0x10, + FCC1_WORLD = 0x11, + FCC2_WORLD = 0x21, + FCC2_ETSIC = 0x22, + FCC3_FCCA = 0x3A, + FCC3_WORLD = 0x3B, + FCC3_ETSIC = 0x3F, + FCC4_FCCA = 0x12, + FCC6_WORLD = 0x23, + FCC6_FCCA = 0x14, + FCC8_FCCA = 0x16, + FCC11_WORLD = 0x19, + + ETSI1_WORLD = 0x37, + ETSI3_WORLD = 0x36, + ETSI4_WORLD = 0x30, + ETSI8_WORLD = 0x3D, + ETSI9_WORLD = 0x3E, + + APL1_WORLD = 0x52, + APL1_ETSIC = 0x55, + APL2_WORLD = 0x45, + APL2_ETSIC = 0x56, + APL4_WORLD = 0x42, + APL6_WORLD = 0x5B, + APL8_WORLD = 0x5D, + APL9_WORLD = 0x5E, + APL10_WORLD = 0x5F, + APL12_WORLD = 0x51, + APL13_WORLD = 0x5A, + APL14_WORLD = 0x57, + APL15_WORLD = 0x59, + + MKK3_MKKA = 0xF0, + MKK3_MKKB = 0x80, + MKK3_MKKC = 0x82, + MKK3_FCCA = 0xF2, + MKK4_MKKA = 0xF3, + MKK4_MKKB = 0x83, + MKK4_MKKC = 0x85, + MKK4_FCCA = 0xF5, + MKK5_MKKA = 0x99, + MKK5_MKKB = 0x86, + MKK5_MKKC = 0x88, + MKK5_FCCA = 0x9A, + MKK9_MKKA = 0xF6, + MKK9_MKKC = 0xFE, + MKK9_FCCA = 0xFC, + MKK10_MKKA = 0xF7, + MKK10_MKKC = 0xD2, + MKK10_FCCA = 0xD0, + MKK11_MKKA = 0xD4, + MKK11_FCCA = 0xD5, + MKK11_MKKC = 0xD7, + + WORLD_60 = 0x60, + WORLD_61 = 0x61, + WORLD_62 = 0x62, + WORLD_63 = 0x63, + WORLD_65 = 0x65, + WORLD_64 = 0x64, + WORLD_66 = 0x66, + WORLD_69 = 0x69, + WORLD_67 = 0x67, + WORLD_68 = 0x68, + WORLD_6A = 0x6A, + WORLD_6C = 0x6C, +}; + +static const struct country_code_to_reg_domain g_all_countries[] = { + {CTRY_AFGHANISTAN, ETSI1_WORLD, "AF", "AF" , 40, 160, 0}, + {CTRY_ALBANIA, ETSI1_WORLD, "AL", "AL", 40, 160, 0}, + {CTRY_ALGERIA, APL13_WORLD, "DZ", "DZ", 40, 160, 0}, + {CTRY_AMERICAN_SAMOA, FCC3_FCCA, "AS", "AS", 40, 160, 0}, + {CTRY_ANGUILLA, ETSI1_WORLD, "AI", "AI", 40, 160, 0}, + {CTRY_ARGENTINA, FCC3_WORLD, "AR1", "AR", 40, 160, 0}, + {CTRY_ARGENTINA2, FCC6_WORLD, "AR", "AR", 40, 160, 0}, + {CTRY_ARMENIA, ETSI4_WORLD, "AM", "AM", 40, 20, 0}, + {CTRY_ARUBA, ETSI1_WORLD, "AW", "AW", 40, 160, 0}, + {CTRY_AUSTRALIA, FCC3_WORLD, "AU1", "AU", 40, 160, 0}, + {CTRY_AUSTRALIA2, FCC6_WORLD, "AU", "AU", 40, 160, 0}, + {CTRY_AUSTRIA, ETSI1_WORLD, "AT", "AT", 40, 160, 0}, + {CTRY_AZERBAIJAN, ETSI4_WORLD, "AZ", "AZ", 40, 160, 0}, + {CTRY_BAHAMAS, FCC3_WORLD, "BS", "BS", 40, 160, 0}, + {CTRY_BAHRAIN, APL6_WORLD, "BH", "BH", 40, 20, 0}, + {CTRY_BANGLADESH, APL1_WORLD, "BD", "BD", 40, 160, 0}, + {CTRY_BARBADOS, FCC2_WORLD, "BB", "BB", 40, 160, 0}, + {CTRY_BELARUS, ETSI1_WORLD, "BY", "BY", 40, 160, 0}, + {CTRY_BELGIUM, ETSI1_WORLD, "BE", "BE", 40, 160, 0}, + {CTRY_BELGIUM2, ETSI4_WORLD, "BEL", "BE", 40, 160, 0}, + {CTRY_BELIZE, FCC3_ETSIC, "BZ", "BZ", 40, 160, 0}, + {CTRY_BERMUDA, FCC3_FCCA, "BM", "BM", 40, 160, 0}, + {CTRY_BHUTAN, ETSI1_WORLD, "BT", "BT", 40, 160, 0}, + {CTRY_BOLIVIA, APL8_WORLD, "BO", "BO", 40, 160, 0}, + {CTRY_BOSNIA_HERZ, ETSI1_WORLD, "BA", "BA", 40, 160, 0}, + {CTRY_BRAZIL, FCC3_ETSIC, "BR", "BR", 40, 160, 0}, + {CTRY_BRUNEI_DARUSSALAM, APL6_WORLD, "BN", "BN", 40, 160, 0}, + {CTRY_BULGARIA, ETSI1_WORLD, "BG", "BG", 40, 160, 0}, + {CTRY_BURKINA_FASO, FCC3_WORLD, "BF", "BF", 40, 160, 0}, + {CTRY_CAMBODIA, ETSI1_WORLD, "KH", "KH", 40, 160, 0}, + {CTRY_CANADA, FCC3_FCCA, "CA1", "CA", 40, 160, 0}, + {CTRY_CANADA2, FCC6_FCCA, "CA", "CA", 40, 160, 0}, + {CTRY_CAYMAN_ISLANDS, FCC3_WORLD, "KY", "KY", 40, 160, 0}, + {CTRY_CENTRAL_AFRICA_REPUBLIC, FCC3_WORLD, "CF", "CF", 40, 40, 0}, + {CTRY_CHAD, ETSI1_WORLD, "TD", "TD", 40, 160, 0}, + {CTRY_CHILE, APL6_WORLD, "CL", "CL", 40, 160, 0}, + {CTRY_CHINA, APL14_WORLD, "CN", "CN", 40, 160, 0}, + {CTRY_CHRISTMAS_ISLAND, FCC3_WORLD, "CX", "CX", 40, 160, 0}, + {CTRY_COLOMBIA, FCC3_WORLD, "CO", "CO", 40, 160, 0}, + {CTRY_COSTA_RICA, FCC3_WORLD, "CR", "CR", 40, 20, 0}, + {CTRY_COTE_DIVOIRE, FCC3_WORLD, "CI", "CI", 40, 160, 0}, + {CTRY_CROATIA, ETSI1_WORLD, "HR", "HR", 40, 160, 0}, + {CTRY_CYPRUS, ETSI1_WORLD, "CY", "CY", 40, 160, 0}, + {CTRY_CZECH, ETSI1_WORLD, "CZ", "CZ", 40, 160, 0}, + {CTRY_DENMARK, ETSI1_WORLD, "DK", "DK" , 40, 160, 0}, + {CTRY_DOMINICA, FCC1_FCCA, "DM", "DM", 40, 160, 0}, + {CTRY_DOMINICAN_REPUBLIC, FCC1_FCCA, "DO", "DO", 40, 160, 0}, + {CTRY_ECUADOR, FCC3_WORLD, "EC", "EC", 40, 20, 0}, + {CTRY_EGYPT, ETSI3_WORLD, "EG", "EG", 20, 20, 0}, + {CTRY_EL_SALVADOR, FCC1_WORLD, "SV", "SV", 40, 20, 0}, + {CTRY_ESTONIA, ETSI1_WORLD, "EE", "EE", 40, 160, 0}, + {CTRY_ETHIOPIA, ETSI1_WORLD, "ET", "ET", 40, 160, 0}, + {CTRY_FINLAND, ETSI1_WORLD, "FI", "FI" , 40, 160, 0}, + {CTRY_FRANCE, ETSI1_WORLD, "FR", "FR", 40, 160, 0}, + {CTRY_FRENCH_GUIANA, ETSI1_WORLD, "GF", "GF", 40, 160, 0}, + {CTRY_FRENCH_POLYNESIA, ETSI1_WORLD, "PF", "PF", 40, 160, 0}, + {CTRY_GEORGIA, ETSI4_WORLD, "GE", "GE", 40, 160, 0}, + {CTRY_GERMANY, ETSI1_WORLD, "DE", "DE", 40, 160, 0}, + {CTRY_GHANA, FCC3_WORLD, "GH", "GH", 40, 160, 0}, + {CTRY_GREECE, ETSI1_WORLD, "GR", "GR", 40, 160, 0}, + {CTRY_GREENLAND, ETSI1_WORLD, "GL", "GL", 40, 160, 0}, + {CTRY_GRENADA, FCC3_FCCA, "GD", "GD", 40, 160, 0}, + {CTRY_GUADELOUPE, ETSI1_WORLD, "GP", "GP", 40, 160, 0}, + {CTRY_GUAM, FCC3_FCCA, "GU", "GU", 40, 160, 0}, + {CTRY_GUATEMALA, ETSI1_WORLD, "GT", "GT", 40, 160, 0}, + {CTRY_GUYANA, APL1_ETSIC, "GY", "GY", 40, 160, 0}, + {CTRY_HAITI, FCC3_FCCA, "HT", "HT", 40, 160, 0}, + {CTRY_HONDURAS, FCC3_WORLD, "HN", "HN", 40, 160, 0}, + {CTRY_HONG_KONG, FCC3_WORLD, "HK", "HK", 40, 160, 0}, + {CTRY_HUNGARY, ETSI1_WORLD, "HU", "HU" , 40, 160, 0}, + {CTRY_ICELAND, ETSI1_WORLD, "IS", "IS" , 40, 160, 0}, + {CTRY_INDIA, APL6_WORLD, "IN", "IN", 40, 160, 0}, + {CTRY_INDONESIA, APL2_ETSIC, "ID", "ID", 40, 20, 0}, + {CTRY_IRAN, APL1_WORLD, "IR", "IR", 40, 160, 0}, + {CTRY_IRELAND, ETSI1_WORLD, "IE", "IE", 40, 160, 0}, + {CTRY_ISRAEL, ETSI3_WORLD, "IL", "IL", 40, 160, 0}, + {CTRY_ITALY, ETSI1_WORLD, "IT", "IT", 40, 160, 0}, + {CTRY_JAMAICA, FCC3_WORLD, "JM", "JM", 40, 160, 0}, + {CTRY_JORDAN, APL4_WORLD, "JO", "JO", 40, 160, 0}, + {CTRY_KAZAKHSTAN, NULL1_WORLD, "KZ", "KZ", 40, 0, 0}, + {CTRY_KENYA, APL12_WORLD, "KE", "KE", 40, 160, 0}, + {CTRY_KOREA_NORTH, APL9_WORLD, "KP", "KP", 40, 20, 0}, + {CTRY_KOREA_ROC, APL9_WORLD, "KR", "KR", 40, 160, 0}, + {CTRY_KUWAIT, ETSI3_WORLD, "KW", "KW", 40, 160, 0}, + {CTRY_LATVIA, ETSI1_WORLD, "LV", "LV", 40, 160, 0}, + {CTRY_LEBANON, FCC3_WORLD, "LB", "LB", 40, 160, 0}, + {CTRY_LESOTHO, ETSI1_WORLD, "LS", "LS", 40, 160, 0}, + {CTRY_LIECHTENSTEIN, ETSI1_WORLD, "LI", "LI", 40, 160, 0}, + {CTRY_LITHUANIA, ETSI1_WORLD, "LT", "LT", 40, 160, 0}, + {CTRY_LUXEMBOURG, ETSI1_WORLD, "LU", "LU", 40, 160, 0}, + {CTRY_MACAU, FCC3_WORLD, "MO", "MO", 40, 160, 0}, + {CTRY_MACEDONIA, ETSI1_WORLD, "MK", "MK", 40, 160, 0}, + {CTRY_MALAWI, ETSI1_WORLD, "MW", "MW", 40, 160, 0}, + {CTRY_MALAYSIA, FCC11_WORLD, "MY", "MY", 40, 160, 0}, + {CTRY_MALDIVES, APL6_WORLD, "MV", "MV", 40, 160, 0}, + {CTRY_MALTA, ETSI1_WORLD, "MT", "MT", 40, 160, 0}, + {CTRY_MARSHALL_ISLANDS, FCC3_FCCA, "MH", "MH", 40, 160, 0}, + {CTRY_MARTINIQUE, ETSI1_WORLD, "MQ", "MQ", 40, 160, 0}, + {CTRY_MAURITANIA, ETSI1_WORLD, "MR", "MR", 40, 160, 0}, + {CTRY_MAURITIUS, FCC3_WORLD, "MU", "MU", 40, 160, 0}, + {CTRY_MAYOTTE, ETSI1_WORLD, "YT", "YT", 40, 160, 0}, + {CTRY_MEXICO, FCC3_ETSIC, "MX", "MX", 40, 160, 0}, + {CTRY_MICRONESIA, FCC3_FCCA, "FM", "FM", 40, 160, 0}, + {CTRY_MOLDOVA, ETSI1_WORLD, "MD", "MD", 40, 160, 0}, + {CTRY_MONACO, ETSI1_WORLD, "MC", "MC", 40, 160, 0}, + {CTRY_MONGOLIA, FCC3_WORLD, "MN", "MN", 40, 160, 0}, + {CTRY_MONTENEGRO, ETSI1_WORLD, "ME", "ME", 40, 160, 0}, + {CTRY_MOROCCO, ETSI3_WORLD, "MA", "MA", 40, 160, 0}, + {CTRY_NAMIBIA, APL9_WORLD, "NA", "NA", 40, 160, 0}, + {CTRY_NEPAL, APL6_WORLD, "NP", "NP", 40, 160, 0}, + {CTRY_NETHERLANDS, ETSI1_WORLD, "NL", "NP", 40, 160, 0}, + {CTRY_NETHERLANDS_ANTILLES, ETSI1_WORLD, "AN", "AN", 40, 160, 0}, + {CTRY_NEW_ZEALAND, FCC3_ETSIC, "NZ", "NZ", 40, 160, 0}, + {CTRY_NIGERIA, APL8_WORLD, "NG", "NG", 40, 160, 0}, + {CTRY_NORTHERN_MARIANA_ISLANDS, FCC3_FCCA, "MP", "MP", 40, 160, 0}, + {CTRY_NICARAGUA, FCC3_FCCA, "NI", "NI", 40, 160, 0}, + {CTRY_NORWAY, ETSI1_WORLD, "NO", "NO", 40, 160, 0}, + {CTRY_OMAN, ETSI1_WORLD, "OM", "OM", 40, 160, 0}, + {CTRY_PAKISTAN, APL1_ETSIC, "PK", "PK", 40, 160, 0}, + {CTRY_PALAU, FCC3_FCCA, "PW", "PW", 40, 160, 0}, + {CTRY_PANAMA, FCC1_FCCA, "PA", "PA", 40, 160, 0}, + {CTRY_PAPUA_NEW_GUINEA, FCC3_WORLD, "PG", "PG", 40, 160, 0}, + {CTRY_PARAGUAY, FCC3_WORLD, "PY", "PY", 40, 160, 0}, + {CTRY_PERU, FCC3_WORLD, "PE", "PE", 40, 160, 0}, + {CTRY_PHILIPPINES, FCC3_WORLD, "PH", "PH", 40, 160, 0}, + {CTRY_POLAND, ETSI1_WORLD, "PL", "PL", 40, 160, 0}, + {CTRY_PORTUGAL, ETSI1_WORLD, "PT", "PT", 40, 160, 0}, + {CTRY_PUERTO_RICO, FCC3_FCCA, "PR", "PR", 40, 160, 0}, + {CTRY_QATAR, APL1_WORLD, "QA", "QA" , 40, 160, 0}, + {CTRY_REUNION, ETSI1_WORLD, "RE", "RE", 40, 160, 0}, + {CTRY_ROMANIA, ETSI1_WORLD, "RO", "RO", 40, 160, 0}, + {CTRY_RUSSIA, ETSI8_WORLD, "RU", "RU", 40, 160, 0}, + {CTRY_RWANDA, FCC3_WORLD, "RW", "RW", 40, 160, 0}, + {CTRY_SAINT_BARTHELEMY, ETSI1_WORLD, "BL", "BL", 40, 160, 0}, + {CTRY_SAINT_KITTS_AND_NEVIS, APL10_WORLD, "KN", "KN", 40, 160, 0}, + {CTRY_SAINT_LUCIA, APL10_WORLD, "LC", "LC", 40, 160, 0}, + {CTRY_SAINT_MARTIN, ETSI1_WORLD, "MF", "MF", 40, 160, 0}, + {CTRY_SAINT_PIERRE_AND_MIQUELON, ETSI1_WORLD, "PM", "PM", 40, 160, 0}, + {CTRY_SAINT_VINCENT_AND_THE_GRENADIENS, ETSI1_WORLD, "VC", + "VC" , 40, 160, 0}, + {CTRY_SAMOA, ETSI1_WORLD, "WS", "WS", 40, 40, 0}, + {CTRY_SAUDI_ARABIA, ETSI1_WORLD, "SA", "SA", 40, 160, 0}, + {CTRY_SENEGAL, FCC3_WORLD, "SN", "SN", 40, 160, 0}, + {CTRY_SERBIA, ETSI1_WORLD, "RS", "RS", 40, 160, 0}, + {CTRY_SINGAPORE, FCC3_WORLD, "SG", "SG", 40, 160, 0}, + {CTRY_SLOVAKIA, ETSI1_WORLD, "SK", "SK", 40, 160, 0}, + {CTRY_SLOVENIA, ETSI1_WORLD, "SI", "SI", 40, 160, 0}, + {CTRY_SOUTH_AFRICA, FCC3_WORLD, "ZA", "ZA", 40, 160, 0}, + {CTRY_SPAIN, ETSI1_WORLD, "ES", "ES", 40, 160, 0}, + {CTRY_SURINAME, ETSI1_WORLD, "SR", "SR", 40, 160, 0}, + {CTRY_SRI_LANKA, FCC3_WORLD, "LK", "LK", 40, 20, 0}, + {CTRY_SWEDEN, ETSI1_WORLD, "SE", "SE", 40, 160, 0}, + {CTRY_SWITZERLAND, ETSI1_WORLD, "CH", "CH", 40, 160, 0}, + {CTRY_SYRIA, NULL1_WORLD, "SY", "SY", 40, 0, 0}, + {CTRY_TAIWAN, FCC3_FCCA, "TW", "TW", 40, 160, 0}, + {CTRY_TANZANIA, APL1_WORLD, "TZ", "TZ", 40, 160, 0}, + {CTRY_THAILAND, FCC3_WORLD, "TH", "TH", 40, 160, 0}, + {CTRY_TOGO, ETSI1_WORLD, "TG", "TG", 40, 40, 0}, + {CTRY_TRINIDAD_Y_TOBAGO, FCC3_WORLD, "TT", "TT", 40, 160, 0}, + {CTRY_TUNISIA, ETSI3_WORLD, "TN", "TN", 40, 160, 0}, + {CTRY_TURKEY, ETSI1_WORLD, "TR", "TR", 40, 160, 0}, + {CTRY_TURKS_AND_CAICOS, FCC3_WORLD, "TC", "TC", 40, 160, 0}, + {CTRY_UGANDA, FCC3_WORLD, "UG", "UG", 40, 160, 0}, + {CTRY_UKRAINE, ETSI9_WORLD, "UA", "UA", 40, 160, 0}, + {CTRY_UAE, FCC3_WORLD, "AE", "AE", 40, 160, 0}, + {CTRY_UNITED_KINGDOM, ETSI1_WORLD, "GB", "GB", 40, 160, 0}, + {CTRY_UNITED_STATES, FCC3_FCCA, "US", "US", 40, 160, 0}, + {CTRY_UNITED_STATES1, FCC6_FCCA, "US1", "US", 40, 160, 0}, + {CTRY_UNITED_STATES_PS, FCC4_FCCA, "PS", "PS", 40, 160, 0}, + {CTRY_UNITED_STATES2, FCC8_FCCA, "US2", "US", 40, 160, 0}, + {CTRY_URUGUAY, FCC2_WORLD, "UY", "UY", 40, 160, 0}, + {CTRY_UZBEKISTAN, ETSI3_WORLD, "UZ", "UZ", 40, 160, 0}, + {CTRY_VANUATU, FCC3_WORLD, "VU", "VU", 40, 160, 0}, + {CTRY_VENEZUELA, FCC2_ETSIC, "VE", "VE", 40, 160, 0}, + {CTRY_VIET_NAM, FCC3_WORLD, "VN", "VN", 40, 80, 0}, + {CTRY_VIRGIN_ISLANDS, FCC3_FCCA, "VI", "VI", 40, 160, 0}, + {CTRY_WALLIS_AND_FUTUNA, ETSI1_WORLD, "WF", "WF", 40, 160, 0}, + {CTRY_YEMEN, NULL1_WORLD, "YE", "YE", 40, 0, 0}, + {CTRY_ZIMBABWE, ETSI1_WORLD, "ZW", "ZW", 40, 160, 0}, + {CTRY_JAPAN7, MKK3_MKKB, "J7", "JP" , 40, 160, 0}, + {CTRY_JAPAN8, MKK3_MKKA, "J8", "JP" , 40, 160, 0}, + {CTRY_JAPAN9, MKK3_MKKC, "J9", "JP" , 40, 160, 0}, + {CTRY_JAPAN10, MKK4_MKKB, "J10", "JP" , 40, 160, 0}, + {CTRY_JAPAN11, MKK4_MKKA, "J11", "JP" , 40, 160, 0}, + {CTRY_JAPAN12, MKK4_MKKC, "J12", "JP" , 40, 160, 0}, + {CTRY_JAPAN13, MKK5_MKKB, "J13", "JP" , 40, 160, 0}, + {CTRY_JAPAN14, MKK5_MKKA, "JP", "JP" , 40, 160, 0}, + {CTRY_JAPAN15, MKK5_MKKC, "J15", "JP" , 40, 160, 0}, + {CTRY_JAPAN25, MKK3_MKKA, "J25", "JP" , 40, 160, 0}, + {CTRY_JAPAN26, MKK3_MKKA, "J26", "JP" , 40, 160, 0}, + {CTRY_JAPAN27, MKK3_FCCA, "J27", "JP" , 40, 160, 0}, + {CTRY_JAPAN28, MKK4_MKKA, "J28", "JP" , 40, 160, 0}, + {CTRY_JAPAN29, MKK4_FCCA, "J29", "JP" , 40, 160, 0}, + {CTRY_JAPAN34, MKK9_MKKA, "J34", "JP" , 40, 160, 0}, + {CTRY_JAPAN35, MKK10_MKKA, "J35", "JP" , 40, 160, 0}, + {CTRY_JAPAN36, MKK4_MKKA, "J36", "JP" , 40, 160, 0}, + {CTRY_JAPAN37, MKK9_FCCA, "J37", "JP" , 40, 160, 0}, + {CTRY_JAPAN38, MKK9_MKKA, "J38", "JP" , 40, 160, 0}, + {CTRY_JAPAN39, MKK9_MKKC, "J39", "JP" , 40, 160, 0}, + {CTRY_JAPAN40, MKK9_MKKA, "J40", "JP" , 40, 160, 0}, + {CTRY_JAPAN41, MKK10_FCCA, "J41", "JP" , 40, 160, 0}, + {CTRY_JAPAN42, MKK10_MKKA, "J42", "JP" , 40, 160, 0}, + {CTRY_JAPAN43, MKK10_MKKC, "J43", "JP" , 40, 160, 0}, + {CTRY_JAPAN44, MKK10_MKKA, "J44", "JP" , 40, 160, 0}, + {CTRY_JAPAN45, MKK11_MKKA, "J45", "JP" , 40, 160, 0}, + {CTRY_JAPAN46, MKK11_FCCA, "J46", "JP" , 40, 160, 0}, + {CTRY_JAPAN47, MKK11_MKKA, "J47", "JP" , 40, 160, 0}, + {CTRY_JAPAN48, MKK11_MKKC, "J48", "JP" , 40, 160, 0}, + {CTRY_JAPAN49, MKK11_MKKA, "J49", "JP" , 40, 160, 0}, + {CTRY_JAPAN55, MKK5_MKKA, "J55", "JP" , 40, 160, 0}, + {CTRY_JAPAN56, MKK5_FCCA, "J56", "JP" , 40, 160, 0}, + {CTRY_XA, MKK5_MKKA, "XA", "XA", 40, 160, 0}, +}; + +enum reg_domains_2g { + FCCA, + WORLD, + MKKA, + MKKC, + ETSIC, + WORLD_2G_1, + WORLD_2G_2, + WORLD_2G_3, +}; + +enum reg_domains_5g { + NULL1, + FCC1, + FCC2, + FCC3, + FCC4, + FCC6, + FCC8, + ETSI1, + ETSI3, + ETSI4, + ETSI8, + ETSI9, + APL1, + APL2, + APL4, + APL6, + APL8, + APL9, + APL10, + APL12, + APL14, + MKK3, + MKK4, + MKK5, + MKK9, + MKK10, + MKK11, + WORLD_5G_1, + WORLD_5G_2, +}; + + +static const struct reg_domain_pair g_reg_dmn_pairs[] = { + {NULL1_WORLD, NULL1, WORLD}, + + {FCC1_FCCA, FCC1, FCCA}, + {FCC1_WORLD, FCC1, WORLD}, + {FCC2_WORLD, FCC2, WORLD}, + {FCC2_ETSIC, FCC2, ETSIC}, + {FCC3_FCCA, FCC3, FCCA}, + {FCC3_WORLD, FCC3, WORLD}, + {FCC3_ETSIC, FCC3, ETSIC}, + {FCC4_FCCA, FCC4, FCCA}, + {FCC6_WORLD, FCC6, WORLD}, + {FCC6_FCCA, FCC6, FCCA}, + {FCC8_FCCA, FCC8, FCCA}, + + {ETSI1_WORLD, ETSI1, WORLD}, + {ETSI3_WORLD, ETSI3, WORLD}, + {ETSI4_WORLD, ETSI4, WORLD}, + {ETSI8_WORLD, ETSI8, WORLD}, + {ETSI9_WORLD, ETSI9, WORLD}, + + {APL1_WORLD, APL1, WORLD}, + {APL1_ETSIC, APL1, ETSIC}, + {APL2_WORLD, APL2, WORLD}, + {APL2_ETSIC, APL2, ETSIC}, + {APL4_WORLD, APL4, WORLD}, + {APL6_WORLD, APL6, WORLD}, + {APL8_WORLD, APL8, WORLD}, + {APL9_WORLD, APL9, WORLD}, + {APL10_WORLD, APL10, WORLD}, + {APL12_WORLD, APL12, WORLD}, + {APL14_WORLD, APL14, WORLD}, + + {MKK3_MKKA, MKK3, MKKA}, + {MKK3_MKKC, MKK3, MKKC}, + {MKK3_FCCA, MKK3, FCCA}, + {MKK4_MKKA, MKK4, MKKA}, + {MKK4_MKKC, MKK4, MKKC}, + {MKK4_FCCA, MKK4, FCCA}, + {MKK5_MKKA, MKK5, MKKA}, + {MKK5_MKKC, MKK5, MKKC}, + {MKK5_FCCA, MKK5, FCCA}, + {MKK9_MKKA, MKK9, MKKA}, + {MKK9_MKKC, MKK9, MKKC}, + {MKK9_FCCA, MKK9, FCCA}, + {MKK10_MKKA, MKK10, MKKA}, + {MKK10_MKKC, MKK10, MKKC}, + {MKK10_FCCA, MKK10, FCCA}, + {MKK11_MKKA, MKK11, MKKA}, + {MKK11_FCCA, MKK11, FCCA}, + {MKK11_MKKC, MKK11, MKKC}, + + {WORLD_60, WORLD_2G_3, WORLD_5G_2}, + {WORLD_61, WORLD_2G_3, WORLD_5G_2}, + {WORLD_62, WORLD_2G_3, WORLD_5G_2}, + {WORLD_63, WORLD_2G_2, WORLD_5G_1}, + {WORLD_65, WORLD_2G_2, WORLD_5G_1}, + {WORLD_64, WORLD_2G_1, WORLD_5G_1}, + {WORLD_66, WORLD_2G_1, WORLD_5G_2}, + {WORLD_69, WORLD_2G_1, WORLD_5G_2}, + {WORLD_67, WORLD_2G_2, WORLD_5G_2}, + {WORLD_68, WORLD_2G_2, WORLD_5G_2}, + {WORLD_6A, WORLD_2G_2, WORLD_5G_2}, + {WORLD_6C, WORLD_2G_2, WORLD_5G_2}, +}; + +enum reg_rules_2g { + + CHAN_1_11_1, + CHAN_1_11_2, + CHAN_1_13_1, + CHAN_1_13_2, + CHAN_12_13_1, + CHAN_14_1, + CHAN_14_2, +}; + +static const struct regulatory_rule reg_rules_2g[] = { + + [CHAN_1_11_1] = {2402, 2472, 40, 30, 0}, + [CHAN_1_11_2] = {2402, 2472, 40, 20, 0}, + [CHAN_1_13_1] = {2402, 2482, 40, 20, 0}, + [CHAN_1_13_2] = {2402, 2482, 40, 30, 0}, + [CHAN_12_13_1] = {2457, 2482, 40, 30, REGULATORY_CHAN_NO_IR}, + [CHAN_14_1] = {2474, 2494, 20, 20, REGULATORY_CHAN_NO_OFDM}, + [CHAN_14_2] = {2474, 2494, 20, 20, + REGULATORY_CHAN_NO_OFDM | REGULATORY_CHAN_NO_IR}, +}; + + +static const struct regdomain regdomains_2g[] = { + + [FCCA] = {FCC, DFS_UNINIT_REGION, 0, 1, {CHAN_1_11_1} }, + [WORLD] = {ETSI, DFS_UNINIT_REGION, 0, 1, {CHAN_1_13_1} }, + [MKKA] = {MKK, DFS_UNINIT_REGION, 0, 2, {CHAN_1_13_1, CHAN_14_1} }, + [MKKC] = {MKK, DFS_UNINIT_REGION, 0, 1, {CHAN_1_13_1} }, + [ETSIC] = {ETSI, DFS_UNINIT_REGION, 0, 1, {CHAN_1_13_2} }, + [WORLD_2G_1] = {FCC, DFS_UNINIT_REGION, 0, 1, {CHAN_1_11_2} }, + [WORLD_2G_2] = {FCC, DFS_UNINIT_REGION, 0, 2, + {CHAN_1_11_2, CHAN_12_13_1} }, + [WORLD_2G_3] = {FCC, DFS_UNINIT_REGION, 0, 3, + {CHAN_1_11_2, CHAN_12_13_1, CHAN_14_2} }, +}; + + +enum reg_rules_5g { + + CHAN_4910_4990_1, + CHAN_4940_4990_1, + CHAN_5030_5090_1, + CHAN_5170_5250_1, + CHAN_5170_5250_2, + CHAN_5170_5250_3, + CHAN_5170_5250_4, + CHAN_5170_5330_1, + CHAN_5250_5330_1, + CHAN_5250_5330_2, + CHAN_5250_5330_3, + CHAN_5250_5330_4, + CHAN_5490_5730_1, + CHAN_5490_5730_2, + CHAN_5490_5730_3, + CHAN_5490_5710_1, + CHAN_5490_5710_2, + CHAN_5490_5590_1, + CHAN_5490_5570_1, + CHAN_5490_5670_1, + CHAN_5490_5630_1, + CHAN_5650_5730_1, + CHAN_5735_5835_1, + CHAN_5735_5835_2, + CHAN_5735_5835_3, + CHAN_5735_5835_4, + CHAN_5735_5835_5, + CHAN_5735_5815_1, + CHAN_5735_5775_1, +}; + +static const struct regulatory_rule reg_rules_5g[] = { + + [CHAN_4910_4990_1] = {4910, 4990, 20, 20, 0}, + [CHAN_4940_4990_1] = {4940, 4990, 20, 33, 0}, + [CHAN_5030_5090_1] = {5030, 5090, 20, 20, 0}, + [CHAN_5170_5250_1] = {5170, 5250, 80, 17, 0}, + [CHAN_5170_5250_2] = {5170, 5250, 80, 23, 0}, + [CHAN_5170_5250_3] = {5170, 5250, 80, 20, 0}, + [CHAN_5170_5250_4] = {5170, 5250, 80, 30, 0}, + [CHAN_5170_5330_1] = {5170, 5330, 160, 20, REGULATORY_CHAN_NO_IR}, + [CHAN_5250_5330_1] = {5250, 5330, 80, 23, REGULATORY_CHAN_RADAR}, + [CHAN_5250_5330_2] = {5250, 5330, 80, 20, REGULATORY_CHAN_RADAR}, + [CHAN_5250_5330_3] = {5250, 5330, 80, 17, REGULATORY_CHAN_RADAR}, + [CHAN_5250_5330_4] = {5250, 5330, 80, 30, REGULATORY_CHAN_RADAR}, + [CHAN_5490_5730_1] = {5490, 5730, 160, 23, REGULATORY_CHAN_RADAR}, + [CHAN_5490_5730_2] = {5490, 5730, 160, 30, REGULATORY_CHAN_RADAR}, + [CHAN_5490_5730_3] = {5490, 5730, 160, 20, REGULATORY_CHAN_NO_IR}, + [CHAN_5490_5710_1] = {5490, 5710, 160, 30, REGULATORY_CHAN_RADAR}, + [CHAN_5490_5710_2] = {5490, 5710, 160, 20, REGULATORY_CHAN_RADAR}, + [CHAN_5490_5590_1] = {5490, 5590, 80, 23, REGULATORY_CHAN_RADAR}, + [CHAN_5490_5570_1] = {5490, 5570, 80, 30, REGULATORY_CHAN_RADAR}, + [CHAN_5490_5670_1] = {5490, 5670, 160, 20, REGULATORY_CHAN_RADAR}, + [CHAN_5490_5630_1] = {5490, 5630, 80, 30, REGULATORY_CHAN_RADAR}, + [CHAN_5650_5730_1] = {5650, 5730, 80, 23, REGULATORY_CHAN_RADAR}, + [CHAN_5735_5835_1] = {5735, 5835, 80, 23, 0}, + [CHAN_5735_5835_2] = {5735, 5835, 80, 30, 0}, + [CHAN_5735_5835_3] = {5735, 5835, 80, 20, 0}, + [CHAN_5735_5835_4] = {5735, 5835, 80, 27, 0}, + [CHAN_5735_5835_5] = {5735, 5835, 80, 20, REGULATORY_CHAN_NO_IR}, + [CHAN_5735_5815_1] = {5735, 5815, 80, 30, 0}, + [CHAN_5735_5775_1] = {5735, 5775, 40, 23, 0}, +}; + + +static const struct regdomain regdomains_5g[] = { + + [FCC1] = {FCC, DFS_FCC_REGION, 2, 3, {CHAN_5170_5250_1, + CHAN_5250_5330_1, + CHAN_5735_5835_1} }, + + [FCC2] = {FCC, DFS_CN_REGION, 2, 3, {CHAN_5170_5250_2, + CHAN_5250_5330_1, + CHAN_5735_5835_1} }, + + [FCC3] = {FCC, DFS_FCC_REGION, 2, 4, {CHAN_5170_5250_2, + CHAN_5250_5330_1, + CHAN_5490_5730_1, + CHAN_5735_5835_1} }, + + [FCC4] = {FCC, DFS_FCC_REGION, 2, 4, {CHAN_4940_4990_1, + CHAN_5170_5250_1, + CHAN_5250_5330_1, + CHAN_5735_5835_1} }, + + [FCC6] = {FCC, DFS_FCC_REGION, 2, 5, {CHAN_5170_5250_2, + CHAN_5250_5330_1, + CHAN_5490_5590_1, + CHAN_5650_5730_1, + CHAN_5735_5835_1} }, + + [FCC8] = {FCC, DFS_FCC_REGION, 2, 4, {CHAN_5170_5250_4, + CHAN_5250_5330_1, + CHAN_5490_5730_1, + CHAN_5735_5835_1} }, + + [ETSI1] = {ETSI, DFS_ETSI_REGION, 5, 3, {CHAN_5170_5250_2, + CHAN_5250_5330_1, + CHAN_5490_5710_1} }, + + [ETSI3] = {ETSI, DFS_ETSI_REGION, 5, 2, {CHAN_5170_5250_3, + CHAN_5250_5330_2} }, + + [ETSI4] = {ETSI, DFS_ETSI_REGION, 5, 2, {CHAN_5170_5250_1, + CHAN_5250_5330_3} }, + + [ETSI8] = {ETSI, DFS_ETSI_REGION, 20, 4, {CHAN_5170_5250_3, + CHAN_5250_5330_2, + CHAN_5490_5730_2, + CHAN_5735_5835_2} }, + + [ETSI9] = {ETSI, DFS_ETSI_REGION, 20, 4, {CHAN_5170_5250_3, + CHAN_5250_5330_2, + CHAN_5490_5670_1, + CHAN_5735_5835_3} }, + + [APL1] = {ETSI, DFS_UNINIT_REGION, 2, 1, {CHAN_5735_5835_2} }, + + [APL2] = {ETSI, DFS_UNINIT_REGION, 2, 1, {CHAN_5735_5815_1} }, + + [APL4] = {ETSI, DFS_UNINIT_REGION, 2, 2, {CHAN_5170_5250_2, + CHAN_5735_5835_1} }, + + [APL6] = {ETSI, DFS_ETSI_REGION, 2, 3, {CHAN_5170_5250_3, + CHAN_5250_5330_2, + CHAN_5735_5835_3} }, + + [APL8] = {ETSI, DFS_ETSI_REGION, 2, 2, {CHAN_5250_5330_4, + CHAN_5735_5835_2} }, + + [APL9] = {ETSI, DFS_KR_REGION, 2, 4, {CHAN_5170_5250_3, + CHAN_5250_5330_2, + CHAN_5490_5630_1, + CHAN_5735_5815_1} }, + + [APL10] = {ETSI, DFS_ETSI_REGION, 2, 4, {CHAN_5170_5250_3, + CHAN_5250_5330_2, + CHAN_5490_5710_1, + CHAN_5735_5815_1} }, + + [APL12] = {ETSI, DFS_ETSI_REGION, 2, 3, {CHAN_5170_5250_1, + CHAN_5490_5570_1, + CHAN_5735_5775_1} }, + + [APL14] = {FCC, DFS_CN_REGION, 2, 3, {CHAN_5170_5250_2, + CHAN_5250_5330_1, + CHAN_5735_5835_4} }, + + [MKK3] = {MKK, DFS_UNINIT_REGION, 2, 1, {CHAN_5170_5250_3} }, + + [MKK4] = {MKK, DFS_MKK_REGION, 2, 2, {CHAN_5170_5250_3, + CHAN_5250_5330_2} }, + + [MKK5] = {MKK, DFS_MKK_REGION, 2, 3, {CHAN_5170_5250_3, + CHAN_5250_5330_2, + CHAN_5490_5710_2} }, + + [MKK9] = {MKK, DFS_UNINIT_REGION, 2, 3, {CHAN_5170_5250_3, + CHAN_4910_4990_1, + CHAN_5030_5090_1} }, + + [MKK10] = {MKK, DFS_MKK_REGION, 2, 4, {CHAN_5170_5250_3, + CHAN_5250_5330_2, + CHAN_4910_4990_1, + CHAN_5030_5090_1} }, + + [MKK11] = {MKK, DFS_MKK_REGION, 2, 5, {CHAN_5170_5250_3, + CHAN_5250_5330_2, + CHAN_5490_5710_2, + CHAN_4910_4990_1, + CHAN_5030_5090_1} }, + + [WORLD_5G_1] = {FCC, DFS_UNINIT_REGION, 2, 2, {CHAN_5170_5330_1, + CHAN_5735_5835_5} }, + + [WORLD_5G_2] = {FCC, DFS_UNINIT_REGION, 2, 3, {CHAN_5170_5330_1, + CHAN_5490_5730_3, + CHAN_5735_5835_5} }, +};