1ededba93SHemant Agrawal /* SPDX-License-Identifier: BSD-3-Clause 2ededba93SHemant Agrawal * Copyright(c) 2018 Intel Corporation 3ededba93SHemant Agrawal */ 4f8be1786SSlawomir Mrozowicz 5f8be1786SSlawomir Mrozowicz #ifndef _CPERF_OPTIONS_ 6f8be1786SSlawomir Mrozowicz #define _CPERF_OPTIONS_ 7f8be1786SSlawomir Mrozowicz 8f8be1786SSlawomir Mrozowicz #include <rte_crypto.h> 9d1be1977SPablo de Lara #include <rte_cryptodev.h> 10a8d0d473SBruce Richardson #ifdef RTE_LIB_SECURITY 118fd2b5a6SAkhil Goyal #include <rte_security.h> 128fd2b5a6SAkhil Goyal #endif 13f8be1786SSlawomir Mrozowicz 14f8be1786SSlawomir Mrozowicz #define CPERF_PTEST_TYPE ("ptest") 15a538d1d2SKiran Kumar K #define CPERF_MODEX_LEN ("modex-len") 16f8be1786SSlawomir Mrozowicz #define CPERF_SILENT ("silent") 1723a95dfeSGagandeep Singh #define CPERF_ENABLE_SDAP ("enable-sdap") 18f8be1786SSlawomir Mrozowicz 19f8be1786SSlawomir Mrozowicz #define CPERF_POOL_SIZE ("pool-sz") 20f8be1786SSlawomir Mrozowicz #define CPERF_TOTAL_OPS ("total-ops") 21f8be1786SSlawomir Mrozowicz #define CPERF_BURST_SIZE ("burst-sz") 22f8be1786SSlawomir Mrozowicz #define CPERF_BUFFER_SIZE ("buffer-sz") 23083de3ebSPablo de Lara #define CPERF_SEGMENT_SIZE ("segment-sz") 24c3643216SAnatoly Burakov #define CPERF_DESC_NB ("desc-nb") 2527c2e747SPablo de Lara #define CPERF_IMIX ("imix") 26f8be1786SSlawomir Mrozowicz 27f8be1786SSlawomir Mrozowicz #define CPERF_DEVTYPE ("devtype") 28f8be1786SSlawomir Mrozowicz #define CPERF_OPTYPE ("optype") 29f8be1786SSlawomir Mrozowicz #define CPERF_SESSIONLESS ("sessionless") 3076a48d8aSJack Bond-Preston #define CPERF_SHARED_SESSION ("shared-session") 31f8be1786SSlawomir Mrozowicz #define CPERF_OUT_OF_PLACE ("out-of-place") 32f8be1786SSlawomir Mrozowicz #define CPERF_TEST_FILE ("test-file") 33f8be1786SSlawomir Mrozowicz #define CPERF_TEST_NAME ("test-name") 34f8be1786SSlawomir Mrozowicz 35e004aaa8SAkhil Goyal #define CPERF_LOW_PRIO_QP_MASK ("low-prio-qp-mask") 36e004aaa8SAkhil Goyal 37f8be1786SSlawomir Mrozowicz #define CPERF_CIPHER_ALGO ("cipher-algo") 38f8be1786SSlawomir Mrozowicz #define CPERF_CIPHER_OP ("cipher-op") 39f8be1786SSlawomir Mrozowicz #define CPERF_CIPHER_KEY_SZ ("cipher-key-sz") 40f8be1786SSlawomir Mrozowicz #define CPERF_CIPHER_IV_SZ ("cipher-iv-sz") 41f8be1786SSlawomir Mrozowicz 42f8be1786SSlawomir Mrozowicz #define CPERF_AUTH_ALGO ("auth-algo") 43f8be1786SSlawomir Mrozowicz #define CPERF_AUTH_OP ("auth-op") 44f8be1786SSlawomir Mrozowicz #define CPERF_AUTH_KEY_SZ ("auth-key-sz") 45acf86169SPablo de Lara #define CPERF_AUTH_IV_SZ ("auth-iv-sz") 468a5b494aSPablo de Lara 478a5b494aSPablo de Lara #define CPERF_AEAD_ALGO ("aead-algo") 488a5b494aSPablo de Lara #define CPERF_AEAD_OP ("aead-op") 498a5b494aSPablo de Lara #define CPERF_AEAD_KEY_SZ ("aead-key-sz") 508a5b494aSPablo de Lara #define CPERF_AEAD_IV_SZ ("aead-iv-sz") 518a5b494aSPablo de Lara #define CPERF_AEAD_AAD_SZ ("aead-aad-sz") 528a5b494aSPablo de Lara 538a5b494aSPablo de Lara #define CPERF_DIGEST_SZ ("digest-sz") 548a5b494aSPablo de Lara 55b82742f9SAkhil Goyal #define CPERF_ASYM_OP ("asym-op") 56b82742f9SAkhil Goyal 57a8d0d473SBruce Richardson #ifdef RTE_LIB_SECURITY 588fd2b5a6SAkhil Goyal #define CPERF_PDCP_SN_SZ ("pdcp-sn-sz") 598fd2b5a6SAkhil Goyal #define CPERF_PDCP_DOMAIN ("pdcp-domain") 605a61bdb9SAkhil Goyal #define CPERF_PDCP_SES_HFN_EN ("pdcp-ses-hfn-en") 615a61bdb9SAkhil Goyal #define PDCP_DEFAULT_HFN 0x1 62d4a131a9SDavid Coyle #define CPERF_DOCSIS_HDR_SZ ("docsis-hdr-sz") 639afa7a46SAkhil Goyal #define CPERF_TLS_VERSION ("tls-version") 648fd2b5a6SAkhil Goyal #endif 658fd2b5a6SAkhil Goyal 66f8be1786SSlawomir Mrozowicz #define CPERF_CSV ("csv-friendly") 67f8be1786SSlawomir Mrozowicz 6896dfeb60SAnatoly Burakov /* benchmark-specific options */ 6996dfeb60SAnatoly Burakov #define CPERF_PMDCC_DELAY_MS ("pmd-cyclecount-delay-ms") 7096dfeb60SAnatoly Burakov 71f6cefe25SPablo de Lara #define MAX_LIST 32 72f8be1786SSlawomir Mrozowicz 73f8be1786SSlawomir Mrozowicz enum cperf_perf_test_type { 74f8be1786SSlawomir Mrozowicz CPERF_TEST_TYPE_THROUGHPUT, 75df52cb3bSSergio Gonzalez Monroy CPERF_TEST_TYPE_LATENCY, 7696dfeb60SAnatoly Burakov CPERF_TEST_TYPE_VERIFY, 7796dfeb60SAnatoly Burakov CPERF_TEST_TYPE_PMDCC 78f8be1786SSlawomir Mrozowicz }; 79f8be1786SSlawomir Mrozowicz 80f8be1786SSlawomir Mrozowicz 81f8be1786SSlawomir Mrozowicz extern const char *cperf_test_type_strs[]; 82f8be1786SSlawomir Mrozowicz 83f8be1786SSlawomir Mrozowicz enum cperf_op_type { 84f8be1786SSlawomir Mrozowicz CPERF_CIPHER_ONLY = 1, 85f8be1786SSlawomir Mrozowicz CPERF_AUTH_ONLY, 86f8be1786SSlawomir Mrozowicz CPERF_CIPHER_THEN_AUTH, 87f8be1786SSlawomir Mrozowicz CPERF_AUTH_THEN_CIPHER, 888fd2b5a6SAkhil Goyal CPERF_AEAD, 89d4a131a9SDavid Coyle CPERF_PDCP, 90ba588ce3SKiran Kumar K CPERF_DOCSIS, 9128dde5daSAkhil Goyal CPERF_IPSEC, 929afa7a46SAkhil Goyal CPERF_ASYM_MODEX, 93195a271eSGowrishankar Muthukrishnan CPERF_ASYM_SECP256R1, 94*981a1ed3SGowrishankar Muthukrishnan CPERF_ASYM_ED25519, 95b82742f9SAkhil Goyal CPERF_ASYM_SM2, 969afa7a46SAkhil Goyal CPERF_TLS, 97f8be1786SSlawomir Mrozowicz }; 98f8be1786SSlawomir Mrozowicz 99f8be1786SSlawomir Mrozowicz extern const char *cperf_op_type_strs[]; 100f8be1786SSlawomir Mrozowicz 101f8be1786SSlawomir Mrozowicz struct cperf_options { 102f8be1786SSlawomir Mrozowicz enum cperf_perf_test_type test; 103f8be1786SSlawomir Mrozowicz 104f8be1786SSlawomir Mrozowicz uint32_t pool_sz; 105f8be1786SSlawomir Mrozowicz uint32_t total_ops; 106c1670ae0SAnoob Joseph uint32_t headroom_sz; 107c1670ae0SAnoob Joseph uint32_t tailroom_sz; 108083de3ebSPablo de Lara uint32_t segment_sz; 109a8eb9640SPablo de Lara uint32_t test_buffer_size; 11027c2e747SPablo de Lara uint32_t *imix_buffer_sizes; 111c3643216SAnatoly Burakov uint32_t nb_descriptors; 112c4f916e3SPablo de Lara uint16_t nb_qps; 113e004aaa8SAkhil Goyal uint64_t low_prio_qp_mask; 114f8be1786SSlawomir Mrozowicz 115f8be1786SSlawomir Mrozowicz uint32_t sessionless:1; 11676a48d8aSJack Bond-Preston uint32_t shared_session:1; 117f8be1786SSlawomir Mrozowicz uint32_t out_of_place:1; 118f8be1786SSlawomir Mrozowicz uint32_t silent:1; 119f8be1786SSlawomir Mrozowicz uint32_t csv:1; 12021230400SAnoob Joseph uint32_t is_outbound:1; 121f8be1786SSlawomir Mrozowicz 122f8be1786SSlawomir Mrozowicz enum rte_crypto_cipher_algorithm cipher_algo; 123f8be1786SSlawomir Mrozowicz enum rte_crypto_cipher_operation cipher_op; 124f8be1786SSlawomir Mrozowicz 125f8be1786SSlawomir Mrozowicz uint16_t cipher_key_sz; 126f8be1786SSlawomir Mrozowicz uint16_t cipher_iv_sz; 127f8be1786SSlawomir Mrozowicz 128f8be1786SSlawomir Mrozowicz enum rte_crypto_auth_algorithm auth_algo; 129f8be1786SSlawomir Mrozowicz enum rte_crypto_auth_operation auth_op; 130f8be1786SSlawomir Mrozowicz 131f8be1786SSlawomir Mrozowicz uint16_t auth_key_sz; 132acf86169SPablo de Lara uint16_t auth_iv_sz; 1338a5b494aSPablo de Lara 1348a5b494aSPablo de Lara enum rte_crypto_aead_algorithm aead_algo; 1358a5b494aSPablo de Lara enum rte_crypto_aead_operation aead_op; 1368a5b494aSPablo de Lara 1378a5b494aSPablo de Lara uint16_t aead_key_sz; 1388a5b494aSPablo de Lara uint16_t aead_iv_sz; 1398a5b494aSPablo de Lara uint16_t aead_aad_sz; 1408a5b494aSPablo de Lara 1418a5b494aSPablo de Lara uint16_t digest_sz; 142f6cefe25SPablo de Lara 143a8d0d473SBruce Richardson #ifdef RTE_LIB_SECURITY 1448fd2b5a6SAkhil Goyal uint16_t pdcp_sn_sz; 1455a61bdb9SAkhil Goyal uint16_t pdcp_ses_hfn_en; 14623a95dfeSGagandeep Singh uint16_t pdcp_sdap; 1478fd2b5a6SAkhil Goyal enum rte_security_pdcp_domain pdcp_domain; 148d4a131a9SDavid Coyle uint16_t docsis_hdr_sz; 1499afa7a46SAkhil Goyal enum rte_security_tls_version tls_version; 1508fd2b5a6SAkhil Goyal #endif 151d1be1977SPablo de Lara char device_type[RTE_CRYPTODEV_NAME_MAX_LEN]; 152a8eb9640SPablo de Lara enum cperf_op_type op_type; 153a8eb9640SPablo de Lara 154a8eb9640SPablo de Lara char *test_file; 155a8eb9640SPablo de Lara char *test_name; 156a8eb9640SPablo de Lara 157f6cefe25SPablo de Lara uint32_t buffer_size_list[MAX_LIST]; 158f6cefe25SPablo de Lara uint8_t buffer_size_count; 159f6cefe25SPablo de Lara uint32_t max_buffer_size; 160f6cefe25SPablo de Lara uint32_t min_buffer_size; 161f6cefe25SPablo de Lara uint32_t inc_buffer_size; 162f6cefe25SPablo de Lara 163f6cefe25SPablo de Lara uint32_t burst_size_list[MAX_LIST]; 164f6cefe25SPablo de Lara uint8_t burst_size_count; 165f6cefe25SPablo de Lara uint32_t max_burst_size; 166f6cefe25SPablo de Lara uint32_t min_burst_size; 167f6cefe25SPablo de Lara uint32_t inc_burst_size; 168f6cefe25SPablo de Lara 16996dfeb60SAnatoly Burakov /* pmd-cyclecount specific options */ 17096dfeb60SAnatoly Burakov uint32_t pmdcc_delay; 17127c2e747SPablo de Lara uint32_t imix_distribution_list[MAX_LIST]; 17227c2e747SPablo de Lara uint8_t imix_distribution_count; 173a538d1d2SKiran Kumar K struct cperf_modex_test_data *modex_data; 174a538d1d2SKiran Kumar K uint16_t modex_len; 175195a271eSGowrishankar Muthukrishnan struct cperf_ecdsa_test_data *secp256r1_data; 176*981a1ed3SGowrishankar Muthukrishnan struct cperf_eddsa_test_data *eddsa_data; 177b82742f9SAkhil Goyal struct cperf_sm2_test_data *sm2_data; 178b82742f9SAkhil Goyal enum rte_crypto_asym_op_type asym_op_type; 179b82742f9SAkhil Goyal enum rte_crypto_auth_algorithm asym_hash_alg; 180f8be1786SSlawomir Mrozowicz }; 181f8be1786SSlawomir Mrozowicz 182f8be1786SSlawomir Mrozowicz void 183f8be1786SSlawomir Mrozowicz cperf_options_default(struct cperf_options *options); 184f8be1786SSlawomir Mrozowicz 185f8be1786SSlawomir Mrozowicz int 186f8be1786SSlawomir Mrozowicz cperf_options_parse(struct cperf_options *options, 187f8be1786SSlawomir Mrozowicz int argc, char **argv); 188f8be1786SSlawomir Mrozowicz 189f8be1786SSlawomir Mrozowicz int 190f8be1786SSlawomir Mrozowicz cperf_options_check(struct cperf_options *options); 191f8be1786SSlawomir Mrozowicz 192f8be1786SSlawomir Mrozowicz void 193f8be1786SSlawomir Mrozowicz cperf_options_dump(struct cperf_options *options); 194f8be1786SSlawomir Mrozowicz 195f8be1786SSlawomir Mrozowicz #endif 196