]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: Introduce netif_xmit_timeout_ms() helper
authorShahar Shitrit <shshitrit@nvidia.com>
Mon, 12 Jan 2026 09:16:21 +0000 (11:16 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 15 Jan 2026 10:55:05 +0000 (11:55 +0100)
Introduce a new helper function netif_xmit_timeout_ms() to check
if a TX queue is stopped and has timed out and report the timeout
duration. This makes the timeout logic reusable, and will be used
in several places in subsequent patches.

Signed-off-by: Shahar Shitrit <shshitrit@nvidia.com>
Reviewed-by: Yael Chemla <ychemla@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/1768209383-1546791-2-git-send-email-tariqt@nvidia.com
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
include/net/netdev_queues.h

index cd00e0406cf46f72f9a732371c232e073bd40c1d..b55d3b9cb9c2729fbc5cac052871c065e10707c0 100644 (file)
@@ -310,6 +310,17 @@ static inline void netif_subqueue_sent(const struct net_device *dev,
        netdev_tx_sent_queue(txq, bytes);
 }
 
+static inline unsigned int netif_xmit_timeout_ms(struct netdev_queue *txq)
+{
+       unsigned long trans_start = READ_ONCE(txq->trans_start);
+
+       if (netif_xmit_stopped(txq) &&
+           time_after(jiffies, trans_start + txq->dev->watchdog_timeo))
+               return jiffies_to_msecs(jiffies - trans_start);
+
+       return 0;
+}
+
 #define netif_subqueue_maybe_stop(dev, idx, get_desc, stop_thrs, start_thrs) \
        ({                                                              \
                struct netdev_queue *_txq;                              \