#include <stdlib.h>
#include <sys/sysmacros.h>
#include <err.h>
#include "nvme_unit.h"
static const nvme_unit_field_test_t vuc_field_tests[] = { {
.nu_desc = "invalid opcode (1)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_OPC,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0xbf,
.nu_ret = NVME_FIELD_ERR_BAD_VALUE
}, {
.nu_desc = "invalid opcode (2)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_OPC,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x100,
.nu_ret = NVME_FIELD_ERR_BAD_VALUE
}, {
.nu_desc = "invalid opcode (3)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_OPC,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x3,
.nu_ret = NVME_FIELD_ERR_BAD_VALUE
}, {
.nu_desc = "valid opcode (1)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_OPC,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0xc0,
.nu_ret = NVME_FIELD_ERR_OK
}, {
.nu_desc = "valid opcode (2)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_OPC,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0xff,
.nu_ret = NVME_FIELD_ERR_OK
}, {
.nu_desc = "valid opcode (3)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_OPC,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0xde,
.nu_ret = NVME_FIELD_ERR_OK
}, {
.nu_desc = "invalid namespace (1)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_NSID,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x33,
.nu_ret = NVME_FIELD_ERR_BAD_VALUE
}, {
.nu_desc = "valid namespace (1)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_NSID,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x0,
.nu_ret = NVME_FIELD_ERR_OK
}, {
.nu_desc = "valid namespace (2)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_NSID,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = NVME_NSID_BCAST,
.nu_ret = NVME_FIELD_ERR_OK
}, {
.nu_desc = "valid namespace (3)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_NSID,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x1,
.nu_ret = NVME_FIELD_ERR_OK
}, {
.nu_desc = "invalid cdw12",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_CDW12,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x100000000,
.nu_ret = NVME_FIELD_ERR_BAD_VALUE
}, {
.nu_desc = "valid cdw12",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_CDW12,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x7777,
.nu_ret = NVME_FIELD_ERR_OK
}, {
.nu_desc = "invalid cdw13",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_CDW13,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x100000000,
.nu_ret = NVME_FIELD_ERR_BAD_VALUE
}, {
.nu_desc = "valid cdw13",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_CDW13,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x6666,
.nu_ret = NVME_FIELD_ERR_OK
}, {
.nu_desc = "invalid cdw14",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_CDW14,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x100000000,
.nu_ret = NVME_FIELD_ERR_BAD_VALUE
}, {
.nu_desc = "valid cdw14",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_CDW14,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x5555,
.nu_ret = NVME_FIELD_ERR_OK
}, {
.nu_desc = "invalid cdw15",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_CDW15,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x100000000,
.nu_ret = NVME_FIELD_ERR_BAD_VALUE
}, {
.nu_desc = "valid cdw15",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_CDW15,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x4444,
.nu_ret = NVME_FIELD_ERR_OK
}, {
.nu_desc = "invalid ndt (1)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_NDT,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x400000000,
.nu_ret = NVME_FIELD_ERR_BAD_VALUE
}, {
.nu_desc = "invalid ndt (2)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_NDT,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x3,
.nu_ret = NVME_FIELD_ERR_BAD_VALUE
}, {
.nu_desc = "invalid ndt (3)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_NDT,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x17,
.nu_ret = NVME_FIELD_ERR_BAD_VALUE
}, {
.nu_desc = "valid ndt (1)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_NDT,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x3fffffffc,
.nu_ret = NVME_FIELD_ERR_OK
}, {
.nu_desc = "valid ndt (2)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_NDT,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x0,
.nu_ret = NVME_FIELD_ERR_OK
}, {
.nu_desc = "valid ndt (3)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_NDT,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x1234,
.nu_ret = NVME_FIELD_ERR_OK
}, {
.nu_desc = "invalid timeout (1)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_TO,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x0,
.nu_ret = NVME_FIELD_ERR_BAD_VALUE
}, {
.nu_desc = "invalid timeout (2)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_TO,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x100000000,
.nu_ret = NVME_FIELD_ERR_BAD_VALUE
}, {
.nu_desc = "valid timeout (1)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_TO,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x1,
.nu_ret = NVME_FIELD_ERR_OK
}, {
.nu_desc = "valid timeout (2)",
.nu_fields = nvme_vuc_fields,
.nu_index = NVME_VUC_REQ_FIELD_TO,
.nu_data = &nvme_ctrl_base_1v0,
.nu_value = 0x101,
.nu_ret = NVME_FIELD_ERR_OK
} };
int
main(void)
{
int ret = EXIT_SUCCESS;
if (!nvme_unit_field_test(vuc_field_tests,
ARRAY_SIZE(vuc_field_tests))) {
ret = EXIT_FAILURE;
}
if (ret == EXIT_SUCCESS) {
(void) printf("All tests passed successfully!\n");
}
return (ret);
}