diff options
| -rw-r--r-- | include/linux/tcp.h | 6 | ||||
| -rw-r--r-- | include/net/tcp.h | 3 | ||||
| -rw-r--r-- | net/ipv4/tcp_input.c | 4 | ||||
| -rw-r--r-- | net/ipv4/tcp_ipv4.c | 6 | ||||
| -rw-r--r-- | net/ipv4/tcp_minisocks.c | 2 | ||||
| -rw-r--r-- | net/ipv6/tcp_ipv6.c | 2 |
6 files changed, 13 insertions, 10 deletions
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index eeecb8547a2a..32d7d77b4a01 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h | |||
| @@ -81,6 +81,12 @@ enum { | |||
| 81 | TCP_DATA_OFFSET = __cpu_to_be32(0xF0000000) | 81 | TCP_DATA_OFFSET = __cpu_to_be32(0xF0000000) |
| 82 | }; | 82 | }; |
| 83 | 83 | ||
| 84 | /* | ||
| 85 | * TCP general constants | ||
| 86 | */ | ||
| 87 | #define TCP_MSS_DEFAULT 536U /* IPv4 (RFC1122, RFC2581) */ | ||
| 88 | #define TCP_MSS_DESIRED 1220U /* IPv6 (tunneled), EDNS0 (RFC3226) */ | ||
| 89 | |||
| 84 | /* TCP socket options */ | 90 | /* TCP socket options */ |
| 85 | #define TCP_NODELAY 1 /* Turn off Nagle's algorithm. */ | 91 | #define TCP_NODELAY 1 /* Turn off Nagle's algorithm. */ |
| 86 | #define TCP_MAXSEG 2 /* Limit MSS */ | 92 | #define TCP_MAXSEG 2 /* Limit MSS */ |
diff --git a/include/net/tcp.h b/include/net/tcp.h index bf20f88fd033..325bfcf5c934 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
| @@ -62,9 +62,6 @@ extern void tcp_time_wait(struct sock *sk, int state, int timeo); | |||
| 62 | /* Minimal accepted MSS. It is (60+60+8) - (20+20). */ | 62 | /* Minimal accepted MSS. It is (60+60+8) - (20+20). */ |
| 63 | #define TCP_MIN_MSS 88U | 63 | #define TCP_MIN_MSS 88U |
| 64 | 64 | ||
| 65 | /* Minimal RCV_MSS. */ | ||
| 66 | #define TCP_MIN_RCVMSS 536U | ||
| 67 | |||
| 68 | /* The least MTU to use for probing */ | 65 | /* The least MTU to use for probing */ |
| 69 | #define TCP_BASE_MSS 512 | 66 | #define TCP_BASE_MSS 512 |
| 70 | 67 | ||
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index be0c5bf7bfca..cc306ac6eb51 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
| @@ -140,7 +140,7 @@ static void tcp_measure_rcv_mss(struct sock *sk, const struct sk_buff *skb) | |||
| 140 | * "len" is invariant segment length, including TCP header. | 140 | * "len" is invariant segment length, including TCP header. |
| 141 | */ | 141 | */ |
| 142 | len += skb->data - skb_transport_header(skb); | 142 | len += skb->data - skb_transport_header(skb); |
| 143 | if (len >= TCP_MIN_RCVMSS + sizeof(struct tcphdr) || | 143 | if (len >= TCP_MSS_DEFAULT + sizeof(struct tcphdr) || |
| 144 | /* If PSH is not set, packet should be | 144 | /* If PSH is not set, packet should be |
| 145 | * full sized, provided peer TCP is not badly broken. | 145 | * full sized, provided peer TCP is not badly broken. |
| 146 | * This observation (if it is correct 8)) allows | 146 | * This observation (if it is correct 8)) allows |
| @@ -411,7 +411,7 @@ void tcp_initialize_rcv_mss(struct sock *sk) | |||
| 411 | unsigned int hint = min_t(unsigned int, tp->advmss, tp->mss_cache); | 411 | unsigned int hint = min_t(unsigned int, tp->advmss, tp->mss_cache); |
| 412 | 412 | ||
| 413 | hint = min(hint, tp->rcv_wnd / 2); | 413 | hint = min(hint, tp->rcv_wnd / 2); |
| 414 | hint = min(hint, TCP_MIN_RCVMSS); | 414 | hint = min(hint, TCP_MSS_DEFAULT); |
| 415 | hint = max(hint, TCP_MIN_MSS); | 415 | hint = max(hint, TCP_MIN_MSS); |
| 416 | 416 | ||
| 417 | inet_csk(sk)->icsk_ack.rcv_mss = hint; | 417 | inet_csk(sk)->icsk_ack.rcv_mss = hint; |
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 657ae334f125..cf7f2086e6e0 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
| @@ -217,7 +217,7 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) | |||
| 217 | if (inet->opt) | 217 | if (inet->opt) |
| 218 | inet_csk(sk)->icsk_ext_hdr_len = inet->opt->optlen; | 218 | inet_csk(sk)->icsk_ext_hdr_len = inet->opt->optlen; |
| 219 | 219 | ||
| 220 | tp->rx_opt.mss_clamp = 536; | 220 | tp->rx_opt.mss_clamp = TCP_MSS_DEFAULT; |
| 221 | 221 | ||
| 222 | /* Socket identity is still unknown (sport may be zero). | 222 | /* Socket identity is still unknown (sport may be zero). |
| 223 | * However we set state to SYN-SENT and not releasing socket | 223 | * However we set state to SYN-SENT and not releasing socket |
| @@ -1268,7 +1268,7 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) | |||
| 1268 | goto drop_and_free; | 1268 | goto drop_and_free; |
| 1269 | 1269 | ||
| 1270 | tcp_clear_options(&tmp_opt); | 1270 | tcp_clear_options(&tmp_opt); |
| 1271 | tmp_opt.mss_clamp = 536; | 1271 | tmp_opt.mss_clamp = TCP_MSS_DEFAULT; |
| 1272 | tmp_opt.user_mss = tcp_sk(sk)->rx_opt.user_mss; | 1272 | tmp_opt.user_mss = tcp_sk(sk)->rx_opt.user_mss; |
| 1273 | 1273 | ||
| 1274 | tcp_parse_options(skb, &tmp_opt, 0, dst); | 1274 | tcp_parse_options(skb, &tmp_opt, 0, dst); |
| @@ -1815,7 +1815,7 @@ static int tcp_v4_init_sock(struct sock *sk) | |||
| 1815 | */ | 1815 | */ |
| 1816 | tp->snd_ssthresh = TCP_INFINITE_SSTHRESH; | 1816 | tp->snd_ssthresh = TCP_INFINITE_SSTHRESH; |
| 1817 | tp->snd_cwnd_clamp = ~0; | 1817 | tp->snd_cwnd_clamp = ~0; |
| 1818 | tp->mss_cache = 536; | 1818 | tp->mss_cache = TCP_MSS_DEFAULT; |
| 1819 | 1819 | ||
| 1820 | tp->reordering = sysctl_tcp_reordering; | 1820 | tp->reordering = sysctl_tcp_reordering; |
| 1821 | icsk->icsk_ca_ops = &tcp_init_congestion_ops; | 1821 | icsk->icsk_ca_ops = &tcp_init_congestion_ops; |
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c index a9d34e224cb6..4be22280e6b3 100644 --- a/net/ipv4/tcp_minisocks.c +++ b/net/ipv4/tcp_minisocks.c | |||
| @@ -476,7 +476,7 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req, | |||
| 476 | if (newtp->af_specific->md5_lookup(sk, newsk)) | 476 | if (newtp->af_specific->md5_lookup(sk, newsk)) |
| 477 | newtp->tcp_header_len += TCPOLEN_MD5SIG_ALIGNED; | 477 | newtp->tcp_header_len += TCPOLEN_MD5SIG_ALIGNED; |
| 478 | #endif | 478 | #endif |
| 479 | if (skb->len >= TCP_MIN_RCVMSS+newtp->tcp_header_len) | 479 | if (skb->len >= TCP_MSS_DEFAULT + newtp->tcp_header_len) |
| 480 | newicsk->icsk_ack.last_seg_size = skb->len - newtp->tcp_header_len; | 480 | newicsk->icsk_ack.last_seg_size = skb->len - newtp->tcp_header_len; |
| 481 | newtp->rx_opt.mss_clamp = req->mss; | 481 | newtp->rx_opt.mss_clamp = req->mss; |
| 482 | TCP_ECN_openreq_child(newtp, req); | 482 | TCP_ECN_openreq_child(newtp, req); |
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 696a22f034e8..de709091b26d 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c | |||
| @@ -1851,7 +1851,7 @@ static int tcp_v6_init_sock(struct sock *sk) | |||
| 1851 | */ | 1851 | */ |
| 1852 | tp->snd_ssthresh = TCP_INFINITE_SSTHRESH; | 1852 | tp->snd_ssthresh = TCP_INFINITE_SSTHRESH; |
| 1853 | tp->snd_cwnd_clamp = ~0; | 1853 | tp->snd_cwnd_clamp = ~0; |
| 1854 | tp->mss_cache = 536; | 1854 | tp->mss_cache = TCP_MSS_DEFAULT; |
| 1855 | 1855 | ||
| 1856 | tp->reordering = sysctl_tcp_reordering; | 1856 | tp->reordering = sysctl_tcp_reordering; |
| 1857 | 1857 | ||
