Lines Matching refs:ctxt

80  * ctxt, the Send WR is posted, and sendto returns.
135 struct svc_rdma_send_ctxt *ctxt;
141 size = sizeof(*ctxt);
143 ctxt = kmalloc(size, GFP_KERNEL);
144 if (!ctxt)
154 svc_rdma_send_cid_init(rdma, &ctxt->sc_cid);
156 ctxt->sc_send_wr.next = NULL;
157 ctxt->sc_send_wr.wr_cqe = &ctxt->sc_cqe;
158 ctxt->sc_send_wr.sg_list = ctxt->sc_sges;
159 ctxt->sc_send_wr.send_flags = IB_SEND_SIGNALED;
160 ctxt->sc_cqe.done = svc_rdma_wc_send;
161 ctxt->sc_xprt_buf = buffer;
162 xdr_buf_init(&ctxt->sc_hdrbuf, ctxt->sc_xprt_buf,
164 ctxt->sc_sges[0].addr = addr;
167 ctxt->sc_sges[i].lkey = rdma->sc_pd->local_dma_lkey;
168 return ctxt;
173 kfree(ctxt);
185 struct svc_rdma_send_ctxt *ctxt;
187 while ((ctxt = svc_rdma_next_send_ctxt(&rdma->sc_send_ctxts))) {
188 list_del(&ctxt->sc_list);
190 ctxt->sc_sges[0].addr,
193 kfree(ctxt->sc_xprt_buf);
194 kfree(ctxt);
207 struct svc_rdma_send_ctxt *ctxt;
210 ctxt = svc_rdma_next_send_ctxt(&rdma->sc_send_ctxts);
211 if (!ctxt)
213 list_del(&ctxt->sc_list);
217 rpcrdma_set_xdrlen(&ctxt->sc_hdrbuf, 0);
218 xdr_init_encode(&ctxt->sc_stream, &ctxt->sc_hdrbuf,
219 ctxt->sc_xprt_buf, NULL);
221 ctxt->sc_send_wr.num_sge = 0;
222 ctxt->sc_cur_sge_no = 0;
223 ctxt->sc_page_count = 0;
224 return ctxt;
228 ctxt = svc_rdma_send_ctxt_alloc(rdma);
229 if (!ctxt)
237 * @ctxt: object to return to the free list
242 struct svc_rdma_send_ctxt *ctxt)
248 * remains mapped until @ctxt is destroyed.
250 for (i = 1; i < ctxt->sc_send_wr.num_sge; i++) {
252 ctxt->sc_sges[i].addr,
253 ctxt->sc_sges[i].length,
256 ctxt->sc_sges[i].addr,
257 ctxt->sc_sges[i].length);
260 for (i = 0; i < ctxt->sc_page_count; ++i)
261 put_page(ctxt->sc_pages[i]);
264 list_add(&ctxt->sc_list, &rdma->sc_send_ctxts);
280 struct svc_rdma_send_ctxt *ctxt =
283 trace_svcrdma_wc_send(wc, &ctxt->sc_cid);
288 svc_rdma_send_ctxt_put(rdma, ctxt);
299 * @ctxt: send ctxt with a Send WR ready to post
304 int svc_rdma_send(struct svcxprt_rdma *rdma, struct svc_rdma_send_ctxt *ctxt)
306 struct ib_send_wr *wr = &ctxt->sc_send_wr;
331 trace_svcrdma_post_send(ctxt);
510 struct svc_rdma_send_ctxt *ctxt,
523 ctxt->sc_sges[ctxt->sc_cur_sge_no].addr = dma_addr;
524 ctxt->sc_sges[ctxt->sc_cur_sge_no].length = len;
525 ctxt->sc_send_wr.num_sge++;
536 struct svc_rdma_send_ctxt *ctxt,
540 return svc_rdma_dma_map_page(rdma, ctxt, virt_to_page(base),
663 * Load the xdr_buf into the ctxt's sge array, and DMA map each
751 * svc_rdma_sendto returns. Transfer pages under I/O to the ctxt
755 struct svc_rdma_send_ctxt *ctxt)
759 ctxt->sc_page_count += pages;
761 ctxt->sc_pages[i] = rqstp->rq_respages[i];