diff options
| author | Chuck Lever <chuck.lever@oracle.com> | 2017-08-03 14:30:52 -0400 | 
|---|---|---|
| committer | Anna Schumaker <Anna.Schumaker@Netapp.com> | 2017-08-08 10:52:01 -0400 | 
| commit | c1bcb68e39e4d58dbb73ac4a390c32b16185a91b (patch) | |
| tree | 3bfe4f909555b2379a50753292a204c5b11677c8 | |
| parent | e2a671904149c1c0aa438e3cbe7d0e8ad2cf8721 (diff) | |
xprtrdma: Clean up XDR decoding in rpcrdma_update_granted_credits()
Clean up: Replace C-structure based XDR decoding for consistency
with other areas.
struct rpcrdma_rep is rearranged slightly so that the relevant fields
are in cache when the Receive completion handler is invoked.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
| -rw-r--r-- | net/sunrpc/xprtrdma/verbs.c | 4 | ||||
| -rw-r--r-- | net/sunrpc/xprtrdma/xprt_rdma.h | 2 | 
2 files changed, 3 insertions, 3 deletions
| diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c index 5d36c066552d..c78fb27c20ed 100644 --- a/net/sunrpc/xprtrdma/verbs.c +++ b/net/sunrpc/xprtrdma/verbs.c @@ -139,11 +139,11 @@ rpcrdma_wc_send(struct ib_cq *cq, struct ib_wc *wc)  static void  rpcrdma_update_granted_credits(struct rpcrdma_rep *rep)  { -	struct rpcrdma_msg *rmsgp = rdmab_to_msg(rep->rr_rdmabuf);  	struct rpcrdma_buffer *buffer = &rep->rr_rxprt->rx_buf; +	__be32 *p = rep->rr_rdmabuf->rg_base;  	u32 credits; -	credits = be32_to_cpu(rmsgp->rm_credit); +	credits = be32_to_cpup(p + 2);  	if (credits == 0)  		credits = 1;	/* don't deadlock */  	else if (credits > buffer->rb_max_requests) diff --git a/net/sunrpc/xprtrdma/xprt_rdma.h b/net/sunrpc/xprtrdma/xprt_rdma.h index d4a897af9d9b..52e73eaacebb 100644 --- a/net/sunrpc/xprtrdma/xprt_rdma.h +++ b/net/sunrpc/xprtrdma/xprt_rdma.h @@ -220,13 +220,13 @@ struct rpcrdma_rep {  	struct ib_cqe		rr_cqe;  	int			rr_wc_flags;  	u32			rr_inv_rkey; +	struct rpcrdma_regbuf	*rr_rdmabuf;  	struct rpcrdma_xprt	*rr_rxprt;  	struct work_struct	rr_work;  	struct xdr_buf		rr_hdrbuf;  	struct xdr_stream	rr_stream;  	struct list_head	rr_list;  	struct ib_recv_wr	rr_recv_wr; -	struct rpcrdma_regbuf	*rr_rdmabuf;  };  /* | 
