Browse Source

Revert "Revert "qcacld-3.0: Cleanup current peers upon non-11BE roaming also""

This reverts commit 41f23fb3adcf16a6bdd174676f3a8dfb3ba0fa3d.

Change-Id: Id2ddc88eafd279a1da73172b5321e466f51d82b4
Linux Image Build Automation 1 năm trước cách đây
mục cha
commit
dd405fdca8
2 tập tin đã thay đổi với 17 bổ sung18 xóa
  1. 2 2
      core/mac/src/pe/lim/lim_mlo.c
  2. 15 16
      core/wma/src/wma_scan_roam.c

+ 2 - 2
core/mac/src/pe/lim/lim_mlo.c

@@ -456,8 +456,8 @@ void lim_mlo_roam_peer_disconn_del(struct wlan_objmgr_vdev *vdev)
 
 	status = wlan_vdev_get_bss_peer_mac(vdev, &bssid);
 	if (QDF_IS_STATUS_ERROR(status)) {
-		pe_err("vdev id %d : failed to get bssid",
-		       wlan_vdev_get_id(vdev));
+		pe_debug("vdev id %d : failed to get bssid",
+			 wlan_vdev_get_id(vdev));
 		return;
 	}
 

+ 15 - 16
core/wma/src/wma_scan_roam.c

@@ -583,6 +583,7 @@ wma_delete_all_peers(tp_wma_handle wma,
 	uint8_t link_vdev_id;
 	tDeleteStaParams *del_sta_params;
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
+	struct qdf_mac_addr bssid;
 
 	vdev = wlan_objmgr_get_vdev_by_id_from_psoc(wma->psoc, vdev_id,
 						    WLAN_MLME_OBJMGR_ID);
@@ -602,6 +603,15 @@ wma_delete_all_peers(tp_wma_handle wma,
 		if (!mlo_dev_ctx->wlan_vdev_list[i])
 			continue;
 
+		if (QDF_IS_STATUS_ERROR(wlan_vdev_get_bss_peer_mac(
+			mlo_dev_ctx->wlan_vdev_list[i],
+			&bssid))) {
+			pe_debug("bss peer is not present on vdev id %d, no need to cleanup",
+				 wlan_vdev_get_id(
+				 mlo_dev_ctx->wlan_vdev_list[i]));
+			continue;
+		}
+
 		del_sta_params = qdf_mem_malloc(sizeof(*del_sta_params));
 		if (!del_sta_params) {
 			status = QDF_STATUS_E_NOMEM;
@@ -648,7 +658,6 @@ wma_roam_update_vdev(tp_wma_handle wma,
 		     struct roam_offload_synch_ind *roam_synch_ind_ptr,
 		     uint8_t roamed_vdev_id)
 {
-	tDeleteStaParams *del_sta_params;
 	tAddStaParams *add_sta_params;
 	uint8_t vdev_id, *bssid;
 	int32_t uc_cipher, cipher_cap;
@@ -688,22 +697,12 @@ wma_roam_update_vdev(tp_wma_handle wma,
 	 * To handle this delete all link peers,
 	 * while doing roam sync on first link.
 	 */
-	if (is_multi_link_roam(roam_synch_ind_ptr)) {
-		if (wlan_vdev_mlme_get_is_mlo_link(wma->psoc, vdev_id) ||
-		    mlo_get_single_link_ml_roaming(wma->psoc, vdev_id)) {
-			status = wma_delete_all_peers(wma, vdev_id);
-			if (QDF_IS_STATUS_ERROR(status))
-				goto end;
-		}
-	} else {
-		del_sta_params = qdf_mem_malloc(sizeof(*del_sta_params));
-		if (!del_sta_params)
+	if (!is_multi_link_roam(roam_synch_ind_ptr) ||
+	    wlan_vdev_mlme_get_is_mlo_link(wma->psoc, vdev_id) ||
+	    mlo_get_single_link_ml_roaming(wma->psoc, vdev_id)) {
+		status = wma_delete_all_peers(wma, vdev_id);
+		if (QDF_IS_STATUS_ERROR(status))
 			goto end;
-
-		qdf_mem_zero(del_sta_params, sizeof(*del_sta_params));
-		del_sta_params->smesessionId = vdev_id;
-		wma_delete_sta(wma, del_sta_params);
-		wma_delete_bss(wma, vdev_id);
 	}
 
 	add_sta_params->staType = STA_ENTRY_SELF;