Просмотр исходного кода

qcacmn: handle MLO scenario for candidate validating

Add flag to indicate whether MLO is supported by the candidate or not,
which is helpful when checking concurrency.

Change-Id: I166ad2963163ae4dc7989516b654dce4cb635cec
CRs-Fixed: 3013418
Yu Wang 3 лет назад
Родитель
Сommit
33958ed42f

+ 4 - 0
umac/cmn_services/interface_mgr/inc/wlan_if_mgr_public_struct.h

@@ -74,11 +74,15 @@ enum wlan_if_mgr_evt {
  * @peer_addr: MAC address of the BSS
  * @chan_freq: Frequency of the potential BSS connection
  * @beacon_interval: beacon interval of BSS
+ * @is_mlo: indicate whether MLO is supported by the BSS or not
  */
 struct validate_bss_data {
 	struct qdf_mac_addr peer_addr;
 	qdf_freq_t chan_freq;
 	uint16_t beacon_interval;
+#ifdef WLAN_FEATURE_11BE_MLO
+	bool is_mlo;
+#endif
 };
 
 /**

+ 21 - 0
umac/mlme/connection_mgr/core/src/wlan_cm_connect.c

@@ -521,6 +521,20 @@ static bool cm_bss_peer_is_assoc_peer(struct cm_connect_req *req)
 
 	return false;
 }
+
+/**
+ * cm_candidate_mlo_update() - handle mlo scenario for candidate validating
+ * @scan_entry: scan result of the candidate
+ * @validate_bss_info: candidate info to be updated
+ *
+ * Return: None
+ */
+static void
+cm_candidate_mlo_update(struct scan_cache_entry *scan_entry,
+			struct validate_bss_data *validate_bss_info)
+{
+	validate_bss_info->is_mlo = !!scan_entry->ie_list.multi_link;
+}
 #else
 static inline
 void cm_set_vdev_link_id(struct cnx_mgr *cm_ctx,
@@ -541,6 +555,12 @@ static bool cm_bss_peer_is_assoc_peer(struct cm_connect_req *req)
 {
 	return false;
 }
+
+static inline void
+cm_candidate_mlo_update(struct scan_cache_entry *scan_entry,
+			struct validate_bss_data *validate_bss_info)
+{
+}
 #endif
 
 static void cm_create_bss_peer(struct cnx_mgr *cm_ctx,
@@ -596,6 +616,7 @@ QDF_STATUS cm_if_mgr_validate_candidate(struct cnx_mgr *cm_ctx,
 	event_data.validate_bss_info.beacon_interval = scan_entry->bcn_int;
 	qdf_copy_macaddr(&event_data.validate_bss_info.peer_addr,
 			 &scan_entry->bssid);
+	cm_candidate_mlo_update(scan_entry, &event_data.validate_bss_info);
 
 	return if_mgr_deliver_event(cm_ctx->vdev,
 				    WLAN_IF_MGR_EV_VALIDATE_CANDIDATE,