Переглянути джерело

qcacmn: Update Regulatory Database to 38th version

Add below changes as part of 38th Reg DB version
    a.) Add superdomain FCC2_6G_010, APL4_6G_11 and APL5_6G_12.
    b.) Add sub 6G domain APL25, APL26 and APL27 reg rules for new domain.
    c.) Add APL25, APL26 and APL27 RD for 5G.
    c.) Add 6G support for BELGIUM, BRAZIL, CANADA and COSTA_RICA.
    d.) Change reg domain pair id for AUSTRALIA, CHILE,
	MOROCCO, HONG_KONG & MEXICO.
    e.) Add CHNA 2g reg domain.

Change-Id: I80be14ccc2845261a0816e9e7d7931b40e5d0927
CRs-Fixed: 3083299
sheenam monga 3 роки тому
батько
коміт
2fd2127a4e
2 змінених файлів з 196 додано та 70 видалено
  1. 188 70
      umac/regulatory/core/src/reg_db.c
  2. 8 0
      umac/regulatory/core/src/reg_db.h

+ 188 - 70
umac/regulatory/core/src/reg_db.c

@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  *
  * Permission to use, copy, modify, and/or distribute this software for
@@ -20,7 +21,7 @@
 /**
  * DOC: reg_db.c
  * This file implements QCA regulatory database.
- * Current implementation conforms to database version 37.
+ * Current implementation conforms to database version 38.
  */
 
 #include <qdf_types.h>
@@ -294,6 +295,7 @@ enum reg_domain {
 	APL12_WORLD = 0x51,
 	APL13_WORLD = 0x5A,
 	APL14_WORLD = 0x57,
+	APL14_CHNA = 0x74,
 	APL15_WORLD = 0x59,
 	APL16_WORLD = 0x70,
 	APL16_ETSIC = 0x6D,
@@ -303,6 +305,9 @@ enum reg_domain {
 	APL20_WORLD = 0xE5,
 	APL23_WORLD = 0xE3,
 	APL24_ETSIC = 0xE2,
+	APL25_ETSIC = 0x75,
+	APL26_ETSIC = 0x72,
+	APL27_FCCA = 0x73,
 
 	MKK3_MKKC = 0x82,
 	MKK5_MKKA = 0x99,
@@ -338,7 +343,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(ARGENTINA, APL16_ETSIC, 0, AR, 40, 160, 0, 0),
 	CE(ARMENIA, APL4_WORLD, 0, AM, 40, 160, 0, 0),
 	CE(ARUBA, ETSI1_WORLD, 0, AW, 40, 160, 0, 0),
-	CE(AUSTRALIA, FCC6_WORLD, 0, AU, 40, 160, 0, 0),
+	CE(AUSTRALIA, APL25_ETSIC, 0, AU, 40, 160, 0, 0),
 	CE(AUSTRIA, ETSI1_WORLD, 0, AT, 40, 160, 0, 0),
 	CE(AZERBAIJAN, ETSI8_WORLD, 0, AZ, 40, 160, 0, 0),
 	CE(BAHAMAS, FCC17_WORLD, 0, BS, 40, 160, 0, 0),
@@ -346,30 +351,30 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(BANGLADESH, APL1_WORLD, 0, BD, 40, 160, 0, 0),
 	CE(BARBADOS, FCC2_WORLD, 0, BB, 40, 160, 0, 0),
 	CE(BELARUS, ETSI1_WORLD, 0, BY, 40, 160, 0, 0),
-	CE(BELGIUM, ETSI1_WORLD, 0, BE, 40, 160, 0, 0),
+	CE(BELGIUM, ETSI1_WORLD, ETSI1_6G_02, BE, 40, 160, 320, 0),
 	CE(BELIZE, ETSI8_WORLD, 0, BZ, 40, 160, 0, 0),
 	CE(BERMUDA, FCC17_FCCA, 0, BM, 40, 160, 0, 0),
 	CE(BHUTAN, ETSI1_WORLD, 0, BT, 40, 160, 0, 0),
 	CE(BOLIVIA, FCC17_WORLD, 0, BO, 40, 160, 0, 0),
 	CE(BOSNIA_HERZ, ETSI1_WORLD, 0, BA, 40, 160, 0, 0),
-	CE(BRAZIL, FCC18_ETSIC, 0, BR, 40, 160, 0, 0),
+	CE(BRAZIL, FCC18_ETSIC, FCC1_6G_07, BR, 40, 160, 320, 0),
 	CE(BRUNEI_DARUSSALAM, FCC17_WORLD, 0, BN, 40, 160, 0, 0),
 	CE(BULGARIA, ETSI1_WORLD, 0, BG, 40, 160, 0, 0),
 	CE(BURKINA_FASO, FCC17_WORLD, 0, BF, 40, 160, 0, 0),
 	CE(CAMBODIA, ETSI1_WORLD, 0, KH, 40, 160, 0, 0),
 	CE(CAMEROON, ETSI1_WORLD, 0, CM, 40, 160, 0, 0),
-	CE(CANADA, FCC6_FCCA, 0, CA, 40, 160, 0, 0),
+	CE(CANADA, FCC6_FCCA, FCC2_6G_10, CA, 40, 160, 320, 0),
 	CE(CAYMAN_ISLANDS, FCC17_WORLD, 0, KY, 40, 160, 0, 0),
 	CE(CENTRAL_AFRICA_REPUBLIC, FCC17_WORLD, 0, CF, 40, 40, 0, 0),
 	CE(CHAD, ETSI1_WORLD, 0, TD, 40, 160, 0, 0),
-	CE(CHILE, FCC14_WORLD, FCC1_6G_05, CL, 40, 160, 320, 0),
+	CE(CHILE, FCC13_WORLD, APL5_6G_12, CL, 40, 160, 320, 0),
 	CE(CHINA, APL14_WORLD, 0, CN, 40, 160, 0, 0),
 	CE(CHRISTMAS_ISLAND, FCC17_WORLD, 0, CX, 40, 160, 0, 0),
 	CE(COLOMBIA, FCC17_WORLD, 0, CO, 40, 160, 0, 0),
 	CE(CONGO, ETSI12_WORLD, 0, CG, 40, 160, 0, 0),
 	CE(CONGO_DEMOCRATIC_REPUBLIC, ETSI13_WORLD, 0, CD, 40, 160, 0, 0),
 	CE(COOK_ISLANDS, FCC17_WORLD, 0, CK, 40, 160, 0, 0),
-	CE(COSTA_RICA, FCC17_WORLD, 0, CR, 40, 160, 0, 0),
+	CE(COSTA_RICA, FCC17_WORLD, APL4_6G_11, CR, 40, 160, 320, 0),
 	CE(COTE_DIVOIRE, FCC17_WORLD, 0, CI, 40, 160, 0, 0),
 	CE(CROATIA, ETSI1_WORLD, 0, HR, 40, 160, 0, 0),
 	CE(CURACAO, APL10_WORLD, 0, CW, 40, 160, 0, 0),
@@ -381,7 +386,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(ECUADOR, FCC17_FCCA, 0, EC, 40, 160, 0, 0),
 	CE(EGYPT, ETSI3_WORLD, 0, EG, 40, 160, 0, 0),
 	CE(EL_SALVADOR, FCC17_WORLD, 0, SV, 40, 160, 0, 0),
-	CE(ESTONIA, ETSI1_WORLD, 0, EE, 40, 160, 0, 0),
+	CE(ESTONIA, ETSI1_WORLD, ETSI1_6G_02, EE, 40, 160, 320, 0),
 	CE(ETHIOPIA, ETSI1_WORLD, 0, ET, 40, 160, 0, 0),
 	CE(FALKLAND_ISLANDS, ETSI1_WORLD, 0, FK, 40, 160, 0, 0),
 	CE(FAROE_ISLANDS, ETSI1_WORLD, 0, FO, 40, 160, 0, 0),
@@ -405,8 +410,8 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(HAITI, FCC17_FCCA, 0, HT, 40, 160, 0, 0),
 	CE(HEARD_ISLAND_AND_MCDONALD_ISLANDS, FCC6_WORLD, 0, HM, 40, 160, 0, 0),
 	CE(HOLY_SEE, ETSI1_WORLD, 0, VA, 40, 160, 0, 0),
-	CE(HONDURAS, FCC17_WORLD, 0, HN, 40, 160, 0, 0),
-	CE(HONG_KONG, FCC17_WORLD, 0, HK, 40, 160, 0, 0),
+	CE(HONDURAS, FCC17_WORLD, FCC1_6G_07, HN, 40, 160, 320, 0),
+	CE(HONG_KONG, APL20_WORLD, 0, HK, 40, 160, 0, 0),
 	CE(HUNGARY, ETSI1_WORLD, 0, HU, 40, 160, 0, 0),
 	CE(ICELAND, ETSI1_WORLD, ETSI1_6G_02, IS, 40, 160, 320, 0),
 	CE(INDIA, APL19_ETSIC, 0, IN, 40, 160, 0, 0),
@@ -442,25 +447,25 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(MAURITANIA, ETSI1_WORLD, 0, MR, 40, 160, 0, 0),
 	CE(MAURITIUS, ETSI1_WORLD, 0, MU, 40, 160, 0, 0),
 	CE(MAYOTTE, ETSI1_WORLD, 0, YT, 40, 160, 0, 0),
-	CE(MEXICO, FCC17_ETSIC, 0, MX, 40, 160, 0, 0),
+	CE(MEXICO, APL16_ETSIC, 0, MX, 40, 160, 0, 0),
 	CE(MICRONESIA, FCC17_FCCA, 0, FM, 40, 160, 0, 0),
 	CE(MOLDOVA, ETSI1_WORLD, 0, MD, 40, 160, 0, 0),
 	CE(MONACO, ETSI1_WORLD, 0, MC, 40, 160, 0, 0),
 	CE(MONGOLIA, FCC17_WORLD, 0, MN, 40, 160, 0, 0),
 	CE(MONTENEGRO, ETSI1_WORLD, 0, ME, 40, 160, 0, 0),
 	CE(MONTSERRAT, ETSI1_WORLD, 0, MS, 40, 160, 0, 0),
-	CE(MOROCCO, ETSI14_WORLD, 0, MA, 40, 160, 0, 0),
+	CE(MOROCCO, ETSI13_WORLD, 0, MA, 40, 160, 0, 0),
 	CE(MYANMAR, APL1_WORLD, 0, MM, 40, 160, 0, 0),
 	CE(NAMIBIA, APL20_WORLD, 0, NA, 40, 160, 0, 0),
 	CE(NEPAL, APL23_WORLD, 0, NP, 40, 160, 0, 0),
 	CE(NETHERLANDS, ETSI1_WORLD, 0, NL, 40, 160, 0, 0),
 	CE(NETHERLANDS_ANTILLES, ETSI1_WORLD, 0, AN, 40, 160, 0, 0),
 	CE(NEW_CALEDONIA, ETSI1_WORLD, 0, NC, 40, 160, 0, 0),
-	CE(NEW_ZEALAND, FCC17_ETSIC, 0, NZ, 40, 160, 0, 0),
+	CE(NEW_ZEALAND, APL26_ETSIC, 0, NZ, 40, 160, 0, 0),
 	CE(NIGERIA, APL6_WORLD, 0, NG, 40, 160, 0, 0),
 	CE(NORTHERN_MARIANA_ISLANDS, FCC3_FCCA, FCC1_6G_01, MP, 40, 160, 320,
 	   0),
-	CE(NICARAGUA, FCC17_FCCA, 0, NI, 40, 160, 0, 0),
+	CE(NICARAGUA, APL27_FCCA, 0, NI, 40, 160, 0, 0),
 	CE(NIUE, ETSI1_WORLD, 0, NU, 40, 160, 0, 0),
 	CE(NORFOLK_ISLAND, FCC6_WORLD, 0, NF, 40, 160, 0, 0),
 	CE(NORWAY, ETSI1_WORLD, ETSI1_6G_02, NO, 40, 160, 320, 0),
@@ -471,7 +476,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(PAPUA_NEW_GUINEA, FCC17_WORLD, 0, PG, 40, 160, 0, 0),
 	CE(PARAGUAY, FCC17_WORLD, 0, PY, 40, 160, 0, 0),
 	CE(PERU, FCC17_WORLD, FCC1_6G_05, PE, 40, 160, 320, 0),
-	CE(PHILIPPINES, FCC17_WORLD, 0, PH, 40, 160, 0, 0),
+	CE(PHILIPPINES, ETSI9_WORLD, 0, PH, 40, 160, 0, 0),
 	CE(POLAND, ETSI1_WORLD, 0, PL, 40, 160, 0, 0),
 	CE(PORTUGAL, ETSI1_WORLD, 0, PT, 40, 160, 0, 0),
 	CE(PUERTO_RICO, FCC3_FCCA, FCC1_6G_01, PR, 40, 160, 320, 0),
@@ -495,7 +500,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(SAUDI_ARABIA, ETSI15_WORLD, 0, SA, 40, 160, 0, 0),
 	CE(SENEGAL, FCC13_WORLD, 0, SN, 40, 160, 0, 0),
 	CE(SERBIA, ETSI1_WORLD, 0, RS, 40, 160, 0, 0),
-	CE(SINGAPORE, FCC17_WORLD, 0, SG, 40, 160, 0, 0),
+	CE(SINGAPORE, APL20_WORLD, 0, SG, 40, 160, 0, 0),
 	CE(SINT_MAARTEN, ETSI1_WORLD, 0, SX, 40, 160, 0, 0),
 	CE(SLOVAKIA, ETSI1_WORLD, 0, SK, 40, 160, 0, 0),
 	CE(SLOVENIA, ETSI1_WORLD, 0, SI, 40, 160, 0, 0),
@@ -508,7 +513,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(SWITZERLAND, ETSI1_WORLD, 0, CH, 40, 160, 0, 0),
 	CE(TAIWAN, FCC17_FCCA, 0, TW, 40, 160, 0, 0),
 	CE(TANZANIA, ETSI15_WORLD, 0, TZ, 40, 160, 0, 0),
-	CE(THAILAND, FCC17_WORLD, 0, TH, 40, 160, 0, 0),
+	CE(THAILAND, APL20_WORLD, 0, TH, 40, 160, 0, 0),
 	CE(TOGO, ETSI1_WORLD, 0, TG, 40, 40, 0, 0),
 	CE(TRINIDAD_Y_TOBAGO, FCC17_WORLD, 0, TT, 40, 160, 0, 0),
 	CE(TUNISIA, ETSI3_WORLD, 0, TN, 40, 160, 0, 0),
@@ -525,7 +530,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(UZBEKISTAN, ETSI3_WORLD, 0, UZ, 40, 160, 0, 0),
 	CE(VANUATU, FCC17_WORLD, 0, VU, 40, 160, 0, 0),
 	CE(VENEZUELA, FCC2_ETSIC, 0, VE, 40, 160, 0, 0),
-	CE(VIET_NAM, FCC17_WORLD, 0, VN, 40, 80, 0, 0),
+	CE(VIET_NAM, APL20_WORLD, 0, VN, 40, 80, 0, 0),
 	CE(VIRGIN_ISLANDS, FCC3_FCCA, FCC1_6G_01, VI, 40, 160, 320, 0),
 	CE(VIRGIN_ISLANDS_BRITISH, ETSI1_WORLD, 0, VG, 40, 160, 0, 0),
 	CE(WALLIS_AND_FUTUNA, ETSI1_WORLD, 0, WF, 40, 160, 0, 0),
@@ -546,7 +551,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(ARGENTINA, APL17_ETSIC, 0, AR, 40, 160, 0, 0),
 	CE(ARMENIA, APL4_WORLD, 0, AM, 40, 160, 0, 0),
 	CE(ARUBA, ETSI1_WORLD, 0, AW, 40, 160, 0, 0),
-	CE(AUSTRALIA, FCC6_WORLD, 0, AU, 40, 160, 0, 0),
+	CE(AUSTRALIA, APL25_ETSIC, 0, AU, 40, 160, 0, 0),
 	CE(AUSTRIA, ETSI10_WORLD, 0, AT, 40, 160, 0, 0),
 	CE(AZERBAIJAN, ETSI8_WORLD, 0, AZ, 40, 160, 0, 0),
 	CE(BAHAMAS, FCC17_WORLD, 0, BS, 40, 160, 0, 0),
@@ -554,30 +559,30 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(BANGLADESH, APL1_WORLD, 0, BD, 40, 160, 0, 0),
 	CE(BARBADOS, FCC2_WORLD, 0, BB, 40, 160, 0, 0),
 	CE(BELARUS, ETSI1_WORLD, 0, BY, 40, 160, 0, 0),
-	CE(BELGIUM, ETSI10_WORLD, 0, BE, 40, 160, 0, 0),
+	CE(BELGIUM, ETSI10_WORLD, ETSI1_6G_02, BE, 40, 160, 320, 0),
 	CE(BELIZE, ETSI8_WORLD, 0, BZ, 40, 160, 0, 0),
 	CE(BERMUDA, FCC17_FCCA, 0, BM, 40, 160, 0, 0),
 	CE(BHUTAN, ETSI1_WORLD, 0, BT, 40, 160, 0, 0),
 	CE(BOLIVIA, FCC17_WORLD, 0, BO, 40, 160, 0, 0),
 	CE(BOSNIA_HERZ, ETSI13_WORLD, 0, BA, 40, 160, 0, 0),
-	CE(BRAZIL, FCC18_ETSIC, 0, BR, 40, 160, 0, 0),
+	CE(BRAZIL, FCC18_ETSIC, FCC1_6G_07, BR, 40, 160, 320, 0),
 	CE(BRUNEI_DARUSSALAM, FCC17_WORLD, 0, BN, 40, 160, 0, 0),
 	CE(BULGARIA, ETSI10_WORLD, 0, BG, 40, 160, 0, 0),
 	CE(BURKINA_FASO, FCC17_WORLD, 0, BF, 40, 160, 0, 0),
 	CE(CAMBODIA, ETSI1_WORLD, 0, KH, 40, 160, 0, 0),
 	CE(CAMEROON, ETSI1_WORLD, 0, CM, 40, 160, 0, 0),
-	CE(CANADA, FCC3_FCCA, 0, CA, 40, 160, 0, 0),
+	CE(CANADA, FCC3_FCCA, FCC2_6G_10, CA, 40, 160, 320, 0),
 	CE(CAYMAN_ISLANDS, FCC17_WORLD, 0, KY, 40, 160, 0, 0),
 	CE(CENTRAL_AFRICA_REPUBLIC, FCC17_WORLD, 0, CF, 40, 40, 0, 0),
 	CE(CHAD, ETSI1_WORLD, 0, TD, 40, 160, 0, 0),
-	CE(CHILE, FCC14_WORLD, FCC1_6G_05, CL, 40, 160, 320, 0),
+	CE(CHILE, FCC13_WORLD, APL5_6G_12, CL, 40, 160, 320, 0),
 	CE(CHINA, APL14_WORLD, 0, CN, 40, 160, 0, 0),
 	CE(CHRISTMAS_ISLAND, FCC17_WORLD, 0, CX, 40, 160, 0, 0),
 	CE(COLOMBIA, FCC17_WORLD, 0, CO, 40, 160, 0, 0),
 	CE(CONGO, ETSI12_WORLD, 0, CG, 40, 160, 0, 0),
 	CE(CONGO_DEMOCRATIC_REPUBLIC, ETSI13_WORLD, 0, CD, 40, 160, 0, 0),
 	CE(COOK_ISLANDS, FCC17_WORLD, 0, CK, 40, 160, 0, 0),
-	CE(COSTA_RICA, FCC17_WORLD, 0, CR, 40, 160, 0, 0),
+	CE(COSTA_RICA, FCC17_WORLD, APL4_6G_11, CR, 40, 160, 320, 0),
 	CE(COTE_DIVOIRE, FCC17_WORLD, 0, CI, 40, 160, 0, 0),
 	CE(CROATIA, ETSI10_WORLD, 0, HR, 40, 160, 0, 0),
 	CE(CURACAO, APL10_WORLD, 0, CW, 40, 160, 0, 0),
@@ -589,7 +594,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(ECUADOR, FCC17_FCCA, 0, EC, 40, 160, 0, 0),
 	CE(EGYPT, ETSI3_WORLD, 0, EG, 40, 160, 0, 0),
 	CE(EL_SALVADOR, FCC17_WORLD, 0, SV, 40, 160, 0, 0),
-	CE(ESTONIA, ETSI10_WORLD, 0, EE, 40, 160, 0, 0),
+	CE(ESTONIA, ETSI10_WORLD, ETSI1_6G_02, EE, 40, 160, 320, 0),
 	CE(ETHIOPIA, ETSI1_WORLD, 0, ET, 40, 160, 0, 0),
 	CE(FALKLAND_ISLANDS, ETSI10_WORLD, 0, FK, 40, 160, 0, 0),
 	CE(FAROE_ISLANDS, ETSI10_WORLD, 0, FO, 40, 160, 0, 0),
@@ -613,8 +618,8 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(HAITI, FCC17_FCCA, 0, HT, 40, 160, 0, 0),
 	CE(HEARD_ISLAND_AND_MCDONALD_ISLANDS, FCC6_WORLD, 0, HM, 40, 160, 0, 0),
 	CE(HOLY_SEE, ETSI10_WORLD, 0, VA, 40, 160, 0, 0),
-	CE(HONDURAS, FCC13_WORLD, 0, HN, 40, 160, 0, 0),
-	CE(HONG_KONG, FCC17_WORLD, 0, HK, 40, 160, 0, 0),
+	CE(HONDURAS, FCC13_WORLD, FCC1_6G_07, HN, 40, 160, 320, 0),
+	CE(HONG_KONG, APL20_WORLD, 0, HK, 40, 160, 0, 0),
 	CE(HUNGARY, ETSI10_WORLD, 0, HU, 40, 160, 0, 0),
 	CE(ICELAND, ETSI10_WORLD, ETSI1_6G_02, IS, 40, 160, 320, 0),
 	CE(INDIA, APL15_WORLD, 0, IN, 40, 160, 0, 0),
@@ -651,25 +656,25 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(MAURITANIA, ETSI1_WORLD, 0, MR, 40, 160, 0, 0),
 	CE(MAURITIUS, ETSI13_WORLD, 0, MU, 40, 160, 0, 0),
 	CE(MAYOTTE, ETSI1_WORLD, 0, YT, 40, 160, 0, 0),
-	CE(MEXICO, FCC17_ETSIC, 0, MX, 40, 160, 0, 0),
+	CE(MEXICO, APL16_ETSIC, 0, MX, 40, 160, 0, 0),
 	CE(MICRONESIA, FCC17_FCCA, 0, FM, 40, 160, 0, 0),
 	CE(MOLDOVA, ETSI13_WORLD, 0, MD, 40, 160, 0, 0),
 	CE(MONACO, ETSI10_WORLD, 0, MC, 40, 160, 0, 0),
 	CE(MONGOLIA, FCC17_WORLD, 0, MN, 40, 160, 0, 0),
 	CE(MONTENEGRO, ETSI10_WORLD, 0, ME, 40, 160, 0, 0),
 	CE(MONTSERRAT, ETSI10_WORLD, 0, MS, 40, 160, 0, 0),
-	CE(MOROCCO, ETSI14_WORLD, 0, MA, 40, 160, 0, 0),
+	CE(MOROCCO, ETSI13_WORLD, 0, MA, 40, 160, 0, 0),
 	CE(MYANMAR, APL1_WORLD, 0, MM, 40, 160, 0, 0),
 	CE(NAMIBIA, APL20_WORLD, 0, NA, 40, 160, 0, 0),
 	CE(NEPAL, APL23_WORLD, 0, NP, 40, 160, 0, 0),
 	CE(NETHERLANDS, ETSI10_WORLD, 0, NL, 40, 160, 0, 0),
 	CE(NETHERLANDS_ANTILLES, ETSI10_WORLD, 0, AN, 40, 160, 0, 0),
 	CE(NEW_CALEDONIA, ETSI10_WORLD, 0, NC, 40, 160, 0, 0),
-	CE(NEW_ZEALAND, FCC17_ETSIC, 0, NZ, 40, 160, 0, 0),
+	CE(NEW_ZEALAND, APL26_ETSIC, 0, NZ, 40, 160, 0, 0),
 	CE(NIGERIA, APL6_WORLD, 0, NG, 40, 160, 0, 0),
 	CE(NORTHERN_MARIANA_ISLANDS, FCC10_FCCA, FCC1_6G_01, MP, 40, 160, 320,
 	   0),
-	CE(NICARAGUA, FCC17_FCCA, 0, NI, 40, 160, 0, 0),
+	CE(NICARAGUA, APL27_FCCA, 0, NI, 40, 160, 0, 0),
 	CE(NIUE, ETSI10_WORLD, 0, NU, 40, 160, 0, 0),
 	CE(NORFOLK_ISLAND, FCC6_WORLD, 0, NF, 40, 160, 0, 0),
 	CE(NORWAY, ETSI10_WORLD, ETSI1_6G_02, NO, 40, 160, 320, 0),
@@ -680,7 +685,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(PAPUA_NEW_GUINEA, FCC17_WORLD, 0, PG, 40, 160, 0, 0),
 	CE(PARAGUAY, FCC17_WORLD, 0, PY, 40, 160, 0, 0),
 	CE(PERU, FCC17_WORLD, FCC1_6G_05, PE, 40, 160, 320, 0),
-	CE(PHILIPPINES, FCC17_WORLD, 0, PH, 40, 160, 0, 0),
+	CE(PHILIPPINES, ETSI9_WORLD, 0, PH, 40, 160, 0, 0),
 	CE(POLAND, ETSI10_WORLD, 0, PL, 40, 160, 0, 0),
 	CE(PORTUGAL, ETSI10_WORLD, 0, PT, 40, 160, 0, 0),
 	CE(PUERTO_RICO, FCC10_FCCA, FCC1_6G_01, PR, 40, 160, 320, 0),
@@ -704,7 +709,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(SAUDI_ARABIA, ETSI15_WORLD, 0, SA, 40, 160, 0, 0),
 	CE(SENEGAL, FCC13_WORLD, 0, SN, 40, 160, 0, 0),
 	CE(SERBIA, ETSI13_WORLD, 0, RS, 40, 160, 0, 0),
-	CE(SINGAPORE, FCC17_WORLD, 0, SG, 40, 160, 0, 0),
+	CE(SINGAPORE, APL20_WORLD, 0, SG, 40, 160, 0, 0),
 	CE(SINT_MAARTEN, ETSI10_WORLD, 0, SX, 40, 160, 0, 0),
 	CE(SLOVAKIA, ETSI10_WORLD, 0, SK, 40, 160, 0, 0),
 	CE(SLOVENIA, ETSI10_WORLD, 0, SI, 40, 160, 0, 0),
@@ -717,7 +722,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(SWITZERLAND, ETSI10_WORLD, 0, CH, 40, 160, 0, 0),
 	CE(TAIWAN, FCC17_FCCA, 0, TW, 40, 160, 0, 0),
 	CE(TANZANIA, APL1_WORLD, 0, TZ, 40, 160, 0, 0),
-	CE(THAILAND, FCC17_WORLD, 0, TH, 40, 160, 0, 0),
+	CE(THAILAND, APL20_WORLD, 0, TH, 40, 160, 0, 0),
 	CE(TOGO, ETSI1_WORLD, 0, TG, 40, 40, 0, 0),
 	CE(TRINIDAD_Y_TOBAGO, FCC17_WORLD, 0, TT, 40, 160, 0, 0),
 	CE(TUNISIA, ETSI3_WORLD, 0, TN, 40, 160, 0, 0),
@@ -734,7 +739,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(UZBEKISTAN, ETSI3_WORLD, 0, UZ, 40, 160, 0, 0),
 	CE(VANUATU, FCC17_WORLD, 0, VU, 40, 160, 0, 0),
 	CE(VENEZUELA, FCC2_ETSIC, 0, VE, 40, 160, 0, 0),
-	CE(VIET_NAM, FCC17_WORLD, 0, VN, 40, 80, 0, 0),
+	CE(VIET_NAM, APL20_WORLD, 0, VN, 40, 160, 0, 0),
 	CE(VIRGIN_ISLANDS, FCC10_FCCA, FCC1_6G_01, VI, 40, 160, 320, 0),
 	CE(VIRGIN_ISLANDS_BRITISH, ETSI10_WORLD, 0, VG, 40, 160, 0, 0),
 	CE(WALLIS_AND_FUTUNA, ETSI1_WORLD, 0, WF, 40, 160, 0, 0),
@@ -754,7 +759,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(ARGENTINA, APL17_ETSIC, 0, AR, 40, 160, 0, 0),
 	CE(ARMENIA, APL4_WORLD, 0, AM, 40, 160, 0, 0),
 	CE(ARUBA, ETSI1_WORLD, 0, AW, 40, 160, 0, 0),
-	CE(AUSTRALIA, FCC6_WORLD, 0, AU, 40, 160, 0, 0),
+	CE(AUSTRALIA, APL25_ETSIC, 0, AU, 40, 160, 0, 0),
 	CE(AUSTRIA, ETSI13_WORLD, 0, AT, 40, 160, 0, 0),
 	CE(AZERBAIJAN, ETSI8_WORLD, 0, AZ, 40, 160, 0, 0),
 	CE(BAHAMAS, FCC17_WORLD, 0, BS, 40, 160, 0, 0),
@@ -762,30 +767,30 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(BANGLADESH, APL1_WORLD, 0, BD, 40, 160, 0, 0),
 	CE(BARBADOS, FCC2_WORLD, 0, BB, 40, 160, 0, 0),
 	CE(BELARUS, ETSI1_WORLD, 0, BY, 40, 160, 0, 0),
-	CE(BELGIUM, ETSI13_WORLD, 0, BE, 40, 160, 0, 0),
+	CE(BELGIUM, ETSI13_WORLD, ETSI1_6G_02, BE, 40, 160, 320, 0),
 	CE(BELIZE, ETSI8_WORLD, 0, BZ, 40, 160, 0, 0),
 	CE(BERMUDA, FCC17_FCCA, 0, BM, 40, 160, 0, 0),
 	CE(BHUTAN, ETSI1_WORLD, 0, BT, 40, 160, 0, 0),
 	CE(BOLIVIA, FCC17_WORLD, 0, BO, 40, 160, 0, 0),
 	CE(BOSNIA_HERZ, ETSI13_WORLD, 0, BA, 40, 160, 0, 0),
-	CE(BRAZIL, FCC18_ETSIC, 0, BR, 40, 160, 0, 0),
+	CE(BRAZIL, FCC18_ETSIC, FCC1_6G_07, BR, 40, 160, 320, 0),
 	CE(BRUNEI_DARUSSALAM, FCC17_WORLD, 0, BN, 40, 160, 0, 0),
 	CE(BULGARIA, ETSI13_WORLD, 0, BG, 40, 160, 0, 0),
 	CE(BURKINA_FASO, FCC17_WORLD, 0, BF, 40, 160, 0, 0),
 	CE(CAMBODIA, ETSI1_WORLD, 0, KH, 40, 160, 0, 0),
 	CE(CAMEROON, ETSI1_WORLD, 0, CM, 40, 160, 0, 0),
-	CE(CANADA, FCC6_FCCA, 0, CA, 40, 160, 0, 0),
+	CE(CANADA, FCC6_FCCA, FCC2_6G_10, CA, 40, 160, 320, 0),
 	CE(CAYMAN_ISLANDS, FCC17_WORLD, 0, KY, 40, 160, 0, 0),
 	CE(CENTRAL_AFRICA_REPUBLIC, FCC17_WORLD, 0, CF, 40, 40, 0, 0),
 	CE(CHAD, ETSI1_WORLD, 0, TD, 40, 160, 0, 0),
-	CE(CHILE, FCC14_WORLD, FCC1_6G_05, CL, 40, 160, 320, 0),
+	CE(CHILE, FCC13_WORLD, APL5_6G_12, CL, 40, 160, 320, 0),
 	CE(CHINA, APL14_WORLD, 0, CN, 40, 160, 0, 0),
 	CE(CHRISTMAS_ISLAND, FCC17_WORLD, 0, CX, 40, 160, 0, 0),
 	CE(COLOMBIA, FCC17_WORLD, 0, CO, 40, 160, 0, 0),
 	CE(CONGO, ETSI12_WORLD, 0, CG, 40, 160, 0, 0),
 	CE(CONGO_DEMOCRATIC_REPUBLIC, ETSI13_WORLD, 0, CD, 40, 160, 0, 0),
 	CE(COOK_ISLANDS, FCC17_WORLD, 0, CK, 40, 160, 0, 0),
-	CE(COSTA_RICA, FCC17_WORLD, 0, CR, 40, 160, 0, 0),
+	CE(COSTA_RICA, FCC17_WORLD, APL4_6G_11, CR, 40, 160, 320, 0),
 	CE(COTE_DIVOIRE, FCC17_WORLD, 0, CI, 40, 160, 0, 0),
 	CE(CROATIA, ETSI13_WORLD, 0, HR, 40, 160, 0, 0),
 	CE(CURACAO, APL10_WORLD, 0, CW, 40, 160, 0, 0),
@@ -797,7 +802,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(ECUADOR, FCC17_FCCA, 0, EC, 40, 160, 0, 0),
 	CE(EGYPT, ETSI3_WORLD, 0, EG, 40, 160, 0, 0),
 	CE(EL_SALVADOR, FCC17_WORLD, 0, SV, 40, 160, 0, 0),
-	CE(ESTONIA, ETSI13_WORLD, 0, EE, 40, 160, 0, 0),
+	CE(ESTONIA, ETSI13_WORLD, ETSI1_6G_02, EE, 40, 160, 320, 0),
 	CE(ETHIOPIA, ETSI1_WORLD, 0, ET, 40, 160, 0, 0),
 	CE(FALKLAND_ISLANDS, ETSI13_WORLD, 0, FK, 40, 160, 0, 0),
 	CE(FAROE_ISLANDS, ETSI13_WORLD, 0, FO, 40, 160, 0, 0),
@@ -821,8 +826,8 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(HAITI, FCC17_FCCA, 0, HT, 40, 160, 0, 0),
 	CE(HEARD_ISLAND_AND_MCDONALD_ISLANDS, FCC6_WORLD, 0, HM, 40, 160, 0, 0),
 	CE(HOLY_SEE, ETSI13_WORLD, 0, VA, 40, 160, 0, 0),
-	CE(HONDURAS, FCC13_WORLD, 0, HN, 40, 160, 0, 0),
-	CE(HONG_KONG, FCC17_WORLD, 0, HK, 40, 160, 0, 0),
+	CE(HONDURAS, FCC13_WORLD, FCC1_6G_07, HN, 40, 160, 320, 0),
+	CE(HONG_KONG, APL20_WORLD, 0, HK, 40, 160, 0, 0),
 	CE(HUNGARY, ETSI13_WORLD, 0, HU, 40, 160, 0, 0),
 	CE(ICELAND, ETSI13_WORLD, ETSI1_6G_02, IS, 40, 160, 320, 0),
 	CE(INDIA, APL19_ETSIC, 0, IN, 40, 160, 0, 0),
@@ -859,25 +864,25 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(MAURITANIA, ETSI1_WORLD, 0, MR, 40, 160, 0, 0),
 	CE(MAURITIUS, ETSI13_WORLD, 0, MU, 40, 160, 0, 0),
 	CE(MAYOTTE, ETSI1_WORLD, 0, YT, 40, 160, 0, 0),
-	CE(MEXICO, FCC17_ETSIC, 0, MX, 40, 160, 0, 0),
+	CE(MEXICO, APL16_ETSIC, 0, MX, 40, 160, 0, 0),
 	CE(MICRONESIA, FCC17_FCCA, 0, FM, 40, 160, 0, 0),
 	CE(MOLDOVA, ETSI13_WORLD, 0, MD, 40, 160, 0, 0),
 	CE(MONACO, ETSI13_WORLD, 0, MC, 40, 160, 0, 0),
 	CE(MONGOLIA, FCC17_WORLD, 0, MN, 40, 160, 0, 0),
 	CE(MONTENEGRO, ETSI13_WORLD, 0, ME, 40, 160, 0, 0),
 	CE(MONTSERRAT, ETSI13_WORLD, 0, MS, 40, 160, 0, 0),
-	CE(MOROCCO, ETSI14_WORLD, 0, MA, 40, 160, 0, 0),
+	CE(MOROCCO, ETSI13_WORLD, 0, MA, 40, 160, 0, 0),
 	CE(MYANMAR, APL1_WORLD, 0, MM, 40, 160, 0, 0),
 	CE(NAMIBIA, APL20_WORLD, 0, NA, 40, 160, 0, 0),
 	CE(NEPAL, APL23_WORLD, 0, NP, 40, 160, 0, 0),
 	CE(NETHERLANDS, ETSI13_WORLD, 0, NL, 40, 160, 0, 0),
 	CE(NETHERLANDS_ANTILLES, ETSI13_WORLD, 0, AN, 40, 160, 0, 0),
 	CE(NEW_CALEDONIA, ETSI13_WORLD, 0, NC, 40, 160, 0, 0),
-	CE(NEW_ZEALAND, FCC17_ETSIC, 0, NZ, 40, 160, 0, 0),
+	CE(NEW_ZEALAND, APL26_ETSIC, 0, NZ, 40, 160, 0, 0),
 	CE(NIGERIA, APL6_WORLD, 0, NG, 40, 160, 0, 0),
 	CE(NORTHERN_MARIANA_ISLANDS, FCC3_FCCA, FCC1_6G_01, MP, 40, 160, 320,
 	   0),
-	CE(NICARAGUA, FCC17_FCCA, 0, NI, 40, 160, 0, 0),
+	CE(NICARAGUA, APL27_FCCA, 0, NI, 40, 160, 0, 0),
 	CE(NIUE, ETSI13_WORLD, 0, NU, 40, 160, 0, 0),
 	CE(NORFOLK_ISLAND, FCC6_WORLD, 0, NF, 40, 160, 0, 0),
 	CE(NORWAY, ETSI13_WORLD, ETSI1_6G_02, NO, 40, 160, 320, 0),
@@ -888,7 +893,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(PAPUA_NEW_GUINEA, FCC17_WORLD, 0, PG, 40, 160, 0, 0),
 	CE(PARAGUAY, FCC17_WORLD, 0, PY, 40, 160, 0, 0),
 	CE(PERU, FCC17_WORLD, FCC1_6G_05, PE, 40, 160, 320, 0),
-	CE(PHILIPPINES, FCC17_WORLD, 0, PH, 40, 160, 0, 0),
+	CE(PHILIPPINES, ETSI9_WORLD, 0, PH, 40, 160, 0, 0),
 	CE(POLAND, ETSI13_WORLD, 0, PL, 40, 160, 0, 0),
 	CE(PORTUGAL, ETSI13_WORLD, 0, PT, 40, 160, 0, 0),
 	CE(PUERTO_RICO, FCC3_FCCA, FCC1_6G_01, PR, 40, 160, 320, 0),
@@ -912,7 +917,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(SAUDI_ARABIA, ETSI15_WORLD, 0, SA, 40, 160, 0, 0),
 	CE(SENEGAL, FCC13_WORLD, 0, SN, 40, 160, 0, 0),
 	CE(SERBIA, ETSI13_WORLD, 0, RS, 40, 160, 0, 0),
-	CE(SINGAPORE, FCC17_WORLD, 0, SG, 40, 160, 0, 0),
+	CE(SINGAPORE, APL20_WORLD, 0, SG, 40, 160, 0, 0),
 	CE(SINT_MAARTEN, ETSI13_WORLD, 0, SX, 40, 160, 0, 0),
 	CE(SLOVAKIA, ETSI13_WORLD, 0, SK, 40, 160, 0, 0),
 	CE(SLOVENIA, ETSI13_WORLD, 0, SI, 40, 160, 0, 0),
@@ -925,7 +930,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(SWITZERLAND, ETSI13_WORLD, 0, CH, 40, 160, 0, 0),
 	CE(TAIWAN, FCC17_FCCA, 0, TW, 40, 160, 0, 0),
 	CE(TANZANIA, ETSI15_WORLD, 0, TZ, 40, 160, 0, 0),
-	CE(THAILAND, FCC17_WORLD, 0, TH, 40, 160, 0, 0),
+	CE(THAILAND, APL20_WORLD, 0, TH, 40, 160, 0, 0),
 	CE(TOGO, ETSI1_WORLD, 0, TG, 40, 40, 0, 0),
 	CE(TRINIDAD_Y_TOBAGO, FCC17_WORLD, 0, TT, 40, 160, 0, 0),
 	CE(TUNISIA, ETSI3_WORLD, 0, TN, 40, 160, 0, 0),
@@ -942,7 +947,7 @@ const struct country_code_to_reg_domain g_all_countries[] = {
 	CE(UZBEKISTAN, ETSI3_WORLD, 0, UZ, 40, 160, 0, 0),
 	CE(VANUATU, FCC17_WORLD, 0, VU, 40, 160, 0, 0),
 	CE(VENEZUELA, FCC2_ETSIC, 0, VE, 40, 160, 0, 0),
-	CE(VIET_NAM, FCC17_WORLD, 0, VN, 40, 80, 0, 0),
+	CE(VIET_NAM, APL20_WORLD, 0, VN, 40, 80, 0, 0),
 	CE(VIRGIN_ISLANDS, FCC3_FCCA, FCC1_6G_01, VI, 40, 160, 320, 0),
 	CE(VIRGIN_ISLANDS_BRITISH, ETSI13_WORLD, 0, VG, 40, 160, 0, 0),
 	CE(WALLIS_AND_FUTUNA, ETSI1_WORLD, 0, WF, 40, 160, 0, 0),
@@ -961,6 +966,7 @@ enum reg_domains_2g {
 	ETSIC,
 	ETSID,
 	KRRA,
+	CHNA,
 	WORLD_2G_1,
 	WORLD_2G_2,
 	WORLD_2G_3,
@@ -1016,6 +1022,9 @@ enum reg_domains_5g {
 	APL20,
 	APL23,
 	APL24,
+	APL25,
+	APL26,
+	APL27,
 	MKK3,
 	MKK4,
 	MKK5,
@@ -1090,6 +1099,7 @@ const struct reg_domain_pair g_reg_dmn_pairs[] = {
 	{APL12_WORLD, APL12, WORLD},
 	{APL13_WORLD, APL13, WORLD},
 	{APL14_WORLD, APL14, WORLD},
+	{APL14_CHNA, APL14, CHNA},
 	{APL15_WORLD, APL15, WORLD},
 	{APL16_WORLD, APL16, WORLD},
 	{APL16_ETSIC, APL16, ETSIC},
@@ -1099,6 +1109,9 @@ const struct reg_domain_pair g_reg_dmn_pairs[] = {
 	{APL20_WORLD, APL20, WORLD},
 	{APL23_WORLD, APL23, WORLD},
 	{APL24_ETSIC, APL24, ETSIC},
+	{APL25_ETSIC, APL25, ETSIC},
+	{APL26_ETSIC, APL26, ETSIC},
+	{APL27_FCCA, APL27, FCCA},
 
 	{MKK3_MKKC, MKK3, MKKC},
 	{MKK5_MKKA, MKK5, MKKA},
@@ -1165,6 +1178,7 @@ const struct regdomain regdomains_2g[] = {
 	[ETSIC] = {CTL_ETSI, DFS_UNINIT_REGION, 0, 40, 0, 1, {CHAN_1_13_2} },
 	[ETSID] = {CTL_ETSI, DFS_UNINIT_REGION, 0, 20, 0, 1, {CHAN_1_13_5} },
 	[KRRA]  = {CTL_KOR, DFS_UNINIT_REGION, 0, 40, 0, 1,  {CHAN_1_13_4} },
+	[CHNA]  = {CTL_CHN, DFS_UNINIT_REGION, 0, 40, 0, 1,  {CHAN_1_13_1} },
 	[WORLD_2G_1] = {CTL_NONE, DFS_UNINIT_REGION, 0, 40, 0, 1, {CHAN_1_11_2}
 								   },
 	[WORLD_2G_2] = {CTL_NONE, DFS_UNINIT_REGION, 0, 40, 0, 2, {CHAN_1_11_2,
@@ -1193,8 +1207,10 @@ enum reg_rules_5g {
 	CHAN_5170_5250_10,
 	CHAN_5170_5250_11,
 	CHAN_5170_5250_12,
+	CHAN_5170_5250_13,
 	CHAN_5170_5330_1,
 	CHAN_5170_5330_2,
+	CHAN_5170_5330_3,
 	CHAN_5250_5330_1,
 	CHAN_5250_5330_2,
 	CHAN_5250_5330_3,
@@ -1219,6 +1235,7 @@ enum reg_rules_5g {
 	CHAN_5490_5730_6,
 	CHAN_5490_5730_7,
 	CHAN_5490_5730_8,
+	CHAN_5490_5730_9,
 	CHAN_5490_5710_1,
 	CHAN_5490_5710_2,
 	CHAN_5490_5710_3,
@@ -1290,8 +1307,10 @@ const struct regulatory_rule reg_rules_5g[] = {
 	[CHAN_5170_5250_10] = {5170, 5250, 20, 20, REGULATORY_CHAN_INDOOR_ONLY},
 	[CHAN_5170_5250_11] = {5170, 5250, 80, 16, 0},
 	[CHAN_5170_5250_12] = {5170, 5250, 80, 24, REGULATORY_CHAN_INDOOR_ONLY},
+	[CHAN_5170_5250_13] = {5170, 5250, 80, 17, REGULATORY_CHAN_INDOOR_ONLY},
 	[CHAN_5170_5330_1] = {5170, 5330, 160, 20, REGULATORY_CHAN_NO_IR},
 	[CHAN_5170_5330_2] = {5170, 5330, 160, 24, 0},
+	[CHAN_5170_5330_3] = {5170, 5330, 160, 23, REGULATORY_CHAN_INDOOR_ONLY},
 	[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, 18, REGULATORY_CHAN_RADAR},
@@ -1320,6 +1339,7 @@ const struct regulatory_rule reg_rules_5g[] = {
 	[CHAN_5490_5730_7] = {5490, 5730, 160, 20, REGULATORY_CHAN_RADAR},
 	[CHAN_5490_5730_8] = {5490, 5730, 160, 30, REGULATORY_CHAN_RADAR |
 						   REGULATORY_CHAN_INDOOR_ONLY},
+	[CHAN_5490_5730_9] = {5490, 5730, 80, 30, 0},
 	[CHAN_5490_5710_1] = {5490, 5710, 160, 30, REGULATORY_CHAN_RADAR},
 	[CHAN_5490_5710_2] = {5490, 5710, 160, 20, REGULATORY_CHAN_RADAR},
 	[CHAN_5490_5710_3] = {5490, 5710, 160, 27, REGULATORY_CHAN_RADAR},
@@ -1329,7 +1349,7 @@ const struct regulatory_rule reg_rules_5g[] = {
 	[CHAN_5490_5710_7] = {5490, 5710, 160, 23, REGULATORY_CHAN_RADAR},
 	[CHAN_5490_5710_8] = {5490, 5710, 20, 27, REGULATORY_CHAN_RADAR},
 	[CHAN_5490_5590_1] = {5490, 5590, 80, 24, REGULATORY_CHAN_RADAR},
-	[CHAN_5490_5590_2] = {5490, 5590, 80, 30, 0},
+	[CHAN_5490_5590_2] = {5490, 5590, 80, 24, 0},
 	[CHAN_5490_5590_3] = {5490, 5590, 80, 36, 0},
 	[CHAN_5490_5570_1] = {5490, 5570, 80, 30, REGULATORY_CHAN_RADAR},
 	[CHAN_5490_5650_2] = {5490, 5650, 160, 24, REGULATORY_CHAN_RADAR},
@@ -1337,7 +1357,7 @@ const struct regulatory_rule reg_rules_5g[] = {
 	[CHAN_5490_5670_2] = {5490, 5670, 160, 23, REGULATORY_CHAN_RADAR},
 	[CHAN_5490_5630_1] = {5490, 5630, 80, 30, REGULATORY_CHAN_RADAR},
 	[CHAN_5650_5730_1] = {5650, 5730, 80, 24, REGULATORY_CHAN_RADAR},
-	[CHAN_5650_5730_2] = {5650, 5730, 80, 30, 0},
+	[CHAN_5650_5730_2] = {5650, 5730, 80, 24, 0},
 	[CHAN_5650_5730_3] = {5650, 5730, 80, 36, 0},
 	[CHAN_5735_5835_1] = {5735, 5835, 80, 23, 0},
 	[CHAN_5735_5835_2] = {5735, 5835, 80, 30, 0},
@@ -1421,8 +1441,7 @@ const struct regdomain regdomains_5g[] = {
 							   CHAN_5490_5650_2,
 							   CHAN_5735_5835_6} },
 
-	[FCC13] = {CTL_FCC, DFS_UNINIT_REGION, 2, 160, 0, 4, {CHAN_5170_5330_2,
-							      CHAN_5250_5330_10,
+	[FCC13] = {CTL_FCC, DFS_UNINIT_REGION, 2, 160, 0, 3, {CHAN_5170_5330_2,
 							      CHAN_5490_5730_4,
 							      CHAN_5735_5835_2}
 							      },
@@ -1483,7 +1502,7 @@ const struct regdomain regdomains_5g[] = {
 							      CHAN_5735_5835_6}
 							      },
 
-	[ETSI10] = {CTL_ETSI, DFS_ETSI_REGION, 10, 160, 0, 4,
+	[ETSI10] = {CTL_ETSI, DFS_ETSI_REGION, 5, 160, 0, 4,
 							{CHAN_5170_5250_7,
 							 CHAN_5250_5330_14,
 							 CHAN_5490_5710_3,
@@ -1581,7 +1600,7 @@ const struct regdomain regdomains_5g[] = {
 							      },
 
 	[APL16] = {CTL_FCC, DFS_UNINIT_REGION, 2, 160, 0, 5, {CHAN_5170_5250_1,
-							      CHAN_5250_5330_6,
+							      CHAN_5250_5330_10,
 							      CHAN_5490_5590_2,
 							      CHAN_5650_5730_2,
 							      CHAN_5735_5835_2}
@@ -1614,6 +1633,20 @@ const struct regdomain regdomains_5g[] = {
 							    CHAN_5250_5330_12,
 							    CHAN_5735_5815_3} },
 
+	[APL25] = {CTL_ETSI, DFS_ETSI_REGION, 2, 160, 0, 3, {CHAN_5170_5330_3,
+							     CHAN_5490_5730_9,
+							     CHAN_5735_5835_7}
+							    },
+
+	[APL26] = {CTL_ETSI, DFS_ETSI_REGION, 2, 160, 0, 3, {CHAN_5170_5330_3,
+							     CHAN_5490_5730_3,
+							     CHAN_5735_5835_7}
+							    },
+	[APL27] = {CTL_FCC, DFS_ETSI_REGION, 2, 160, 0, 4, {CHAN_5170_5250_13,
+							    CHAN_5250_5330_10,
+							    CHAN_5490_5730_4,
+							    CHAN_5735_5835_2} },
+
 	[MKK3] = {CTL_MKK, DFS_UNINIT_REGION, 2, 80, 0, 1, {CHAN_5170_5250_3} },
 
 	[MKK5] = {CTL_MKK, DFS_MKK_REGION, 2, 160, 0, 3, {CHAN_5170_5250_8,
@@ -1672,6 +1705,8 @@ enum reg_subdomains_6g {
 	FCC1_AP_SP_6G = 0x04,
 	ETSI1_AP_LPI_6G = 0x10,
 	ETSI1_CLI_LPI_6G = ETSI1_AP_LPI_6G,
+	FCC2_AP_SP_6G = 0x05,
+	FCC2_CLI_SP_6G = FCC2_AP_SP_6G,
 	ETSI1_AP_VLP_6G = 0x11,
 	ETSI1_CLI_VLP_6G = ETSI1_AP_VLP_6G,
 	ETSI2_AP_LPI_6G = 0x12,
@@ -1690,6 +1725,12 @@ enum reg_subdomains_6g {
 	APL3_CLI_VLP_6G = APL3_AP_VLP_6G,
 	APL3_AP_LPI_6G = 0x25,
 	APL3_CLI_LPI_6G = APL3_AP_LPI_6G,
+	APL4_AP_LPI_6G = 0x26,
+	APL4_CLI_LPI_6G = APL4_AP_LPI_6G,
+	APL4_AP_VLP_6G = 0x27,
+	APL4_CLI_VLP_6G = APL4_AP_VLP_6G,
+	APL5_AP_VLP_6G = 0x28,
+	APL5_CLI_VLP_6G = APL5_AP_VLP_6G,
 };
 
 /**
@@ -1701,31 +1742,49 @@ static const struct sixghz_super_to_subdomains g_6g_reg_dmn_9_tuples[] = {
 	 {FCC1_CLI_SP_6G, FCC1_CLI_SP_6G},
 	 {0, 0} },
 	{ETSI1_6G_02, ETSI1_AP_LPI_6G, 0, ETSI1_AP_VLP_6G,
-	 {ETSI1_CLI_LPI_6G, ETSI1_CLI_LPI_6G}, {0, 0},
+	 {ETSI1_CLI_LPI_6G, ETSI1_CLI_LPI_6G},
+	 {0, 0},
 	 {ETSI1_CLI_VLP_6G, ETSI1_CLI_VLP_6G} },
 	{ETSI2_6G_03, ETSI2_AP_LPI_6G, 0, ETSI2_AP_VLP_6G,
-	 {ETSI2_CLI_LPI_6G, ETSI2_CLI_LPI_6G}, {0, 0},
+	 {ETSI2_CLI_LPI_6G, ETSI2_CLI_LPI_6G},
+	 {0, 0},
 	 {ETSI2_CLI_VLP_6G, ETSI2_CLI_VLP_6G} },
 	{APL1_6G_04, APL1_AP_LPI_6G, 0, APL1_AP_VLP_6G,
-	 {APL1_CLI_LPI_6G, APL1_CLI_LPI_6G}, {0, 0},
+	 {APL1_CLI_LPI_6G, APL1_CLI_LPI_6G},
+	 {0, 0},
 	 {APL1_CLI_VLP_6G, APL1_CLI_VLP_6G} },
 	{FCC1_6G_05, FCC1_AP_LPI_6G, 0, 0,
-	 {FCC1_CLI_LPI_DEFAULT_6G, FCC1_CLI_LPI_SUBORDINATE}, {0, 0},
+	 {FCC1_CLI_LPI_DEFAULT_6G, FCC1_CLI_LPI_SUBORDINATE},
+	 {0, 0},
 	 {0, 0} },
 	{APL2_6G_06, APL2_AP_LPI_6G, 0, APL2_AP_VLP_6G,
-	 {APL2_CLI_LPI_6G, APL2_CLI_LPI_6G}, {0, 0},
+	 {APL2_CLI_LPI_6G, APL2_CLI_LPI_6G},
+	 {0, 0},
 	 {APL2_CLI_VLP_6G, APL2_CLI_VLP_6G} },
 	{FCC1_6G_07, FCC1_AP_LPI_6G, 0, APL3_AP_VLP_6G,
 	 {FCC1_CLI_LPI_DEFAULT_6G, 0},
 	 {0, 0},
 	 {APL3_CLI_VLP_6G, APL3_CLI_VLP_6G} },
 	{APL3_6G_08, APL3_AP_LPI_6G, 0, 0,
-	 {APL3_CLI_LPI_6G, APL3_CLI_LPI_6G}, {0, 0},
+	 {APL3_CLI_LPI_6G, APL3_CLI_LPI_6G},
+	 {0, 0},
 	 {0, 0} },
 	{FCC1_6G_09, FCC1_AP_LPI_6G, FCC1_AP_SP_6G, 0,
 	 {FCC1_CLI_LPI_DEFAULT_6G, 0},
 	 {FCC1_CLI_SP_6G, FCC1_CLI_SP_6G},
 	 {0, 0} },
+	{FCC2_6G_10, FCC1_AP_LPI_6G, FCC2_AP_SP_6G, 0,
+	 {FCC1_CLI_LPI_DEFAULT_6G, 0},
+	 {FCC2_CLI_SP_6G, FCC2_CLI_SP_6G},
+	 {0, 0} },
+	{APL4_6G_11, APL4_AP_LPI_6G, 0, APL4_AP_VLP_6G,
+	 {APL4_CLI_LPI_6G, APL4_CLI_LPI_6G},
+	 {0, 0},
+	 {APL4_CLI_VLP_6G, APL4_CLI_VLP_6G} },
+	{APL5_6G_12, FCC1_AP_LPI_6G, 0, APL5_AP_VLP_6G,
+	 {FCC1_CLI_LPI_DEFAULT_6G, 0},
+	 {0, 0},
+	 {APL5_CLI_VLP_6G, APL5_CLI_VLP_6G} },
 };
 
 /**
@@ -1735,6 +1794,12 @@ enum reg_rules_6g {
 	CHAN_5925_6425_1,
 	CHAN_5925_6425_2,
 	CHAN_5925_6425_3,
+	CHAN_5925_6425_4,
+	CHAN_5925_6425_5,
+	CHAN_5925_6425_7,
+	CHAN_5925_6425_8,
+	CHAN_5925_6425_9,
+	CHAN_5925_6425_10,
 	CHAN_5945_6425_1,
 	CHAN_5945_6425_2,
 	CHAN_5945_6425_3,
@@ -1745,11 +1810,16 @@ enum reg_rules_6g {
 	CHAN_5945_6425_8,
 	CHAN_5945_6425_9,
 	CHAN_5945_6425_10,
+	CHAN_5945_6425_11,
 	CHAN_6425_6525_1,
 	CHAN_6425_6525_2,
 	CHAN_6425_6525_3,
 	CHAN_6425_6525_4,
 	CHAN_6425_6525_5,
+	CHAN_6425_6525_6,
+	CHAN_6425_6525_7,
+	CHAN_6425_6525_8,
+	CHAN_6425_6525_9,
 	CHAN_6525_6875_1,
 	CHAN_6525_6875_2,
 	CHAN_6525_6875_3,
@@ -1757,11 +1827,18 @@ enum reg_rules_6g {
 	CHAN_6525_6875_5,
 	CHAN_6525_6875_6,
 	CHAN_6525_6875_7,
+	CHAN_6525_6875_8,
+	CHAN_6525_6875_9,
+	CHAN_6525_6875_10,
+	CHAN_6525_6875_11,
 	CHAN_6875_7125_1,
 	CHAN_6875_7125_2,
 	CHAN_6875_7125_3,
 	CHAN_6875_7125_4,
 	CHAN_6875_7125_5,
+	CHAN_6875_7125_6,
+	CHAN_6875_7125_7,
+	CHAN_6875_7125_8,
 };
 
 /**
@@ -1773,13 +1850,23 @@ static const struct regulatory_rule_ext reg_rules_6g[] = {
 	[CHAN_5925_6425_2] = {5925, 6425, 320, 17, -5, 0},
 	[CHAN_5925_6425_3] = {5925, 6425, 320, 24, REG_MAX_PSD,
 						REGULATORY_CHAN_INDOOR_ONLY},
+	[CHAN_5925_6425_4] = {5925, 6425, 320, 30, 17, 0},
+	[CHAN_5925_6425_5] = {5925, 6425, 320, 30, 5,
+						REGULATORY_CHAN_INDOOR_ONLY},
+	[CHAN_5925_6425_6] = {5925, 6425, 320, 24, -1,
+						REGULATORY_CHAN_INDOOR_ONLY},
+	[CHAN_5925_6425_7] = {5925, 6425, 320, 36, 23, 0},
+	[CHAN_5925_6425_8] = {5925, 6425, 320, 30, REG_MAX_PSD,
+						REGULATORY_CHAN_INDOOR_ONLY},
+	[CHAN_5925_6425_9] = {5925, 6425, 320, 14, REG_MAX_PSD, 0},
+	[CHAN_5925_6425_10] = {5925, 6425, 320, 17, -1, 0},
 	[CHAN_5945_6425_1] = {5945, 6425, 320, 30, 5,
 						REGULATORY_CHAN_INDOOR_ONLY},
 	[CHAN_5945_6425_2] = {5945, 6425, 320, 36, 23, 0},
 	[CHAN_5945_6425_3] = {5945, 6425, 320, 30, 17, 0},
-	[CHAN_5945_6425_4] = {5945, 6425, 320, 24, -1,
+	[CHAN_5945_6425_4] = {5945, 6425, 320, 23, 10,
 						REGULATORY_CHAN_INDOOR_ONLY},
-	[CHAN_5945_6425_5] = {5945, 6425, 320, 23, 10,
+	[CHAN_5945_6425_5] = {5945, 6425, 320, 24, -1,
 						REGULATORY_CHAN_INDOOR_ONLY},
 	[CHAN_5945_6425_6] = {5945, 6425, 320, 14, 1, 0},
 	[CHAN_5945_6425_7] = {5945, 6425, 320, 24, 11,
@@ -1797,6 +1884,11 @@ static const struct regulatory_rule_ext reg_rules_6g[] = {
 	[CHAN_6425_6525_4] = {6425, 6525, 320, 23, REG_MAX_PSD,
 						REGULATORY_CHAN_INDOOR_ONLY},
 	[CHAN_6425_6525_5] = {6425, 6525, 320, 17, -5, 0},
+	[CHAN_6425_6525_6] = {6425, 6525, 320, 36, 23, 0},
+	[CHAN_6425_6525_7] = {6425, 6525, 320, 30, REG_MAX_PSD,
+						REGULATORY_CHAN_INDOOR_ONLY},
+	[CHAN_6425_6525_8] = {6425, 6525, 320, 14, REG_MAX_PSD, 0},
+	[CHAN_6425_6525_9] = {6425, 6525, 320, 17, -1, 0},
 	[CHAN_6525_6875_1] = {6525, 6875, 320, 30, 5,
 						REGULATORY_CHAN_INDOOR_ONLY},
 	[CHAN_6525_6875_2] = {6525, 6865, 160, 36, 23, 0},
@@ -1808,6 +1900,11 @@ static const struct regulatory_rule_ext reg_rules_6g[] = {
 	[CHAN_6525_6875_6] = {6525, 6875, 320, 22, REG_MAX_PSD,
 						REGULATORY_CHAN_INDOOR_ONLY},
 	[CHAN_6525_6875_7] = {6525, 6875, 160, 17, -5, 0},
+	[CHAN_6525_6875_8] = {6525, 6875, 320, 36, 23, 0},
+	[CHAN_6525_6875_9] = {6525, 6875, 320, 30, REG_MAX_PSD,
+						REGULATORY_CHAN_INDOOR_ONLY},
+	[CHAN_6525_6875_10] = {6525, 6875, 320, 14, REG_MAX_PSD, 0},
+	[CHAN_6525_6875_11] = {6525, 6875, 320, 17, -1, 0},
 	[CHAN_6875_7125_1] = {6875, 7125, 160, 30, 5,
 						REGULATORY_CHAN_INDOOR_ONLY},
 	[CHAN_6875_7125_2] = {6875, 7125, 160, 24, -1,
@@ -1817,24 +1914,32 @@ static const struct regulatory_rule_ext reg_rules_6g[] = {
 	[CHAN_6875_7125_4] = {6875, 7125, 160, 22, REG_MAX_PSD,
 						REGULATORY_CHAN_INDOOR_ONLY},
 	[CHAN_6875_7125_5] = {6875, 7125, 320, 17, -5, 0},
+	[CHAN_6875_7125_6] = {6875, 7125, 320, 30, REG_MAX_PSD,
+						REGULATORY_CHAN_INDOOR_ONLY},
+	[CHAN_6875_7125_7] = {6875, 7125, 320, 14, REG_MAX_PSD, 0},
+	[CHAN_6875_7125_8] = {6875, 7125, 320, 17, -1, 0},
 };
 
 /**
  * Mapping of 6G sub domain and 6G reg rules.
  */
 static const struct sub_6g_regdomain sub_regdomains_6g[] = {
-	[FCC1_AP_LPI_6G] = {2, 320, 4, {CHAN_5945_6425_1,
+	[FCC1_AP_LPI_6G] = {2, 320, 4, {CHAN_5925_6425_5,
 					CHAN_6425_6525_1,
 					CHAN_6525_6875_1,
 					CHAN_6875_7125_1} },
-	[FCC1_AP_SP_6G] = {2, 320, 2, {CHAN_5945_6425_2,
+	[FCC1_AP_SP_6G] = {2, 320, 2, {CHAN_5925_6425_7,
 				       CHAN_6525_6875_2} },
-	[FCC1_CLI_SP_6G] = {2, 320, 2, {CHAN_5945_6425_3,
+	[FCC1_CLI_SP_6G] = {2, 320, 2, {CHAN_5925_6425_4,
 					CHAN_6525_6875_3} },
-	[FCC1_CLI_LPI_DEFAULT_6G] = {2, 320,  4, {CHAN_5945_6425_4,
+	[FCC1_CLI_LPI_DEFAULT_6G] = {2, 320,  4, {CHAN_5925_6425_6,
 						  CHAN_6425_6525_2,
 						  CHAN_6525_6875_4,
 						  CHAN_6875_7125_2} },
+	[FCC2_AP_SP_6G] = {2, 320, 3, {CHAN_5925_6425_7,
+				       CHAN_6425_6525_6,
+				       CHAN_6525_6875_8} },
+
 	[ETSI1_AP_LPI_6G] = {2, 320, 1, {CHAN_5945_6425_5} },
 	[ETSI1_AP_VLP_6G] = {2, 320, 1, {CHAN_5945_6425_6} },
 	[ETSI2_AP_LPI_6G] = {2, 320, 1, {CHAN_5945_6425_7} },
@@ -1857,6 +1962,18 @@ static const struct sub_6g_regdomain sub_regdomains_6g[] = {
 					 CHAN_6525_6875_7,
 					 CHAN_6875_7125_5} },
 	[APL3_AP_LPI_6G]  = {2, 320, 1, {CHAN_5925_6425_3} },
+	[APL4_AP_LPI_6G]  = {2, 320, 4, {CHAN_5925_6425_8,
+					 CHAN_6425_6525_7,
+					 CHAN_6525_6875_9,
+					 CHAN_6875_7125_6} },
+	[APL4_AP_VLP_6G]  = {2, 320, 4, {CHAN_5925_6425_9,
+					 CHAN_6425_6525_8,
+					 CHAN_6525_6875_10,
+					 CHAN_6875_7125_7} },
+	[APL5_AP_VLP_6G]  = {2, 320, 4, {CHAN_5925_6425_10,
+					 CHAN_6425_6525_9,
+					 CHAN_6525_6875_11,
+					 CHAN_6875_7125_8} },
 };
 #endif
 #ifdef CONFIG_REG_CLIENT
@@ -1869,6 +1986,7 @@ const uint32_t reg_2g_sub_dmn_code[REG_DOMAINS_2G_MAX] = {
 	[ETSIC] = 0x0C30,
 	[ETSID] = 0x0F30,
 	[KRRA] = 0x0A60,
+	[CHNA] = 0x0A80,
 };
 
 const uint32_t reg_5g_sub_dmn_code[REG_DOMAINS_5G_MAX] = {

+ 8 - 0
umac/regulatory/core/src/reg_db.h

@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  *
  * Permission to use, copy, modify, and/or distribute this software for
@@ -174,6 +175,10 @@ struct reg_domain_pair {
  * @FCC1_6G_07: Super domain FCC1_6G_07 for Brazil
  * @APL3_6G_08: Super domain APL3_6G_08 for UAE
  * @FCC1_6G_09: Super domain FCC1_6G_09 for US AFC Testing
+ * @FCC2_6G_10: Super domain FCC1_6G_10 for Canada LPI &
+		SP(VLP to be added later)
+ * @APL4_6G_11: Super domain APL3_6G_11 for Costa Rica LPI and VLP
+ * @APL5_6G_12: Super domain APL3_6G_12 for CHILE LPI and VLP
  */
 enum reg_super_domain_6g {
 	FCC1_6G_01 = 0x01,
@@ -185,6 +190,9 @@ enum reg_super_domain_6g {
 	FCC1_6G_07 = 0x07,
 	APL3_6G_08 = 0x08,
 	FCC1_6G_09 = 0x09,
+	FCC2_6G_10 = 0x10,
+	APL4_6G_11 = 0x11,
+	APL5_6G_12 = 0x12,
 };
 
 #if defined(COMPILE_REGDB_6G)