Commit cbfd581c authored by Alexis Lescouet's avatar Alexis Lescouet Committed by Tomasz Zawadzki
Browse files

nvmf: Add NVMe fused operations to spdk_nvmf_ctrlr_data



Fused compare_and_write operation is always advertised by the nvmf
transport.

Add the fuses structure to spdk_nvmf_ctrlr_data to make advertising
fused operation configurable.

Signed-off-by: default avatarAlexis Lescouet <alexis.lescouet@nutanix.com>
Change-Id: I73ee03dc8948f1d250cc0a8f0b8a3bde042a45e7
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12917


Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarJohn Levon <levon@movementarian.org>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent ddf8904c
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -1891,6 +1891,11 @@ struct spdk_nvme_cdata_oacs {
	uint16_t	oacs_rsvd : 6;
};

struct spdk_nvme_cdata_fuses {
	uint16_t	compare_and_write : 1;
	uint16_t	reserved : 15;
};

struct __attribute__((packed)) spdk_nvme_ctrlr_data {
	/* bytes 0-255: controller capabilities and features */

@@ -2181,10 +2186,7 @@ struct __attribute__((packed)) spdk_nvme_ctrlr_data {
	struct spdk_nvme_cdata_oncs oncs;

	/** fused operation support */
	struct {
		uint16_t	compare_and_write : 1;
		uint16_t	reserved : 15;
	} fuses;
	struct spdk_nvme_cdata_fuses fuses;

	/** format nvm attributes */
	struct {
+1 −0
Original line number Diff line number Diff line
@@ -184,6 +184,7 @@ struct spdk_nvmf_ctrlr_data {
	uint8_t ieee[3];
	struct spdk_nvme_cdata_oacs oacs;
	struct spdk_nvme_cdata_oncs oncs;
	struct spdk_nvme_cdata_fuses fuses;
	struct spdk_nvme_cdata_sgls sgls;
	struct spdk_nvme_cdata_nvmf_specific nvmf_specific;
};
+2 −1
Original line number Diff line number Diff line
@@ -291,6 +291,7 @@ nvmf_ctrlr_cdata_init(struct spdk_nvmf_transport *transport, struct spdk_nvmf_su
	cdata->ieee[1] = 0xd2;
	cdata->ieee[2] = 0x5c;
	cdata->oncs.reservations = 1;
	cdata->fuses.compare_and_write = 1;
	cdata->sgls.supported = 1;
	cdata->sgls.keyed_sgl = 1;
	cdata->sgls.sgl_offset = 1;
@@ -2635,7 +2636,7 @@ spdk_nvmf_ctrlr_identify_ctrlr(struct spdk_nvmf_ctrlr *ctrlr, struct spdk_nvme_c
	cdata->elpe = 127;
	cdata->maxcmd = transport->opts.max_queue_depth;
	cdata->sgls = ctrlr->cdata.sgls;
	cdata->fuses.compare_and_write = 1;
	cdata->fuses = ctrlr->cdata.fuses;
	cdata->acwu = 0; /* ACWU is 0-based. */
	if (subsystem->flags.ana_reporting) {
		cdata->mnan = subsystem->max_nsid;