Skip to content

Commit c2ccf64

Browse files
chuckleverJ. Bruce Fields
authored andcommitted
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>
1 parent 647e18e commit c2ccf64

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

net/sunrpc/xprtrdma/svc_rdma_backchannel.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -200,19 +200,20 @@ rpcrdma_bc_send_request(struct svcxprt_rdma *rdma, struct rpc_rqst *rqst)
200200
{
201201
struct rpc_xprt *xprt = rqst->rq_xprt;
202202
struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
203-
struct rpcrdma_msg *headerp = (struct rpcrdma_msg *)rqst->rq_buffer;
203+
__be32 *p;
204204
int rc;
205205

206206
/* Space in the send buffer for an RPC/RDMA header is reserved
207207
* via xprt->tsh_size.
208208
*/
209-
headerp->rm_xid = rqst->rq_xid;
210-
headerp->rm_vers = rpcrdma_version;
211-
headerp->rm_credit = cpu_to_be32(r_xprt->rx_buf.rb_bc_max_requests);
212-
headerp->rm_type = rdma_msg;
213-
headerp->rm_body.rm_chunks[0] = xdr_zero;
214-
headerp->rm_body.rm_chunks[1] = xdr_zero;
215-
headerp->rm_body.rm_chunks[2] = xdr_zero;
209+
p = rqst->rq_buffer;
210+
*p++ = rqst->rq_xid;
211+
*p++ = rpcrdma_version;
212+
*p++ = cpu_to_be32(r_xprt->rx_buf.rb_bc_max_requests);
213+
*p++ = rdma_msg;
214+
*p++ = xdr_zero;
215+
*p++ = xdr_zero;
216+
*p = xdr_zero;
216217

217218
#ifdef SVCRDMA_BACKCHANNEL_DEBUG
218219
pr_info("%s: %*ph\n", __func__, 64, rqst->rq_buffer);

0 commit comments

Comments
 (0)