diff options
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r-- | net/ipv4/tcp_input.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index b54ee09cbcf7..9ceaa1fdc3ab 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -320,7 +320,7 @@ static void tcp_sndbuf_expand(struct sock *sk) | |||
320 | sndmem *= nr_segs * per_mss; | 320 | sndmem *= nr_segs * per_mss; |
321 | 321 | ||
322 | if (sk->sk_sndbuf < sndmem) | 322 | if (sk->sk_sndbuf < sndmem) |
323 | sk->sk_sndbuf = min(sndmem, sysctl_tcp_wmem[2]); | 323 | sk->sk_sndbuf = min(sndmem, sock_net(sk)->ipv4.sysctl_tcp_wmem[2]); |
324 | } | 324 | } |
325 | 325 | ||
326 | /* 2. Tuning advertised window (window_clamp, rcv_ssthresh) | 326 | /* 2. Tuning advertised window (window_clamp, rcv_ssthresh) |
@@ -354,7 +354,7 @@ static int __tcp_grow_window(const struct sock *sk, const struct sk_buff *skb) | |||
354 | struct tcp_sock *tp = tcp_sk(sk); | 354 | struct tcp_sock *tp = tcp_sk(sk); |
355 | /* Optimize this! */ | 355 | /* Optimize this! */ |
356 | int truesize = tcp_win_from_space(sk, skb->truesize) >> 1; | 356 | int truesize = tcp_win_from_space(sk, skb->truesize) >> 1; |
357 | int window = tcp_win_from_space(sk, sysctl_tcp_rmem[2]) >> 1; | 357 | int window = tcp_win_from_space(sk, sock_net(sk)->ipv4.sysctl_tcp_rmem[2]) >> 1; |
358 | 358 | ||
359 | while (tp->rcv_ssthresh <= window) { | 359 | while (tp->rcv_ssthresh <= window) { |
360 | if (truesize <= skb->len) | 360 | if (truesize <= skb->len) |
@@ -409,7 +409,7 @@ static void tcp_fixup_rcvbuf(struct sock *sk) | |||
409 | rcvmem <<= 2; | 409 | rcvmem <<= 2; |
410 | 410 | ||
411 | if (sk->sk_rcvbuf < rcvmem) | 411 | if (sk->sk_rcvbuf < rcvmem) |
412 | sk->sk_rcvbuf = min(rcvmem, sysctl_tcp_rmem[2]); | 412 | sk->sk_rcvbuf = min(rcvmem, sock_net(sk)->ipv4.sysctl_tcp_rmem[2]); |
413 | } | 413 | } |
414 | 414 | ||
415 | /* 4. Try to fixup all. It is made immediately after connection enters | 415 | /* 4. Try to fixup all. It is made immediately after connection enters |
@@ -457,15 +457,16 @@ static void tcp_clamp_window(struct sock *sk) | |||
457 | { | 457 | { |
458 | struct tcp_sock *tp = tcp_sk(sk); | 458 | struct tcp_sock *tp = tcp_sk(sk); |
459 | struct inet_connection_sock *icsk = inet_csk(sk); | 459 | struct inet_connection_sock *icsk = inet_csk(sk); |
460 | struct net *net = sock_net(sk); | ||
460 | 461 | ||
461 | icsk->icsk_ack.quick = 0; | 462 | icsk->icsk_ack.quick = 0; |
462 | 463 | ||
463 | if (sk->sk_rcvbuf < sysctl_tcp_rmem[2] && | 464 | if (sk->sk_rcvbuf < net->ipv4.sysctl_tcp_rmem[2] && |
464 | !(sk->sk_userlocks & SOCK_RCVBUF_LOCK) && | 465 | !(sk->sk_userlocks & SOCK_RCVBUF_LOCK) && |
465 | !tcp_under_memory_pressure(sk) && | 466 | !tcp_under_memory_pressure(sk) && |
466 | sk_memory_allocated(sk) < sk_prot_mem_limits(sk, 0)) { | 467 | sk_memory_allocated(sk) < sk_prot_mem_limits(sk, 0)) { |
467 | sk->sk_rcvbuf = min(atomic_read(&sk->sk_rmem_alloc), | 468 | sk->sk_rcvbuf = min(atomic_read(&sk->sk_rmem_alloc), |
468 | sysctl_tcp_rmem[2]); | 469 | net->ipv4.sysctl_tcp_rmem[2]); |
469 | } | 470 | } |
470 | if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf) | 471 | if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf) |
471 | tp->rcv_ssthresh = min(tp->window_clamp, 2U * tp->advmss); | 472 | tp->rcv_ssthresh = min(tp->window_clamp, 2U * tp->advmss); |
@@ -623,7 +624,8 @@ void tcp_rcv_space_adjust(struct sock *sk) | |||
623 | while (tcp_win_from_space(sk, rcvmem) < tp->advmss) | 624 | while (tcp_win_from_space(sk, rcvmem) < tp->advmss) |
624 | rcvmem += 128; | 625 | rcvmem += 128; |
625 | 626 | ||
626 | rcvbuf = min(rcvwin / tp->advmss * rcvmem, sysctl_tcp_rmem[2]); | 627 | rcvbuf = min(rcvwin / tp->advmss * rcvmem, |
628 | sock_net(sk)->ipv4.sysctl_tcp_rmem[2]); | ||
627 | if (rcvbuf > sk->sk_rcvbuf) { | 629 | if (rcvbuf > sk->sk_rcvbuf) { |
628 | sk->sk_rcvbuf = rcvbuf; | 630 | sk->sk_rcvbuf = rcvbuf; |
629 | 631 | ||