qcacmn: Fix standby link removal fail

Add callback mlme_vdev_reconfig_notify_standby to cld code to
handle standby link removal.
For standby link, it is going to be removed by AP, so don't
start link removal timer for it. Force inactive it to avoid
link switch to it.

Change-Id: Iae8eebeb2263b0057026c0e80223ef5c6b68a41f
CRs-Fixed: 3640204
This commit is contained in:
Liangwei Dong
2023-10-12 17:31:56 +08:00
committed by Ravindra Konda
parent de24a36639
commit a725261a81
2 changed files with 31 additions and 0 deletions

View File

@@ -28,6 +28,7 @@
struct vdev_mlme_obj;
struct cnx_mgr;
struct ml_rv_info;
/* Requestor ID for multiple vdev restart */
#define MULTIPLE_VDEV_RESTART_REQ_ID 0x1234
@@ -721,6 +722,8 @@ enum vdev_start_resp_type {
* the first ml reconfig IE
* @mlme_vdev_reconfig_timer_complete: callback to process ml reconfing
* operation
* @mlme_vdev_reconfig_notify_standby: callback to notify to process standby
* link removal
* @mlme_vdev_notify_mlo_sync_wait_entry:
*/
struct vdev_mlme_ops {
@@ -806,6 +809,9 @@ struct vdev_mlme_ops {
uint16_t *tbtt_count, uint16_t bcn_int);
void (*mlme_vdev_reconfig_timer_complete)(
struct vdev_mlme_obj *vdev_mlme);
QDF_STATUS (*mlme_vdev_reconfig_notify_standby)(
struct vdev_mlme_obj *vdev_mlme,
struct ml_rv_info *reconfig_info);
QDF_STATUS (*mlme_vdev_notify_mlo_sync_wait_entry)(
struct vdev_mlme_obj *vdev_mlme);
};

View File

@@ -2012,6 +2012,29 @@ QDF_STATUS mlo_sta_handle_csa_standby_link(
qdf_mem_free(params.chan);
return status;
}
static void mlo_sta_handle_link_reconfig_standby_link(
struct wlan_objmgr_vdev *vdev,
struct ml_rv_info *reconfig_info)
{
struct vdev_mlme_obj *vdev_mlme;
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
if (!vdev_mlme)
return;
if (vdev_mlme->ops &&
vdev_mlme->ops->mlme_vdev_reconfig_notify_standby) {
vdev_mlme->ops->mlme_vdev_reconfig_notify_standby(
vdev_mlme,
reconfig_info);
}
}
#else
static void mlo_sta_handle_link_reconfig_standby_link(
struct wlan_objmgr_vdev *vdev,
struct ml_rv_info *reconfig_info)
{
}
#endif
QDF_STATUS mlo_sta_csa_save_params(struct wlan_mlo_dev_context *mlo_dev_ctx,
@@ -2704,6 +2727,8 @@ check_ml_rv:
}
}
mlo_sta_handle_link_reconfig_standby_link(vdev, &reconfig_info);
err_release_refs:
for (i = 0; i < vdev_count; i++)