From 68c2244cdc3e087b49bd0a62b95a3d240eaad6ec Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Mon, 3 Feb 2020 15:12:06 -0700 Subject: [PATCH] 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: Ben Walker Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/422 Tested-by: SPDK CI Jenkins Reviewed-by: Jacek Kalwas Reviewed-by: Aleksey Marchuk Reviewed-by: Jim Harris Reviewed-by: Shuhei Matsumoto --- include/spdk/nvmf_transport.h | 15 +++++++++++++++ lib/nvmf/ctrlr.c | 6 ++++++ lib/nvmf/nvmf_internal.h | 10 +--------- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/include/spdk/nvmf_transport.h b/include/spdk/nvmf_transport.h index 54685c8b9..08ea26596 100644 --- a/include/spdk/nvmf_transport.h +++ b/include/spdk/nvmf_transport.h @@ -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); diff --git a/lib/nvmf/ctrlr.c b/lib/nvmf/ctrlr.c index d8a4ee2d6..08507e740 100644 --- a/lib/nvmf/ctrlr.c +++ b/lib/nvmf/ctrlr.c @@ -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) { diff --git a/lib/nvmf/nvmf_internal.h b/lib/nvmf/nvmf_internal.h index 282db49ec..fdc22cb69 100644 --- a/lib/nvmf/nvmf_internal.h +++ b/lib/nvmf/nvmf_internal.h @@ -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;