Skip to content

Commit a19a848

Browse files
Yevgeny Petrilindavem330
authored andcommitted
mlx4_en: Added Ethtool support for TX Interrupt coalescing
Signed-off-by: Yevgeny Petrilin <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent da882c1 commit a19a848

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

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

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,8 +359,8 @@ static int mlx4_en_get_coalesce(struct net_device *dev,
359359
{
360360
struct mlx4_en_priv *priv = netdev_priv(dev);
361361

362-
coal->tx_coalesce_usecs = 0;
363-
coal->tx_max_coalesced_frames = 0;
362+
coal->tx_coalesce_usecs = priv->tx_usecs;
363+
coal->tx_max_coalesced_frames = priv->tx_frames;
364364
coal->rx_coalesce_usecs = priv->rx_usecs;
365365
coal->rx_max_coalesced_frames = priv->rx_frames;
366366

@@ -388,6 +388,21 @@ static int mlx4_en_set_coalesce(struct net_device *dev,
388388
MLX4_EN_RX_COAL_TIME :
389389
coal->rx_coalesce_usecs;
390390

391+
/* Setting TX coalescing parameters */
392+
if (coal->tx_coalesce_usecs != priv->tx_usecs ||
393+
coal->tx_max_coalesced_frames != priv->tx_frames) {
394+
priv->tx_usecs = coal->tx_coalesce_usecs;
395+
priv->tx_frames = coal->tx_max_coalesced_frames;
396+
for (i = 0; i < priv->tx_ring_num; i++) {
397+
priv->tx_cq[i].moder_cnt = priv->tx_frames;
398+
priv->tx_cq[i].moder_time = priv->tx_usecs;
399+
if (mlx4_en_set_cq_moder(priv, &priv->tx_cq[i])) {
400+
en_warn(priv, "Failed changing moderation "
401+
"for TX cq %d\n", i);
402+
}
403+
}
404+
}
405+
391406
/* Set adaptive coalescing params */
392407
priv->pkt_rate_low = coal->pkt_rate_low;
393408
priv->rx_usecs_low = coal->rx_coalesce_usecs_low;

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,8 @@ static void mlx4_en_set_default_moderation(struct mlx4_en_priv *priv)
429429
*/
430430
priv->rx_frames = MLX4_EN_RX_COAL_TARGET;
431431
priv->rx_usecs = MLX4_EN_RX_COAL_TIME;
432+
priv->tx_frames = MLX4_EN_TX_COAL_PKTS;
433+
priv->tx_usecs = MLX4_EN_TX_COAL_TIME;
432434
en_dbg(INTR, priv, "Default coalesing params for mtu:%d - "
433435
"rx_frames:%d rx_usecs:%d\n",
434436
priv->dev->mtu, priv->rx_frames, priv->rx_usecs);
@@ -445,8 +447,8 @@ static void mlx4_en_set_default_moderation(struct mlx4_en_priv *priv)
445447

446448
for (i = 0; i < priv->tx_ring_num; i++) {
447449
cq = &priv->tx_cq[i];
448-
cq->moder_cnt = MLX4_EN_TX_COAL_PKTS;
449-
cq->moder_time = MLX4_EN_TX_COAL_TIME;
450+
cq->moder_cnt = priv->tx_frames;
451+
cq->moder_time = priv->tx_usecs;
450452
}
451453

452454
/* Reset auto-moderation params */

0 commit comments

Comments
 (0)