xprtrdma: Clean up XDR decoding in rpcrdma_update_granted_credits()
authorChuck Lever <chuck.lever@oracle.com>
Thu, 3 Aug 2017 18:30:52 +0000 (14:30 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Tue, 8 Aug 2017 14:52:01 +0000 (10:52 -0400)
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>
net/sunrpc/xprtrdma/verbs.c
net/sunrpc/xprtrdma/xprt_rdma.h

index 5d36c066552df3ce3b69adae78e9686da70710cf..c78fb27c20ed2ff6e3f55fe486e0746601b95ce8 100644 (file)
@@ -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)
index d4a897af9d9bd01d5d65dfdc4717c3ecefd58f59..52e73eaacebb3b957690a060e886d1749dea3a7f 100644 (file)
@@ -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;
 };
 
 /*