| From a491edc7ae707950453221f5d79fcf17defb3fa8 Mon Sep 17 00:00:00 2001 |
| From: Shay Agroskin <shayag@mellanox.com> |
| Date: Wed, 27 Jun 2018 15:43:07 +0300 |
| Subject: net/mlx5e: Refine ets validation function |
| |
| [ Upstream commit e279d634f3d57452eb106a0c0e99a6add3fba1a6 ] |
| |
| Removed an error message received when configuring ETS total |
| bandwidth to be zero. |
| Our hardware doesn't support such configuration, so we shall |
| reject it in the driver. Nevertheless, we removed the error message |
| in order to eliminate error messages caused by old userspace tools |
| who try to pass such configuration. |
| |
| Fixes: ff0891915cd7 ("net/mlx5e: Fix ETS BW check") |
| Signed-off-by: Shay Agroskin <shayag@mellanox.com> |
| Reviewed-by: Huy Nguyen <huyn@mellanox.com> |
| Reviewed-by: Eran Ben Elisha <eranbe@mellanox.com> |
| Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| .../net/ethernet/mellanox/mlx5/core/en_dcbnl.c | 17 ++++++++--------- |
| 1 file changed, 8 insertions(+), 9 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c b/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c |
| index 9d64d0759ee9..a5dd99aaf321 100644 |
| --- a/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c |
| +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c |
| @@ -257,7 +257,8 @@ int mlx5e_dcbnl_ieee_setets_core(struct mlx5e_priv *priv, struct ieee_ets *ets) |
| } |
| |
| static int mlx5e_dbcnl_validate_ets(struct net_device *netdev, |
| - struct ieee_ets *ets) |
| + struct ieee_ets *ets, |
| + bool zero_sum_allowed) |
| { |
| bool have_ets_tc = false; |
| int bw_sum = 0; |
| @@ -282,8 +283,9 @@ static int mlx5e_dbcnl_validate_ets(struct net_device *netdev, |
| } |
| |
| if (have_ets_tc && bw_sum != 100) { |
| - netdev_err(netdev, |
| - "Failed to validate ETS: BW sum is illegal\n"); |
| + if (bw_sum || (!bw_sum && !zero_sum_allowed)) |
| + netdev_err(netdev, |
| + "Failed to validate ETS: BW sum is illegal\n"); |
| return -EINVAL; |
| } |
| return 0; |
| @@ -298,7 +300,7 @@ static int mlx5e_dcbnl_ieee_setets(struct net_device *netdev, |
| if (!MLX5_CAP_GEN(priv->mdev, ets)) |
| return -EOPNOTSUPP; |
| |
| - err = mlx5e_dbcnl_validate_ets(netdev, ets); |
| + err = mlx5e_dbcnl_validate_ets(netdev, ets, false); |
| if (err) |
| return err; |
| |
| @@ -477,12 +479,9 @@ static u8 mlx5e_dcbnl_setall(struct net_device *netdev) |
| ets.prio_tc[i] = cee_cfg->prio_to_pg_map[i]; |
| } |
| |
| - err = mlx5e_dbcnl_validate_ets(netdev, &ets); |
| - if (err) { |
| - netdev_err(netdev, |
| - "%s, Failed to validate ETS: %d\n", __func__, err); |
| + err = mlx5e_dbcnl_validate_ets(netdev, &ets, true); |
| + if (err) |
| goto out; |
| - } |
| |
| err = mlx5e_dcbnl_ieee_setets_core(priv, &ets); |
| if (err) { |
| -- |
| 2.17.1 |
| |