|
@@ -278,6 +278,7 @@ rpcrdma_recvcq_process_wc(struct ib_wc *wc, struct list_head *sched_list)
|
|
|
{
|
|
|
struct rpcrdma_rep *rep =
|
|
|
(struct rpcrdma_rep *)(unsigned long)wc->wr_id;
|
|
|
+ struct rpcrdma_ia *ia;
|
|
|
|
|
|
/* WARNING: Only wr_id and status are reliable at this point */
|
|
|
if (wc->status != IB_WC_SUCCESS)
|
|
@@ -290,8 +291,9 @@ rpcrdma_recvcq_process_wc(struct ib_wc *wc, struct list_head *sched_list)
|
|
|
dprintk("RPC: %s: rep %p opcode 'recv', length %u: success\n",
|
|
|
__func__, rep, wc->byte_len);
|
|
|
|
|
|
+ ia = &rep->rr_rxprt->rx_ia;
|
|
|
rep->rr_len = wc->byte_len;
|
|
|
- ib_dma_sync_single_for_cpu(rdmab_to_ia(rep->rr_buffer)->ri_id->device,
|
|
|
+ ib_dma_sync_single_for_cpu(ia->ri_id->device,
|
|
|
rdmab_addr(rep->rr_rdmabuf),
|
|
|
rep->rr_len, DMA_FROM_DEVICE);
|
|
|
prefetch(rdmab_to_msg(rep->rr_rdmabuf));
|
|
@@ -1053,7 +1055,7 @@ rpcrdma_create_rep(struct rpcrdma_xprt *r_xprt)
|
|
|
goto out_free;
|
|
|
}
|
|
|
|
|
|
- rep->rr_buffer = &r_xprt->rx_buf;
|
|
|
+ rep->rr_rxprt = r_xprt;
|
|
|
return rep;
|
|
|
|
|
|
out_free:
|
|
@@ -1423,7 +1425,7 @@ rpcrdma_recv_buffer_get(struct rpcrdma_req *req)
|
|
|
void
|
|
|
rpcrdma_recv_buffer_put(struct rpcrdma_rep *rep)
|
|
|
{
|
|
|
- struct rpcrdma_buffer *buffers = rep->rr_buffer;
|
|
|
+ struct rpcrdma_buffer *buffers = &rep->rr_rxprt->rx_buf;
|
|
|
unsigned long flags;
|
|
|
|
|
|
rep->rr_func = NULL;
|