Lines Matching refs:rb
80 static void rpcrdma_regbuf_dma_unmap(struct rpcrdma_regbuf *rb);
81 static void rpcrdma_regbuf_free(struct rpcrdma_regbuf *rb);
850 struct rpcrdma_regbuf *rb; in rpcrdma_req_setup() local
857 rb = rpcrdma_regbuf_alloc(__roundup_pow_of_two(maxhdrsize), in rpcrdma_req_setup()
859 if (!rb) in rpcrdma_req_setup()
862 if (!__rpcrdma_regbuf_dma_map(r_xprt, rb)) in rpcrdma_req_setup()
865 req->rl_rdmabuf = rb; in rpcrdma_req_setup()
866 xdr_buf_init(&req->rl_hdrbuf, rdmab_data(rb), rdmab_length(rb)); in rpcrdma_req_setup()
870 rpcrdma_regbuf_free(rb); in rpcrdma_req_setup()
1237 struct rpcrdma_regbuf *rb; in rpcrdma_regbuf_alloc() local
1239 rb = kmalloc(sizeof(*rb), XPRTRDMA_GFP_FLAGS); in rpcrdma_regbuf_alloc()
1240 if (!rb) in rpcrdma_regbuf_alloc()
1242 rb->rg_data = kmalloc(size, XPRTRDMA_GFP_FLAGS); in rpcrdma_regbuf_alloc()
1243 if (!rb->rg_data) { in rpcrdma_regbuf_alloc()
1244 kfree(rb); in rpcrdma_regbuf_alloc()
1248 rb->rg_device = NULL; in rpcrdma_regbuf_alloc()
1249 rb->rg_direction = direction; in rpcrdma_regbuf_alloc()
1250 rb->rg_iov.length = size; in rpcrdma_regbuf_alloc()
1251 return rb; in rpcrdma_regbuf_alloc()
1263 bool rpcrdma_regbuf_realloc(struct rpcrdma_regbuf *rb, size_t size, gfp_t flags) in rpcrdma_regbuf_realloc() argument
1271 rpcrdma_regbuf_dma_unmap(rb); in rpcrdma_regbuf_realloc()
1272 kfree(rb->rg_data); in rpcrdma_regbuf_realloc()
1274 rb->rg_data = buf; in rpcrdma_regbuf_realloc()
1275 rb->rg_iov.length = size; in rpcrdma_regbuf_realloc()
1287 struct rpcrdma_regbuf *rb) in __rpcrdma_regbuf_dma_map() argument
1291 if (rb->rg_direction == DMA_NONE) in __rpcrdma_regbuf_dma_map()
1294 rb->rg_iov.addr = ib_dma_map_single(device, rdmab_data(rb), in __rpcrdma_regbuf_dma_map()
1295 rdmab_length(rb), rb->rg_direction); in __rpcrdma_regbuf_dma_map()
1296 if (ib_dma_mapping_error(device, rdmab_addr(rb))) { in __rpcrdma_regbuf_dma_map()
1297 trace_xprtrdma_dma_maperr(rdmab_addr(rb)); in __rpcrdma_regbuf_dma_map()
1301 rb->rg_device = device; in __rpcrdma_regbuf_dma_map()
1302 rb->rg_iov.lkey = r_xprt->rx_ep->re_pd->local_dma_lkey; in __rpcrdma_regbuf_dma_map()
1306 static void rpcrdma_regbuf_dma_unmap(struct rpcrdma_regbuf *rb) in rpcrdma_regbuf_dma_unmap() argument
1308 if (!rb) in rpcrdma_regbuf_dma_unmap()
1311 if (!rpcrdma_regbuf_is_mapped(rb)) in rpcrdma_regbuf_dma_unmap()
1314 ib_dma_unmap_single(rb->rg_device, rdmab_addr(rb), rdmab_length(rb), in rpcrdma_regbuf_dma_unmap()
1315 rb->rg_direction); in rpcrdma_regbuf_dma_unmap()
1316 rb->rg_device = NULL; in rpcrdma_regbuf_dma_unmap()
1319 static void rpcrdma_regbuf_free(struct rpcrdma_regbuf *rb) in rpcrdma_regbuf_free() argument
1321 rpcrdma_regbuf_dma_unmap(rb); in rpcrdma_regbuf_free()
1322 if (rb) in rpcrdma_regbuf_free()
1323 kfree(rb->rg_data); in rpcrdma_regbuf_free()
1324 kfree(rb); in rpcrdma_regbuf_free()