Browse Source

qcacmn: Use sizeof of reg_rule structure instead of using macro

Since the array size can be specified by a different macro or a
different value in future, let the  compiler calculate the array
size directly instead of using the hard-coded value of the macro.

Change-Id: I3fb1719db5165d0155e73c0653ec6f13fa95f69a
CRs-Fixed: 2002892
Baila, Shashikala Prabhu 8 years ago
parent
commit
ae875e5d5a
2 changed files with 32 additions and 22 deletions
  1. 31 20
      umac/regulatory/core/src/reg_db_parser.c
  2. 1 2
      umac/regulatory/core/src/reg_db_parser.h

+ 31 - 20
umac/regulatory/core/src/reg_db_parser.c

@@ -157,21 +157,25 @@ QDF_STATUS reg_get_rdpair_from_country_code(uint16_t cc,
 }
 
 static inline QDF_STATUS reg_get_reginfo_form_country_code_and_regdmn_pair(
-		uint32_t max_rules,
 		struct cur_regulatory_info *reg_info,
 		uint16_t country_index,
 		uint16_t regdmn_pair)
 {
 	uint16_t i, j;
+	uint8_t rule_size_2g, rule_size_5g;
 
 	i = country_index;
 	j = regdmn_pair;
 
-	if ((max_rules >=
+	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);
+
+	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 = g_all_countries[i].phymode_bitmap;
@@ -197,25 +201,28 @@ static inline QDF_STATUS reg_get_reginfo_form_country_code_and_regdmn_pair(
 				g_reg_dmn_pairs[j].dmn_id_5g, reg_info);
 
 		return QDF_STATUS_SUCCESS;
-	} else if (!((max_rules >= 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;
+	} 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_form_regdmn_pair(
-		uint32_t max_rules,
 		struct cur_regulatory_info *reg_info,
 		uint16_t regdmn_pair)
 {
 	uint16_t j;
+	uint8_t rule_size_2g, rule_size_5g;
 
 	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);
 
-	if ((max_rules >=
+	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)
 		) {
@@ -245,7 +252,7 @@ static inline QDF_STATUS reg_get_reginfo_form_regdmn_pair(
 				g_reg_dmn_pairs[j].dmn_id_5g, reg_info);
 
 		return QDF_STATUS_SUCCESS;
-	} else if (!((max_rules >= regdomains_2g[
+	} 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)))
@@ -255,17 +262,25 @@ static inline QDF_STATUS reg_get_reginfo_form_regdmn_pair(
 }
 
 static inline QDF_STATUS reg_get_reginfo_for_default_regdmn_pair(
-		uint32_t max_rules,
-		struct cur_regulatory_info *reg_info)
+		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);
 
-	if ((max_rules >= regdomains_2g[default_country_2g].num_reg_rules +
+	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);
+
+	if (((rule_size_2g + rule_size_5g) >=
+			regdomains_2g[default_country_2g].num_reg_rules +
 		    regdomains_5g[default_country_5g].num_reg_rules)) {
+
 		reg_info->dfs_region =
 		    regdomains_5g[default_country_5g].dfs_region;
 		reg_info->phybitmap = 0;
@@ -288,7 +303,7 @@ static inline QDF_STATUS reg_get_reginfo_for_default_regdmn_pair(
 				default_country_5g, reg_info);
 
 		return QDF_STATUS_SUCCESS;
-	} else if (!((max_rules >=
+	} else if (!(((rule_size_2g + rule_size_5g) >=
 			regdomains_2g[default_country_2g].num_reg_rules +
 			regdomains_5g[default_country_5g].num_reg_rules)))
 		return QDF_STATUS_E_NOMEM;
@@ -296,27 +311,23 @@ static inline QDF_STATUS reg_get_reginfo_for_default_regdmn_pair(
 }
 
 /* Given a country code the function finds current  regulatory information */
-QDF_STATUS reg_get_cur_reginfo(uint32_t max_rules,
-		struct cur_regulatory_info *reg_info,
+QDF_STATUS reg_get_cur_reginfo(struct cur_regulatory_info *reg_info,
 		uint16_t country_index,
 		uint16_t regdmn_pair)
 {
 	if ((country_index != (uint16_t)(-1)) &&
 		(regdmn_pair != (uint16_t)(-1)))
 		reg_get_reginfo_form_country_code_and_regdmn_pair(
-				max_rules,
 				reg_info,
 				country_index,
 				regdmn_pair);
 	else {
 		if (regdmn_pair != (uint16_t)(-1))
 			reg_get_reginfo_form_regdmn_pair(
-					max_rules,
 					reg_info,
 					regdmn_pair);
 		else
 			reg_get_reginfo_for_default_regdmn_pair(
-					max_rules,
 					reg_info);
 	}
 

+ 1 - 2
umac/regulatory/core/src/reg_db_parser.h

@@ -37,8 +37,7 @@ QDF_STATUS reg_regrules_assign(uint8_t dmn_id_2g,
 		uint8_t dmn_id_5g,
 		struct cur_regulatory_info *reg_info);
 
-QDF_STATUS reg_get_cur_reginfo(uint32_t max_rules,
-		struct cur_regulatory_info *reg_info,
+QDF_STATUS reg_get_cur_reginfo(struct cur_regulatory_info *reg_info,
 		uint16_t country_index,
 		uint16_t regdmn_pair);