qcacld-3.0: Add logic to disable a link during STA connect/roam

Add logic to disable a link vdev if concurrency doesn't allow it.
Send mlo_force_link_inactive in peer assoc for this and add
it in deleted table on connection complete.

Also disable the link if roam sync indication indicate
that link is disabled.

Change-Id: Ib0615308a669a5fd9d2b8ef6f8ab3f50953f658d
CRs-Fixed: 3192728
This commit is contained in:
Abhishek Singh
2022-05-09 12:12:08 +05:30
کامیت شده توسط Madan Koyyalamudi
والد 12e3558871
کامیت 2b4bc8d5df
7فایلهای تغییر یافته به همراه93 افزوده شده و 6 حذف شده

مشاهده پرونده

@@ -902,6 +902,32 @@ rel_ref:
return status;
}
#ifdef WLAN_FEATURE_11BE_MLO
static void
cm_get_and_disable_link_from_roam_ind(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id,
struct roam_offload_synch_ind *synch_data)
{
uint8_t i;
for (i = 0; i < synch_data->num_setup_links; i++) {
if (synch_data->ml_link[i].vdev_id == vdev_id &&
synch_data->ml_link[i].flags & CM_ROAM_LINK_FLAG_DISABLE) {
mlme_info("Vdev %d: link flags 0x%x, indicate link disable",
vdev_id, synch_data->ml_link[i].flags);
policy_mgr_move_vdev_from_connection_to_disabled_tbl(
psoc, vdev_id);
break;
}
}
}
#else
static inline void
cm_get_and_disable_link_from_roam_ind(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id,
struct roam_offload_synch_ind *synch_data)
{}
#endif
QDF_STATUS cm_fw_roam_complete(struct cnx_mgr *cm_ctx, void *data)
{
struct roam_offload_synch_ind *roam_synch_data;
@@ -941,6 +967,8 @@ QDF_STATUS cm_fw_roam_complete(struct cnx_mgr *cm_ctx, void *data)
goto end;
}
/* Check if FW as indicated this link as disabled */
cm_get_and_disable_link_from_roam_ind(psoc, vdev_id, roam_synch_data);
/*
* Following operations need to be done once roam sync
* completion is sent to FW, hence called here:

مشاهده پرونده

@@ -1437,7 +1437,11 @@ cm_connect_complete_ind(struct wlan_objmgr_vdev *vdev,
rsp->freq);
if (QDF_IS_STATUS_SUCCESS(rsp->connect_status)) {
policy_mgr_incr_active_session(psoc, op_mode, vdev_id);
if (policy_mgr_ml_link_vdev_need_to_be_disabled(psoc, vdev))
policy_mgr_move_vdev_from_connection_to_disabled_tbl(
psoc, vdev_id);
else
policy_mgr_incr_active_session(psoc, op_mode, vdev_id);
cm_process_connect_complete(psoc, pdev, vdev, rsp);
wlan_tdls_notify_sta_connect(vdev_id,
mlme_get_tdls_chan_switch_prohibited(vdev),

مشاهده پرونده

@@ -2399,6 +2399,9 @@ struct cm_hw_mode_trans_ind {
struct policy_mgr_pdev_mac_freq_map mac_freq_map[MAX_FREQ_RANGE_NUM];
};
/* If link is disabled, during roam sync */
#define CM_ROAM_LINK_FLAG_DISABLE 0x1
/*
* struct ml_setup_link_param - MLO setup link param
* @vdev_id: vdev id of the link