]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net/mlx5e: Use extack in set rxfh callback
authorGal Pressman <gal@nvidia.com>
Sun, 28 Sep 2025 21:25:23 +0000 (00:25 +0300)
committerJakub Kicinski <kuba@kernel.org>
Wed, 1 Oct 2025 00:21:15 +0000 (17:21 -0700)
The ->set/create/modify_rxfh() callbacks now pass a valid extack instead
of NULL through netlink [1]. In case of an error, reflect it through
extack instead of a dmesg print.

[1]
commit c0ae03588bbb ("ethtool: rss: initial RSS_SET (indirection table handling)")

Signed-off-by: Gal Pressman <gal@nvidia.com>
Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/1759094723-843774-8-git-send-email-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c

index fd45384a855b814b3dfd965647cb648b05cd2032..53e5ae252eac5890e8407030eb526e8e3bcd7242 100644 (file)
@@ -1494,7 +1494,8 @@ static int mlx5e_get_rxfh(struct net_device *netdev, struct ethtool_rxfh_param *
 }
 
 static int mlx5e_rxfh_hfunc_check(struct mlx5e_priv *priv,
-                                 const struct ethtool_rxfh_param *rxfh)
+                                 const struct ethtool_rxfh_param *rxfh,
+                                 struct netlink_ext_ack *extack)
 {
        unsigned int count;
 
@@ -1504,8 +1505,10 @@ static int mlx5e_rxfh_hfunc_check(struct mlx5e_priv *priv,
                unsigned int xor8_max_channels = mlx5e_rqt_max_num_channels_allowed_for_xor8();
 
                if (count > xor8_max_channels) {
-                       netdev_err(priv->netdev, "%s: Cannot set RSS hash function to XOR, current number of channels (%d) exceeds the maximum allowed for XOR8 RSS hfunc (%d)\n",
-                                  __func__, count, xor8_max_channels);
+                       NL_SET_ERR_MSG_FMT_MOD(
+                               extack,
+                               "Number of channels (%u) exceeds the max for XOR8 RSS (%u)",
+                               count, xor8_max_channels);
                        return -EINVAL;
                }
        }
@@ -1524,7 +1527,7 @@ static int mlx5e_set_rxfh(struct net_device *dev,
 
        mutex_lock(&priv->state_lock);
 
-       err = mlx5e_rxfh_hfunc_check(priv, rxfh);
+       err = mlx5e_rxfh_hfunc_check(priv, rxfh, extack);
        if (err)
                goto unlock;
 
@@ -1550,7 +1553,7 @@ static int mlx5e_create_rxfh_context(struct net_device *dev,
 
        mutex_lock(&priv->state_lock);
 
-       err = mlx5e_rxfh_hfunc_check(priv, rxfh);
+       err = mlx5e_rxfh_hfunc_check(priv, rxfh, extack);
        if (err)
                goto unlock;
 
@@ -1590,7 +1593,7 @@ static int mlx5e_modify_rxfh_context(struct net_device *dev,
 
        mutex_lock(&priv->state_lock);
 
-       err = mlx5e_rxfh_hfunc_check(priv, rxfh);
+       err = mlx5e_rxfh_hfunc_check(priv, rxfh, extack);
        if (err)
                goto unlock;