summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/if_url.c
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>2008-11-26 19:07:33 +0000
committerderaadt <deraadt@openbsd.org>2008-11-26 19:07:33 +0000
commit5cdd72c8ed99a0c9b1f83b487b3364ab14a3dc7d (patch)
tree7a6ef29c009e52fbc0be198badfe41c9e24b5310 /sys/dev/usb/if_url.c
parentUse m_defrag instead of collapsing mbufs ourselves. (diff)
downloadwireguard-openbsd-5cdd72c8ed99a0c9b1f83b487b3364ab14a3dc7d.tar.xz
wireguard-openbsd-5cdd72c8ed99a0c9b1f83b487b3364ab14a3dc7d.zip
Avoid network livelock.
Use a 1 tick timeout() to determine if the kernel even manages to get below softclock (from an old diff by mpf). If our timeout comes late, reduce the high water marks (to half) for all network interfaces, thus starving them of future packet allocations for their RX rings. For a few ticks longer, also block the high water marks from rising even if RX ring empty conditions would prod us to do so. Cards may start dropping some packets off the end of their smaller RX rings, but we were not able to do the work required in any case. With less interrupt time and mbuf movement, the system finds time to make progress at the network queues. Userland even gets to run. A x40 tuned to 600MHz shows no real reduction in performance. But a soekris has a working console now. ok dlg claudio, and art liked it too
Diffstat (limited to 'sys/dev/usb/if_url.c')
0 files changed, 0 insertions, 0 deletions