aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2017-02-07 11:58:40 -0500
committerJ. Bruce Fields <bfields@redhat.com>2017-02-08 14:41:58 -0500
commitc2ccf64a6c4bf3bcbf4e6e6b94a51500991022a1 (patch)
tree810d9839608bad02bb37ca7176263885bff0df97
parent647e18e3bd0308b38d5341fc08cd70ed1ce28a71 (diff)
svcrdma: Clean up backchannel send header encoding
Replace C structure-based XDR decoding with pointer arithmetic. Pointer arithmetic is considered more portable. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
-rw-r--r--net/sunrpc/xprtrdma/svc_rdma_backchannel.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/net/sunrpc/xprtrdma/svc_rdma_backchannel.c b/net/sunrpc/xprtrdma/svc_rdma_backchannel.c
index 288e35c2d8f4..b1bc7a796782 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_backchannel.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_backchannel.c
@@ -200,19 +200,20 @@ rpcrdma_bc_send_request(struct svcxprt_rdma *rdma, struct rpc_rqst *rqst)
200{ 200{
201 struct rpc_xprt *xprt = rqst->rq_xprt; 201 struct rpc_xprt *xprt = rqst->rq_xprt;
202 struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt); 202 struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
203 struct rpcrdma_msg *headerp = (struct rpcrdma_msg *)rqst->rq_buffer; 203 __be32 *p;
204 int rc; 204 int rc;
205 205
206 /* Space in the send buffer for an RPC/RDMA header is reserved 206 /* Space in the send buffer for an RPC/RDMA header is reserved
207 * via xprt->tsh_size. 207 * via xprt->tsh_size.
208 */ 208 */
209 headerp->rm_xid = rqst->rq_xid; 209 p = rqst->rq_buffer;
210 headerp->rm_vers = rpcrdma_version; 210 *p++ = rqst->rq_xid;
211 headerp->rm_credit = cpu_to_be32(r_xprt->rx_buf.rb_bc_max_requests); 211 *p++ = rpcrdma_version;
212 headerp->rm_type = rdma_msg; 212 *p++ = cpu_to_be32(r_xprt->rx_buf.rb_bc_max_requests);
213 headerp->rm_body.rm_chunks[0] = xdr_zero; 213 *p++ = rdma_msg;
214 headerp->rm_body.rm_chunks[1] = xdr_zero; 214 *p++ = xdr_zero;
215 headerp->rm_body.rm_chunks[2] = xdr_zero; 215 *p++ = xdr_zero;
216 *p = xdr_zero;
216 217
217#ifdef SVCRDMA_BACKCHANNEL_DEBUG 218#ifdef SVCRDMA_BACKCHANNEL_DEBUG
218 pr_info("%s: %*ph\n", __func__, 64, rqst->rq_buffer); 219 pr_info("%s: %*ph\n", __func__, 64, rqst->rq_buffer);