mbox series

[net-next,0/4] net: make dev_watchdog() less intrusive

Message ID 20211117032924.1740327-1-eric.dumazet@gmail.com (mailing list archive)
Headers show
Series net: make dev_watchdog() less intrusive | expand

Message

Eric Dumazet Nov. 17, 2021, 3:29 a.m. UTC
From: Eric Dumazet <edumazet@google.com>

dev_watchdog() is used on many NIC to periodically monitor TX queues
to detect hangs.

Problem is : It stops all queues, then check them, then 'unfreeze' them.

Not only this stops feeding the NIC, it also migrates all qdiscs
to be serviced on the cpu calling netif_tx_unlock(), causing
a potential latency artifact.

With many TX queues, this is becoming more visible.

Eric Dumazet (4):
  net: use an atomic_long_t for queue->trans_timeout
  net: annotate accesses to queue->trans_start
  net: do not inline netif_tx_lock()/netif_tx_unlock()
  net: no longer stop all TX queues in dev_watchdog()

 .../net/ethernet/apm/xgene/xgene_enet_main.c  |  2 +-
 drivers/net/ethernet/atheros/ag71xx.c         |  2 +-
 .../net/ethernet/freescale/dpaa/dpaa_eth.c    |  4 +-
 .../net/ethernet/hisilicon/hns3/hns3_enet.c   |  2 +-
 drivers/net/ethernet/ibm/ibmvnic.c            |  2 +-
 drivers/net/ethernet/intel/igb/igb_main.c     |  4 +-
 .../mellanox/mlx5/core/en/reporter_tx.c       |  2 +-
 .../net/ethernet/stmicro/stmmac/stmmac_main.c |  6 +-
 drivers/net/ethernet/ti/am65-cpsw-nuss.c      |  2 +-
 drivers/net/virtio_net.c                      |  2 +-
 drivers/net/wireless/marvell/mwifiex/init.c   |  2 +-
 drivers/staging/rtl8192e/rtllib_softmac.c     |  2 +-
 include/linux/netdevice.h                     | 57 +++++----------
 net/core/net-sysfs.c                          |  6 +-
 net/sched/sch_generic.c                       | 69 ++++++++++++++++---
 15 files changed, 94 insertions(+), 70 deletions(-)

Comments

patchwork-bot+netdevbpf@kernel.org Nov. 17, 2021, 3 p.m. UTC | #1
Hello:

This series was applied to netdev/net-next.git (master)
by David S. Miller <davem@davemloft.net>:

On Tue, 16 Nov 2021 19:29:20 -0800 you wrote:
> From: Eric Dumazet <edumazet@google.com>
> 
> dev_watchdog() is used on many NIC to periodically monitor TX queues
> to detect hangs.
> 
> Problem is : It stops all queues, then check them, then 'unfreeze' them.
> 
> [...]

Here is the summary with links:
  - [net-next,1/4] net: use an atomic_long_t for queue->trans_timeout
    https://git.kernel.org/netdev/net-next/c/8160fb43d55d
  - [net-next,2/4] net: annotate accesses to queue->trans_start
    https://git.kernel.org/netdev/net-next/c/5337824f4dc4
  - [net-next,3/4] net: do not inline netif_tx_lock()/netif_tx_unlock()
    https://git.kernel.org/netdev/net-next/c/dab8fe320726
  - [net-next,4/4] net: no longer stop all TX queues in dev_watchdog()
    https://git.kernel.org/netdev/net-next/c/bec251bc8b6a

You are awesome, thank you!