Lines Matching refs:rdma
54 svc_rdma_get_rw_ctxt(struct svcxprt_rdma *rdma, unsigned int sges) in svc_rdma_get_rw_ctxt() argument
59 spin_lock(&rdma->sc_rw_ctxt_lock); in svc_rdma_get_rw_ctxt()
60 node = llist_del_first(&rdma->sc_rw_ctxts); in svc_rdma_get_rw_ctxt()
61 spin_unlock(&rdma->sc_rw_ctxt_lock); in svc_rdma_get_rw_ctxt()
83 trace_svcrdma_no_rwctx_err(rdma, sges); in svc_rdma_get_rw_ctxt()
87 static void __svc_rdma_put_rw_ctxt(struct svcxprt_rdma *rdma, in __svc_rdma_put_rw_ctxt() argument
95 static void svc_rdma_put_rw_ctxt(struct svcxprt_rdma *rdma, in svc_rdma_put_rw_ctxt() argument
98 __svc_rdma_put_rw_ctxt(rdma, ctxt, &rdma->sc_rw_ctxts); in svc_rdma_put_rw_ctxt()
106 void svc_rdma_destroy_rw_ctxts(struct svcxprt_rdma *rdma) in svc_rdma_destroy_rw_ctxts() argument
111 while ((node = llist_del_first(&rdma->sc_rw_ctxts)) != NULL) { in svc_rdma_destroy_rw_ctxts()
128 static int svc_rdma_rw_ctx_init(struct svcxprt_rdma *rdma, in svc_rdma_rw_ctx_init() argument
135 ret = rdma_rw_ctx_init(&ctxt->rw_ctx, rdma->sc_qp, rdma->sc_port_num, in svc_rdma_rw_ctx_init()
139 svc_rdma_put_rw_ctxt(rdma, ctxt); in svc_rdma_rw_ctx_init()
140 trace_svcrdma_dma_map_rw_err(rdma, ctxt->rw_nents, ret); in svc_rdma_rw_ctx_init()
163 static void svc_rdma_cc_cid_init(struct svcxprt_rdma *rdma, in svc_rdma_cc_cid_init() argument
166 cid->ci_queue_id = rdma->sc_sq_cq->res.id; in svc_rdma_cc_cid_init()
167 cid->ci_completion_id = atomic_inc_return(&rdma->sc_completion_ids); in svc_rdma_cc_cid_init()
170 static void svc_rdma_cc_init(struct svcxprt_rdma *rdma, in svc_rdma_cc_init() argument
173 svc_rdma_cc_cid_init(rdma, &cc->cc_cid); in svc_rdma_cc_init()
174 cc->cc_rdma = rdma; in svc_rdma_cc_init()
188 struct svcxprt_rdma *rdma = cc->cc_rdma; in svc_rdma_cc_release() local
197 rdma_rw_ctx_destroy(&ctxt->rw_ctx, rdma->sc_qp, in svc_rdma_cc_release()
198 rdma->sc_port_num, ctxt->rw_sg_table.sgl, in svc_rdma_cc_release()
200 __svc_rdma_put_rw_ctxt(rdma, ctxt, &free); in svc_rdma_cc_release()
208 llist_add_batch(first, last, &rdma->sc_rw_ctxts); in svc_rdma_cc_release()
231 svc_rdma_write_info_alloc(struct svcxprt_rdma *rdma, in svc_rdma_write_info_alloc() argument
243 svc_rdma_cc_init(rdma, &info->wi_cc); in svc_rdma_write_info_alloc()
266 struct svcxprt_rdma *rdma = cc->cc_rdma; in svc_rdma_write_done() local
272 svc_rdma_wake_send_waiters(rdma, cc->cc_sqecount); in svc_rdma_write_done()
275 svc_xprt_deferred_close(&rdma->sc_xprt); in svc_rdma_write_done()
293 svc_rdma_read_info_alloc(struct svcxprt_rdma *rdma) in svc_rdma_read_info_alloc() argument
301 svc_rdma_cc_init(rdma, &info->ri_cc); in svc_rdma_read_info_alloc()
323 struct svcxprt_rdma *rdma = cc->cc_rdma; in svc_rdma_wc_read_done() local
327 svc_rdma_wake_send_waiters(rdma, cc->cc_sqecount); in svc_rdma_wc_read_done()
342 struct svcxprt_rdma *rdma = cc->cc_rdma; in svc_rdma_post_chunk_ctxt() local
349 if (cc->cc_sqecount > rdma->sc_sq_depth) in svc_rdma_post_chunk_ctxt()
358 first_wr = rdma_rw_ctx_wrs(&ctxt->rw_ctx, rdma->sc_qp, in svc_rdma_post_chunk_ctxt()
359 rdma->sc_port_num, cqe, first_wr); in svc_rdma_post_chunk_ctxt()
365 &rdma->sc_sq_avail) > 0) { in svc_rdma_post_chunk_ctxt()
366 ret = ib_post_send(rdma->sc_qp, first_wr, &bad_wr); in svc_rdma_post_chunk_ctxt()
373 trace_svcrdma_sq_full(rdma); in svc_rdma_post_chunk_ctxt()
374 atomic_add(cc->cc_sqecount, &rdma->sc_sq_avail); in svc_rdma_post_chunk_ctxt()
375 wait_event(rdma->sc_send_wait, in svc_rdma_post_chunk_ctxt()
376 atomic_read(&rdma->sc_sq_avail) > cc->cc_sqecount); in svc_rdma_post_chunk_ctxt()
377 trace_svcrdma_sq_retry(rdma); in svc_rdma_post_chunk_ctxt()
380 trace_svcrdma_sq_post_err(rdma, ret); in svc_rdma_post_chunk_ctxt()
381 svc_xprt_deferred_close(&rdma->sc_xprt); in svc_rdma_post_chunk_ctxt()
387 atomic_add(cc->cc_sqecount, &rdma->sc_sq_avail); in svc_rdma_post_chunk_ctxt()
388 wake_up(&rdma->sc_send_wait); in svc_rdma_post_chunk_ctxt()
450 struct svcxprt_rdma *rdma = cc->cc_rdma; in svc_rdma_build_writes() local
466 ctxt = svc_rdma_get_rw_ctxt(rdma, in svc_rdma_build_writes()
473 ret = svc_rdma_rw_ctx_init(rdma, ctxt, offset, seg->rs_handle, in svc_rdma_build_writes()
493 trace_svcrdma_small_wrch_err(rdma, remaining, info->wi_seg_no, in svc_rdma_build_writes()
592 int svc_rdma_send_write_chunk(struct svcxprt_rdma *rdma, in svc_rdma_send_write_chunk() argument
600 info = svc_rdma_write_info_alloc(rdma, chunk); in svc_rdma_send_write_chunk()
633 int svc_rdma_send_reply_chunk(struct svcxprt_rdma *rdma, in svc_rdma_send_reply_chunk() argument
646 info = svc_rdma_write_info_alloc(rdma, chunk); in svc_rdma_send_reply_chunk()
1094 int svc_rdma_process_read_list(struct svcxprt_rdma *rdma, in svc_rdma_process_read_list() argument
1102 info = svc_rdma_read_info_alloc(rdma); in svc_rdma_process_read_list()