1bb262
From 14336b7b4c70b3def333ae78e654e8919107176b Mon Sep 17 00:00:00 2001
1bb262
From: =?UTF-8?q?Nikola=20Forr=C3=B3?= <nforro@redhat.com>
1bb262
Date: Tue, 28 Jun 2016 13:50:57 +0200
1bb262
Subject: [PATCH 13/17] tcp.7: document TCP_USER_TIMEOUT
1bb262
1bb262
---
1bb262
 man-pages/man7/tcp.7 | 48 +++++++++++++++++++++++++++++++++++++++++++++---
1bb262
 1 file changed, 45 insertions(+), 3 deletions(-)
1bb262
1bb262
diff --git a/man-pages/man7/tcp.7 b/man-pages/man7/tcp.7
1bb262
index 93b4148..98ccf27 100644
1bb262
--- a/man-pages/man7/tcp.7
1bb262
+++ b/man-pages/man7/tcp.7
1bb262
@@ -46,9 +46,6 @@
1bb262
 .\"	TCP_THIN_DUPACK (2..6.34)
1bb262
 .\"	    commit 7e38017557bc0b87434d184f8804cadb102bb903
1bb262
 .\"	    Author: Andreas Petlund <apetlund@simula.no>
1bb262
-.\"	TCP_USER_TIMEOUT (new in 2.6.37)
1bb262
-.\"	    Author: Jerry Chu <hkchu@google.com>
1bb262
-.\"	    commit dca43c75e7e545694a9dd6288553f55c53e2a3a3
1bb262
 .\"	TCP_REPAIR (3.5)
1bb262
 .\"	    commit ee9952831cfd0bbe834f4a26489d7dce74582e37
1bb262
 .\"	    Author: Pavel Emelyanov <xemul@parallels.com>
1bb262
@@ -1038,6 +1035,51 @@ aborting the attempt to connect.
1bb262
 It cannot exceed 255.
1bb262
 This option should not be used in code intended to be portable.
1bb262
 .TP
1bb262
+.BR TCP_USER_TIMEOUT " (since Linux 2.6.37)"
1bb262
+.\"	    commit dca43c75e7e545694a9dd6288553f55c53e2a3a3
1bb262
+.\"	    Author: Jerry Chu <hkchu@google.com>
1bb262
+.\" The following text taken nearly verbatim from Jerry Chu's (excellent)
1bb262
+.\" commit message.
1bb262
+.\"
1bb262
+This option takes an
1bb262
+.IR "unsigned int"
1bb262
+as an argument.
1bb262
+When the value is greater than 0,
1bb262
+it specifies the maximum amount of time in milliseconds that transmitted
1bb262
+data may remain unacknowledged before TCP will forcibly close the
1bb262
+corresponding connection and return
1bb262
+.B ETIMEDOUT
1bb262
+to the application.
1bb262
+If the option value is specified as 0,
1bb262
+TCP will to use the system default.
1bb262
+
1bb262
+Increasing user timeouts allows a TCP connection to survive extended
1bb262
+periods without end-to-end connectivity.
1bb262
+Decreasing user timeouts
1bb262
+allows applications to "fail fast", if so desired.
1bb262
+Otherwise, failure may take up to 20 minutes with
1bb262
+the current system defaults in a normal WAN environment.
1bb262
+
1bb262
+This option can be set during any state of a TCP connection,
1bb262
+but is effective only during the synchronized states of a connection
1bb262
+(ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, and LAST-ACK).
1bb262
+Moreover, when used with the TCP keepalive
1bb262
+.RB ( SO_KEEPALIVE )
1bb262
+option,
1bb262
+.B TCP_USER_TIMEOUT
1bb262
+will override keepalive to determine when to close a
1bb262
+connection due to keepalive failure.
1bb262
+
1bb262
+The option has no effect on when TCP retransmits a packet,
1bb262
+nor when a keepalive probe is sent.
1bb262
+
1bb262
+This option, like many others, will be inherited by the socket returned by
1bb262
+.BR accept (2),
1bb262
+if it was set on the listening socket.
1bb262
+
1bb262
+Further details on the user timeout feature can be found in
1bb262
+RFC\ 793 and RFC\ 5482 ("TCP User Timeout Option").
1bb262
+.TP
1bb262
 .BR TCP_WINDOW_CLAMP " (since Linux 2.4)"
1bb262
 .\" Precisely: since 2.3.41
1bb262
 Bound the size of the advertised window to this value.
1bb262
-- 
1bb262
2.7.4
1bb262