|
@@ -25,6 +25,29 @@
|
|
|
#ifndef __REG_DB_H
|
|
|
#define __REG_DB_H
|
|
|
|
|
|
+/*
|
|
|
+ * If COMPILE_REGDB_6G and CONFIG_BAND_6GHZ are defined, then
|
|
|
+ * reg_6ghz_super_dmn_id and max_bw_6g are part of the
|
|
|
+ * country_code_to_reg_domain table for a country
|
|
|
+ * entry. If COMPILE_REGDB_6G and CONFIG_BAND_6GHZ are not defined, then they
|
|
|
+ * are absent.
|
|
|
+ *
|
|
|
+ * COMPILE_REGDB_6G is not defined for the Partial offload platform.
|
|
|
+ *
|
|
|
+ * CE:- country entry
|
|
|
+ */
|
|
|
+#if defined(CONFIG_BAND_6GHZ) && defined(COMPILE_REGDB_6G)
|
|
|
+#define CE(country_code, reg_dmn_pair_id, reg_6ghz_super_dmn_id, \
|
|
|
+ alpha2, max_bw_2g, max_bw_5g, max_bw_6g, phymode_bitmap) \
|
|
|
+ {CTRY_ ## country_code, reg_dmn_pair_id, reg_6ghz_super_dmn_id, \
|
|
|
+ #alpha2, max_bw_2g, max_bw_5g, max_bw_6g, phymode_bitmap}
|
|
|
+#else
|
|
|
+#define CE(country_code, reg_dmn_pair_id, reg_6ghz_super_dmn_id, alpha2, \
|
|
|
+ max_bw_2g, max_bw_5g, max_bw_6g, phymode_bitmap) \
|
|
|
+ {CTRY_ ## country_code, reg_dmn_pair_id, #alpha2, max_bw_2g, \
|
|
|
+ max_bw_5g, phymode_bitmap}
|
|
|
+#endif
|
|
|
+
|
|
|
/* Alpha2 code for world reg domain */
|
|
|
#define REG_WORLD_ALPHA2 "00"
|
|
|
|
|
@@ -44,6 +67,26 @@ struct regulatory_rule {
|
|
|
uint16_t flags;
|
|
|
};
|
|
|
|
|
|
+#if defined(CONFIG_BAND_6GHZ) && defined(COMPILE_REGDB_6G)
|
|
|
+/**
|
|
|
+ * struct regulatory_rule_ext
|
|
|
+ * @start_freq: start frequency in MHz
|
|
|
+ * @end_freq: end frequency in MHz
|
|
|
+ * @max_bw: maximum bandwidth in MHz
|
|
|
+ * @eirp_power: EIRP power in dBm
|
|
|
+ * @psd_power: Max PSD power in dBm per MHz
|
|
|
+ * @flags: regulatory flags
|
|
|
+ */
|
|
|
+struct regulatory_rule_ext {
|
|
|
+ uint16_t start_freq;
|
|
|
+ uint16_t end_freq;
|
|
|
+ uint16_t max_bw;
|
|
|
+ uint8_t eirp_power;
|
|
|
+ int8_t psd_power;
|
|
|
+ uint16_t flags;
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
/**
|
|
|
* struct regdomain
|
|
|
* @ctl_val: CTL value
|
|
@@ -63,21 +106,45 @@ struct regdomain {
|
|
|
uint8_t reg_rule_id[MAX_REG_RULES];
|
|
|
};
|
|
|
|
|
|
+#if defined(CONFIG_BAND_6GHZ) && defined(COMPILE_REGDB_6G)
|
|
|
+/**
|
|
|
+ * struct sub_6g_regdomain
|
|
|
+ * @min_bw: Minimum bandwidth in MHz
|
|
|
+ * @max_bw: Maximum bandwidth in MHz
|
|
|
+ * @num_reg_rules: number of regulatory rules
|
|
|
+ * @reg_rules_id: regulatory rule index
|
|
|
+ */
|
|
|
+struct sub_6g_regdomain {
|
|
|
+ uint16_t min_bw;
|
|
|
+ uint16_t max_bw;
|
|
|
+ uint8_t num_reg_rules;
|
|
|
+ uint8_t sixg_reg_rule_id[MAX_REG_RULES];
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
/**
|
|
|
* struct country_code_to_reg_domain
|
|
|
* @country_code: country code
|
|
|
* @reg_dmn_pair_id: reg domainpair id
|
|
|
+ * @reg_6ghz_super_dmn_id: 6GHz super domain id
|
|
|
* @alpha2: iso-3166 alpha2
|
|
|
- * @max_bw_2g: maximum 2g bandwidth
|
|
|
- * @max_bw_5g: maximum 5g bandwidth
|
|
|
+ * @max_bw_2g: maximum 2g bandwidth in MHz
|
|
|
+ * @max_bw_5g: maximum 5g bandwidth in MHz
|
|
|
+ * @max_bw_6g: maximum 6g bandwidth in MHz
|
|
|
* @phymode_bitmap: phymodes not supported
|
|
|
*/
|
|
|
struct country_code_to_reg_domain {
|
|
|
uint16_t country_code;
|
|
|
uint16_t reg_dmn_pair_id;
|
|
|
+#if defined(CONFIG_BAND_6GHZ) && defined(COMPILE_REGDB_6G)
|
|
|
+ uint16_t reg_6ghz_super_dmn_id;
|
|
|
+#endif
|
|
|
uint8_t alpha2[REG_ALPHA2_LEN + 1];
|
|
|
uint16_t max_bw_2g;
|
|
|
uint16_t max_bw_5g;
|
|
|
+#if defined(CONFIG_BAND_6GHZ) && defined(COMPILE_REGDB_6G)
|
|
|
+ uint16_t max_bw_6g;
|
|
|
+#endif
|
|
|
uint16_t phymode_bitmap;
|
|
|
};
|
|
|
|
|
@@ -93,6 +160,28 @@ struct reg_domain_pair {
|
|
|
uint8_t dmn_id_2g;
|
|
|
};
|
|
|
|
|
|
+#if defined(CONFIG_BAND_6GHZ) && defined(COMPILE_REGDB_6G)
|
|
|
+/**
|
|
|
+ * struct sixghz_super_to_subdomains
|
|
|
+ * @reg_6ghz_super_dmn_id: 6G super domain id.
|
|
|
+ * @reg_domain_6g_id_ap_sp: 6G domain id for SP AP.
|
|
|
+ * @reg_domain_6g_id_ap_lpi: 6G domain id for LPI AP.
|
|
|
+ * @reg_domain_6g_id_ap_vlp: 6G domain id for VLP AP.
|
|
|
+ * @reg_domain_6g_id_client_sp: 6G domain id for clients of the SP AP.
|
|
|
+ * @reg_domain_6g_id_client_lpi: 6G domain id for clients of the LPI AP.
|
|
|
+ * @reg_domain_6g_id_client_vlp: 6G domain id for clients of the VLP AP.
|
|
|
+ */
|
|
|
+struct sixghz_super_to_subdomains {
|
|
|
+ uint16_t reg_6ghz_super_dmn_id;
|
|
|
+ uint8_t reg_domain_6g_id_ap_sp;
|
|
|
+ uint8_t reg_domain_6g_id_ap_lpi;
|
|
|
+ uint8_t reg_domain_6g_id_ap_vlp;
|
|
|
+ uint8_t reg_domain_6g_id_client_sp[REG_MAX_CLIENT_TYPE - 1];
|
|
|
+ uint8_t reg_domain_6g_id_client_lpi[REG_MAX_CLIENT_TYPE - 1];
|
|
|
+ uint8_t reg_domain_6g_id_client_vlp[REG_MAX_CLIENT_TYPE - 1];
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
QDF_STATUS reg_get_num_countries(int *num_countries);
|
|
|
|
|
|
QDF_STATUS reg_get_num_reg_dmn_pairs(int *num_reg_dmn);
|