reintroduce tx mitigation
authordlg <dlg@openbsd.org>
Tue, 2 Jan 2018 07:08:10 +0000 (07:08 +0000)
committerdlg <dlg@openbsd.org>
Tue, 2 Jan 2018 07:08:10 +0000 (07:08 +0000)
commit531a3018ed0b5ff3d40ed3db66f132f945c21f37
treefda28a0bc67e95f9fa8bf32a223a6e38db648ddc
parent1ada7db47ea8f19e0fef96fa06dd66a7954c3611
reintroduce tx mitigation

to quote the previous commit:

> this replaces ifq_start with code that waits until at least 4 packets
> have been queued on the ifq before calling the drivers start routine.
> if less than 4 packets get queued, the start routine is called from
> a task in a softnet tq.
>
> 4 packets was chosen this time based on testing sephe did in dfly
> which showed no real improvement when bundling more packets.  hrvoje
> popovski tested this on several nics and found an improvement of
> 10 to 20 percent when forwarding across the board.
>
> because some of the ifq's work could be sitting on a softnet tq,
> ifq_barrier now calls taskq_barrier to guarantee any work that was
> pending there has finished.
>
> ok mpi@ visa@

this was backed out because of a race in the net80211 stack that
anton@ hit. mpi@ committed a workaround for it in revision 1.30 of
src/sys/net80211/ieee80211_pae_output.c.

im putting this in again so we can see what breaks next.
sys/net/ifq.c
sys/net/ifq.h