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 1/1] Added Mrvell Cn10K specifc Tests to DTS testsuites
Date: Mon, 18 Nov 2024 10:44:14 +0530	[thread overview]
Message-ID: <20241118051414.3690501-1-gpalanethra@marvell.com> (raw)

   changes:
     tests/TestSuite_fips_cryptodev.py
     tests/TestSuite_inline_ipsec.py
     tests/TestSuite_ipsec_gw_cryptodev_func.py
     tests/TestSuite_l2fwd_cryptodev_func.py
     conf/fips_cryptodev.cfg
     conf/inline_ipsec.cfg
     conf/ipsec_gw_cryptodev_func.cfg
     conf/l2fwd_cryptodev_func.cfg
     conf/cryptodev_sample.cfg
     framework/config.py
     framework/crb.py
---
  Note: 
    when we apply this patch on top of my first patch submission [v2, 1/1 tests/TestSuite_crypto_perf_cryptodev_perf],
    we may need to resolve few testcase conflict wrt change: bind_qat_device() ==> bind_hardware_device()
    
  New conf Files:
     conf/inline_ipsec.cfg
     conf/l2fwd_cryptodev_func.cfg
  Other config changes:
     conf/ipsec_gw_cryptodev_func.cfg
     conf/fips_cryptodev.cfg
     conf/cryptodev_sample.cfg
         Added EAL options as keys, we can use it to differentiate from app command options

  Few framework related changes are required:
     framework/config.py
         for configparser maintain the case as per the config file. case sensitive file loading
         some strings will raise syntax error during eval. expecting for syntax error
         we can have keys that has no value from config files.
     framework/crb.py
       changes are made to get_dpdk_pids() function
          pid RegEx is modified
          updated the lsof command with grep only for DPDK processes
          when killing dpdk process Ids, include only unique process Ids.
       updated _is_container() function.
          systemd-detect-virt program may not be available in all systems, added check for command not found

 conf/cryptodev_sample.cfg                  |   9 +
 conf/fips_cryptodev.cfg                    |  96 +++++
 conf/inline_ipsec.cfg                      |  85 ++++
 conf/ipsec_gw_cryptodev_func.cfg           | 195 +++++++++
 conf/l2fwd_cryptodev_func.cfg              | 441 +++++++++++++++++++++
 framework/config.py                        |  10 +
 framework/crb.py                           |  14 +-
 tests/TestSuite_fips_cryptodev.py          | 133 ++++++-
 tests/TestSuite_inline_ipsec.py            | 205 ++++++++--
 tests/TestSuite_ipsec_gw_cryptodev_func.py |  82 +++-
 tests/TestSuite_l2fwd_cryptodev_func.py    | 116 ++++--
 11 files changed, 1304 insertions(+), 82 deletions(-)
 create mode 100644 conf/inline_ipsec.cfg
 create mode 100644 conf/l2fwd_cryptodev_func.cfg

diff --git a/conf/cryptodev_sample.cfg b/conf/cryptodev_sample.cfg
index 4aade663..bd9b48f6 100644
--- a/conf/cryptodev_sample.cfg
+++ b/conf/cryptodev_sample.cfg
@@ -4,3 +4,12 @@ crypto_dev_id="37c8"
 
 # your special settings for eal
 socket-mem="2048,0"
+[-eal-opts]
+-c:
+-l:
+-a:
+-vdev:
+-socket-mem:
+-n:
+--log-level:
+--socket-mem:
diff --git a/conf/fips_cryptodev.cfg b/conf/fips_cryptodev.cfg
index dc93527f..eba8229f 100644
--- a/conf/fips_cryptodev.cfg
+++ b/conf/fips_cryptodev.cfg
@@ -1,6 +1,7 @@
 [suite]
 # Cryptodev common options qat device idcrypto_dev_id="37c9"
 crypto_dev_id="37c9"
+f_path="/root/FIPS"
 
 l="9,10,66"
 socket-mem="2048,2048 --legacy-mem"
@@ -8,6 +9,9 @@ n=6
 
 vdev="crypto_aesni_mb_pmd_1"
 
+[env]
+LD_LIBRARY_PATH="/export/openssl/install/lib:/export/jansson/install/lib"
+
 [test_fips_aesni_gcm_gcm]
 a="0000:af:00.0"
 req-file="/root/FIPS/GCM/req"
@@ -100,3 +104,95 @@ rsp-file="/root/FIPS/HMAC/resp"
 a="0000:1a:01.0"
 req-file="/root/FIPS/AES/req"
 rsp-file="/root/FIPS/AES/resp"
+
+# MARVELL specific configs
+[test_fips_mrvl_3des_ecb]
+req-file=${suite:f_path}"/TDES_ECB/req.json"
+rsp-file=${suite:f_path}"/TDES_ECB/output/rsp.json"
+
+[test_fips_mrvl_3des_cbc]
+req-file=${suite:f_path}"/TDES_CBC/req.json"
+rsp-file=${suite:f_path}"/TDES_CBC/output/rsp.json"
+
+[test_fips_mrvl_aes_cbc]
+req-file=${suite:f_path}"/AES_CBC/req.json"
+rsp-file=${suite:f_path}"/AES_CBC/output/rsp.json"
+
+[test_fips_mrvl_aes_gmac]
+req-file=${suite:f_path}"/AES_GMAC/req.json"
+rsp-file=${suite:f_path}"/AES_GMAC/output/rsp.json"
+
+[test_fips_mrvl_aes_xts]
+req-file=${suite:f_path}"/AES_XTS/req.json"
+rsp-file=${suite:f_path}"/AES_XTS/output/rsp.json"
+
+[test_fips_mrvl_aes_ctr]
+req-file=${suite:f_path}"/AEX_CTR/req.json"
+rsp-file=${suite:f_path}"/AEX_CTR/output/rsp.json"
+
+[test_fips_mrvl_ccm]
+req-file=${suite:f_path}"/AES_CBC/req.json"
+rsp-file=${suite:f_path}"/AES_CBC/output/rsp.json"
+
+[test_fips_mrvl_aes_cmac]
+req-file=${suite:f_path}"/AES_CMAC/req.json"
+rsp-file=${suite:f_path}"/AES_CMAC/output/rsp.json"
+
+[test_fips_mrvl_aes_gcm_ext]
+req-file=${suite:f_path}"/AES_GCM_EXT/req.json"
+rsp-file=${suite:f_path}"/AES_GCM_EXT/output/rsp.json"
+
+[test_fips_mrvl_aes_gcm_int]
+req-file=${suite:f_path}"/AES_GCM_INT/req.json"
+rsp-file=${suite:f_path}"/AES_GCM_INT/output/rsp.json"
+
+[test_fips_mrvl_ecdsa_keygen]
+req-file=${suite:f_path}"/ECDSA_KEYGEN/req.json"
+rsp-file=${suite:f_path}"/ECDSA_KEYGEN/output/rsp.json"
+
+[test_fips_mrvl_ecdsa_signgen]
+req-file=${suite:f_path}"/ECDSA_SIGGEN/req.json"
+rsp-file=${suite:f_path}"/ECDSA_SIGGEN/output/rsp.json"
+
+[test_fips_mrvl_ecdsa_signver]
+req-file=${suite:f_path}"/ECDSA_SIGVER/req.json"
+rsp-file=${suite:f_path}"/ECDSA_SIGVER/output/rsp.json"
+
+[test_fips_mrvl_rsa_keygen]
+req-file=${suite:f_path}"/RSA_KEYGEN/req.json"
+rsp-file=${suite:f_path}"/RSA_KEYGEN/output/rsp.json"
+
+[test_fips_mrvl_rsa_signgen]
+req-file=${suite:f_path}"/RSA_SIGGEN/req.json"
+rsp-file=${suite:f_path}"/RSA_SIGGEN/output/rsp.json"
+
+[test_fips_mrvl_rsa_signver]
+req-file=${suite:f_path}"/RSA_SIGVER/req.json"
+rsp-file=${suite:f_path}"/RSA_SIGVER/output/rsp.json"
+
+[test_fips_mrvl_rsa_siggen_expkey]
+req-file=${suite:f_path}"/RSA_SIGGEN_EXPKEY/req.json"
+rsp-file=${suite:f_path}"/RSA_SIGGEN_EXPKEY/output/rsp.json"
+[test_fips_mrvl_sha]
+req-file=${suite:f_path}"/SHA/req.json"
+rsp-file=${suite:f_path}"/SHA/output/rsp.json"
+
+[test_fips_mrvl_sha3]
+req-file=${suite:f_path}"/SHA3/req.json"
+rsp-file=${suite:f_path}"/SHA3/output/rsp.json"
+
+[test_fips_mrvl_sha3_hmac]
+req-file=${suite:f_path}"/SHA3_HMAC/req.json"
+rsp-file=${suite:f_path}"/SHA3_HMAC/output/rsp.json"
+
+[test_fips_mrvl_shake]
+req-file=${suite:f_path}"/SHAKE/req.json"
+rsp-file=${suite:f_path}"/SHAKE/output/rsp.json"
+
+[test_fips_mrvl_sha_hmac]
+req-file=${suite:f_path}"/SHA_HMAC/req.json"
+rsp-file=${suite:f_path}"/SHA_HMAC/output/rsp.json"
+
+[test_fips_mrvl_hmac]
+req-file=${suite:f_path}"/AES_CBC/req.json"
+rsp-file=${suite:f_path}"/AES_CBC/output/rsp.json"
diff --git a/conf/inline_ipsec.cfg b/conf/inline_ipsec.cfg
new file mode 100644
index 00000000..d316acee
--- /dev/null
+++ b/conf/inline_ipsec.cfg
@@ -0,0 +1,85 @@
+[default]
+hash=#
+[suite]
+# inline_dev="(a0f0,2) a0f9"
+inline_dev="0002:1d:00.0 0002:1e:00.0 0002:1f:00.0"
+[default_ipsec_opts]
+--log-level=8
+--socket-mem="1024"
+-p=0xf
+-P= 
+--transfer-mode="poll" 
+--config="'(0,0,21),(1,0,21)'"
+--cryptodev_mask=0
+[test_mrvl_Ipsec_Encryption]
+-f='/root/dpdk/enc.cfg'
+rule=
+    ${default:hash}SP IPv4 rules
+    sp ipv4 out esp protect 1005 pri 1 dst 192.168.105.0/24 sport 0:65535 dport 0:65535
+    ${default:hash}SA rules
+    sa out 1005 aead_algo aes-128-gcm aead_key 2b:7e:15:16:28:ae:d2:a6:ab:f7:15:88:09:cf:4f:3d:de:ad:be:ef mode ipv4-tunnel src 172.16.1.5 dst 172.16.2.5 port_id 1 type inline-protocol-offload
+    ${default:hash}Routing rules
+    rt ipv4 dst 172.16.2.5/32 port 1
+
+[test_mrvl_Ipsec_Encryption_Jumboframe]
+-f='/root/dpdk/enc.cfg'
+-j=9200
+--mtu=9000
+rule=${test_mrvl_Ipsec_Encryption:rule}
+
+[test_mrvl_Ipsec_Decryption]
+-f='/root/dpdk/dec.cfg'
+rule=
+    ${default:hash}SA rules
+    sa in 5 aead_algo aes-128-gcm aead_key 2b:7e:15:16:28:ae:d2:a6:ab:f7:15:88:09:cf:4f:3d:de:ad:be:ef mode ipv4-tunnel src 172.16.1.5 dst 172.16.2.5 port_id 1 type inline-protocol-offload
+    ${default:hash}Routing rules
+    rt ipv4 dst 192.168.105.10/32 port 0
+
+[test_mrvl_Ipsec_Decryption_Jumboframe]
+-f='/root/dpdk/dec.cfg'
+-j=9200
+--mtu=9000
+rule=${test_mrvl_Ipsec_Decryption:rule}
+[test_mrvl_Ipsec_Encryption_Rss]
+-f='/root/dpdk/enc_rss.cfg'
+--config="'(0,0,20),(0,1,20),(1,0,21),(1,1,21)'"
+send_spi=5
+receive_spi=1005
+inner_dst='192.168.105.10'
+rule=
+    ${default:hash}SP IPv4 rules
+    sp ipv4 out esp protect 1005 pri 1 dst 192.168.105.0/24 sport 0:65535 dport 0:65535
+    sa out 1005 aead_algo aes-128-gcm aead_key 2b:7e:15:16:28:ae:d2:a6:ab:f7:15:88:09:cf:4f:3d:de:ad:be:ef mode ipv4-tunnel src 172.16.1.5 dst 172.16.2.5 port_id 1 type inline-protocol-offload
+    ${default:hash}Routing rules
+    rt ipv4 dst 172.16.2.5/32 port 1
+[test_mrvl_Ipsec_Decryption_Rss]
+-f='/root/dpdk/dec_rss.cfg'
+--config="'(0,0,20),(0,1,20),(1,0,21),(1,1,21)'"
+send_spi=5
+receive_spi=1005
+inner_dst='192.168.105.10'
+rule=
+   ${default:hash}SA rules
+   sa in 5 aead_algo aes-128-gcm aead_key 2b:7e:15:16:28:ae:d2:a6:ab:f7:15:88:09:cf:4f:3d:de:ad:be:ef mode ipv4-tunnel src 172.16.1.5 dst 172.16.2.5 port_id 1 type inline-protocol-offload
+   ${default:hash}Routing rules
+   rt ipv4 dst 192.168.105.10/32 port 0
+[test_mrvl_Ipsec_Decryption_wrongkey]
+-f='/root/dpdk/dec_wrong_key.cfg'
+rule=
+    ${default:hash}SA rules
+    sa in 5 aead_algo aes-128-gcm aead_key 2f:7e:15:16:28:ae:d2:a6:ab:f7:15:88:09:cf:4f:3d:de:ad:be:ef mode ipv4-tunnel src 172.16.1.5 dst 172.16.2.5 port_id 1 type inline-protocol-offload
+    ${default:hash}Routing rules
+    rt ipv4 dst 192.168.105.10/32 port 0
+[test_mrvl_Ipsec_Encryption_Decryption]
+-f='/root/dpdk/enc_dec.cfg'
+--config="'(0,0,21),(1,0,21)'"
+rule=
+    ${default:hash}SP IPv4 rules
+    sp ipv4 out esp protect 5 pri 1 dst 192.168.105.0/24 sport 0:65535 dport 0:65535
+    ${default:hash}SA rules
+    sa out 5 aead_algo aes-128-gcm aead_key 2b:7e:15:16:28:ae:d2:a6:ab:f7:15:88:09:cf:4f:3d:de:ad:be:ef mode ipv4-tunnel src 172.16.1.5 dst 172.16.2.5 port_id 1 type inline-protocol-offload
+    sa in 5 aead_algo aes-128-gcm aead_key 2b:7e:15:16:28:ae:d2:a6:ab:f7:15:88:09:cf:4f:3d:de:ad:be:ef mode ipv4-tunnel src 172.16.1.5 dst 172.16.2.5 port_id 1 type inline-protocol-offload
+    ${default:hash}Routing rules
+    rt ipv4 dst 192.168.105.10/32 port 0
+    rt ipv4 dst 172.16.2.5/32 port 1
+
diff --git a/conf/ipsec_gw_cryptodev_func.cfg b/conf/ipsec_gw_cryptodev_func.cfg
index 8ecf7c8f..8a17b3d0 100644
--- a/conf/ipsec_gw_cryptodev_func.cfg
+++ b/conf/ipsec_gw_cryptodev_func.cfg
@@ -386,3 +386,198 @@ src_ip="0000:1111:1111:1111:4444:4444:0000:1111"
 expected_dst_ip="0:1111:1111:1111:4444:4444::"
 expected_src_ip="0:1111:1111:1111:4444:4444:0:1111"
 expected_spi="0x54"
+
+# Marvell test Vectors
+[test_mrvl_aes_128_cbc_ipv4_tunnel]
+devtype="crypto_cn10k"
+dst_ip="192.168.105.100"
+src_ip="192.168.105.200"
+expected_dst_ip="172.16.2.5"
+expected_src_ip="172.16.1.5"
+expected_spi="0x5"
+
+[test_mrvl_aes_128_ctr_ipv4_tunnel]
+devtype="crypto_cn10k"
+dst_ip="192.168.125.100"
+src_ip="192.168.125.200"
+expected_dst_ip="172.16.2.6"
+expected_src_ip="172.16.1.6"
+expected_spi="0x2d"
+
+[test_mrvl_aes_256_cbc_ipv4_tunnel]
+devtype="crypto_cn10k"
+dst_ip="192.168.25.100"
+src_ip="192.168.25.200"
+expected_dst_ip="172.16.2.5"
+expected_src_ip="172.16.1.5"
+expected_spi="0x23"
+
+[test_mrvl_aes_gcm_ipv4_tunnel]
+devtype="crypto_cn10k"
+dst_ip="192.168.106.100"
+src_ip="192.168.106.200"
+expected_dst_ip="172.16.2.6"
+expected_src_ip="172.16.1.6"
+expected_spi="0x6"
+
+[test_mrvl_null_ipv4_tunnel]
+devtype="crypto_cn10k"
+dst_ip="192.168.200.100"
+src_ip="192.168.200.200"
+expected_dst_ip="172.16.2.5"
+expected_src_ip="172.16.1.5"
+elid_src_ip="172.16.1.5"
+expected_spi="0xf"
+
+[test_mrvl_3des_cbc_ipv4_tunnel]
+devtype="crypto_cn10k"
+dst_ip="192.168.220.100"
+src_ip="192.168.220.200"
+expected_dst_ip="172.16.2.6"
+expected_src_ip="172.16.1.6"
+expected_spi="0x32"
+
+[test_mrvl_aes_128_cbc_ipv4_transport]
+devtype="crypto_cn10k"
+dst_ip="192.168.175.100"
+src_ip="192.168.175.200"
+expected_dst_ip="192.168.175.100"
+expected_src_ip="192.168.175.200"
+expected_spi="0xa"
+
+[test_mrvl_aes_128_ctr_ipv4_transport]
+devtype="crypto_cn10k"
+dst_ip="192.168.76.100"
+src_ip="192.168.76.200"
+expected_dst_ip="192.168.76.100"
+expected_src_ip="192.168.76.200"
+expected_spi="0x1f"
+
+[test_mrvl_aes_256_cbc_ipv4_transport]
+devtype="crypto_cn10k"
+dst_ip="192.168.26.100"
+src_ip="192.168.26.200"
+expected_dst_ip="192.168.26.100"
+expected_src_ip="192.168.26.200"
+expected_spi="0x24"
+
+[test_mrvl_aes_gcm_ipv4_transport]
+devtype="crypto_cn10k"
+dst_ip="192.168.176.100"
+src_ip="192.168.176.200"
+expected_dst_ip="192.168.176.100"
+expected_src_ip="192.168.176.200"
+expected_spi="0xb"
+
+[test_mrvl_null_ipv4_transport]
+devtype="crypto_cn10k"
+dst_ip="192.168.141.100"
+src_ip="192.168.141.200"
+expected_dst_ip="192.168.141.100"
+expected_src_ip="192.168.141.200"
+expected_spi="0x38"
+
+[test_mrvl_3des_cbc_ipv4_transport]
+devtype="crypto_cn10k"
+dst_ip="192.168.140.100"
+src_ip="192.168.140.200"
+expected_dst_ip="192.168.140.100"
+expected_src_ip="192.168.140.200"
+expected_spi="0x37"
+
+[test_mrvl_aes_128_ctr_ipv6_tunnel]
+devtype="crypto_cn10k"
+dst_ip="192.168.126.100"
+src_ip="192.168.126.200"
+expected_dst_ip="bbbb:bbbb:bbbb:bbbb:bbbb:bbbb:bbbb:2222"
+expected_src_ip="aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:1111"
+expected_spi="0x2e"
+
+[test_mrvl_aes_128_cbc_ipv6_tunnel]
+devtype="crypto_cn10k"
+dst_ip="192.168.55.100"
+src_ip="192.168.55.200"
+expected_dst_ip="2222:2222:2222:2222:2222:2222:2222:5555"
+expected_src_ip="1111:1111:1111:1111:1111:1111:1111:5555"
+expected_spi="0x19"
+
+[test_mrvl_aes_256_cbc_ipv6_tunnel]
+devtype="crypto_cn10k"
+dst_ip="192.168.75.100"
+src_ip="192.168.75.200"
+expected_dst_ip="8888:8888:8888:8888:8888:8888:8888:2222"
+expected_src_ip="7777:7777:7777:7777:7777:7777:7777:1111"
+expected_spi="0x1e"
+
+[test_mrvl_aes_gcm_ipv6_tunnel]
+devtype="crypto_cn10k"
+dst_ip="192.168.56.100"
+src_ip="192.168.56.200"
+expected_dst_ip="2222:2222:2222:2222:2222:2222:2222:6666"
+expected_src_ip="1111:1111:1111:1111:1111:1111:1111:6666"
+expected_spi="0x1a"
+
+[test_mrvl_null_ipv6_tunnel]
+devtype="crypto_cn10k"
+dst_ip="192.168.201.100"
+src_ip="192.168.201.200"
+expected_dst_ip="5555:5555:5555:5555:5555:5555:5555:2222"
+expected_src_ip="4444:4444:4444:4444:4444:4444:4444:1111"
+expected_spi="0x10"
+
+[test_mrvl_3des_cbc_ipv6_tunnel]
+devtype="crypto_cn10k"
+dst_ip="192.168.221.100"
+src_ip="192.168.221.200"
+expected_dst_ip="bbbb:bbbb:bbbb:bbbb:bbbb:bbbb:bbbb:2222"
+expected_src_ip="aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:1111"
+expected_spi="0x33"
+
+[test_mrvl_aes_128_cbc_ipv6_transport]
+devtype="crypto_cn10k"
+dst_ip="0000:1111:1111:1111:0000:0000:0000:0000"
+src_ip="0000:1111:1111:1111:0000:0000:0000:1111"
+expected_dst_ip="0:1111:1111:1111::"
+expected_src_ip="0:1111:1111:1111::1111"
+expected_spi="0x50"
+
+[test_mrvl_aes_128_ctr_ipv6_transport]
+devtype="crypto_cn10k"
+dst_ip="0000:1111:1111:1111:2222:2222:0000:0000"
+src_ip="0000:1111:1111:1111:2222:2222:0000:1111"
+expected_dst_ip="0:1111:1111:1111:2222:2222::"
+expected_src_ip="0:1111:1111:1111:2222:2222:0:1111"
+expected_spi="0x52"
+
+[test_mrvl_aes_256_cbc_ipv6_transport]
+devtype="crypto_cn10k"
+dst_ip="0000:1111:1111:1111:3333:3333:0000:0000"
+src_ip="0000:1111:1111:1111:3333:3333:0000:1111"
+expected_dst_ip="0:1111:1111:1111:3333:3333::"
+expected_src_ip="0:1111:1111:1111:3333:3333:0:1111"
+expected_spi="0x53"
+
+[test_mrvl_aes_gcm_ipv6_transport]
+devtype="crypto_cn10k"
+dst_ip="0000:1111:1111:1111:1111:1111:0000:0000"
+src_ip="0000:1111:1111:1111:1111:1111:0000:1111"
+expected_dst_ip="0:1111:1111:1111:1111:1111::"
+expected_src_ip="0:1111:1111:1111:1111:1111:0:1111"
+expected_spi="0x51"
+
+[test_mrvl_null_ipv6_transport]
+devtype="crypto_cn10k"
+dst_ip="0000:1111:1111:1111:5555:5555:0000:0000"
+src_ip="0000:1111:1111:1111:5555:5555:0000:1111"
+expected_dst_ip="0:1111:1111:1111:5555:5555::"
+expected_src_ip="0:1111:1111:1111:5555:5555:0:1111"
+expected_spi="0x55"
+
+[test_mrvl_3des_cbc_ipv6_transport]
+devtype="crypto_cn10k"
+dst_ip="0000:1111:1111:1111:4444:4444:0000:0000"
+src_ip="0000:1111:1111:1111:4444:4444:0000:1111"
+expected_dst_ip="0:1111:1111:1111:4444:4444::"
+expected_src_ip="0:1111:1111:1111:4444:4444:0:1111"
+expected_spi="0x54"
+
diff --git a/conf/l2fwd_cryptodev_func.cfg b/conf/l2fwd_cryptodev_func.cfg
new file mode 100644
index 00000000..659059cb
--- /dev/null
+++ b/conf/l2fwd_cryptodev_func.cfg
@@ -0,0 +1,441 @@
+[suite]
+devtype="crypto_cn10k"
+l='9,10'
+total-ops=30000000
+buffer-sz="64,128,256,512,1024,2048"
+
+
+[test_mrvl_AES_CBC_auto]
+chain=["CIPHER_ONLY", "CIPHER_HASH"]
+cdev_type="HW"
+cipher_algo=["aes-cbc"]
+cipher_op=["ENCRYPT", "DECRYPT"]
+cipher_key=[16, 24, 32]
+iv=[16]
+auth_algo=["sha1-hmac", "sha2-224-hmac", "sha2-256-hmac", "sha2-384-hmac", "sha2-512-hmac"]
+auth_op=["GENERATE"]
+auth_key=[64]
+#  Maximum auth key length supported is 64
+auth_key_random_size=""
+aad=[0]
+aad_random_size=""
+input=[256]
+digest_size=[20, 28, 32, 48]
+output_cipher="*"
+output_hash="*"
+
+
+[test_mrvl_AES_CTR_auto]
+chain=["CIPHER_ONLY", "CIPHER_HASH"]
+cdev_type="HW"
+cipher_algo=["aes-ctr"]
+cipher_op=["ENCRYPT"]
+cipher_key=[16]
+iv=[16]
+auth_algo=["sha1-hmac", "sha2-224-hmac", "sha2-256-hmac", "sha2-384-hmac", "sha2-512-hmac"]
+auth_op=["GENERATE"]
+auth_key=[64]
+auth_key_random_size=""
+aad=[0]
+aad_random_size=""
+input=[256]
+digest_size=[20, 28, 32, 48]
+output_cipher="*"
+output_hash="*"
+
+[test_mrvl_AES_GCM_auto]
+chain=["AEAD"]
+cdev_type="HW"
+cipher_algo=["aes-gcm"]
+cipher_op=["ENCRYPT"]
+cipher_key=[16, 24, 32]
+iv=[12]
+auth_algo=["aes-gcm"]
+auth_op=["GENERATE"]
+auth_key=[16]
+auth_key_random_size=""
+aad=[16]
+aad_random_size=""
+input=[256]
+digest_size=[8, 16]
+output_cipher="*"
+output_hash="*"
+
+[test_mrvl_AES_CCM_auto]
+chain=["AEAD"]
+cdev_type="HW"
+cipher_algo=["aes-ccm"]
+cipher_op=["ENCRYPT"]
+cipher_key=[16]
+iv=[7, 8, 9, 10, 11, 12, 13]
+auth_algo=["aes-ccm"]
+auth_op=["GENERATE"]
+auth_key=[16]
+auth_key_random_size=""
+aad=[8]
+aad_random_size=""
+input=[256]
+digest_size=[8, 16]
+output_cipher="*"
+output_hash="*"
+
+[test_mrvl_h_MD_SHA_auto]
+chain=["HASH_ONLY"]
+cdev_type="HW"
+cipher_algo=""
+cipher_op=""
+cipher_key=""
+iv=""
+auth_algo=["md5-hmac", "sha1-hmac", "sha2-224-hmac", "sha2-256-hmac", "sha2-384-hmac", "sha2-512-hmac"]
+auth_op=["GENERATE"]
+auth_key=[64]
+auth_key_random_size=""
+aad=[0]
+aad_random_size=""
+input=[256]
+digest_size=[12, 16, 20, 28, 48, 64]
+output_cipher="*"
+output_hash="*"
+
+[test_mrvl_h_AES_XCBC_MAC_auto]
+chain="HASH_ONLY"
+cdev_type="HW"
+cipher_algo=""
+cipher_op=""
+cipher_key=""
+iv=""
+auth_algo=["aes-xcbc-mac"]
+auth_op="GENERATE"
+auth_key=[16]
+auth_key_random_size=""
+aad=[0]
+aad_random_size=""
+input=[256]
+digest_size=[12]
+output_cipher="*"
+output_hash="*"
+
+[test_mrvl_DES_CBC_auto]
+chain=["CIPHER_ONLY", "CIPHER_HASH"]
+cdev_type="HW"
+cipher_algo=["des-cbc"]
+cipher_op=["ENCRYPT"]
+cipher_key=[8]
+iv=[8]
+auth_algo=["sha1-hmac", "sha2-224-hmac", "sha2-256-hmac", "sha2-384-hmac", "sha2-512-hmac"]
+auth_op=["GENERATE"]
+auth_key=[64]
+auth_key_random_size=""
+aad=[0]
+aad_random_size=""
+input=[256]
+digest_size=[20, 28, 32, 48]
+output_cipher="*"
+output_hash="*"
+
+[test_mrvl_3DES_CBC_auto]
+# chain=["CIPHER_ONLY", "CIPHER_HASH"]
+chain=["CIPHER_ONLY"]
+cdev_type="HW"
+cipher_algo=["3des-cbc"]
+cipher_op=["ENCRYPT"]
+cipher_key=[24]
+iv=[8]
+auth_algo=["sha1-hmac", "sha2-224-hmac", "sha2-256-hmac", "sha2-384-hmac", "sha2-512-hmac"]
+auth_op=["GENERATE"]
+auth_key=[64]
+auth_key_random_size=""
+aad=[0]
+aad_random_size=""
+input=[256]
+digest_size=[20, 28, 32, 48]
+output_cipher="*"
+output_hash="*"
+
+[test_mrvl_3DES_CTR_auto]
+chain=["CIPHER_ONLY", "CIPHER_HASH"]
+cdev_type="HW"
+cipher_algo=["3des-ctr"]
+cipher_op=["ENCRYPT"]
+cipher_key=[24]
+iv=[8]
+auth_algo=["sha1-hmac", "sha2-224-hmac", "sha2-256-hmac", "sha2-384-hmac", "sha2-512-hmac"]
+auth_op=["GENERATE"]
+auth_key=[64, 128]
+auth_key_random_size=""
+aad=[0]
+aad_random_size=""
+input=[256]
+digest_size=[20, 28, 32, 48]
+output_cipher="470c43ce135176ff34300c11b8a5dc463be774851c405eb67a3c54e30707b6ac47b1dca58d5a2dab1dee452f7712f1803709d100608f8df9786156e4656ff60cb6a2f722e6a96932fa0dbba8c4941e61b8ca2b5903bc724d5f68856b9e6f66d7b4e42cc49b44bb85b7ce2f1c521e1a2719a47097922e0b627bbee2918ac5c5caf84d9e62d772fc676d3bce0bb17b95cb5e1477da051aebbdbbf2a7037237a3537c738aadbfff3d3f2b3be5ddbcc7213e265705224961adf48f8df3ba8a8fc2ab337f7031a0f20636c82074a6bebcf91f06e04d45fa1dcc8454b6be54e53e3f9c99f0f830b16a7a452e75e15894bf869fc585090c8c4bfbdb9f2a6246f4308300"
+output_hash="*"
+
+[test_mrvl_SNOW3G_auto]
+chain=["CIPHER_ONLY", "HASH_ONLY"]
+cdev_type="HW"
+cipher_algo=["snow3g-uea2"]
+cipher_op=["ENCRYPT"]
+cipher_key=[16]
+iv=[16]
+auth_algo=["snow3g-uia2"]
+auth_op=["GENERATE"]
+auth_key=[16]
+auth_key_random_size=""
+aad=[16]
+aad_random_size=""
+input=[256]
+digest_size=[4]
+output_cipher="*"
+output_hash="*"
+
+[test_mrvl_KASUMI_auto]
+chain=["CIPHER_ONLY", "HASH_ONLY"]
+cdev_type="HW"
+cipher_algo=["kasumi-f8"]
+cipher_op=["ENCRYPT"]
+cipher_key=[16]
+iv=[8]
+auth_algo=["kasumi-f9"]
+auth_op=["GENERATE"]
+auth_key=[16]
+auth_key_random_size=""
+aad=""
+aad_random_size=""
+input=[256]
+digest_size=[4]
+output_cipher="*"
+output_hash="*"
+
+[test_mrvl_ZUC_auto]
+chain=["CIPHER_ONLY", "HASH_ONLY"]
+cdev_type="HW"
+cipher_algo=["zuc-eea3"]
+cipher_op=["ENCRYPT"]
+cipher_key=[16]
+iv=[16]
+auth_algo=["zuc-eia3"]
+auth_op=["GENERATE"]
+auth_key=[16]
+auth_key_random_size=""
+aad=[16]
+aad_random_size=""
+input=[256]
+digest_size=[4]
+output_cipher="*"
+output_hash="*"
+
+
+[test_mrvl_NULL_auto]
+chain=["CIPHER_ONLY", "HASH_ONLY", "CIPHER_HASH"]
+cdev_type="HW"
+cipher_algo=["null"]
+cipher_op=["ENCRYPT"]
+cipher_key=[0]
+iv=""
+auth_algo=["null"]
+auth_op=["GENERATE"]
+auth_key=[0]
+auth_key_random_size=""
+aad=[0]
+aad_random_size=""
+digest=""
+input=[256]
+digest_size=""
+output_cipher="*"
+output_hash="*"
+
+[test_mrvl_AES_DOCSISBPI_auto]
+chain=["CIPHER_ONLY"]
+cdev_type="HW"
+cipher_algo="aes-docsisbpi"
+cipher_op=["ENCRYPT"]
+cipher_key="e6600fd8852ef5abe6600fd8852ef5ab"
+iv="810e528e1c5fda1a810e528e1c5fda1a"
+auth_algo=""
+auth_op=""
+auth_key=""
+auth_key_random_size=""
+aad=[0]
+aad_random_size=""
+input="000102030405060708090a0b0c0d0e91d2d19f"
+digest_size=""
+output_cipher="9dd1674bba61101b56756474364f101d44d473"
+output_hash="*"
+
+
+[test_mrvl_DES_DOCSISBPI_auto]
+chain=["CIPHER_ONLY"]
+cdev_type="HW"
+cipher_algo="des-docsisbpi"
+cipher_op=["ENCRYPT"]
+cipher_key="e6600fd8852ef5ab"
+iv="810e528e1c5fda1a"
+auth_algo=""
+auth_op=""
+auth_key=""
+auth_key_random_size=""
+aad=""
+aad_random_size=""
+input="000102030405060708090a0b0c0d0e910001020304050607d2d19f"
+digest_size=""
+output_cipher="0dda5acbd05e5567514746868a71e577bdb2125f9f72be230e9fb2"
+output_hash="*"
+
+
+[aesni_mb_AES_DOCSISBPI_01]
+vdev="crypto_aesni_mb"
+chain=["CIPHER_ONLY"]
+cdev_type="SW"
+cipher_algo="aes-docsisbpi"
+cipher_op=["ENCRYPT"]
+cipher_key="e6600fd8852ef5abe6600fd8852ef5ab"
+iv="810e528e1c5fda1a810e528e1c5fda1a"
+auth_algo=""
+auth_op=""
+auth_key=""
+auth_key_random_size=""
+aad=[0]
+aad_random_size=""
+input="000102030405060708090a0b0c0d0e91d2d19f"
+digest_size=""
+output_cipher="9dd1674bba61101b56756474364f101d44d473"
+output_hash="*"
+
+
+[openssl_DES_DOCSISBPI_01]
+vdev="crypto_openssl"
+chain=["CIPHER_ONLY"]
+cdev_type="SW"
+cipher_algo="des-docsisbpi"
+cipher_op=["ENCRYPT"]
+cipher_key="e6600fd8852ef5ab"
+iv="810e528e1c5fda1a"
+auth_algo=""
+auth_op=""
+auth_key=""
+auth_key_random_size=""
+aad=""
+aad_random_size=""
+input="000102030405060708090a0b0c0d0e910001020304050607d2d19f"
+digest_size=""
+output_cipher="0dda5acbd05e5567514746868a71e577bdb2125f9f72be230e9fb2"
+output_hash="*"
+
+
+[aesni_mb_DES_DOCSISBPI_01]
+vdev="crypto_aesni_mb"
+chain=["CIPHER_ONLY"]
+cdev_type="SW"
+cipher_algo="des-docsisbpi"
+cipher_op=["ENCRYPT"]
+cipher_key="e6600fd8852ef5ab"
+iv="810e528e1c5fda1a"
+auth_algo=""
+auth_op=""
+auth_key=""
+auth_key_random_size=""
+aad=""
+aad_random_size=""
+input="000102030405060708090a0b0c0d0e910001020304050607d2d19f"
+digest_size=""
+output_cipher="0dda5acbd05e5567514746868a71e577bdb2125f9f72be230e9fb2"
+output_hash="*"
+
+
+[aesni_mb_DES_CBC_00]
+vdev="crypto_aesni_mb"
+chain=["CIPHER_ONLY", "CIPHER_HASH"]
+cdev_type="SW"
+cipher_algo=["des-cbc"]
+cipher_op=["ENCRYPT"]
+cipher_key=[8]
+iv=[8]
+auth_algo=["sha1-hmac", "sha2-256-hmac"]
+auth_op=["GENERATE"]
+auth_key=[64, 128]
+auth_key_random_size=""
+aad=[0]
+aad_random_size=""
+input=[256]
+digest_size=[12, 16]
+output_cipher="*"
+output_hash="*"
+
+
+[openssl_DES_CBC_00]
+vdev="crypto_openssl"
+chain=["CIPHER_ONLY", "CIPHER_HASH"]
+cdev_type="SW"
+cipher_algo=["des-cbc"]
+cipher_op=["ENCRYPT"]
+cipher_key=[8]
+iv=[8]
+auth_algo=["sha1-hmac", "sha2-256-hmac"]
+auth_op=["GENERATE"]
+auth_key=[64, 128]
+auth_key_random_size=""
+aad=[0]
+aad_random_size=""
+input=[256]
+digest_size=[20, 28]
+output_cipher="*"
+output_hash="*"
+
+
+[test_scheduler_AES_CBC_auto]
+# vdev="crypto_scheduler"
+chain=["CIPHER_HASH"]
+cdev_type="ANY"
+cipher_algo=["aes-cbc"]
+cipher_op=["ENCRYPT", "DECRYPT"]
+cipher_key=[16]
+iv=[16]
+auth_algo=["sha1-hmac"]
+auth_op=["GENERATE"]
+auth_key=[64]
+auth_key_random_size=""
+aad=[0]
+aad_random_size=""
+input=[256]
+digest_size=[20, 32]
+output_cipher="*"
+output_hash="*"
+
+
+[scheduler_AES_GCM_00]
+vdev="crypto_scheduler"
+chain=["AEAD"]
+cdev_type="ANY"
+cipher_algo=["aes-gcm"]
+cipher_op=["ENCRYPT"]
+cipher_key=[16, 24, 32]
+iv=[12]
+auth_algo=["aes-gcm"]
+auth_op=["GENERATE"]
+auth_key=[16]
+auth_key_random_size=""
+aad=[16]
+aad_random_size=""
+input=[256]
+digest_size=[16]
+output_cipher="*"
+output_hash="*"
+
+
+[test_mrvl_AES_XTS_auto]
+chain=["CIPHER_ONLY"]
+cdev_type="HW"
+cipher_algo=["aes-xts"]
+cipher_op=["ENCRYPT"]
+cipher_key=[32]
+iv=[16]
+auth_algo=["sha1-hmac", "sha2-256-hmac"]
+auth_op=["GENERATE"]
+auth_key=[64, 128]
+auth_key_random_size=""
+aad=[0]
+aad_random_size=""
+input=[256]
+digest_size=[20, 32]
+output_cipher="*"
+output_hash="*"
diff --git a/framework/config.py b/framework/config.py
index 2cd95ff2..c9b410ed 100644
--- a/framework/config.py
+++ b/framework/config.py
@@ -40,6 +40,11 @@ APPNAMECONF = "%s/app_name.cfg" % CONFIG_ROOT_PATH
 class UserConf:
     def __init__(self, config):
         self.conf = configparser.SafeConfigParser()
+        self.conf = configparser.\
+                    SafeConfigParser(interpolation=
+                                     configparser.ExtendedInterpolation())
+        self.conf.optionxform = str # disable case insesitivity
+
         load_files = self.conf.read(config)
         if load_files == []:
             self.conf = None
@@ -136,6 +141,11 @@ class SuiteConf(UserConf):
                 case_cfg[key] = eval(data_string)
             except NameError:  # happens when data_string is actually a string, not an int, bool or dict
                 case_cfg[key] = data_string
+            except SyntaxError: # some strings will raise syntax error, we can have keys that has no value
+                if data_string == '' or type(data_string) is str:
+                    case_cfg[key] = data_string
+                    continue
+                raise
 
         return case_cfg
 
diff --git a/framework/crb.py b/framework/crb.py
index 2fe9d147..fce245a5 100644
--- a/framework/crb.py
+++ b/framework/crb.py
@@ -578,14 +578,14 @@ class Crb(object):
             "/var/run/dpdk/%s/config" % file_prefix for file_prefix in prefix_list
         ]
         pids = []
-        pid_reg = r"p(\d+)"
+        pid_reg = r"(\d+)"
         for config_file in file_directorys:
             # Covers case where the process is run as a unprivileged user and does not generate the file
             isfile = self.send_expect(
                 "ls -l {}".format(config_file), "# ", 20, alt_session
             )
             if isfile:
-                cmd = "lsof -Fp %s" % config_file
+                cmd = "lsof -Fp %s | grep dpdk" % config_file
                 out = self.send_expect(cmd, "# ", 20, alt_session)
                 if len(out):
                     lines = out.split("\r\n")
@@ -593,7 +593,7 @@ class Crb(object):
                         m = re.match(pid_reg, line)
                         if m:
                             pids.append(m.group(1))
-                for pid in pids:
+                for pid in set(pids):
                     self.send_expect("kill -9 %s" % pid, "# ", 20, alt_session)
                     self.get_session_output(timeout=2)
 
@@ -1068,10 +1068,10 @@ class Crb(object):
             return True
         elif self.get_os_type() == "freebsd":
             return False
-        elif self.send_expect(
+        out = self.send_expect(
             "systemd-detect-virt -c|egrep '(systemd-nspawn|lxc|docker|podman|rkt|wsl|container-other)$' ",
             "# ",
-        ):
-            return True
-        else:
+        ).strip()
+        if 'command not found' in out or out != "":
             return False
+        return True
diff --git a/tests/TestSuite_fips_cryptodev.py b/tests/TestSuite_fips_cryptodev.py
index eb8ffc30..8be0c8ba 100644
--- a/tests/TestSuite_fips_cryptodev.py
+++ b/tests/TestSuite_fips_cryptodev.py
@@ -2,8 +2,10 @@
 # Copyright(c) 2019 Intel Corporation
 #
 
+import os
 import re
 
+
 import framework.utils as utils
 import tests.cryptodev_common as cc
 from framework.test_case import TestCase
@@ -15,7 +17,6 @@ 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")
         self._app_path = self.dut.apps_name["fips_validation"]
         self._default_fips_opts = {
             "req-file": None,
@@ -25,7 +26,18 @@ class TestFipsCryptodev(TestCase):
             "cryptodev-id": 0,
             "self-test": "",
         }
-        self.FIP_path = "/root/FIPS"
+        self.ld_lib = None
+        if self.nic == "cavium_a063":
+            self._default_fips_opts.pop("path-is-folder")
+            cc.bind_qat_device(self, self.drivername, generate_vfs=True, vf_count=2)
+            envs = self._suite_conf.suite_conf.load_section('env')
+            for key, value in envs:
+                if key == "LD_LIBRARY_PATH":
+                    self.ld_lib = value
+                    break
+        else:
+            cc.bind_qat_device(self, "vfio-pci")
+        self.FIP_path = self.get_suite_cfg()["f_path"]
 
     def set_up(self):
         pass
@@ -43,6 +55,9 @@ class TestFipsCryptodev(TestCase):
     def _run_fips(self, eal_opt_str, fips_opt_str):
         cmd_str = cc.get_dpdk_app_cmd_str(self._app_path, eal_opt_str, fips_opt_str)
         self.logger.info(cmd_str)
+        if self.nic == "cavium_a063":
+            cmd_str = "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:%s;%s" \
+                      %(self.ld_lib, cmd_str)
         try:
             out = self.dut.send_expect(cmd_str, "#", 600)
         except Exception as ex:
@@ -55,20 +70,28 @@ class TestFipsCryptodev(TestCase):
         check_out = out[out.index("Done") :]
         self.verify("Error" not in check_out, " req file error")
         rep_list = re.findall(r"FIPS/(.*)/req/(.*).req", out)
+        if self.nic == 'cavium_a063':
+            rep_list = re.findall(r"%s/(.*)/(.*).json"%(self.FIP_path), out)
 
+        self.verify(rep_list != [], "Request file not found in the output")
         for alog_name, file_name in rep_list:
-            out = self.dut.send_expect(
-                "diff %s/%s/resp/%s.rsp %s/%s/fax/%s.rsp | grep -v '#' | grep -v '\---'"
-                % (
-                    self.FIP_path,
-                    alog_name,
-                    file_name,
-                    self.FIP_path,
-                    alog_name,
-                    file_name,
-                ),
-                "#",
-            )
+            if self.nic == 'cavium_a063':
+                out = self.dut.send_expect(
+                    "diff %s/%s/rsp.json  %s/%s/output/rsp.json | grep -v '#' | grep -v '\---'"
+                    % (self.FIP_path,
+                       alog_name,
+                       self.FIP_path,
+                       alog_name), "#")
+            else:
+                out = self.dut.send_expect(
+                    "diff %s/%s/resp/%s.rsp  %s/%s/fax/%s.rsp | grep -v '#' | grep -v '\---'"
+                    % (self.FIP_path,
+                       alog_name,
+                       file_name,
+                       self.FIP_path,
+                       alog_name,
+                       file_name), "#")
+            self.verify("No such file" not in out, "Files are not found")
             lines = re.split("\r\n", out)
             self.verify(len(lines) <= 2, "%s.req file comparison failed!" % file_name)
 
@@ -183,3 +206,85 @@ class TestFipsCryptodev(TestCase):
         )
         out = self._run_fips(eal_opt_str, fips_opt_str)
         self.verify("Failed init" in out, "test Failed!")
+
+    def _execute_test(self):
+        device = {}
+        vf = cc.get_qat_devices(self)
+        device["a"] = ' -a '.join(vf)
+        device["vdev"] = None
+        eal_opt_str = cc.get_eal_opt_str(self, device)
+        fips_opt_str = self._get_fips_opt_str()
+        out_file = re.search(r"--rsp-file (\S+)",
+                             fips_opt_str).group(1)
+        self.dut.send_command("rm %s"%out_file)
+        self.dut.send_command("mkdir -p %s"%(os.path.dirname(out_file)))
+        self.compare_resp_file(eal_opt_str, fips_opt_str)
+
+    def test_fips_mrvl_3des_ecb(self):
+        self._execute_test()
+
+    def test_fips_mrvl_3des_cbc(self):
+        self._execute_test()
+
+    def test_fips_mrvl_aes_cbc(self):
+        self._execute_test()
+
+    def test_fips_mrvl_aes_gmac(self):
+        self._execute_test()
+
+    def test_fips_mrvl_aes_xts(self):
+        self._execute_test()
+
+    def test_fips_mrvl_aes_ctr(self):
+        self._execute_test()
+
+    def test_fips_mrvl_ccm(self):
+        self._execute_test()
+
+    def test_fips_mrvl_aes_cmac(self):
+        self._execute_test()
+
+    def test_fips_mrvl_aes_gcm_ext(self):
+        self._execute_test()
+
+    def test_fips_mrvl_aes_gcm_int(self):
+        self._execute_test()
+
+    def test_fips_mrvl_ecdsa_keygen(self):
+        self._execute_test()
+
+    def test_fips_mrvl_ecdsa_signgen(self):
+        self._execute_test()
+
+    def test_fips_mrvl_ecdsa_signver(self):
+        self._execute_test()
+
+    def test_fips_mrvl_rsa_keygen(self):
+        self._execute_test()
+
+    def test_fips_mrvl_rsa_signgen(self):
+        self._execute_test()
+
+    def test_fips_mrvl_rsa_signver(self):
+        self._execute_test()
+
+    def test_fips_mrvl_rsa_siggen_expkey(self):
+        self._execute_test()
+
+    def test_fips_mrvl_sha(self):
+        self._execute_test()
+
+    def test_fips_mrvl_sha3(self):
+        self._execute_test()
+
+    def test_fips_mrvl_sha3_hmac(self):
+        self._execute_test()
+
+    def test_fips_mrvl_shake(self):
+        self._execute_test()
+
+    def test_fips_mrvl_sha_hmac(self):
+        self._execute_test()
+
+    def test_fips_mrvl_hmac(self):
+        self._execute_test()
diff --git a/tests/TestSuite_inline_ipsec.py b/tests/TestSuite_inline_ipsec.py
index 31c8bb8d..250817ba 100644
--- a/tests/TestSuite_inline_ipsec.py
+++ b/tests/TestSuite_inline_ipsec.py
@@ -10,11 +10,13 @@ Test inline_ipsec.
 import random
 import re
 import time
+from copy import deepcopy
 
 from scapy.all import ESP, IP, Ether, SecurityAssociation, sendp
 
 import framework.utils as utils
 from framework.test_case import TestCase
+import tests.cryptodev_common as cc
 
 ETHER_STANDARD_MTU = 1300
 ETHER_JUMBO_FRAME_MTU = 9000
@@ -32,8 +34,8 @@ class TestInlineIpsec(TestCase):
         Run at the start of each test suite.
         """
         self.verify(
-            self.nic in ["IXGBE_10G-82599_SFP", "IXGBE_10G-X540T"],
-            "%s NIC not support" % self.nic,
+            self.nic in ["IXGBE_10G-82599_SFP", "IXGBE_10G-X540T",
+            "cavium_a063"], "%s NIC not support" % self.nic,
         )
         self.verify(
             self.drivername in ["vfio-pci"],
@@ -43,6 +45,12 @@ class TestInlineIpsec(TestCase):
         self.verify(len(self.dut_ports) >= 2, "Insufficient ports")
         cores = self.dut.get_core_list("1S/4C/1T")
         self.coremask = utils.create_mask(cores)
+        if self.nic == "cavium_a063":
+            cc.bind_qat_device(self, self.drivername, generate_vfs=True, vf_count=2)
+            inline_devs = cc.bind_mrvl_devices(self, pci_list=self.
+                                               get_suite_cfg()['inline_dev'])
+            self.dev_list = " -a ".join(cc.get_qat_devices(self, num=2)+inline_devs)
+
 
         # get test port info
         self.rxport = self.tester.get_local_port(1)
@@ -74,7 +82,12 @@ class TestInlineIpsec(TestCase):
         self.verify("No such file" not in out, "compilation error 2")
         self.eal_para = self.dut.create_eal_parameters(cores=[20, 21])
 
-        self.cfg_prepare()
+        self.default_ipsec_opts = self._suite_conf.suite_conf.\
+                                  load_section('default_ipsec_opts')
+        self.eal_dict = cc.conf.suite_conf.conf._sections['-eal-opts']
+        if self.nic != "cavium_a063":
+            self.cfg_prepare()
+
 
     def set_up(self):
         """
@@ -195,6 +208,27 @@ class TestInlineIpsec(TestCase):
         self.tester.destroy_session(session_send)
         return payload, p.src, p.dst
 
+    def gen_appcmd(self, case_config, jframe=False):
+        for key, value in self.default_ipsec_opts:
+            if not case_config.get(key):
+                case_config[key] = value
+
+        # self.eal_para = self.dut.create_eal_parameters(cores=[20, 21])
+        if not jframe:
+            case_config.pop("-j", "")
+            case_config.pop("-mtu", "")
+
+        ekeys = self.eal_dict.keys()
+        eal_str = ""
+        app_str = ""
+        for key, value in case_config.items():
+            if key in ekeys:
+                eal_str += "%s %s " %(key, value)
+            else:
+                app_str += "%s %s " %(key, value)
+        cmd = "%s %s %s -- %s" %(self.path, self.eal_para, eal_str, app_str)
+        return cmd
+
     def Ipsec_Encryption(
         self,
         config,
@@ -211,22 +245,24 @@ class TestInlineIpsec(TestCase):
         inner_dst="192.168.105.10",
         sa_src="172.16.1.5",
         sa_dst="172.16.2.5",
+        cmd=None
     ):
         """
         verify Ipsec receive package
         """
-        if jumboframe is not None:
-            cmd = (
-                self.path
-                + " %s --vdev 'crypto_null' --log-level 8 --socket-mem 1024,1024 -- -p 0xf -P -u 0x2 -j 9200 --mtu %s --config='%s' -f %s"
-                % (self.eal_para, jumboframe, config, file_name)
-            )
-        else:
-            cmd = (
-                self.path
-                + " %s --vdev 'crypto_null' --log-level 8 --socket-mem 1024,1024 -- -p 0xf -P -u 0x2 --config='%s' -f %s"
-                % (self.eal_para, config, file_name)
-            )
+        if not cmd:
+            if jumboframe is not None:
+                cmd = (
+                    self.path
+                    + " %s --vdev 'crypto_null' --log-level 8 --socket-mem 1024,1024 -- -p 0xf -P -u 0x2 -j 9200 --mtu %s --config='%s' -f %s"
+                    % (self.eal_para, jumboframe, config, file_name)
+                )
+            else:
+                cmd = (
+                    self.path
+                    + " %s --vdev 'crypto_null' --log-level 8 --socket-mem 1024,1024 -- -p 0xf -P -u 0x2 --config='%s' -f %s"
+                    % (self.eal_para, config, file_name)
+                )
 
         self.dut.send_expect(cmd, "IPSEC", 60)
 
@@ -238,11 +274,11 @@ class TestInlineIpsec(TestCase):
 
         session_receive.send_expect("scapy", ">>>", 10)
         time.sleep(1)
-        session_receive.send_expect(
-            "pkts=sniff(iface='%s', count=1, timeout=10)" % rxItf, "", 10
-        )
 
         if do_encrypt:
+            session_receive.send_expect("pkts=sniff(iface='%s', filter='src %s'"
+                                        ", count=1, timeout=10)" %
+                                        (rxItf, inner_dst), "", 10)
             send_package = self.send_encryption_package(
                 txItf, paysize, do_encrypt, send_spi, count, inner_dst, sa_src, sa_dst
             )
@@ -250,10 +286,14 @@ class TestInlineIpsec(TestCase):
             session_receive.send_expect("pkts", "", 30)
             out = session_receive.send_expect("pkts[0]['IP'] ", ">>>", 10)
         else:
+            session_receive.send_expect("pkts=sniff(iface='%s', filter='src %s'"
+                                        ", count=1, timeout=10)" %
+                                        (rxItf, sa_src), "", 10)
             session_receive2 = self.tester.create_session(
                 name="receive_encryption_package2"
             )
-            session_receive2.send_expect("tcpdump -nn -Xvvvi %s -c 1" % rxItf, "", 10)
+            session_receive2.send_expect("tcpdump -Xvvvi %s -c 1 src %s" %
+                                         (rxItf, sa_src), "", 10)
             send_package = self.send_encryption_package(
                 txItf, paysize, do_encrypt, send_spi, count, inner_dst, sa_src, sa_dst
             )
@@ -413,15 +453,16 @@ class TestInlineIpsec(TestCase):
         self.verify(len(l) == 2, "Ipsec Decryption wrongkey failed")
         self.dut.send_expect("^C", "#", 5)
 
-    def test_Ipsec_Encryption_Decryption(self):
+    def test_Ipsec_Encryption_Decryption(self, cmd=None):
         """
         test Ipsec Encryption Decryption
         """
-        cmd = (
-            self.path
-            + " %s --vdev 'crypto_null' --log-level 8 --socket-mem 1024,1 -- -p 0xf -P -u 0x2 --config='%s' -f %s"
-            % (self.eal_para, "(0,0,21),(1,0,21)", "/root/dpdk/enc_dec.cfg")
-        )
+        if not cmd:
+            cmd = (
+                self.path
+                + " %s --vdev 'crypto_null' --log-level 8 --socket-mem 1024,1 -- -p 0xf -P -u 0x2 --config='%s' -f %s"
+                % (self.eal_para, "(0,0,21),(1,0,21)", "/root/dpdk/enc_dec.cfg")
+            )
         self.dut.send_expect(cmd, "IPSEC", 60)
         session_receive = self.tester.create_session(name="receive_encryption_package")
         sa_gcm = r"sa_gcm=SecurityAssociation(ESP, spi=1005,crypt_algo='AES-GCM',crypt_key=b'\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3d\xde\xad\xbe\xef',auth_algo='NULL', auth_key=None,tunnel_header=IP(src='172.16.1.5', dst='172.16.2.5'))"
@@ -429,8 +470,8 @@ class TestInlineIpsec(TestCase):
         session_receive.send_expect("scapy", ">>>", 60)
         session_receive.send_expect(sa_gcm, ">>>", 60)
         session_receive.send_expect(
-            "pkts=sniff(iface='%s',count=3,timeout=30)" % self.rxItf, "", 60
-        )
+            "pkts=sniff(iface='%s', filter='src %s',count=1,timeout=30)" %\
+            (self.rxItf, '172.16.1.5'), "", 60) # Sniff for Encrypted pkt
         session_receive2 = self.tester.create_session(
             name="receive_encryption_package2"
         )
@@ -438,9 +479,8 @@ class TestInlineIpsec(TestCase):
         session_receive2.send_expect("scapy", ">>>", 60)
         session_receive2.send_expect(sa_gcm, ">>>", 60)
         session_receive2.send_expect(
-            "pkts=sniff(iface='%s',count=2,timeout=30)" % self.txItf, "", 60
-        )
-
+            "pkts=sniff(iface='%s', filter='src %s',count=2,timeout=30)" %\
+            (self.txItf, '192.168.105.10'), "", 60) # sniff for Normal pkt
         payload = "test for Ipsec Encryption Decryption simultaneously"
         sa_gcm = SecurityAssociation(
             ESP,
@@ -470,8 +510,8 @@ class TestInlineIpsec(TestCase):
         )
         session_receive3.send_expect("tcpdump -nn -Xvvvi %s -c 1" % self.rxItf, "", 30)
         time.sleep(2)
-        sendp(eth_e1, iface=self.rxItf, count=2)
-        sendp(eth_e2, iface=self.txItf, count=1)
+        sendp(eth_e1, iface=self.rxItf, count=2) # send Encrypted packet
+        sendp(eth_e2, iface=self.txItf, count=1) # send Normal packet
         time.sleep(3)
         rev = session_receive3.get_session_before(3)
         print(rev)
@@ -491,6 +531,107 @@ class TestInlineIpsec(TestCase):
         self.tester.destroy_session(session_receive2)
         self.tester.destroy_session(session_receive3)
 
+    def test_mrvl_Ipsec_Encryption(self, jumbo=False):
+        """
+        test Ipsec Encryption
+        """
+        case_cfg = deepcopy(self.get_case_cfg())
+        enc = case_cfg.pop('rule')
+        self.set_cfg('enc.cfg', enc)
+        case_cfg["-a"] = self.dev_list
+        if jumbo:
+            paysize = random.randint(ETHER_STANDARD_MTU+300, ETHER_JUMBO_FRAME_MTU)
+        else:
+            paysize = random.randint(1, ETHER_STANDARD_MTU)
+
+        self.Ipsec_Encryption("", "", self.txItf, self.rxItf, paysize,
+                              jumboframe=jumbo,
+                              cmd=self.gen_appcmd(case_cfg, jframe=jumbo))
+        self.dut.send_expect("^C", "#", 5)
+
+    def test_mrvl_Ipsec_Encryption_Jumboframe(self):
+        self.test_mrvl_Ipsec_Encryption(jumbo=True)
+
+    def test_mrvl_Ipsec_Decryption(self, jumbo=False):
+        case_cfg = deepcopy(self.get_case_cfg())
+        dec = case_cfg.pop('rule')
+        self.set_cfg('dec.cfg', dec)
+        case_cfg["-a"] = self.dev_list
+        if jumbo:
+            paysize = random.randint(ETHER_STANDARD_MTU+300, ETHER_JUMBO_FRAME_MTU)
+        else:
+            paysize = random.randint(1, ETHER_STANDARD_MTU)
+        self.Ipsec_Encryption("", "", self.rxItf, self.txItf, paysize,
+                              jumboframe=jumbo, do_encrypt=True, count=2,
+                              cmd=self.gen_appcmd(case_cfg, jframe=jumbo))
+        self.dut.send_expect("^C", "#", 5)
+
+    def test_mrvl_Ipsec_Decryption_Jumboframe(self):
+        self.test_mrvl_Ipsec_Decryption(jumbo=True)
+
+    def test_mrvl_Ipsec_Encryption_Rss(self):
+        case_cfg = deepcopy(self.get_case_cfg())
+        enc = case_cfg.pop('rule')
+        self.set_cfg('enc_rss.cfg', enc)
+        send_spi = case_cfg.pop("send_spi", 5)
+        rec_spi = case_cfg.pop("receive_spi", 1005)
+        inner_dst = case_cfg.pop("inner_dst", '192.168.105.10')
+        case_cfg["-a"] = self.dev_list
+        self.Ipsec_Encryption("", "", self.txItf,
+                              self.rxItf, send_spi=send_spi, receive_spi=rec_spi,
+                              inner_dst=inner_dst, cmd=self.gen_appcmd(case_cfg))
+        out = self.dut.get_session_output()
+        verifycode = "receive 1 packet in rxqueueid=1"
+        self.verify(verifycode in out, "rxqueueid error")
+        self.dut.send_expect("^C", "#", 5)
+
+    def test_mrvl_Ipsec_Decryption_Rss(self):
+        """
+        test Ipsec Decryption Rss
+        """
+        case_cfg = deepcopy(self.get_case_cfg())
+        enc = case_cfg.pop('rule')
+        case_cfg["-a"] = self.dev_list
+        self.set_cfg('dec_rss.cfg', enc)
+        send_spi = case_cfg.pop("send_spi", 5)
+        rec_spi = case_cfg.pop("receive_spi", 1005)
+        inner_dst = case_cfg.pop("inner_dst", '192.168.105.10')
+        self.Ipsec_Encryption("", "", self.rxItf, self.txItf, do_encrypt=True,
+                              send_spi=send_spi, receive_spi=rec_spi, count=2,
+                              cmd=self.gen_appcmd(case_cfg))
+        out = self.dut.get_session_output()
+        verifycode = "receive 1 packet in rxqueueid=1"
+        self.verify(verifycode in out, "rxqueueid error")
+        self.dut.send_expect("^C", "#", 5)
+
+    def test_mrvl_Ipsec_Decryption_wrongkey(self):
+        """
+        test Ipsec Decryption wrongkey
+        """
+        case_cfg = deepcopy(self.get_case_cfg())
+        wkey_cfg = case_cfg.pop('rule')
+        case_cfg["-a"] = self.dev_list
+        self.set_cfg('dec_wrong_key.cfg', wkey_cfg)
+        paysize = random.randint(1, ETHER_STANDARD_MTU)
+        self.Ipsec_Encryption("", "", self.rxItf, self.txItf, paysize,
+                              do_encrypt=True, verify=False, count=2,
+                              cmd=self.gen_appcmd(case_cfg))
+        out = self.dut.get_session_output()
+        verifycode = "IPSEC_ESP: esp_inbound_post\(\) failed crypto op"
+        l = re.findall(verifycode, out)
+        self.verify(len(l) == 2, "Ipsec Decryption wrongkey failed")
+        self.dut.send_expect("^C", "#", 5)
+
+    def test_mrvl_Ipsec_Encryption_Decryption(self):
+        case_cfg = deepcopy(self.get_case_cfg())
+        endec_cfg = case_cfg.pop('rule')
+        self.set_cfg('enc_dec.cfg', endec_cfg)
+        case_cfg["-a"] = self.dev_list
+        cmd = self.gen_appcmd(case_cfg)
+        paysize = random.randint(1, ETHER_STANDARD_MTU)
+        self.test_Ipsec_Encryption_Decryption(cmd=cmd)
+
+
     def tear_down(self):
         """
         Run after each test case.
diff --git a/tests/TestSuite_ipsec_gw_cryptodev_func.py b/tests/TestSuite_ipsec_gw_cryptodev_func.py
index d9f6f626..7e8fdf07 100644
--- a/tests/TestSuite_ipsec_gw_cryptodev_func.py
+++ b/tests/TestSuite_ipsec_gw_cryptodev_func.py
@@ -53,12 +53,13 @@ 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_qat_device(self, self.drivername)
+        cc.bind_qat_device(self, self.drivername, generate_vfs=True, vf_count=2)
 
         self._default_ipsec_gw_opts = {
-            "config": '"(0,0,%s),(1,0,%s)"' % tuple(self.core_list[-2:]),
+            "config": '"(0,0,%s),(1,0,%s)"' % tuple(self.core_list[-self.number_of_ports:]),
             "P": "",
-            "p": "0x3",
+            "p": "0xf",
             "f": "/tmp/ipsec_ep0.cfg",
             "u": "0x1",
         }
@@ -219,11 +220,84 @@ class TestIPsecGwCryptodevFunc(TestCase):
     def test_sw_3des_cbc_ipv6_transport(self):
         self._execute_ipsec_gw_test()
 
+    # Marvell Specific Testcases
+    def test_mrvl_aes_128_cbc_ipv4_tunnel(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_aes_128_ctr_ipv4_tunnel(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_aes_256_cbc_ipv4_tunnel(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_aes_gcm_ipv4_tunnel(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_null_ipv4_tunnel(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_3des_cbc_ipv4_tunnel(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_aes_128_cbc_ipv4_transport(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_aes_128_ctr_ipv4_transport(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_aes_256_cbc_ipv4_transport(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_aes_gcm_ipv4_transport(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_null_ipv4_transport(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_3des_cbc_ipv4_transport(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_aes_128_ctr_ipv6_tunnel(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_aes_128_cbc_ipv6_tunnel(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_aes_256_cbc_ipv6_tunnel(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_aes_gcm_ipv6_tunnel(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_null_ipv6_tunnel(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_3des_cbc_ipv6_tunnel(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_aes_128_cbc_ipv6_transport(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_aes_128_ctr_ipv6_transport(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_aes_256_cbc_ipv6_transport(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_aes_gcm_ipv6_transport(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_null_ipv6_transport(self):
+        self._execute_ipsec_gw_test()
+
+    def test_mrvl_3des_cbc_ipv6_transport(self):
+        self._execute_ipsec_gw_test()
+
     def _get_crypto_device(self, num):
         device = {}
         if self.get_case_cfg()["devtype"] == "crypto_aesni_mb":
             dev = "crypto_aesni_mb"
-        elif self.get_case_cfg()["devtype"] == "crypto_qat":
+        elif self.get_case_cfg()["devtype"] in ["crypto_qat","crypto_cn10k"]:
             w = cc.get_qat_devices(self, cpm_num=1, num=num)
             device["a"] = " -a ".join(w)
             device["vdev"] = None
diff --git a/tests/TestSuite_l2fwd_cryptodev_func.py b/tests/TestSuite_l2fwd_cryptodev_func.py
index a1f562ab..6d47adb7 100644
--- a/tests/TestSuite_l2fwd_cryptodev_func.py
+++ b/tests/TestSuite_l2fwd_cryptodev_func.py
@@ -6,6 +6,7 @@ import binascii
 import hashlib
 import hmac
 import time
+import re
 
 # Manually Install the CryptoMobile Python Library,
 # Before running this test suite
@@ -61,7 +62,13 @@ 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_qat_device(self, self.drivername, generate_vfs=True, vf_count=2)
+        if self.nic == "cavium_a063":
+            count = len(self.get_suite_cfg().get('l').split(","))
+            cc.bind_qat_device(self, "vfio-pci", generate_vfs=True, vf_count=count)
+        else:
+            cc.bind_qat_device(self, "vfio-pci")
+
 
     def set_up(self):
         pass
@@ -269,6 +276,56 @@ class TestL2fwdCryptodevFunc(TestCase):
         test_vectors["scheduler_AES_GCM_00"]["mode"] = "mm"
         self.__execute_l2fwd_crypto_test(test_vectors, "scheduler_AES_GCM_00")
 
+    # Marvell Specific Tests
+
+    def _mrvl_test_execution(self, tname, vdev=None):
+        self.logger.info(tname)
+        t_conf = self.get_case_cfg()
+        self.__execute_l2fwd_crypto_test("", "", t_conf)
+
+    def test_mrvl_AES_CBC_auto(self):
+        self._mrvl_test_execution("test_mrvl_AES_CBC_auto")
+
+    def test_mrvl_AES_CTR_auto(self):
+        self._mrvl_test_execution("test_mrvl_AES_CTR_auto")
+
+    def test_mrvl_AES_XTS_auto(self):
+        self._mrvl_test_execution("test_mrvl_AES_XTS_auto")
+
+    def test_mrvl_AES_GCM_auto(self):
+        self._mrvl_test_execution("test_mrvl_AES_GCM_auto")
+
+    def test_mrvl_AES_CCM_auto(self):
+        self._mrvl_test_execution("test_mrvl_AES_CCM_auto")
+
+    def test_mrvl_h_MD_SHA_auto(self):
+        self._mrvl_test_execution("test_mrvl_h_MD_SHA_auto")
+   
+    def test_mrvl_DES_CBC_auto(self):
+        self._mrvl_test_execution("test_mrvl_DES_CBC_auto")
+
+    def test_mrvl_3DES_CBC_auto(self):
+        self._mrvl_test_execution("test_mrvl_3DES_CBC_auto")
+
+    def test_mrvl_3DES_CTR_auto(self):
+        self._mrvl_test_execution("test_mrvl_3DES_CTR_auto")
+
+    def test_mrvl_SNOW3G_auto(self):
+        self._mrvl_test_execution("test_mrvl_SNOW3G_auto")
+
+    def test_mrvl_KASUMI_auto(self):
+        self._mrvl_test_execution("test_mrvl_KASUMI_auto")
+
+    def test_mrvl_ZUC_auto(self):
+        self._mrvl_test_execution("test_mrvl_ZUC_auto")
+
+    def test_mrvl_NULL_auto(self):
+        self._mrvl_test_execution("test_qat_NULL_auto")
+
+    def test_scheduler_AES_CBC_auto(self):
+        self._mrvl_test_execution("test_scheduler_AES_CBC_auto")
+   
+
     def __calculate_total_cases_numb(self):
         alg_map = {}
         pmd_map = {}
@@ -365,15 +422,16 @@ class TestL2fwdCryptodevFunc(TestCase):
             )
         self.logger.info("Total cases:\t\t\t {0}".format(count))
 
-    def __execute_l2fwd_crypto_test(self, test_vectors, test_vector_name):
+    def __execute_l2fwd_crypto_test(self, test_vectors, test_vector_name,
+                                    test_vector=None):
         if cc.is_test_skip(self):
             return
 
-        if test_vector_name not in test_vectors:
-            self.logger.warning("SKIP : " + test_vector_name)
-            return True
-
-        test_vector = test_vectors[test_vector_name]
+        if not test_vector:
+            if test_vector_name not in test_vectors:
+                self.logger.warning("SKIP : " + test_vector_name)
+                return True
+            test_vector = test_vectors[test_vector_name]
 
         test_vector_list = self.__test_vector_to_vector_list(
             test_vector, core_mask=self.core_mask, port_mask=self.port_mask
@@ -469,12 +527,17 @@ class TestL2fwdCryptodevFunc(TestCase):
                             encoding="utf-8",
                         )
                     else:
-                        hash_text = str(
-                            binascii.b2a_hex(
-                                pkt_rec.pktgen.pkt["Padding"].getfieldval("load")
-                            ),
-                            encoding="utf-8",
-                        )
+                        try:
+                            hash_text = str(
+                                binascii.b2a_hex(
+                                    pkt_rec.pktgen.pkt["Padding"].getfieldval("load")
+                                ),
+                                encoding="utf-8",
+                            )
+                        except  Exception as err:
+                            result = False
+                            self.logger.error(f"could not get Padded data: {err}")
+                            hash_text = "Could not get the Hash value"
                     if hash_text.lower() == test_vector["output_hash"].lower():
                         self.logger.info("Hash Matched")
                     else:
@@ -514,12 +577,11 @@ class TestL2fwdCryptodevFunc(TestCase):
         QUEUE_NUM = ""
 
         vdev = ""
-        if test_vector["vdev"].find("scheduler") != -1:
+        if test_vector.get("vdev", "").find("scheduler") != -1:
             vdev = test_vector["vdev"]
             self.vector.append("Scheduler_" + test_vector["mode"])
         elif self.__check_field_in_vector(test_vector, "vdev"):
             vdev = (
-                "--vdev "
                 + test_vector["vdev"]
                 + "1"
                 + " --vdev "
@@ -530,7 +592,10 @@ class TestL2fwdCryptodevFunc(TestCase):
             self.vector.append(test_vector["vdev"].upper())
         else:
             vdev = "-a " + " -a ".join(cc.get_qat_devices(self, num=2))
-            self.vector.append("QAT")
+            if re.match("crypto_cn\d+K", test_vector['devtype'], re.I):
+                self.vector.append("mrvl_%s" %test_vector['devtype'])
+            else:
+                self.vector.append("QAT")
 
         chain = ""
         if self.__check_field_in_vector(test_vector, "chain"):
@@ -792,7 +857,7 @@ class TestL2fwdCryptodevFunc(TestCase):
         out_str = ""
         cipher_algo = vector["cipher_algo"]
 
-        mBitlen = 8 * (len(vector["input"]) // 2)
+        mBitlen = int(8 * (len(vector["input"]) // 2))
         bin_input = bytearray.fromhex(vector["input"])
         str_input = str(bin_input, encoding="utf-8")
         bin_key = binascii.a2b_hex(vector["cipher_key"])
@@ -805,14 +870,14 @@ class TestL2fwdCryptodevFunc(TestCase):
                 count=66051,
                 bearer=0,
                 dir=1,
-                data=str_input,
+                data_in=str_input,
                 bitlen=mBitlen,
             )
 
         elif (cipher_algo.upper()).find("SNOW3G") != -1:
             vector["iv"] = "00000000000000000000000000000000"
             out_str = cm.UEA2(
-                key=bin_key, count=0, bearer=0, dir=0, data=str_input, bitlen=mBitlen
+                key=bin_key, count=0, bearer=0, dir=0, data_in=str_input, bitlen=mBitlen
             )
         elif (cipher_algo.upper()).find("ZUC") != -1:
             vector["iv"] = "00010203040000000001020304000000"
@@ -821,7 +886,7 @@ class TestL2fwdCryptodevFunc(TestCase):
                 count=0x10203,
                 bearer=0,
                 dir=1,
-                data=str_input,
+                data_in=str_input,
                 bitlen=mBitlen,
             )
 
@@ -877,7 +942,7 @@ class TestL2fwdCryptodevFunc(TestCase):
         bin_key = str(bin_key, encoding="utf-8")
 
         hash_out = cm.UIA1(
-            key=bin_key, count=0x10203, fresh=0x4050607, dir=0, data=str_input
+            key=bin_key, count=0x10203, fresh=0x4050607, dir=0, data_in=str_input
         )
         auth_str = hash_out.lower()
 
@@ -894,7 +959,7 @@ class TestL2fwdCryptodevFunc(TestCase):
         bin_key = str(bin_key, encoding="utf-8")
         vector["aad"] = "00000000000000000000000000000000"
 
-        hash_out = cm.UIA2(key=bin_key, count=0, fresh=0, dir=0, data=str_input)
+        hash_out = cm.UIA2(key=bin_key, count=0, fresh=0, dir=0, data_in=str_input)
 
         auth_str = hash_out.lower()
 
@@ -903,7 +968,7 @@ class TestL2fwdCryptodevFunc(TestCase):
     def __gen_zuc_hash(self, vector):
         auth_str = ""
         auth_algo = vector["auth_algo"]
-        mBitlen = 8 * (len(vector["input"]) / 2)
+        mBitlen = int(8 * (len(vector["input"]) / 2))
         bin_input = bytearray.fromhex(vector["input"])
         str_input = str(bin_input, encoding="utf-8")
         bin_key = binascii.a2b_hex(vector["auth_key"])
@@ -912,7 +977,7 @@ class TestL2fwdCryptodevFunc(TestCase):
         vector["aad"] = "00000000000000000000000000000000"
 
         hash_out = cm.EIA3(
-            key=bin_key, count=0, bearer=0, dir=0, data=str_input, bitlen=mBitlen
+            key=bin_key, count=0, bearer=0, dir=0, data_in=str_input, bitlen=mBitlen
         )
         auth_str = hash_out.lower()
 
@@ -1027,7 +1092,8 @@ class TestL2fwdCryptodevFunc(TestCase):
         else:
             pass
         if not isinstance(hash_str, str):
-            hash_str = str(hash_str, encoding="utf-8")
+            # check how to convert to string withou  ignoring errors
+            hash_str = str(hash_str, encoding="utf-8", errors='ignore')
         vector["output_hash"] = hash_str.lower()
         self.__actually_pmd_hash(vector)
 
-- 
2.25.1


                 reply	other threads:[~2024-11-18  5:15 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20241118051414.3690501-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).