Message ID | 20230907-stmmac-coaloff-v2-1-38ccfac548b9@axis.com (mailing list archive) |
---|---|
State | Accepted |
Commit | fa60b8163816f194786f3ee334c9a458da7699c6 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net,v2] net: stmmac: fix handling of zero coalescing tx-usecs | expand |
On Thu, 7 Sep 2023 12:46:31 +0200 Vincent Whitchurch wrote: > Setting ethtool -C eth0 tx-usecs 0 is supposed to disable the use of the > coalescing timer but currently it gets programmed with zero delay > instead. > > Disable the use of the coalescing timer if tx-usecs is zero by > preventing it from being restarted. Note that to keep things simple we > don't start/stop the timer when the coalescing settings are changed, but > just let that happen on the next transmit or timer expiry. > > Fixes: 8fce33317023 ("net: stmmac: Rework coalesce timer and fix multi-queue races") > Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com> Felix, good enough?
Hello: This patch was applied to netdev/net.git (main) by David S. Miller <davem@davemloft.net>: On Thu, 7 Sep 2023 12:46:31 +0200 you wrote: > Setting ethtool -C eth0 tx-usecs 0 is supposed to disable the use of the > coalescing timer but currently it gets programmed with zero delay > instead. > > Disable the use of the coalescing timer if tx-usecs is zero by > preventing it from being restarted. Note that to keep things simple we > don't start/stop the timer when the coalescing settings are changed, but > just let that happen on the next transmit or timer expiry. > > [...] Here is the summary with links: - [net,v2] net: stmmac: fix handling of zero coalescing tx-usecs https://git.kernel.org/netdev/net/c/fa60b8163816 You are awesome, thank you!
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 9a3182b9e767..2206789802bf 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -2704,9 +2704,7 @@ static int stmmac_tx_clean(struct stmmac_priv *priv, int budget, u32 queue) /* We still have pending packets, let's call for a new scheduling */ if (tx_q->dirty_tx != tx_q->cur_tx) - hrtimer_start(&tx_q->txtimer, - STMMAC_COAL_TIMER(priv->tx_coal_timer[queue]), - HRTIMER_MODE_REL); + stmmac_tx_timer_arm(priv, queue); flags = u64_stats_update_begin_irqsave(&tx_q->txq_stats.syncp); tx_q->txq_stats.tx_packets += tx_packets; @@ -2995,9 +2993,13 @@ static int stmmac_init_dma_engine(struct stmmac_priv *priv) static void stmmac_tx_timer_arm(struct stmmac_priv *priv, u32 queue) { struct stmmac_tx_queue *tx_q = &priv->dma_conf.tx_queue[queue]; + u32 tx_coal_timer = priv->tx_coal_timer[queue]; + + if (!tx_coal_timer) + return; hrtimer_start(&tx_q->txtimer, - STMMAC_COAL_TIMER(priv->tx_coal_timer[queue]), + STMMAC_COAL_TIMER(tx_coal_timer), HRTIMER_MODE_REL); }
Setting ethtool -C eth0 tx-usecs 0 is supposed to disable the use of the coalescing timer but currently it gets programmed with zero delay instead. Disable the use of the coalescing timer if tx-usecs is zero by preventing it from being restarted. Note that to keep things simple we don't start/stop the timer when the coalescing settings are changed, but just let that happen on the next transmit or timer expiry. Fixes: 8fce33317023 ("net: stmmac: Rework coalesce timer and fix multi-queue races") Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com> --- Changes in v2: - Rebased on current net/main. - Link to v1: https://lore.kernel.org/r/20230905-stmmac-coaloff-v1-1-e29820e8ff6d@axis.com --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) --- base-commit: 35494b0d61e44b517178aa1c6f5a69168b086940 change-id: 20230904-stmmac-coaloff-aca6befbd24b Best regards,