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:

کامیت شده توسط
Madan Koyyalamudi

والد
12e3558871
کامیت
2b4bc8d5df
@@ -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
|
||||
|
مرجع در شماره جدید
Block a user