}
  
        esw->enabled_vports = 0;
 -      esw->mode = SRIOV_NONE;
 +      esw->mode = MLX5_ESWITCH_NONE;
        esw->offloads.inline_mode = MLX5_INLINE_MODE_NONE;
-       if (MLX5_CAP_ESW_FLOWTABLE_FDB(dev, reformat) &&
-           MLX5_CAP_ESW_FLOWTABLE_FDB(dev, decap))
-               esw->offloads.encap = DEVLINK_ESWITCH_ENCAP_MODE_BASIC;
-       else
-               esw->offloads.encap = DEVLINK_ESWITCH_ENCAP_MODE_NONE;
  
        dev->priv.eswitch = esw;
        return 0;
 
  {
        int err;
  
 -      err = esw_offloads_steering_init(esw, vf_nvports, total_nvports);
+       if (MLX5_CAP_ESW_FLOWTABLE_FDB(esw->dev, reformat) &&
+           MLX5_CAP_ESW_FLOWTABLE_FDB(esw->dev, decap))
+               esw->offloads.encap = DEVLINK_ESWITCH_ENCAP_MODE_BASIC;
+       else
+               esw->offloads.encap = DEVLINK_ESWITCH_ENCAP_MODE_NONE;
+ 
 +      err = esw_offloads_steering_init(esw);
        if (err)
                return err;
  
  
  void esw_offloads_cleanup(struct mlx5_eswitch *esw)
  {
 -      u16 num_vfs;
 -
 -      if (mlx5_core_is_ecpf_esw_manager(esw->dev)) {
 -              mlx5_eq_notifier_unregister(esw->dev, &esw->host_info.nb);
 -              flush_workqueue(esw->work_queue);
 -              num_vfs = esw->host_info.num_vfs;
 -      } else {
 -              num_vfs = esw->dev->priv.sriov.num_vfs;
 -      }
 -
        mlx5_rdma_disable_roce(esw->dev);
        esw_offloads_devcom_cleanup(esw);
 -      esw_offloads_unload_all_reps(esw, num_vfs);
 +      esw_offloads_unload_all_reps(esw);
 +      if (mlx5_eswitch_vport_match_metadata_enabled(esw))
 +              mlx5_eswitch_disable_passing_vport_metadata(esw);
        esw_offloads_steering_cleanup(esw);
+       esw->offloads.encap = DEVLINK_ESWITCH_ENCAP_MODE_NONE;
  }
  
  static int esw_mode_from_devlink(u16 mode, u16 *mlx5_mode)