summaryrefslogtreecommitdiffstats
path: root/net/sunrpc/xprtsock.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sunrpc/xprtsock.c')
-rw-r--r--net/sunrpc/xprtsock.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
index ee03d35677d9..208a7634b916 100644
--- a/net/sunrpc/xprtsock.c
+++ b/net/sunrpc/xprtsock.c
@@ -2112,6 +2112,19 @@ static int xs_tcp_finish_connecting(struct rpc_xprt *xprt, struct socket *sock)
2112 2112
2113 if (!transport->inet) { 2113 if (!transport->inet) {
2114 struct sock *sk = sock->sk; 2114 struct sock *sk = sock->sk;
2115 unsigned int keepidle = xprt->timeout->to_initval / HZ;
2116 unsigned int keepcnt = xprt->timeout->to_retries + 1;
2117 unsigned int opt_on = 1;
2118
2119 /* TCP Keepalive options */
2120 kernel_setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE,
2121 (char *)&opt_on, sizeof(opt_on));
2122 kernel_setsockopt(sock, SOL_TCP, TCP_KEEPIDLE,
2123 (char *)&keepidle, sizeof(keepidle));
2124 kernel_setsockopt(sock, SOL_TCP, TCP_KEEPINTVL,
2125 (char *)&keepidle, sizeof(keepidle));
2126 kernel_setsockopt(sock, SOL_TCP, TCP_KEEPCNT,
2127 (char *)&keepcnt, sizeof(keepcnt));
2115 2128
2116 write_lock_bh(&sk->sk_callback_lock); 2129 write_lock_bh(&sk->sk_callback_lock);
2117 2130