net/mlx5e: Enforce setting of a single FEC mode
authorAya Levin <ayal@mellanox.com>
Tue, 11 Feb 2020 22:32:49 +0000 (14:32 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 23 Apr 2020 08:36:28 +0000 (10:36 +0200)
[ Upstream commit 4bd9d5070b92da012f2715cf8e4859acb78b8f35 ]

Ethtool command allow setting of several FEC modes in a single set
command. The driver can only set a single FEC mode at a time. With this
patch driver will reply not-supported on setting several FEC modes.

Signed-off-by: Aya Levin <ayal@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c

index 304ddce..39ee325 100644 (file)
@@ -1548,6 +1548,10 @@ static int mlx5e_set_fecparam(struct net_device *netdev,
        int mode;
        int err;
 
+       if (bitmap_weight((unsigned long *)&fecparam->fec,
+                         ETHTOOL_FEC_BASER_BIT + 1) > 1)
+               return -EOPNOTSUPP;
+
        for (mode = 0; mode < ARRAY_SIZE(pplm_fec_2_ethtool); mode++) {
                if (!(pplm_fec_2_ethtool[mode] & fecparam->fec))
                        continue;