NetBSD/sys/arch/powerpc/booke
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
..
dev Introduce softint-based if_input 2016-02-09 08:32:07 +00:00
pci PCI Extended Configuration stuff written by nonaka@: 2015-10-02 05:22:49 +00:00
board_prop.c
booke_autoconf.c
booke_cache.c
booke_machdep.c ddb MP support 2015-01-23 07:27:05 +00:00
booke_pmap.c Remove SYSVSHM-specific code. The value of shminfo.shmall is zero at 2015-11-05 06:26:15 +00:00
booke_stubs.c
copyin.c #if 0 unused copyin_halfword. 2014-07-24 23:27:25 +00:00
copyout.c #if 0 copyout_le32 and friends, they are currently unused. 2014-07-24 23:29:02 +00:00
e500_autoconf.c
e500_intr.c __HAVE_PREEEMPTION -> __HAVE_PREEMPTION 2015-04-14 22:36:53 +00:00
e500_mpsubr.S Set correct stack pointer. 2014-12-19 03:46:23 +00:00
e500_timer.c fix build failure with lockstat. 2015-01-21 06:11:39 +00:00
e500_tlb.c fix compile failure without DIAGNOSTIC. 2015-02-19 08:59:56 +00:00
genassym.cf Avoid race condition between PTE update and TLB miss walk. 2015-01-26 04:47:53 +00:00
kcopy.c
spe_subr.S Skip .machine when building with clang. 2014-08-10 18:08:33 +00:00
spe.c pcu(9): 2014-05-16 00:48:41 +00:00
trap_subr.S Avoid race condition between PTE update and TLB miss walk. 2015-01-26 04:47:53 +00:00
trap.c Fix macro spelling. 2014-07-31 12:11:37 +00:00