Преглед на файлове

qcacmn: Allow roam if prev_bssid is AP mld address

"prev_bssid" can be AP mld address if current connection
is mlo connection. Allow roam if "prev_bssid" is AP mld
address.

Change-Id: Iebc71acae11fcbfb4fc98ec2199d546d71ef057c
CRs-Fixed: 3489879
Liangwei Dong преди 2 години
родител
ревизия
fa5b39c322
променени са 1 файла, в които са добавени 10 реда и са изтрити 3 реда
  1. 10 3
      umac/mlme/connection_mgr/core/src/wlan_cm_roam_util.c

+ 10 - 3
umac/mlme/connection_mgr/core/src/wlan_cm_roam_util.c

@@ -52,7 +52,7 @@ QDF_STATUS cm_check_and_prepare_roam_req(struct cnx_mgr *cm_ctx,
 {
 	QDF_STATUS status;
 	struct wlan_cm_connect_req *req;
-	struct qdf_mac_addr bssid;
+	struct qdf_mac_addr bssid, bss_mld_addr;
 	struct wlan_ssid ssid;
 	struct cm_req *cm_req, *req_ptr;
 	qdf_freq_t freq = 0;
@@ -76,13 +76,20 @@ QDF_STATUS cm_check_and_prepare_roam_req(struct cnx_mgr *cm_ctx,
 		return QDF_STATUS_E_FAILURE;
 
 	wlan_vdev_get_bss_peer_mac(cm_ctx->vdev, &bssid);
-
 	/* Reject re-assoc unless prev_bssid matches the current BSSID. */
 	if (!qdf_is_macaddr_equal(&req->prev_bssid, &bssid)) {
 		mlme_debug("BSSID didn't matched: bssid: "QDF_MAC_ADDR_FMT " prev bssid: " QDF_MAC_ADDR_FMT,
 			   QDF_MAC_ADDR_REF(bssid.bytes),
 			   QDF_MAC_ADDR_REF(req->prev_bssid.bytes));
-		return QDF_STATUS_E_FAILURE;
+		status = wlan_vdev_get_bss_peer_mld_mac(cm_ctx->vdev,
+							&bss_mld_addr);
+		if (!(QDF_IS_STATUS_SUCCESS(status) &&
+		      qdf_is_macaddr_equal(&req->prev_bssid, &bss_mld_addr))) {
+			mlme_debug("BSSID didn't matched: bss mld: "QDF_MAC_ADDR_FMT " prev bssid: " QDF_MAC_ADDR_FMT,
+				   QDF_MAC_ADDR_REF(bss_mld_addr.bytes),
+				   QDF_MAC_ADDR_REF(req->prev_bssid.bytes));
+			return QDF_STATUS_E_FAILURE;
+		}
 	}
 
 	status = wlan_vdev_mlme_get_ssid(cm_ctx->vdev, ssid.ssid, &ssid.length);