app/crypto-perf: use single mempool
[dpdk.git] / app / test-crypto-perf / cperf_ops.c
index ad32065..f76dbdd 100644 (file)
@@ -37,7 +37,7 @@
 
 static int
 cperf_set_ops_null_cipher(struct rte_crypto_op **ops,
-               struct rte_mbuf **bufs_in, struct rte_mbuf **bufs_out,
+               uint32_t src_buf_offset, uint32_t dst_buf_offset,
                uint16_t nb_ops, struct rte_cryptodev_sym_session *sess,
                const struct cperf_options *options,
                const struct cperf_test_vector *test_vector __rte_unused,
@@ -48,10 +48,18 @@ cperf_set_ops_null_cipher(struct rte_crypto_op **ops,
        for (i = 0; i < nb_ops; i++) {
                struct rte_crypto_sym_op *sym_op = ops[i]->sym;
 
+               ops[i]->status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED;
                rte_crypto_op_attach_sym_session(ops[i], sess);
 
-               sym_op->m_src = bufs_in[i];
-               sym_op->m_dst = bufs_out[i];
+               sym_op->m_src = (struct rte_mbuf *)((uint8_t *)ops[i] +
+                                                       src_buf_offset);
+
+               /* Set dest mbuf to NULL if out-of-place (dst_buf_offset = 0) */
+               if (dst_buf_offset == 0)
+                       sym_op->m_dst = NULL;
+               else
+                       sym_op->m_dst = (struct rte_mbuf *)((uint8_t *)ops[i] +
+                                                       dst_buf_offset);
 
                /* cipher parameters */
                sym_op->cipher.data.length = options->test_buffer_size;
@@ -63,7 +71,7 @@ cperf_set_ops_null_cipher(struct rte_crypto_op **ops,
 
 static int
 cperf_set_ops_null_auth(struct rte_crypto_op **ops,
-               struct rte_mbuf **bufs_in, struct rte_mbuf **bufs_out,
+               uint32_t src_buf_offset, uint32_t dst_buf_offset,
                uint16_t nb_ops, struct rte_cryptodev_sym_session *sess,
                const struct cperf_options *options,
                const struct cperf_test_vector *test_vector __rte_unused,
@@ -74,10 +82,18 @@ cperf_set_ops_null_auth(struct rte_crypto_op **ops,
        for (i = 0; i < nb_ops; i++) {
                struct rte_crypto_sym_op *sym_op = ops[i]->sym;
 
+               ops[i]->status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED;
                rte_crypto_op_attach_sym_session(ops[i], sess);
 
-               sym_op->m_src = bufs_in[i];
-               sym_op->m_dst = bufs_out[i];
+               sym_op->m_src = (struct rte_mbuf *)((uint8_t *)ops[i] +
+                                                       src_buf_offset);
+
+               /* Set dest mbuf to NULL if out-of-place (dst_buf_offset = 0) */
+               if (dst_buf_offset == 0)
+                       sym_op->m_dst = NULL;
+               else
+                       sym_op->m_dst = (struct rte_mbuf *)((uint8_t *)ops[i] +
+                                                       dst_buf_offset);
 
                /* auth parameters */
                sym_op->auth.data.length = options->test_buffer_size;
@@ -89,7 +105,7 @@ cperf_set_ops_null_auth(struct rte_crypto_op **ops,
 
 static int
 cperf_set_ops_cipher(struct rte_crypto_op **ops,
-               struct rte_mbuf **bufs_in, struct rte_mbuf **bufs_out,
+               uint32_t src_buf_offset, uint32_t dst_buf_offset,
                uint16_t nb_ops, struct rte_cryptodev_sym_session *sess,
                const struct cperf_options *options,
                const struct cperf_test_vector *test_vector,
@@ -100,10 +116,18 @@ cperf_set_ops_cipher(struct rte_crypto_op **ops,
        for (i = 0; i < nb_ops; i++) {
                struct rte_crypto_sym_op *sym_op = ops[i]->sym;
 
+               ops[i]->status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED;
                rte_crypto_op_attach_sym_session(ops[i], sess);
 
-               sym_op->m_src = bufs_in[i];
-               sym_op->m_dst = bufs_out[i];
+               sym_op->m_src = (struct rte_mbuf *)((uint8_t *)ops[i] +
+                                                       src_buf_offset);
+
+               /* Set dest mbuf to NULL if out-of-place (dst_buf_offset = 0) */
+               if (dst_buf_offset == 0)
+                       sym_op->m_dst = NULL;
+               else
+                       sym_op->m_dst = (struct rte_mbuf *)((uint8_t *)ops[i] +
+                                                       dst_buf_offset);
 
                /* cipher parameters */
                if (options->cipher_algo == RTE_CRYPTO_CIPHER_SNOW3G_UEA2 ||
@@ -132,7 +156,7 @@ cperf_set_ops_cipher(struct rte_crypto_op **ops,
 
 static int
 cperf_set_ops_auth(struct rte_crypto_op **ops,
-               struct rte_mbuf **bufs_in, struct rte_mbuf **bufs_out,
+               uint32_t src_buf_offset, uint32_t dst_buf_offset,
                uint16_t nb_ops, struct rte_cryptodev_sym_session *sess,
                const struct cperf_options *options,
                const struct cperf_test_vector *test_vector,
@@ -143,10 +167,18 @@ cperf_set_ops_auth(struct rte_crypto_op **ops,
        for (i = 0; i < nb_ops; i++) {
                struct rte_crypto_sym_op *sym_op = ops[i]->sym;
 
+               ops[i]->status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED;
                rte_crypto_op_attach_sym_session(ops[i], sess);
 
-               sym_op->m_src = bufs_in[i];
-               sym_op->m_dst = bufs_out[i];
+               sym_op->m_src = (struct rte_mbuf *)((uint8_t *)ops[i] +
+                                                       src_buf_offset);
+
+               /* Set dest mbuf to NULL if out-of-place (dst_buf_offset = 0) */
+               if (dst_buf_offset == 0)
+                       sym_op->m_dst = NULL;
+               else
+                       sym_op->m_dst = (struct rte_mbuf *)((uint8_t *)ops[i] +
+                                                       dst_buf_offset);
 
                if (test_vector->auth_iv.length) {
                        uint8_t *iv_ptr = rte_crypto_op_ctod_offset(ops[i],
@@ -167,9 +199,9 @@ cperf_set_ops_auth(struct rte_crypto_op **ops,
                        struct rte_mbuf *buf, *tbuf;
 
                        if (options->out_of_place) {
-                               buf =  bufs_out[i];
+                               buf = sym_op->m_dst;
                        } else {
-                               tbuf =  bufs_in[i];
+                               tbuf = sym_op->m_src;
                                while ((tbuf->next != NULL) &&
                                                (offset >= tbuf->data_len)) {
                                        offset -= tbuf->data_len;
@@ -219,7 +251,7 @@ cperf_set_ops_auth(struct rte_crypto_op **ops,
 
 static int
 cperf_set_ops_cipher_auth(struct rte_crypto_op **ops,
-               struct rte_mbuf **bufs_in, struct rte_mbuf **bufs_out,
+               uint32_t src_buf_offset, uint32_t dst_buf_offset,
                uint16_t nb_ops, struct rte_cryptodev_sym_session *sess,
                const struct cperf_options *options,
                const struct cperf_test_vector *test_vector,
@@ -230,10 +262,18 @@ cperf_set_ops_cipher_auth(struct rte_crypto_op **ops,
        for (i = 0; i < nb_ops; i++) {
                struct rte_crypto_sym_op *sym_op = ops[i]->sym;
 
+               ops[i]->status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED;
                rte_crypto_op_attach_sym_session(ops[i], sess);
 
-               sym_op->m_src = bufs_in[i];
-               sym_op->m_dst = bufs_out[i];
+               sym_op->m_src = (struct rte_mbuf *)((uint8_t *)ops[i] +
+                                                       src_buf_offset);
+
+               /* Set dest mbuf to NULL if out-of-place (dst_buf_offset = 0) */
+               if (dst_buf_offset == 0)
+                       sym_op->m_dst = NULL;
+               else
+                       sym_op->m_dst = (struct rte_mbuf *)((uint8_t *)ops[i] +
+                                                       dst_buf_offset);
 
                /* cipher parameters */
                if (options->cipher_algo == RTE_CRYPTO_CIPHER_SNOW3G_UEA2 ||
@@ -256,9 +296,9 @@ cperf_set_ops_cipher_auth(struct rte_crypto_op **ops,
                        struct rte_mbuf *buf, *tbuf;
 
                        if (options->out_of_place) {
-                               buf =  bufs_out[i];
+                               buf = sym_op->m_dst;
                        } else {
-                               tbuf =  bufs_in[i];
+                               tbuf = sym_op->m_src;
                                while ((tbuf->next != NULL) &&
                                                (offset >= tbuf->data_len)) {
                                        offset -= tbuf->data_len;
@@ -316,7 +356,7 @@ cperf_set_ops_cipher_auth(struct rte_crypto_op **ops,
 
 static int
 cperf_set_ops_aead(struct rte_crypto_op **ops,
-               struct rte_mbuf **bufs_in, struct rte_mbuf **bufs_out,
+               uint32_t src_buf_offset, uint32_t dst_buf_offset,
                uint16_t nb_ops, struct rte_cryptodev_sym_session *sess,
                const struct cperf_options *options,
                const struct cperf_test_vector *test_vector,
@@ -329,10 +369,18 @@ cperf_set_ops_aead(struct rte_crypto_op **ops,
        for (i = 0; i < nb_ops; i++) {
                struct rte_crypto_sym_op *sym_op = ops[i]->sym;
 
+               ops[i]->status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED;
                rte_crypto_op_attach_sym_session(ops[i], sess);
 
-               sym_op->m_src = bufs_in[i];
-               sym_op->m_dst = bufs_out[i];
+               sym_op->m_src = (struct rte_mbuf *)((uint8_t *)ops[i] +
+                                                       src_buf_offset);
+
+               /* Set dest mbuf to NULL if out-of-place (dst_buf_offset = 0) */
+               if (dst_buf_offset == 0)
+                       sym_op->m_dst = NULL;
+               else
+                       sym_op->m_dst = (struct rte_mbuf *)((uint8_t *)ops[i] +
+                                                       dst_buf_offset);
 
                /* AEAD parameters */
                sym_op->aead.data.length = options->test_buffer_size;
@@ -354,9 +402,9 @@ cperf_set_ops_aead(struct rte_crypto_op **ops,
                        struct rte_mbuf *buf, *tbuf;
 
                        if (options->out_of_place) {
-                               buf =  bufs_out[i];
+                               buf = sym_op->m_dst;
                        } else {
-                               tbuf =  bufs_in[i];
+                               tbuf = sym_op->m_src;
                                while ((tbuf->next != NULL) &&
                                                (offset >= tbuf->data_len)) {
                                        offset -= tbuf->data_len;