git: kernel - Revamp ifsq_watchdog*() a bit
Matthew Dillon
dillon at crater.dragonflybsd.org
Tue Sep 1 11:12:07 PDT 2020
commit e2292763210b551b05c63fd27fe614dedee1c0de
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Tue Sep 1 11:06:23 2020 -0700
kernel - Revamp ifsq_watchdog*() a bit
* Add a flags argument to ifsq_watchdog_init() and implement two
flags:
IF_WDOG_ALLTICKS Watchdog callback occurs each second
prior to terminal count, and on terminal
count.
IF_WDOG_LASTTICK Watchdog callback occurs one second prior
to terminal count, and on terminal count.
0 Watchdog callback only occurs on terminal
count.
Note that the ifnet lock is fully serialized when a watchdog
callback is made, so generally speaking to avoid hicups you
only want to use IF_WDOG_LASTTICK.
* This feature allows the watchdog code to flush any tx buffers
(call *_txeof()) that have completed transmission. Many NICs
and virtual NICs don't bother to generate interrupts to clean-up
such buffers when the rings are only lightly loaded.
* Fix spurious vtnet watchdog events on lightly loaded vtnet
interfaces, loosly using the same code that FreeBSD uses
(just txeof from the second-prior watchdog callback and then
check on terminal count).
Summary of changes:
sys/dev/netif/bce/if_bce.c | 6 ++--
sys/dev/netif/bnx/if_bnx.c | 7 ++--
sys/dev/netif/emx/if_emx.c | 12 +++----
sys/dev/netif/igb/if_igb.c | 8 ++---
sys/dev/netif/ix/if_ix.c | 8 ++---
sys/dev/netif/mxge/if_mxge.c | 6 ++--
sys/dev/virtual/virtio/net/if_vtnet.c | 30 ++++++++++++++---
sys/net/if.c | 62 +++++++++++++++++++++++++++++------
sys/net/if_var.h | 8 ++++-
sys/net/ifq_var.h | 7 +++-
10 files changed, 114 insertions(+), 40 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/e2292763210b551b05c63fd27fe614dedee1c0de
--
DragonFly BSD source repository
More information about the Commits
mailing list