nvme_spec: add VWC flush broadcast bits (TP 4035)

Also report that the NVMe-oF target does not support Flush with the
broadcast NSID.

Change-Id: Iad761a6f81eb099940463a67074a6dccb8871b70
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/416445
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Daniel Verkamp 2018-06-21 11:35:52 -07:00
parent 800a142332
commit d4ef57c072
2 changed files with 17 additions and 1 deletions

View File

@ -919,6 +919,20 @@ enum spdk_nvme_sgls_supported {
SPDK_NVME_SGLS_SUPPORTED_DWORD_ALIGNED = 2, SPDK_NVME_SGLS_SUPPORTED_DWORD_ALIGNED = 2,
}; };
/** Identify Controller data vwc.flush_broadcast values */
enum spdk_nvme_flush_broadcast {
/** Support for NSID=FFFFFFFFh with Flush is not indicated. */
SPDK_NVME_FLUSH_BROADCAST_NOT_INDICATED = 0,
/* 01b: Reserved */
/** Flush does not support NSID set to FFFFFFFFh. */
SPDK_NVME_FLUSH_BROADCAST_NOT_SUPPORTED = 2,
/** Flush supports NSID set to FFFFFFFFh. */
SPDK_NVME_FLUSH_BROADCAST_SUPPORTED = 3
};
struct __attribute__((packed)) spdk_nvme_ctrlr_data { struct __attribute__((packed)) spdk_nvme_ctrlr_data {
/* bytes 0-255: controller capabilities and features */ /* bytes 0-255: controller capabilities and features */
@ -1223,7 +1237,8 @@ struct __attribute__((packed)) spdk_nvme_ctrlr_data {
/** volatile write cache */ /** volatile write cache */
struct { struct {
uint8_t present : 1; uint8_t present : 1;
uint8_t reserved : 7; uint8_t flush_broadcast : 2;
uint8_t reserved : 5;
} vwc; } vwc;
/** atomic write unit normal */ /** atomic write unit normal */

View File

@ -1211,6 +1211,7 @@ spdk_nvmf_ctrlr_identify_ctrlr(struct spdk_nvmf_ctrlr *ctrlr, struct spdk_nvme_c
cdata->cqes.max = 4; cdata->cqes.max = 4;
cdata->nn = subsystem->max_nsid; cdata->nn = subsystem->max_nsid;
cdata->vwc.present = 1; cdata->vwc.present = 1;
cdata->vwc.flush_broadcast = SPDK_NVME_FLUSH_BROADCAST_NOT_SUPPORTED;
cdata->nvmf_specific.ioccsz = sizeof(struct spdk_nvme_cmd) / 16; cdata->nvmf_specific.ioccsz = sizeof(struct spdk_nvme_cmd) / 16;
cdata->nvmf_specific.iorcsz = sizeof(struct spdk_nvme_cpl) / 16; cdata->nvmf_specific.iorcsz = sizeof(struct spdk_nvme_cpl) / 16;