Skip to content

Commit 7589fd5

Browse files
Eugenia Emantayevdavem330
authored andcommitted
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 <[email protected]> Signed-off-by: Tariq Toukan <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 37e2d99 commit 7589fd5

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

drivers/net/ethernet/mellanox/mlx4/en_ethtool.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1094,12 +1094,21 @@ static int mlx4_en_set_ringparam(struct net_device *dev,
10941094
if (param->rx_jumbo_pending || param->rx_mini_pending)
10951095
return -EINVAL;
10961096

1097+
if (param->rx_pending < MLX4_EN_MIN_RX_SIZE) {
1098+
en_warn(priv, "%s: rx_pending (%d) < min (%d)\n",
1099+
__func__, param->rx_pending,
1100+
MLX4_EN_MIN_RX_SIZE);
1101+
return -EINVAL;
1102+
}
1103+
if (param->tx_pending < MLX4_EN_MIN_TX_SIZE) {
1104+
en_warn(priv, "%s: tx_pending (%d) < min (%lu)\n",
1105+
__func__, param->tx_pending,
1106+
MLX4_EN_MIN_TX_SIZE);
1107+
return -EINVAL;
1108+
}
1109+
10971110
rx_size = roundup_pow_of_two(param->rx_pending);
1098-
rx_size = max_t(u32, rx_size, MLX4_EN_MIN_RX_SIZE);
1099-
rx_size = min_t(u32, rx_size, MLX4_EN_MAX_RX_SIZE);
11001111
tx_size = roundup_pow_of_two(param->tx_pending);
1101-
tx_size = max_t(u32, tx_size, MLX4_EN_MIN_TX_SIZE);
1102-
tx_size = min_t(u32, tx_size, MLX4_EN_MAX_TX_SIZE);
11031112

11041113
if (rx_size == (priv->port_up ? priv->rx_ring[0]->actual_size :
11051114
priv->rx_ring[0]->size) &&

0 commit comments

Comments
 (0)