Module Name: src Committed By: ozaki-r Date: Thu Feb 2 02:52:10 UTC 2017
Modified Files: src/sys/net: files.net src/sys/netinet: ip_carp.c ip_icmp.c src/sys/netinet6: icmp6.c src/sys/rump/librump/rumpnet: Makefile.rumpnet Added Files: src/sys/netinet: wqinput.c wqinput.h Log Message: 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 To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/net/files.net cvs rdiff -u -r1.83 -r1.84 src/sys/netinet/ip_carp.c cvs rdiff -u -r1.155 -r1.156 src/sys/netinet/ip_icmp.c cvs rdiff -u -r0 -r1.1 src/sys/netinet/wqinput.c src/sys/netinet/wqinput.h cvs rdiff -u -r1.206 -r1.207 src/sys/netinet6/icmp6.c cvs rdiff -u -r1.20 -r1.21 src/sys/rump/librump/rumpnet/Makefile.rumpnet Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.