Udiff svc.h
--- /webrev/webrev/usr/src/uts/common/rpc/svc.h-        Mon Aug 14 13:12:11 2006
+++ svc.h       Sun Jul 23 00:43:23 2006
@@ -33,10 +33,23 @@
 
 /*
  * svc.h, Server-side remote procedure call interface.
  */
 
+ /* Copyright (c) 2006, The Ohio State University. All rights reserved.
+  *
+  * Portions of this source code is developed by the team members of
+  * The Ohio State University's Network-Based Computing Laboratory (NBCL),
+  * headed by Professor Dhabaleswar K. (DK) Panda.
+  *
+  * Acknowledgements to contributions from developors:
+  *   Ranjit Noronha: noronha@cse.ohio-state.edu
+  *   Lei Chai      : chail@cse.ohio-state.edu
+  *   Weikuan Yu    : yuw@cse.ohio-state.edu
+  *
+  */
+
 #ifndef        _RPC_SVC_H
 #define        _RPC_SVC_H
 
 #pragma ident  "@(#)svc.h      1.86    05/06/10 SMI"
 
@@ -186,10 +199,11 @@
                /* destroy pre-serialized response */
        void    (*xp_clone_destroy)(SVCXPRT *);
                /* destroy a clone xprt */
        void    (*xp_start)(SVCMASTERXPRT *);
                /* `ready-to-receive' */
+        bool_t  (*xp_get_wchunk)(struct svc_req *, iovec_t *);   
 };
 #else  /* _KERNEL */
 /*
  *     Service control requests
  */
@@ -432,11 +446,11 @@
  * The xp_p2buf buffer is used as the storage for a transport type
  * specific structure. It is private for the svc ops for a given
  * transport type.
  */
 
-#define        SVC_P2LEN   64
+#define        SVC_P2LEN       104     /* torplen + credctl + wlist */
 
 struct __svcxprt {
        __SVCXPRT_COMMON xp_xpc;
        SVCMASTERXPRT   *xp_master;     /* back ptr to master           */
 
@@ -560,10 +574,13 @@
 
 
 #define        SVC_START(xprt) \
        (*(xprt)->xp_ops->xp_start)(xprt)
 
+#define SVC_GET_WCHUNK(xprt, req, iov) \
+        (*(xprt)->xp_ops->xp_get_wchunk)(req, iov)
+               
 #else  /* _KERNEL */
 
 #define        SVC_RECV(xprt, msg) \
        (*(xprt)->xp_ops->xp_recv)((xprt), (msg))
 #define        svc_recv(xprt, msg) \
@@ -800,10 +817,11 @@
 extern int     svc_rdma_kcreate(char *, SVC_CALLOUT_TABLE *, int,
                        rdma_xprt_group_t *);
 extern void    svc_rdma_kstop(SVCMASTERXPRT *);
 extern void    svc_rdma_kdestroy(SVCMASTERXPRT *);
 extern void    rdma_stop(rdma_xprt_group_t);
+extern bool_t rdma_get_wchunk_seg(struct svc_req *, iovec_t *);
 
 /*
  * GSS cleanup method.
  */
 extern void    rpc_gss_cleanup(SVCXPRT *);