1*0c4ee619SJohn Baldwin /*- 2*0c4ee619SJohn Baldwin * SPDX-License-Identifier: BSD-2-Clause 3*0c4ee619SJohn Baldwin * 4*0c4ee619SJohn Baldwin * Copyright (c) 2023 Chelsio Communications, Inc. 5*0c4ee619SJohn Baldwin */ 6*0c4ee619SJohn Baldwin 7*0c4ee619SJohn Baldwin #include <dev/nvme/nvme.h> 8*0c4ee619SJohn Baldwin 9*0c4ee619SJohn Baldwin #include <cam/ctl/ctl.h> 10*0c4ee619SJohn Baldwin #include <cam/ctl/ctl_ha.h> 11*0c4ee619SJohn Baldwin #include <cam/ctl/ctl_io.h> 12*0c4ee619SJohn Baldwin #include <cam/ctl/ctl_ioctl.h> 13*0c4ee619SJohn Baldwin #include <cam/ctl/ctl_private.h> 14*0c4ee619SJohn Baldwin 15*0c4ee619SJohn Baldwin /* Administrative Command Set (CTL_IO_NVME_ADMIN). */ 16*0c4ee619SJohn Baldwin const struct ctl_nvme_cmd_entry nvme_admin_cmd_table[256] = 17*0c4ee619SJohn Baldwin { 18*0c4ee619SJohn Baldwin [NVME_OPC_IDENTIFY] = { ctl_nvme_identify, CTL_FLAG_DATA_IN | 19*0c4ee619SJohn Baldwin CTL_CMD_FLAG_OK_ON_NO_LUN }, 20*0c4ee619SJohn Baldwin }; 21*0c4ee619SJohn Baldwin 22*0c4ee619SJohn Baldwin /* NVM Command Set (CTL_IO_NVME). */ 23*0c4ee619SJohn Baldwin const struct ctl_nvme_cmd_entry nvme_nvm_cmd_table[256] = 24*0c4ee619SJohn Baldwin { 25*0c4ee619SJohn Baldwin [NVME_OPC_FLUSH] = { ctl_nvme_flush, CTL_FLAG_DATA_NONE }, 26*0c4ee619SJohn Baldwin [NVME_OPC_WRITE] = { ctl_nvme_read_write, CTL_FLAG_DATA_OUT }, 27*0c4ee619SJohn Baldwin [NVME_OPC_READ] = { ctl_nvme_read_write, CTL_FLAG_DATA_IN }, 28*0c4ee619SJohn Baldwin [NVME_OPC_WRITE_UNCORRECTABLE] = { ctl_nvme_write_uncorrectable, 29*0c4ee619SJohn Baldwin CTL_FLAG_DATA_NONE }, 30*0c4ee619SJohn Baldwin [NVME_OPC_COMPARE] = { ctl_nvme_compare, CTL_FLAG_DATA_OUT }, 31*0c4ee619SJohn Baldwin [NVME_OPC_WRITE_ZEROES] = { ctl_nvme_write_zeroes, CTL_FLAG_DATA_NONE }, 32*0c4ee619SJohn Baldwin [NVME_OPC_DATASET_MANAGEMENT] = { ctl_nvme_dataset_management, 33*0c4ee619SJohn Baldwin CTL_FLAG_DATA_OUT }, 34*0c4ee619SJohn Baldwin [NVME_OPC_VERIFY] = { ctl_nvme_verify, CTL_FLAG_DATA_NONE }, 35*0c4ee619SJohn Baldwin }; 36