Go to file
ozaki-r 9c4cd06355 Introduce softint-based if_input
This change intends to run the whole network stack in softint context
(or normal LWP), not hardware interrupt context. Note that the work is
still incomplete by this change; to that end, we also have to softint-ify
if_link_state_change (and bpf) which can still run in hardware interrupt.

This change softint-ifies at ifp->if_input that is called from
each device driver (and ieee80211_input) to ensure Layer 2 runs
in softint (e.g., ether_input and bridge_input). To this end,
we provide a framework (called percpuq) that utlizes softint(9)
and percpu ifqueues. With this patch, rxintr of most drivers just
queues received packets and schedules a softint, and the softint
dequeues packets and does rest packet processing.

To minimize changes to each driver, percpuq is allocated in struct
ifnet for now and that is initialized by default (in if_attach).
We probably have to move percpuq to softc of each driver, but it's
future work. At this point, only wm(4) has percpuq in its softc
as a reference implementation.

Additional information including performance numbers can be found
in the thread at tech-kern@ and tech-net@:
http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html

Acknowledgment: riastradh@ greatly helped this work.
Thank you very much!
2016-02-09 08:32:07 +00:00
bin PR/50747: David Binderman: check bounds before dereference. 2016-02-03 05:26:16 +00:00
common whitespace 2016-02-08 05:27:24 +00:00
compat remove the xfree86 reachover makefiles and the vast majority of 2015-07-23 08:03:24 +00:00
crypto Fix signing of in-memory data with SSH keys 2016-02-07 05:03:36 +00:00
dist/pf Fix obviously broken condition. 2015-08-28 12:17:41 +00:00
distrib Add capability to attach external memory to files on rumpfs. This 2016-02-02 12:22:23 +00:00
doc new openssl 2016-01-30 17:00:53 +00:00
etc Drop almost unnecessary devices for floppy to shrink sysinst.fs. 2016-01-29 18:03:16 +00:00
external don't re-define _KERNTYPES 2016-02-07 21:03:49 +00:00
extsrc
games PR/50411: Rin Okuyama: fix two bugs: 2015-11-06 19:53:37 +00:00
gnu has moved to external/gpl3 2016-01-16 18:41:12 +00:00
include disable dso protected to work around binutils bug 2016-01-29 15:18:33 +00:00
lib UTF-8 fixes from Ingo Schwarze: 2016-02-08 17:18:43 +00:00
libexec Fix .note.netbsd.march by ensuring correct padding 2016-02-08 11:59:39 +00:00
regress moved to tests/net/in_cksum. 2015-01-05 22:39:29 +00:00
rescue Remove rtsol(8) and rtsold(8) as their functionality is in dhcpcd(8). 2014-09-11 13:10:03 +00:00
sbin fix usage message 2016-02-06 10:35:58 +00:00
share Remove the .SUNW_ctf sections when converting form ELF -> a.out by 2016-02-08 10:39:09 +00:00
sys Introduce softint-based if_input 2016-02-09 08:32:07 +00:00
tests Add tests for a gateway not on the local subnet 2016-01-29 04:15:46 +00:00
tools silent when we don't have -ldl 2016-02-01 14:18:16 +00:00
usr.bin use sizeof() and array notation. 2016-02-06 21:23:09 +00:00
usr.sbin Split case folding table into separate source file and add full 2016-02-06 10:40:58 +00:00
BUILDING Document MKREPRO_TIMESTAMP. 2016-01-29 13:51:13 +00:00
Makefile fix direct reference to texinfo, bleh 2016-01-14 02:51:25 +00:00
Makefile.inc
UPDATING Note that update builds are broken if MKDTRACE got enabled for your 2016-01-25 09:24:29 +00:00
build.sh Make evbarm64 (little endian) the default for aarch64. 2015-06-27 06:00:28 +00:00