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: Tom Tucker <tom@opengridcomputing.com> Acked-by: Neil Brown <neilb@suse.de> Reviewed-by: Chuck Lever <chuck.lever@oracle.com> Reviewed-by: Greg Banks <gnb@sgi.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:
committed by
J. Bruce Fields
parent
9f29868b49
commit
490231558e
@@ -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 @@ err_bad:
|
|||||||
*/
|
*/
|
||||||
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 = {
|
|||||||
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 = {
|
|||||||
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)
|
||||||
|
Reference in New Issue
Block a user