Index | Thread | Search

From:
Alexander Bluhm <bluhm@openbsd.org>
Subject:
Re: tcp output MP fixes
To:
tech@openbsd.org
Date:
Fri, 8 Nov 2024 14:05:02 +0100

Download raw body.

Thread
On Wed, Nov 06, 2024 at 11:50:03AM +0100, Alexander Bluhm wrote:
> Next goal is running TCP socket layer with shared netlock.  I went
> through tcp_output() and looked for MP races.  Mostly documentation
> and small fixes.

Let's split this diff into smaller parts.

Daclare global TCP state and backoff variables const.

ok?

bluhm

Index: netinet/tcp_fsm.h
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/tcp_fsm.h,v
diff -u -p -r1.9 tcp_fsm.h
--- netinet/tcp_fsm.h	5 Feb 2018 14:53:26 -0000	1.9
+++ netinet/tcp_fsm.h	8 Nov 2024 12:59:22 -0000
@@ -68,7 +68,7 @@
  * determined by state, with the proviso that TH_FIN is sent only
  * if all data queued for output is included in the segment.
  */
-u_char	tcp_outflags[TCP_NSTATES] = {
+const u_char tcp_outflags[TCP_NSTATES] = {
     TH_RST|TH_ACK, 0, TH_SYN, TH_SYN|TH_ACK,
     TH_ACK, TH_ACK,
     TH_FIN|TH_ACK, TH_FIN|TH_ACK, TH_FIN|TH_ACK, TH_ACK, TH_ACK,
@@ -76,7 +76,7 @@ u_char	tcp_outflags[TCP_NSTATES] = {
 #endif /* TCPOUTFLAGS */
 
 #ifdef	TCPSTATES
-const char *tcpstates[] = {
+const char *const tcpstates[] = {
 	"CLOSED",	"LISTEN",	"SYN_SENT",	"SYN_RCVD",
 	"ESTABLISHED",	"CLOSE_WAIT",	"FIN_WAIT_1",	"CLOSING",
 	"LAST_ACK",	"FIN_WAIT_2",	"TIME_WAIT",
Index: netinet/tcp_timer.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/tcp_timer.c,v
diff -u -p -r1.76 tcp_timer.c
--- netinet/tcp_timer.c	28 Jan 2024 20:34:25 -0000	1.76
+++ netinet/tcp_timer.c	8 Nov 2024 12:59:22 -0000
@@ -167,10 +167,10 @@ tcp_canceltimers(struct tcpcb *tp)
 		TCP_TIMER_DISARM(tp, i);
 }
 
-int	tcp_backoff[TCP_MAXRXTSHIFT + 1] =
+const int tcp_backoff[TCP_MAXRXTSHIFT + 1] =
     { 1, 2, 4, 8, 16, 32, 64, 64, 64, 64, 64, 64, 64 };
 
-int tcp_totbackoff = 511;	/* sum of tcp_backoff[] */
+const int tcp_totbackoff = 511;	/* sum of tcp_backoff[] */
 
 /*
  * TCP timer processing.
Index: netinet/tcp_timer.h
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/tcp_timer.h,v
diff -u -p -r1.21 tcp_timer.h
--- netinet/tcp_timer.h	29 Jan 2024 22:47:13 -0000	1.21
+++ netinet/tcp_timer.h	8 Nov 2024 13:01:16 -0000
@@ -160,7 +160,7 @@ extern int tcp_keepidle;		/* time before
 extern int tcp_keepintvl;		/* time between keepalive probes */
 extern int tcp_maxidle;			/* time to drop after starting probes */
 extern int tcp_ttl;			/* time to live for TCP segs */
-extern int tcp_backoff[];
+extern const int tcp_backoff[];
 
 void	tcp_timer_init(void);
 #endif /* _KERNEL */