From: Alexander Bluhm Subject: Re: running TCP input in parallel To: tech@openbsd.org Date: Sat, 26 Apr 2025 00:12:05 +0200 On Thu, Apr 17, 2025 at 06:53:19PM +0200, Alexander Bluhm wrote: > I have several positive test reports. Mark Patruck has seen some connection errors in his zabbix monitor. He was using the diff which caches the TCP socket lock. With the simpler diff below these sporadic failures do not occur. So I would suggest enabling simple prallel input first. Throughput optimization can be done later. Let's see if tcp_input() is really MP safe. ok? bluhm Index: netinet/in_proto.c =================================================================== RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/in_proto.c,v diff -u -p -r1.121 in_proto.c --- netinet/in_proto.c 5 Jan 2025 12:36:48 -0000 1.121 +++ netinet/in_proto.c 25 Apr 2025 10:36:56 -0000 @@ -197,7 +197,8 @@ const struct protosw inetsw[] = { .pr_type = SOCK_STREAM, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_TCP, - .pr_flags = PR_CONNREQUIRED|PR_WANTRCVD|PR_ABRTACPTDIS|PR_SPLICE, + .pr_flags = PR_CONNREQUIRED|PR_WANTRCVD|PR_ABRTACPTDIS|PR_SPLICE| + PR_MPINPUT, .pr_input = tcp_input, .pr_ctlinput = tcp_ctlinput, .pr_ctloutput = tcp_ctloutput, Index: netinet6/in6_proto.c =================================================================== RCS file: /data/mirror/openbsd/cvs/src/sys/netinet6/in6_proto.c,v diff -u -p -r1.124 in6_proto.c --- netinet6/in6_proto.c 5 Jan 2025 12:36:48 -0000 1.124 +++ netinet6/in6_proto.c 25 Apr 2025 10:36:56 -0000 @@ -147,7 +147,8 @@ const struct protosw inet6sw[] = { .pr_type = SOCK_STREAM, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_TCP, - .pr_flags = PR_CONNREQUIRED|PR_WANTRCVD|PR_ABRTACPTDIS|PR_SPLICE, + .pr_flags = PR_CONNREQUIRED|PR_WANTRCVD|PR_ABRTACPTDIS|PR_SPLICE| + PR_MPINPUT, .pr_input = tcp_input, .pr_ctlinput = tcp6_ctlinput, .pr_ctloutput = tcp_ctloutput,