diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2008-11-26 19:07:34 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2008-11-26 19:07:34 +0000 |
commit | 467ee9ea88f7f727bc76e9749e54c8640d07fb0c (patch) | |
tree | 5e0c90922be460cc927d962dc9c72bd39ba79dc8 /sys/netinet/igmp_var.h | |
parent | c6324cdcd33e5663da2ab44611f00b5f5606047b (diff) |
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/netinet/igmp_var.h')
0 files changed, 0 insertions, 0 deletions