|
@@ -3534,7 +3534,7 @@ cm_roam_switch_to_init(struct wlan_objmgr_pdev *pdev,
|
|
|
enum roam_offload_state cur_state;
|
|
|
uint8_t temp_vdev_id, roam_enabled_vdev_id;
|
|
|
uint32_t roaming_bitmap, count;
|
|
|
- bool dual_sta_roam_active, usr_disabled_roaming;
|
|
|
+ bool dual_sta_roam_active, usr_disabled_roaming, sta_concurrency_is_dbs;
|
|
|
QDF_STATUS status;
|
|
|
struct wlan_objmgr_psoc *psoc = wlan_pdev_get_psoc(pdev);
|
|
|
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
|
@@ -3552,8 +3552,18 @@ cm_roam_switch_to_init(struct wlan_objmgr_pdev *pdev,
|
|
|
dual_sta_policy = &mlme_obj->cfg.gen.dual_sta_policy;
|
|
|
dual_sta_roam_active =
|
|
|
wlan_mlme_get_dual_sta_roaming_enabled(psoc);
|
|
|
+ count = policy_mgr_mode_specific_connection_count(psoc, PM_STA_MODE,
|
|
|
+ NULL);
|
|
|
+ sta_concurrency_is_dbs = (count == 2) &&
|
|
|
+ !(policy_mgr_current_concurrency_is_mcc(psoc) ||
|
|
|
+ policy_mgr_current_concurrency_is_scc(psoc));
|
|
|
|
|
|
cur_state = mlme_get_roam_state(psoc, vdev_id);
|
|
|
+
|
|
|
+ mlme_info("sta count:%d, dual_sta_roam_active:%d, is_dbs:%d, state:%d",
|
|
|
+ count, dual_sta_roam_active, sta_concurrency_is_dbs,
|
|
|
+ cur_state);
|
|
|
+
|
|
|
switch (cur_state) {
|
|
|
case WLAN_ROAM_DEINIT:
|
|
|
roaming_bitmap = mlme_get_roam_trigger_bitmap(psoc, vdev_id);
|
|
@@ -3567,12 +3577,7 @@ cm_roam_switch_to_init(struct wlan_objmgr_pdev *pdev,
|
|
|
* Enable roaming on other interface only if STA + STA
|
|
|
* concurrency is in DBS.
|
|
|
*/
|
|
|
- count = policy_mgr_mode_specific_connection_count(psoc,
|
|
|
- PM_STA_MODE,
|
|
|
- NULL);
|
|
|
- if (dual_sta_roam_active && (count == 2 &&
|
|
|
- !(policy_mgr_current_concurrency_is_mcc(psoc) ||
|
|
|
- policy_mgr_current_concurrency_is_scc(psoc)))) {
|
|
|
+ if (dual_sta_roam_active && sta_concurrency_is_dbs) {
|
|
|
mlme_info("STA + STA concurrency is in DBS");
|
|
|
break;
|
|
|
}
|
|
@@ -3659,7 +3664,7 @@ cm_roam_switch_to_init(struct wlan_objmgr_pdev *pdev,
|
|
|
* PCL type to vdev level
|
|
|
*/
|
|
|
if (roam_enabled_vdev_id != WLAN_UMAC_VDEV_ID_MAX &&
|
|
|
- dual_sta_roam_active)
|
|
|
+ dual_sta_roam_active && sta_concurrency_is_dbs)
|
|
|
wlan_cm_roam_activate_pcl_per_vdev(psoc, vdev_id, true);
|
|
|
|
|
|
|