|
@@ -1837,6 +1837,65 @@ static void mlme_init_roam_offload_cfg(struct wlan_objmgr_psoc *psoc,
|
|
|
qdf_mem_zero(&lfr->roam_rt_stats, sizeof(lfr->roam_rt_stats));
|
|
|
}
|
|
|
|
|
|
+void
|
|
|
+wlan_mlme_defer_pmk_set_in_roaming(struct wlan_objmgr_psoc *psoc,
|
|
|
+ uint8_t vdev_id, bool set_pmk_pending)
|
|
|
+{
|
|
|
+ struct wlan_objmgr_vdev *vdev;
|
|
|
+ struct mlme_legacy_priv *mlme_priv;
|
|
|
+
|
|
|
+ if (set_pmk_pending && !MLME_IS_ROAM_SYNCH_IN_PROGRESS(psoc, vdev_id))
|
|
|
+ return;
|
|
|
+
|
|
|
+ vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
|
|
+ WLAN_MLME_OBJMGR_ID);
|
|
|
+
|
|
|
+ if (!vdev) {
|
|
|
+ mlme_err("get vdev failed");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
|
|
|
+
|
|
|
+ if (!mlme_priv) {
|
|
|
+ wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_OBJMGR_ID);
|
|
|
+ mlme_legacy_err("vdev legacy private object is NULL");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ mlme_priv->mlme_roam.set_pmk_pending = set_pmk_pending;
|
|
|
+ wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_OBJMGR_ID);
|
|
|
+}
|
|
|
+
|
|
|
+bool
|
|
|
+wlan_mlme_is_pmk_set_deferred(struct wlan_objmgr_psoc *psoc,
|
|
|
+ uint8_t vdev_id)
|
|
|
+{
|
|
|
+ struct wlan_objmgr_vdev *vdev;
|
|
|
+ struct mlme_legacy_priv *mlme_priv;
|
|
|
+ bool set_pmk_pending;
|
|
|
+
|
|
|
+ vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
|
|
+ WLAN_MLME_OBJMGR_ID);
|
|
|
+
|
|
|
+ if (!vdev) {
|
|
|
+ mlme_err("get vdev failed");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
|
|
|
+
|
|
|
+ if (!mlme_priv) {
|
|
|
+ wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_OBJMGR_ID);
|
|
|
+ mlme_legacy_err("vdev legacy private object is NULL");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ set_pmk_pending = mlme_priv->mlme_roam.set_pmk_pending;
|
|
|
+ wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_OBJMGR_ID);
|
|
|
+
|
|
|
+ return set_pmk_pending;
|
|
|
+}
|
|
|
#else
|
|
|
static void mlme_init_roam_offload_cfg(struct wlan_objmgr_psoc *psoc,
|
|
|
struct wlan_mlme_lfr_cfg *lfr)
|