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 --- |