lib/nvme: check if nvme device supports fused operations
Change-Id: I91986f693bd322620a9e7abf598bcc38613bdbd0 Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/475859 Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
ef8966fe93
commit
535dd2ec9b
@ -366,6 +366,7 @@ enum spdk_nvme_ctrlr_flags {
|
||||
SPDK_NVME_CTRLR_SGL_SUPPORTED = 0x1, /**< The SGL is supported */
|
||||
SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED = 0x2, /**< security send/receive is supported */
|
||||
SPDK_NVME_CTRLR_WRR_SUPPORTED = 0x4, /**< Weighted Round Robin is supported */
|
||||
SPDK_NVME_CTRLR_COMPARE_AND_WRITE_SUPPORTED = 0x8, /**< Compare and write fused operations supported */
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -1752,7 +1752,10 @@ struct __attribute__((packed)) __attribute__((aligned)) spdk_nvme_ctrlr_data {
|
||||
} oncs;
|
||||
|
||||
/** fused operation support */
|
||||
uint16_t fuses;
|
||||
struct {
|
||||
uint16_t compare_and_write : 1;
|
||||
uint16_t reserved : 15;
|
||||
} fuses;
|
||||
|
||||
/** format nvm attributes */
|
||||
struct {
|
||||
|
@ -1235,6 +1235,11 @@ nvme_ctrlr_identify_done(void *arg, const struct spdk_nvme_cpl *cpl)
|
||||
ctrlr->flags |= SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED;
|
||||
}
|
||||
|
||||
SPDK_DEBUGLOG(SPDK_LOG_NVME, "fuses compare and write: %d\n", ctrlr->cdata.fuses.compare_and_write);
|
||||
if (ctrlr->cdata.fuses.compare_and_write) {
|
||||
ctrlr->flags |= SPDK_NVME_CTRLR_COMPARE_AND_WRITE_SUPPORTED;
|
||||
}
|
||||
|
||||
nvme_ctrlr_set_state(ctrlr, NVME_CTRLR_STATE_SET_NUM_QUEUES,
|
||||
ctrlr->opts.admin_timeout_ms);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user