Lines Matching refs:rb
82 static void rpcrdma_regbuf_dma_unmap(struct rpcrdma_regbuf *rb);
83 static void rpcrdma_regbuf_free(struct rpcrdma_regbuf *rb);
861 struct rpcrdma_regbuf *rb; in rpcrdma_req_setup() local
868 rb = rpcrdma_regbuf_alloc(__roundup_pow_of_two(maxhdrsize), in rpcrdma_req_setup()
870 if (!rb) in rpcrdma_req_setup()
873 if (!__rpcrdma_regbuf_dma_map(r_xprt, rb)) in rpcrdma_req_setup()
876 req->rl_rdmabuf = rb; in rpcrdma_req_setup()
877 xdr_buf_init(&req->rl_hdrbuf, rdmab_data(rb), rdmab_length(rb)); in rpcrdma_req_setup()
881 rpcrdma_regbuf_free(rb); in rpcrdma_req_setup()
1246 struct rpcrdma_regbuf *rb; in rpcrdma_regbuf_alloc_node() local
1248 rb = kmalloc_node(sizeof(*rb), XPRTRDMA_GFP_FLAGS, node); in rpcrdma_regbuf_alloc_node()
1249 if (!rb) in rpcrdma_regbuf_alloc_node()
1251 rb->rg_data = kmalloc_node(size, XPRTRDMA_GFP_FLAGS, node); in rpcrdma_regbuf_alloc_node()
1252 if (!rb->rg_data) { in rpcrdma_regbuf_alloc_node()
1253 kfree(rb); in rpcrdma_regbuf_alloc_node()
1257 rb->rg_device = NULL; in rpcrdma_regbuf_alloc_node()
1258 rb->rg_direction = direction; in rpcrdma_regbuf_alloc_node()
1259 rb->rg_iov.length = size; in rpcrdma_regbuf_alloc_node()
1260 return rb; in rpcrdma_regbuf_alloc_node()
1278 bool rpcrdma_regbuf_realloc(struct rpcrdma_regbuf *rb, size_t size, gfp_t flags) in rpcrdma_regbuf_realloc() argument
1286 rpcrdma_regbuf_dma_unmap(rb); in rpcrdma_regbuf_realloc()
1287 kfree(rb->rg_data); in rpcrdma_regbuf_realloc()
1289 rb->rg_data = buf; in rpcrdma_regbuf_realloc()
1290 rb->rg_iov.length = size; in rpcrdma_regbuf_realloc()
1302 struct rpcrdma_regbuf *rb) in __rpcrdma_regbuf_dma_map() argument
1306 if (rb->rg_direction == DMA_NONE) in __rpcrdma_regbuf_dma_map()
1309 rb->rg_iov.addr = ib_dma_map_single(device, rdmab_data(rb), in __rpcrdma_regbuf_dma_map()
1310 rdmab_length(rb), rb->rg_direction); in __rpcrdma_regbuf_dma_map()
1311 if (ib_dma_mapping_error(device, rdmab_addr(rb))) { in __rpcrdma_regbuf_dma_map()
1312 trace_xprtrdma_dma_maperr(rdmab_addr(rb)); in __rpcrdma_regbuf_dma_map()
1316 rb->rg_device = device; in __rpcrdma_regbuf_dma_map()
1317 rb->rg_iov.lkey = r_xprt->rx_ep->re_pd->local_dma_lkey; in __rpcrdma_regbuf_dma_map()
1321 static void rpcrdma_regbuf_dma_unmap(struct rpcrdma_regbuf *rb) in rpcrdma_regbuf_dma_unmap() argument
1323 if (!rb) in rpcrdma_regbuf_dma_unmap()
1326 if (!rpcrdma_regbuf_is_mapped(rb)) in rpcrdma_regbuf_dma_unmap()
1329 ib_dma_unmap_single(rb->rg_device, rdmab_addr(rb), rdmab_length(rb), in rpcrdma_regbuf_dma_unmap()
1330 rb->rg_direction); in rpcrdma_regbuf_dma_unmap()
1331 rb->rg_device = NULL; in rpcrdma_regbuf_dma_unmap()
1334 static void rpcrdma_regbuf_free(struct rpcrdma_regbuf *rb) in rpcrdma_regbuf_free() argument
1336 rpcrdma_regbuf_dma_unmap(rb); in rpcrdma_regbuf_free()
1337 if (rb) in rpcrdma_regbuf_free()
1338 kfree(rb->rg_data); in rpcrdma_regbuf_free()
1339 kfree(rb); in rpcrdma_regbuf_free()