summaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorYuchung Cheng <ycheng@google.com>2013-06-11 15:35:32 -0700
committerDavid S. Miller <davem@davemloft.net>2013-06-13 02:46:29 -0700
commit85f16525a2eb66e6092cbd8dcf42371df8334ed0 (patch)
treeadaf85853246f46fc00f9ed4235059650acf7517 /include/net
parent8e994402ad5e6ae3d391c0935f9f1dc2eeb92a5e (diff)
downloadlinux-85f16525a2eb66e6092cbd8dcf42371df8334ed0.tar.bz2
tcp: properly send new data in fast recovery in first RTT
Linux sends new unset data during disorder and recovery state if all (suspected) lost packets have been retransmitted ( RFC5681, section 3.2 step 1 & 2, RFC3517 section 4, NexSeg() Rule 2). One requirement is to keep the receive window about twice the estimated sender's congestion window (tcp_rcv_space_adjust()), assuming the fast retransmits repair the losses in the next round trip. But currently it's not the case on the first round trip in either normal or Fast Open connection, beucase the initial receive window is identical to (expected) sender's initial congestion window. The fix is to double it. Signed-off-by: Yuchung Cheng <ycheng@google.com> Acked-by: Neal Cardwell <ncardwell@google.com> Acked-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/tcp.h5
1 files changed, 2 insertions, 3 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h
index 0d637e9403a5..6fa80831dc40 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -61,9 +61,6 @@ extern void tcp_time_wait(struct sock *sk, int state, int timeo);
*/
#define MAX_TCP_WINDOW 32767U
-/* Offer an initial receive window of 10 mss. */
-#define TCP_DEFAULT_INIT_RCVWND 10
-
/* Minimal accepted MSS. It is (60+60+8) - (20+20). */
#define TCP_MIN_MSS 88U
@@ -1047,6 +1044,8 @@ static inline void tcp_sack_reset(struct tcp_options_received *rx_opt)
rx_opt->num_sacks = 0;
}
+extern u32 tcp_default_init_rwnd(u32 mss);
+
/* Determine a window scaling and initial window to offer. */
extern void tcp_select_initial_window(int __space, __u32 mss,
__u32 *rcv_wnd, __u32 *window_clamp,