summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_usrreq.c
diff options
context:
space:
mode:
authorjca <jca@openbsd.org>2017-04-02 12:56:39 +0000
committerjca <jca@openbsd.org>2017-04-02 12:56:39 +0000
commita9f4cfe4ee066a7305ec0782057440965e75aa37 (patch)
tree54696a54e88458fa7d6c65b2121bb63d8965d287 /sys/netinet/tcp_usrreq.c
parentadd overdrive 1000 (diff)
downloadwireguard-openbsd-a9f4cfe4ee066a7305ec0782057440965e75aa37.tar.xz
wireguard-openbsd-a9f4cfe4ee066a7305ec0782057440965e75aa37.zip
Fix tcp stats reporting
Return the sum of per-cpu counters instead of the current cpu's counters. Brainfart on my side. Analysis and fix by Andrei-Marius Radu.
Diffstat (limited to 'sys/netinet/tcp_usrreq.c')
-rw-r--r--sys/netinet/tcp_usrreq.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c
index cf1e088ac72..272f4ebcd4a 100644
--- a/sys/netinet/tcp_usrreq.c
+++ b/sys/netinet/tcp_usrreq.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tcp_usrreq.c,v 1.145 2017/03/13 20:18:21 claudio Exp $ */
+/* $OpenBSD: tcp_usrreq.c,v 1.146 2017/04/02 12:56:39 jca Exp $ */
/* $NetBSD: tcp_usrreq.c,v 1.20 1996/02/13 23:44:16 christos Exp $ */
/*
@@ -826,15 +826,14 @@ tcp_ident(void *oldp, size_t *oldlenp, void *newp, size_t newlen, int dodrop)
int
tcp_sysctl_tcpstat(void *oldp, size_t *oldlenp, void *newp)
{
+ uint64_t counters[tcps_ncounters];
struct tcpstat tcpstat;
- struct counters_ref cr;
- uint64_t *counters;
struct syn_cache_set *set;
int i = 0;
#define ASSIGN(field) do { tcpstat.field = counters[i++]; } while (0)
- counters = counters_enter(&cr, tcpcounters);
+ counters_read(tcpcounters, counters, nitems(counters));
ASSIGN(tcps_connattempt);
ASSIGN(tcps_accepts);
ASSIGN(tcps_connects);
@@ -932,7 +931,6 @@ tcp_sysctl_tcpstat(void *oldp, size_t *oldlenp, void *newp)
ASSIGN(tcps_sack_rexmit_bytes);
ASSIGN(tcps_sack_rcv_opts);
ASSIGN(tcps_sack_snd_opts);
- counters_leave(&cr, tcpcounters);
#undef ASSIGN