NetBSD/sys/arch/arm
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
..
allwinner Introduce softint-based if_input 2016-02-09 08:32:07 +00:00
amlogic Fix A9 periph clock when selecting frequencies below 1200MHz. Remove 2015-11-29 19:16:58 +00:00
arm Rename the cpu_id() define to cpu_idnum() so that it does not conflict with 2016-01-23 21:39:17 +00:00
arm32 Rename the cpu_id() define to cpu_idnum() so that it does not conflict with 2016-01-23 21:39:17 +00:00
at91 Introduce softint-based if_input 2016-02-09 08:32:07 +00:00
broadcom Introduce softint-based if_input 2016-02-09 08:32:07 +00:00
clps711x MD rnd.h cleanups. Please let me know if I broke anything! 2015-04-13 21:18:40 +00:00
conf Support pmap_pv_track and friends 2015-11-11 17:54:17 +00:00
cortex Deal with kernel builds where virtualisation isn't available 2015-12-19 13:27:29 +00:00
cortina "peripheral", not "peripherial". 2014-07-13 17:12:23 +00:00
ep93xx Introduce softint-based if_input 2016-02-09 08:32:07 +00:00
fdt FDT: Interrupts -- add support for interrupt maps 2016-01-05 21:53:48 +00:00
footbridge protect locore. 2016-01-25 21:54:14 +00:00
gemini Introduce softint-based if_input 2016-02-09 08:32:07 +00:00
imx Introduce softint-based if_input 2016-02-09 08:32:07 +00:00
include expose the kernel types for standalone code. 2016-01-23 22:31:19 +00:00
iomd Remove katelib.h and references to it. 2014-10-25 10:58:12 +00:00
ixp12x0 PCI Extended Configuration stuff written by nonaka@: 2015-10-02 05:22:49 +00:00
mainbus Sprinkle #include "opt_multiprocessor.h" 2014-10-29 14:14:14 +00:00
marvell Add mvsocts to mvsoc_periph for Armada XP. 2015-11-06 12:54:52 +00:00
mpcore Don't manipulate the pte to get uncached memory, use PMAP_NOCACHE instead. 2014-02-22 20:33:00 +00:00
nvidia Always initialize error. 2016-01-30 00:00:56 +00:00
ofw fix leak. 2014-09-21 15:46:44 +00:00
omap Introduce softint-based if_input 2016-02-09 08:32:07 +00:00
pic unblock interrupts also when reusing a previously freed irq slot. 2015-10-11 20:20:33 +00:00
rockchip Introduce softint-based if_input 2016-02-09 08:32:07 +00:00
s3c2xx0 PCI Extended Configuration stuff written by nonaka@: 2015-10-02 05:22:49 +00:00
sa11x0 MD rnd.h cleanups. Please let me know if I broke anything! 2015-04-13 21:18:40 +00:00
samsung exynos mct -- snapshot 2016-01-07 04:45:10 +00:00
vfp change some register dumps from aprint_verbose to aprint_debug 2015-11-12 10:49:35 +00:00
xscale Introduce softint-based if_input 2016-02-09 08:32:07 +00:00
zynq USBMODE register's initialization should be done in sc_vendor_init() after sending EHCI_CMD_HCRESET command. 2015-09-10 04:00:32 +00:00
Makefile
Makefile.inc Add a couple of make(1) include files that provide lists of source 2011-04-04 19:43:34 +00:00