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:

committed by
Madan Koyyalamudi

parent
12e3558871
commit
2b4bc8d5df
@@ -1039,6 +1039,18 @@ void policy_mgr_move_vdev_from_connection_to_disabled_tbl(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id);
|
||||
|
||||
/**
|
||||
* policy_mgr_ml_link_vdev_need_to_be_disabled() - check if ml link need to be
|
||||
* disabled during connection.
|
||||
* @psoc: psoc
|
||||
* @vdev: vdev
|
||||
*
|
||||
* Return: true if STA link is need to be disabled else false.
|
||||
*/
|
||||
bool
|
||||
policy_mgr_ml_link_vdev_need_to_be_disabled(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* policy_mgr_handle_link_enable_disable_resp() - enable/disable a ml link
|
||||
* @vdev: vdev
|
||||
@@ -1069,6 +1081,13 @@ policy_mgr_move_vdev_from_disabled_to_connection_tbl(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id) {}
|
||||
|
||||
static inline bool
|
||||
policy_mgr_ml_link_vdev_need_to_be_disabled(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline void
|
||||
policy_mgr_move_vdev_from_connection_to_disabled_tbl(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
|
@@ -3225,6 +3225,31 @@ void policy_mgr_move_vdev_from_connection_to_disabled_tbl(
|
||||
policy_mgr_add_to_disabled_links(pm_ctx, freq, mode, vdev_id);
|
||||
}
|
||||
|
||||
bool
|
||||
policy_mgr_ml_link_vdev_need_to_be_disabled(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
union conc_ext_flag conc_ext_flags;
|
||||
|
||||
if (wlan_vdev_mlme_get_opmode(vdev) != QDF_STA_MODE)
|
||||
return false;
|
||||
|
||||
/* Check only for link vdev */
|
||||
if (!wlan_vdev_mlme_is_mlo_vdev(vdev) ||
|
||||
!wlan_vdev_mlme_is_mlo_link_vdev(vdev))
|
||||
return false;
|
||||
|
||||
conc_ext_flags.value = policy_mgr_get_conc_ext_flags(vdev, false);
|
||||
/*
|
||||
* For non-assoc link vdev set link as disabled if concurency is
|
||||
* not allowed
|
||||
*/
|
||||
return !policy_mgr_allow_concurrency(psoc, PM_STA_MODE,
|
||||
wlan_get_operation_chan_freq(vdev),
|
||||
HW_MODE_20_MHZ,
|
||||
conc_ext_flags.value);
|
||||
}
|
||||
|
||||
static void
|
||||
policy_mgr_enable_disable_link_from_vdev_bitmask(struct wlan_objmgr_psoc *psoc,
|
||||
unsigned long enable_vdev_mask,
|
||||
|
Reference in New Issue
Block a user