tcp.c (9ae9e2535d7dd1c21d6a7db1a7f2fc507a5e4080) tcp.c (ceaa1fef65a7c2e017b260b879b310dd24888083)
1/*
2 * INET An implementation of the TCP/IP protocol suite for the LINUX
3 * operating system. INET is implemented using the BSD Socket
4 * interface as the means of communication with the user level.
5 *
6 * Implementation of the Transmission Control Protocol(TCP).
7 *
8 * Authors: Ross Biro

--- 386 unchanged lines hidden (view full) ---

395 tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;
396 tp->snd_cwnd_clamp = ~0;
397 tp->mss_cache = TCP_MSS_DEFAULT;
398
399 tp->reordering = sysctl_tcp_reordering;
400 tcp_enable_early_retrans(tp);
401 icsk->icsk_ca_ops = &tcp_init_congestion_ops;
402
1/*
2 * INET An implementation of the TCP/IP protocol suite for the LINUX
3 * operating system. INET is implemented using the BSD Socket
4 * interface as the means of communication with the user level.
5 *
6 * Implementation of the Transmission Control Protocol(TCP).
7 *
8 * Authors: Ross Biro

--- 386 unchanged lines hidden (view full) ---

395 tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;
396 tp->snd_cwnd_clamp = ~0;
397 tp->mss_cache = TCP_MSS_DEFAULT;
398
399 tp->reordering = sysctl_tcp_reordering;
400 tcp_enable_early_retrans(tp);
401 icsk->icsk_ca_ops = &tcp_init_congestion_ops;
402
403 tp->tsoffset = 0;
404
403 sk->sk_state = TCP_CLOSE;
404
405 sk->sk_write_space = sk_stream_write_space;
406 sock_set_flag(sk, SOCK_USE_WRITE_QUEUE);
407
408 icsk->icsk_sync_mss = tcp_sync_mss;
409
410 /* TCP Cookie Transactions */

--- 480 unchanged lines hidden (view full) ---

891
892 if (can_coalesce) {
893 skb_frag_size_add(&skb_shinfo(skb)->frags[i - 1], copy);
894 } else {
895 get_page(page);
896 skb_fill_page_desc(skb, i, page, offset, copy);
897 }
898
405 sk->sk_state = TCP_CLOSE;
406
407 sk->sk_write_space = sk_stream_write_space;
408 sock_set_flag(sk, SOCK_USE_WRITE_QUEUE);
409
410 icsk->icsk_sync_mss = tcp_sync_mss;
411
412 /* TCP Cookie Transactions */

--- 480 unchanged lines hidden (view full) ---

893
894 if (can_coalesce) {
895 skb_frag_size_add(&skb_shinfo(skb)->frags[i - 1], copy);
896 } else {
897 get_page(page);
898 skb_fill_page_desc(skb, i, page, offset, copy);
899 }
900
901 skb_shinfo(skb)->gso_type |= SKB_GSO_SHARED_FRAG;
902
899 skb->len += copy;
900 skb->data_len += copy;
901 skb->truesize += copy;
902 sk->sk_wmem_queued += copy;
903 sk_mem_charge(sk, copy);
904 skb->ip_summed = CHECKSUM_PARTIAL;
905 tp->write_seq += copy;
906 TCP_SKB_CB(skb)->end_seq += copy;

--- 1375 unchanged lines hidden (view full) ---

2282 if ((tp->write_seq += tp->max_window + 2) == 0)
2283 tp->write_seq = 1;
2284 icsk->icsk_backoff = 0;
2285 tp->snd_cwnd = 2;
2286 icsk->icsk_probes_out = 0;
2287 tp->packets_out = 0;
2288 tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;
2289 tp->snd_cwnd_cnt = 0;
903 skb->len += copy;
904 skb->data_len += copy;
905 skb->truesize += copy;
906 sk->sk_wmem_queued += copy;
907 sk_mem_charge(sk, copy);
908 skb->ip_summed = CHECKSUM_PARTIAL;
909 tp->write_seq += copy;
910 TCP_SKB_CB(skb)->end_seq += copy;

--- 1375 unchanged lines hidden (view full) ---

2286 if ((tp->write_seq += tp->max_window + 2) == 0)
2287 tp->write_seq = 1;
2288 icsk->icsk_backoff = 0;
2289 tp->snd_cwnd = 2;
2290 icsk->icsk_probes_out = 0;
2291 tp->packets_out = 0;
2292 tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;
2293 tp->snd_cwnd_cnt = 0;
2290 tp->bytes_acked = 0;
2291 tp->window_clamp = 0;
2292 tcp_set_ca_state(sk, TCP_CA_Open);
2293 tcp_clear_retrans(tp);
2294 inet_csk_delack_init(sk);
2295 tcp_init_send_head(sk);
2296 memset(&tp->rx_opt, 0, sizeof(tp->rx_opt));
2297 __sk_dst_reset(sk);
2298

--- 728 unchanged lines hidden (view full) ---

3027 /* Packet is from an untrusted source, reset gso_segs. */
3028 int type = skb_shinfo(skb)->gso_type;
3029
3030 if (unlikely(type &
3031 ~(SKB_GSO_TCPV4 |
3032 SKB_GSO_DODGY |
3033 SKB_GSO_TCP_ECN |
3034 SKB_GSO_TCPV6 |
2294 tp->window_clamp = 0;
2295 tcp_set_ca_state(sk, TCP_CA_Open);
2296 tcp_clear_retrans(tp);
2297 inet_csk_delack_init(sk);
2298 tcp_init_send_head(sk);
2299 memset(&tp->rx_opt, 0, sizeof(tp->rx_opt));
2300 __sk_dst_reset(sk);
2301

--- 728 unchanged lines hidden (view full) ---

3030 /* Packet is from an untrusted source, reset gso_segs. */
3031 int type = skb_shinfo(skb)->gso_type;
3032
3033 if (unlikely(type &
3034 ~(SKB_GSO_TCPV4 |
3035 SKB_GSO_DODGY |
3036 SKB_GSO_TCP_ECN |
3037 SKB_GSO_TCPV6 |
3038 SKB_GSO_SHARED_FRAG |
3035 0) ||
3036 !(type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))))
3037 goto out;
3038
3039 skb_shinfo(skb)->gso_segs = DIV_ROUND_UP(skb->len, mss);
3040
3041 segs = NULL;
3042 goto out;

--- 195 unchanged lines hidden (view full) ---

3238 pool = alloc_percpu(struct tcp_md5sig_pool);
3239 if (!pool)
3240 return NULL;
3241
3242 for_each_possible_cpu(cpu) {
3243 struct crypto_hash *hash;
3244
3245 hash = crypto_alloc_hash("md5", 0, CRYPTO_ALG_ASYNC);
3039 0) ||
3040 !(type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))))
3041 goto out;
3042
3043 skb_shinfo(skb)->gso_segs = DIV_ROUND_UP(skb->len, mss);
3044
3045 segs = NULL;
3046 goto out;

--- 195 unchanged lines hidden (view full) ---

3242 pool = alloc_percpu(struct tcp_md5sig_pool);
3243 if (!pool)
3244 return NULL;
3245
3246 for_each_possible_cpu(cpu) {
3247 struct crypto_hash *hash;
3248
3249 hash = crypto_alloc_hash("md5", 0, CRYPTO_ALG_ASYNC);
3246 if (!hash || IS_ERR(hash))
3250 if (IS_ERR_OR_NULL(hash))
3247 goto out_free;
3248
3249 per_cpu_ptr(pool, cpu)->md5_desc.tfm = hash;
3250 }
3251 return pool;
3252out_free:
3253 __tcp_free_md5sig_pool(pool);
3254 return NULL;

--- 412 unchanged lines hidden ---
3251 goto out_free;
3252
3253 per_cpu_ptr(pool, cpu)->md5_desc.tfm = hash;
3254 }
3255 return pool;
3256out_free:
3257 __tcp_free_md5sig_pool(pool);
3258 return NULL;

--- 412 unchanged lines hidden ---