|
@@ -118,6 +118,29 @@ QDF_STATUS reg_get_rdpair_from_country_iso(uint8_t *alpha,
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
|
+QDF_STATUS reg_get_rdpair_from_regdmn_id(uint16_t regdmn_id,
|
|
|
+ uint16_t *regdmn_pair)
|
|
|
+{
|
|
|
+ uint16_t j;
|
|
|
+ int num_reg_dmn;
|
|
|
+
|
|
|
+ get_num_reg_dmn_pairs(&num_reg_dmn);
|
|
|
+
|
|
|
+ for (j = 0; j < num_reg_dmn; j++) {
|
|
|
+ if (g_reg_dmn_pairs[j].reg_dmn_pair_id == regdmn_id)
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (j == num_reg_dmn) {
|
|
|
+ *regdmn_pair = -1;
|
|
|
+ return QDF_STATUS_E_FAILURE;
|
|
|
+ }
|
|
|
+
|
|
|
+ *regdmn_pair = j;
|
|
|
+
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
+}
|
|
|
+
|
|
|
QDF_STATUS reg_get_rdpair_from_country_code(uint16_t cc,
|
|
|
uint16_t *country_index,
|
|
|
uint16_t *regdmn_pair)
|
|
@@ -141,7 +164,7 @@ QDF_STATUS reg_get_rdpair_from_country_code(uint16_t cc,
|
|
|
|
|
|
for (j = 0; j < num_reg_dmn; j++) {
|
|
|
if (g_reg_dmn_pairs[j].reg_dmn_pair_id ==
|
|
|
- g_all_countries[i].reg_dmn_pair_id)
|
|
|
+ g_all_countries[i].reg_dmn_pair_id)
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -163,47 +186,46 @@ static inline QDF_STATUS reg_get_reginfo_form_country_code_and_regdmn_pair(
|
|
|
{
|
|
|
uint16_t i, j;
|
|
|
uint8_t rule_size_2g, rule_size_5g;
|
|
|
+ uint8_t dmn_id_5g, dmn_id_2g;
|
|
|
|
|
|
i = country_index;
|
|
|
j = regdmn_pair;
|
|
|
|
|
|
- rule_size_2g = QDF_ARRAY_SIZE(
|
|
|
- regdomains_2g[g_reg_dmn_pairs[j].dmn_id_2g].reg_rule_id);
|
|
|
- rule_size_5g = QDF_ARRAY_SIZE(
|
|
|
- regdomains_5g[g_reg_dmn_pairs[j].dmn_id_5g].reg_rule_id);
|
|
|
+ dmn_id_5g = g_reg_dmn_pairs[j].dmn_id_5g;
|
|
|
+ dmn_id_2g = g_reg_dmn_pairs[j].dmn_id_2g;
|
|
|
+
|
|
|
+ rule_size_2g = QDF_ARRAY_SIZE(regdomains_2g[dmn_id_2g].reg_rule_id);
|
|
|
+ rule_size_5g = QDF_ARRAY_SIZE(regdomains_5g[dmn_id_5g].reg_rule_id);
|
|
|
|
|
|
if (((rule_size_2g + rule_size_5g) >=
|
|
|
- regdomains_2g[g_reg_dmn_pairs[j].dmn_id_2g].num_reg_rules +
|
|
|
- regdomains_5g[g_reg_dmn_pairs[j].dmn_id_5g].num_reg_rules)
|
|
|
- ) {
|
|
|
- reg_info->dfs_region =
|
|
|
- regdomains_5g[g_reg_dmn_pairs[j].dmn_id_5g].dfs_region;
|
|
|
+ regdomains_2g[dmn_id_2g].num_reg_rules +
|
|
|
+ regdomains_5g[dmn_id_5g].num_reg_rules)) {
|
|
|
+ reg_info->dfs_region = regdomains_5g[dmn_id_5g].dfs_region;
|
|
|
reg_info->phybitmap = g_all_countries[i].phymode_bitmap;
|
|
|
reg_info->max_bw_2g = g_all_countries[i].max_bw_2g;
|
|
|
reg_info->max_bw_5g = g_all_countries[i].max_bw_5g;
|
|
|
- reg_info->min_bw_2g =
|
|
|
- regdomains_2g[g_reg_dmn_pairs[j].dmn_id_2g].min_bw;
|
|
|
- reg_info->min_bw_5g =
|
|
|
- regdomains_5g[g_reg_dmn_pairs[j].dmn_id_5g].min_bw;
|
|
|
+
|
|
|
+ reg_info->min_bw_2g = regdomains_2g[dmn_id_2g].min_bw;
|
|
|
+ reg_info->min_bw_5g = regdomains_5g[dmn_id_5g].min_bw;
|
|
|
+
|
|
|
reg_info->num_2g_reg_rules =
|
|
|
- regdomains_2g[g_reg_dmn_pairs[j].dmn_id_2g].num_reg_rules;
|
|
|
+ regdomains_2g[dmn_id_2g].num_reg_rules;
|
|
|
reg_info->num_5g_reg_rules =
|
|
|
- regdomains_5g[g_reg_dmn_pairs[j].dmn_id_5g].num_reg_rules;
|
|
|
+ regdomains_5g[dmn_id_5g].num_reg_rules;
|
|
|
|
|
|
reg_info->reg_rules_2g_ptr = (struct cur_reg_rule *)
|
|
|
- qdf_mem_malloc((reg_info->num_2g_reg_rules) *
|
|
|
- sizeof(struct cur_reg_rule));
|
|
|
+ qdf_mem_malloc((reg_info->num_2g_reg_rules) *
|
|
|
+ sizeof(struct cur_reg_rule));
|
|
|
reg_info->reg_rules_5g_ptr = (struct cur_reg_rule *)
|
|
|
- qdf_mem_malloc((reg_info->num_5g_reg_rules) *
|
|
|
- sizeof(struct cur_reg_rule));
|
|
|
+ qdf_mem_malloc((reg_info->num_5g_reg_rules) *
|
|
|
+ sizeof(struct cur_reg_rule));
|
|
|
|
|
|
- reg_regrules_assign(g_reg_dmn_pairs[j].dmn_id_2g,
|
|
|
- g_reg_dmn_pairs[j].dmn_id_5g, reg_info);
|
|
|
+ reg_regrules_assign(dmn_id_2g, dmn_id_5g, reg_info);
|
|
|
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
} else if (!(((rule_size_2g + rule_size_5g) >=
|
|
|
- regdomains_2g[g_reg_dmn_pairs[j].dmn_id_2g].num_reg_rules +
|
|
|
- regdomains_5g[g_reg_dmn_pairs[j].dmn_id_5g].num_reg_rules)))
|
|
|
+ regdomains_2g[dmn_id_2g].num_reg_rules +
|
|
|
+ regdomains_5g[dmn_id_5g].num_reg_rules)))
|
|
|
return QDF_STATUS_E_NOMEM;
|
|
|
|
|
|
return QDF_STATUS_SUCCESS;
|
|
@@ -215,98 +237,46 @@ static inline QDF_STATUS reg_get_reginfo_form_regdmn_pair(
|
|
|
{
|
|
|
uint16_t j;
|
|
|
uint8_t rule_size_2g, rule_size_5g;
|
|
|
+ uint8_t dmn_id_5g, dmn_id_2g;
|
|
|
|
|
|
j = regdmn_pair;
|
|
|
- rule_size_2g = QDF_ARRAY_SIZE(
|
|
|
- regdomains_2g[g_reg_dmn_pairs[j].dmn_id_2g].reg_rule_id);
|
|
|
- rule_size_5g = QDF_ARRAY_SIZE(
|
|
|
- regdomains_5g[g_reg_dmn_pairs[j].dmn_id_5g].reg_rule_id);
|
|
|
+ dmn_id_5g = g_reg_dmn_pairs[j].dmn_id_5g;
|
|
|
+ dmn_id_2g = g_reg_dmn_pairs[j].dmn_id_2g;
|
|
|
|
|
|
- if (((rule_size_2g + rule_size_5g) >=
|
|
|
- regdomains_2g[g_reg_dmn_pairs[j].dmn_id_2g].num_reg_rules +
|
|
|
- regdomains_5g[g_reg_dmn_pairs[j].dmn_id_5g].num_reg_rules)
|
|
|
- ) {
|
|
|
-
|
|
|
- reg_info->dfs_region =
|
|
|
- regdomains_5g[g_reg_dmn_pairs[j].dmn_id_5g].dfs_region;
|
|
|
- reg_info->phybitmap = 0;
|
|
|
- reg_info->max_bw_2g = 40;
|
|
|
- reg_info->max_bw_5g = 160;
|
|
|
- reg_info->min_bw_2g =
|
|
|
- regdomains_2g[g_reg_dmn_pairs[j].dmn_id_2g].min_bw;
|
|
|
- reg_info->min_bw_5g =
|
|
|
- regdomains_5g[g_reg_dmn_pairs[j].dmn_id_5g].min_bw;
|
|
|
- reg_info->num_2g_reg_rules =
|
|
|
- regdomains_2g[g_reg_dmn_pairs[j].dmn_id_2g].num_reg_rules;
|
|
|
- reg_info->num_5g_reg_rules =
|
|
|
- regdomains_5g[g_reg_dmn_pairs[j].dmn_id_5g].num_reg_rules;
|
|
|
-
|
|
|
- reg_info->reg_rules_2g_ptr = (struct cur_reg_rule *)
|
|
|
- qdf_mem_malloc((reg_info->num_2g_reg_rules) *
|
|
|
- sizeof(struct cur_reg_rule));
|
|
|
- reg_info->reg_rules_5g_ptr = (struct cur_reg_rule *)
|
|
|
- qdf_mem_malloc((reg_info->num_5g_reg_rules) *
|
|
|
- sizeof(struct cur_reg_rule));
|
|
|
-
|
|
|
- reg_regrules_assign(g_reg_dmn_pairs[j].dmn_id_2g,
|
|
|
- g_reg_dmn_pairs[j].dmn_id_5g, reg_info);
|
|
|
-
|
|
|
- return QDF_STATUS_SUCCESS;
|
|
|
- } else if (!(((rule_size_2g + rule_size_5g) >= regdomains_2g[
|
|
|
- g_reg_dmn_pairs[j].dmn_id_2g].num_reg_rules +
|
|
|
- regdomains_5g[
|
|
|
- g_reg_dmn_pairs[j].dmn_id_5g].num_reg_rules)))
|
|
|
- return QDF_STATUS_E_NOMEM;
|
|
|
-
|
|
|
- return QDF_STATUS_SUCCESS;
|
|
|
-}
|
|
|
-
|
|
|
-static inline QDF_STATUS reg_get_reginfo_for_default_regdmn_pair(
|
|
|
- struct cur_regulatory_info *reg_info,
|
|
|
- uint16_t regdmn_pair)
|
|
|
-{
|
|
|
- int default_country_2g;
|
|
|
- int default_country_5g;
|
|
|
- uint8_t rule_size_2g, rule_size_5g;
|
|
|
-
|
|
|
- get_default_country_2g(&default_country_2g);
|
|
|
- get_default_country_5g(&default_country_5g);
|
|
|
-
|
|
|
- rule_size_2g =
|
|
|
- QDF_ARRAY_SIZE(regdomains_2g[default_country_2g].reg_rule_id);
|
|
|
- rule_size_5g =
|
|
|
- QDF_ARRAY_SIZE(regdomains_5g[default_country_5g].reg_rule_id);
|
|
|
+ rule_size_2g = QDF_ARRAY_SIZE(regdomains_2g[dmn_id_2g].reg_rule_id);
|
|
|
+ rule_size_5g = QDF_ARRAY_SIZE(regdomains_5g[dmn_id_5g].reg_rule_id);
|
|
|
|
|
|
if (((rule_size_2g + rule_size_5g) >=
|
|
|
- regdomains_2g[default_country_2g].num_reg_rules +
|
|
|
- regdomains_5g[default_country_5g].num_reg_rules)) {
|
|
|
+ regdomains_2g[dmn_id_2g].num_reg_rules +
|
|
|
+ regdomains_5g[dmn_id_5g].num_reg_rules)) {
|
|
|
|
|
|
- reg_info->dfs_region =
|
|
|
- regdomains_5g[default_country_5g].dfs_region;
|
|
|
+ reg_info->dfs_region = regdomains_5g[dmn_id_5g].dfs_region;
|
|
|
reg_info->phybitmap = 0;
|
|
|
reg_info->max_bw_2g = 40;
|
|
|
reg_info->max_bw_5g = 160;
|
|
|
- reg_info->min_bw_2g = regdomains_2g[default_country_2g].min_bw;
|
|
|
- reg_info->min_bw_5g = regdomains_5g[default_country_5g].min_bw;
|
|
|
+ reg_info->min_bw_2g = regdomains_2g[dmn_id_2g].min_bw;
|
|
|
+ reg_info->min_bw_5g = regdomains_5g[dmn_id_5g].min_bw;
|
|
|
+
|
|
|
reg_info->num_2g_reg_rules =
|
|
|
- regdomains_2g[default_country_2g].num_reg_rules;
|
|
|
+ regdomains_2g[dmn_id_2g].num_reg_rules;
|
|
|
reg_info->num_5g_reg_rules =
|
|
|
- regdomains_5g[default_country_5g].num_reg_rules;
|
|
|
+ regdomains_5g[dmn_id_5g].num_reg_rules;
|
|
|
+
|
|
|
reg_info->reg_rules_2g_ptr = (struct cur_reg_rule *)
|
|
|
- qdf_mem_malloc((reg_info->num_2g_reg_rules) *
|
|
|
- sizeof(struct cur_reg_rule));
|
|
|
+ qdf_mem_malloc((reg_info->num_2g_reg_rules) *
|
|
|
+ sizeof(struct cur_reg_rule));
|
|
|
reg_info->reg_rules_5g_ptr = (struct cur_reg_rule *)
|
|
|
- qdf_mem_malloc((reg_info->num_5g_reg_rules) *
|
|
|
- sizeof(struct cur_reg_rule));
|
|
|
+ qdf_mem_malloc((reg_info->num_5g_reg_rules) *
|
|
|
+ sizeof(struct cur_reg_rule));
|
|
|
|
|
|
- reg_regrules_assign(default_country_2g,
|
|
|
- default_country_5g, reg_info);
|
|
|
+ reg_regrules_assign(dmn_id_2g, dmn_id_5g, reg_info);
|
|
|
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
} else if (!(((rule_size_2g + rule_size_5g) >=
|
|
|
- regdomains_2g[default_country_2g].num_reg_rules +
|
|
|
- regdomains_5g[default_country_5g].num_reg_rules)))
|
|
|
+ regdomains_2g[dmn_id_2g].num_reg_rules +
|
|
|
+ regdomains_5g[dmn_id_5g].num_reg_rules)))
|
|
|
return QDF_STATUS_E_NOMEM;
|
|
|
+
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
@@ -321,15 +291,12 @@ QDF_STATUS reg_get_cur_reginfo(struct cur_regulatory_info *reg_info,
|
|
|
reg_info,
|
|
|
country_index,
|
|
|
regdmn_pair);
|
|
|
- else {
|
|
|
- if (regdmn_pair != (uint16_t)(-1))
|
|
|
+ else if (regdmn_pair != (uint16_t)(-1))
|
|
|
reg_get_reginfo_form_regdmn_pair(
|
|
|
reg_info,
|
|
|
regdmn_pair);
|
|
|
- else
|
|
|
- reg_get_reginfo_for_default_regdmn_pair(
|
|
|
- reg_info);
|
|
|
- }
|
|
|
+ else
|
|
|
+ return QDF_STATUS_E_FAILURE;
|
|
|
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|