qcacld-3.0: skip frequency filtering for MLO STA scenario
If MLO STA is present, allow further STA connections to all available bands/channels irrespective of existing STA connection band. Change-Id: Ic7da10b2e74645b73c579b38f43bb7e3105b6f55 CRs-Fixed: 3088656
This commit is contained in:

zatwierdzone przez
Madan Koyyalamudi

rodzic
dd4e2f07dc
commit
987d406769
@@ -4034,6 +4034,14 @@ bool policy_mgr_is_mlo_sap_concurrency_allowed(struct wlan_objmgr_psoc *psoc,
|
|||||||
*/
|
*/
|
||||||
uint32_t
|
uint32_t
|
||||||
policy_mgr_get_conc_ext_flags(struct wlan_objmgr_vdev *vdev, bool force_mlo);
|
policy_mgr_get_conc_ext_flags(struct wlan_objmgr_vdev *vdev, bool force_mlo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* policy_mgr_is_mlo_sta_present() - Check whether MLO STA is present
|
||||||
|
* @psoc: PSOC object information
|
||||||
|
*
|
||||||
|
* Return: True if MLO STA is present, otherwise false.
|
||||||
|
*/
|
||||||
|
bool policy_mgr_is_mlo_sta_present(struct wlan_objmgr_psoc *psoc);
|
||||||
#else
|
#else
|
||||||
|
|
||||||
static inline bool policy_mgr_is_mlo_sap_concurrency_allowed(
|
static inline bool policy_mgr_is_mlo_sap_concurrency_allowed(
|
||||||
@@ -4048,6 +4056,11 @@ policy_mgr_get_conc_ext_flags(struct wlan_objmgr_vdev *vdev, bool force_mlo)
|
|||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool policy_mgr_is_mlo_sta_present(struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -3651,6 +3651,42 @@ policy_mgr_is_mlo_sap_concurrency_allowed(struct wlan_objmgr_psoc *psoc,
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool policy_mgr_is_mlo_sta_present(struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
uint32_t conn_index = 0;
|
||||||
|
struct policy_mgr_psoc_priv_obj *pm_ctx;
|
||||||
|
struct wlan_objmgr_vdev *vdev;
|
||||||
|
bool mlo_sta_present = false;
|
||||||
|
uint8_t vdev_id;
|
||||||
|
|
||||||
|
pm_ctx = policy_mgr_get_context(psoc);
|
||||||
|
if (!pm_ctx) {
|
||||||
|
policy_mgr_err("Invalid Context");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
|
||||||
|
for (conn_index = 0;
|
||||||
|
conn_index < MAX_NUMBER_OF_CONC_CONNECTIONS && !mlo_sta_present;
|
||||||
|
conn_index++) {
|
||||||
|
if (pm_conc_connection_list[conn_index].mode != PM_STA_MODE ||
|
||||||
|
!pm_conc_connection_list[conn_index].in_use)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
vdev_id = pm_conc_connection_list[conn_index].vdev_id;
|
||||||
|
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
||||||
|
WLAN_POLICY_MGR_ID);
|
||||||
|
if (!vdev)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
mlo_sta_present = wlan_vdev_mlme_is_mlo_vdev(vdev);
|
||||||
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_POLICY_MGR_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_mutex_release(&pm_ctx->qdf_conc_list_lock);
|
||||||
|
return mlo_sta_present;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
static bool
|
static bool
|
||||||
policy_mgr_allow_sta_concurrency(struct wlan_objmgr_psoc *psoc,
|
policy_mgr_allow_sta_concurrency(struct wlan_objmgr_psoc *psoc,
|
||||||
|
@@ -496,6 +496,13 @@ wlan_cm_dual_sta_is_freq_allowed(struct wlan_objmgr_psoc *psoc,
|
|||||||
opmode != QDF_STA_MODE)
|
opmode != QDF_STA_MODE)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For MLO STA scenario, allow further STA connections to all available
|
||||||
|
* bands/channels irrespective of existing STA connection band.
|
||||||
|
*/
|
||||||
|
if (policy_mgr_is_mlo_sta_present(psoc))
|
||||||
|
return true;
|
||||||
|
|
||||||
connected_sta_freq = op_ch_freq_list[0];
|
connected_sta_freq = op_ch_freq_list[0];
|
||||||
band = wlan_reg_freq_to_band(connected_sta_freq);
|
band = wlan_reg_freq_to_band(connected_sta_freq);
|
||||||
if ((band == REG_BAND_2G && WLAN_REG_IS_24GHZ_CH_FREQ(freq)) ||
|
if ((band == REG_BAND_2G && WLAN_REG_IS_24GHZ_CH_FREQ(freq)) ||
|
||||||
|
Reference in New Issue
Block a user