Explorar el Código

qcacmn: Fill 6 GHz rules in pdev_priv_obj as per availability

Currently host only fills LPI rules in pdev_priv_obj. If
country supports  VLP, SP then host doesn't fill these
reg rules and advertises the same to kernel. This results
in zero 6 GHz channels in scan list shared by kernel.

To address this issue, fill LPI rules or VLP rules or
SP rules as per availability.

Change-Id: I4c00009d6124a1cd1371c7ac537186e79e51beb6
CRs-Fixed: 3470612
Asutosh Mohapatra hace 2 años
padre
commit
f16ad481d6
Se han modificado 1 ficheros con 14 adiciones y 2 borrados
  1. 14 2
      umac/regulatory/core/src/reg_build_chan_list.c

+ 14 - 2
umac/regulatory/core/src/reg_build_chan_list.c

@@ -3068,18 +3068,30 @@ static void reg_append_6g_reg_rules_in_pdev(
 			struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj)
 {
 	struct reg_rule_info *pdev_reg_rules;
-	enum reg_6g_ap_type cur_pwr_type = REG_INDOOR_AP;
+	enum reg_6g_ap_type cur_pwr_type;
 	uint8_t num_reg_rules;
+	uint8_t *num_6ghz_reg_rules;
 
 	pdev_reg_rules = &pdev_priv_obj->reg_rules;
 
 	num_reg_rules = pdev_reg_rules->num_of_reg_rules;
+	num_6ghz_reg_rules = pdev_reg_rules->num_of_6g_client_reg_rules;
+
+	if (num_6ghz_reg_rules[REG_INDOOR_AP])
+		cur_pwr_type = REG_INDOOR_AP;
+	else if (num_6ghz_reg_rules[REG_VERY_LOW_POWER_AP])
+		cur_pwr_type = REG_VERY_LOW_POWER_AP;
+	else if (num_6ghz_reg_rules[REG_STANDARD_POWER_AP])
+		cur_pwr_type = REG_STANDARD_POWER_AP;
+	else
+		return;
+
 	pdev_reg_rules->num_of_reg_rules +=
 		pdev_reg_rules->num_of_6g_client_reg_rules[cur_pwr_type];
 
 	qdf_mem_copy(&pdev_reg_rules->reg_rules[num_reg_rules],
 		     pdev_reg_rules->reg_rules_6g_client[cur_pwr_type],
-		     pdev_reg_rules->num_of_6g_client_reg_rules[cur_pwr_type] *
+		     num_6ghz_reg_rules[cur_pwr_type] *
 		     sizeof(struct cur_reg_rule));
 }
 #else /* CONFIG_REG_CLIENT */