Commit a833538d authored by Gal Pressman's avatar Gal Pressman Committed by Jakub Kicinski
Browse files

net/mlx5e: Use extack in set rxfh callback



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 c0ae0358 ("ethtool: rss: initial RSS_SET (indirection table handling)")

Signed-off-by: default avatarGal Pressman <gal@nvidia.com>
Reviewed-by: default avatarDragos Tatulea <dtatulea@nvidia.com>
Signed-off-by: default avatarTariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/1759094723-843774-8-git-send-email-tariqt@nvidia.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent c40a94cc
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -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;