Commit 57ac4a31 authored by Maxim Mikityanskiy's avatar Maxim Mikityanskiy Committed by Saeed Mahameed
Browse files

net/mlx5e: Correctly handle changing the number of queues when the interface is down



This commit addresses two issues related to changing the number of
queues when the channels are closed:

1. Missing call to mlx5e_num_channels_changed to update
real_num_tx_queues when the number of TCs is changed.

2. When mlx5e_num_channels_changed returns an error, the channel
parameters must be reverted.

Two Fixes: tags correspond to the first commits where these two issues
were introduced.

Fixes: 3909a12e ("net/mlx5e: Fix configuration of XPS cpumasks and netdev queues in corner cases")
Fixes: fa374877 ("net/mlx5e: Handle errors from netif_set_real_num_{tx,rx}_queues")
Signed-off-by: default avatarMaxim Mikityanskiy <maximmi@mellanox.com>
Reviewed-by: default avatarTariq Toukan <tariqt@nvidia.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
parent 89e39467
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -447,12 +447,18 @@ int mlx5e_ethtool_set_channels(struct mlx5e_priv *priv,
		goto out;
	}

	new_channels.params = priv->channels.params;
	new_channels.params = *cur_params;
	new_channels.params.num_channels = count;

	if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) {
		struct mlx5e_params old_params;

		old_params = *cur_params;
		*cur_params = new_channels.params;
		err = mlx5e_num_channels_changed(priv);
		if (err)
			*cur_params = old_params;

		goto out;
	}

+7 −0
Original line number Diff line number Diff line
@@ -3614,7 +3614,14 @@ static int mlx5e_setup_tc_mqprio(struct mlx5e_priv *priv,
	new_channels.params.num_tc = tc ? tc : 1;

	if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) {
		struct mlx5e_params old_params;

		old_params = priv->channels.params;
		priv->channels.params = new_channels.params;
		err = mlx5e_num_channels_changed(priv);
		if (err)
			priv->channels.params = old_params;

		goto out;
	}