|
|
@@ -2044,19 +2044,24 @@ static int normalize_vports_min_rate(struct mlx5_eswitch *esw, u32 divider)
|
|
|
int mlx5_eswitch_set_vport_rate(struct mlx5_eswitch *esw, int vport,
|
|
|
u32 max_rate, u32 min_rate)
|
|
|
{
|
|
|
- u32 fw_max_bw_share = MLX5_CAP_QOS(esw->dev, max_tsar_bw_share);
|
|
|
- bool min_rate_supported = MLX5_CAP_QOS(esw->dev, esw_bw_share) &&
|
|
|
- fw_max_bw_share >= MLX5_MIN_BW_SHARE;
|
|
|
- bool max_rate_supported = MLX5_CAP_QOS(esw->dev, esw_rate_limit);
|
|
|
struct mlx5_vport *evport;
|
|
|
+ u32 fw_max_bw_share;
|
|
|
u32 previous_min_rate;
|
|
|
u32 divider;
|
|
|
+ bool min_rate_supported;
|
|
|
+ bool max_rate_supported;
|
|
|
int err = 0;
|
|
|
|
|
|
if (!ESW_ALLOWED(esw))
|
|
|
return -EPERM;
|
|
|
if (!LEGAL_VPORT(esw, vport))
|
|
|
return -EINVAL;
|
|
|
+
|
|
|
+ fw_max_bw_share = MLX5_CAP_QOS(esw->dev, max_tsar_bw_share);
|
|
|
+ min_rate_supported = MLX5_CAP_QOS(esw->dev, esw_bw_share) &&
|
|
|
+ fw_max_bw_share >= MLX5_MIN_BW_SHARE;
|
|
|
+ max_rate_supported = MLX5_CAP_QOS(esw->dev, esw_rate_limit);
|
|
|
+
|
|
|
if ((min_rate && !min_rate_supported) || (max_rate && !max_rate_supported))
|
|
|
return -EOPNOTSUPP;
|
|
|
|