Merge "qcacmn: Fix target assert caused due to DBS band limitation WAR"
diff --git a/target_if/init_deinit/src/service_ready_util.c b/target_if/init_deinit/src/service_ready_util.c
index 1a2837a..beac8bd 100644
--- a/target_if/init_deinit/src/service_ready_util.c
+++ b/target_if/init_deinit/src/service_ready_util.c
@@ -526,6 +526,8 @@
 {
 	struct target_psoc_info *tgt_hdl;
 	enum wmi_host_hw_mode_config_type mode;
+	uint32_t num_hw_modes;
+	uint8_t idx;
 
 	tgt_hdl = (struct target_psoc_info *)wlan_psoc_get_tgt_if_handle(
 						psoc);
@@ -536,14 +538,24 @@
 
 	mode = target_psoc_get_preferred_hw_mode(tgt_hdl);
 
-	if ((mode == WMI_HOST_HW_MODE_DBS) &&
-		(info->hw_modes.num_modes == NUM_RF_MODES)) {
-		if (reg_cap[phy0].low_5ghz_chan > reg_cap[phy2].low_5ghz_chan)
-			reg_cap[phy0].low_5ghz_chan = reg_cap[phy2].low_5ghz_chan;
-		else if (reg_cap[phy0].high_5ghz_chan < reg_cap[phy2].high_5ghz_chan)
-			reg_cap[phy0].high_5ghz_chan = reg_cap[phy2].high_5ghz_chan;
-	}
+	num_hw_modes = info->hw_modes.num_modes;
 
+	if ((mode != WMI_HOST_HW_MODE_DBS) || (num_hw_modes < NUM_RF_MODES))
+		return;
+
+	for (idx = 0; idx < num_hw_modes; idx++)
+		if (info->hw_modes.hw_mode_ids[idx] ==
+			WMI_HOST_HW_MODE_DBS_SBS) {
+			if (reg_cap[phy0].low_5ghz_chan >
+					reg_cap[phy2].low_5ghz_chan)
+				reg_cap[phy0].low_5ghz_chan =
+				    reg_cap[phy2].low_5ghz_chan;
+			else if (reg_cap[phy0].high_5ghz_chan <
+					reg_cap[phy2].high_5ghz_chan)
+				reg_cap[phy0].high_5ghz_chan =
+				    reg_cap[phy2].high_5ghz_chan;
+			break;
+		}
 }
 #else
 static void init_deinit_update_phy_reg_cap(struct wlan_objmgr_psoc *psoc,