From 84479ab6e35ddedbb35dcd43e183bca318d0d6cb Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Fri, 31 Jan 2020 15:41:27 -0700 Subject: [PATCH] nvmf: Allow fabrics commands to get and set aqa This doesn't do anything for a network fabric, but it doesn't hurt to allow these commands to set the emulated register values for AQA. This will be more useful when emulating a physical NVMe device. Change-Id: I2891d7a07a5dceff50c6d66a8ce0b6b7c22a79f8 Signed-off-by: Ben Walker Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/419 Tested-by: SPDK CI Jenkins Reviewed-by: Aleksey Marchuk Reviewed-by: Ziye Yang Reviewed-by: Jim Harris Reviewed-by: Shuhei Matsumoto --- lib/nvmf/ctrlr.c | 15 +++++++++++++++ lib/nvmf/nvmf_internal.h | 1 + 2 files changed, 16 insertions(+) diff --git a/lib/nvmf/ctrlr.c b/lib/nvmf/ctrlr.c index 2f3d54296..536b58021 100644 --- a/lib/nvmf/ctrlr.c +++ b/lib/nvmf/ctrlr.c @@ -752,6 +752,20 @@ nvmf_prop_get_csts(struct spdk_nvmf_ctrlr *ctrlr) return ctrlr->vcprop.csts.raw; } +static uint64_t +nvmf_prop_get_aqa(struct spdk_nvmf_ctrlr *ctrlr) +{ + return ctrlr->vcprop.aqa.raw; +} + +static bool +nvmf_prop_set_aqa(struct spdk_nvmf_ctrlr *ctrlr, uint64_t value) +{ + ctrlr->vcprop.aqa.raw = (uint32_t)value; + + return true; +} + struct nvmf_prop { uint32_t ofst; uint8_t size; @@ -773,6 +787,7 @@ static const struct nvmf_prop nvmf_props[] = { PROP(vs, 4, nvmf_prop_get_vs, NULL), PROP(cc, 4, nvmf_prop_get_cc, nvmf_prop_set_cc), PROP(csts, 4, nvmf_prop_get_csts, NULL), + PROP(aqa, 4, nvmf_prop_get_aqa, nvmf_prop_set_aqa), }; static const struct nvmf_prop * diff --git a/lib/nvmf/nvmf_internal.h b/lib/nvmf/nvmf_internal.h index 36eb196bb..6d47ee497 100644 --- a/lib/nvmf/nvmf_internal.h +++ b/lib/nvmf/nvmf_internal.h @@ -199,6 +199,7 @@ struct spdk_nvmf_ctrlr { union spdk_nvme_vs_register vs; union spdk_nvme_cc_register cc; union spdk_nvme_csts_register csts; + union spdk_nvme_aqa_register aqa; } vcprop; /* virtual controller properties */ struct spdk_nvmf_ctrlr_feat feat;