nvme.h: add constants for PSDT and FUSE values
authorJames Smart <james.smart@broadcom.com>
Mon, 6 Jun 2016 21:20:47 +0000 (23:20 +0200)
committerJens Axboe <axboe@fb.com>
Sun, 12 Jun 2016 13:29:43 +0000 (07:29 -0600)
Signed-off-by: James Smart <james.smart@broadcom.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
include/linux/nvme.h

index a9b8c7bcaf853a4c3143bf3ed5a19c5a47ef47f0..2b82f05fe4ecff25ceff54aa897ca74e311e8f02 100644 (file)
@@ -306,6 +306,29 @@ enum nvme_opcode {
        nvme_cmd_resv_release   = 0x15,
 };
 
+/*
+ * Lowest two bits of our flags field (FUSE field in the spec):
+ *
+ * @NVME_CMD_FUSE_FIRST:   Fused Operation, first command
+ * @NVME_CMD_FUSE_SECOND:  Fused Operation, second command
+ *
+ * Highest two bits in our flags field (PSDT field in the spec):
+ *
+ * @NVME_CMD_PSDT_SGL_METABUF: Use SGLS for this transfer,
+ *     If used, MPTR contains addr of single physical buffer (byte aligned).
+ * @NVME_CMD_PSDT_SGL_METASEG: Use SGLS for this transfer,
+ *     If used, MPTR contains an address of an SGL segment containing
+ *     exactly 1 SGL descriptor (qword aligned).
+ */
+enum {
+       NVME_CMD_FUSE_FIRST     = (1 << 0),
+       NVME_CMD_FUSE_SECOND    = (1 << 1),
+
+       NVME_CMD_SGL_METABUF    = (1 << 6),
+       NVME_CMD_SGL_METASEG    = (1 << 7),
+       NVME_CMD_SGL_ALL        = NVME_CMD_SGL_METABUF | NVME_CMD_SGL_METASEG,
+};
+
 struct nvme_common_command {
        __u8                    opcode;
        __u8                    flags;