提交 49023155 编写于 作者: T Tom Tucker 提交者: J. Bruce Fields

svc: Add a max payload value to the transport

The svc_max_payload function currently looks at the socket type
to determine the max payload. Add a max payload value to svc_xprt_class
so it can be returned directly.
Signed-off-by: NTom Tucker <tom@opengridcomputing.com>
Acked-by: NNeil Brown <neilb@suse.de>
Reviewed-by: NChuck Lever <chuck.lever@oracle.com>
Reviewed-by: NGreg Banks <gnb@sgi.com>
Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
上级 9f29868b
...@@ -17,6 +17,7 @@ struct svc_xprt_class { ...@@ -17,6 +17,7 @@ struct svc_xprt_class {
struct module *xcl_owner; struct module *xcl_owner;
struct svc_xprt_ops *xcl_ops; struct svc_xprt_ops *xcl_ops;
struct list_head xcl_list; struct list_head xcl_list;
u32 xcl_max_payload;
}; };
struct svc_xprt { struct svc_xprt {
......
...@@ -1055,10 +1055,8 @@ svc_process(struct svc_rqst *rqstp) ...@@ -1055,10 +1055,8 @@ svc_process(struct svc_rqst *rqstp)
*/ */
u32 svc_max_payload(const struct svc_rqst *rqstp) u32 svc_max_payload(const struct svc_rqst *rqstp)
{ {
int max = RPCSVC_MAXPAYLOAD_TCP; u32 max = rqstp->rq_xprt->xpt_class->xcl_max_payload;
if (rqstp->rq_sock->sk_sock->type == SOCK_DGRAM)
max = RPCSVC_MAXPAYLOAD_UDP;
if (rqstp->rq_server->sv_max_payload < max) if (rqstp->rq_server->sv_max_payload < max)
max = rqstp->rq_server->sv_max_payload; max = rqstp->rq_server->sv_max_payload;
return max; return max;
......
...@@ -906,6 +906,7 @@ static struct svc_xprt_ops svc_udp_ops = { ...@@ -906,6 +906,7 @@ static struct svc_xprt_ops svc_udp_ops = {
static struct svc_xprt_class svc_udp_class = { static struct svc_xprt_class svc_udp_class = {
.xcl_name = "udp", .xcl_name = "udp",
.xcl_ops = &svc_udp_ops, .xcl_ops = &svc_udp_ops,
.xcl_max_payload = RPCSVC_MAXPAYLOAD_UDP,
}; };
static void static void
...@@ -1359,6 +1360,7 @@ static struct svc_xprt_ops svc_tcp_ops = { ...@@ -1359,6 +1360,7 @@ static struct svc_xprt_ops svc_tcp_ops = {
static struct svc_xprt_class svc_tcp_class = { static struct svc_xprt_class svc_tcp_class = {
.xcl_name = "tcp", .xcl_name = "tcp",
.xcl_ops = &svc_tcp_ops, .xcl_ops = &svc_tcp_ops,
.xcl_max_payload = RPCSVC_MAXPAYLOAD_TCP,
}; };
void svc_init_xprt_sock(void) void svc_init_xprt_sock(void)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册