xref: /dpdk/app/test-crypto-perf/cperf_options.h (revision 981a1ed32a7920bf0f5e2864ab1f78c296bdfaec)
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