From nobody Thu Jan 26 17:32:10 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4P2np22fpbz3bB8d; Thu, 26 Jan 2023 17:32:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4P2np226NYz3tDN; Thu, 26 Jan 2023 17:32:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674754330; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wDPXltvepXO1rBR26lK3SY1PrOZM2s/ZTuj4eKjiWVA=; b=jKyuuu3Wim4QxdUGEt7+1fqsUivAVL5YEXC9Jbax0p3aCEXenXB5igbbNSuriISpGvlgPD s42YTAml1bAM8xeFxfcBMoJ9Z4jIjPH4L0A8DFb3qSLoga5pjA3/XR9JNGbtbTFsAfGyGd 0doL7NgmBVQwB3GEg5+8N2RDIXFTuhehDnUPjKYQDT35dzOEt7kaLfjqFDGtdjvC5cy37w +HwKZ2NHpZg183VeqnoINwtljtrTdCO5mRERhRW7IhBJMz8lc+wcDXJu+XwprjB8JI0kxJ v1dKlhWFbs2lUg9CsiiR3c/zBDHPIhPuL7x68hH5ROyH6c4JDw+cwjedHTvzOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674754330; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wDPXltvepXO1rBR26lK3SY1PrOZM2s/ZTuj4eKjiWVA=; b=ZI70HhuGxa3crAfp9AFMIvOUt+eoGh9qUeadQ8x8g47xTAuYxLharq0vZ8zIxu7ieXX702 bF2eDc61XRzIs69FCwsNNzuIhbkqcaewsBkR9r0XMY/xDKxtiu2R9U88UdlWfpN6x0LLJy qEVuwGaVM+8NPEf3pmTLghSsEjJAqLZmRhQlQf7pi5ACMvFbp/ZiYcZ5qzBRvkfOQBpJNo HqsS6xPUArWfc+kSpylr8xE1cl0P0pFrSf0SSNtdhWxcokzQ7XXf/IclsYb6dteswo3Vr8 A/wXlm0B9Ws7WJml+6yLww3w9QdLXfavsG44AfAVOy7VXQ6eDgUOM7aWd62pIg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1674754330; a=rsa-sha256; cv=none; b=DHgptm+f0pDIdTwaFCF5zxyoQ9k4BpdOhGtQapXUP4AJheyh4wGapTx/2IaKgSz1if/7ex Jg+CCzVPGSuYWkKa9O54BaGSD0L+js6QnxKH88d3JY/mF6RO2/sFBS2Wvsku7SY16SuwXg 0Ma8QAQKlT2gG+PUY02ssapbdRi9DwfQm+bAEQEgE/bi7CzrtInNaJhETVEqPgNSfD6fMO 223SA8Q8/wl11SOHOazlNAmijv1lteHhrdVq0SG1TMCoNiPGc/2vBvFH6XjeNQpEMHmsE/ H1RlM+wuEJyWkRt9ihTOtmDsXC1N5dJfASiLOKH6F0gUyIhRuh1X3ZXqpLEMiQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4P2np218zjzdT0; Thu, 26 Jan 2023 17:32:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 30QHWA7V017933; Thu, 26 Jan 2023 17:32:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 30QHWAgi017932; Thu, 26 Jan 2023 17:32:10 GMT (envelope-from git) Date: Thu, 26 Jan 2023 17:32:10 GMT Message-Id: <202301261732.30QHWAgi017932@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Richard Scheffenegger Subject: git: 18b83b626a4f - main - tcp: reduce the size of t_rttupdated in tcpcb List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rscheff X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 18b83b626a4f596f1686140b99473125be9e33bf Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by rscheff: URL: https://cgit.FreeBSD.org/src/commit/?id=18b83b626a4f596f1686140b99473125be9e33bf commit 18b83b626a4f596f1686140b99473125be9e33bf Author: Richard Scheffenegger AuthorDate: 2023-01-26 17:07:11 +0000 Commit: Richard Scheffenegger CommitDate: 2023-01-26 17:08:00 +0000 tcp: reduce the size of t_rttupdated in tcpcb During tcp session start, various mechanisms need to track a few initial RTTs before becoming active. Prevent overflows of the corresponding tracking counter and reduce the size of tcpcb simultaneously. Reviewed By: #transport, tuexen, guest-ccui Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D21117 --- sys/netinet/tcp_input.c | 3 ++- sys/netinet/tcp_stacks/bbr.c | 3 ++- sys/netinet/tcp_stacks/rack.c | 3 ++- sys/netinet/tcp_usrreq.c | 2 +- sys/netinet/tcp_var.h | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index 606f6649d73d..72faf53299e4 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -3537,7 +3537,8 @@ tcp_xmit_timer(struct tcpcb *tp, int rtt) INP_WLOCK_ASSERT(tptoinpcb(tp)); TCPSTAT_INC(tcps_rttupdated); - tp->t_rttupdated++; + if (tp->t_rttupdated < UCHAR_MAX) + tp->t_rttupdated++; #ifdef STATS stats_voi_update_abs_u32(tp->t_stats, VOI_TCP_RTT, imax(0, rtt * 1000 / hz)); diff --git a/sys/netinet/tcp_stacks/bbr.c b/sys/netinet/tcp_stacks/bbr.c index 1080d53116b4..d54d213c82dd 100644 --- a/sys/netinet/tcp_stacks/bbr.c +++ b/sys/netinet/tcp_stacks/bbr.c @@ -6366,7 +6366,8 @@ tcp_bbr_xmit_timer_commit(struct tcp_bbr *bbr, struct tcpcb *tp, uint32_t cts) tp->t_rttvar = rtt_ticks << (TCP_RTTVAR_SHIFT - 1); } KMOD_TCPSTAT_INC(tcps_rttupdated); - tp->t_rttupdated++; + if (tp->t_rttupdated < UCHAR_MAX) + tp->t_rttupdated++; #ifdef STATS stats_voi_update_abs_u32(tp->t_stats, VOI_TCP_RTT, imax(0, rtt_ticks)); #endif diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index 25a4f8dd3197..17c671705cab 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -7646,7 +7646,8 @@ tcp_rack_xmit_timer_commit(struct tcp_rack *rack, struct tcpcb *tp) } rack->rc_srtt_measure_made = 1; KMOD_TCPSTAT_INC(tcps_rttupdated); - tp->t_rttupdated++; + if (tp->t_rttupdated < UCHAR_MAX) + tp->t_rttupdated++; #ifdef STATS if (rack_stats_gets_ms_rtt == 0) { /* Send in the microsecond rtt used for rxt timeout purposes */ diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c index 61c077ea66c6..47e635ba1faa 100644 --- a/sys/netinet/tcp_usrreq.c +++ b/sys/netinet/tcp_usrreq.c @@ -3068,7 +3068,7 @@ db_print_tcpcb(struct tcpcb *tp, const char *name, int indent) tp->t_rttvar, tp->t_rxtshift, tp->t_rttmin); db_print_indent(indent); - db_printf("t_rttupdated: %lu max_sndwnd: %u t_softerror: %d\n", + db_printf("t_rttupdated: %u max_sndwnd: %u t_softerror: %d\n", tp->t_rttupdated, tp->max_sndwnd, tp->t_softerror); db_print_indent(indent); diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h index 9fca3e016d4a..5afd492189e3 100644 --- a/sys/netinet/tcp_var.h +++ b/sys/netinet/tcp_var.h @@ -230,7 +230,6 @@ struct tcpcb { uint32_t snd_ssthresh_prev; /* ssthresh prior to retransmit */ tcp_seq snd_recover_prev; /* snd_recover prior to retransmit */ int t_sndzerowin; /* zero-window updates sent */ - u_long t_rttupdated; /* number of times rtt sampled */ int snd_numholes; /* number of holes seen by sender */ u_int t_badrxtwin; /* window for retransmit recovery */ TAILQ_HEAD(sackhole_head, sackhole) snd_holes; @@ -276,6 +275,7 @@ struct tcpcb { uint32_t t_dsack_bytes; /* dsack bytes received */ uint32_t t_dsack_tlp_bytes; /* dsack bytes received for TLPs sent */ uint32_t t_dsack_pack; /* dsack packets we have eceived */ + uint8_t t_rttupdated; /* number of times rtt sampled */ /* TCP Fast Open */ uint8_t t_tfo_client_cookie_len; /* TFO client cookie length */ uint32_t t_end_info_status; /* Status flag of end info */