From owner-dev-commits-src-all@freebsd.org Mon May 24 18:44:33 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8D9F863A330; Mon, 24 May 2021 18:44:33 +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 4FpmN06fLMz3tRn; Mon, 24 May 2021 18:44:32 +0000 (UTC) (envelope-from git@FreeBSD.org) 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 C05967522; Mon, 24 May 2021 18:44:32 +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 14OIiWWT064223; Mon, 24 May 2021 18:44:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 14OIiWlU064222; Mon, 24 May 2021 18:44:32 GMT (envelope-from git) Date: Mon, 24 May 2021 18:44:32 GMT Message-Id: <202105241844.14OIiWlU064222@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Randall Stewart Subject: git: 631449d5d035 - main - tcp: Fix an issue with the PUSH bit as well as fill in the missing mtu change for fsb's MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rrs X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 631449d5d03506295eaa6947c1b0e8a168a2f6b7 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2021 18:44:33 -0000 The branch main has been updated by rrs: URL: https://cgit.FreeBSD.org/src/commit/?id=631449d5d03506295eaa6947c1b0e8a168a2f6b7 commit 631449d5d03506295eaa6947c1b0e8a168a2f6b7 Author: Randall Stewart AuthorDate: 2021-05-24 18:42:15 +0000 Commit: Randall Stewart CommitDate: 2021-05-24 18:42:15 +0000 tcp: Fix an issue with the PUSH bit as well as fill in the missing mtu change for fsb's The push bit itself was also not actually being properly moved to the right edge. The FIN bit was incorrectly on the left edge. We fix these two issues as well as plumb in the mtu_change for alternate stacks. Reviewed by: mtuexen Sponsored by: Netflix Inc Differential Revision: https://reviews.freebsd.org/D30413 --- sys/netinet/tcp_stacks/rack.c | 8 ++++++-- sys/netinet/tcp_subr.c | 9 +++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index 2713554626e9..84e330efa74a 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -6058,8 +6058,12 @@ rack_clone_rsm(struct tcp_rack *rack, struct rack_sendmap *nrsm, if (nrsm->r_flags & RACK_HAS_SYN) nrsm->r_flags &= ~RACK_HAS_SYN; /* Now if we have a FIN flag we keep it on the right edge */ - if (nrsm->r_flags & RACK_HAS_FIN) - nrsm->r_flags &= ~RACK_HAS_FIN; + if (rsm->r_flags & RACK_HAS_FIN) + rsm->r_flags &= ~RACK_HAS_FIN; + /* Push bit must go to the right edge as well */ + if (rsm->r_flags & RACK_HAD_PUSH) + rsm->r_flags &= ~RACK_HAD_PUSH; + /* * Now we need to find nrsm's new location in the mbuf chain * we basically calculate a new offset, which is soff + diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index c44f26f78a2f..de22310d241a 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -3407,6 +3407,15 @@ tcp_mtudisc(struct inpcb *inp, int mtuoffer) tp->snd_recover = tp->snd_max; if (tp->t_flags & TF_SACK_PERMIT) EXIT_FASTRECOVERY(tp->t_flags); + if (tp->t_fb->tfb_tcp_mtu_chg != NULL) { + /* + * Conceptually the snd_nxt setting + * and freeing sack holes should + * be done by the default stacks + * own tfb_tcp_mtu_chg(). + */ + tp->t_fb->tfb_tcp_mtu_chg(tp); + } tp->t_fb->tfb_tcp_output(tp); }