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

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

v4:
 - add space to compare - Vipin Varghese

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..7213b43fe 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

Reply via email to