net/bnxt: support enabling new mailbox channel
[dpdk.git] / app / test-crypto-perf / main.c
index 74e2165..953e058 100644 (file)
@@ -21,7 +21,6 @@
 #include "cperf_test_verify.h"
 #include "cperf_test_pmd_cyclecount.h"
 
-#define SESS_MEMPOOL_CACHE_SIZE 64
 
 const char *cperf_test_type_strs[] = {
        [CPERF_TEST_TYPE_THROUGHPUT] = "throughput",
@@ -149,6 +148,23 @@ cperf_initialize_cryptodev(struct cperf_options *opts, uint8_t *enabled_cdevs,
                        .nb_descriptors = opts->nb_descriptors
                };
 
+               /**
+                * Device info specifies the min headroom and tailroom
+                * requirement for the crypto PMD. This need to be honoured
+                * by the application, while creating mbuf.
+                */
+               if (opts->headroom_sz < cdev_info.min_mbuf_headroom_req) {
+                       /* Update headroom */
+                       opts->headroom_sz = cdev_info.min_mbuf_headroom_req;
+               }
+               if (opts->tailroom_sz < cdev_info.min_mbuf_tailroom_req) {
+                       /* Update tailroom */
+                       opts->tailroom_sz = cdev_info.min_mbuf_tailroom_req;
+               }
+
+               /* Update segment size to include headroom & tailroom */
+               opts->segment_sz += (opts->headroom_sz + opts->tailroom_sz);
+
                uint32_t dev_max_nb_sess = cdev_info.sym.max_nb_sessions;
                /*
                 * Two sessions objects are required for each session
@@ -172,7 +188,7 @@ cperf_initialize_cryptodev(struct cperf_options *opts, uint8_t *enabled_cdevs,
                 * A single session is required per queue pair
                 * in each device
                 */
-               if (dev_max_nb_sess < opts->nb_qps) {
+               if (dev_max_nb_sess != 0 && dev_max_nb_sess < opts->nb_qps) {
                        RTE_LOG(ERR, USER1,
                                "Device does not support at least "
                                "%u sessions\n", opts->nb_qps);
@@ -187,7 +203,7 @@ cperf_initialize_cryptodev(struct cperf_options *opts, uint8_t *enabled_cdevs,
                        sess_mp = rte_mempool_create(mp_name,
                                                sessions_needed,
                                                max_sess_size,
-                                               SESS_MEMPOOL_CACHE_SIZE,
+                                               0,
                                                0, NULL, NULL, NULL,
                                                NULL, socket_id,
                                                0);
@@ -326,7 +342,9 @@ cperf_check_test_vector(struct cperf_options *opts,
                                return -1;
                        if (test_vec->ciphertext.length < opts->max_buffer_size)
                                return -1;
-                       if (test_vec->cipher_iv.data == NULL)
+                       /* Cipher IV is only required for some algorithms */
+                       if (opts->cipher_iv_sz &&
+                                       test_vec->cipher_iv.data == NULL)
                                return -1;
                        if (test_vec->cipher_iv.length != opts->cipher_iv_sz)
                                return -1;
@@ -341,7 +359,9 @@ cperf_check_test_vector(struct cperf_options *opts,
                                return -1;
                        if (test_vec->plaintext.length < opts->max_buffer_size)
                                return -1;
-                       if (test_vec->auth_key.data == NULL)
+                       /* Auth key is only required for some algorithms */
+                       if (opts->auth_key_sz &&
+                                       test_vec->auth_key.data == NULL)
                                return -1;
                        if (test_vec->auth_key.length != opts->auth_key_sz)
                                return -1;
@@ -405,6 +425,10 @@ cperf_check_test_vector(struct cperf_options *opts,
                        return -1;
                if (test_vec->ciphertext.length < opts->max_buffer_size)
                        return -1;
+               if (test_vec->aead_key.data == NULL)
+                       return -1;
+               if (test_vec->aead_key.length != opts->aead_key_sz)
+                       return -1;
                if (test_vec->aead_iv.data == NULL)
                        return -1;
                if (test_vec->aead_iv.length != opts->aead_iv_sz)