> -----Original Message----- > From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of Slawomir > Mrozowicz > Sent: Thursday, January 05, 2017 4:50 PM > To: dev@dpdk.org > Cc: Mrozowicz, SlawomirX; Doherty, Declan; Azarewicz, PiotrX T; Kerlin, > Marcin; Kobylinski, MichalX > Subject: [dpdk-dev] [PATCH v2 3/3] app/crypto-perf: introduce new > performance test application > > This patchset introduce new application which allows measuring > performance parameters of PMDs available in crypto tree. The goal of > this application is to replace existing performance tests in app/test. > Parameters available are: throughput (--ptest throughput) and latency > (--ptest latency). User can use multiply cores to run tests on but only > one type of crypto PMD can be measured during single application > execution. Cipher parameters, type of device, type of operation and > chain mode have to be specified in the command line as application > parameters. These parameters are checked using device capabilities > structure. > Couple of new library functions in librte_cryptodev are introduced for > application use. > To build the application a CONFIG_RTE_APP_CRYPTO_PERF flag has to be > set > (it is set by default). > Example of usage: -c 0xc0 --vdev crypto_aesni_mb_pmd -w 0000:00:00.0 -- > --ptest throughput --devtype crypto_aesni_mb --optype cipher-then-auth > --cipher-algo aes-cbc --cipher-op encrypt --cipher-key-sz 16 --auth-algo > sha1-hmac --auth-op generate --auth-key-sz 64 --auth-digest-sz 12 > --total-ops 10000000 --burst-sz 32 --buffer-sz 64 > > Signed-off-by: Declan Doherty <declan.dohe...@intel.com> > Signed-off-by: Slawomir Mrozowicz <slawomirx.mrozow...@intel.com> > Signed-off-by: Piotr Azarewicz <piotrx.t.azarew...@intel.com> > Signed-off-by: Marcin Kerlin <marcinx.ker...@intel.com> > Signed-off-by: Michal Kobylinski <michalx.kobylin...@intel.com> > --- > MAINTAINERS | 4 + > app/Makefile | 1 + > app/crypto-perf/Makefile | 51 ++ > app/crypto-perf/cperf.h | 58 ++ > app/crypto-perf/cperf_ops.c | 474 +++++++++++++++ > app/crypto-perf/cperf_ops.h | 66 +++ > app/crypto-perf/cperf_options.h | 104 ++++ > app/crypto-perf/cperf_options_parsing.c | 875 > ++++++++++++++++++++++++++++ > app/crypto-perf/cperf_test_latency.c | 685 > ++++++++++++++++++++++ > app/crypto-perf/cperf_test_latency.h | 57 ++ > app/crypto-perf/cperf_test_throughput.c | 651 > +++++++++++++++++++++ > app/crypto-perf/cperf_test_throughput.h | 58 ++ > app/crypto-perf/cperf_test_vector_parsing.c | 500 ++++++++++++++++ > app/crypto-perf/cperf_test_vector_parsing.h | 73 +++ > app/crypto-perf/cperf_test_vectors.c | 476 +++++++++++++++ > app/crypto-perf/cperf_test_vectors.h | 98 ++++ > app/crypto-perf/cperf_verify_parser.c | 314 ++++++++++ > app/crypto-perf/data/aes_cbc_128_sha.data | 503 ++++++++++++++++ > app/crypto-perf/data/aes_cbc_192_sha.data | 504 ++++++++++++++++ > app/crypto-perf/data/aes_cbc_256_sha.data | 504 ++++++++++++++++ > app/crypto-perf/main.c | 411 +++++++++++++ > config/common_base | 6 + > doc/guides/rel_notes/release_17_02.rst | 5 + > doc/guides/tools/cryptoperf.rst | 397 +++++++++++++ > doc/guides/tools/index.rst | 1 + > 25 files changed, 6876 insertions(+)
... > diff --git a/app/crypto-perf/cperf_options_parsing.c b/app/crypto- > perf/cperf_options_parsing.c ... > +int > +cperf_options_check(struct cperf_options *options) > +{ > + if (options->segments_nb > options->buffer_sz) { > + RTE_LOG(ERR, USER1, > + "Segments number greater than buffer > size.\n"); > + return -EINVAL; > + } ... > + } else if (options->op_type == CPERF_AEAD) { > + if (!(options->cipher_op == > RTE_CRYPTO_CIPHER_OP_ENCRYPT && > + options->auth_op == > + RTE_CRYPTO_AUTH_OP_GENERATE) || This logic is incorrect. This OR should be an AND. > + !(options->cipher_op == > + RTE_CRYPTO_CIPHER_OP_DECRYPT && > + options->auth_op == > + RTE_CRYPTO_AUTH_OP_VERIFY)) { > + RTE_LOG(ERR, USER1, "Use together options: > encrypt and" > + " generate or decrypt and verify.\n"); > + return -EINVAL; > + } > + } > + > + return 0; > +}