Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 Apr 2023 16:54:15 GMT
From:      Randall Stewart <rrs@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 303246dcdf44 - main - We have a TCP_LOG_CONNEND log that should come out at the very last log of every connection. This holds some nice stats about why/how the connection ended. Though with the current code it does not come out without accounting due to the placement of the ifdefs. Also we need to make sure the stacks fini has ran before calling in from tcp_subr so we get all logs the stack may make at its ending.
Message-ID:  <202304191654.33JGsFaI039042@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by rrs:

URL: https://cgit.FreeBSD.org/src/commit/?id=303246dcdf445e5bcc19c1a2410b2aa47b0e304f

commit 303246dcdf445e5bcc19c1a2410b2aa47b0e304f
Author:     Randall Stewart <rrs@FreeBSD.org>
AuthorDate: 2023-04-19 16:54:25 +0000
Commit:     Randall Stewart <rrs@FreeBSD.org>
CommitDate: 2023-04-19 16:54:25 +0000

    We have a TCP_LOG_CONNEND log that should come out at the very last log of every connection. This
    holds some nice stats about why/how the connection ended. Though with the current code it does not
    come out without accounting due to the placement of the ifdefs. Also we need to make sure the stacks
    fini has ran before calling in from tcp_subr so we get all logs the stack may make at its ending.
    
    Reviewed by: rscheff
    Sponsored by: Netflix Inc
    Differential Revision:https://reviews.freebsd.org/D39693
---
 sys/netinet/tcp_log_buf.c | 18 +++++++++---------
 sys/netinet/tcp_subr.c    |  6 +++---
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/sys/netinet/tcp_log_buf.c b/sys/netinet/tcp_log_buf.c
index c533f8329fbe..fb8cb4453136 100644
--- a/sys/netinet/tcp_log_buf.c
+++ b/sys/netinet/tcp_log_buf.c
@@ -1432,11 +1432,11 @@ tcp_log_tcpcbfini(struct tcpcb *tp)
 
 
 	INP_WLOCK_ASSERT(tptoinpcb(tp));
-#ifdef TCP_ACCOUNTING
 	if (tp->_t_logstate) {
-		struct tcp_log_buffer *lgb;
 		union tcp_log_stackspecific log;
 		struct timeval tv;
+#ifdef TCP_ACCOUNTING
+		struct tcp_log_buffer *lgb;
 		int i;
 
 		memset(&log, 0, sizeof(log));
@@ -1468,15 +1468,15 @@ tcp_log_tcpcbfini(struct tcpcb *tp)
 			}
 		}
 skip_out:
+#endif
 		log.u_bbr.timeStamp = tcp_get_usecs(&tv);
 		log.u_bbr.cur_del_rate = tp->t_end_info;
-		TCP_LOG_EVENTP(tp, NULL,
-			       NULL,
-			       NULL,
-			       TCP_LOG_CONNEND, 0,
-			       0, &log, false, &tv);
+		(void)tcp_log_event(tp, NULL,
+	                 NULL,
+			 NULL,
+		         TCP_LOG_CONNEND, 0,
+		         0, &log, false, NULL, NULL, 0,  &tv);
 	}
-#endif
 	/*
 	 * If we were gathering packets to be automatically dumped, try to do
 	 * it now. If this succeeds, the log information in the TCPCB will be
@@ -2910,7 +2910,7 @@ tcp_log_sendfile(struct socket *so, off_t offset, size_t nbytes, int flags)
 			continue;
 		}
 		/* If we reach here its a allocated closed end request */
-		if ((ent->start == offset) || 
+		if ((ent->start == offset) ||
 		    ((offset > ent->start) && (offset < ent->end))){
 			/* Its within this request?? */
 			fnd = 1;
diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c
index d88fc48fc021..db0c71fdbfff 100644
--- a/sys/netinet/tcp_subr.c
+++ b/sys/netinet/tcp_subr.c
@@ -2423,13 +2423,13 @@ tcp_discardcb(struct tcpcb *tp)
 
 	CC_ALGO(tp) = NULL;
 
-#ifdef TCP_BLACKBOX
-	tcp_log_tcpcbfini(tp);
-#endif
 	TCPSTATES_DEC(tp->t_state);
 
 	if (tp->t_fb->tfb_tcp_fb_fini)
 		(*tp->t_fb->tfb_tcp_fb_fini)(tp, 1);
+#ifdef TCP_BLACKBOX
+	tcp_log_tcpcbfini(tp);
+#endif
 	MPASS(STAILQ_EMPTY(&tp->t_inqueue));
 
 	/*



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202304191654.33JGsFaI039042>