]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.19.46/net-mlx5e-fix-ethtool-rxfh-commands-when-config_mlx5_en_rxnfc-is-disabled.patch
Linux 4.19.46
[thirdparty/kernel/stable-queue.git] / releases / 4.19.46 / net-mlx5e-fix-ethtool-rxfh-commands-when-config_mlx5_en_rxnfc-is-disabled.patch
CommitLineData
91562c7b
GKH
1From foo@baz Wed 22 May 2019 08:37:51 AM CEST
2From: Saeed Mahameed <saeedm@mellanox.com>
3Date: Tue, 7 May 2019 12:59:38 -0700
4Subject: net/mlx5e: Fix ethtool rxfh commands when CONFIG_MLX5_EN_RXNFC is disabled
5
6From: Saeed Mahameed <saeedm@mellanox.com>
7
8[ Upstream commit 8f0916c6dc5cd5e3bc52416fa2a9ff4075080180 ]
9
10ethtool user spaces needs to know ring count via ETHTOOL_GRXRINGS when
11executing (ethtool -x) which is retrieved via ethtool get_rxnfc callback,
12in mlx5 this callback is disabled when CONFIG_MLX5_EN_RXNFC=n.
13
14This patch allows only ETHTOOL_GRXRINGS command on mlx5e_get_rxnfc() when
15CONFIG_MLX5_EN_RXNFC is disabled, so ethtool -x will continue working.
16
17Fixes: fe6d86b3c316 ("net/mlx5e: Add CONFIG_MLX5_EN_RXNFC for ethtool rx nfc")
18Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20---
21 drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c | 18 +++++++++++++++++-
22 1 file changed, 17 insertions(+), 1 deletion(-)
23
24--- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
25+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
26@@ -1609,6 +1609,22 @@ static int mlx5e_flash_device(struct net
27 return mlx5e_ethtool_flash_device(priv, flash);
28 }
29
30+#ifndef CONFIG_MLX5_EN_RXNFC
31+/* When CONFIG_MLX5_EN_RXNFC=n we only support ETHTOOL_GRXRINGS
32+ * otherwise this function will be defined from en_fs_ethtool.c
33+ */
34+static int mlx5e_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *info, u32 *rule_locs)
35+{
36+ struct mlx5e_priv *priv = netdev_priv(dev);
37+
38+ if (info->cmd != ETHTOOL_GRXRINGS)
39+ return -EOPNOTSUPP;
40+ /* ring_count is needed by ethtool -x */
41+ info->data = priv->channels.params.num_channels;
42+ return 0;
43+}
44+#endif
45+
46 const struct ethtool_ops mlx5e_ethtool_ops = {
47 .get_drvinfo = mlx5e_get_drvinfo,
48 .get_link = ethtool_op_get_link,
49@@ -1627,8 +1643,8 @@ const struct ethtool_ops mlx5e_ethtool_o
50 .get_rxfh_indir_size = mlx5e_get_rxfh_indir_size,
51 .get_rxfh = mlx5e_get_rxfh,
52 .set_rxfh = mlx5e_set_rxfh,
53-#ifdef CONFIG_MLX5_EN_RXNFC
54 .get_rxnfc = mlx5e_get_rxnfc,
55+#ifdef CONFIG_MLX5_EN_RXNFC
56 .set_rxnfc = mlx5e_set_rxnfc,
57 #endif
58 .flash_device = mlx5e_flash_device,