|
@@ -180,7 +180,7 @@ rpcrdma_wc_receive(struct ib_cq *cq, struct ib_wc *wc)
|
|
|
rep->rr_wc_flags = wc->wc_flags;
|
|
|
rep->rr_inv_rkey = wc->ex.invalidate_rkey;
|
|
|
|
|
|
- ib_dma_sync_single_for_cpu(rep->rr_device,
|
|
|
+ ib_dma_sync_single_for_cpu(rdmab_device(rep->rr_rdmabuf),
|
|
|
rdmab_addr(rep->rr_rdmabuf),
|
|
|
rep->rr_len, DMA_FROM_DEVICE);
|
|
|
|
|
@@ -878,7 +878,6 @@ struct rpcrdma_rep *
|
|
|
rpcrdma_create_rep(struct rpcrdma_xprt *r_xprt)
|
|
|
{
|
|
|
struct rpcrdma_create_data_internal *cdata = &r_xprt->rx_data;
|
|
|
- struct rpcrdma_ia *ia = &r_xprt->rx_ia;
|
|
|
struct rpcrdma_rep *rep;
|
|
|
int rc;
|
|
|
|
|
@@ -894,7 +893,6 @@ rpcrdma_create_rep(struct rpcrdma_xprt *r_xprt)
|
|
|
goto out_free;
|
|
|
}
|
|
|
|
|
|
- rep->rr_device = ia->ri_device;
|
|
|
rep->rr_cqe.done = rpcrdma_wc_receive;
|
|
|
rep->rr_rxprt = r_xprt;
|
|
|
INIT_WORK(&rep->rr_work, rpcrdma_reply_handler);
|
|
@@ -1232,17 +1230,19 @@ rpcrdma_alloc_regbuf(size_t size, enum dma_data_direction direction,
|
|
|
bool
|
|
|
__rpcrdma_dma_map_regbuf(struct rpcrdma_ia *ia, struct rpcrdma_regbuf *rb)
|
|
|
{
|
|
|
+ struct ib_device *device = ia->ri_device;
|
|
|
+
|
|
|
if (rb->rg_direction == DMA_NONE)
|
|
|
return false;
|
|
|
|
|
|
- rb->rg_iov.addr = ib_dma_map_single(ia->ri_device,
|
|
|
+ rb->rg_iov.addr = ib_dma_map_single(device,
|
|
|
(void *)rb->rg_base,
|
|
|
rdmab_length(rb),
|
|
|
rb->rg_direction);
|
|
|
- if (ib_dma_mapping_error(ia->ri_device, rdmab_addr(rb)))
|
|
|
+ if (ib_dma_mapping_error(device, rdmab_addr(rb)))
|
|
|
return false;
|
|
|
|
|
|
- rb->rg_device = ia->ri_device;
|
|
|
+ rb->rg_device = device;
|
|
|
rb->rg_iov.lkey = ia->ri_pd->local_dma_lkey;
|
|
|
return true;
|
|
|
}
|