git: 3aa0a0aaa23b - main - tcp: add gone_in note for net.inet.tcp.sack.revised for fbsd16

From: Richard Scheffenegger <rscheff_at_FreeBSD.org>
Date: Thu, 04 Sep 2025 22:26:10 UTC
The branch main has been updated by rscheff:

URL: https://cgit.FreeBSD.org/src/commit/?id=3aa0a0aaa23b95dbf0ef58b16b313637f515b460

commit 3aa0a0aaa23b95dbf0ef58b16b313637f515b460
Author:     Richard Scheffenegger <rscheff@FreeBSD.org>
AuthorDate: 2025-09-04 22:23:14 +0000
Commit:     Richard Scheffenegger <rscheff@FreeBSD.org>
CommitDate: 2025-09-04 22:23:52 +0000

    tcp: add gone_in note for net.inet.tcp.sack.revised for fbsd16
    
    Depricate the support for the old RFC3517 behavior of SACK loss
    recovery, and simplfy the code to always adhere to RFC6675.
    
    Reviewed By: tuexen, cc, #transport
    Sponsored by: NetApp, Inc.
    Differential Revision: https://reviews.freebsd.org/D52383
---
 share/man/man4/tcp.4   | 10 ++++++----
 sys/netinet/tcp_sack.c | 21 +++++++++++++++++++--
 2 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/share/man/man4/tcp.4 b/share/man/man4/tcp.4
index fcfda42908d8..3c9f4ff83f3d 100644
--- a/share/man/man4/tcp.4
+++ b/share/man/man4/tcp.4
@@ -31,7 +31,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd June 27, 2025
+.Dd September 5, 2025
 .Dt TCP 4
 .Os
 .Sh NAME
@@ -940,9 +940,6 @@ maximum segment size.
 This helps throughput in general, but
 particularly affects short transfers and high-bandwidth large
 propagation-delay connections.
-.It Va rfc6675_pipe
-Deprecated and superseded by
-.Va sack.revised
 .It Va sack.enable
 Enable support for RFC 2018, TCP Selective Acknowledgment option,
 which allows the receiver to inform the sender about all successfully
@@ -974,6 +971,11 @@ recovery, the trailing segment is immediately resent, rather than waiting
 for a Retransmission timeout.
 Finally, SACK loss recovery is also engaged, once two segments plus one byte are
 SACKed - even if no traditional duplicate ACKs were observed.
+.Va sack.revised
+is deprecated and will be removed in
+.Fx 16 .
+.Va sack.enable
+will always follow RFC6675.
 .It Va sendbuf_auto
 Enable automatic send buffer sizing.
 .It Va sendbuf_auto_lowat
diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c
index b6c55fac50b3..6e08ad2796a8 100644
--- a/sys/netinet/tcp_sack.c
+++ b/sys/netinet/tcp_sack.c
@@ -128,8 +128,25 @@ SYSCTL_INT(_net_inet_tcp_sack, OID_AUTO, enable, CTLFLAG_VNET | CTLFLAG_RW,
     "Enable/Disable TCP SACK support");
 
 VNET_DEFINE(int, tcp_do_newsack) = 1;
-SYSCTL_INT(_net_inet_tcp_sack, OID_AUTO, revised, CTLFLAG_VNET | CTLFLAG_RW,
-    &VNET_NAME(tcp_do_newsack), 0,
+
+static int
+sysctl_net_inet_tcp_sack_revised(SYSCTL_HANDLER_ARGS)
+{
+	int error;
+	int new;
+
+	new = V_tcp_do_newsack;
+	error = sysctl_handle_int(oidp, &new, 0, req);
+	if (error == 0 && req->newptr) {
+		V_tcp_do_newsack = new;
+		gone_in(16, "net.inet.tcp.sack.revised will be deprecated."
+		    " net.inet.tcp.sack.enable will always follow RFC6675 SACK.\n");
+	}
+	return (error);
+}
+
+SYSCTL_PROC(_net_inet_tcp_sack, OID_AUTO, revised, CTLFLAG_VNET | CTLFLAG_RW | CTLTYPE_INT,
+    &VNET_NAME(tcp_do_newsack), 0, sysctl_net_inet_tcp_sack_revised, "CU",
     "Use revised SACK loss recovery per RFC 6675");
 
 VNET_DEFINE(int, tcp_do_lrd) = 1;