net/mlx5: Fix peer devlink set for SF representor devlink port
[linux-2.6-block.git] / drivers / net / ethernet / mellanox / mlx5 / core / main.c
index 331ce47f51a17a386213d88db9aa7b3cb15d6b41..6574c145dc1e2da27d2d3a6071028dc010d0a825 100644 (file)
@@ -1680,6 +1680,8 @@ int mlx5_init_one_light(struct mlx5_core_dev *dev)
        struct devlink *devlink = priv_to_devlink(dev);
        int err;
 
+       devl_lock(devlink);
+       devl_register(devlink);
        dev->state = MLX5_DEVICE_STATE_UP;
        err = mlx5_function_enable(dev, true, mlx5_tout_ms(dev, FW_PRE_INIT_TIMEOUT));
        if (err) {
@@ -1693,27 +1695,21 @@ int mlx5_init_one_light(struct mlx5_core_dev *dev)
                goto query_hca_caps_err;
        }
 
-       devl_lock(devlink);
-       devl_register(devlink);
-
        err = mlx5_devlink_params_register(priv_to_devlink(dev));
        if (err) {
                mlx5_core_warn(dev, "mlx5_devlink_param_reg err = %d\n", err);
-               goto params_reg_err;
+               goto query_hca_caps_err;
        }
 
        devl_unlock(devlink);
        return 0;
 
-params_reg_err:
-       devl_unregister(devlink);
-       devl_unlock(devlink);
 query_hca_caps_err:
-       devl_unregister(devlink);
-       devl_unlock(devlink);
        mlx5_function_disable(dev, true);
 out:
        dev->state = MLX5_DEVICE_STATE_INTERNAL_ERROR;
+       devl_unregister(devlink);
+       devl_unlock(devlink);
        return err;
 }