qcacld-3.0: Abort roaming on link as well for MLO
Currently, roaming is not aborted in failure cases on the link vdev and it's aborted only on primary vdev. It results in link vdev not being cleaned up when roaming fails due to some reason. Change-Id: I0eb4b1da06a295935ff95be38228a5cacf127a73 CRs-Fixed: 3096648
This commit is contained in:

committed by
Madan Koyyalamudi

父節點
071e0d2559
當前提交
6d7dd83436
@@ -529,6 +529,7 @@ QDF_STATUS cm_roam_sync_event_handler_cb(struct wlan_objmgr_vdev *vdev,
|
||||
|
||||
err:
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
wlan_mlo_roam_abort_on_link(psoc, sync_ind);
|
||||
cm_fw_roam_abort_req(psoc, sync_ind->roamed_vdev_id);
|
||||
cm_roam_stop_req(psoc, sync_ind->roamed_vdev_id,
|
||||
REASON_ROAM_SYNCH_FAILED);
|
||||
|
@@ -173,6 +173,21 @@ void mlo_cm_roam_sync_cb(struct wlan_objmgr_vdev *vdev,
|
||||
void *event, uint32_t event_data_len);
|
||||
#endif /* WLAN_FEATURE_11BE_MLO_ADV_FEATURE */
|
||||
|
||||
/**
|
||||
* wlan_mlo_roam_abort_on_link - Abort roam on link
|
||||
*
|
||||
* @psoc: psoc pointer
|
||||
* @sync_ind: Roam sync indication
|
||||
*
|
||||
* Abort roaming on all the links except the primary. Roam abort on primary
|
||||
* link would be taken care in legacy path.
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS
|
||||
wlan_mlo_roam_abort_on_link(struct wlan_objmgr_psoc *psoc,
|
||||
struct roam_offload_synch_ind *sync_ind);
|
||||
|
||||
#else /* WLAN_FEATURE_11BE_MLO */
|
||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||
static inline
|
||||
@@ -232,5 +247,12 @@ static inline void
|
||||
mlo_roam_update_connected_links(struct wlan_objmgr_vdev *vdev,
|
||||
struct wlan_cm_connect_resp *connect_rsp)
|
||||
{}
|
||||
|
||||
static inline QDF_STATUS
|
||||
wlan_mlo_roam_abort_on_link(struct wlan_objmgr_psoc *psoc,
|
||||
struct roam_offload_synch_ind *sync_ind)
|
||||
{
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
#endif /* WLAN_FEATURE_11BE_MLO */
|
||||
#endif
|
||||
|
@@ -369,3 +369,21 @@ mlo_roam_update_connected_links(struct wlan_objmgr_vdev *vdev,
|
||||
connect_rsp->ml_parnter_info);
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
wlan_mlo_roam_abort_on_link(struct wlan_objmgr_psoc *psoc,
|
||||
struct roam_offload_synch_ind *sync_ind)
|
||||
{
|
||||
uint8_t i;
|
||||
QDF_STATUS status;
|
||||
|
||||
for (i = 0; i < sync_ind->num_setup_links; i++)
|
||||
if (sync_ind->ml_link[i].vdev_id != sync_ind->roamed_vdev_id) {
|
||||
status = cm_fw_roam_abort_req(psoc,
|
||||
sync_ind->roamed_vdev_id);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
mlme_err("LFR3: Fail to abort roam on vdev: %u",
|
||||
sync_ind->ml_link[i].vdev_id);
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
Reference in New Issue
Block a user