Commit 68c2244c authored by Ben Walker's avatar Ben Walker Committed by Tomasz Zawadzki
Browse files

nvmf: Add spdk_nvmf_ctrlr_get_regs to nvmf_transport.h



Add a way for the transport to query the value of the controller
registers.

Change-Id: Id365ff088989f6f8e74e26ff6f3d435f35bee2f4
Signed-off-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/422


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJacek Kalwas <jacek.kalwas@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent e8c195b3
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -322,6 +322,21 @@ void spdk_nvmf_transport_register(const struct spdk_nvmf_transport_ops *ops);

int spdk_nvmf_ctrlr_connect(struct spdk_nvmf_request *req);

/**
 * A subset of struct spdk_nvme_registers that are emulated by a fabrics device.
 */
struct spdk_nvmf_registers {
	union spdk_nvme_cap_register	cap;
	union spdk_nvme_vs_register	vs;
	union spdk_nvme_cc_register	cc;
	union spdk_nvme_csts_register	csts;
	union spdk_nvme_aqa_register	aqa;
	uint64_t			asq;
	uint64_t			acq;
};

const struct spdk_nvmf_registers *spdk_nvmf_ctrlr_get_regs(struct spdk_nvmf_ctrlr *ctrlr);

void spdk_nvmf_request_free_buffers(struct spdk_nvmf_request *req,
				    struct spdk_nvmf_transport_poll_group *group,
				    struct spdk_nvmf_transport *transport);
+6 −0
Original line number Diff line number Diff line
@@ -644,6 +644,12 @@ spdk_nvmf_ctrlr_cmd_connect(struct spdk_nvmf_request *req)
	return _spdk_nvmf_ctrlr_connect(req);
}

const struct spdk_nvmf_registers *
spdk_nvmf_ctrlr_get_regs(struct spdk_nvmf_ctrlr *ctrlr)
{
	return &ctrlr->vcprop;
}

static uint64_t
nvmf_prop_get_cap(struct spdk_nvmf_ctrlr *ctrlr)
{
+1 −9
Original line number Diff line number Diff line
@@ -194,15 +194,7 @@ struct spdk_nvmf_ctrlr {
	char				hostnqn[SPDK_NVMF_NQN_MAX_LEN + 1];
	struct spdk_nvmf_subsystem	*subsys;

	struct {
		union spdk_nvme_cap_register	cap;
		union spdk_nvme_vs_register	vs;
		union spdk_nvme_cc_register	cc;
		union spdk_nvme_csts_register	csts;
		union spdk_nvme_aqa_register	aqa;
		uint64_t			asq;
		uint64_t			acq;
	} vcprop; /* virtual controller properties */
	struct spdk_nvmf_registers	vcprop;

	struct spdk_nvmf_ctrlr_feat feat;