| From cc51ff5d4aae8b7ed614f7f9d0855f1e48a5a115 Mon Sep 17 00:00:00 2001 |
| From: Aya Levin <ayal@mellanox.com> |
| Date: Sun, 1 Dec 2019 16:33:55 +0200 |
| Subject: [PATCH] net/mlx5e: ethtool, Fix analysis of speed setting |
| |
| commit 3d7cadae51f1b7f28358e36d0a1ce3f0ae2eee60 upstream. |
| |
| When setting speed to 100G via ethtool (AN is set to off), only 25G*4 is |
| configured while the user, who has an advanced HW which supports |
| extended PTYS, expects also 50G*2 to be configured. |
| With this patch, when extended PTYS mode is available, configure |
| PTYS via extended fields. |
| |
| Fixes: 4b95840a6ced ("net/mlx5e: Fix matching of speed to PRM link modes") |
| Signed-off-by: Aya Levin <ayal@mellanox.com> |
| Reviewed-by: Eran Ben Elisha <eranbe@mellanox.com> |
| Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c |
| index 6f1216dc31da..2e177f3f403b 100644 |
| --- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c |
| +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c |
| @@ -1006,18 +1006,11 @@ static bool ext_link_mode_requested(const unsigned long *adver) |
| return bitmap_intersects(modes, adver, __ETHTOOL_LINK_MODE_MASK_NBITS); |
| } |
| |
| -static bool ext_speed_requested(u32 speed) |
| -{ |
| -#define MLX5E_MAX_PTYS_LEGACY_SPEED 100000 |
| - return !!(speed > MLX5E_MAX_PTYS_LEGACY_SPEED); |
| -} |
| - |
| -static bool ext_requested(u8 autoneg, const unsigned long *adver, u32 speed) |
| +static bool ext_requested(u8 autoneg, const unsigned long *adver, bool ext_supported) |
| { |
| bool ext_link_mode = ext_link_mode_requested(adver); |
| - bool ext_speed = ext_speed_requested(speed); |
| |
| - return autoneg == AUTONEG_ENABLE ? ext_link_mode : ext_speed; |
| + return autoneg == AUTONEG_ENABLE ? ext_link_mode : ext_supported; |
| } |
| |
| int mlx5e_ethtool_set_link_ksettings(struct mlx5e_priv *priv, |
| @@ -1044,8 +1037,8 @@ int mlx5e_ethtool_set_link_ksettings(struct mlx5e_priv *priv, |
| autoneg = link_ksettings->base.autoneg; |
| speed = link_ksettings->base.speed; |
| |
| - ext = ext_requested(autoneg, adver, speed), |
| ext_supported = MLX5_CAP_PCAM_FEATURE(mdev, ptys_extended_ethernet); |
| + ext = ext_requested(autoneg, adver, ext_supported); |
| if (!ext_supported && ext) |
| return -EOPNOTSUPP; |
| |
| -- |
| 2.7.4 |
| |