aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2006-12-05 16:35:30 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2006-12-06 10:46:50 -0500
commit7c6e066ec29290bf062f5bff2984bad9be5809c7 (patch)
treea7b601ecc7b4ae15022145d34dea812f4de2c07b /net
parentc8475461829fd94f30208fbfa4eab7e5584c6495 (diff)
SUNRPC: Move the UDP socket bufsize parameters to a private data structure
Move the socket-specific buffer size parameters for UDP sockets to a private data structure maintained in net/sunrpc/xprtsock.c. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'net')
-rw-r--r--net/sunrpc/xprtsock.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
index 4797a4608c07..b804381d5bee 100644
--- a/net/sunrpc/xprtsock.c
+++ b/net/sunrpc/xprtsock.c
@@ -151,6 +151,12 @@ struct sock_xprt {
151 */ 151 */
152 struct work_struct connect_worker; 152 struct work_struct connect_worker;
153 unsigned short port; 153 unsigned short port;
154
155 /*
156 * UDP socket buffer size parameters
157 */
158 size_t rcvsize,
159 sndsize;
154}; 160};
155 161
156/* 162/*
@@ -996,13 +1002,13 @@ static void xs_udp_do_set_buffer_size(struct rpc_xprt *xprt)
996 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); 1002 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt);
997 struct sock *sk = transport->inet; 1003 struct sock *sk = transport->inet;
998 1004
999 if (xprt->rcvsize) { 1005 if (transport->rcvsize) {
1000 sk->sk_userlocks |= SOCK_RCVBUF_LOCK; 1006 sk->sk_userlocks |= SOCK_RCVBUF_LOCK;
1001 sk->sk_rcvbuf = xprt->rcvsize * xprt->max_reqs * 2; 1007 sk->sk_rcvbuf = transport->rcvsize * xprt->max_reqs * 2;
1002 } 1008 }
1003 if (xprt->sndsize) { 1009 if (transport->sndsize) {
1004 sk->sk_userlocks |= SOCK_SNDBUF_LOCK; 1010 sk->sk_userlocks |= SOCK_SNDBUF_LOCK;
1005 sk->sk_sndbuf = xprt->sndsize * xprt->max_reqs * 2; 1011 sk->sk_sndbuf = transport->sndsize * xprt->max_reqs * 2;
1006 sk->sk_write_space(sk); 1012 sk->sk_write_space(sk);
1007 } 1013 }
1008} 1014}
@@ -1017,12 +1023,14 @@ static void xs_udp_do_set_buffer_size(struct rpc_xprt *xprt)
1017 */ 1023 */
1018static void xs_udp_set_buffer_size(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize) 1024static void xs_udp_set_buffer_size(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize)
1019{ 1025{
1020 xprt->sndsize = 0; 1026 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt);
1027
1028 transport->sndsize = 0;
1021 if (sndsize) 1029 if (sndsize)
1022 xprt->sndsize = sndsize + 1024; 1030 transport->sndsize = sndsize + 1024;
1023 xprt->rcvsize = 0; 1031 transport->rcvsize = 0;
1024 if (rcvsize) 1032 if (rcvsize)
1025 xprt->rcvsize = rcvsize + 1024; 1033 transport->rcvsize = rcvsize + 1024;
1026 1034
1027 xs_udp_do_set_buffer_size(xprt); 1035 xs_udp_do_set_buffer_size(xprt);
1028} 1036}