summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@fys.uio.no>2002-07-26 00:00:14 -0700
committerLinus Torvalds <torvalds@penguin.transmeta.com>2002-07-26 00:00:14 -0700
commitff3cc6a09251f437f18029a7bd96f6bd55bccfb2 (patch)
tree48bf0e097f28e00f103858a7cc264522b0381726 /include/linux
parent0be53f272bd1e45378781314423bf238f0493f74 (diff)
[PATCH] increase socket buffer for RPC over UDP
Make RPC over UDP use a socket buffer size that is large enough to fit all the messages. Congestion control is in any case handled by the Van Jacobson algoritm, and we need to work around a bug in ip_build_xmit_slow() w.r.t. fragmentation when there is insufficient buffer memory to fit the entire message.
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/sunrpc/clnt.h1
-rw-r--r--include/linux/sunrpc/xprt.h4
2 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h
index d278df00ecb9..92fa9755592e 100644
--- a/include/linux/sunrpc/clnt.h
+++ b/include/linux/sunrpc/clnt.h
@@ -127,6 +127,7 @@ int rpc_call_sync(struct rpc_clnt *clnt, struct rpc_message *msg,
void rpc_restart_call(struct rpc_task *);
void rpc_clnt_sigmask(struct rpc_clnt *clnt, sigset_t *oldset);
void rpc_clnt_sigunmask(struct rpc_clnt *clnt, sigset_t *oldset);
+void rpc_setbufsize(struct rpc_clnt *, unsigned int, unsigned int);
static __inline__
int rpc_call(struct rpc_clnt *clnt, u32 proc, void *argp, void *resp, int flags)
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h
index e3c7a6b9c5ba..c9b93c6a7a27 100644
--- a/include/linux/sunrpc/xprt.h
+++ b/include/linux/sunrpc/xprt.h
@@ -122,6 +122,9 @@ struct rpc_xprt {
unsigned long cong; /* current congestion */
unsigned long cwnd; /* congestion window */
+ unsigned int rcvsize, /* socket receive buffer size */
+ sndsize; /* socket send buffer size */
+
struct rpc_wait_queue sending; /* requests waiting to send */
struct rpc_wait_queue resend; /* requests waiting to resend */
struct rpc_wait_queue pending; /* requests in flight */
@@ -177,6 +180,7 @@ int xprt_adjust_timeout(struct rpc_timeout *);
void xprt_release(struct rpc_task *);
void xprt_reconnect(struct rpc_task *);
int xprt_clear_backlog(struct rpc_xprt *);
+void xprt_sock_setbufsize(struct rpc_xprt *);
#define XPRT_CONNECT 0