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 73EC145CC3; Thu, 14 Nov 2024 20:30:11 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6389B42ED4; Thu, 14 Nov 2024 20:30:11 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 5747D402DB for ; Thu, 14 Nov 2024 20:30:09 +0100 (CET) Received: from pps.filterd (m0431383.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4AEArfDv006328; Thu, 14 Nov 2024 11:30:08 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pfpt0220; bh=d M23I0uhNvmRoxvszdi4Nff+WDTQNDLEaQBoWpJKZEQ=; b=E2KVuEcEZKhtg9C0f YNehPqAczzbFoBuQwrC31EzSwlbNUjY0SPLzKyKrNWRAwCEFvFWBLvsEvfgoGcmU OJNun/5tZfzvsRZ2/wJSHoPisHidKTxhdIILcm277GmFFJe9hpf+3CioPVYS34A7 LV1F4grYvu8fDWXHnKEJj6GzeE9Ct5cAM+uXtn8j5cTVZxkluapBf+FFDNvr6zQ1 bksiysuMQ3jv8qA/xsSG2deUyQLebjH+74xiBIPnMocI9lyNuPpCM6MwWU9Pi0Uk pEkE4i7OiQgijxL+8vn0XuHtKYH4Lns1W/pb6GL/dCNYlNcZWOmTvOHkfvewIWDe 1lN5Q== Received: from dc5-exch05.marvell.com ([199.233.59.128]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 42wfuth2d0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 Nov 2024 11:30:08 -0800 (PST) Received: from DC5-EXCH05.marvell.com (10.69.176.209) by DC5-EXCH05.marvell.com (10.69.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 14 Nov 2024 11:30:05 -0800 Received: from marvell.com (10.69.176.80) by DC5-EXCH05.marvell.com (10.69.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Thu, 14 Nov 2024 11:30:04 -0800 From: Gnanesh To: , , CC: , , Subject: [PATCH v2 1/1] tests/TestSuite_crypto_perf_cryptodev_perf:Marvell Date: Fri, 15 Nov 2024 00:59:39 +0530 Message-ID: <20241114192939.3682606-1-gpalanethra@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-GUID: wVK2mUDzUrF2PkibQ2aC26HspNQoCj13 X-Proofpoint-ORIG-GUID: wVK2mUDzUrF2PkibQ2aC26HspNQoCj13 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.687,Hydra:6.0.235,FMLib:17.0.607.475 definitions=2020-10-13_15,2020-10-13_02,2020-04-07_01 X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Changes included in this patch: New TestCases are added for marvell Cn10K Hardware crypto accelerator when Testing newly added Testcases it is found Necessary to make Below Changes 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. 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 framework/settings.py Changed the default Cavium NIC driver to rvu_nicpf. nics/net_device.py added Missing expect object conf/crypto_perf_cryptodev_perf.cfg added Marvell Cn10K configs for crypto_perf_cryptodev_perf 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 tests/TestSuite_crypto_perf_cryptodev_perf.py added Marvell CN10K Testcases Updated Below Private functions _run_crypto_func() --> receives additional KW arguments _run_crypto_perf() --> receives additional KW arguments _parse_output() ---> Updated to handle Marvell Cn10K app command output _run_crypto_perf_throughput() --> receives additional KW arguments Signed-off-by: Gnanesh --- v2: * crb.py: Removed the check for link speed restriction for cavium nics (Discussed with the Team) * reverted to generate_sriov_vfs() from generate_sriov_vfs_linux() in bind_qat_device() function * bind_qat_device() renamed to bind_hardware_device(), handled for all crypto testcases conf/crypto_perf_cryptodev_perf.cfg | 851 ++++++++++++++++++ framework/crb.py | 13 +- framework/settings.py | 4 +- framework/ssh_pexpect.py | 2 +- nics/net_device.py | 3 + tests/TestSuite_crypto_perf_cryptodev_perf.py | 322 ++++++- tests/TestSuite_fips_cryptodev.py | 2 +- tests/TestSuite_ipsec_gw_cryptodev_func.py | 2 +- tests/TestSuite_l2fwd_cryptodev_func.py | 2 +- tests/TestSuite_virtio_perf_cryptodev_func.py | 2 +- tests/cryptodev_common.py | 27 +- 11 files changed, 1190 insertions(+), 40 deletions(-) diff --git a/conf/crypto_perf_cryptodev_perf.cfg b/conf/crypto_perf_cryptodev_perf.cfg index f0c86a45..d586ab82 100644 --- a/conf/crypto_perf_cryptodev_perf.cfg +++ b/conf/crypto_perf_cryptodev_perf.cfg @@ -3,6 +3,7 @@ l="9,10" total-ops=30000000 buffer-sz="64,128,256,512,1024,2048" +devtype="crypto_cn10k" [test_verify_aesni_mb] ptest="verify" @@ -365,3 +366,853 @@ 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]" +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" +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..323c6bcd 100644 --- a/framework/crb.py +++ b/framework/crb.py @@ -374,18 +374,7 @@ 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 - if "177d:" in match[i][1]: - linkspeed = "10000" - 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: - self.pci_devices_info.append((match[i][0], match[i][1])) - else: - self.pci_devices_info.append((match[i][0], match[i][1])) + self.pci_devices_info.append((match[i][0], match[i][1])) def pci_devices_information_uncached_freebsd(self): """ 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..8ac605d0 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_hardware_device(self, "vfio-pci", generate_vfs=True, vf_count=count) + else: + cc.bind_hardware_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_hardware_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/TestSuite_fips_cryptodev.py b/tests/TestSuite_fips_cryptodev.py index eb8ffc30..f8ec1ba3 100644 --- a/tests/TestSuite_fips_cryptodev.py +++ b/tests/TestSuite_fips_cryptodev.py @@ -15,7 +15,7 @@ class TestFipsCryptodev(TestCase): self.verify("Error" not in out, "Compilation error") self.verify("No such" not in out, "Compilation error") self.vf_driver = self.get_suite_cfg()["vf_driver"] - cc.bind_qat_device(self, "vfio-pci") + cc.bind_hardware_device(self, "vfio-pci") self._app_path = self.dut.apps_name["fips_validation"] self._default_fips_opts = { "req-file": None, diff --git a/tests/TestSuite_ipsec_gw_cryptodev_func.py b/tests/TestSuite_ipsec_gw_cryptodev_func.py index d9f6f626..d91adb01 100644 --- a/tests/TestSuite_ipsec_gw_cryptodev_func.py +++ b/tests/TestSuite_ipsec_gw_cryptodev_func.py @@ -53,7 +53,7 @@ class TestIPsecGwCryptodevFunc(TestCase): self.verify("Error" not in out, "Compilation error") self.verify("No such" not in out, "Compilation error") - cc.bind_qat_device(self, self.drivername) + cc.bind_hardware_device(self, self.drivername) self._default_ipsec_gw_opts = { "config": '"(0,0,%s),(1,0,%s)"' % tuple(self.core_list[-2:]), diff --git a/tests/TestSuite_l2fwd_cryptodev_func.py b/tests/TestSuite_l2fwd_cryptodev_func.py index a1f562ab..f2e60c17 100644 --- a/tests/TestSuite_l2fwd_cryptodev_func.py +++ b/tests/TestSuite_l2fwd_cryptodev_func.py @@ -61,7 +61,7 @@ class TestL2fwdCryptodevFunc(TestCase): self.verify("Error" not in out, "Compilation error") self.verify("No such" not in out, "Compilation error") - cc.bind_qat_device(self, self.drivername) + cc.bind_hardware_device(self, self.drivername) def set_up(self): pass diff --git a/tests/TestSuite_virtio_perf_cryptodev_func.py b/tests/TestSuite_virtio_perf_cryptodev_func.py index 83bcf813..89ab8e45 100644 --- a/tests/TestSuite_virtio_perf_cryptodev_func.py +++ b/tests/TestSuite_virtio_perf_cryptodev_func.py @@ -59,7 +59,7 @@ class TestVirtioPerfCryptodevFunc(TestCase): self.mem_channel = self.dut.get_memory_channels() self.dut.build_dpdk_apps("./examples/vhost_crypto") - cc.bind_qat_device(self, self.drivername) + cc.bind_hardware_device(self, self.drivername) self.vf_assign_method = "vfio-pci" self.dut.setup_modules(None, self.vf_assign_method, None) diff --git a/tests/cryptodev_common.py b/tests/cryptodev_common.py index b550b468..1e65fc2c 100644 --- a/tests/cryptodev_common.py +++ b/tests/cryptodev_common.py @@ -8,7 +8,21 @@ from nics.net_device import GetNicObj conf = SuiteConf("cryptodev_sample") -def bind_qat_device(test_case, driver="igb_uio"): +def bind_hardware_device(test_case, driver="igb_uio", generate_vfs=False, vf_count=2): + """bind Hardware devices to specific driver. generate VFs if required + Args: + test_case: + framework testcase object + driver: + name of the driver + generate_vfs: + default to False + vf_count: + no of VFs to generate + Returns: + None + """ + if driver == "vfio-pci": test_case.dut.send_expect("modprobe vfio", "#", 10) test_case.dut.send_expect("modprobe vfio-pci", "#", 10) @@ -16,7 +30,7 @@ def bind_qat_device(test_case, driver="igb_uio"): if "crypto_dev_id" in conf.suite_cfg: dev_id = conf.suite_cfg["crypto_dev_id"] test_case.logger.info( - "specified the qat hardware device id in cfg: {}".format(dev_id) + "specified the hardware device id in cfg: {}".format(dev_id) ) out = test_case.dut.send_expect( "lspci -D -d:{}|awk '{{print $1}}'".format(dev_id), "# ", 10 @@ -38,6 +52,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(vf_count) sriov_vfs_pci = pf_port.get_sriov_vfs_pci() if not sriov_vfs_pci: raise Exception("can not get vf pci") @@ -47,10 +63,15 @@ def bind_qat_device(test_case, driver="igb_uio"): test_case.dut.bind_eventdev_port(driver, " ".join(sriov_vfs_pci)) if not dev: - raise Exception("can not find qat device") + raise Exception("can not find hardware device") 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