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 <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/422
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jacek Kalwas <jacek.kalwas@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
Ben Walker 2020-02-03 15:12:06 -07:00 committed by Tomasz Zawadzki
parent e8c195b3eb
commit 68c2244cdc
3 changed files with 22 additions and 9 deletions

View File

@ -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);

View File

@ -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)
{

View File

@ -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;