diff options
-rw-r--r-- | include/net/tcp.h | 5 | ||||
-rw-r--r-- | net/ipv4/tcp.c | 6 | ||||
-rw-r--r-- | net/ipv4/tcp_timer.c | 3 |
3 files changed, 9 insertions, 5 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h index 88af84306471..cbb2a4889fc9 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -1007,6 +1007,11 @@ static inline int keepalive_time_when(const struct tcp_sock *tp) | |||
1007 | return tp->keepalive_time ? : sysctl_tcp_keepalive_time; | 1007 | return tp->keepalive_time ? : sysctl_tcp_keepalive_time; |
1008 | } | 1008 | } |
1009 | 1009 | ||
1010 | static inline int keepalive_probes(const struct tcp_sock *tp) | ||
1011 | { | ||
1012 | return tp->keepalive_probes ? : sysctl_tcp_keepalive_probes; | ||
1013 | } | ||
1014 | |||
1010 | static inline int tcp_fin_time(const struct sock *sk) | 1015 | static inline int tcp_fin_time(const struct sock *sk) |
1011 | { | 1016 | { |
1012 | int fin_timeout = tcp_sk(sk)->linger2 ? : sysctl_tcp_fin_timeout; | 1017 | int fin_timeout = tcp_sk(sk)->linger2 ? : sysctl_tcp_fin_timeout; |
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 91145244ea63..59f69a6c5863 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c | |||
@@ -2336,13 +2336,13 @@ static int do_tcp_getsockopt(struct sock *sk, int level, | |||
2336 | val = !!(tp->nonagle&TCP_NAGLE_CORK); | 2336 | val = !!(tp->nonagle&TCP_NAGLE_CORK); |
2337 | break; | 2337 | break; |
2338 | case TCP_KEEPIDLE: | 2338 | case TCP_KEEPIDLE: |
2339 | val = (tp->keepalive_time ? : sysctl_tcp_keepalive_time) / HZ; | 2339 | val = keepalive_time_when(tp) / HZ; |
2340 | break; | 2340 | break; |
2341 | case TCP_KEEPINTVL: | 2341 | case TCP_KEEPINTVL: |
2342 | val = (tp->keepalive_intvl ? : sysctl_tcp_keepalive_intvl) / HZ; | 2342 | val = keepalive_intvl_when(tp) / HZ; |
2343 | break; | 2343 | break; |
2344 | case TCP_KEEPCNT: | 2344 | case TCP_KEEPCNT: |
2345 | val = tp->keepalive_probes ? : sysctl_tcp_keepalive_probes; | 2345 | val = keepalive_probes(tp); |
2346 | break; | 2346 | break; |
2347 | case TCP_SYNCNT: | 2347 | case TCP_SYNCNT: |
2348 | val = icsk->icsk_syn_retries ? : sysctl_tcp_syn_retries; | 2348 | val = icsk->icsk_syn_retries ? : sysctl_tcp_syn_retries; |
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c index b144a26359bc..c520fb6e06d9 100644 --- a/net/ipv4/tcp_timer.c +++ b/net/ipv4/tcp_timer.c | |||
@@ -499,8 +499,7 @@ static void tcp_keepalive_timer (unsigned long data) | |||
499 | elapsed = tcp_time_stamp - tp->rcv_tstamp; | 499 | elapsed = tcp_time_stamp - tp->rcv_tstamp; |
500 | 500 | ||
501 | if (elapsed >= keepalive_time_when(tp)) { | 501 | if (elapsed >= keepalive_time_when(tp)) { |
502 | if ((!tp->keepalive_probes && icsk->icsk_probes_out >= sysctl_tcp_keepalive_probes) || | 502 | if (icsk->icsk_probes_out >= keepalive_probes(tp)) { |
503 | (tp->keepalive_probes && icsk->icsk_probes_out >= tp->keepalive_probes)) { | ||
504 | tcp_send_active_reset(sk, GFP_ATOMIC); | 503 | tcp_send_active_reset(sk, GFP_ATOMIC); |
505 | tcp_write_err(sk); | 504 | tcp_write_err(sk); |
506 | goto out; | 505 | goto out; |