test suite reviews and discussions
 help / color / mirror / Atom feed
From: Gnanesh <gpalanethra@marvell.com>
To: <dts@dpdk.org>, <probb@iol.unh.edu>, <ccheng@iol.unh.edu>
Cc: <gpalanethra@marvell.com>, <njogarao@marvell.com>,
	<brajendra@marvell.com>
Subject: [PATCH v2 1/1] tests/TestSuite_crypto_perf_cryptodev_perf:Marvell
Date: Fri, 15 Nov 2024 00:59:39 +0530	[thread overview]
Message-ID: <20241114192939.3682606-1-gpalanethra@marvell.com> (raw)
In-Reply-To: <CAJvnSUAKXwXtPe3SMwW_7iAcf1E6qj4bmz2M4+S_a+N0jfu4kw@mail.gmail.com>

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 <gpalanethra@marvell.com>
---
 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


      parent reply	other threads:[~2024-11-14 19:30 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-30 16:44 [PATCH 1/1] Cn10K crypto Tests: Added Marvell Cn10K specific crypto Tests to TestCryptoPerfCryptodevPerf Gnanesh
2024-10-31 10:09 ` David Marchand
2024-10-31 22:15 ` Patrick Robb
2024-11-14 19:22   ` [EXTERNAL] " Gnanesh Kambalu Palanethra
2024-11-14 19:29   ` Gnanesh [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241114192939.3682606-1-gpalanethra@marvell.com \
    --to=gpalanethra@marvell.com \
    --cc=brajendra@marvell.com \
    --cc=ccheng@iol.unh.edu \
    --cc=dts@dpdk.org \
    --cc=njogarao@marvell.com \
    --cc=probb@iol.unh.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).