Lines Matching defs:pdu

74 	      (struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pdu));
86 struct spdk_iscsi_pdu *pdu), 0);
365 struct spdk_iscsi_pdu *pdu;
379 pdu = iscsi_get_pdu(&conn);
380 SPDK_CU_ASSERT_FATAL(pdu != NULL);
382 scsi_req = (struct iscsi_bhs_scsi_req *)&pdu->bhs;
385 iscsi_task_set_pdu(&task, pdu);
398 iscsi_put_pdu(pdu);
406 pdu = TAILQ_FIRST(&g_write_pdu_list);
407 SPDK_CU_ASSERT_FATAL(pdu != NULL);
409 CU_ASSERT(pdu->bhs.opcode == ISCSI_OP_SCSI_DATAIN);
411 datah = (struct iscsi_bhs_data_in *)&pdu->bhs;
416 TAILQ_REMOVE(&g_write_pdu_list, pdu, tailq);
417 iscsi_put_pdu(pdu);
430 struct spdk_iscsi_pdu *pdu;
444 pdu = iscsi_get_pdu(&conn);
445 SPDK_CU_ASSERT_FATAL(pdu != NULL);
447 scsi_req = (struct iscsi_bhs_scsi_req *)&pdu->bhs;
450 iscsi_task_set_pdu(&task, pdu);
460 iscsi_put_pdu(pdu);
468 pdu = TAILQ_FIRST(&g_write_pdu_list);
469 SPDK_CU_ASSERT_FATAL(pdu != NULL);
471 CU_ASSERT(pdu->bhs.opcode == ISCSI_OP_SCSI_RSP);
473 resph = (struct iscsi_bhs_scsi_resp *)&pdu->bhs;
481 TAILQ_REMOVE(&g_write_pdu_list, pdu, tailq);
482 iscsi_put_pdu(pdu);
588 struct spdk_iscsi_pdu *pdu;
602 pdu = iscsi_get_pdu(&conn);
603 SPDK_CU_ASSERT_FATAL(pdu != NULL);
605 scsi_req = (struct iscsi_bhs_scsi_req *)&pdu->bhs;
608 iscsi_task_set_pdu(&task, pdu);
623 iscsi_put_pdu(pdu);
630 pdu = TAILQ_FIRST(&g_write_pdu_list);
631 SPDK_CU_ASSERT_FATAL(pdu != NULL);
633 CU_ASSERT(pdu->bhs.opcode == ISCSI_OP_SCSI_RSP);
635 resph = (struct iscsi_bhs_scsi_resp *)&pdu->bhs;
643 TAILQ_REMOVE(&g_write_pdu_list, pdu, tailq);
644 iscsi_put_pdu(pdu);
655 struct spdk_iscsi_pdu *pdu, *tmp;
669 pdu = iscsi_get_pdu(&conn);
670 SPDK_CU_ASSERT_FATAL(pdu != NULL);
672 pdu->data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH; /* 64K */
674 iscsi_task_set_pdu(&task, pdu);
706 pdu->data_segment_len + sess.MaxBurstLength * sess.MaxOutstandingR2T);
716 CU_ASSERT(buffer_offset == pdu->data_segment_len + sess.MaxBurstLength * count);
727 iscsi_put_pdu(pdu);
736 struct spdk_iscsi_pdu *pdu1, *pdu2, *pdu;
777 pdu = TAILQ_FIRST(&g_write_pdu_list);
778 TAILQ_REMOVE(&g_write_pdu_list, pdu, tailq);
779 iscsi_put_pdu(pdu);
792 struct spdk_iscsi_pdu *pdu1, *pdu2, *pdu3, *pdu4, *pdu5, *pdu;
902 pdu = TAILQ_FIRST(&g_write_pdu_list);
903 TAILQ_REMOVE(&g_write_pdu_list, pdu, tailq);
904 iscsi_put_pdu(pdu);
920 struct spdk_iscsi_pdu *pdu1, *pdu2, *pdu3, *pdu4, *pdu5, *pdu6, *pdu;
1077 pdu = TAILQ_FIRST(&g_write_pdu_list);
1078 TAILQ_REMOVE(&g_write_pdu_list, pdu, tailq);
1079 iscsi_put_pdu(pdu);
1096 struct spdk_iscsi_pdu pdu = {};
1105 DSET24(&pdu.bhs.data_segment_len, 512);
1108 pdu.data = data;
1110 pdu.bhs.total_ahs_len = 0;
1111 pdu.bhs.opcode = ISCSI_OP_SCSI;
1113 pdu.writev_offset = 0;
1114 rc = iscsi_build_iovs(&conn, iovs, 5, &pdu, &mapped_length);
1116 CU_ASSERT(iovs[0].iov_base == (void *)&pdu.bhs);
1118 CU_ASSERT(iovs[1].iov_base == (void *)pdu.header_digest);
1120 CU_ASSERT(iovs[2].iov_base == (void *)pdu.data);
1122 CU_ASSERT(iovs[3].iov_base == (void *)pdu.data_digest);
1126 pdu.writev_offset = ISCSI_BHS_LEN / 2;
1127 rc = iscsi_build_iovs(&conn, iovs, 5, &pdu, &mapped_length);
1129 CU_ASSERT(iovs[0].iov_base == (void *)((uint8_t *)&pdu.bhs + ISCSI_BHS_LEN / 2));
1131 CU_ASSERT(iovs[1].iov_base == (void *)pdu.header_digest);
1133 CU_ASSERT(iovs[2].iov_base == (void *)pdu.data);
1135 CU_ASSERT(iovs[3].iov_base == (void *)pdu.data_digest);
1139 pdu.writev_offset = ISCSI_BHS_LEN;
1140 rc = iscsi_build_iovs(&conn, iovs, 5, &pdu, &mapped_length);
1142 CU_ASSERT(iovs[0].iov_base == (void *)pdu.header_digest);
1144 CU_ASSERT(iovs[1].iov_base == (void *)pdu.data);
1146 CU_ASSERT(iovs[2].iov_base == (void *)pdu.data_digest);
1150 pdu.writev_offset = ISCSI_BHS_LEN + ISCSI_DIGEST_LEN / 2;
1151 rc = iscsi_build_iovs(&conn, iovs, 5, &pdu, &mapped_length);
1153 CU_ASSERT(iovs[0].iov_base == (void *)((uint8_t *)pdu.header_digest + ISCSI_DIGEST_LEN / 2));
1155 CU_ASSERT(iovs[1].iov_base == (void *)pdu.data);
1157 CU_ASSERT(iovs[2].iov_base == (void *)pdu.data_digest);
1161 pdu.writev_offset = ISCSI_BHS_LEN + ISCSI_DIGEST_LEN;
1162 rc = iscsi_build_iovs(&conn, iovs, 5, &pdu, &mapped_length);
1164 CU_ASSERT(iovs[0].iov_base == (void *)pdu.data);
1166 CU_ASSERT(iovs[1].iov_base == (void *)pdu.data_digest);
1170 pdu.writev_offset = ISCSI_BHS_LEN + ISCSI_DIGEST_LEN + 512;
1171 rc = iscsi_build_iovs(&conn, iovs, 5, &pdu, &mapped_length);
1173 CU_ASSERT(iovs[0].iov_base == (void *)pdu.data_digest);
1177 pdu.writev_offset = ISCSI_BHS_LEN + ISCSI_DIGEST_LEN + 512 + ISCSI_DIGEST_LEN / 2;
1178 rc = iscsi_build_iovs(&conn, iovs, 5, &pdu, &mapped_length);
1180 CU_ASSERT(iovs[0].iov_base == (void *)((uint8_t *)pdu.data_digest + ISCSI_DIGEST_LEN / 2));
1184 pdu.writev_offset = ISCSI_BHS_LEN + ISCSI_DIGEST_LEN + 512 + ISCSI_DIGEST_LEN;
1185 rc = iscsi_build_iovs(&conn, iovs, 5, &pdu, &mapped_length);
1189 pdu.writev_offset = 0;
1190 rc = iscsi_build_iovs(&conn, iovs, 1, &pdu, &mapped_length);
1192 CU_ASSERT(iovs[0].iov_base == (void *)&pdu.bhs);
1196 rc = iscsi_build_iovs(&conn, iovs, 2, &pdu, &mapped_length);
1198 CU_ASSERT(iovs[0].iov_base == (void *)&pdu.bhs);
1200 CU_ASSERT(iovs[1].iov_base == (void *)pdu.header_digest);
1204 rc = iscsi_build_iovs(&conn, iovs, 3, &pdu, &mapped_length);
1206 CU_ASSERT(iovs[0].iov_base == (void *)&pdu.bhs);
1208 CU_ASSERT(iovs[1].iov_base == (void *)pdu.header_digest);
1210 CU_ASSERT(iovs[2].iov_base == (void *)pdu.data);
1214 rc = iscsi_build_iovs(&conn, iovs, 4, &pdu, &mapped_length);
1216 CU_ASSERT(iovs[0].iov_base == (void *)&pdu.bhs);
1218 CU_ASSERT(iovs[1].iov_base == (void *)pdu.header_digest);
1220 CU_ASSERT(iovs[2].iov_base == (void *)pdu.data);
1222 CU_ASSERT(iovs[3].iov_base == (void *)pdu.data_digest);
1233 struct spdk_iscsi_pdu pdu = {};
1243 DSET24(&pdu.bhs.data_segment_len, 4096 * 2);
1246 pdu.data = data;
1247 pdu.data_buf_len = (4096 + 128) * 2;
1249 pdu.bhs.total_ahs_len = 0;
1250 pdu.bhs.opcode = ISCSI_OP_SCSI;
1254 rc = spdk_dif_ctx_init(&pdu.dif_ctx, 4096 + 128, 128, true, false, SPDK_DIF_TYPE1,
1258 pdu.dif_insert_or_strip = true;
1260 pdu.writev_offset = 0;
1261 rc = iscsi_build_iovs(&conn, iovs, 6, &pdu, &mapped_length);
1263 CU_ASSERT(iovs[0].iov_base == (void *)&pdu.bhs);
1265 CU_ASSERT(iovs[1].iov_base == (void *)pdu.header_digest);
1267 CU_ASSERT(iovs[2].iov_base == (void *)pdu.data);
1269 CU_ASSERT(iovs[3].iov_base == (void *)(pdu.data + 4096 + 128));
1271 CU_ASSERT(iovs[4].iov_base == (void *)pdu.data_digest);
1275 pdu.writev_offset = ISCSI_BHS_LEN + ISCSI_DIGEST_LEN + 2048;
1276 rc = iscsi_build_iovs(&conn, iovs, 6, &pdu, &mapped_length);
1278 CU_ASSERT(iovs[0].iov_base == (void *)(pdu.data + 2048));
1280 CU_ASSERT(iovs[1].iov_base == (void *)(pdu.data + 4096 + 128));
1282 CU_ASSERT(iovs[2].iov_base == (void *)pdu.data_digest);
1286 pdu.writev_offset = ISCSI_BHS_LEN + ISCSI_DIGEST_LEN + 4096 * 2;
1287 rc = iscsi_build_iovs(&conn, iovs, 6, &pdu, &mapped_length);
1289 CU_ASSERT(iovs[0].iov_base == (void *)pdu.data_digest);
1293 pdu.writev_offset = 0;
1294 rc = iscsi_build_iovs(&conn, iovs, 3, &pdu, &mapped_length);
1296 CU_ASSERT(iovs[0].iov_base == (void *)&pdu.bhs);
1298 CU_ASSERT(iovs[1].iov_base == (void *)pdu.header_digest);
1300 CU_ASSERT(iovs[2].iov_base == (void *)pdu.data);
1308 check_iscsi_reject(struct spdk_iscsi_pdu *pdu, uint8_t reason)
1313 CU_ASSERT(pdu->is_rejected == true);
1321 pdu->is_rejected = false;
1345 struct spdk_iscsi_pdu pdu = {};
1349 login_reqh = (struct iscsi_bhs_login_req *)&pdu.bhs;
1358 rc = iscsi_pdu_hdr_op_login(&conn, &pdu);
1367 pdu.data_segment_len = SPDK_ISCSI_FIRST_BURST_LENGTH + 1;
1369 rc = iscsi_pdu_hdr_op_login(&conn, &pdu);
1371 check_iscsi_reject(&pdu, ISCSI_REASON_PROTOCOL_ERROR);
1374 pdu.data_segment_len = SPDK_ISCSI_FIRST_BURST_LENGTH;
1377 rc = iscsi_pdu_hdr_op_login(&conn, &pdu);
1385 rc = iscsi_pdu_hdr_op_login(&conn, &pdu);
1393 rc = iscsi_pdu_hdr_op_login(&conn, &pdu);
1402 rc = iscsi_pdu_hdr_op_login(&conn, &pdu);
1411 rc = iscsi_pdu_hdr_op_login(&conn, &pdu);
1423 struct spdk_iscsi_pdu pdu = {};
1427 text_reqh = (struct iscsi_bhs_text_req *)&pdu.bhs;
1434 pdu.data_segment_len = iscsi_get_max_immediate_data_size() + 1;
1436 rc = iscsi_pdu_hdr_op_text(&conn, &pdu);
1438 check_iscsi_reject(&pdu, ISCSI_REASON_PROTOCOL_ERROR);
1441 pdu.data_segment_len = iscsi_get_max_immediate_data_size();
1445 rc = iscsi_pdu_hdr_op_text(&conn, &pdu);
1456 rc = iscsi_pdu_hdr_op_text(&conn, &pdu);
1466 rc = iscsi_pdu_hdr_op_text(&conn, &pdu);
1474 rc = iscsi_pdu_hdr_op_text(&conn, &pdu);
1476 check_iscsi_reject(&pdu, ISCSI_REASON_PROTOCOL_ERROR);
1482 rc = iscsi_pdu_hdr_op_text(&conn, &pdu);
1510 struct spdk_iscsi_pdu pdu = {};
1514 logout_reqh = (struct iscsi_bhs_logout_req *)&pdu.bhs;
1523 rc = iscsi_pdu_hdr_op_logout(&conn, &pdu);
1530 pdu.cmd_sn = 5678;
1532 rc = iscsi_pdu_hdr_op_logout(&conn, &pdu);
1546 rc = iscsi_pdu_hdr_op_logout(&conn, &pdu);
1557 rc = iscsi_pdu_hdr_op_logout(&conn, &pdu);
1566 rc = iscsi_pdu_hdr_op_logout(&conn, &pdu);
1573 check_scsi_task(struct spdk_iscsi_pdu *pdu, enum spdk_scsi_data_dir dir)
1577 task = pdu->task;
1579 CU_ASSERT(task->pdu == pdu);
1583 pdu->task = NULL;
1591 struct spdk_iscsi_pdu pdu = {};
1597 scsi_reqh = (struct iscsi_bhs_scsi_req *)&pdu.bhs;
1605 rc = iscsi_pdu_hdr_op_scsi(&conn, &pdu);
1611 rc = iscsi_pdu_hdr_op_scsi(&conn, &pdu);
1621 rc = iscsi_pdu_hdr_op_scsi(&conn, &pdu);
1627 rc = iscsi_pdu_hdr_op_scsi(&conn, &pdu);
1629 CU_ASSERT(pdu.task == NULL);
1635 rc = iscsi_pdu_hdr_op_scsi(&conn, &pdu);
1637 check_scsi_task(&pdu, SPDK_SCSI_DIR_FROM_DEV);
1644 pdu.data_segment_len = iscsi_get_max_immediate_data_size() + 1;
1646 rc = iscsi_pdu_hdr_op_scsi(&conn, &pdu);
1648 check_iscsi_reject(&pdu, ISCSI_REASON_PROTOCOL_ERROR);
1653 pdu.data_segment_len = iscsi_get_max_immediate_data_size();
1654 to_be32(&scsi_reqh->expected_data_xfer_len, pdu.data_segment_len - 1);
1656 rc = iscsi_pdu_hdr_op_scsi(&conn, &pdu);
1658 check_iscsi_reject(&pdu, ISCSI_REASON_PROTOCOL_ERROR);
1663 to_be32(&scsi_reqh->expected_data_xfer_len, pdu.data_segment_len);
1665 rc = iscsi_pdu_hdr_op_scsi(&conn, &pdu);
1667 check_iscsi_reject(&pdu, ISCSI_REASON_PROTOCOL_ERROR);
1674 rc = iscsi_pdu_hdr_op_scsi(&conn, &pdu);
1676 check_iscsi_reject(&pdu, ISCSI_REASON_PROTOCOL_ERROR);
1679 sess.FirstBurstLength = pdu.data_segment_len;
1681 rc = iscsi_pdu_hdr_op_scsi(&conn, &pdu);
1683 check_scsi_task(&pdu, SPDK_SCSI_DIR_TO_DEV);
1688 rc = iscsi_pdu_hdr_op_scsi(&conn, &pdu);
1690 check_iscsi_reject(&pdu, ISCSI_REASON_INVALID_PDU_FIELD);
1695 rc = iscsi_pdu_hdr_op_scsi(&conn, &pdu);
1697 check_scsi_task(&pdu, SPDK_SCSI_DIR_NONE);
1724 struct spdk_iscsi_pdu pdu = {};
1735 task_reqh = (struct iscsi_bhs_task_req *)&pdu.bhs;
1743 rc = iscsi_pdu_hdr_op_task(&conn, &pdu);
1751 rc = iscsi_pdu_hdr_op_task(&conn, &pdu);
1760 rc = iscsi_pdu_hdr_op_task(&conn, &pdu);
1769 rc = iscsi_pdu_hdr_op_task(&conn, &pdu);
1776 rc = iscsi_pdu_hdr_op_task(&conn, &pdu);
1785 rc = iscsi_pdu_hdr_op_task(&conn, &pdu);
1794 rc = iscsi_pdu_hdr_op_task(&conn, &pdu);
1801 rc = iscsi_pdu_hdr_op_task(&conn, &pdu);
1811 struct spdk_iscsi_pdu pdu = {};
1815 nopout_reqh = (struct iscsi_bhs_nop_out *)&pdu.bhs;
1822 rc = iscsi_pdu_hdr_op_nopout(&conn, &pdu);
1827 pdu.data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH + 1;
1829 rc = iscsi_pdu_hdr_op_nopout(&conn, &pdu);
1831 check_iscsi_reject(&pdu, ISCSI_REASON_PROTOCOL_ERROR);
1838 pdu.data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
1844 rc = iscsi_pdu_hdr_op_nopout(&conn, &pdu);
1850 rc = iscsi_pdu_hdr_op_nopout(&conn, &pdu);
1877 struct spdk_iscsi_pdu pdu = {};
1884 data_reqh = (struct iscsi_bhs_data_out *)&pdu.bhs;
1893 rc = iscsi_pdu_hdr_op_data(&conn, &pdu);
1898 pdu.data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH + 1;
1900 rc = iscsi_pdu_hdr_op_data(&conn, &pdu);
1902 check_iscsi_reject(&pdu, ISCSI_REASON_PROTOCOL_ERROR);
1905 pdu.data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
1907 rc = iscsi_pdu_hdr_op_data(&conn, &pdu);
1909 check_iscsi_reject(&pdu, ISCSI_REASON_INVALID_PDU_FIELD);
1918 rc = iscsi_pdu_hdr_op_data(&conn, &pdu);
1925 rc = iscsi_pdu_hdr_op_data(&conn, &pdu);
1927 check_iscsi_reject(&pdu, ISCSI_REASON_INVALID_PDU_FIELD);
1935 rc = iscsi_pdu_hdr_op_data(&conn, &pdu);
1937 check_iscsi_reject(&pdu, ISCSI_REASON_PROTOCOL_ERROR);
1945 rc = iscsi_pdu_hdr_op_data(&conn, &pdu);
1950 sess.MaxBurstLength = pdu.data_segment_len - 1;
1952 rc = iscsi_pdu_hdr_op_data(&conn, &pdu);
1956 sess.MaxBurstLength = pdu.data_segment_len * 4;
1960 rc = iscsi_pdu_hdr_op_data(&conn, &pdu);
1962 check_iscsi_reject(&pdu, ISCSI_REASON_PROTOCOL_ERROR);
1972 rc = iscsi_pdu_hdr_op_data(&conn, &pdu);
1974 CU_ASSERT(!pdu.is_rejected);
1975 CU_ASSERT(pdu.data_buf_len == SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH);
1976 pdu.task = NULL;
1984 primary.scsi.transfer_len = pdu.data_segment_len * 5;
1986 rc = iscsi_pdu_hdr_op_data(&conn, &pdu);
1988 CU_ASSERT(!pdu.is_rejected);
1989 check_iscsi_r2t(&primary, pdu.data_segment_len * 4);
2030 check_pdu_payload_read(struct spdk_iscsi_pdu *pdu, struct spdk_mobj *mobj,
2037 data = (uint32_t *)pdu->data;
2038 buf_offset = (uint64_t)pdu->data - (uint64_t)mobj->buf;
2040 CU_ASSERT(pdu->mobj[index] == mobj);
2041 CU_ASSERT(pdu->data_from_mempool == true);
2042 CU_ASSERT(buf_offset == 0 || pdu->data_offset == 0);
2043 CU_ASSERT(mobj->data_len + pdu->data_offset == buf_offset + pdu->data_valid_bytes);
2044 CU_ASSERT(rc > 0 || pdu->data_valid_bytes == pdu->data_segment_len);
2046 for (i = 0; i < pdu->data_valid_bytes - pdu->data_offset; i += 4) {
2055 struct spdk_iscsi_pdu pdu = {};
2072 pdu.data_segment_len = iscsi_get_max_immediate_data_size();
2073 pdu.data_buf_len = pdu.data_segment_len;
2076 rc = iscsi_pdu_payload_read(&conn, &pdu);
2077 check_pdu_payload_read(&pdu, &mobj1, rc, 0, 0);
2079 memset(&pdu, 0, sizeof(pdu));
2083 pdu.data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
2084 pdu.data_buf_len = pdu.data_segment_len;
2087 rc = iscsi_pdu_payload_read(&conn, &pdu);
2088 check_pdu_payload_read(&pdu, &mobj1, rc, 0, 0);
2090 memset(&pdu, 0, sizeof(pdu));
2096 pdu.data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH + 1;
2097 pdu.data_buf_len = pdu.data_segment_len;
2100 rc = iscsi_pdu_payload_read(&conn, &pdu);
2108 pdu.data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
2109 pdu.data_buf_len = SPDK_BDEV_BUF_SIZE_WITH_MD(SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH);
2110 pdu.mobj[0] = &mobj1;
2111 pdu.data = (void *)((uint64_t)mobj1.buf + SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH / 2);
2112 pdu.data_from_mempool = true;
2115 rc = iscsi_pdu_payload_read(&conn, &pdu);
2116 check_pdu_payload_read(&pdu, &mobj1, rc, 0, SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH / 2);
2120 rc = iscsi_pdu_payload_read(&conn, &pdu);
2121 check_pdu_payload_read(&pdu, &mobj2, rc, 1, SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH);
2127 memset(&pdu, 0, sizeof(pdu));
2128 pdu.crc32c = SPDK_CRC32C_INITIAL;
2129 pdu.data = mobj1.buf;
2130 pdu.data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
2131 pdu.mobj[0] = &mobj1;
2132 pdu.data_valid_bytes = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
2141 rc = iscsi_pdu_payload_read(&conn, &pdu);
2143 CU_ASSERT(pdu.ddigest_valid_bytes == ISCSI_DIGEST_LEN);
2144 CU_ASSERT(pdu.mobj[1] == NULL);
2159 check_pdu_hdr_handle(struct spdk_iscsi_pdu *pdu, struct spdk_mobj *mobj, uint32_t offset,
2162 CU_ASSERT(pdu->mobj[0] == mobj);
2163 CU_ASSERT(pdu->data == NULL || pdu->data == (void *)((uint64_t)mobj->buf + offset));
2168 check_pdu_payload_handle(struct spdk_iscsi_pdu *pdu, struct spdk_iscsi_task *primary,
2172 CU_ASSERT(pdu->mobj[0] == pdu_mobj0);
2173 CU_ASSERT(pdu->mobj[1] == pdu_mobj1);
2180 struct spdk_iscsi_pdu *pdu,
2194 CU_ASSERT(iscsi_task_get_pdu(subtask) == pdu);
2195 CU_ASSERT(pdu->mobj[index] == mobj);
2226 struct spdk_iscsi_pdu pdu = {};
2263 data_reqh = (struct iscsi_bhs_data_out *)&pdu.bhs;
2264 pdu.bhs.opcode = ISCSI_OP_SCSI_DATAOUT;
2265 pdu.data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH / 2 - 4;
2267 rc = iscsi_pdu_hdr_handle(&conn, &pdu);
2269 check_pdu_hdr_handle(&pdu, NULL, 0, &primary);
2273 rc = iscsi_pdu_payload_read(&conn, &pdu);
2275 check_pdu_payload_read(&pdu, &mobj1, rc, 0, 0);
2277 rc = iscsi_pdu_payload_handle(&conn, &pdu);
2279 check_pdu_payload_handle(&pdu, &primary, NULL, NULL, &mobj1, 0);
2282 memset(&pdu, 0, sizeof(pdu));
2283 pdu.bhs.opcode = ISCSI_OP_SCSI_DATAOUT;
2284 pdu.data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH / 2 - 4;
2288 rc = iscsi_pdu_hdr_handle(&conn, &pdu);
2290 check_pdu_hdr_handle(&pdu, &mobj1, SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH / 2 - 4, &primary);
2292 rc = iscsi_pdu_payload_read(&conn, &pdu);
2294 check_pdu_payload_read(&pdu, &mobj1, rc, 0, SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH / 2 - 4);
2296 rc = iscsi_pdu_payload_handle(&conn, &pdu);
2298 check_pdu_payload_handle(&pdu, &primary, NULL, NULL, &mobj1, 0);
2301 memset(&pdu, 0, sizeof(pdu));
2302 pdu.bhs.opcode = ISCSI_OP_SCSI_DATAOUT;
2303 pdu.data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
2307 rc = iscsi_pdu_hdr_handle(&conn, &pdu);
2309 check_pdu_hdr_handle(&pdu, &mobj1, SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH - 8, &primary);
2311 rc = iscsi_pdu_payload_read(&conn, &pdu);
2313 check_pdu_payload_read(&pdu, &mobj1, rc, 0, SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH - 8);
2317 rc = iscsi_pdu_payload_read(&conn, &pdu);
2319 check_pdu_payload_read(&pdu, &mobj2, rc, 1, SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH);
2321 rc = iscsi_pdu_payload_handle(&conn, &pdu);
2323 check_pdu_payload_handle(&pdu, &primary, &mobj1, NULL, &mobj2,
2326 check_write_subtask_submit(&lun, &mobj1, &pdu, 0, 0, SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH);
2329 memset(&pdu, 0, sizeof(pdu));
2330 pdu.bhs.opcode = ISCSI_OP_SCSI_DATAOUT;
2331 pdu.data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH / 2 + 8;
2336 rc = iscsi_pdu_hdr_handle(&conn, &pdu);
2338 check_pdu_hdr_handle(&pdu, &mobj2, SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH - 8, &primary);
2340 rc = iscsi_pdu_payload_read(&conn, &pdu);
2342 check_pdu_payload_read(&pdu, &mobj2, rc, 0, 2 * SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH - 8);
2346 rc = iscsi_pdu_payload_read(&conn, &pdu);
2348 check_pdu_payload_read(&pdu, &mobj3, rc, 1, 2 * SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH);
2350 rc = iscsi_pdu_payload_handle(&conn, &pdu);
2352 check_pdu_payload_handle(&pdu, &primary, &mobj2, &mobj3, NULL,
2355 check_write_subtask_submit(&lun, &mobj2, &pdu, 0, SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH,
2358 check_write_subtask_submit(&lun, &mobj3, &pdu, 1, 2 * SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH,
2389 struct spdk_iscsi_pdu pdu = {};
2428 scsi_reqh = (struct iscsi_bhs_scsi_req *)&pdu.bhs;
2432 pdu.data_segment_len = 5792;
2435 rc = iscsi_pdu_hdr_handle(&conn, &pdu);
2438 primary = pdu.task;
2443 CU_ASSERT(pdu.data_buf_len == 65536);
2447 rc = iscsi_pdu_payload_read(&conn, &pdu);
2449 check_pdu_payload_read(&pdu, &mobj, rc, 0, 0);
2451 rc = iscsi_pdu_payload_handle(&conn, &pdu);
2459 check_pdu_payload_handle(&pdu, primary, NULL, NULL, &mobj, 0);
2461 data_reqh = (struct iscsi_bhs_data_out *)&pdu.bhs;
2464 memset(&pdu, 0, sizeof(pdu));
2468 pdu.data_segment_len = 15880;
2470 rc = iscsi_pdu_hdr_handle(&conn, &pdu);
2472 check_pdu_hdr_handle(&pdu, &mobj, 5792, primary);
2474 rc = iscsi_pdu_payload_read(&conn, &pdu);
2476 check_pdu_payload_read(&pdu, &mobj, rc, 0, 5792);
2478 rc = iscsi_pdu_payload_handle(&conn, &pdu);
2480 check_pdu_payload_handle(&pdu, primary, NULL, NULL, &mobj, 0);
2483 memset(&pdu, 0, sizeof(pdu));
2488 pdu.data_segment_len = 11536;
2490 rc = iscsi_pdu_hdr_handle(&conn, &pdu);
2492 check_pdu_hdr_handle(&pdu, &mobj, 21672, primary);
2494 rc = iscsi_pdu_payload_read(&conn, &pdu);
2496 check_pdu_payload_read(&pdu, &mobj, rc, 0, 21672);
2498 rc = iscsi_pdu_payload_handle(&conn, &pdu);
2500 check_pdu_payload_handle(&pdu, primary, NULL, NULL, &mobj, 0);
2503 memset(&pdu, 0, sizeof(pdu));
2508 pdu.data_segment_len = 2848;
2510 rc = iscsi_pdu_hdr_handle(&conn, &pdu);
2512 check_pdu_hdr_handle(&pdu, &mobj, 33208, primary);
2514 rc = iscsi_pdu_payload_read(&conn, &pdu);
2516 check_pdu_payload_read(&pdu, &mobj, rc, 0, 33208);
2518 rc = iscsi_pdu_payload_handle(&conn, &pdu);
2520 check_pdu_payload_handle(&pdu, primary, NULL, NULL, &mobj, 0);
2523 memset(&pdu, 0, sizeof(pdu));
2528 pdu.data_segment_len = 11536;
2530 rc = iscsi_pdu_hdr_handle(&conn, &pdu);
2532 check_pdu_hdr_handle(&pdu, &mobj, 36056, primary);
2534 rc = iscsi_pdu_payload_read(&conn, &pdu);
2536 check_pdu_payload_read(&pdu, &mobj, rc, 0, 36056);
2538 rc = iscsi_pdu_payload_handle(&conn, &pdu);
2540 check_pdu_payload_handle(&pdu, primary, NULL, NULL, &mobj, 0);
2543 memset(&pdu, 0, sizeof(pdu));
2548 pdu.data_segment_len = 5744;
2550 rc = iscsi_pdu_hdr_handle(&conn, &pdu);
2552 check_pdu_hdr_handle(&pdu, &mobj, 47592, primary);
2554 rc = iscsi_pdu_payload_read(&conn, &pdu);
2556 check_pdu_payload_read(&pdu, &mobj, rc, 0, 47592);
2558 rc = iscsi_pdu_payload_handle(&conn, &pdu);
2560 check_pdu_payload_handle(&pdu, primary, NULL, NULL, &mobj, 0);
2563 memset(&pdu, 0, sizeof(pdu));
2564 pdu.bhs.opcode = ISCSI_OP_SCSI_DATAOUT;
2569 pdu.data_segment_len = 12200;
2571 rc = iscsi_pdu_hdr_handle(&conn, &pdu);
2573 check_pdu_hdr_handle(&pdu, &mobj, 53336, primary);
2575 rc = iscsi_pdu_payload_read(&conn, &pdu);
2577 check_pdu_payload_read(&pdu, &mobj, rc, 0, 53336);
2579 rc = iscsi_pdu_payload_handle(&conn, &pdu);
2581 check_pdu_payload_handle(&pdu, primary, &mobj, NULL, NULL, 65536);
2583 check_write_subtask_submit(&lun, &mobj, &pdu, 0, 0, 65536);