diff --git a/components/cmn_services/policy_mgr/src/wlan_policy_mgr_core.c b/components/cmn_services/policy_mgr/src/wlan_policy_mgr_core.c index 720184b178f5..4bb1820e3851 100644 --- a/components/cmn_services/policy_mgr/src/wlan_policy_mgr_core.c +++ b/components/cmn_services/policy_mgr/src/wlan_policy_mgr_core.c @@ -1404,8 +1404,22 @@ void policy_mgr_set_pcl_for_connected_vdev(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id, bool clear_pcl) { struct policy_mgr_pcl_list msg = { {0} }; + struct wlan_objmgr_vdev *vdev; uint8_t roam_enabled_vdev_id; + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, + WLAN_POLICY_MGR_ID); + if (!vdev) { + policy_mgr_err("vdev is NULL"); + return; + } + + if (wlan_vdev_mlme_get_opmode(vdev) != QDF_STA_MODE) { + wlan_objmgr_vdev_release_ref(vdev, WLAN_POLICY_MGR_ID); + return; + } + wlan_objmgr_vdev_release_ref(vdev, WLAN_POLICY_MGR_ID); + /* * Get the vdev id of the STA on which roaming is already * initialized and set the vdev PCL for that STA vdev if dual