Lines Matching defs:r_xprt

66 static int rpcrdma_sendctxs_create(struct rpcrdma_xprt *r_xprt);
67 static void rpcrdma_sendctxs_destroy(struct rpcrdma_xprt *r_xprt);
68 static void rpcrdma_sendctx_put_locked(struct rpcrdma_xprt *r_xprt,
70 static int rpcrdma_reqs_setup(struct rpcrdma_xprt *r_xprt);
71 static void rpcrdma_reqs_reset(struct rpcrdma_xprt *r_xprt);
73 static void rpcrdma_reps_unmap(struct rpcrdma_xprt *r_xprt);
74 static void rpcrdma_mrs_create(struct rpcrdma_xprt *r_xprt);
75 static void rpcrdma_mrs_destroy(struct rpcrdma_xprt *r_xprt);
87 static void rpcrdma_xprt_drain(struct rpcrdma_xprt *r_xprt)
89 struct rpcrdma_ep *ep = r_xprt->rx_ep;
123 * @r_xprt: transport to disconnect
128 void rpcrdma_flush_disconnect(struct rpcrdma_xprt *r_xprt, struct ib_wc *wc)
131 rpcrdma_force_disconnect(r_xprt->rx_ep);
145 struct rpcrdma_xprt *r_xprt = cq->cq_context;
149 rpcrdma_sendctx_put_locked(r_xprt, sc);
150 rpcrdma_flush_disconnect(r_xprt, wc);
164 struct rpcrdma_xprt *r_xprt = cq->cq_context;
168 --r_xprt->rx_ep->re_receive_count;
185 rpcrdma_flush_disconnect(r_xprt, wc);
186 rpcrdma_rep_put(&r_xprt->rx_buf, rep);
283 static struct rdma_cm_id *rpcrdma_create_id(struct rpcrdma_xprt *r_xprt,
287 struct rpc_xprt *xprt = &r_xprt->rx_xprt;
367 static int rpcrdma_ep_create(struct rpcrdma_xprt *r_xprt)
378 ep->re_xprt = &r_xprt->rx_xprt;
381 id = rpcrdma_create_id(r_xprt, ep);
391 ep->re_max_requests = r_xprt->rx_xprt.max_reqs;
398 r_xprt->rx_buf.rb_max_requests = cpu_to_be32(ep->re_max_requests);
410 ep->re_attr.send_cq = ib_alloc_cq_any(device, r_xprt,
419 ep->re_attr.recv_cq = ib_alloc_cq_any(device, r_xprt,
471 r_xprt->rx_ep = ep;
482 * @r_xprt: controlling transport instance
486 int rpcrdma_xprt_connect(struct rpcrdma_xprt *r_xprt)
488 struct rpc_xprt *xprt = &r_xprt->rx_xprt;
492 rc = rpcrdma_ep_create(r_xprt);
495 ep = r_xprt->rx_ep;
498 rpcrdma_reset_cwnd(r_xprt);
504 rpcrdma_post_recvs(r_xprt, 1, true);
519 rc = rpcrdma_sendctxs_create(r_xprt);
525 rc = rpcrdma_reqs_setup(r_xprt);
530 rpcrdma_mrs_create(r_xprt);
531 frwr_wp_create(r_xprt);
534 trace_xprtrdma_connect(r_xprt, rc);
540 * @r_xprt: controlling transport instance
545 * On return, @r_xprt is completely divested of all hardware
548 void rpcrdma_xprt_disconnect(struct rpcrdma_xprt *r_xprt)
550 struct rpcrdma_ep *ep = r_xprt->rx_ep;
559 trace_xprtrdma_disconnect(r_xprt, rc);
561 rpcrdma_xprt_drain(r_xprt);
562 rpcrdma_reps_unmap(r_xprt);
563 rpcrdma_reqs_reset(r_xprt);
564 rpcrdma_mrs_destroy(r_xprt);
565 rpcrdma_sendctxs_destroy(r_xprt);
570 r_xprt->rx_ep = NULL;
590 static void rpcrdma_sendctxs_destroy(struct rpcrdma_xprt *r_xprt)
592 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
619 static int rpcrdma_sendctxs_create(struct rpcrdma_xprt *r_xprt)
621 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
630 i = r_xprt->rx_ep->re_max_requests + RPCRDMA_MAX_BC_REQUESTS;
637 sc = rpcrdma_sendctx_create(r_xprt->rx_ep);
661 * @r_xprt: controlling transport instance
672 struct rpcrdma_sendctx *rpcrdma_sendctx_get_locked(struct rpcrdma_xprt *r_xprt)
674 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
698 xprt_wait_for_buffer_space(&r_xprt->rx_xprt);
699 r_xprt->rx_stats.empty_sendctx_q++;
705 * @r_xprt: controlling transport instance
713 static void rpcrdma_sendctx_put_locked(struct rpcrdma_xprt *r_xprt,
716 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
734 xprt_write_space(&r_xprt->rx_xprt);
738 rpcrdma_mrs_create(struct rpcrdma_xprt *r_xprt)
740 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
741 struct rpcrdma_ep *ep = r_xprt->rx_ep;
755 rc = frwr_mr_init(r_xprt, mr);
767 r_xprt->rx_stats.mrs_allocated += count;
768 trace_xprtrdma_createmrs(r_xprt, count);
776 struct rpcrdma_xprt *r_xprt = container_of(buf, struct rpcrdma_xprt,
779 rpcrdma_mrs_create(r_xprt);
780 xprt_write_space(&r_xprt->rx_xprt);
785 * @r_xprt: controlling transport instance
788 void rpcrdma_mrs_refresh(struct rpcrdma_xprt *r_xprt)
790 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
791 struct rpcrdma_ep *ep = r_xprt->rx_ep;
803 * @r_xprt: controlling r_xprt
808 struct rpcrdma_req *rpcrdma_req_create(struct rpcrdma_xprt *r_xprt,
811 struct rpcrdma_buffer *buffer = &r_xprt->rx_buf;
843 * @r_xprt: controlling transport instance
848 int rpcrdma_req_setup(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req)
855 r_xprt->rx_ep->re_max_rdma_segs * rpcrdma_readchunk_maxsz;
862 if (!__rpcrdma_regbuf_dma_map(r_xprt, rb))
880 static int rpcrdma_reqs_setup(struct rpcrdma_xprt *r_xprt)
882 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
887 rc = rpcrdma_req_setup(r_xprt, req);
913 static void rpcrdma_reqs_reset(struct rpcrdma_xprt *r_xprt)
915 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
923 struct rpcrdma_rep *rpcrdma_rep_create(struct rpcrdma_xprt *r_xprt,
926 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
933 rep->rr_rdmabuf = rpcrdma_regbuf_alloc(r_xprt->rx_ep->re_inline_recv,
939 atomic_inc_return(&r_xprt->rx_ep->re_completion_ids);
944 rep->rr_rxprt = r_xprt;
1005 static void rpcrdma_reps_unmap(struct rpcrdma_xprt *r_xprt)
1007 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
1036 * @r_xprt: transport instance to (re)initialize
1040 int rpcrdma_buffer_create(struct rpcrdma_xprt *r_xprt)
1042 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
1056 for (i = 0; i < r_xprt->rx_xprt.max_reqs; i++) {
1059 req = rpcrdma_req_create(r_xprt,
1105 * @r_xprt: controlling transport instance
1110 static void rpcrdma_mrs_destroy(struct rpcrdma_xprt *r_xprt)
1112 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
1157 * @r_xprt: controlling transport
1163 rpcrdma_mr_get(struct rpcrdma_xprt *r_xprt)
1165 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
1276 * @r_xprt: controlling transport instance
1279 * Returns true if the buffer is now DMA mapped to @r_xprt's device
1281 bool __rpcrdma_regbuf_dma_map(struct rpcrdma_xprt *r_xprt,
1284 struct ib_device *device = r_xprt->rx_ep->re_id->device;
1297 rb->rg_iov.lkey = r_xprt->rx_ep->re_pd->local_dma_lkey;
1324 * @r_xprt: controlling transport instance
1329 void rpcrdma_post_recvs(struct rpcrdma_xprt *r_xprt, int needed, bool temp)
1331 struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
1332 struct rpcrdma_ep *ep = r_xprt->rx_ep;
1358 rep = rpcrdma_rep_create(r_xprt, temp);
1361 if (!rpcrdma_regbuf_dma_map(r_xprt, rep->rr_rdmabuf)) {
1379 trace_xprtrdma_post_recvs_err(r_xprt, rc);
1393 trace_xprtrdma_post_recvs(r_xprt, count);