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
Este cometimento está contido em:

cometido por
Madan Koyyalamudi

ascendente
dd4e2f07dc
cometimento
987d406769
@@ -4034,6 +4034,14 @@ bool policy_mgr_is_mlo_sap_concurrency_allowed(struct wlan_objmgr_psoc *psoc,
|
||||
*/
|
||||
uint32_t
|
||||
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
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
static inline bool policy_mgr_is_mlo_sta_present(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@@ -3651,6 +3651,42 @@ policy_mgr_is_mlo_sap_concurrency_allowed(struct wlan_objmgr_psoc *psoc,
|
||||
|
||||
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
|
||||
static bool
|
||||
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)
|
||||
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];
|
||||
band = wlan_reg_freq_to_band(connected_sta_freq);
|
||||
if ((band == REG_BAND_2G && WLAN_REG_IS_24GHZ_CH_FREQ(freq)) ||
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador