فهرست منبع

qcacmn: Don't allow MLO SCC link

When MLO partner link and assoc link are on same frequency, F/W will
assert.

To fix it, don't allow partner link is on same frequency of assoc link.

Change-Id: I01338dbbc0845e6f6284e4a374f5ad0a5cada334
CRs-Fixed: 3706613
Jianmin Zhu 1 سال پیش
والد
کامیت
9bc183ab64
1فایلهای تغییر یافته به همراه11 افزوده شده و 10 حذف شده
  1. 11 10
      umac/mlme/connection_mgr/core/src/wlan_cm_bss_scoring.c

+ 11 - 10
umac/mlme/connection_mgr/core/src/wlan_cm_bss_scoring.c

@@ -1824,14 +1824,7 @@ static bool is_freq_dbs_or_sbs(struct wlan_objmgr_psoc *psoc,
 			       qdf_freq_t freq_1,
 			       qdf_freq_t freq_2)
 {
-	if ((policy_mgr_is_hw_sbs_capable(psoc) &&
-	     policy_mgr_are_sbs_chan(psoc, freq_1, freq_2)) ||
-	    (policy_mgr_is_hw_dbs_capable(psoc) &&
-	     !wlan_reg_is_same_band_freqs(freq_1, freq_2))) {
-		return true;
-	}
-
-	return false;
+	return !policy_mgr_2_freq_always_on_same_mac(psoc, freq_1, freq_2);
 }
 
 #else
@@ -1879,7 +1872,6 @@ enum MLO_TYPE cm_bss_mlo_type(struct wlan_objmgr_psoc *psoc,
 	for (i = 0; i < entry->ml_info.num_links; i++) {
 		if (!entry->ml_info.link_info[i].is_valid_link)
 			continue;
-		multi_link = true;
 		freq_entry = entry->channel.chan_freq;
 		freq[i] = entry->ml_info.link_info[i].freq;
 		entry_partner[i] =
@@ -1887,8 +1879,17 @@ enum MLO_TYPE cm_bss_mlo_type(struct wlan_objmgr_psoc *psoc,
 				     &entry->ml_info.link_info[i].link_addr);
 		if (entry_partner[i])
 			freq[i] = entry_partner[i]->channel.chan_freq;
-		if (is_freq_dbs_or_sbs(psoc, freq[i], freq_entry))
+		if (is_freq_dbs_or_sbs(psoc, freq[i], freq_entry)) {
 			return MLMR;
+		} else if (freq[i] == freq_entry) {
+			mlme_debug("Partner " QDF_MAC_ADDR_FMT
+				   " freq %d same as assoc freq, invalid it",
+				   QDF_MAC_ADDR_REF(entry->ml_info.link_info[i].link_addr.bytes),
+				   freq[i]);
+			entry->ml_info.link_info[i].is_valid_link = false;
+		} else {
+			multi_link = true;
+		}
 	}
 
 	if (multi_link)