Lines Matching refs:rb

92 static void rpcrdma_regbuf_dma_unmap(struct rpcrdma_regbuf *rb);
93 static void rpcrdma_regbuf_free(struct rpcrdma_regbuf *rb);
873 struct rpcrdma_regbuf *rb; in rpcrdma_req_setup() local
880 rb = rpcrdma_regbuf_alloc(__roundup_pow_of_two(maxhdrsize), in rpcrdma_req_setup()
882 if (!rb) in rpcrdma_req_setup()
885 if (!__rpcrdma_regbuf_dma_map(r_xprt, rb)) in rpcrdma_req_setup()
888 req->rl_rdmabuf = rb; in rpcrdma_req_setup()
889 xdr_buf_init(&req->rl_hdrbuf, rdmab_data(rb), rdmab_length(rb)); in rpcrdma_req_setup()
893 rpcrdma_regbuf_free(rb); in rpcrdma_req_setup()
1261 struct rpcrdma_regbuf *rb; in rpcrdma_regbuf_alloc() local
1263 rb = kmalloc(sizeof(*rb), flags); in rpcrdma_regbuf_alloc()
1264 if (!rb) in rpcrdma_regbuf_alloc()
1266 rb->rg_data = kmalloc(size, flags); in rpcrdma_regbuf_alloc()
1267 if (!rb->rg_data) { in rpcrdma_regbuf_alloc()
1268 kfree(rb); in rpcrdma_regbuf_alloc()
1272 rb->rg_device = NULL; in rpcrdma_regbuf_alloc()
1273 rb->rg_direction = direction; in rpcrdma_regbuf_alloc()
1274 rb->rg_iov.length = size; in rpcrdma_regbuf_alloc()
1275 return rb; in rpcrdma_regbuf_alloc()
1287 bool rpcrdma_regbuf_realloc(struct rpcrdma_regbuf *rb, size_t size, gfp_t flags) in rpcrdma_regbuf_realloc() argument
1295 rpcrdma_regbuf_dma_unmap(rb); in rpcrdma_regbuf_realloc()
1296 kfree(rb->rg_data); in rpcrdma_regbuf_realloc()
1298 rb->rg_data = buf; in rpcrdma_regbuf_realloc()
1299 rb->rg_iov.length = size; in rpcrdma_regbuf_realloc()
1311 struct rpcrdma_regbuf *rb) in __rpcrdma_regbuf_dma_map() argument
1315 if (rb->rg_direction == DMA_NONE) in __rpcrdma_regbuf_dma_map()
1318 rb->rg_iov.addr = ib_dma_map_single(device, rdmab_data(rb), in __rpcrdma_regbuf_dma_map()
1319 rdmab_length(rb), rb->rg_direction); in __rpcrdma_regbuf_dma_map()
1320 if (ib_dma_mapping_error(device, rdmab_addr(rb))) { in __rpcrdma_regbuf_dma_map()
1321 trace_xprtrdma_dma_maperr(rdmab_addr(rb)); in __rpcrdma_regbuf_dma_map()
1325 rb->rg_device = device; in __rpcrdma_regbuf_dma_map()
1326 rb->rg_iov.lkey = r_xprt->rx_ep->re_pd->local_dma_lkey; in __rpcrdma_regbuf_dma_map()
1330 static void rpcrdma_regbuf_dma_unmap(struct rpcrdma_regbuf *rb) in rpcrdma_regbuf_dma_unmap() argument
1332 if (!rb) in rpcrdma_regbuf_dma_unmap()
1335 if (!rpcrdma_regbuf_is_mapped(rb)) in rpcrdma_regbuf_dma_unmap()
1338 ib_dma_unmap_single(rb->rg_device, rdmab_addr(rb), rdmab_length(rb), in rpcrdma_regbuf_dma_unmap()
1339 rb->rg_direction); in rpcrdma_regbuf_dma_unmap()
1340 rb->rg_device = NULL; in rpcrdma_regbuf_dma_unmap()
1343 static void rpcrdma_regbuf_free(struct rpcrdma_regbuf *rb) in rpcrdma_regbuf_free() argument
1345 rpcrdma_regbuf_dma_unmap(rb); in rpcrdma_regbuf_free()
1346 if (rb) in rpcrdma_regbuf_free()
1347 kfree(rb->rg_data); in rpcrdma_regbuf_free()
1348 kfree(rb); in rpcrdma_regbuf_free()