Module Name:    src
Committed By:   riastradh
Date:           Sat Jun 29 12:59:09 UTC 2024

Modified Files:
        src/sys/netinet: if_arp.c ip_flow.c ip_input.c raw_ip.c tcp_input.c
            tcp_output.c tcp_syncache.c

Log Message:
netinet: Use _NET_STAT* API instead of direct array access.

PR kern/58380


To generate a diff of this commit:
cvs rdiff -u -r1.312 -r1.313 src/sys/netinet/if_arp.c
cvs rdiff -u -r1.85 -r1.86 src/sys/netinet/ip_flow.c
cvs rdiff -u -r1.402 -r1.403 src/sys/netinet/ip_input.c
cvs rdiff -u -r1.184 -r1.185 src/sys/netinet/raw_ip.c
cvs rdiff -u -r1.438 -r1.439 src/sys/netinet/tcp_input.c
cvs rdiff -u -r1.219 -r1.220 src/sys/netinet/tcp_output.c
cvs rdiff -u -r1.6 -r1.7 src/sys/netinet/tcp_syncache.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/netinet/if_arp.c
diff -u src/sys/netinet/if_arp.c:1.312 src/sys/netinet/if_arp.c:1.313
--- src/sys/netinet/if_arp.c:1.312	Sat Feb 24 21:39:05 2024
+++ src/sys/netinet/if_arp.c	Sat Jun 29 12:59:08 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_arp.c,v 1.312 2024/02/24 21:39:05 mlelstv Exp $	*/
+/*	$NetBSD: if_arp.c,v 1.313 2024/06/29 12:59:08 riastradh Exp $	*/
 
 /*
  * Copyright (c) 1998, 2000, 2008 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.312 2024/02/24 21:39:05 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.313 2024/06/29 12:59:08 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ddb.h"
@@ -515,7 +515,7 @@ arprequest(struct ifnet *ifp,
 	struct mbuf *m;
 	struct arphdr *ah;
 	struct sockaddr sa;
-	uint64_t *arps;
+	net_stat_ref_t arps;
 
 	KASSERT(sip != NULL);
 	KASSERT(tip != NULL);
@@ -561,8 +561,8 @@ arprequest(struct ifnet *ifp,
 	sa.sa_family = AF_ARP;
 	sa.sa_len = 2;
 	arps = ARP_STAT_GETREF();
-	arps[ARP_STAT_SNDTOTAL]++;
-	arps[ARP_STAT_SENDREQUEST]++;
+	_NET_STATINC_REF(arps, ARP_STAT_SNDTOTAL);
+	_NET_STATINC_REF(arps, ARP_STAT_SENDREQUEST);
 	ARP_STAT_PUTREF();
 	if_output_lock(ifp, ifp, m, &sa, NULL);
 }
@@ -779,7 +779,7 @@ in_arpinput(struct mbuf *m)
 	struct in_addr isaddr, itaddr, myaddr;
 	int op, rt_cmd, new_state = 0;
 	void *tha;
-	uint64_t *arps;
+	net_stat_ref_t arps;
 	struct psref psref, psref_ia;
 	int s;
 	char ipbuf[INET_ADDRSTRLEN];
@@ -1166,8 +1166,8 @@ reply:
 	sa.sa_family = AF_ARP;
 	sa.sa_len = 2;
 	arps = ARP_STAT_GETREF();
-	arps[ARP_STAT_SNDTOTAL]++;
-	arps[ARP_STAT_SNDREPLY]++;
+	_NET_STATINC_REF(arps, ARP_STAT_SNDTOTAL);
+	_NET_STATINC_REF(arps, ARP_STAT_SNDREPLY);
 	ARP_STAT_PUTREF();
 	if_output_lock(ifp, ifp, m, &sa, NULL);
 	if (rcvif != NULL)

Index: src/sys/netinet/ip_flow.c
diff -u src/sys/netinet/ip_flow.c:1.85 src/sys/netinet/ip_flow.c:1.86
--- src/sys/netinet/ip_flow.c:1.85	Fri Feb 19 14:51:59 2021
+++ src/sys/netinet/ip_flow.c	Sat Jun 29 12:59:08 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: ip_flow.c,v 1.85 2021/02/19 14:51:59 christos Exp $	*/
+/*	$NetBSD: ip_flow.c,v 1.86 2024/06/29 12:59:08 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip_flow.c,v 1.85 2021/02/19 14:51:59 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip_flow.c,v 1.86 2024/06/29 12:59:08 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_net_mpsafe.h"
@@ -368,7 +368,7 @@ static void
 ipflow_addstats(struct ipflow *ipf)
 {
 	struct rtentry *rt;
-	uint64_t *ips;
+	net_stat_ref_t ips;
 
 	rt = rtcache_validate(&ipf->ipf_ro);
 	if (rt != NULL) {
@@ -377,10 +377,11 @@ ipflow_addstats(struct ipflow *ipf)
 	}
 
 	ips = IP_STAT_GETREF();
-	ips[IP_STAT_CANTFORWARD] += ipf->ipf_errors + ipf->ipf_dropped;
-	ips[IP_STAT_TOTAL] += ipf->ipf_uses;
-	ips[IP_STAT_FORWARD] += ipf->ipf_uses;
-	ips[IP_STAT_FASTFORWARD] += ipf->ipf_uses;
+	_NET_STATADD_REF(ips, IP_STAT_CANTFORWARD,
+	    ipf->ipf_errors + ipf->ipf_dropped);
+	_NET_STATADD_REF(ips, IP_STAT_TOTAL, ipf->ipf_uses);
+	_NET_STATADD_REF(ips, IP_STAT_FORWARD, ipf->ipf_uses);
+	_NET_STATADD_REF(ips, IP_STAT_FASTFORWARD, ipf->ipf_uses);
 	IP_STAT_PUTREF();
 }
 
@@ -476,7 +477,7 @@ ipflow_slowtimo_work(struct work *wk, vo
 {
 	struct rtentry *rt;
 	struct ipflow *ipf, *next_ipf;
-	uint64_t *ips;
+	net_stat_ref_t ips;
 
 	/* We can allow enqueuing another work at this point */
 	atomic_swap_uint(&ipflow_work_enqueued, 0);
@@ -493,9 +494,10 @@ ipflow_slowtimo_work(struct work *wk, vo
 			rt->rt_use += ipf->ipf_uses;
 			rtcache_unref(rt, &ipf->ipf_ro);
 			ips = IP_STAT_GETREF();
-			ips[IP_STAT_TOTAL] += ipf->ipf_uses;
-			ips[IP_STAT_FORWARD] += ipf->ipf_uses;
-			ips[IP_STAT_FASTFORWARD] += ipf->ipf_uses;
+			_NET_STATADD_REF(ips, IP_STAT_TOTAL, ipf->ipf_uses);
+			_NET_STATADD_REF(ips, IP_STAT_FORWARD, ipf->ipf_uses);
+			_NET_STATADD_REF(ips, IP_STAT_FASTFORWARD,
+			    ipf->ipf_uses);
 			IP_STAT_PUTREF();
 			ipf->ipf_uses = 0;
 		}

Index: src/sys/netinet/ip_input.c
diff -u src/sys/netinet/ip_input.c:1.402 src/sys/netinet/ip_input.c:1.403
--- src/sys/netinet/ip_input.c:1.402	Fri Sep  2 03:50:00 2022
+++ src/sys/netinet/ip_input.c	Sat Jun 29 12:59:08 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: ip_input.c,v 1.402 2022/09/02 03:50:00 thorpej Exp $	*/
+/*	$NetBSD: ip_input.c,v 1.403 2024/06/29 12:59:08 riastradh Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -91,7 +91,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip_input.c,v 1.402 2022/09/02 03:50:00 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip_input.c,v 1.403 2024/06/29 12:59:08 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -1333,7 +1333,7 @@ ip_forward(struct mbuf *m, int srcrt, st
 		struct sockaddr		dst;
 		struct sockaddr_in	dst4;
 	} u;
-	uint64_t *ips;
+	net_stat_ref_t ips;
 	struct route *ro;
 
 	KASSERTMSG(cpu_softintr_p(), "ip_forward: not in the software "
@@ -1422,10 +1422,10 @@ ip_forward(struct mbuf *m, int srcrt, st
 	}
 
 	ips = IP_STAT_GETREF();
-	ips[IP_STAT_FORWARD]++;
+	_NET_STATINC_REF(ips, IP_STAT_FORWARD);
 
 	if (type) {
-		ips[IP_STAT_REDIRECTSENT]++;
+		_NET_STATINC_REF(ips, IP_STAT_REDIRECTSENT);
 		IP_STAT_PUTREF();
 		goto redirect;
 	}

Index: src/sys/netinet/raw_ip.c
diff -u src/sys/netinet/raw_ip.c:1.184 src/sys/netinet/raw_ip.c:1.185
--- src/sys/netinet/raw_ip.c:1.184	Fri Nov  4 09:00:58 2022
+++ src/sys/netinet/raw_ip.c	Sat Jun 29 12:59:08 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: raw_ip.c,v 1.184 2022/11/04 09:00:58 ozaki-r Exp $	*/
+/*	$NetBSD: raw_ip.c,v 1.185 2024/06/29 12:59:08 riastradh Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -65,7 +65,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: raw_ip.c,v 1.184 2022/11/04 09:00:58 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: raw_ip.c,v 1.185 2024/06/29 12:59:08 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -219,13 +219,13 @@ rip_input(struct mbuf *m, int off, int p
 	if (last != NULL) {
 		rip_sbappendaddr(last, ip, sintosa(&ripsrc), hlen, m);
 	} else if (inetsw[ip_protox[ip->ip_p]].pr_input == rip_input) {
-		uint64_t *ips;
+		net_stat_ref_t ips;
 
 		icmp_error(m, ICMP_UNREACH, ICMP_UNREACH_PROTOCOL,
 		    0, 0);
 		ips = IP_STAT_GETREF();
-		ips[IP_STAT_NOPROTO]++;
-		ips[IP_STAT_DELIVERED]--;
+		_NET_STATINC_REF(ips, IP_STAT_NOPROTO);
+		_NET_STATDEC_REF(ips, IP_STAT_DELIVERED);
 		IP_STAT_PUTREF();
 	} else {
 		m_freem(m);

Index: src/sys/netinet/tcp_input.c
diff -u src/sys/netinet/tcp_input.c:1.438 src/sys/netinet/tcp_input.c:1.439
--- src/sys/netinet/tcp_input.c:1.438	Fri Nov  4 09:01:53 2022
+++ src/sys/netinet/tcp_input.c	Sat Jun 29 12:59:08 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: tcp_input.c,v 1.438 2022/11/04 09:01:53 ozaki-r Exp $	*/
+/*	$NetBSD: tcp_input.c,v 1.439 2024/06/29 12:59:08 riastradh Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -138,7 +138,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.438 2022/11/04 09:01:53 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.439 2024/06/29 12:59:08 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -462,7 +462,7 @@ tcp_reass(struct tcpcb *tp, const struct
 #ifdef TCP_REASS_COUNTERS
 	u_int count = 0;
 #endif
-	uint64_t *tcps;
+	net_stat_ref_t tcps;
 
 	so = tp->t_inpcb->inp_socket;
 
@@ -585,8 +585,8 @@ tcp_reass(struct tcpcb *tp, const struct
 		if (SEQ_LEQ(q->ipqe_seq, pkt_seq) &&
 		    SEQ_GEQ(q->ipqe_seq + q->ipqe_len, pkt_seq + pkt_len)) {
 			tcps = TCP_STAT_GETREF();
-			tcps[TCP_STAT_RCVDUPPACK]++;
-			tcps[TCP_STAT_RCVDUPBYTE] += pkt_len;
+			_NET_STATINC_REF(tcps, TCP_STAT_RCVDUPPACK);
+			_NET_STATADD_REF(tcps, TCP_STAT_RCVDUPBYTE, pkt_len);
 			TCP_STAT_PUTREF();
 			tcp_new_dsack(tp, pkt_seq, pkt_len);
 			m_freem(m);
@@ -728,11 +728,12 @@ insert_it:
 	 */
 	tp->t_rcvoopack++;
 	tcps = TCP_STAT_GETREF();
-	tcps[TCP_STAT_RCVOOPACK]++;
-	tcps[TCP_STAT_RCVOOBYTE] += rcvoobyte;
+	_NET_STATINC_REF(tcps, TCP_STAT_RCVOOPACK);
+	_NET_STATADD_REF(tcps, TCP_STAT_RCVOOBYTE, rcvoobyte);
 	if (rcvpartdupbyte) {
-	    tcps[TCP_STAT_RCVPARTDUPPACK]++;
-	    tcps[TCP_STAT_RCVPARTDUPBYTE] += rcvpartdupbyte;
+		_NET_STATINC_REF(tcps, TCP_STAT_RCVPARTDUPPACK);
+		_NET_STATADD_REF(tcps, TCP_STAT_RCVPARTDUPBYTE,
+		    rcvpartdupbyte);
 	}
 	TCP_STAT_PUTREF();
 
@@ -981,7 +982,7 @@ static void tcp_vtw_input(struct tcphdr 
 	int tiflags;
 	int todrop;
 	uint32_t t_flags = 0;
-	uint64_t *tcps;
+	net_stat_ref_t tcps;
 
 	tiflags = th->th_flags;
 	todrop  = vp->rcv_nxt - th->th_seq;
@@ -1011,8 +1012,8 @@ static void tcp_vtw_input(struct tcphdr 
 			t_flags |= TF_ACKNOW;
 			todrop = tlen;
 			tcps = TCP_STAT_GETREF();
-			tcps[TCP_STAT_RCVDUPPACK] += 1;
-			tcps[TCP_STAT_RCVDUPBYTE] += todrop;
+			_NET_STATINC_REF(tcps, TCP_STAT_RCVDUPPACK);
+			_NET_STATADD_REF(tcps, TCP_STAT_RCVDUPBYTE, todrop);
 			TCP_STAT_PUTREF();
 		} else if ((tiflags & TH_RST) &&
 		    th->th_seq != vp->rcv_nxt) {
@@ -1023,8 +1024,9 @@ static void tcp_vtw_input(struct tcphdr 
 			goto dropafterack_ratelim;
 		} else {
 			tcps = TCP_STAT_GETREF();
-			tcps[TCP_STAT_RCVPARTDUPPACK] += 1;
-			tcps[TCP_STAT_RCVPARTDUPBYTE] += todrop;
+			_NET_STATINC_REF(tcps, TCP_STAT_RCVPARTDUPPACK);
+			_NET_STATADD_REF(tcps, TCP_STAT_RCVPARTDUPBYTE,
+			    todrop);
 			TCP_STAT_PUTREF();
 		}
 
@@ -1198,7 +1200,7 @@ tcp_input(struct mbuf *m, int off, int p
 	struct mbuf *tcp_saveti = NULL;
 	uint32_t ts_rtt;
 	uint8_t iptos;
-	uint64_t *tcps;
+	net_stat_ref_t tcps;
 	vestigial_inpcb_t vestige;
 
 	vestige.valid = 0;
@@ -1841,9 +1843,10 @@ after_listen:
 					  tcp_now - tp->t_rtttime);
 				acked = th->th_ack - tp->snd_una;
 				tcps = TCP_STAT_GETREF();
-				tcps[TCP_STAT_PREDACK]++;
-				tcps[TCP_STAT_RCVACKPACK]++;
-				tcps[TCP_STAT_RCVACKBYTE] += acked;
+				_NET_STATINC_REF(tcps, TCP_STAT_PREDACK);
+				_NET_STATINC_REF(tcps, TCP_STAT_RCVACKPACK);
+				_NET_STATADD_REF(tcps, TCP_STAT_RCVACKBYTE,
+				    acked);
 				TCP_STAT_PUTREF();
 				nd_hint(tp);
 
@@ -1924,9 +1927,9 @@ after_listen:
 			tp->snd_wl1 = th->th_seq;
 
 			tcps = TCP_STAT_GETREF();
-			tcps[TCP_STAT_PREDDAT]++;
-			tcps[TCP_STAT_RCVPACK]++;
-			tcps[TCP_STAT_RCVBYTE] += tlen;
+			_NET_STATINC_REF(tcps, TCP_STAT_PREDDAT);
+			_NET_STATINC_REF(tcps, TCP_STAT_RCVPACK);
+			_NET_STATADD_REF(tcps, TCP_STAT_RCVBYTE, tlen);
 			TCP_STAT_PUTREF();
 			nd_hint(tp);
 		/*
@@ -2139,8 +2142,9 @@ after_listen:
 			tlen = tp->rcv_wnd;
 			tiflags &= ~TH_FIN;
 			tcps = TCP_STAT_GETREF();
-			tcps[TCP_STAT_RCVPACKAFTERWIN]++;
-			tcps[TCP_STAT_RCVBYTEAFTERWIN] += todrop;
+			_NET_STATINC_REF(tcps, TCP_STAT_RCVPACKAFTERWIN);
+			_NET_STATADD_REF(tcps, TCP_STAT_RCVBYTEAFTERWIN,
+			    todrop);
 			TCP_STAT_PUTREF();
 		}
 		tp->snd_wl1 = th->th_seq - 1;
@@ -2188,9 +2192,9 @@ after_listen:
 			tp->ts_recent = 0;
 		} else {
 			tcps = TCP_STAT_GETREF();
-			tcps[TCP_STAT_RCVDUPPACK]++;
-			tcps[TCP_STAT_RCVDUPBYTE] += tlen;
-			tcps[TCP_STAT_PAWSDROP]++;
+			_NET_STATINC_REF(tcps, TCP_STAT_RCVDUPPACK);
+			_NET_STATADD_REF(tcps, TCP_STAT_RCVDUPBYTE, tlen);
+			_NET_STATINC_REF(tcps, TCP_STAT_PAWSDROP);
 			TCP_STAT_PUTREF();
 			tcp_new_dsack(tp, th->th_seq, tlen);
 			goto dropafterack;
@@ -2230,8 +2234,8 @@ after_listen:
 			todrop = tlen;
 			dupseg = true;
 			tcps = TCP_STAT_GETREF();
-			tcps[TCP_STAT_RCVDUPPACK]++;
-			tcps[TCP_STAT_RCVDUPBYTE] += todrop;
+			_NET_STATINC_REF(tcps, TCP_STAT_RCVDUPPACK);
+			_NET_STATADD_REF(tcps, TCP_STAT_RCVDUPBYTE, todrop);
 			TCP_STAT_PUTREF();
 		} else if ((tiflags & TH_RST) && th->th_seq != tp->rcv_nxt) {
 			/*
@@ -2241,8 +2245,9 @@ after_listen:
 			goto dropafterack_ratelim;
 		} else {
 			tcps = TCP_STAT_GETREF();
-			tcps[TCP_STAT_RCVPARTDUPPACK]++;
-			tcps[TCP_STAT_RCVPARTDUPBYTE] += todrop;
+			_NET_STATINC_REF(tcps, TCP_STAT_RCVPARTDUPPACK);
+			_NET_STATADD_REF(tcps, TCP_STAT_RCVPARTDUPBYTE,
+			    todrop);
 			TCP_STAT_PUTREF();
 		}
 		tcp_new_dsack(tp, th->th_seq, todrop);
@@ -2521,8 +2526,8 @@ after_listen:
 		}
 		acked = th->th_ack - tp->snd_una;
 		tcps = TCP_STAT_GETREF();
-		tcps[TCP_STAT_RCVACKPACK]++;
-		tcps[TCP_STAT_RCVACKBYTE] += acked;
+		_NET_STATINC_REF(tcps, TCP_STAT_RCVACKPACK);
+		_NET_STATADD_REF(tcps, TCP_STAT_RCVACKBYTE, acked);
 		TCP_STAT_PUTREF();
 
 		/*
@@ -2759,8 +2764,8 @@ dodata:
 			tp->rcv_nxt += tlen;
 			tiflags = th->th_flags & TH_FIN;
 			tcps = TCP_STAT_GETREF();
-			tcps[TCP_STAT_RCVPACK]++;
-			tcps[TCP_STAT_RCVBYTE] += tlen;
+			_NET_STATINC_REF(tcps, TCP_STAT_RCVPACK);
+			_NET_STATADD_REF(tcps, TCP_STAT_RCVBYTE, tlen);
 			TCP_STAT_PUTREF();
 			nd_hint(tp);
 			if (so->so_state & SS_CANTRCVMORE) {

Index: src/sys/netinet/tcp_output.c
diff -u src/sys/netinet/tcp_output.c:1.219 src/sys/netinet/tcp_output.c:1.220
--- src/sys/netinet/tcp_output.c:1.219	Wed Sep 13 15:54:28 2023
+++ src/sys/netinet/tcp_output.c	Sat Jun 29 12:59:08 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: tcp_output.c,v 1.219 2023/09/13 15:54:28 bouyer Exp $	*/
+/*	$NetBSD: tcp_output.c,v 1.220 2024/06/29 12:59:08 riastradh Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -135,7 +135,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tcp_output.c,v 1.219 2023/09/13 15:54:28 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tcp_output.c,v 1.220 2024/06/29 12:59:08 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -402,18 +402,18 @@ tcp_build_datapkt(struct tcpcb *tp, stru
     long len, int hdrlen, struct mbuf **mp)
 {
 	struct mbuf *m, *m0;
-	uint64_t *tcps;
+	net_stat_ref_t tcps;
 
 	tcps = TCP_STAT_GETREF();
 	if (tp->t_force && len == 1)
-		tcps[TCP_STAT_SNDPROBE]++;
+		_NET_STATINC_REF(tcps, TCP_STAT_SNDPROBE);
 	else if (SEQ_LT(tp->snd_nxt, tp->snd_max)) {
 		tp->t_sndrexmitpack++;
-		tcps[TCP_STAT_SNDREXMITPACK]++;
-		tcps[TCP_STAT_SNDREXMITBYTE] += len;
+		_NET_STATINC_REF(tcps, TCP_STAT_SNDREXMITPACK);
+		_NET_STATADD_REF(tcps, TCP_STAT_SNDREXMITBYTE, len);
 	} else {
-		tcps[TCP_STAT_SNDPACK]++;
-		tcps[TCP_STAT_SNDBYTE] += len;
+		_NET_STATINC_REF(tcps, TCP_STAT_SNDPACK);
+		_NET_STATADD_REF(tcps, TCP_STAT_SNDBYTE, len);
 	}
 	TCP_STAT_PUTREF();
 
@@ -534,7 +534,7 @@ tcp_output(struct tcpcb *tp)
 #ifdef TCP_SIGNATURE
 	int sigoff = 0;
 #endif
-	uint64_t *tcps;
+	net_stat_ref_t tcps;
 
 	so = tp->t_inpcb->inp_socket;
 	ro = &tp->t_inpcb->inp_route;
@@ -1245,13 +1245,13 @@ reset:			TCP_REASS_UNLOCK(tp);
 	} else {
 		tcps = TCP_STAT_GETREF();
 		if (tp->t_flags & TF_ACKNOW)
-			tcps[TCP_STAT_SNDACKS]++;
+			_NET_STATINC_REF(tcps, TCP_STAT_SNDACKS);
 		else if (flags & (TH_SYN|TH_FIN|TH_RST))
-			tcps[TCP_STAT_SNDCTRL]++;
+			_NET_STATINC_REF(tcps, TCP_STAT_SNDCTRL);
 		else if (SEQ_GT(tp->snd_up, tp->snd_una))
-			tcps[TCP_STAT_SNDURG]++;
+			_NET_STATINC_REF(tcps, TCP_STAT_SNDURG);
 		else
-			tcps[TCP_STAT_SNDWINUP]++;
+			_NET_STATINC_REF(tcps, TCP_STAT_SNDWINUP);
 		TCP_STAT_PUTREF();
 
 		MGETHDR(m, M_DONTWAIT, MT_HEADER);
@@ -1633,9 +1633,9 @@ out:
 		tp->t_pmtud_mtu_sent = packetlen;
 
 	tcps = TCP_STAT_GETREF();
-	tcps[TCP_STAT_SNDTOTAL]++;
+	_NET_STATINC_REF(tcps, TCP_STAT_SNDTOTAL);
 	if (tp->t_flags & TF_DELACK)
-		tcps[TCP_STAT_DELACK]++;
+		_NET_STATINC_REF(tcps, TCP_STAT_DELACK);
 	TCP_STAT_PUTREF();
 
 	/*

Index: src/sys/netinet/tcp_syncache.c
diff -u src/sys/netinet/tcp_syncache.c:1.6 src/sys/netinet/tcp_syncache.c:1.7
--- src/sys/netinet/tcp_syncache.c:1.6	Fri Nov  4 09:01:53 2022
+++ src/sys/netinet/tcp_syncache.c	Sat Jun 29 12:59:08 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: tcp_syncache.c,v 1.6 2022/11/04 09:01:53 ozaki-r Exp $	*/
+/*	$NetBSD: tcp_syncache.c,v 1.7 2024/06/29 12:59:08 riastradh Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -148,7 +148,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tcp_syncache.c,v 1.6 2022/11/04 09:01:53 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tcp_syncache.c,v 1.7 2024/06/29 12:59:08 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -938,9 +938,9 @@ syn_cache_add(struct sockaddr *src, stru
 		sc->sc_timestamp = tb.ts_recent;
 		m_freem(m);
 		if (syn_cache_respond(sc) == 0) {
-			uint64_t *tcps = TCP_STAT_GETREF();
-			tcps[TCP_STAT_SNDACKS]++;
-			tcps[TCP_STAT_SNDTOTAL]++;
+			net_stat_ref_t tcps = TCP_STAT_GETREF();
+			_NET_STATINC_REF(tcps, TCP_STAT_SNDACKS);
+			_NET_STATINC_REF(tcps, TCP_STAT_SNDTOTAL);
 			TCP_STAT_PUTREF();
 		}
 		return 1;
@@ -1046,9 +1046,9 @@ syn_cache_add(struct sockaddr *src, stru
 	sc->sc_tp = tp;
 	m_freem(m);
 	if (syn_cache_respond(sc) == 0) {
-		uint64_t *tcps = TCP_STAT_GETREF();
-		tcps[TCP_STAT_SNDACKS]++;
-		tcps[TCP_STAT_SNDTOTAL]++;
+		net_stat_ref_t tcps = TCP_STAT_GETREF();
+		_NET_STATINC_REF(tcps, TCP_STAT_SNDACKS);
+		_NET_STATINC_REF(tcps, TCP_STAT_SNDTOTAL);
 		TCP_STAT_PUTREF();
 		syn_cache_insert(sc, tp);
 	} else {

Reply via email to