Changeset View
Changeset View
Standalone View
Standalone View
head/sys/cam/nvme/nvme_all.c
Show First 20 Lines • Show All 63 Lines • ▼ Show 20 Lines | |||||
#endif | #endif | ||||
void | void | ||||
nvme_ns_cmd(struct ccb_nvmeio *nvmeio, uint8_t cmd, uint32_t nsid, | nvme_ns_cmd(struct ccb_nvmeio *nvmeio, uint8_t cmd, uint32_t nsid, | ||||
uint32_t cdw10, uint32_t cdw11, uint32_t cdw12, uint32_t cdw13, | uint32_t cdw10, uint32_t cdw11, uint32_t cdw12, uint32_t cdw13, | ||||
uint32_t cdw14, uint32_t cdw15) | uint32_t cdw14, uint32_t cdw15) | ||||
{ | { | ||||
bzero(&nvmeio->cmd, sizeof(struct nvme_command)); | bzero(&nvmeio->cmd, sizeof(struct nvme_command)); | ||||
nvmeio->cmd.opc_fuse = NVME_CMD_SET_OPC(cmd); | nvmeio->cmd.opc = cmd; | ||||
nvmeio->cmd.nsid = htole32(nsid); | nvmeio->cmd.nsid = htole32(nsid); | ||||
nvmeio->cmd.cdw10 = htole32(cdw10); | nvmeio->cmd.cdw10 = htole32(cdw10); | ||||
nvmeio->cmd.cdw11 = htole32(cdw11); | nvmeio->cmd.cdw11 = htole32(cdw11); | ||||
nvmeio->cmd.cdw12 = htole32(cdw12); | nvmeio->cmd.cdw12 = htole32(cdw12); | ||||
nvmeio->cmd.cdw13 = htole32(cdw13); | nvmeio->cmd.cdw13 = htole32(cdw13); | ||||
nvmeio->cmd.cdw14 = htole32(cdw14); | nvmeio->cmd.cdw14 = htole32(cdw14); | ||||
nvmeio->cmd.cdw15 = htole32(cdw15); | nvmeio->cmd.cdw15 = htole32(cdw15); | ||||
} | } | ||||
Show All 31 Lines | nvme_opc2str[] = { | ||||
"RSVD-6", | "RSVD-6", | ||||
"RSVD-7", | "RSVD-7", | ||||
"DATASET_MANAGEMENT" | "DATASET_MANAGEMENT" | ||||
}; | }; | ||||
const char * | const char * | ||||
nvme_op_string(const struct nvme_command *cmd) | nvme_op_string(const struct nvme_command *cmd) | ||||
{ | { | ||||
uint8_t opc; | |||||
opc = (cmd->opc_fuse >> NVME_CMD_OPC_SHIFT) & NVME_CMD_OPC_MASK; | if (cmd->opc >= nitems(nvme_opc2str)) | ||||
if (opc >= nitems(nvme_opc2str)) | |||||
return "UNKNOWN"; | return "UNKNOWN"; | ||||
return nvme_opc2str[opc]; | return nvme_opc2str[cmd->opc]; | ||||
} | } | ||||
const char * | const char * | ||||
nvme_cmd_string(const struct nvme_command *cmd, char *cmd_string, size_t len) | nvme_cmd_string(const struct nvme_command *cmd, char *cmd_string, size_t len) | ||||
{ | { | ||||
uint8_t opc, fuse; | |||||
opc = (cmd->opc_fuse >> NVME_CMD_OPC_SHIFT) & NVME_CMD_OPC_MASK; | |||||
fuse = (cmd->opc_fuse >> NVME_CMD_FUSE_SHIFT) & NVME_CMD_FUSE_MASK; | |||||
/* | /* | ||||
* cid, rsvd areas and mptr not printed, since they are used | * cid, rsvd areas and mptr not printed, since they are used | ||||
* only internally by the SIM. | * only internally by the SIM. | ||||
*/ | */ | ||||
snprintf(cmd_string, len, | snprintf(cmd_string, len, | ||||
"opc=%x fuse=%x nsid=%x prp1=%llx prp2=%llx cdw=%x %x %x %x %x %x", | "opc=%x fuse=%x nsid=%x prp1=%llx prp2=%llx cdw=%x %x %x %x %x %x", | ||||
opc, fuse, cmd->nsid, | cmd->opc, cmd->fuse, cmd->nsid, | ||||
(unsigned long long)cmd->prp1, (unsigned long long)cmd->prp2, | (unsigned long long)cmd->prp1, (unsigned long long)cmd->prp2, | ||||
cmd->cdw10, cmd->cdw11, cmd->cdw12, | cmd->cdw10, cmd->cdw11, cmd->cdw12, | ||||
cmd->cdw13, cmd->cdw14, cmd->cdw15); | cmd->cdw13, cmd->cdw14, cmd->cdw15); | ||||
return cmd_string; | return cmd_string; | ||||
} | } | ||||
const void * | const void * | ||||
Show All 18 Lines |