Lines Matching defs:r_xprt
77 static int rpcrdma_sendctxs_create(struct rpcrdma_xprt *r_xprt);
78 static void rpcrdma_sendctxs_destroy(struct rpcrdma_xprt *r_xprt);
79 static void rpcrdma_sendctx_put_locked(struct rpcrdma_xprt *r_xprt,
81 static int rpcrdma_reqs_setup(struct rpcrdma_xprt *r_xprt);
82 static void rpcrdma_reqs_reset(struct rpcrdma_xprt *r_xprt);
84 static void rpcrdma_reps_unmap(struct rpcrdma_xprt *r_xprt);
85 static void rpcrdma_mrs_create(struct rpcrdma_xprt *r_xprt);
86 static void rpcrdma_mrs_destroy(struct rpcrdma_xprt *r_xprt);
99 static void rpcrdma_xprt_drain(struct rpcrdma_xprt *r_xprt)
101 struct rpcrdma_ep *ep = r_xprt->rx_ep;
145 * @r_xprt: transport to disconnect
150 void rpcrdma_flush_disconnect(struct rpcrdma_xprt *r_xprt, struct ib_wc *wc)
153 rpcrdma_force_disconnect(r_xprt->rx_ep);
167 struct rpcrdma_xprt *r_xprt = cq->cq_context;
171 rpcrdma_sendctx_put_locked(r_xprt, sc);
172 rpcrdma_flush_disconnect(r_xprt, wc);
186 struct rpcrdma_xprt *r_xprt = cq->cq_context;
190 --r_xprt->rx_ep->re_receive_count;
207 rpcrdma_flush_disconnect(r_xprt, wc);
311 static struct rdma_cm_id *rpcrdma_create_id(struct rpcrdma_xprt *r_xprt,
315 struct rpc_xprt *xprt = &r_xprt->rx_xprt;
395 static int rpcrdma_ep_create(struct rpcrdma_xprt *r_xprt)
406 ep->re_xprt = &r_xprt->rx_xprt;
409 id = rpcrdma_create_id(r_xprt, ep);
418 ep->re_max_requests = r_xprt->rx_xprt.max_reqs;
425 r_xprt->rx_buf.rb_max_requests = cpu_to_be32(ep->re_max_requests);
447 ep->re_attr.send_cq = ib_alloc_cq_any(device, r_xprt,
456 ep->re_attr.recv_cq = ib_alloc_cq_any(device, r_xprt,
508 r_xprt->rx_ep = ep;
519 * @r_xprt: controlling transport instance
523 int rpcrdma_xprt_connect(struct rpcrdma_xprt *r_xprt)
525 struct rpc_xprt *xprt = &r_xprt->rx_xprt;
529 rc = rpcrdma_ep_create(r_xprt);
532 ep = r_xprt->rx_ep;
535 rpcrdma_reset_cwnd(r_xprt);
541 rpcrdma_post_recvs(r_xprt, 1, true);
556 rc = rpcrdma_sendctxs_create(r_xprt);
562 rc = rpcrdma_reqs_setup(r_xprt);
567 rpcrdma_mrs_create(r_xprt);
570 trace_xprtrdma_connect(r_xprt, rc);
576 * @r_xprt: controlling transport instance
581 * On return, @r_xprt is completely divested of all hardware
584 void rpcrdma_xprt_disconnect(struct rpcrdma_xprt *r_xprt)
586 struct rpcrdma_ep *ep = r_xprt->rx_ep;
595 trace_xprtrdma_disconnect(r_xprt, rc);
597 rpcrdma_xprt_drain(r_xprt);
598 rpcrdma_reps_unmap(r_xprt);
599 rpcrdma_reqs_reset(r_xprt);
600 rpcrdma_mrs_destroy(r_xprt);
601 rpcrdma_sendctxs_destroy(r_xprt);
606 r_xprt->rx_ep = NULL;
626 static void rpcrdma_sendctxs_destroy(struct rpcrdma_xprt *r_xprt)
628 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
652 static int rpcrdma_sendctxs_create(struct rpcrdma_xprt *r_xprt)
654 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
663 i = r_xprt->rx_ep->re_max_requests + RPCRDMA_MAX_BC_REQUESTS;
670 sc = rpcrdma_sendctx_create(r_xprt->rx_ep);
694 * @r_xprt: controlling transport instance
705 struct rpcrdma_sendctx *rpcrdma_sendctx_get_locked(struct rpcrdma_xprt *r_xprt)
707 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
731 xprt_wait_for_buffer_space(&r_xprt->rx_xprt);
732 r_xprt->rx_stats.empty_sendctx_q++;
738 * @r_xprt: controlling transport instance
746 static void rpcrdma_sendctx_put_locked(struct rpcrdma_xprt *r_xprt,
749 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
767 xprt_write_space(&r_xprt->rx_xprt);
771 rpcrdma_mrs_create(struct rpcrdma_xprt *r_xprt)
773 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
774 struct rpcrdma_ep *ep = r_xprt->rx_ep;
785 rc = frwr_mr_init(r_xprt, mr);
797 r_xprt->rx_stats.mrs_allocated += count;
798 trace_xprtrdma_createmrs(r_xprt, count);
806 struct rpcrdma_xprt *r_xprt = container_of(buf, struct rpcrdma_xprt,
809 rpcrdma_mrs_create(r_xprt);
810 xprt_write_space(&r_xprt->rx_xprt);
815 * @r_xprt: controlling transport instance
818 void rpcrdma_mrs_refresh(struct rpcrdma_xprt *r_xprt)
820 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
821 struct rpcrdma_ep *ep = r_xprt->rx_ep;
837 * @r_xprt: controlling r_xprt
843 struct rpcrdma_req *rpcrdma_req_create(struct rpcrdma_xprt *r_xprt, size_t size,
846 struct rpcrdma_buffer *buffer = &r_xprt->rx_buf;
878 * @r_xprt: controlling transport instance
883 int rpcrdma_req_setup(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req)
890 r_xprt->rx_ep->re_max_rdma_segs * rpcrdma_readchunk_maxsz;
897 if (!__rpcrdma_regbuf_dma_map(r_xprt, rb))
915 static int rpcrdma_reqs_setup(struct rpcrdma_xprt *r_xprt)
917 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
922 rc = rpcrdma_req_setup(r_xprt, req);
948 static void rpcrdma_reqs_reset(struct rpcrdma_xprt *r_xprt)
950 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
961 struct rpcrdma_rep *rpcrdma_rep_create(struct rpcrdma_xprt *r_xprt,
970 rep->rr_rdmabuf = rpcrdma_regbuf_alloc(r_xprt->rx_ep->re_inline_recv,
978 rep->rr_rxprt = r_xprt;
984 list_add(&rep->rr_all, &r_xprt->rx_buf.rb_all_reps);
1020 static void rpcrdma_reps_unmap(struct rpcrdma_xprt *r_xprt)
1022 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
1041 * @r_xprt: transport instance to (re)initialize
1045 int rpcrdma_buffer_create(struct rpcrdma_xprt *r_xprt)
1047 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
1061 for (i = 0; i < r_xprt->rx_xprt.max_reqs; i++) {
1064 req = rpcrdma_req_create(r_xprt, RPCRDMA_V1_DEF_INLINE_SIZE * 2,
1110 * @r_xprt: controlling transport instance
1115 static void rpcrdma_mrs_destroy(struct rpcrdma_xprt *r_xprt)
1117 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
1162 * @r_xprt: controlling transport
1168 rpcrdma_mr_get(struct rpcrdma_xprt *r_xprt)
1170 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
1186 struct rpcrdma_xprt *r_xprt = mr->mr_xprt;
1190 ib_dma_unmap_sg(r_xprt->rx_ep->re_id->device,
1312 * @r_xprt: controlling transport instance
1315 * Returns true if the buffer is now DMA mapped to @r_xprt's device
1317 bool __rpcrdma_regbuf_dma_map(struct rpcrdma_xprt *r_xprt,
1320 struct ib_device *device = r_xprt->rx_ep->re_id->device;
1333 rb->rg_iov.lkey = r_xprt->rx_ep->re_pd->local_dma_lkey;
1360 * @r_xprt: controlling transport instance
1366 int rpcrdma_post_sends(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req)
1369 struct rpcrdma_ep *ep = r_xprt->rx_ep;
1381 rc = frwr_send(r_xprt, req);
1389 * @r_xprt: controlling transport instance
1394 void rpcrdma_post_recvs(struct rpcrdma_xprt *r_xprt, int needed, bool temp)
1396 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
1397 struct rpcrdma_ep *ep = r_xprt->rx_ep;
1420 rep = rpcrdma_rep_create(r_xprt, temp);
1423 if (!rpcrdma_regbuf_dma_map(r_xprt, rep->rr_rdmabuf)) {
1440 trace_xprtrdma_post_recvs(r_xprt, count, rc);