qcacld-3.0: allow set link for MLSR in DBS rd
In DBS rd, SAP on 2.4 GHz, and ML STA on 5 GHz + 6 GHz. Driver will force inactive one of link to inactive, for example 6 GHz link. When user sets the 6 GHz link to active, current driver rejects. Consider the SAP is on 2.4 GHz, MLSR can be switched between on 5 GHz and 6 GHz, to allow such user request. Change-Id: I32440d0c079b9a4bb9551087ecd959b3f9fc25c4 CRs-Fixed: 3675217
This commit is contained in:

committed by
Ravindra Konda

parent
29cc99b960
commit
4b57844470
@@ -4487,9 +4487,24 @@ policy_mgr_update_dynamic_inactive_bitmap(
|
|||||||
inactive_links |= candidate_inactive_links;
|
inactive_links |= candidate_inactive_links;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 3. If there are links inactive from fw event's
|
/* 3. If standby link is present (may not be force inactive),
|
||||||
|
* select the standby link as dynamic inactive link.
|
||||||
|
*/
|
||||||
|
if (num < force_inactive_num &&
|
||||||
|
num < QDF_ARRAY_SIZE(link_ids)) {
|
||||||
|
candidate_inactive_links =
|
||||||
|
force_inactive_num_bitmap &
|
||||||
|
standby_links;
|
||||||
|
num += ml_nlink_convert_link_bitmap_to_ids(
|
||||||
|
candidate_inactive_links,
|
||||||
|
QDF_ARRAY_SIZE(link_ids) - num,
|
||||||
|
&link_ids[num]);
|
||||||
|
inactive_links |= candidate_inactive_links;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 4. If there are links inactive from fw event's
|
||||||
* curr_inactive_linkid_bitmap, select the current inactive
|
* curr_inactive_linkid_bitmap, select the current inactive
|
||||||
* links as third option. note: those link may not be force
|
* links as last option. note: those link may not be force
|
||||||
* inactive.
|
* inactive.
|
||||||
*/
|
*/
|
||||||
if (num < force_inactive_num &&
|
if (num < force_inactive_num &&
|
||||||
@@ -7150,27 +7165,6 @@ policy_mgr_is_emlsr_sta_concurrency_present(struct wlan_objmgr_psoc *psoc)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
|
||||||
policy_mgr_is_ml_sta_concurrency_present(struct wlan_objmgr_psoc *psoc)
|
|
||||||
{
|
|
||||||
uint8_t num_ml_sta = 0, num_disabled_ml_sta = 0, num_non_ml = 0;
|
|
||||||
uint8_t ml_sta_vdev_lst[MAX_NUMBER_OF_CONC_CONNECTIONS] = {0};
|
|
||||||
qdf_freq_t ml_freq_lst[MAX_NUMBER_OF_CONC_CONNECTIONS] = {0};
|
|
||||||
uint8_t num_enabled_ml_sta, conn_count;
|
|
||||||
|
|
||||||
conn_count = policy_mgr_get_connection_count(psoc);
|
|
||||||
policy_mgr_get_ml_sta_info_psoc(psoc, &num_ml_sta,
|
|
||||||
&num_disabled_ml_sta,
|
|
||||||
ml_sta_vdev_lst, ml_freq_lst,
|
|
||||||
&num_non_ml,
|
|
||||||
NULL, NULL);
|
|
||||||
num_enabled_ml_sta = num_ml_sta;
|
|
||||||
if (num_ml_sta >= num_disabled_ml_sta)
|
|
||||||
num_enabled_ml_sta = num_ml_sta - num_disabled_ml_sta;
|
|
||||||
|
|
||||||
return conn_count > num_enabled_ml_sta;
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint8_t
|
static uint8_t
|
||||||
policy_mgr_get_affected_links_for_sta_sta(struct wlan_objmgr_psoc *psoc,
|
policy_mgr_get_affected_links_for_sta_sta(struct wlan_objmgr_psoc *psoc,
|
||||||
uint8_t num_ml, qdf_freq_t *freq_list,
|
uint8_t num_ml, qdf_freq_t *freq_list,
|
||||||
@@ -8665,10 +8659,6 @@ void policy_mgr_activate_mlo_links_nlink(struct wlan_objmgr_psoc *psoc,
|
|||||||
policy_mgr_debug("Concurrency exists, cannot enter EMLSR mode");
|
policy_mgr_debug("Concurrency exists, cannot enter EMLSR mode");
|
||||||
goto done;
|
goto done;
|
||||||
} else {
|
} else {
|
||||||
if (policy_mgr_is_ml_sta_concurrency_present(psoc)) {
|
|
||||||
policy_mgr_debug("Concurrency exists, don't enter EMLSR mode");
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
ml_nlink_get_curr_force_state(psoc, vdev, &curr);
|
ml_nlink_get_curr_force_state(psoc, vdev, &curr);
|
||||||
if (curr.force_inactive_num || curr.force_active_num) {
|
if (curr.force_inactive_num || curr.force_active_num) {
|
||||||
if (curr.force_inactive_num) {
|
if (curr.force_inactive_num) {
|
||||||
|
Reference in New Issue
Block a user