qcacld-3.0: Don't delete ml_peer as part of pe_session cleanup

Currently, sta_ds corresponds to old pe_session bssid is
cleaned up and new sta_ds is created with new bssid when DUT
roams to a new AP. ml_peer is also cleaned up as part of this.
But the ml_peer corresponds to old connection is already
freed up in wma_delete_all_peers() at the beginning of roam
sync handling.
This is not an issue when roamed ml_peer is different from
the current ml_peer as the attempt to delete the old ml_peer
second time gets rejected. But in self roaming cases,
current ml_peer might be valid for other links post roaming.
So, delete the ml_peer in pe_roam_synch_callback() only
if DUT roams to a non-11BE target as the same is not
cleaned up in wma_delete_all_peers() for non-11BE candidates.

Change-Id: I2f92608b880960328cc1b104a8ab55f08c154c42
CRs-Fixed: 3579053
This commit is contained in:
Srinivas Dasari
2023-08-09 00:06:38 +05:30
committed by Rahul Choudhary
parent b37953bc1c
commit b3bedcb9c0

View File

@@ -3112,9 +3112,17 @@ pe_roam_synch_callback(struct mac_context *mac_ctx,
/* Cleanup the old session */
session_ptr->limSmeState = eLIM_SME_IDLE_STATE;
/*
* Delete the ml_peer only if DUT is roamed to a non-11BE candidate.
* ml_peer is already cleaned up in wma_delete_all_peers() at the
* beginning of roam_sync handling for 11BE candidates.
*/
if (sta_ds) {
lim_mlo_notify_peer_disconn(session_ptr, sta_ds);
lim_mlo_roam_delete_link_peer(session_ptr, sta_ds);
if (!wlan_vdev_mlme_is_mlo_vdev(session_ptr->vdev)) {
lim_mlo_notify_peer_disconn(session_ptr, sta_ds);
lim_mlo_roam_delete_link_peer(session_ptr, sta_ds);
}
lim_cleanup_rx_path(mac_ctx, sta_ds, session_ptr, false);
lim_delete_dph_hash_entry(mac_ctx, sta_ds->staAddr, aid,
session_ptr);