xref: /freebsd/sys/cam/ctl/ctl_nvme_cmd_table.c (revision 0c4ee619dff8f373268f030cd6e73b949e64d4ec)
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