Lines Matching refs:request
255 static inline void *smbd_request_payload(struct smbd_request *request) in smbd_request_payload() argument
257 return (void *)request->packet; in smbd_request_payload()
269 struct smbd_request *request = in send_done() local
273 request, wc->status); in send_done()
278 smbd_disconnect_rdma_connection(request->info); in send_done()
281 for (i = 0; i < request->num_sge; i++) in send_done()
282 ib_dma_unmap_single(request->info->id->device, in send_done()
283 request->sge[i].addr, in send_done()
284 request->sge[i].length, in send_done()
287 if (request->has_payload) { in send_done()
288 if (atomic_dec_and_test(&request->info->send_payload_pending)) in send_done()
289 wake_up(&request->info->wait_send_payload_pending); in send_done()
291 if (atomic_dec_and_test(&request->info->send_pending)) in send_done()
292 wake_up(&request->info->wait_send_pending); in send_done()
295 mempool_free(request, request->info->request_mempool); in send_done()
711 struct smbd_request *request; in smbd_post_send_negotiate_req() local
714 request = mempool_alloc(info->request_mempool, GFP_KERNEL); in smbd_post_send_negotiate_req()
715 if (!request) in smbd_post_send_negotiate_req()
718 request->info = info; in smbd_post_send_negotiate_req()
720 packet = smbd_request_payload(request); in smbd_post_send_negotiate_req()
730 request->num_sge = 1; in smbd_post_send_negotiate_req()
731 request->sge[0].addr = ib_dma_map_single( in smbd_post_send_negotiate_req()
734 if (ib_dma_mapping_error(info->id->device, request->sge[0].addr)) { in smbd_post_send_negotiate_req()
739 request->sge[0].length = sizeof(*packet); in smbd_post_send_negotiate_req()
740 request->sge[0].lkey = info->pd->local_dma_lkey; in smbd_post_send_negotiate_req()
743 info->id->device, request->sge[0].addr, in smbd_post_send_negotiate_req()
744 request->sge[0].length, DMA_TO_DEVICE); in smbd_post_send_negotiate_req()
746 request->cqe.done = send_done; in smbd_post_send_negotiate_req()
749 send_wr.wr_cqe = &request->cqe; in smbd_post_send_negotiate_req()
750 send_wr.sg_list = request->sge; in smbd_post_send_negotiate_req()
751 send_wr.num_sge = request->num_sge; in smbd_post_send_negotiate_req()
756 request->sge[0].addr, in smbd_post_send_negotiate_req()
757 request->sge[0].length, request->sge[0].lkey); in smbd_post_send_negotiate_req()
759 request->has_payload = false; in smbd_post_send_negotiate_req()
768 ib_dma_unmap_single(info->id->device, request->sge[0].addr, in smbd_post_send_negotiate_req()
769 request->sge[0].length, DMA_TO_DEVICE); in smbd_post_send_negotiate_req()
774 mempool_free(request, info->request_mempool); in smbd_post_send_negotiate_req()
833 struct smbd_request *request; in smbd_create_header() local
851 request = mempool_alloc(info->request_mempool, GFP_KERNEL); in smbd_create_header()
852 if (!request) { in smbd_create_header()
857 request->info = info; in smbd_create_header()
860 packet = smbd_request_payload(request); in smbd_create_header()
893 request->num_sge = 1; in smbd_create_header()
894 request->sge[0].addr = ib_dma_map_single(info->id->device, in smbd_create_header()
898 if (ib_dma_mapping_error(info->id->device, request->sge[0].addr)) { in smbd_create_header()
899 mempool_free(request, info->request_mempool); in smbd_create_header()
904 request->sge[0].length = header_length; in smbd_create_header()
905 request->sge[0].lkey = info->pd->local_dma_lkey; in smbd_create_header()
907 *request_out = request; in smbd_create_header()
916 struct smbd_request *request) in smbd_destroy_header() argument
920 request->sge[0].addr, in smbd_destroy_header()
921 request->sge[0].length, in smbd_destroy_header()
923 mempool_free(request, info->request_mempool); in smbd_destroy_header()
929 struct smbd_request *request, bool has_payload) in smbd_post_send() argument
934 for (i = 0; i < request->num_sge; i++) { in smbd_post_send()
937 i, request->sge[i].addr, request->sge[i].length); in smbd_post_send()
940 request->sge[i].addr, in smbd_post_send()
941 request->sge[i].length, in smbd_post_send()
945 request->cqe.done = send_done; in smbd_post_send()
948 send_wr.wr_cqe = &request->cqe; in smbd_post_send()
949 send_wr.sg_list = request->sge; in smbd_post_send()
950 send_wr.num_sge = request->num_sge; in smbd_post_send()
955 request->has_payload = true; in smbd_post_send()
958 request->has_payload = false; in smbd_post_send()
987 struct smbd_request *request; in smbd_post_send_sgl() local
991 info, data_length, remaining_data_length, &request); in smbd_post_send_sgl()
997 request->sge[i+1].addr = in smbd_post_send_sgl()
1001 info->id->device, request->sge[i+1].addr)) { in smbd_post_send_sgl()
1003 request->sge[i+1].addr = 0; in smbd_post_send_sgl()
1006 request->sge[i+1].length = sg->length; in smbd_post_send_sgl()
1007 request->sge[i+1].lkey = info->pd->local_dma_lkey; in smbd_post_send_sgl()
1008 request->num_sge++; in smbd_post_send_sgl()
1011 rc = smbd_post_send(info, request, data_length); in smbd_post_send_sgl()
1016 for (i = 1; i < request->num_sge; i++) in smbd_post_send_sgl()
1017 if (request->sge[i].addr) in smbd_post_send_sgl()
1019 request->sge[i].addr, in smbd_post_send_sgl()
1020 request->sge[i].length, in smbd_post_send_sgl()
1022 smbd_destroy_header(info, request); in smbd_post_send_sgl()