From ade59b217b388b3a7a4a1039126f1a845bdd6419 Mon Sep 17 00:00:00 2001 From: Xiaodong Liu Date: Tue, 15 May 2018 20:50:06 +0800 Subject: [PATCH] ocssd: print ocssd features in identify app Change-Id: Id79793e375e0f1dc2690869c4c38f59209cf806b Signed-off-by: Xiaodong Liu Reviewed-on: https://review.gerrithub.io/411592 Tested-by: SPDK CI Jenkins Chandler-Test-Pool: SPDK Automated Test System Reviewed-by: Ben Walker Reviewed-by: Jim Harris Reviewed-by: Changpeng Liu --- examples/nvme/identify/identify.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/examples/nvme/identify/identify.c b/examples/nvme/identify/identify.c index e9f5e9c4c..5072a0051 100644 --- a/examples/nvme/identify/identify.c +++ b/examples/nvme/identify/identify.c @@ -191,11 +191,16 @@ get_features(struct spdk_nvme_ctrlr *ctrlr) SPDK_NVME_FEAT_TEMPERATURE_THRESHOLD, SPDK_NVME_FEAT_ERROR_RECOVERY, SPDK_NVME_FEAT_NUMBER_OF_QUEUES, + SPDK_OCSSD_FEAT_MEDIA_FEEDBACK, }; /* Submit several GET FEATURES commands and wait for them to complete */ outstanding_commands = 0; for (i = 0; i < SPDK_COUNTOF(features_to_get); i++) { + if (!spdk_nvme_ctrlr_is_ocssd_supported(ctrlr) && + features_to_get[i] == SPDK_OCSSD_FEAT_MEDIA_FEEDBACK) { + continue; + } if (get_feature(ctrlr, features_to_get[i]) == 0) { outstanding_commands++; } else { @@ -1243,6 +1248,16 @@ print_controller(struct spdk_nvme_ctrlr *ctrlr, const struct spdk_nvme_transport printf("\n"); } + if (features[SPDK_OCSSD_FEAT_MEDIA_FEEDBACK].valid) { + uint32_t result = features[SPDK_OCSSD_FEAT_MEDIA_FEEDBACK].result; + + printf("OCSSD Media Feedback\n"); + printf("=======================\n"); + printf("High ECC status: %u\n", (result & 0x1)); + printf("Vector High ECC status: %u\n", (result & 0x2 >> 1)); + printf("\n"); + } + if (cdata->hctma.bits.supported) { printf("Host Controlled Thermal Management\n"); printf("==================================\n");