diff --git a/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c b/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c index cd9be988d695..b048579ee4e5 100644 --- a/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c +++ b/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c @@ -1722,13 +1722,24 @@ uint8_t policy_mgr_search_and_check_for_session_conc( QDF_STATUS status; enum policy_mgr_con_mode mode; bool ret; + struct policy_mgr_psoc_priv_obj *pm_ctx; - mode = policy_mgr_get_mode_by_vdev_id(psoc, session_id); - if (PM_MAX_NUM_OF_MODE == mode) { - policy_mgr_err("Invalid mode"); + pm_ctx = policy_mgr_get_context(psoc); + if (!pm_ctx) { + policy_mgr_err("Invalid Context"); return channel; } + if (pm_ctx->hdd_cbacks.get_mode_for_non_connected_vdev) { + mode = pm_ctx->hdd_cbacks.get_mode_for_non_connected_vdev( + psoc, session_id); + if (PM_MAX_NUM_OF_MODE == mode) { + policy_mgr_err("Invalid mode"); + return channel; + } + } else + return channel; + status = policy_mgr_get_channel_from_scan_result(psoc, roam_profile, &channel); if ((QDF_STATUS_SUCCESS != status) || (channel == 0)) {