NetBSD/sys/netinet6
ozaki-r 589739056f Defer some pr_input to workqueue
pr_input is currently called in softint. Some pr_input such as ICMP, ICMPv6
and CARP can add/delete/update IP addresses and routing table entries. For
example, icmp6_redirect_input updates an a routing table entry and
nd6_ra_input may delete an IP address.

Basically such operations shouldn't be done in softint. That aside, we have
a reason to avoid the situation; psz/psref waits cannot be used in softint,
however they are required to work in such pr_input in the MP-safe world.

The change implements the workqueue pr_input framework called wqinput which
provides a means to defer pr_input of a protocol to workqueue easily.
Currently icmp_input, icmp6_input, carp_proto_input and carp6_proto_input
are deferred to workqueue by the framework.

Proposed and discussed on tech-kern and tech-net
2017-02-02 02:52:10 +00:00
..
dccp6_usrreq.c Tweak softnet_lock and NET_MPSAFE 2017-01-24 07:09:24 +00:00
dccp6_var.h make connect syscall use sockaddr_big and modify pr_{send,connect} 2015-05-02 17:18:03 +00:00
dest6.c Get rid of unnecessary header inclusions 2017-01-11 13:08:29 +00:00
files.netinet6 ip6flow refactor like ipflow. 2016-08-02 04:50:16 +00:00
frag6.c Tweak softnet_lock and NET_MPSAFE 2017-01-24 07:09:24 +00:00
icmp6_private.h
icmp6.c Defer some pr_input to workqueue 2017-02-02 02:52:10 +00:00
in6_cksum.c
in6_gif.c ip6_sprintf -> IN6_PRINT so that we pass the size. 2017-01-16 15:44:46 +00:00
in6_gif.h fix: gif(4) receive side race 2016-07-04 04:22:47 +00:00
in6_ifattach.c Tweak softnet_lock and NET_MPSAFE 2017-01-24 07:09:24 +00:00
in6_ifattach.h
in6_offload.c
in6_offload.h
in6_pcb.c Get rid of splnet for pool(9) 2017-01-23 09:14:24 +00:00
in6_pcb.h Add rtcache_unref to release points of rtentry stemming from rtcache 2016-12-08 05:16:33 +00:00
in6_print.c
in6_proto.c Remove unnecessary inclusions of nd6.h 2016-12-13 08:29:03 +00:00
in6_src.c ip6_sprintf -> IN6_PRINT so that we pass the size. 2017-01-16 15:44:46 +00:00
in6_var.h ip6_sprintf -> IN6_PRINT so that we pass the size. 2017-01-16 15:44:46 +00:00
in6.c Replace some splnet with splsoftnet 2017-01-23 10:19:03 +00:00
in6.h Reduce code duplication. 2016-02-15 14:59:03 +00:00
ip6_etherip.c Get rid of unnecessary header inclusions 2017-01-11 13:08:29 +00:00
ip6_etherip.h
ip6_flow.c Get rid of unnecessary header inclusions 2017-01-11 13:08:29 +00:00
ip6_forward.c ip6_sprintf -> IN6_PRINT so that we pass the size. 2017-01-16 15:44:46 +00:00
ip6_id.c Use time_uptime instead of time_second to avoid time leaps 2015-08-07 08:11:33 +00:00
ip6_input.c ip6_sprintf -> IN6_PRINT so that we pass the size. 2017-01-16 15:44:46 +00:00
ip6_mroute.c Tweak softnet_lock and NET_MPSAFE 2017-01-24 07:09:24 +00:00
ip6_mroute.h
ip6_output.c ip6_sprintf -> IN6_PRINT so that we pass the size. 2017-01-16 15:44:46 +00:00
ip6_private.h
ip6_var.h Add rtcache_unref to release points of rtentry stemming from rtcache 2016-12-08 05:16:33 +00:00
ip6protosw.h Revert previous: ran cvs commit when I meant cvs diff. Sorry! 2016-01-21 15:41:29 +00:00
ipsec.h
Makefile
mld6_var.h
mld6.c Tweak softnet_lock and NET_MPSAFE 2017-01-24 07:09:24 +00:00
nd6_nbr.c ip6_sprintf -> IN6_PRINT so that we pass the size. 2017-01-16 15:44:46 +00:00
nd6_rtr.c ip6_sprintf -> IN6_PRINT so that we pass the size. 2017-01-16 15:44:46 +00:00
nd6.c ip6_sprintf -> IN6_PRINT so that we pass the size. 2017-01-16 15:44:46 +00:00
nd6.h Protect IPv6 default router and prefix lists with coarse-grained rwlock 2016-12-19 07:51:34 +00:00
pim6_var.h
pim6.h
raw_ip6.c Tweak softnet_lock and NET_MPSAFE 2017-01-24 07:09:24 +00:00
raw_ip6.h
route6.c
scope6_var.h
scope6.c ip6_sprintf -> IN6_PRINT so that we pass the size. 2017-01-16 15:44:46 +00:00
sctp6_usrreq.c Remove unnecessary inclusions of nd6.h 2016-12-13 08:29:03 +00:00
sctp6_var.h Add core networking support for SCTP. 2015-10-13 21:28:34 +00:00
udp6_output.c Fix race condition of in6_selectsrc 2016-10-31 04:16:25 +00:00
udp6_private.h
udp6_usrreq.c Tweak softnet_lock and NET_MPSAFE 2017-01-24 07:09:24 +00:00
udp6_var.h make connect syscall use sockaddr_big and modify pr_{send,connect} 2015-05-02 17:18:03 +00:00
udp6.h