From nobody Wed Dec 7 17:53:18 2022 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 4NS4dW1TcQz4jPtT; Wed, 7 Dec 2022 17:53:19 +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 4NS4dW0wLsz4HKG; Wed, 7 Dec 2022 17:53:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1670435599; 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=zkNXcflX8/XV7KXSTkrigxJfFsWictl98fxrxaSuZJs=; b=AuURjJeYcemAoNoB9hP816mauynfSiD5D/ivkkY2iNblYaLjR4PkyxkoWvxsJI/zT7mGkD aQW2pQ/3uuGqBNwmjozsXfEeN2ZY4FZymps8VaUDONbodHOSzsiCk0mada5UNV28RQXItX bsDpuW64LMxoL0M8e/p/m/8qCxigwSNrwXbithoQr7W9WTCXYpX5c8QG4AcK3ZvK3QGLiP gF+9/msyz+T2wqrMiuwqVeBSdiRW38+u0wGSgKDURg1AXIPBlODd7o1hGACP+mr3U+IkpM TdWaBDTw2EABEDU7UDaReBpy/cZETqTn4t36KM58S1Hd4Revy/T8DRMKF9C+Tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1670435599; 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=zkNXcflX8/XV7KXSTkrigxJfFsWictl98fxrxaSuZJs=; b=YI9A6ovHzjvbcLhV/Q5CVK/ls8Ej7WaNjeKqne+es3jr7WjhCtal8AQ7wuLgh0M/mjsoc6 GQ/x8x+Nq6ZKO7OsZYNELXE/ZsZi+7lrNsqxG1FQHPdhbGYFkUiC4dbbWlmutUeplVaMwQ WkHuVsw5T7cGWKCMDwUYhFW/3RjUzf7W9g/X/S+M5aVQbTQehB0763m64omL8Rds8FXpsD oSiPdFXrjWzb+Ad4RaEw7IZsoy7kRpWWo2s5A9Uyx9eX4dJwzBdZ94+71ctB6BxOl501Ow o3+US4s8ELwBC12vfw9m6v2GsVSxn6NjkMAwKfThfBUiu5j8snsyAGt9wDMKFA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1670435599; a=rsa-sha256; cv=none; b=gokH6ia0BXr+mgaNoBhMgPlmxnwwThhGzpghpKMvW/i4dSMhoaqX8v3BEj3NOlDQYLbkDj c2INLhY8zTWQ23ZPTv92B/GFaFVKh9JkjsNDUQKJZYssAahW8yX0DZX5ax4mdMb28XG7ps Cb0dFYIhQqMc4V7OfkK759GPTGJFdMaOq0Z5xtErBzQ1Jdj+p4WCr9Wp9ib9jEwX8xJ27j 6CmNlQXnZMygBbEQWFEJWYqGGLEsnKOI9T1ud2v3RY61m7SDfiSj0Dfi7vpy7FgjwTXo55 pJyOyzhbU3oFr2B9eOh3UBTQO71a8i98KHod8AkomZkYVZPEn7t2Kc9CuqJQQA== 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 4NS4dW01G6zQpv; Wed, 7 Dec 2022 17:53:19 +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 2B7HrIuh056936; Wed, 7 Dec 2022 17:53:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2B7HrI8I056935; Wed, 7 Dec 2022 17:53:18 GMT (envelope-from git) Date: Wed, 7 Dec 2022 17:53:18 GMT Message-Id: <202212071753.2B7HrI8I056935@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: 918fa4227d5b - main - tcp: remove tcp_timer_suspend() 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: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 918fa4227d5bb74e882649785284c76e24e8f259 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=918fa4227d5bb74e882649785284c76e24e8f259 commit 918fa4227d5bb74e882649785284c76e24e8f259 Author: Gleb Smirnoff AuthorDate: 2022-12-07 17:00:48 +0000 Commit: Gleb Smirnoff CommitDate: 2022-12-07 17:00:48 +0000 tcp: remove tcp_timer_suspend() It was a temporary code added together with RACK to fight against TCP timer races. --- sys/netinet/tcp_stacks/bbr.c | 4 -- sys/netinet/tcp_stacks/rack.c | 4 -- sys/netinet/tcp_timer.c | 108 ------------------------------------------ sys/netinet/tcp_timer.h | 10 ---- sys/netinet/tcp_var.h | 2 - 5 files changed, 128 deletions(-) diff --git a/sys/netinet/tcp_stacks/bbr.c b/sys/netinet/tcp_stacks/bbr.c index 250418d87150..edba270c151b 100644 --- a/sys/netinet/tcp_stacks/bbr.c +++ b/sys/netinet/tcp_stacks/bbr.c @@ -9919,10 +9919,6 @@ bbr_stop_all_timers(struct tcpcb *tp) bbr = (struct tcp_bbr *)tp->t_fb_ptr; bbr->rc_in_persist = 1; } - tcp_timer_suspend(tp, TT_PERSIST); - tcp_timer_suspend(tp, TT_REXMT); - tcp_timer_suspend(tp, TT_KEEP); - tcp_timer_suspend(tp, TT_DELACK); } static void diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index c3aed32e02ea..a93fb18398fe 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -7100,10 +7100,6 @@ rack_stop_all_timers(struct tcpcb *tp) rack = (struct tcp_rack *)tp->t_fb_ptr; rack->rc_in_persist = 1; } - tcp_timer_suspend(tp, TT_PERSIST); - tcp_timer_suspend(tp, TT_REXMT); - tcp_timer_suspend(tp, TT_KEEP); - tcp_timer_suspend(tp, TT_DELACK); } static void diff --git a/sys/netinet/tcp_timer.c b/sys/netinet/tcp_timer.c index a0eb4b0aad2d..d67a062eab5b 100644 --- a/sys/netinet/tcp_timer.c +++ b/sys/netinet/tcp_timer.c @@ -976,114 +976,6 @@ tcp_timer_active(struct tcpcb *tp, uint32_t timer_type) return callout_active(t_callout); } -/* - * Stop the timer from running, and apply a flag - * against the timer_flags that will force the - * timer never to run. The flag is needed to assure - * a race does not leave it running and cause - * the timer to possibly restart itself (keep and persist - * especially do this). - */ -int -tcp_timer_suspend(struct tcpcb *tp, uint32_t timer_type) -{ - struct callout *t_callout; - uint32_t t_flags; - - switch (timer_type) { - case TT_DELACK: - t_flags = TT_DELACK_SUS; - t_callout = &tp->tt_delack; - break; - case TT_REXMT: - t_flags = TT_REXMT_SUS; - t_callout = &tp->tt_rexmt; - break; - case TT_PERSIST: - t_flags = TT_PERSIST_SUS; - t_callout = &tp->tt_persist; - break; - case TT_KEEP: - t_flags = TT_KEEP_SUS; - t_callout = &tp->tt_keep; - break; - case TT_2MSL: - t_flags = TT_2MSL_SUS; - t_callout = &tp->tt_2msl; - break; - default: - panic("tp:%p bad timer_type 0x%x", tp, timer_type); - } - tp->tt_flags |= t_flags; - return (callout_stop(t_callout)); -} - -void -tcp_timers_unsuspend(struct tcpcb *tp, uint32_t timer_type) -{ - - switch (timer_type) { - case TT_DELACK: - if (tp->tt_flags & TT_DELACK_SUS) { - tp->tt_flags &= ~TT_DELACK_SUS; - if (tp->t_flags & TF_DELACK) { - /* Delayed ack timer should be up activate a timer */ - tp->t_flags &= ~TF_DELACK; - tcp_timer_activate(tp, TT_DELACK, - tcp_delacktime); - } - } - break; - case TT_REXMT: - if (tp->tt_flags & TT_REXMT_SUS) { - tp->tt_flags &= ~TT_REXMT_SUS; - if (SEQ_GT(tp->snd_max, tp->snd_una) && - (tcp_timer_active((tp), TT_PERSIST) == 0) && - tp->snd_wnd) { - /* We have outstanding data activate a timer */ - tcp_timer_activate(tp, TT_REXMT, - tp->t_rxtcur); - } - } - break; - case TT_PERSIST: - if (tp->tt_flags & TT_PERSIST_SUS) { - tp->tt_flags &= ~TT_PERSIST_SUS; - if (tp->snd_wnd == 0) { - /* Activate the persists timer */ - tp->t_rxtshift = 0; - tcp_setpersist(tp); - } - } - break; - case TT_KEEP: - if (tp->tt_flags & TT_KEEP_SUS) { - tp->tt_flags &= ~TT_KEEP_SUS; - tcp_timer_activate(tp, TT_KEEP, - TCPS_HAVEESTABLISHED(tp->t_state) ? - TP_KEEPIDLE(tp) : TP_KEEPINIT(tp)); - } - break; - case TT_2MSL: - if (tp->tt_flags &= TT_2MSL_SUS) { - struct socket *so = tptosocket(tp); - - tp->tt_flags &= ~TT_2MSL_SUS; - if ((tp->t_state == TCPS_FIN_WAIT_2) && - (so == NULL || /* XXXGL: needed? */ - (so->so_rcv.sb_state & SBS_CANTRCVMORE))) { - /* Star the 2MSL timer */ - tcp_timer_activate(tp, TT_2MSL, - (tcp_fast_finwait2_recycle) ? - tcp_finwait2_timeout : TP_MAXIDLE(tp)); - } - } - break; - default: - panic("tp:%p bad timer_type 0x%x", tp, timer_type); - } -} - static void tcp_timer_discard(void *ptp) { diff --git a/sys/netinet/tcp_timer.h b/sys/netinet/tcp_timer.h index e72ab5f90546..f53a66084fa1 100644 --- a/sys/netinet/tcp_timer.h +++ b/sys/netinet/tcp_timer.h @@ -155,16 +155,6 @@ static const char *tcptimers[] = #define TT_2MSL 0x0010 #define TT_MASK (TT_DELACK|TT_REXMT|TT_PERSIST|TT_KEEP|TT_2MSL) -/* - * Suspend flags - used when suspending a timer - * from ever running again. - */ -#define TT_DELACK_SUS 0x0100 -#define TT_REXMT_SUS 0x0200 -#define TT_PERSIST_SUS 0x0400 -#define TT_KEEP_SUS 0x0800 -#define TT_2MSL_SUS 0x1000 - #define TT_STOPPED 0x00010000 #define TP_KEEPINIT(tp) ((tp)->t_keepinit ? (tp)->t_keepinit : tcp_keepinit) diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h index 3f18f0af39cd..9e130fcdf124 100644 --- a/sys/netinet/tcp_var.h +++ b/sys/netinet/tcp_var.h @@ -1187,8 +1187,6 @@ struct tcptemp * tcpip_maketemplate(struct inpcb *); void tcpip_fillheaders(struct inpcb *, uint16_t, void *, void *); void tcp_timer_activate(struct tcpcb *, uint32_t, u_int); -int tcp_timer_suspend(struct tcpcb *, uint32_t); -void tcp_timers_unsuspend(struct tcpcb *, uint32_t); int tcp_timer_active(struct tcpcb *, uint32_t); void tcp_timer_stop(struct tcpcb *, uint32_t); void tcp_trace(short, short, struct tcpcb *, void *, struct tcphdr *, int);