Lines Matching refs:ctxt

120 	struct svc_rdma_send_ctxt *ctxt;  in svc_rdma_send_ctxt_alloc()  local
125 ctxt = kzalloc_node(struct_size(ctxt, sc_sges, rdma->sc_max_send_sges), in svc_rdma_send_ctxt_alloc()
127 if (!ctxt) in svc_rdma_send_ctxt_alloc()
137 svc_rdma_send_cid_init(rdma, &ctxt->sc_cid); in svc_rdma_send_ctxt_alloc()
139 ctxt->sc_rdma = rdma; in svc_rdma_send_ctxt_alloc()
140 ctxt->sc_send_wr.next = NULL; in svc_rdma_send_ctxt_alloc()
141 ctxt->sc_send_wr.wr_cqe = &ctxt->sc_cqe; in svc_rdma_send_ctxt_alloc()
142 ctxt->sc_send_wr.sg_list = ctxt->sc_sges; in svc_rdma_send_ctxt_alloc()
143 ctxt->sc_send_wr.send_flags = IB_SEND_SIGNALED; in svc_rdma_send_ctxt_alloc()
144 ctxt->sc_cqe.done = svc_rdma_wc_send; in svc_rdma_send_ctxt_alloc()
145 ctxt->sc_xprt_buf = buffer; in svc_rdma_send_ctxt_alloc()
146 xdr_buf_init(&ctxt->sc_hdrbuf, ctxt->sc_xprt_buf, in svc_rdma_send_ctxt_alloc()
148 ctxt->sc_sges[0].addr = addr; in svc_rdma_send_ctxt_alloc()
151 ctxt->sc_sges[i].lkey = rdma->sc_pd->local_dma_lkey; in svc_rdma_send_ctxt_alloc()
152 return ctxt; in svc_rdma_send_ctxt_alloc()
157 kfree(ctxt); in svc_rdma_send_ctxt_alloc()
169 struct svc_rdma_send_ctxt *ctxt; in svc_rdma_send_ctxts_destroy() local
173 ctxt = llist_entry(node, struct svc_rdma_send_ctxt, sc_node); in svc_rdma_send_ctxts_destroy()
175 ctxt->sc_sges[0].addr, in svc_rdma_send_ctxts_destroy()
178 kfree(ctxt->sc_xprt_buf); in svc_rdma_send_ctxts_destroy()
179 kfree(ctxt); in svc_rdma_send_ctxts_destroy()
192 struct svc_rdma_send_ctxt *ctxt; in svc_rdma_send_ctxt_get() local
201 ctxt = llist_entry(node, struct svc_rdma_send_ctxt, sc_node); in svc_rdma_send_ctxt_get()
204 rpcrdma_set_xdrlen(&ctxt->sc_hdrbuf, 0); in svc_rdma_send_ctxt_get()
205 xdr_init_encode(&ctxt->sc_stream, &ctxt->sc_hdrbuf, in svc_rdma_send_ctxt_get()
206 ctxt->sc_xprt_buf, NULL); in svc_rdma_send_ctxt_get()
208 svc_rdma_cc_init(rdma, &ctxt->sc_reply_info.wi_cc); in svc_rdma_send_ctxt_get()
209 ctxt->sc_send_wr.num_sge = 0; in svc_rdma_send_ctxt_get()
210 ctxt->sc_cur_sge_no = 0; in svc_rdma_send_ctxt_get()
211 ctxt->sc_page_count = 0; in svc_rdma_send_ctxt_get()
212 ctxt->sc_wr_chain = &ctxt->sc_send_wr; in svc_rdma_send_ctxt_get()
213 ctxt->sc_sqecount = 1; in svc_rdma_send_ctxt_get()
215 return ctxt; in svc_rdma_send_ctxt_get()
218 ctxt = svc_rdma_send_ctxt_alloc(rdma); in svc_rdma_send_ctxt_get()
219 if (!ctxt) in svc_rdma_send_ctxt_get()
225 struct svc_rdma_send_ctxt *ctxt) in svc_rdma_send_ctxt_release() argument
230 svc_rdma_reply_chunk_release(rdma, ctxt); in svc_rdma_send_ctxt_release()
232 if (ctxt->sc_page_count) in svc_rdma_send_ctxt_release()
233 release_pages(ctxt->sc_pages, ctxt->sc_page_count); in svc_rdma_send_ctxt_release()
238 for (i = 1; i < ctxt->sc_send_wr.num_sge; i++) { in svc_rdma_send_ctxt_release()
239 trace_svcrdma_dma_unmap_page(&ctxt->sc_cid, in svc_rdma_send_ctxt_release()
240 ctxt->sc_sges[i].addr, in svc_rdma_send_ctxt_release()
241 ctxt->sc_sges[i].length); in svc_rdma_send_ctxt_release()
243 ctxt->sc_sges[i].addr, in svc_rdma_send_ctxt_release()
244 ctxt->sc_sges[i].length, in svc_rdma_send_ctxt_release()
248 llist_add(&ctxt->sc_node, &rdma->sc_send_ctxts); in svc_rdma_send_ctxt_release()
253 struct svc_rdma_send_ctxt *ctxt; in svc_rdma_send_ctxt_put_async() local
255 ctxt = container_of(work, struct svc_rdma_send_ctxt, sc_work); in svc_rdma_send_ctxt_put_async()
256 svc_rdma_send_ctxt_release(ctxt->sc_rdma, ctxt); in svc_rdma_send_ctxt_put_async()
267 struct svc_rdma_send_ctxt *ctxt) in svc_rdma_send_ctxt_put() argument
269 INIT_WORK(&ctxt->sc_work, svc_rdma_send_ctxt_put_async); in svc_rdma_send_ctxt_put()
270 queue_work(svcrdma_wq, &ctxt->sc_work); in svc_rdma_send_ctxt_put()
299 struct svc_rdma_send_ctxt *ctxt = in svc_rdma_wc_send() local
302 svc_rdma_wake_send_waiters(rdma, ctxt->sc_sqecount); in svc_rdma_wc_send()
307 trace_svcrdma_wc_send(&ctxt->sc_cid); in svc_rdma_wc_send()
308 svc_rdma_send_ctxt_put(rdma, ctxt); in svc_rdma_wc_send()
313 trace_svcrdma_wc_send_err(wc, &ctxt->sc_cid); in svc_rdma_wc_send()
315 trace_svcrdma_wc_send_flush(wc, &ctxt->sc_cid); in svc_rdma_wc_send()
316 svc_rdma_send_ctxt_put(rdma, ctxt); in svc_rdma_wc_send()
339 struct svc_rdma_send_ctxt *ctxt) in svc_rdma_post_send() argument
341 struct ib_send_wr *first_wr = ctxt->sc_wr_chain; in svc_rdma_post_send()
342 struct ib_send_wr *send_wr = &ctxt->sc_send_wr; in svc_rdma_post_send()
344 struct rpc_rdma_cid cid = ctxt->sc_cid; in svc_rdma_post_send()
345 int ret, sqecount = ctxt->sc_sqecount; in svc_rdma_post_send()
374 trace_svcrdma_post_send(ctxt); in svc_rdma_post_send()
567 struct svc_rdma_send_ctxt *ctxt = args->md_ctxt; in svc_rdma_page_dma_map() local
571 ++ctxt->sc_cur_sge_no; in svc_rdma_page_dma_map()
577 trace_svcrdma_dma_map_page(&ctxt->sc_cid, dma_addr, len); in svc_rdma_page_dma_map()
578 ctxt->sc_sges[ctxt->sc_cur_sge_no].addr = dma_addr; in svc_rdma_page_dma_map()
579 ctxt->sc_sges[ctxt->sc_cur_sge_no].length = len; in svc_rdma_page_dma_map()
580 ctxt->sc_send_wr.num_sge++; in svc_rdma_page_dma_map()
584 trace_svcrdma_dma_map_err(&ctxt->sc_cid, dma_addr, len); in svc_rdma_page_dma_map()
854 struct svc_rdma_send_ctxt *ctxt) in svc_rdma_save_io_pages() argument
858 ctxt->sc_page_count += pages; in svc_rdma_save_io_pages()
860 ctxt->sc_pages[i] = rqstp->rq_respages[i]; in svc_rdma_save_io_pages()