NetBSD/sys/arch/arm/omap
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
..
am335x_cm_padconf.c Preserve const. 2014-11-22 19:50:28 +00:00
am335x_dmtimer.c AM335x driver attachment goop for omapdmtimer. 2012-12-11 19:06:23 +00:00
am335x_gpio.c Don't rely on uboot to enable am335x gpio clocks 2015-12-08 14:42:24 +00:00
am335x_prcm.c change freq change message to aprint_debug to prevent dmesg spam when running estd 2014-09-30 11:34:07 +00:00
am335x_prcm.h Add driver for AM335x TRNG module. 2015-06-06 14:00:32 +00:00
am335x_trng.c Add driver for AM335x TRNG module. 2015-06-06 14:00:32 +00:00
am335x_trngreg.h Add driver for AM335x TRNG module. 2015-06-06 14:00:32 +00:00
files.omap Provide generic a[24]x bus_space methods (aNx is normal access, offset 2012-06-06 20:21:43 +00:00
files.omap2 add basic AM335x GPIO support 2015-11-02 00:48:45 +00:00
files.omapl1x Add support for OMAP1-183 base hawkboard (HAWK) from Sughosh Ganu. 2013-10-02 16:48:26 +00:00
if_cpsw.c Introduce softint-based if_input 2016-02-09 08:32:07 +00:00
if_cpswreg.h Disable flow control with CPSW_SS FLOW_CONTROL register (cherry-picked 2015-04-16 21:50:35 +00:00
obio_com.c Fix build of non-debug kernels, mark err __diagused in uart_enable(). 2014-04-09 21:02:31 +00:00
obio_mputmr.c #include <arm/omap/omap_var.h> where appropriate 2013-06-16 17:47:54 +00:00
obio_ohci.c OMAP5 support 2014-03-15 17:14:56 +00:00
obio_wdt.c Get USB closer to working on OMAP3 and OMAP4. 2012-09-05 00:19:59 +00:00
omap2_gpio.c More OMAP5 support 2013-06-15 21:59:37 +00:00
omap2_gpio.h Improved USB EHCI support OMAP3 variants. 2012-12-12 00:33:45 +00:00
omap2_gpmc.c
omap2_gpmcreg.h More OMAP5 support 2013-06-15 21:59:37 +00:00
omap2_gpmcvar.h
omap2_icu.c Add support for the TI AM335x (beaglebone) and the OMAP4430 (pandaboard) 2012-08-20 12:38:28 +00:00
omap2_intr.h Beginnings of OMAP5 support. 2013-06-15 21:55:09 +00:00
omap2_l3i.c
omap2_mputmr.c Mark unused inline functions as such. 2013-12-01 02:53:46 +00:00
omap2_mputmrreg.h
omap2_mputmrvar.h
omap2_nand.c split device_t/softc for all remaining drivers. 2012-10-27 17:17:22 +00:00
omap2_obio.c Add a driver for the Enhanced Direct Memory Access controller found 2015-04-14 18:37:43 +00:00
omap2_obioreg.h More OMAP5 support 2013-06-15 21:59:37 +00:00
omap2_obiovar.h Add a driver for the Enhanced Direct Memory Access controller found 2015-04-14 18:37:43 +00:00
omap2_prcm.c Make the softc static. Add a prcm_bootstrap(bus_space_handle_t) so that 2013-06-29 20:19:54 +00:00
omap2_prcm.h Add a prcm_bootstrap(bus_space_handle_t) so that early bootstrap code can use 2013-06-29 20:20:17 +00:00
omap2_reg.h Add driver for AM335x TRNG module. 2015-06-06 14:00:32 +00:00
omap3_ehci.c OMAP4/OMAP5 changes. 2014-03-29 23:32:41 +00:00
omap3_i2c.c Set the N900 kernel on par with the latest improvements related to the 2013-03-13 03:08:17 +00:00
omap3_i2creg.h Add OMAP3530 I2C support 2012-12-31 12:45:49 +00:00
omap3_scm.c Set the N900 kernel on par with the latest improvements related to the 2013-03-13 03:08:17 +00:00
omap3_sdhc.c Support 8-bit eMMC for TI AM335x. On my BeagleBone Black, 2015-11-02 22:21:01 +00:00
omap3_sdma.c do some more setup, while there fix a bunch of typos 2013-01-09 04:38:14 +00:00
omap3_sdmareg.h fix tpyo 2014-07-30 12:45:44 +00:00
omap3_sdmavar.h omapdma* -> omap3_sdma* 2013-01-09 03:35:11 +00:00
omap3_sdmmcreg.h Fix typo that kept SD card on BeagleBone from being configured. From 2013-07-27 17:10:28 +00:00
omap3_uhhreg.h OMAP4/OMAP5 changes. 2014-03-29 23:32:41 +00:00
omap3_usbtllreg.h OMAP4/OMAP5 changes. 2014-03-29 23:32:41 +00:00
omap5_ahcisata.c Fix build break. 2014-04-04 21:33:19 +00:00
omap2430_intr.c
omap2430_intr.h Move omap2430/3530 definitions into their own header file. 2012-07-14 07:42:57 +00:00
omap4430_intr.h Add #define __HAVE_PIC_PENDING_INTRS for the non-GIC PICs. 2015-04-09 21:33:54 +00:00
omap5430_intr.h Add #define __HAVE_PIC_PENDING_INTRS for the non-GIC PICs. 2015-04-09 21:33:54 +00:00
omap5912_intr.c
omap5912_intr.h
omap_a2x_space.c Add stream methods 2012-07-15 20:53:23 +00:00
omap_a4x_space.c Add stream methods 2012-07-15 20:53:23 +00:00
omap_com.c
omap_com.h
omap_dma.c Add bounce buffer support for ARM bus_dma(9). Add macros to help initialize 2012-09-18 05:47:26 +00:00
omap_dmtimer.c Don't rely on hardcoded clocks now that we determine the actual ref clk 2013-06-15 21:58:20 +00:00
omap_dmtimerreg.h New driver for OMAP-style dual-mode timers, for both v1 and v2 cores. 2012-12-11 19:01:18 +00:00
omap_dmtimervar.h New driver for OMAP-style dual-mode timers, for both v1 and v2 cores. 2012-12-11 19:01:18 +00:00
omap_edma.c Add a driver for the Enhanced Direct Memory Access controller found 2015-04-14 18:37:43 +00:00
omap_edma.h Add a driver for the Enhanced Direct Memory Access controller found 2015-04-14 18:37:43 +00:00
omap_emifs.c
omap_emifs.h
omap_gpio.c C99 types 2012-11-12 18:00:34 +00:00
omap_gpio.h
omap_gpioreg.h
omap_gptmrreg.h
omap_intr.c kill sprintf 2014-03-26 08:51:59 +00:00
omap_intr.h _setsoftintr is long dead. reap any leftovers from arm. 2014-02-04 18:51:16 +00:00
omap_mputmr.c
omap_nobyteacc_io.S Move parts of cpu.h that are not needed by MI code in <arm/locore.h> 2013-08-18 06:28:18 +00:00
omap_nobyteacc_space.c Add stream methods 2012-07-15 20:53:23 +00:00
omap_ocp.c
omap_ocp.h
omap_reg.h
omap_rtc.c use the inline bcdtobin and bintobcd directly instead through a macro. 2014-11-20 16:34:25 +00:00
omap_space.c Hook up generic_bs_sr_4 for bus_space_set_region_4 in the OMAP bus space. 2013-01-01 17:28:27 +00:00
omap_start.S Add __BITS to asm.h (remove from imxuartreg.h) 2012-09-01 14:46:25 +00:00
omap_tipb.c Add support for OMAP1-183 base hawkboard (HAWK) from Sughosh Ganu. 2013-10-02 16:48:26 +00:00
omap_tipb.h
omap_var.h Don't rely on hardcoded clocks now that we determine the actual ref clk 2013-06-15 21:58:20 +00:00
omap_wdt.c In kernel tickle mode, tickle once immediately upon setting the mode. 2012-12-29 04:59:21 +00:00
omap_wdtreg.h
omap_wdtvar.h
omapfb.c don't blindly assume that PAGE_SIZE == 4kB 2014-08-20 00:40:33 +00:00
omapfbreg.h be a little more consistent with register names 2013-02-12 21:17:17 +00:00
omapl1x_aintc.c Add support for OMAP1-183 base hawkboard (HAWK) from Sughosh Ganu. 2013-10-02 16:48:26 +00:00
omapl1x_bus_dma.c Add support for OMAP1-183 base hawkboard (HAWK) from Sughosh Ganu. 2013-10-02 16:48:26 +00:00
omapl1x_com.c Add support for OMAP1-183 base hawkboard (HAWK) from Sughosh Ganu. 2013-10-02 16:48:26 +00:00
omapl1x_emac.c Introduce softint-based if_input 2016-02-09 08:32:07 +00:00
omapl1x_intr.h Add support for OMAP1-183 base hawkboard (HAWK) from Sughosh Ganu. 2013-10-02 16:48:26 +00:00
omapl1x_misc.h Add support for OMAP1-183 base hawkboard (HAWK) from Sughosh Ganu. 2013-10-02 16:48:26 +00:00
omapl1x_ohci.c Add support for OMAP1-183 base hawkboard (HAWK) from Sughosh Ganu. 2013-10-02 16:48:26 +00:00
omapl1x_psc.c Add support for OMAP1-183 base hawkboard (HAWK) from Sughosh Ganu. 2013-10-02 16:48:26 +00:00
omapl1x_reg.h Add support for OMAP1-183 base hawkboard (HAWK) from Sughosh Ganu. 2013-10-02 16:48:26 +00:00
omapl1x_timer.c Add support for OMAP1-183 base hawkboard (HAWK) from Sughosh Ganu. 2013-10-02 16:48:26 +00:00
omapl1x_tipb.c Add support for OMAP1-183 base hawkboard (HAWK) from Sughosh Ganu. 2013-10-02 16:48:26 +00:00
sitara_cm.c src is too big these days to tolerate superfluous apostrophes. It's 2014-10-18 08:33:23 +00:00
sitara_cm.h Preserve const. 2014-11-22 19:50:28 +00:00
sitara_cmreg.h Add USB control registers. 2014-07-16 18:25:24 +00:00
ti_iic.c Add missing 2nd argument to snprintf 2014-03-26 11:59:05 +00:00
ti_iicreg.h A driver for I2C modules found in TI Sitara SoCs. Should also work 2013-04-17 14:33:06 +00:00
tifb.c flushing the framebuffer from interrupt has several problems: 2015-04-12 20:00:42 +00:00
tifbreg.h Work in progress on a driver for the graphic controller found in TI am355x SoCs, 2014-07-16 18:30:43 +00:00
tiotg.c Try to recover from vbus errors. Some devices draw too much 2014-07-17 19:58:18 +00:00
tiotgreg.h Add the bus front end for the Mentor Graphics USB OTG controllers found 2014-07-16 18:27:19 +00:00