Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/sys



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.




Home | Main Index | Thread Index | Old Index