diff options
author | Paolo Abeni <pabeni@redhat.com> | 2024-10-25 09:08:22 +0200 |
---|---|---|
committer | Paolo Abeni <pabeni@redhat.com> | 2024-10-25 09:08:22 +0200 |
commit | 03fc07a24735e0be8646563913abf5f5cb71ad19 (patch) | |
tree | 5fe666c4ed732b163324aa08e210a69b593e4e8c /include/linux/netdevice.h | |
parent | 81bc949f640f78b507c7523de7c750bcc87c1bb8 (diff) | |
parent | d44cd8226449114780a8554fd253c7e3d171a0a6 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Cross-merge networking fixes after downstream PR.
No conflicts and no adjacent changes.
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'include/linux/netdevice.h')
-rw-r--r-- | include/linux/netdevice.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index bbd30f3c5d29..389f92e4d980 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -3384,6 +3384,12 @@ static inline void netif_tx_wake_all_queues(struct net_device *dev) static __always_inline void netif_tx_stop_queue(struct netdev_queue *dev_queue) { + /* Paired with READ_ONCE() from dev_watchdog() */ + WRITE_ONCE(dev_queue->trans_start, jiffies); + + /* This barrier is paired with smp_mb() from dev_watchdog() */ + smp_mb__before_atomic(); + /* Must be an atomic op see netif_txq_try_stop() */ set_bit(__QUEUE_STATE_DRV_XOFF, &dev_queue->state); } @@ -3510,6 +3516,12 @@ static inline void netdev_tx_sent_queue(struct netdev_queue *dev_queue, if (likely(dql_avail(&dev_queue->dql) >= 0)) return; + /* Paired with READ_ONCE() from dev_watchdog() */ + WRITE_ONCE(dev_queue->trans_start, jiffies); + + /* This barrier is paired with smp_mb() from dev_watchdog() */ + smp_mb__before_atomic(); + set_bit(__QUEUE_STATE_STACK_XOFF, &dev_queue->state); /* |