[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <383aed26-aa07-4759-92b9-5448161ba6a4@redhat.com>
Date: Thu, 27 Nov 2025 11:53:00 +0100
From: Paolo Abeni <pabeni@...hat.com>
To: Tariq Toukan <tariqt@...dia.com>, Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>, Andrew Lunn <andrew+netdev@...n.ch>,
"David S. Miller" <davem@...emloft.net>
Cc: Jian Shen <shenjian15@...wei.com>, Salil Mehta <salil.mehta@...wei.com>,
Jijie Shao <shaojijie@...wei.com>, Saeed Mahameed <saeedm@...dia.com>,
Mark Bloch <mbloch@...dia.com>, Leon Romanovsky <leon@...nel.org>,
Jamal Hadi Salim <jhs@...atatu.com>, Cong Wang <xiyou.wangcong@...il.com>,
Jiri Pirko <jiri@...nulli.us>, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-rdma@...r.kernel.org,
Gal Pressman <gal@...dia.com>, Moshe Shemesh <moshe@...dia.com>,
Yael Chemla <ychemla@...dia.com>, Shahar Shitrit <shshitrit@...dia.com>
Subject: Re: [PATCH net-next 1/3] net: Introduce
netif_xmit_time_out_duration() helper
On 11/25/25 8:12 AM, Tariq Toukan wrote:
> From: Shahar Shitrit <shshitrit@...dia.com>
>
> Introduce a new helper function netif_xmit_time_out_duration() to
> check if a TX queue has timed out and report the timeout duration.
> This helper consolidates the logic that is duplicated in several
> locations and also encapsulates the check for whether the TX queue
> is stopped.
>
> As the first user, convert dev_watchdog() to use this helper.
>
> Signed-off-by: Shahar Shitrit <shshitrit@...dia.com>
> Reviewed-by: Yael Chemla <ychemla@...dia.com>
> Signed-off-by: Tariq Toukan <tariqt@...dia.com>
> ---
> include/linux/netdevice.h | 15 +++++++++++++++
> net/sched/sch_generic.c | 7 +++----
> 2 files changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
> index e808071dbb7d..3cd73769fcfa 100644
> --- a/include/linux/netdevice.h
> +++ b/include/linux/netdevice.h
> @@ -3680,6 +3680,21 @@ static inline bool netif_xmit_stopped(const struct netdev_queue *dev_queue)
> return dev_queue->state & QUEUE_STATE_ANY_XOFF;
> }
>
> +static inline unsigned int
> +netif_xmit_timeout_ms(struct netdev_queue *txq, unsigned long *trans_start)
> +{
> + unsigned long txq_trans_start = READ_ONCE(txq->trans_start);
> +
> + if (trans_start)
> + *trans_start = txq_trans_start;
What about making this argument mandatory?
> +
> + if (netif_xmit_stopped(txq) &&
Why restricting to the <queue stopped> case? AFAICS the watchdog is
intended to additionally catch the scenarios where the rx ring is not
full but the H/W is stuck for whatever reasons, and this change will not
catch them anymore.
/P
Powered by blists - more mailing lists