Lines Matching defs:rdma_req

129 reset_nvmf_rdma_request(struct spdk_nvmf_rdma_request *rdma_req)
133 rdma_req->req.length = 0;
134 rdma_req->req.data_from_pool = false;
135 rdma_req->data.wr.num_sge = 0;
136 rdma_req->data.wr.wr.rdma.remote_addr = 0;
137 rdma_req->data.wr.wr.rdma.rkey = 0;
138 rdma_req->offset = 0;
139 memset(&rdma_req->req.dif, 0, sizeof(rdma_req->req.dif));
142 rdma_req->req.iov[i].iov_base = 0;
143 rdma_req->req.iov[i].iov_len = 0;
144 rdma_req->data.wr.sg_list[i].addr = 0;
145 rdma_req->data.wr.sg_list[i].length = 0;
146 rdma_req->data.wr.sg_list[i].lkey = 0;
148 rdma_req->req.iovcnt = 0;
149 if (rdma_req->req.stripped_data) {
150 free(rdma_req->req.stripped_data);
151 rdma_req->req.stripped_data = NULL;
161 struct spdk_nvmf_rdma_request rdma_req = {};
181 rdma_req.recv = &recv;
182 rdma_req.req.cmd = &cmd;
183 rdma_req.req.rsp = &cpl;
184 rdma_req.data.wr.sg_list = rdma_req.data.sgl;
185 rdma_req.req.qpair = &rqpair.qpair;
186 rdma_req.req.xfer = SPDK_NVME_DATA_CONTROLLER_TO_HOST;
195 rdma_req.recv->buf = (void *)0xDDDD;
203 reset_nvmf_rdma_request(&rdma_req);
207 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
209 CU_ASSERT(rdma_req.req.data_from_pool == true);
210 CU_ASSERT(rdma_req.req.length == rtransport.transport.opts.io_unit_size / 2);
211 CU_ASSERT((uint64_t)rdma_req.req.iovcnt == 1);
212 CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
213 CU_ASSERT(rdma_req.data.wr.num_sge == 1);
214 CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
215 CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
216 CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
217 CU_ASSERT(rdma_req.data.wr.sg_list[0].addr == 0x2000);
218 CU_ASSERT(rdma_req.data.wr.sg_list[0].length == rtransport.transport.opts.io_unit_size / 2);
219 CU_ASSERT(rdma_req.data.wr.sg_list[0].lkey == RDMA_UT_LKEY);
222 reset_nvmf_rdma_request(&rdma_req);
224 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
227 CU_ASSERT(rdma_req.req.data_from_pool == true);
228 CU_ASSERT(rdma_req.req.length == rtransport.transport.opts.io_unit_size * RDMA_UT_UNITS_IN_MAX_IO);
229 CU_ASSERT(rdma_req.data.wr.num_sge == RDMA_UT_UNITS_IN_MAX_IO);
230 CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
231 CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
233 CU_ASSERT((uint64_t)rdma_req.req.iov[i].iov_base == 0x2000);
234 CU_ASSERT(rdma_req.data.wr.sg_list[i].addr == 0x2000);
235 CU_ASSERT(rdma_req.data.wr.sg_list[i].length == rtransport.transport.opts.io_unit_size);
236 CU_ASSERT(rdma_req.data.wr.sg_list[i].lkey == RDMA_UT_LKEY);
240 reset_nvmf_rdma_request(&rdma_req);
242 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
248 reset_nvmf_rdma_request(&rdma_req);
250 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
253 CU_ASSERT(rdma_req.req.data_from_pool == false);
254 CU_ASSERT(rdma_req.req.iovcnt == 0);
255 CU_ASSERT(rdma_req.data.wr.num_sge == 0);
256 CU_ASSERT(rdma_req.req.iov[0].iov_base == NULL);
257 CU_ASSERT(rdma_req.data.wr.sg_list[0].addr == 0);
258 CU_ASSERT(rdma_req.data.wr.sg_list[0].length == 0);
259 CU_ASSERT(rdma_req.data.wr.sg_list[0].lkey == 0);
261 rdma_req.recv->buf = (void *)0xDDDD;
267 reset_nvmf_rdma_request(&rdma_req);
270 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
273 CU_ASSERT(rdma_req.req.iovcnt == 1);
274 CU_ASSERT(rdma_req.req.iov[0].iov_base == (void *)0xDDDD);
275 CU_ASSERT(rdma_req.req.length == rtransport.transport.opts.in_capsule_data_size);
276 CU_ASSERT(rdma_req.req.data_from_pool == false);
279 reset_nvmf_rdma_request(&rdma_req);
282 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
287 reset_nvmf_rdma_request(&rdma_req);
290 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
298 rdma_req.recv->buf = (void *)&sgl_desc;
303 reset_nvmf_rdma_request(&rdma_req);
313 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
316 CU_ASSERT(rdma_req.req.data_from_pool == true);
317 CU_ASSERT(rdma_req.req.length == rtransport.transport.opts.io_unit_size * 2);
318 CU_ASSERT(rdma_req.data.wr.num_sge == 1);
319 CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0x44);
320 CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0x4000);
321 CU_ASSERT(rdma_req.data.wr.next == &data.wr);
325 CU_ASSERT(data.wr.next == &rdma_req.rsp.wr);
328 reset_nvmf_rdma_request(&rdma_req);
338 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
341 CU_ASSERT(rdma_req.req.data_from_pool == true);
342 CU_ASSERT(rdma_req.req.length == rtransport.transport.opts.io_unit_size * 16);
343 CU_ASSERT(rdma_req.req.iovcnt == 16);
344 CU_ASSERT(rdma_req.data.wr.num_sge == 8);
345 CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0x44);
346 CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0x4000);
347 CU_ASSERT(rdma_req.data.wr.next == &data.wr);
351 CU_ASSERT(data.wr.next == &rdma_req.rsp.wr);
354 reset_nvmf_rdma_request(&rdma_req);
368 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
371 CU_ASSERT(rdma_req.req.data_from_pool == true);
372 CU_ASSERT(rdma_req.req.length == rtransport.transport.opts.io_unit_size * 16);
373 CU_ASSERT(rdma_req.req.iovcnt == 16);
374 CU_ASSERT(rdma_req.data.wr.num_sge == 16);
376 CU_ASSERT(rdma_req.data.sgl[i].length == rtransport.transport.opts.io_unit_size);
378 CU_ASSERT(rdma_req.data.sgl[15].length == rtransport.transport.opts.io_unit_size / 2);
379 CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0x44);
380 CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0x4000);
381 CU_ASSERT(rdma_req.data.wr.next == &data.wr);
387 CU_ASSERT(data.wr.next == &rdma_req.rsp.wr);
391 reset_nvmf_rdma_request(&rdma_req);
399 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
402 CU_ASSERT(rdma_req.req.data_from_pool == true);
403 CU_ASSERT(rdma_req.req.length == rtransport.transport.opts.io_unit_size);
404 CU_ASSERT(rdma_req.req.iovcnt == 1);
406 CU_ASSERT(rdma_req.data.sgl[0].length == sgl_length);
409 CU_ASSERT(rdma_req.data.sgl[0].addr == (uint64_t)&data);
410 CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0x44);
411 CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0x4000);
412 CU_ASSERT(rdma_req.data.wr.num_sge == 1);
413 CU_ASSERT(rdma_req.data.wr.next == &data.wr);
424 reset_nvmf_rdma_request(&rdma_req);
460 struct spdk_nvmf_rdma_request *rdma_req;
463 rdma_req = calloc(1, sizeof(*rdma_req));
464 rdma_req->recv = rdma_recv;
465 rdma_req->req.qpair = &rqpair->qpair;
466 rdma_req->state = RDMA_REQUEST_STATE_NEW;
467 rdma_req->data.wr.wr_id = (uintptr_t)&rdma_req->data_wr;
468 rdma_req->data.wr.sg_list = rdma_req->data.sgl;
470 rdma_req->rsp.sgl[0].addr = (uintptr_t)cpl;
471 rdma_req->req.rsp = cpl;
473 return rdma_req;
477 free_req(struct spdk_nvmf_rdma_request *rdma_req)
479 free((void *)rdma_req->rsp.sgl[0].addr);
480 free(rdma_req);
526 struct spdk_nvmf_rdma_request *rdma_req;
548 rdma_req = create_req(&rqpair, rdma_recv);
551 progress = nvmf_rdma_request_process(&rtransport, rdma_req);
553 CU_ASSERT(rdma_req->state == RDMA_REQUEST_STATE_EXECUTING);
554 CU_ASSERT(rdma_req->req.xfer == SPDK_NVME_DATA_CONTROLLER_TO_HOST);
556 rdma_req->state = RDMA_REQUEST_STATE_EXECUTED;
557 progress = nvmf_rdma_request_process(&rtransport, rdma_req);
559 CU_ASSERT(rdma_req->state == RDMA_REQUEST_STATE_TRANSFERRING_CONTROLLER_TO_HOST);
560 CU_ASSERT(rdma_req->recv == NULL);
562 rdma_req->state = RDMA_REQUEST_STATE_COMPLETED;
563 progress = nvmf_rdma_request_process(&rtransport, rdma_req);
565 CU_ASSERT(rdma_req->state == RDMA_REQUEST_STATE_FREE);
568 free_req(rdma_req);
574 rdma_req = create_req(&rqpair, rdma_recv);
577 progress = nvmf_rdma_request_process(&rtransport, rdma_req);
579 CU_ASSERT(rdma_req->state == RDMA_REQUEST_STATE_TRANSFERRING_HOST_TO_CONTROLLER);
580 CU_ASSERT(rdma_req->req.xfer == SPDK_NVME_DATA_HOST_TO_CONTROLLER);
583 rdma_req->state = RDMA_REQUEST_STATE_READY_TO_EXECUTE;
584 progress = nvmf_rdma_request_process(&rtransport, rdma_req);
586 CU_ASSERT(rdma_req->state == RDMA_REQUEST_STATE_EXECUTING);
588 rdma_req->state = RDMA_REQUEST_STATE_EXECUTED;
589 progress = nvmf_rdma_request_process(&rtransport, rdma_req);
591 CU_ASSERT(rdma_req->state == RDMA_REQUEST_STATE_COMPLETING);
592 CU_ASSERT(rdma_req->recv == NULL);
594 rdma_req->state = RDMA_REQUEST_STATE_COMPLETED;
595 progress = nvmf_rdma_request_process(&rtransport, rdma_req);
597 CU_ASSERT(rdma_req->state == RDMA_REQUEST_STATE_FREE);
600 free_req(rdma_req);
696 rdma_req = create_req(&rqpair, rdma_recv);
699 progress = nvmf_rdma_request_process(&rtransport, rdma_req);
701 CU_ASSERT(rdma_req->state == RDMA_REQUEST_STATE_TRANSFERRING_HOST_TO_CONTROLLER);
702 CU_ASSERT(rdma_req->req.xfer == SPDK_NVME_DATA_HOST_TO_CONTROLLER);
705 rdma_req->state = RDMA_REQUEST_STATE_READY_TO_EXECUTE;
706 progress = nvmf_rdma_request_process(&rtransport, rdma_req);
708 CU_ASSERT(rdma_req->state == RDMA_REQUEST_STATE_EXECUTING);
710 rdma_req->state = RDMA_REQUEST_STATE_EXECUTED;
713 progress = nvmf_rdma_request_process(&rtransport, rdma_req);
715 CU_ASSERT(rdma_req->state == RDMA_REQUEST_STATE_READY_TO_COMPLETE_PENDING);
716 CU_ASSERT(rdma_req == STAILQ_FIRST(&rqpair.pending_rdma_send_queue));
719 progress = nvmf_rdma_request_process(&rtransport, rdma_req);
721 CU_ASSERT(rdma_req->state == RDMA_REQUEST_STATE_READY_TO_COMPLETE_PENDING);
722 CU_ASSERT(rdma_req == STAILQ_FIRST(&rqpair.pending_rdma_send_queue));
726 progress = nvmf_rdma_request_process(&rtransport, rdma_req);
729 CU_ASSERT(rdma_req->state == RDMA_REQUEST_STATE_COMPLETING);
730 CU_ASSERT(rdma_req->recv == NULL);
732 rdma_req->state = RDMA_REQUEST_STATE_COMPLETED;
733 progress = nvmf_rdma_request_process(&rtransport, rdma_req);
735 CU_ASSERT(rdma_req->state == RDMA_REQUEST_STATE_FREE);
738 free_req(rdma_req);
833 struct spdk_nvmf_rdma_request rdma_req = {};
861 rdma_req.recv = &recv;
862 rdma_req.req.cmd = &cmd;
863 rdma_req.req.rsp = &cpl;
864 rdma_req.data.wr.sg_list = rdma_req.data.sgl;
865 rdma_req.req.qpair = &rqpair.qpair;
866 rdma_req.req.xfer = SPDK_NVME_DATA_CONTROLLER_TO_HOST;
876 rdma_req.recv->buf = (void *)0xDDDD;
884 reset_nvmf_rdma_request(&rdma_req);
887 spdk_dif_ctx_init(&rdma_req.req.dif.dif_ctx, data_bs + md_size, md_size, true, false,
890 rdma_req.req.dif_enabled = true;
892 rdma_req.req.qpair->transport = &rtransport.transport;
895 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
898 CU_ASSERT(rdma_req.req.data_from_pool == true);
899 CU_ASSERT(rdma_req.req.length == data_bs * 4);
900 CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
901 CU_ASSERT(rdma_req.req.dif.elba_length == (data_bs + md_size) * 4);
902 CU_ASSERT(rdma_req.req.iovcnt == 1);
903 CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
904 CU_ASSERT(rdma_req.data.wr.num_sge == 1);
905 CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
906 CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
907 CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
909 CU_ASSERT(rdma_req.data.wr.sg_list[0].addr == 0x2000);
910 CU_ASSERT(rdma_req.data.wr.sg_list[0].length == rdma_req.req.length);
911 CU_ASSERT(rdma_req.data.wr.sg_list[0].lkey == RDMA_UT_LKEY);
916 reset_nvmf_rdma_request(&rdma_req);
917 spdk_dif_ctx_init(&rdma_req.req.dif.dif_ctx, data_bs + md_size, md_size, true, false,
920 rdma_req.req.dif_enabled = true;
924 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
927 CU_ASSERT(rdma_req.req.data_from_pool == true);
928 CU_ASSERT(rdma_req.req.length == data_bs * 4);
929 CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
930 CU_ASSERT(rdma_req.req.dif.elba_length == (data_bs + md_size) * 4);
931 CU_ASSERT(rdma_req.req.iovcnt == 2);
932 CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
933 CU_ASSERT(rdma_req.data.wr.num_sge == 5);
934 CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
935 CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
936 CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
939 CU_ASSERT(rdma_req.data.wr.sg_list[i].addr == 0x2000 + i * (data_bs + md_size));
940 CU_ASSERT(rdma_req.data.wr.sg_list[i].length == data_bs);
941 CU_ASSERT(rdma_req.data.wr.sg_list[i].lkey == RDMA_UT_LKEY);
943 CU_ASSERT(rdma_req.data.wr.sg_list[3].addr == 0x2000 + 3 * (data_bs + md_size));
944 CU_ASSERT(rdma_req.data.wr.sg_list[3].length == 488);
945 CU_ASSERT(rdma_req.data.wr.sg_list[3].lkey == RDMA_UT_LKEY);
948 CU_ASSERT(rdma_req.data.wr.sg_list[4].addr == 0x2000);
949 CU_ASSERT(rdma_req.data.wr.sg_list[4].length == 24);
950 CU_ASSERT(rdma_req.data.wr.sg_list[4].lkey == RDMA_UT_LKEY);
954 reset_nvmf_rdma_request(&rdma_req);
955 spdk_dif_ctx_init(&rdma_req.req.dif.dif_ctx, data_bs + md_size, md_size, true, false,
958 rdma_req.req.dif_enabled = true;
962 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
965 CU_ASSERT(rdma_req.req.data_from_pool == true);
966 CU_ASSERT(rdma_req.req.length == data_bs);
967 CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
968 CU_ASSERT(rdma_req.req.dif.elba_length == data_bs + md_size);
969 CU_ASSERT(rdma_req.req.iovcnt == 2);
970 CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
971 CU_ASSERT(rdma_req.data.wr.num_sge == 1);
972 CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
973 CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
974 CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
976 CU_ASSERT(rdma_req.data.wr.sg_list[0].addr == 0x2000);
977 CU_ASSERT(rdma_req.data.wr.sg_list[0].length == data_bs);
978 CU_ASSERT(rdma_req.data.wr.sg_list[0].lkey == RDMA_UT_LKEY);
980 CU_ASSERT(rdma_req.req.iovcnt == 2);
981 CU_ASSERT(rdma_req.req.iov[0].iov_base == (void *)((unsigned long)0x2000));
982 CU_ASSERT(rdma_req.req.iov[0].iov_len == data_bs);
984 CU_ASSERT(rdma_req.req.iov[1].iov_base == (void *)((unsigned long)0x2000));
985 CU_ASSERT(rdma_req.req.iov[1].iov_len == md_size);
990 reset_nvmf_rdma_request(&rdma_req);
991 spdk_dif_ctx_init(&rdma_req.req.dif.dif_ctx, data_bs + md_size, md_size, true, false,
994 rdma_req.req.dif_enabled = true;
998 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
1001 CU_ASSERT(rdma_req.req.data_from_pool == true);
1002 CU_ASSERT(rdma_req.req.length == data_bs * 4);
1003 CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
1004 CU_ASSERT(rdma_req.req.dif.elba_length == (data_bs + md_size) * 4);
1005 CU_ASSERT(rdma_req.req.iovcnt == 1);
1006 CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
1007 CU_ASSERT(rdma_req.data.wr.num_sge == 1);
1008 CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
1009 CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
1010 CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
1012 CU_ASSERT(rdma_req.data.wr.sg_list[0].addr == 0x2000);
1013 CU_ASSERT(rdma_req.data.wr.sg_list[0].length == rdma_req.req.length);
1014 CU_ASSERT(rdma_req.data.wr.sg_list[0].lkey == RDMA_UT_LKEY);
1019 reset_nvmf_rdma_request(&rdma_req);
1020 spdk_dif_ctx_init(&rdma_req.req.dif.dif_ctx, data_bs + md_size, md_size, true, false,
1023 rdma_req.req.dif_enabled = true;
1027 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
1030 CU_ASSERT(rdma_req.req.data_from_pool == true);
1031 CU_ASSERT(rdma_req.req.length == data_bs * 4);
1032 CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
1033 CU_ASSERT(rdma_req.req.dif.elba_length == (data_bs + md_size) * 4);
1034 CU_ASSERT(rdma_req.req.iovcnt == 2);
1035 CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
1036 CU_ASSERT(rdma_req.data.wr.num_sge == 2);
1037 CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
1038 CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
1039 CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
1042 CU_ASSERT(rdma_req.data.wr.sg_list[i].addr == 0x2000);
1043 CU_ASSERT(rdma_req.data.wr.sg_list[i].length == data_bs * 2);
1049 reset_nvmf_rdma_request(&rdma_req);
1050 spdk_dif_ctx_init(&rdma_req.req.dif.dif_ctx, data_bs + md_size, md_size, true, false,
1053 rdma_req.req.dif_enabled = true;
1057 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
1060 CU_ASSERT(rdma_req.req.data_from_pool == true);
1061 CU_ASSERT(rdma_req.req.length == data_bs * 6);
1062 CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
1063 CU_ASSERT(rdma_req.req.dif.elba_length == (data_bs + md_size) * 6);
1064 CU_ASSERT(rdma_req.req.iovcnt == 2);
1065 CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
1066 CU_ASSERT(rdma_req.data.wr.num_sge == 7);
1067 CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
1068 CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
1069 CU_ASSERT((uint64_t)rdma_req.req.iov[0].iov_base == 0x2000);
1072 CU_ASSERT(rdma_req.data.wr.sg_list[i].addr == 0x2000 + i * (data_bs + md_size));
1073 CU_ASSERT(rdma_req.data.wr.sg_list[i].length == data_bs);
1074 CU_ASSERT(rdma_req.data.wr.sg_list[i].lkey == RDMA_UT_LKEY);
1076 CU_ASSERT(rdma_req.data.wr.sg_list[3].addr == 0x2000 + 3 * (data_bs + md_size));
1077 CU_ASSERT(rdma_req.data.wr.sg_list[3].length == 488);
1078 CU_ASSERT(rdma_req.data.wr.sg_list[3].lkey == RDMA_UT_LKEY);
1081 CU_ASSERT(rdma_req.data.wr.sg_list[4].addr == 0x2000);
1082 CU_ASSERT(rdma_req.data.wr.sg_list[4].length == 24);
1083 CU_ASSERT(rdma_req.data.wr.sg_list[4].lkey == RDMA_UT_LKEY);
1085 CU_ASSERT(rdma_req.data.wr.sg_list[5].addr == 0x2000 + 24 + md_size);
1086 CU_ASSERT(rdma_req.data.wr.sg_list[5].length == 512);
1087 CU_ASSERT(rdma_req.data.wr.sg_list[5].lkey == RDMA_UT_LKEY);
1089 CU_ASSERT(rdma_req.data.wr.sg_list[6].addr == 0x2000 + 24 + 512 + md_size * 2);
1090 CU_ASSERT(rdma_req.data.wr.sg_list[6].length == 512);
1091 CU_ASSERT(rdma_req.data.wr.sg_list[6].lkey == RDMA_UT_LKEY);
1097 reset_nvmf_rdma_request(&rdma_req);
1098 spdk_dif_ctx_init(&rdma_req.req.dif.dif_ctx, data_bs + md_size, md_size, true, false,
1101 rdma_req.req.dif_enabled = true;
1105 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
1108 CU_ASSERT(rdma_req.req.data_from_pool == true);
1109 CU_ASSERT(rdma_req.req.length == data_bs * 16);
1110 CU_ASSERT(rdma_req.req.iovcnt == 2);
1111 CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
1112 CU_ASSERT(rdma_req.req.dif.elba_length == (data_bs + md_size) * 16);
1113 CU_ASSERT(rdma_req.req.iov[0].iov_base == data2_buffer);
1114 CU_ASSERT(rdma_req.data.wr.num_sge == 16);
1115 CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
1116 CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
1119 CU_ASSERT(rdma_req.data.wr.sg_list[i].addr == (uintptr_t)data2_buffer + i * (data_bs + md_size));
1120 CU_ASSERT(rdma_req.data.wr.sg_list[i].length == data_bs);
1121 CU_ASSERT(rdma_req.data.wr.sg_list[i].lkey == RDMA_UT_LKEY);
1125 CU_ASSERT(rdma_req.data.wr.sg_list[i].addr == (uintptr_t)data2_buffer + i * (data_bs + md_size));
1126 CU_ASSERT(rdma_req.data.wr.sg_list[i].length == 392);
1127 CU_ASSERT(rdma_req.data.wr.sg_list[i].lkey == RDMA_UT_LKEY);
1130 CU_ASSERT(rdma_req.data.wr.next == (void *)&data2->wr);
1131 CU_ASSERT(rdma_req.data.wr.next->num_sge == 1);
1132 CU_ASSERT(rdma_req.data.wr.next->next == &rdma_req.rsp.wr);
1140 reset_nvmf_rdma_request(&rdma_req);
1141 spdk_dif_ctx_init(&rdma_req.req.dif.dif_ctx, data_bs + md_size, md_size, true, false,
1144 rdma_req.req.dif_enabled = true;
1148 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
1151 CU_ASSERT(rdma_req.req.data_from_pool == true);
1152 CU_ASSERT(rdma_req.req.length == data_bs * 2);
1153 CU_ASSERT(rdma_req.req.iovcnt == 3);
1154 CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
1155 CU_ASSERT(rdma_req.req.dif.elba_length == (data_bs + md_size) * 2);
1156 CU_ASSERT(rdma_req.req.iov[0].iov_base == (void *)0x2000);
1157 CU_ASSERT(rdma_req.data.wr.num_sge == 2);
1158 CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0xEEEE);
1159 CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0xFFFF);
1161 CU_ASSERT(rdma_req.data.wr.sg_list[0].addr == 0x2000);
1162 CU_ASSERT(rdma_req.data.wr.sg_list[0].length == 512);
1163 CU_ASSERT(rdma_req.data.wr.sg_list[0].lkey == RDMA_UT_LKEY);
1167 CU_ASSERT(rdma_req.data.wr.sg_list[1].addr == 0x2000 + 4);
1168 CU_ASSERT(rdma_req.data.wr.sg_list[1].length == 512);
1169 CU_ASSERT(rdma_req.data.wr.sg_list[1].lkey == RDMA_UT_LKEY);
1175 rdma_req.recv->buf = (void *)&sgl_desc;
1180 reset_nvmf_rdma_request(&rdma_req);
1181 spdk_dif_ctx_init(&rdma_req.req.dif.dif_ctx, data_bs + md_size, md_size, true, false,
1185 rdma_req.req.dif_enabled = true;
1197 rc = nvmf_rdma_request_parse_sgl(&rtransport, &device, &rdma_req);
1200 CU_ASSERT(rdma_req.req.data_from_pool == true);
1201 CU_ASSERT(rdma_req.req.length == data_bs * 4 * 2);
1202 CU_ASSERT(rdma_req.req.dif.orig_length == rdma_req.req.length);
1203 CU_ASSERT(rdma_req.req.dif.elba_length == (data_bs + md_size) * 4 * 2);
1204 CU_ASSERT(rdma_req.data.wr.num_sge == 1);
1205 CU_ASSERT(rdma_req.data.wr.sg_list[0].addr == (uintptr_t)(data_buffer));
1206 CU_ASSERT(rdma_req.data.wr.sg_list[0].length == data_bs * 4);
1208 CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0x44);
1209 CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0x4000);
1210 CU_ASSERT(rdma_req.data.wr.next == &data->wr);
1217 CU_ASSERT(data->wr.next == &rdma_req.rsp.wr);
1218 reset_nvmf_rdma_request(&rdma_req);
1243 struct spdk_nvmf_rdma_request rdma_req = {};
1256 next_request_data->wr.wr_id = (uint64_t)&rdma_req.data_wr;
1259 rdma_req.data.wr.next = &next_request_data->wr;
1260 rdma_req.data.wr.wr_id = (uint64_t)&rdma_req.data_wr;
1261 rdma_req.data.wr.num_sge = 2;
1262 rdma_req.transfer_wr = &rdma_req.data.wr;
1264 nvmf_rdma_request_free_data(&rdma_req, &rtransport);
1267 CU_ASSERT(rdma_req.data.wr.num_sge == 0);