From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <vipin.varghese@intel.com>
Received: from mga04.intel.com (mga04.intel.com [192.55.52.120])
 by dpdk.org (Postfix) with ESMTP id 3A7865A6A
 for <dev@dpdk.org>; Mon,  5 Nov 2018 18:55:26 +0100 (CET)
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from fmsmga007.fm.intel.com ([10.253.24.52])
 by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;
 05 Nov 2018 09:55:25 -0800
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.54,468,1534834800"; d="scan'208";a="83504920"
Received: from unknown (HELO saesrv02-S2600CWR.intel.com) ([10.224.122.203])
 by fmsmga007.fm.intel.com with ESMTP; 05 Nov 2018 09:55:23 -0800
From: Vipin Varghese <vipin.varghese@intel.com>
To: dev@dpdk.org, thomas@monjalon.net, reshma.pattan@intel.com,
 stephen@networkplumber.org, john.mcnamara@intel.com
Cc: stephen1.byrne@intel.com, michael.j.glynn@intel.com, amol.patel@intel.com,
 Vipin Varghese <vipin.varghese@intel.com>
Date: Mon,  5 Nov 2018 23:21:25 +0530
Message-Id: <20181105175128.33297-6-vipin.varghese@intel.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20181105175128.33297-1-vipin.varghese@intel.com>
References: <20181024064805.23197-9-vipin.varghese@intel.com>
 <20181105175128.33297-1-vipin.varghese@intel.com>
Subject: [dpdk-dev] [PATCH v3 6/9] app/procinfo: add support for show crypto
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Mon, 05 Nov 2018 17:55:26 -0000

Function show_crypto is used for displaying the crypto PMD under
the primary process.

Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
---

V3:
 - replace MACRO to function - Reshma Pathan & Stephen Hemminger
 - add memset for struct elements - Reshma Pathan
 - change display formating of flags - Vipin Varghese
 - use MACRO for string - Vipin Varghese
---
 app/proc-info/main.c | 80 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 79 insertions(+), 1 deletion(-)

diff --git a/app/proc-info/main.c b/app/proc-info/main.c
index 8ec2e9474..2e7f63639 100644
--- a/app/proc-info/main.c
+++ b/app/proc-info/main.c
@@ -1032,10 +1032,88 @@ show_tm(void)
 	STATS_BDR_STR(50, "");
 }
 
+static void
+display_crypto_feature_info(uint64_t x)
+{
+	if (x == 0)
+		return;
+
+	printf("\t  -- feature flags\n");
+	printf("\t\t  + symmetric (%c), asymmetric (%c)\n"
+		"\t\t  + symmetric operation chaining (%c)\n",
+		(x & RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO) ? 'y' : 'n',
+		(x & RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO) ? 'y' : 'n',
+		(x & RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING) ? 'y' : 'n');
+	printf("\t\t  + CPU: SSE (%c), AVX (%c), AVX2 (%c), AVX512 (%c)\n",
+		(x & RTE_CRYPTODEV_FF_CPU_SSE) ? 'y' : 'n',
+		(x & RTE_CRYPTODEV_FF_CPU_AVX) ? 'y' : 'n',
+		(x & RTE_CRYPTODEV_FF_CPU_AVX2) ? 'y' : 'n',
+		(x & RTE_CRYPTODEV_FF_CPU_AVX512) ? 'y' : 'n');
+	printf("\t\t  + AESNI: CPU (%c), HW (%c)\n",
+		(x & RTE_CRYPTODEV_FF_CPU_AESNI)? 'y' : 'n',
+		(x & RTE_CRYPTODEV_FF_HW_ACCELERATED)? 'y' : 'n');
+	printf("\t\t  + INLINE (%c)\n",
+		(x & RTE_CRYPTODEV_FF_SECURITY)? 'y' : 'n');
+	printf("\t\t  + ARM: NEON (%c), CE (%c)\n",
+		(x & RTE_CRYPTODEV_FF_CPU_NEON)? 'y' : 'n',
+		(x & RTE_CRYPTODEV_FF_CPU_ARM_CE)? 'y' : 'n');
+	printf("\t  -- buffer offload\n");
+	printf("\t\t  + IN_PLACE_SGL (%c)\n",
+		(x & RTE_CRYPTODEV_FF_IN_PLACE_SGL) ? 'y' : 'n');
+	printf("\t\t  + OOP_SGL_IN_SGL_OUT (%c)\n",
+		(x & RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT) ? 'y' : 'n');
+	printf("\t\t  + OOP_SGL_IN_LB_OUT (%c)\n",
+		(x & RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT) ? 'y' : 'n');
+	printf("\t\t  + OOP_LB_IN_SGL_OUT (%c)\n",
+		(x & RTE_CRYPTODEV_FF_OOP_LB_IN_SGL_OUT) ? 'y' : 'n');
+	printf("\t\t  + OOP_LB_IN_LB_OUT (%c)\n",
+		(x & RTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT) ? 'y' : 'n');
+}
+
 static void
 show_crypto(void)
 {
-	printf(" crypto\n");
+	uint8_t crypto_dev_count = rte_cryptodev_count(), i;
+
+	snprintf(bdr_str, MAX_STRING_LEN, " show - CRYPTO PMD %"PRIu64,
+		rte_get_tsc_hz());
+	STATS_BDR_STR(10, bdr_str);
+
+	for (i = 0; i < crypto_dev_count; i++) {
+		struct rte_cryptodev_info dev_info;
+		struct rte_cryptodev_stats stats;
+
+		memset(&dev_info, 0, sizeof(dev_info));
+		rte_cryptodev_info_get(i, &dev_info);
+
+		printf("  - device (%u)\n", i);
+		printf("\t  -- name (%s)\n"
+			"\t  -- driver (%s)\n"
+			"\t  -- id (%u) on socket (%d)\n"
+			"\t  -- queue pairs (%d)\n",
+			rte_cryptodev_name_get(i),
+			dev_info.driver_name,
+			dev_info.driver_id,
+			dev_info.device->numa_node,
+			rte_cryptodev_queue_pair_count(i));
+
+		display_crypto_feature_info(dev_info.feature_flags);
+
+		printf("\t  -- stats\n");
+		memset(&stats, 0, sizeof(0));
+		if (rte_cryptodev_stats_get(i, &stats) == 0) {
+			printf("\t\t  + enqueue count (%"PRIu64")"
+				" error (%"PRIu64")\n",
+				stats.enqueued_count,
+				stats.enqueue_err_count);
+			printf("\t\t  + dequeue count (%"PRIu64")"
+				" error (%"PRIu64")\n",
+				stats.dequeued_count,
+				stats.dequeue_err_count);
+		}
+	}
+
+	STATS_BDR_STR(50, "");
 }
 
 static void
-- 
2.17.1