esw->enabled_vports = 0;
        esw->mode = SRIOV_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;
 
+       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, vf_nvports, total_nvports);
        if (err)
                return err;
        esw_offloads_devcom_cleanup(esw);
        esw_offloads_unload_all_reps(esw, num_vfs);
        esw_offloads_steering_cleanup(esw);
+       esw->offloads.encap = DEVLINK_ESWITCH_ENCAP_MODE_NONE;
 }
 
 static int esw_mode_from_devlink(u16 mode, u16 *mlx5_mode)