qcacmn: Migrate PTQM of BSS peer of a non-AP MLD upon ML AP removal

Before proceeding to the ML AP removal at the non-AP MLD, migrate the
PTQM of its BSS peer if it has the link to be removed as the primary.

Change-Id: I477538135186e4f1039bbdf83cfd0c826503f75f
CRs-Fixed: 3575221
This commit is contained in:
Shiva Krishna Pittala
2023-07-30 21:59:34 +05:30
gecommit door Rahul Choudhary
bovenliggende 3041fbd68f
commit ac7f260278

Bestand weergeven

@@ -2231,6 +2231,35 @@ error:
return bcn_int;
}
#ifdef QCA_SUPPORT_PRIMARY_LINK_MIGRATE
static QDF_STATUS
mlo_sta_handle_ptqm_migration(struct wlan_objmgr_vdev *removal_vdev)
{
struct wlan_objmgr_peer *bss_peer;
if (!wlan_cm_is_vdev_connected(removal_vdev))
return QDF_STATUS_E_INVAL;
bss_peer = wlan_vdev_get_bsspeer(removal_vdev);
if (!bss_peer)
return QDF_STATUS_E_INVAL;
/* Invoke migration only if the link being removed is the primary */
if (wlan_mlo_peer_get_primary_peer_link_id(bss_peer)
!= wlan_vdev_get_link_id(removal_vdev))
return QDF_STATUS_SUCCESS;
return wlan_mlo_set_ptqm_migration(removal_vdev, bss_peer->mlo_peer_ctx,
false, WLAN_LINK_ID_INVALID, true);
}
#else
static QDF_STATUS
mlo_sta_handle_ptqm_migration(struct wlan_objmgr_vdev *removal_vdev)
{
return QDF_STATUS_SUCCESS;
}
#endif
static void mlo_process_link_remove(struct wlan_objmgr_vdev *vdev,
struct ml_rv_partner_link_info *link_info)
{
@@ -2266,6 +2295,10 @@ static void mlo_process_link_remove(struct wlan_objmgr_vdev *vdev,
return;
}
/* Handle PTQM migration upon seeing AP removal for the first time */
if (!vdev_mlme->ml_reconfig_started)
mlo_sta_handle_ptqm_migration(vdev);
vdev_mlme->ml_reconfig_started = true;
qdf_timer_mod(&vdev_mlme->ml_reconfig_timer,
qdf_time_uint_to_ms(tbtt_count * bcn_int));