mirror of
https://github.com/torvalds/linux.git
synced 2026-05-21 05:18:45 +02:00
net/mlx4_en: Align behavior of set ring size flow via ethtool
In current implementation, any requested RX/TX ring size value that is less than minimum is silently casted to nearest valid value. Update this behavior to align with mlx5 behavior by printing warning in dmesg and remaining the size unchanged. Kernel is responsible for verifying against the maximum. Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com> Signed-off-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
37e2d99b59
commit
7589fd5c8c
|
|
@ -1094,12 +1094,21 @@ static int mlx4_en_set_ringparam(struct net_device *dev,
|
|||
if (param->rx_jumbo_pending || param->rx_mini_pending)
|
||||
return -EINVAL;
|
||||
|
||||
if (param->rx_pending < MLX4_EN_MIN_RX_SIZE) {
|
||||
en_warn(priv, "%s: rx_pending (%d) < min (%d)\n",
|
||||
__func__, param->rx_pending,
|
||||
MLX4_EN_MIN_RX_SIZE);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (param->tx_pending < MLX4_EN_MIN_TX_SIZE) {
|
||||
en_warn(priv, "%s: tx_pending (%d) < min (%lu)\n",
|
||||
__func__, param->tx_pending,
|
||||
MLX4_EN_MIN_TX_SIZE);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
rx_size = roundup_pow_of_two(param->rx_pending);
|
||||
rx_size = max_t(u32, rx_size, MLX4_EN_MIN_RX_SIZE);
|
||||
rx_size = min_t(u32, rx_size, MLX4_EN_MAX_RX_SIZE);
|
||||
tx_size = roundup_pow_of_two(param->tx_pending);
|
||||
tx_size = max_t(u32, tx_size, MLX4_EN_MIN_TX_SIZE);
|
||||
tx_size = min_t(u32, tx_size, MLX4_EN_MAX_TX_SIZE);
|
||||
|
||||
if (rx_size == (priv->port_up ? priv->rx_ring[0]->actual_size :
|
||||
priv->rx_ring[0]->size) &&
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user