net: mvpp2: check ethtool sets the Tx ring size is to a valid min value
This patch fixes the Tx ring size checks when using ethtool, by adding
an extra check in the PPv2 check_ringparam_valid helper. The Tx ring
size cannot be set to a value smaller than the minimum number of
descriptors needed for TSO.
Fixes: 1d17db08c0
("net: mvpp2: limit TSO segments and use stop/wake thresholds")
Suggested-by: Yan Markman <ymarkman@marvell.com>
Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e749aca84b
commit
76e583c5f5
|
@ -6842,6 +6842,12 @@ static int mvpp2_check_ringparam_valid(struct net_device *dev,
|
||||||
else if (!IS_ALIGNED(ring->tx_pending, 32))
|
else if (!IS_ALIGNED(ring->tx_pending, 32))
|
||||||
new_tx_pending = ALIGN(ring->tx_pending, 32);
|
new_tx_pending = ALIGN(ring->tx_pending, 32);
|
||||||
|
|
||||||
|
/* The Tx ring size cannot be smaller than the minimum number of
|
||||||
|
* descriptors needed for TSO.
|
||||||
|
*/
|
||||||
|
if (new_tx_pending < MVPP2_MAX_SKB_DESCS)
|
||||||
|
new_tx_pending = ALIGN(MVPP2_MAX_SKB_DESCS, 32);
|
||||||
|
|
||||||
if (ring->rx_pending != new_rx_pending) {
|
if (ring->rx_pending != new_rx_pending) {
|
||||||
netdev_info(dev, "illegal Rx ring size value %d, round to %d\n",
|
netdev_info(dev, "illegal Rx ring size value %d, round to %d\n",
|
||||||
ring->rx_pending, new_rx_pending);
|
ring->rx_pending, new_rx_pending);
|
||||||
|
|
Loading…
Reference in New Issue