From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1F08445C24; Thu, 31 Oct 2024 16:03:08 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AE52640273; Thu, 31 Oct 2024 16:03:07 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 1D98440264 for ; Thu, 31 Oct 2024 11:43:34 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49V9sOB1026858 for ; Thu, 31 Oct 2024 03:43:34 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=pfpt0220; bh=RVQ+ZHoxd3Z8w6q/mIWjI1I 6NLwTlRGi7ze0OCrGc0w=; b=YTppS70OxDj4nzCnQ0hFj8gYvWUVmjhSxw+eiGc TtptqquU/EmGmUWZgNaPBXUqLVRemZp/h9jI2h6ml7LDWUSRiLkakxP60+gKcUbJ /+BV2ebsmKN0R6yusEbpx1h3hX0X0WKjbY3dFPofechSHekyy9CHdjLSr2ddUKhC j9JyjQMJB//avH+3Ok59wQpnWqEXNhw1x5pvL3YFMBiZmi6v0LwWJ0ZKGf0cSh8O rBzbQMcCPpubaM8cW2/MA1TRQBTQ0udtF3SrgDbREfEpj/huCZIs3DbNLL0fmNrX SjwrcvypA5seOJtiMPV9KfLYZKwer63Md0Zze6a02r/LZ6Q== Received: from dc6wp-exch02.marvell.com ([4.21.29.225]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 42m1hvgkjh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 31 Oct 2024 03:43:33 -0700 (PDT) Received: from DC6WP-EXCH02.marvell.com (10.76.176.209) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 31 Oct 2024 03:43:31 -0700 Received: from marvell.com (10.69.176.80) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Thu, 31 Oct 2024 03:43:26 -0700 From: Gnanesh To: CC: , , Gnanesh Subject: [PATCH 1/1] Cn10K crypto Tests: Added Marvell Cn10K specific crypto Tests to TestCryptoPerfCryptodevPerf Date: Thu, 31 Oct 2024 16:13:22 +0530 Message-ID: <20241031104322.3169217-1-gpalanethra@marvell.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-GUID: lgC6ZvYHgbOgd0Sdxh3vzZsFIR_z6HmT X-Proofpoint-ORIG-GUID: lgC6ZvYHgbOgd0Sdxh3vzZsFIR_z6HmT X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 X-Mailman-Approved-At: Thu, 31 Oct 2024 16:03:06 +0100 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Changes included in this patch: -- New TestCases are added for Cn10K CPT Hardware crypto accelerator. -- when Testing newly added Testcases it is found Necessary to make Below Changes 1> tests/cryptodev_common.py --> bind_qat_device function is updated to generate VFs for the given crypto_dev_id --> added New function bind_mrvl_devices to accept list of PCI Ids and bind it to vfio_pci driver. 2> framework/crb.py --> updated pci_devices_information_uncached_linux Method to handle additional Nic Speeds for Cavium, as it was restricting only to 1 GIG NIC speed 3> framework/settings.py --> Changed the default Cavium NIC driver to rvu_nicpf. 4> nics/net_device.py --> added Missing expect object 5> conf/crypto_perf_cryptodev_perf.cfg --> added Marvell Cn10K configs for crypto_perf_cryptodev_perf 6> framework/ssh_pexpect.py --> output.replace command's output is not set before returning from get_output_all method hence Unnecessarily returning Prompt along with the output 7> tests/TestSuite_crypto_perf_cryptodev_perf.py --> added Marvell CN10K Testcases Updated Below Private functions 6.1> _run_crypto_perf() --> receives additional KW arguments 6.2> _parse_output() ---> Updated to handle Marvell Cn10K app command output 6.3> _run_crypto_perf_throughput() --> receives additional KW arguments Signed-off-by: Gnanesh --- conf/crypto_perf_cryptodev_perf.cfg | 849 ++++++++++++++++++ framework/crb.py | 6 +- framework/settings.py | 4 +- framework/ssh_pexpect.py | 2 +- nics/net_device.py | 3 + tests/TestSuite_crypto_perf_cryptodev_perf.py | 322 ++++++- tests/cryptodev_common.py | 11 +- 7 files changed, 1172 insertions(+), 25 deletions(-) diff --git a/conf/crypto_perf_cryptodev_perf.cfg b/conf/crypto_perf_cryptodev_perf.cfg index f0c86a45..c152ad69 100644 --- a/conf/crypto_perf_cryptodev_perf.cfg +++ b/conf/crypto_perf_cryptodev_perf.cfg @@ -365,3 +365,852 @@ auth-op="generate" auth-key-sz=16 auth-iv-sz=16 digest-sz=4 + +# Marvell Cn10K configs +[test_perf_mrvl_aes_cbc] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-only" +cipher-algo="aes-cbc" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +csv-friendly="True" + +[test_perf_mrvl_aes_gcm_encrypt] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="aead" +aead-algo="aes-gcm" +aead-op="encrypt" +aead-key-sz="16" +aead-iv-sz="12" +aead-aad-sz="16" +digest-sz="16" +csv-friendly="True" + +[test_perf_mrvl_aes_cbc_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-then-auth" +cipher-algo="aes-cbc" +cipher-op="encrypt" +cipher-key-sz="32" +cipher-iv-sz="16" +auth-algo="sha1-hmac" +auth-op="generate" +auth-key-sz="64" +digest-sz="20" +csv-friendly="True" + +[test_perf_mrvl_aes_sha2_256_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-then-auth" +cipher-algo="aes-cbc" +cipher-op="encrypt" +cipher-key-sz="32" +cipher-iv-sz="16" +auth-algo="sha2-256" +auth-op="generate" +auth-key-sz="0" +digest-sz="32" +csv-friendly="True" + +[test_perf_mrvl_zuc_eea3_cipher_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-only" +cipher-algo="zuc-eea3" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +csv-friendly="True" + +[test_perf_mrvl_zuc_eia3_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="zuc-eia3" +auth-op="generate" +auth-key-sz="16" +auth-iv-sz="16" +digest-sz="4" +csv-friendly="True" + +[test_perf_mrvl_aes_gmac_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="aes-gmac" +auth-op="generate" +auth-key-sz="32" +auth-iv-sz="12" +digest-sz="16" +csv-friendly="True" + +[test_perf_mrvl_null_cipher_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-only" +cipher-algo="null" +cipher-op="encrypt" +cipher-key-sz="0" +cipher-iv-sz="0" +csv-friendly="True" + +[test_perf_mrvl_snow3g_uea2_cipher_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-only" +cipher-algo="snow3g-uea2" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +csv-friendly="True" + +[test_perf_mrvl_kasumi_f8_cipher_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-only" +cipher-algo="kasumi-f8" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="8" +csv-friendly="True" + +[test_perf_mrvl_snow3g_uia2_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="snow3g-uia2" +auth-op="generate" +auth-key-sz="16" +auth-iv-sz="16" +digest-sz="4" +csv-friendly="True" + +[test_perf_mrvl_kasumi_f9_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="kasumi-f9" +auth-op="generate" +auth-key-sz="16" +aead-aad-sz="0" +digest-sz="4" +csv-friendly="True" + +[test_perf_mrvl_sha1_hmac_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="sha1-hmac" +auth-op="generate" +auth-key-sz="64" +aead-aad-sz="0" +digest-sz="20" +csv-friendly="True" + +[test_perf_mrvl_sha1_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="sha1" +auth-op="generate" +auth-key-sz="0" +aead-aad-sz="0" +digest-sz="20" +csv-friendly="True" + +[test_perf_mrvl_aes_ctr_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-then-auth" +cipher-algo="aes-ctr" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="sha1-hmac" +auth-op="generate" +auth-key-sz="64" +digest-sz="20" +csv-friendly="True" + +[test_perf_mrvl_3des_cbc_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-then-auth" +cipher-algo="3des-cbc" +cipher-op="encrypt" +cipher-key-sz="24" +cipher-iv-sz="16" +auth-algo="sha1-hmac" +auth-op="generate" +auth-key-sz="64" +digest-sz="20" +csv-friendly="True" + +[test_perf_mrvl_sha1_hmac_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-then-auth" +cipher-algo="3des-cbc" +cipher-op="encrypt" +cipher-key-sz="24" +cipher-iv-sz="16" +auth-algo="sha1-hmac" +auth-op="generate" +auth-key-sz="64" +digest-sz="20" +csv-friendly="True" + +[test_perf_mrvl_sha2_224_hmac_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-then-auth" +cipher-algo="aes-ctr" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="sha2-224-hmac" +auth-op="generate" +auth-key-sz="64" +digest-sz="28" +csv-friendly="True" + +[test_perf_mrvl_sha2_256_hmac_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-then-auth" +cipher-algo="aes-ctr" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="sha2-256-hmac" +auth-op="generate" +auth-key-sz="64" +digest-sz="32" +csv-friendly="True" + +[test_perf_mrvl_sha2_384_hmac_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-then-auth" +cipher-algo="aes-ctr" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="sha2-384-hmac" +auth-op="generate" +auth-key-sz="64" +digest-sz="48" +csv-friendly="True" + +[test_perf_mrvl_aes_cmac_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="1000000" +burst-sz="32" +buffer-sz="64" +optype="auth-then-cipher" +cipher-algo="snow3g-uea2" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="aes-cmac" +auth-op="generate" +auth-key-sz="16" +aead-iv-sz="0" +digest-sz="4" +csv-friendly="True" + +[test_perf_mrvl_aes_ctr_snow_3g_uia2_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="1000000" +burst-sz="32" +buffer-sz="64" +optype="auth-then-cipher" +cipher-algo="aes-ctr" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="snow3g-uia2" +auth-op="generate" +auth-key-sz="16" +auth-iv-sz="16" +digest-sz="4" +csv-friendly="True" + +[test_perf_mrvl_aes_ctr_zuc_eia3_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="1000000" +burst-sz="32" +buffer-sz="64" +optype="auth-then-cipher" +cipher-algo="aes-ctr" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="zuc-eia3" +auth-op="generate" +auth-key-sz="16" +auth-iv-sz="16" +digest-sz="4" +csv-friendly="True" + +[test_perf_mrvl_aes_ctr_aes_cmac_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="1000000" +burst-sz="32" +buffer-sz="64" +optype="auth-then-cipher" +cipher-algo="aes-ctr" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="aes-cmac" +auth-op="generate" +auth-key-sz="16" +auth-iv-sz="0" +digest-sz="4" +csv-friendly="True" + +[test_perf_mrvl_zuc_eea3_snow3g_uia2_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="1000000" +burst-sz="32" +buffer-sz="64" +optype="auth-then-cipher" +cipher-algo="zuc-eea3" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="snow3g-uia2" +auth-op="generate" +auth-key-sz="16" +auth-iv-sz="16" +digest-sz="4" +csv-friendly="True" + +[test_perf_mrvl_zuc_eea3_zuc_eia3_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="1000000" +burst-sz="32" +buffer-sz="64" +optype="auth-then-cipher" +cipher-algo="zuc-eea3" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="zuc-eia3" +auth-op="generate" +auth-key-sz="16" +auth-iv-sz="16" +digest-sz="4" +csv-friendly="True" + +[test_perf_mrvl_zuc_eea3_aes_cmac_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="1000000" +burst-sz="32" +buffer-sz="64" +optype="auth-then-cipher" +cipher-algo="zuc-eea3" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="aes-cmac" +auth-op="generate" +auth-key-sz="16" +auth-iv-sz="0" +digest-sz="4" +csv-friendly="True" + +[test_perf_mrvl_snow3g_uea2_snow3g_uia2_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="1000000" +burst-sz="32" +buffer-sz="64" +optype="auth-then-cipher" +cipher-algo="snow3g-uea2" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="snow3g-uia2" +auth-op="generate" +auth-key-sz="16" +auth-iv-sz="16" +digest-sz="4" +csv-friendly="True" + +[test_perf_mrvl_snow3g_uea2_zuc_eia3_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="1000000" +burst-sz="32" +buffer-sz="64" +optype="auth-then-cipher" +cipher-algo="snow3g-uea2" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="zuc-eia3" +auth-op="generate" +auth-key-sz="16" +auth-iv-sz="16" +digest-sz="4" +csv-friendly="True" + +[test_perf_mrvl_snow3g_uea2_aes_cmac_cipher_then_auth] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="1000000" +burst-sz="32" +buffer-sz="64" +optype="auth-then-cipher" +cipher-algo="snow3g-uea2" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="aes-cmac" +auth-op="generate" +auth-key-sz="16" +auth-iv-sz="0" +digest-sz="4" +csv-friendly="True" + +[test_perf_mrvl_md5_hmac_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="md5-hmac" +auth-op="generate" +auth-key-sz="64" +aead-aad-sz="0" +digest-sz="16" +csv-friendly="True" + +[test_perf_mrvl_aes_ctr_cipher_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-only" +cipher-algo="aes-ctr" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +csv-friendly="True" + +[test_perf_mrvl_3des_cbc_cipher_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-only" +cipher-algo="3des-cbc" +cipher-op="encrypt" +cipher-key-sz="24" +cipher-iv-sz="16" +csv-friendly="True" + +[test_perf_mrvl_sha2_224_hmac_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="sha2-224-hmac" +auth-op="generate" +auth-key-sz="64" +aead-aad-sz="0" +digest-sz="28" +csv-friendly="True" + +[test_perf_mrvl_sha2_256_hmac_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="sha2-256-hmac" +auth-op="generate" +auth-key-sz="64" +aead-aad-sz="0" +digest-sz="32" +csv-friendly="True" + +[test_perf_mrvl_sha2_384_hmac_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="sha2-384-hmac" +auth-op="generate" +auth-key-sz="64" +aead-aad-sz="0" +digest-sz="48" +csv-friendly="True" + +[test_perf_mrvl_sha2_512_hmac_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="sha2-512-hmac" +auth-op="generate" +auth-key-sz="64" +aead-aad-sz="0" +digest-sz="64" +csv-friendly="True" + +[test_perf_mrvl_aes_xts__cipher_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-only" +cipher-algo="aes-xts" +cipher-op="encrypt" +cipher-key-sz="64" +cipher-iv-sz="16" +csv-friendly="True" + +[test_perf_mrvl_des_cbc_cipher_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-only" +cipher-algo="des-cbc" +cipher-op="encrypt" +cipher-key-sz="8" +cipher-iv-sz="8" +csv-friendly="True" + +[test_perf_mrvl_md5_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="md5" +auth-op="generate" +auth-key-sz="0" +aead-aad-sz="0" +digest-sz="16" +csv-friendly="True" + +[test_perf_mrvl_sha512_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="sha2-512" +auth-op="generate" +auth-key-sz="0" +aead-aad-sz="0" +digest-sz="64" +csv-friendly="True" + +[test_perf_mrvl_sha384_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="sha2-384" +auth-op="generate" +auth-key-sz="0" +aead-aad-sz="0" +digest-sz="48" +csv-friendly="True" + +[test_perf_mrvl_sha256_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="sha2-256" +auth-op="generate" +auth-key-sz="0" +aead-aad-sz="0" +digest-sz="32" +csv-friendly="True" + +[test_perf_mrvl_sha224_auth_only] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-only" +auth-algo="sha2-224" +auth-op="generate" +auth-key-sz="0" +aead-aad-sz="0" +digest-sz="28" +csv-friendly="True" + +[test_perf_mrvl_snow3g_uea2_snow3g_uia2] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="auth-then-cipher" +cipher-algo="snow3g-uea2" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="snow3g-uia2" +auth-op="generate" +auth-key-sz="16" +auth-iv-sz="16" +digest-sz="4" +csv-friendly="True" + +[test_perf_mrvl_sha1_hmac_armv8] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-then-auth" +cipher-algo="aes-cbc" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="sha1-hmac" +auth-op="generate" +auth-key-sz="64" +digest-sz="20" +csv-friendly="True" + +[test_perf_mrvl_sha2_hmac_armv8] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-then-auth" +cipher-algo="aes-cbc" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="sha2-256-hmac" +auth-op="generate" +auth-key-sz="64" +digest-sz="20" +csv-friendly="True" + +[test_mrvl_buffer] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +buffer-sz="[64,128,256,512,1024,1280,2048,4096,8192,16384]" +optype="cipher-then-auth" +cipher-algo="aes-cbc" +cipher-op="encrypt" +cipher-key-sz="32" +cipher-iv-sz="16" +auth-algo="sha1-hmac" +auth-op="generate" +auth-key-sz="64" +digest-sz="20" +csv-friendly="True" + +[test_mrvl_chacha20_poly1305_aead] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="aead" +aead-algo="chacha20-poly1305" +aead-op="encrypt" +aead-key-sz="32" +aead-iv-sz="12" +aead-aad-sz="32" +digest-sz="16" +csv-friendly="True" + +[test_mrvl_crypto_sha2_hmac_armv8] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-then-auth" +cipher-algo="aes-cbc" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="sha2-256-hmac" +auth-op="generate" +auth-key-sz="64" +digest-sz="20" +csv-friendly="True" + +[test_mrvl_devtype] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-only" +cipher-algo="aes-cbc" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +csv-friendly="True" + +[test_mrvl_crypto_sha1_hmac_armv8] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-then-auth" +cipher-algo="aes-cbc" +cipher-op="encrypt" +cipher-key-sz="16" +cipher-iv-sz="16" +auth-algo="sha1-hmac" +auth-op="generate" +auth-key-sz="64" +digest-sz="20" +csv-friendly="True" + +[test_mrvl_ptest] +silent="True" +ptest=["throughput","latency","pmd-cyclecount"] +pool-sz="16384" +total-ops="10000000" +burst-sz="32" +optype="cipher-then-auth" +cipher-algo="aes-cbc" +cipher-op="encrypt" +cipher-key-sz="32" +cipher-iv-sz="16" +auth-algo="sha1-hmac" +auth-op="generate" +auth-key-sz="64" +digest-sz="20" +csv-friendly="True" + +[test_mrvl_burst] +silent="True" +ptest="throughput" +pool-sz="16384" +total-ops="10000000" +burst-sz=["16", "24", "32"] +optype="cipher-then-auth" +cipher-algo="aes-cbc" +cipher-op="encrypt" +cipher-key-sz="32" +cipher-iv-sz="16" +auth-algo="sha1-hmac" +auth-op="generate" +auth-key-sz="64" +digest-sz="20" +csv-friendly="True" diff --git a/framework/crb.py b/framework/crb.py index 9e3b0a58..2fe9d147 100644 --- a/framework/crb.py +++ b/framework/crb.py @@ -374,15 +374,15 @@ class Crb(object): pass for i in range(len(match)): - # check if device is cavium and check its linkspeed, append only if it is 10G + # for cavium supported link speed specfied under linkspeeds if "177d:" in match[i][1]: - linkspeed = "10000" + linkspeeds = ["40000", "10000", "25000", "50000", "100000"] nic_linkspeed = self.send_expect( "cat /sys/bus/pci/devices/%s/net/*/speed" % match[i][0], "# ", alt_session=True, ) - if nic_linkspeed.split()[0] == linkspeed: + if nic_linkspeed.split()[0] in linkspeeds: self.pci_devices_info.append((match[i][0], match[i][1])) else: self.pci_devices_info.append((match[i][0], match[i][1])) diff --git a/framework/settings.py b/framework/settings.py index 1a561dda..b2c371f8 100644 --- a/framework/settings.py +++ b/framework/settings.py @@ -166,8 +166,8 @@ DRIVERS = { "cavium_a034": "thunder-nicvf", "cavium_0011": "thunder-nicvf", "IXGBE_10G-X550EM_X_SFP": "ixgbe", - "cavium_a063": "octeontx2-nicpf", - "cavium_a064": "octeontx2-nicvf", + "cavium_a063": "rvu_nicpf", + "cavium_a064": "rvu_nicvf", "ICE_100G-E810C_QSFP": "ice", "ICE_25G-E810C_SFP": "ice", "ICE_25G-E823C_QSFP": "ice", diff --git a/framework/ssh_pexpect.py b/framework/ssh_pexpect.py index 2132c066..a96087d2 100644 --- a/framework/ssh_pexpect.py +++ b/framework/ssh_pexpect.py @@ -186,7 +186,7 @@ class SSHPexpect: def get_output_all(self): output = self.session.before - output.replace("[PEXPECT]", "") + output = output.replace("[PEXPECT]#", "") return output def close(self, force=False): diff --git a/nics/net_device.py b/nics/net_device.py index 0f9c1af4..dd0d0e92 100644 --- a/nics/net_device.py +++ b/nics/net_device.py @@ -43,6 +43,7 @@ class NetDevice(object): if not isinstance(crb, Crb): raise Exception(" Please input the instance of Crb!!!") self.crb = crb + self.__send_expect = self.crb.send_expect self.domain_id = domain_id self.bus_id = bus_id self.devfun_id = devfun_id @@ -727,6 +728,8 @@ class NetDevice(object): "/sys/bus/pci/devices/%s:%s:%s" % (domain_id, bus_id, devfun_id), vf_reg_file, ) + self.__send_expect("echo 0 > %s" % + (vf_reg_path), "# ") self.__send_expect("echo %d > %s" % (int(vf_num), vf_reg_path), "# ") def generate_sriov_vfs_linux_igb_uio(self, domain_id, bus_id, devfun_id, vf_num): diff --git a/tests/TestSuite_crypto_perf_cryptodev_perf.py b/tests/TestSuite_crypto_perf_cryptodev_perf.py index a3f48eee..b435cefa 100644 --- a/tests/TestSuite_crypto_perf_cryptodev_perf.py +++ b/tests/TestSuite_crypto_perf_cryptodev_perf.py @@ -59,14 +59,74 @@ class TestCryptoPerfCryptodevPerf(TestCase): "# ", 5, ) - - cc.bind_qat_device(self, "vfio-pci") + if self.nic == "cavium_a063": + count = len(self.get_suite_cfg().get('l').split(",")) - 1 + cc.bind_qat_device(self, "vfio-pci", generate_vfs=True, vf_count=count) + else: + cc.bind_qat_device(self, "vfio-pci") src_files = ["dep/test_aes_cbc.data", "dep/test_aes_gcm.data"] self.dut_file_dir = "/tmp" for file in src_files: self.dut.session.copy_file_to(file, self.dut_file_dir) def tear_down_all(self): + if self.nic == "cavium_a063": + cc.bind_qat_device(self, "vfio-pci", generate_vfs=True, + vf_count=2) + import pandas as pd + tuples = [('TestCase',), ('performance', 'failed_enq'), + ('performance', 'failed_deq'), + ('performance', 'throughput_mops'), + ('performance', 'cycle_buf'), + ('performance', 'throughput', 'value'), + ('performance', 'throughput', 'delta'), + ('parameters', 'core_num/thread_num'), + ('parameters', 'frame_size'), + ('parameters', 'burst_size'), + ('parameters', 'total_ops'), ('status',)] + mindex = pd.MultiIndex.from_tuples(tuples) + index = 0 + df = pd.DataFrame([], columns=mindex) + for tname, data in self._perf_result.items(): + for dt in data: + for key, value in dt.items(): + df.loc[index, 'TestCase'] = tname + if key == 'status': + df.loc[index, (key)] = value + continue + for item in value: + if item['name'] == 'throughput': + df.loc[index, (key, item['name'], 'value')] = item['value'] + df.loc[index, (key, item['name'], 'delta')] = item['delta'] + else: + df.loc[index, (key, item['name'])] = item['value'] + index += 1 + perf_xl = self.logger.log_path + "/" + "perf_cryptodev_result.xls" + writer = pd.ExcelWriter(perf_xl, engine='xlsxwriter') + wb = writer.book + df.to_excel(writer, sheet_name='Sheet1') + ws = writer.sheets["Sheet1"] + merge_format = wb.add_format({"bold": 1,"border": 1,"align": "center", + "valign": "vcenter"}) + ws.merge_range('B1:B3', "TestCase", merge_format) + ws.merge_range('C2:C3', "failed_enq", merge_format) + ws.merge_range('D2:D3', "failed_deq", merge_format) + ws.merge_range('E2:E3', "throughput_mops", merge_format) + ws.merge_range('F2:F3', "throughput_mops", merge_format) + ws.merge_range('I2:I3', "core_num/thread_num", merge_format) + ws.merge_range('J2:J3', "frame_size", merge_format) + ws.merge_range('K2:K3', "burst_size", merge_format) + ws.merge_range('L2:L3', "total_ops", merge_format) + ws.merge_range('M1:M3', "status", merge_format) + + format1 = wb.add_format({"bg_color": "#C6EFCE", "font_color": "#006100", "border": 1}) + format2 = wb.add_format({"bg_color": "#FFC7CE", "font_color": "#9C0006"}) + ws.conditional_format("B1:M3", {"type": "cell", "criteria": ">=", "value": 0 , 'format': format2}) + condition = 'B5:M%s'%(5+len(df)-1) + ws.conditional_format(condition, {'type': 'no_blanks', 'format':format1}) + ws.autofit() + + wb.close() if self._perf_result: with open( self.logger.log_path + "/" + "perf_cryptodev_result.json", "a" @@ -175,12 +235,197 @@ class TestCryptoPerfCryptodevPerf(TestCase): def test_scheduler_zuc(self): self._run_crypto_perf_throughput() + # Marvell CN10K Testcases + def _crypto_func_cn10k(self): + """Functional tests Helper + Returns: + None + """ + self._run_crypto_func() + + def _crypto_perf_cn10k(self): + """Perf tests Helper function + Returns: + None + """ + self._run_crypto_perf_throughput(expected="# ", + trim_whitespace=False) + def test_perf_mrvl_aes_cbc(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_aes_gcm_encrypt(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_aes_cbc_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_aes_sha2_256_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_zuc_eea3_cipher_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_zuc_eia3_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_aes_gmac_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_null_cipher_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_snow3g_uea2_cipher_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_kasumi_f8_cipher_only(self): + self._crypto_perf_cn10k() #F + + def test_perf_mrvl_snow3g_uia2_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_kasumi_f9_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha1_hmac_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha1_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_aes_ctr_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_aes_ctr_snow_3g_uia2_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_aes_cmac_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_3des_cbc_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha1_hmac_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha2_224_hmac_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha2_256_hmac_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha2_384_hmac_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_aes_ctr_snow_3g_uia2_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_aes_ctr_zuc_eia3_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_aes_ctr_aes_cmac_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_zuc_eea3_snow3g_uia2_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_zuc_eea3_zuc_eia3_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_zuc_eea3_aes_cmac_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_snow3g_uea2_snow3g_uia2_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_snow3g_uea2_zuc_eia3_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_snow3g_uea2_aes_cmac_cipher_then_auth(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_md5_hmac_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_aes_ctr_cipher_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_3des_cbc_cipher_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha2_224_hmac_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha2_256_hmac_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha2_384_hmac_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha2_512_hmac_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_aes_xts__cipher_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_des_cbc_cipher_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_md5_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha512_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha384_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha256_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha224_auth_only(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_snow3g_uea2_snow3g_uia2(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha1_hmac_armv8(self): + self._crypto_perf_cn10k() + + def test_perf_mrvl_sha2_hmac_armv8(self): + self._crypto_perf_cn10k() + + def test_mrvl_ptest(self): + self._crypto_func_cn10k() + + def test_mrvl_burst(self): + self._crypto_func_cn10k() + + def test_mrvl_devtype(self): + self._crypto_func_cn10k() + + def test_mrvl_crypto_sha1_hmac_armv8(self): + self._crypto_func_cn10k() + + def test_mrvl_chacha20_poly1305_aead(self): + self._crypto_func_cn10k() + + def test_mrvl_crypto_sha2_hmac_armv8(self): + self._crypto_func_cn10k() + + def test_mrvl_buffer(self): + self._crypto_func_cn10k() + # Private functions def _run_crypto_func(self): + """ Runs Crypto functional test. + Returns: + None + """ + if cc.is_test_skip(self): return - - cores = ",".join(self.dut.get_core_list("1S/2C/1T")) + core_list = self.get_suite_cfg().get('core_list',"1S/2C/1T") + cores = ",".join(self.dut.get_core_list(core_list)) config = {"l": cores} devices = self._get_crypto_device(1) if not devices: @@ -206,12 +451,22 @@ class TestCryptoPerfCryptodevPerf(TestCase): out = self.dut.send_command( "cat %s/%s.txt" % (self.dut_file_dir, self.running_case), 30 - ) - + ).strip() self.verify("Error" not in out, "Test function failed") self.verify("failed" not in out, "Test function failed") - - def _run_crypto_perf(self): + assert (out != ""), "No output" + + def _run_crypto_perf(self, **kwargs): + """ Runs Crypto Performance test. + Args: + **kwargs: + expected: send_expect match prompt + trim_whitespace: trime whitespace from command output + Returns: + None + """ + expected = kwargs.get("expected", "#") + trim_whitespace = kwargs.get("trim_whitespace", True) if cc.is_test_skip(self): return "skip" @@ -222,13 +477,14 @@ class TestCryptoPerfCryptodevPerf(TestCase): return "skip" eal_opt_str = cc.get_eal_opt_str(self, devices) - crypto_perf_opt_str = self._get_crypto_perf_opt_str() + crypto_perf_opt_str = self._get_crypto_perf_opt_str(**kwargs) cmd_str = cc.get_dpdk_app_cmd_str( self._app_path, eal_opt_str, crypto_perf_opt_str ) try: - out = self.dut.send_expect(cmd_str, "#", 600) + out = self.dut.send_expect(cmd_str, expected, 600, + trim_whitespace=trim_whitespace) except Exception as ex: self.logger.error(ex) raise ex @@ -237,25 +493,44 @@ class TestCryptoPerfCryptodevPerf(TestCase): return results - def _get_crypto_perf_opt_str(self, override_crypto_perf_opts={}): + def _get_crypto_perf_opt_str(self, **kwargs): + """get crypto perf app option string + args: + **kwargs: + override_crypto_perf_opts- Suite/Case specfic perf + app config to overwrite defaults + Returns: + crypto perf option string + """ + override_crypto_perf_opts = kwargs.get("override_crypto_perf_opts", {}) return cc.get_opt_str( self, self._default_crypto_perf_opts, override_crypto_perf_opts ) def _parse_output(self, output): try: + dtype = self.get_case_cfg().get('devtype') + match_str = r" lcore id|#lcore id" lines = output.split("\r\n") line_nb = len(lines) self.logger.debug("Total output lines: " + str(line_nb)) for line_index in range(line_nb): - if lines[line_index].startswith(" lcore id"): + if re.match(match_str, lines[line_index]): self.logger.debug("data output line from: " + str(line_index)) break - data_line = line_index - 1 + if dtype == 'crypto_cn10k': + data_line = line_index + 2 + else: + data_line = line_index - 1 + + if len(lines[data_line].split(","))>1: + pattern = re.compile(r',') + else: + pattern = re.compile(r'\s+') results = [] - pattern = re.compile(r"\s+") + for line in lines[data_line:-1]: print(line) result = {} @@ -334,9 +609,15 @@ class TestCryptoPerfCryptodevPerf(TestCase): cpu_info[key] = value.strip() core, thread = 0, 0 lcores = self.get_case_cfg()["l"].split(",") + if 'Core(s) per cluster' in out: + cl_soc1 = 'Core(s) per cluster' + cl_soc2 = 'Cluster(s)' + else: + cl_soc1 = 'Core(s) per socket' + cl_soc2 = 'Socket(s)' for lcore in lcores[1:]: - if int(lcore.strip()) < int(cpu_info["Core(s) per socket"]) * int( - cpu_info["Socket(s)"] + if int(lcore.strip()) < int(cpu_info[cl_soc1]) * int( + cpu_info[cl_soc2] ): core += 1 thread += 1 @@ -362,6 +643,11 @@ class TestCryptoPerfCryptodevPerf(TestCase): dev = "crypto_snow3g" elif self.get_case_cfg()["devtype"] == "crypto_zuc": dev = "crypto_zuc" + elif self.get_case_cfg()["devtype"] == "crypto_cn10k": + dev = "crypto_cn10k" + vf = cc.get_qat_devices(self, cpm_num=1, num=num) + device["a"] = ' -a '.join(vf) + device["vdev"] = None elif self.get_case_cfg()["devtype"] == "crypto_scheduler": dev = "crypto_scheduler" w = cc.get_qat_devices(self, cpm_num=3, num=num * 3) @@ -388,8 +674,8 @@ class TestCryptoPerfCryptodevPerf(TestCase): return device - def _run_crypto_perf_throughput(self): - results = self._run_crypto_perf() + def _run_crypto_perf_throughput(self, **kwargs): + results = self._run_crypto_perf(**kwargs) if results == "skip": return self.verify(results, "test results is none, Test Failed") diff --git a/tests/cryptodev_common.py b/tests/cryptodev_common.py index b550b468..91067b05 100644 --- a/tests/cryptodev_common.py +++ b/tests/cryptodev_common.py @@ -8,7 +8,9 @@ from nics.net_device import GetNicObj conf = SuiteConf("cryptodev_sample") -def bind_qat_device(test_case, driver="igb_uio"): +def bind_qat_device(test_case, driver="igb_uio", generate_vfs=False, + vf_count=2, drvr_type='generic'): + if driver == "vfio-pci": test_case.dut.send_expect("modprobe vfio", "#", 10) test_case.dut.send_expect("modprobe vfio-pci", "#", 10) @@ -38,6 +40,8 @@ def bind_qat_device(test_case, driver="igb_uio"): devfun_id = addr_array[2] pf_port = GetNicObj(test_case.dut, domain_id, bus_id, devfun_id) + if generate_vfs: + pf_port.generate_sriov_vfs_linux(domain_id, bus_id, devfun_id, vf_count, drvr_type) sriov_vfs_pci = pf_port.get_sriov_vfs_pci() if not sriov_vfs_pci: raise Exception("can not get vf pci") @@ -51,6 +55,11 @@ def bind_qat_device(test_case, driver="igb_uio"): test_case.dev = dev +def bind_mrvl_devices(test_case, driver='vfio-pci', **kwargs): + pci_list = kwargs.get("pci_list").split() + for pci in pci_list: + test_case.dut.bind_eventdev_port(driver, pci) + return pci_list def get_qat_devices(test_case, cpm_num=None, num=1): if not cpm_num: -- 2.25.1