OSDN Git Service

svcrdma: Add a separate "max data segs macro for svcrdma
authorChuck Lever <chuck.lever@oracle.com>
Thu, 4 Jun 2015 15:21:32 +0000 (11:21 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Thu, 4 Jun 2015 20:56:01 +0000 (16:56 -0400)
The server and client maximum are architecturally independent.
Allow changing one without affecting the other.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
include/linux/sunrpc/svc_rdma.h
net/sunrpc/xprtrdma/svc_rdma_transport.c
net/sunrpc/xprtrdma/xprt_rdma.h

index d26384b..cb94ee4 100644 (file)
@@ -172,6 +172,13 @@ struct svcxprt_rdma {
 #define RDMAXPRT_SQ_PENDING    2
 #define RDMAXPRT_CONN_PENDING  3
 
+#define RPCRDMA_MAX_SVC_SEGS   (64)    /* server max scatter/gather */
+#if RPCSVC_MAXPAYLOAD < (RPCRDMA_MAX_SVC_SEGS << PAGE_SHIFT)
+#define RPCRDMA_MAXPAYLOAD     RPCSVC_MAXPAYLOAD
+#else
+#define RPCRDMA_MAXPAYLOAD     (RPCRDMA_MAX_SVC_SEGS << PAGE_SHIFT)
+#endif
+
 #define RPCRDMA_LISTEN_BACKLOG  10
 /* The default ORD value is based on two outstanding full-size writes with a
  * page size of 4k, or 32k * 2 ops / 4k = 16 outstanding RDMA_READ.  */
index 1ed4740..3b4c2ff 100644 (file)
@@ -91,7 +91,7 @@ struct svc_xprt_class svc_rdma_class = {
        .xcl_name = "rdma",
        .xcl_owner = THIS_MODULE,
        .xcl_ops = &svc_rdma_ops,
-       .xcl_max_payload = RPCSVC_MAXPAYLOAD_RDMA,
+       .xcl_max_payload = RPCRDMA_MAXPAYLOAD,
        .xcl_ident = XPRT_TRANSPORT_RDMA,
 };
 
index 78e0b8b..e60907b 100644 (file)
@@ -487,10 +487,4 @@ extern struct kmem_cache *svc_rdma_ctxt_cachep;
 /* Workqueue created in svc_rdma.c */
 extern struct workqueue_struct *svc_rdma_wq;
 
-#if RPCSVC_MAXPAYLOAD < (RPCRDMA_MAX_DATA_SEGS << PAGE_SHIFT)
-#define RPCSVC_MAXPAYLOAD_RDMA RPCSVC_MAXPAYLOAD
-#else
-#define RPCSVC_MAXPAYLOAD_RDMA (RPCRDMA_MAX_DATA_SEGS << PAGE_SHIFT)
-#endif
-
 #endif                         /* _LINUX_SUNRPC_XPRT_RDMA_H */