]> git.droids-corp.org - dpdk.git/commitdiff
cryptodev: change queue pair configure structure
authorFan Zhang <roy.fan.zhang@intel.com>
Thu, 10 Jan 2019 14:50:11 +0000 (14:50 +0000)
committerPablo de Lara <pablo.de.lara.guarch@intel.com>
Thu, 10 Jan 2019 15:57:22 +0000 (16:57 +0100)
This patch changes the cryptodev queue pair configure structure
to enable two mempool passed into cryptodev PMD simutaneously.

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
56 files changed:
app/test-crypto-perf/main.c
doc/guides/prog_guide/cryptodev_lib.rst
doc/guides/rel_notes/deprecation.rst
doc/guides/rel_notes/release_19_02.rst
drivers/crypto/aesni_gcm/aesni_gcm_pmd.c
drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c
drivers/crypto/aesni_gcm/aesni_gcm_pmd_private.h
drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
drivers/crypto/aesni_mb/rte_aesni_mb_pmd_compat.c
drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c
drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops_compat.c
drivers/crypto/aesni_mb/rte_aesni_mb_pmd_private.h
drivers/crypto/armv8/rte_armv8_pmd.c
drivers/crypto/armv8/rte_armv8_pmd_ops.c
drivers/crypto/armv8/rte_armv8_pmd_private.h
drivers/crypto/caam_jr/caam_jr.c
drivers/crypto/ccp/ccp_pmd_ops.c
drivers/crypto/ccp/ccp_pmd_private.h
drivers/crypto/ccp/rte_ccp_pmd.c
drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
drivers/crypto/dpaa_sec/dpaa_sec.c
drivers/crypto/kasumi/rte_kasumi_pmd.c
drivers/crypto/kasumi/rte_kasumi_pmd_ops.c
drivers/crypto/kasumi/rte_kasumi_pmd_private.h
drivers/crypto/mvsam/rte_mrvl_pmd_ops.c
drivers/crypto/mvsam/rte_mrvl_pmd_private.h
drivers/crypto/null/null_crypto_pmd.c
drivers/crypto/null/null_crypto_pmd_ops.c
drivers/crypto/null/null_crypto_pmd_private.h
drivers/crypto/octeontx/otx_cryptodev_ops.c
drivers/crypto/openssl/rte_openssl_pmd.c
drivers/crypto/openssl/rte_openssl_pmd_ops.c
drivers/crypto/openssl/rte_openssl_pmd_private.h
drivers/crypto/qat/qat_sym_pmd.c
drivers/crypto/scheduler/scheduler_pmd_ops.c
drivers/crypto/snow3g/rte_snow3g_pmd.c
drivers/crypto/snow3g/rte_snow3g_pmd_ops.c
drivers/crypto/snow3g/rte_snow3g_pmd_private.h
drivers/crypto/virtio/virtio_cryptodev.c
drivers/crypto/zuc/rte_zuc_pmd.c
drivers/crypto/zuc/rte_zuc_pmd_ops.c
drivers/crypto/zuc/rte_zuc_pmd_private.h
drivers/net/softnic/rte_eth_softnic_cryptodev.c
examples/fips_validation/main.c
examples/ip_pipeline/cryptodev.c
examples/ipsec-secgw/ipsec-secgw.c
examples/l2fwd-crypto/main.c
examples/vhost_crypto/main.c
lib/librte_cryptodev/Makefile
lib/librte_cryptodev/meson.build
lib/librte_cryptodev/rte_cryptodev.c
lib/librte_cryptodev/rte_cryptodev.h
lib/librte_cryptodev/rte_cryptodev_pmd.h
test/test/test_cryptodev.c
test/test/test_cryptodev_asym.c
test/test/test_event_crypto_adapter.c

index 953e058c992068d6f46b56d69026cf4c18a64a44..38a2e429fa9a2eeef48b82868cc0b646b1779339 100644 (file)
@@ -218,6 +218,9 @@ cperf_initialize_cryptodev(struct cperf_options *opts, uint8_t *enabled_cdevs,
                        session_pool_socket[socket_id] = sess_mp;
                }
 
+               qp_conf.mp_session = session_pool_socket[socket_id];
+               qp_conf.mp_session_private = session_pool_socket[socket_id];
+
                ret = rte_cryptodev_configure(cdev_id, &conf);
                if (ret < 0) {
                        printf("Failed to configure cryptodev %u", cdev_id);
@@ -226,8 +229,7 @@ cperf_initialize_cryptodev(struct cperf_options *opts, uint8_t *enabled_cdevs,
 
                for (j = 0; j < opts->nb_qps; j++) {
                        ret = rte_cryptodev_queue_pair_setup(cdev_id, j,
-                               &qp_conf, socket_id,
-                               session_pool_socket[socket_id]);
+                               &qp_conf, socket_id);
                        if (ret < 0) {
                                printf("Failed to setup queue pair %u on "
                                        "cryptodev %u", j, cdev_id);
index 8ee33c875c613a0e067ed62fda9081866ab51817..0bb6a88410d6848351da3bdcf18b46ff16d07e5c 100644 (file)
@@ -121,11 +121,21 @@ Each queue pairs resources may be allocated on a specified socket.
                 const struct rte_cryptodev_qp_conf *qp_conf,
                 int socket_id)
 
-    struct rte_cryptodev_qp_conf {
+   struct rte_cryptodev_qp_conf {
         uint32_t nb_descriptors; /**< Number of descriptors per queue pair */
+        struct rte_mempool *mp_session;
+        /**< The mempool for creating session in sessionless mode */
+        struct rte_mempool *mp_session_private;
+        /**< The mempool for creating sess private data in sessionless mode */
     };
 
 
+The fields ``mp_session`` and ``mp_session_private`` are used for creating
+temporary session to process the crypto operations in the session-less mode.
+They can be the same other different mempools. Please note not all Cryptodev
+PMDs supports session-less mode.
+
+
 Logical Cores, Memory and Queues Pair Relationships
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -682,14 +692,15 @@ using one of the crypto PMDs available in DPDK.
         .socket_id = socket_id
     };
     struct rte_cryptodev_qp_conf qp_conf = {
-        .nb_descriptors = 2048
+        .nb_descriptors = 2048,
+        .mp_session = session_pool,
+        .mp_session_private = session_pool
     };
 
     if (rte_cryptodev_configure(cdev_id, &conf) < 0)
         rte_exit(EXIT_FAILURE, "Failed to configure cryptodev %u", cdev_id);
 
-    if (rte_cryptodev_queue_pair_setup(cdev_id, 0, &qp_conf,
-                            socket_id, session_pool) < 0)
+    if (rte_cryptodev_queue_pair_setup(cdev_id, 0, &qp_conf, socket_id) < 0)
         rte_exit(EXIT_FAILURE, "Failed to setup queue pair\n");
 
     if (rte_cryptodev_start(cdev_id) < 0)
index 69cb7eba25d53f7891fe550ee6462ae28ea93e1f..287ffb2fe5a0f29cd4c0a2e80280beb20851fec8 100644 (file)
@@ -80,9 +80,6 @@ Deprecation Notices
 
   - The size and layout of ``rte_cryptodev_sym_session`` will change
     to fix existing issues.
-  - The size and layout of ``rte_cryptodev_qp_conf`` and syntax of
-    ``rte_cryptodev_queue_pair_setup`` will change to to allow to use
-    two different mempools for crypto and device private sessions.
 
 * crypto/aesni_mb: the minimum supported intel-ipsec-mb library version will be
   changed from 0.49.0 to 0.52.0.
index 662fdd0e13b749ec2495b8698499b5d68a2aba63..7439391e8cbd4dcd829b910e9c7f802dca701752 100644 (file)
@@ -170,6 +170,9 @@ API Changes
   ``rte_pdump_init()`` and enum ``rte_pdump_socktype`` were deprecated
   since 18.05 and are removed in this release.
 
+* cryptodev: The parameter ``session_pool`` in the function
+  ``rte_cryptodev_queue_pair_setup()`` is removed.
+
 
 ABI Changes
 -----------
@@ -189,6 +192,10 @@ ABI Changes
 * mbuf: The format of the sched field of ``rte_mbuf`` has been changed
   to include the following fields: ``queue ID``, ``traffic class``, ``color``.
 
+* cryptodev: as shown in the the 18.11 deprecation notice, the structure
+  ``rte_cryptodev_qp_conf`` has been added two parameters of symmetric session
+  mempool and symmetric session private data mempool.
+
 
 Shared Library Versions
 -----------------------
@@ -220,7 +227,7 @@ The libraries prepended with a plus sign were incremented in this version.
      librte_cfgfile.so.2
      librte_cmdline.so.2
      librte_compressdev.so.1
-     librte_cryptodev.so.5
+   + librte_cryptodev.so.6
      librte_distributor.so.1
      librte_eal.so.9
      librte_efd.so.1
index ebdf7c35a8e487fcd43cdad7da313981f332f646..abc7a6d5ff1060f8363d2ae94c12dc4df6d22461 100644 (file)
@@ -151,7 +151,8 @@ aesni_gcm_get_session(struct aesni_gcm_qp *qp, struct rte_crypto_op *op)
                if (rte_mempool_get(qp->sess_mp, (void **)&_sess))
                        return NULL;
 
-               if (rte_mempool_get(qp->sess_mp, (void **)&_sess_private_data))
+               if (rte_mempool_get(qp->sess_mp_priv,
+                               (void **)&_sess_private_data))
                        return NULL;
 
                sess = (struct aesni_gcm_session *)_sess_private_data;
@@ -159,7 +160,7 @@ aesni_gcm_get_session(struct aesni_gcm_qp *qp, struct rte_crypto_op *op)
                if (unlikely(aesni_gcm_set_session_parameters(qp->ops,
                                sess, sym_op->xform) != 0)) {
                        rte_mempool_put(qp->sess_mp, _sess);
-                       rte_mempool_put(qp->sess_mp, _sess_private_data);
+                       rte_mempool_put(qp->sess_mp_priv, _sess_private_data);
                        sess = NULL;
                }
                sym_op->session = (struct rte_cryptodev_sym_session *)_sess;
@@ -419,7 +420,7 @@ handle_completed_gcm_crypto_op(struct aesni_gcm_qp *qp,
                memset(sess, 0, sizeof(struct aesni_gcm_session));
                memset(op->sym->session, 0,
                                rte_cryptodev_sym_get_header_session_size());
-               rte_mempool_put(qp->sess_mp, sess);
+               rte_mempool_put(qp->sess_mp_priv, sess);
                rte_mempool_put(qp->sess_mp, op->sym->session);
                op->sym->session = NULL;
        }
index cd15245bdde2ea1e97a6d37f64bbd27a74d72110..bf69dde54a844174bd6a2f984dbe32e54a8d97ba 100644 (file)
@@ -206,7 +206,7 @@ aesni_gcm_pmd_qp_create_processed_pkts_ring(struct aesni_gcm_qp *qp,
 static int
 aesni_gcm_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                const struct rte_cryptodev_qp_conf *qp_conf,
-               int socket_id, struct rte_mempool *session_pool)
+               int socket_id)
 {
        struct aesni_gcm_qp *qp = NULL;
        struct aesni_gcm_private *internals = dev->data->dev_private;
@@ -234,7 +234,8 @@ aesni_gcm_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
        if (qp->processed_pkts == NULL)
                goto qp_setup_cleanup;
 
-       qp->sess_mp = session_pool;
+       qp->sess_mp = qp_conf->mp_session;
+       qp->sess_mp_priv = qp_conf->mp_session_private;
 
        memset(&qp->qp_stats, 0, sizeof(qp->qp_stats));
 
index 92b04135473ecc182009aeb8924133fa1ac1441b..903e7503d3a62f41fed476cfae35ba0da6429654 100644 (file)
@@ -48,6 +48,8 @@ struct aesni_gcm_qp {
        /**< Queue pair statistics */
        struct rte_mempool *sess_mp;
        /**< Session Mempool */
+       struct rte_mempool *sess_mp_priv;
+       /**< Session Private Data Mempool */
        uint16_t id;
        /**< Queue Pair Identifier */
        char name[RTE_CRYPTODEV_NAME_MAX_LEN];
index 4e31735caa0cfad13a126b9965683237d6bfa27d..2699e41626f7b6bc34c3b081efdfc11f05aa8f5f 100644 (file)
@@ -716,7 +716,8 @@ get_session(struct aesni_mb_qp *qp, struct rte_crypto_op *op)
                if (rte_mempool_get(qp->sess_mp, (void **)&_sess))
                        return NULL;
 
-               if (rte_mempool_get(qp->sess_mp, (void **)&_sess_private_data))
+               if (rte_mempool_get(qp->sess_mp_priv,
+                               (void **)&_sess_private_data))
                        return NULL;
 
                sess = (struct aesni_mb_session *)_sess_private_data;
@@ -724,7 +725,7 @@ get_session(struct aesni_mb_qp *qp, struct rte_crypto_op *op)
                if (unlikely(aesni_mb_set_session_parameters(qp->mb_mgr,
                                sess, op->sym->xform) != 0)) {
                        rte_mempool_put(qp->sess_mp, _sess);
-                       rte_mempool_put(qp->sess_mp, _sess_private_data);
+                       rte_mempool_put(qp->sess_mp_priv, _sess_private_data);
                        sess = NULL;
                }
                op->sym->session = (struct rte_cryptodev_sym_session *)_sess;
@@ -1025,7 +1026,7 @@ post_process_mb_job(struct aesni_mb_qp *qp, JOB_AES_HMAC *job)
                memset(sess, 0, sizeof(struct aesni_mb_session));
                memset(op->sym->session, 0,
                                rte_cryptodev_sym_get_header_session_size());
-               rte_mempool_put(qp->sess_mp, sess);
+               rte_mempool_put(qp->sess_mp_priv, sess);
                rte_mempool_put(qp->sess_mp, op->sym->session);
                op->sym->session = NULL;
        }
index 56ce549462d17757eca575062c7fe27b9c62dae4..b46942e9b9a916d4f736f65020c05615b38c0a0e 100644 (file)
@@ -716,7 +716,7 @@ get_session(struct aesni_mb_qp *qp, struct rte_crypto_op *op)
                if (rte_mempool_get(qp->sess_mp, (void **)&_sess))
                        return NULL;
 
-               if (rte_mempool_get(qp->sess_mp, (void **)&_sess_private_data))
+               if (rte_mempool_get(qp->sess_mp_priv, (void **)&_sess_private_data))
                        return NULL;
 
                sess = (struct aesni_mb_session *)_sess_private_data;
@@ -724,7 +724,7 @@ get_session(struct aesni_mb_qp *qp, struct rte_crypto_op *op)
                if (unlikely(aesni_mb_set_session_parameters(qp->op_fns,
                                sess, op->sym->xform) != 0)) {
                        rte_mempool_put(qp->sess_mp, _sess);
-                       rte_mempool_put(qp->sess_mp, _sess_private_data);
+                       rte_mempool_put(qp->sess_mp_priv, _sess_private_data);
                        sess = NULL;
                }
                op->sym->session = (struct rte_cryptodev_sym_session *)_sess;
@@ -1024,7 +1024,7 @@ post_process_mb_job(struct aesni_mb_qp *qp, JOB_AES_HMAC *job)
                memset(sess, 0, sizeof(struct aesni_mb_session));
                memset(op->sym->session, 0,
                                rte_cryptodev_sym_get_header_session_size());
-               rte_mempool_put(qp->sess_mp, sess);
+               rte_mempool_put(qp->sess_mp_priv, sess);
                rte_mempool_put(qp->sess_mp, op->sym->session);
                op->sym->session = NULL;
        }
index c90f6baa3bd12c0a66479918d12ff45c1d20a316..3a8374ef33264f3b821b2b840420e16472ea963c 100644 (file)
@@ -640,7 +640,7 @@ aesni_mb_pmd_qp_create_processed_ops_ring(struct aesni_mb_qp *qp,
 static int
 aesni_mb_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                const struct rte_cryptodev_qp_conf *qp_conf,
-               int socket_id, struct rte_mempool *session_pool)
+               int socket_id)
 {
        struct aesni_mb_qp *qp = NULL;
        struct aesni_mb_private *internals = dev->data->dev_private;
@@ -699,7 +699,8 @@ aesni_mb_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                goto qp_setup_cleanup;
        }
 
-       qp->sess_mp = session_pool;
+       qp->sess_mp = qp_conf->mp_session;
+       qp->sess_mp_priv = qp_conf->mp_session_private;
 
        memset(&qp->stats, 0, sizeof(qp->stats));
 
index 1ca6baafaefcb5c44457f2336184c299ba5ff6d4..79a38b25e250840645c74e5ac3e18f934c7661f9 100644 (file)
@@ -591,7 +591,7 @@ aesni_mb_pmd_qp_create_processed_ops_ring(struct aesni_mb_qp *qp,
 static int
 aesni_mb_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                const struct rte_cryptodev_qp_conf *qp_conf,
-               int socket_id, struct rte_mempool *session_pool)
+               int socket_id)
 {
        struct aesni_mb_qp *qp = NULL;
        struct aesni_mb_private *internals = dev->data->dev_private;
@@ -629,7 +629,8 @@ aesni_mb_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                goto qp_setup_cleanup;
        }
 
-       qp->sess_mp = session_pool;
+       qp->sess_mp = qp_conf->mp_session;
+       qp->sess_mp_priv = qp_conf->mp_session_private;
 
        memset(&qp->stats, 0, sizeof(qp->stats));
 
index cdbe7f520b97476dc40edeb5b8085a4cb3e44768..61f419dda27d02d150c1af12accc4b3d0a9aae22 100644 (file)
@@ -171,6 +171,8 @@ struct aesni_mb_qp {
        /**< Ring for placing operations ready for processing */
        struct rte_mempool *sess_mp;
        /**< Session Mempool */
+       struct rte_mempool *sess_mp_priv;
+       /**< Session Private Data Mempool */
        struct rte_cryptodev_stats stats;
        /**< Queue pair statistics */
        uint8_t digest_idx;
index 9d15fee5331edf85a3d2735f9d67278432aa2aa0..3b2d7fb2fa5a08092ad07699fbac6109a1b9c526 100644 (file)
@@ -514,7 +514,8 @@ get_session(struct armv8_crypto_qp *qp, struct rte_crypto_op *op)
                if (rte_mempool_get(qp->sess_mp, (void **)&_sess))
                        return NULL;
 
-               if (rte_mempool_get(qp->sess_mp, (void **)&_sess_private_data))
+               if (rte_mempool_get(qp->sess_mp_priv,
+                               (void **)&_sess_private_data))
                        return NULL;
 
                sess = (struct armv8_crypto_session *)_sess_private_data;
@@ -522,7 +523,7 @@ get_session(struct armv8_crypto_qp *qp, struct rte_crypto_op *op)
                if (unlikely(armv8_crypto_set_session_parameters(sess,
                                op->sym->xform) != 0)) {
                        rte_mempool_put(qp->sess_mp, _sess);
-                       rte_mempool_put(qp->sess_mp, _sess_private_data);
+                       rte_mempool_put(qp->sess_mp_priv, _sess_private_data);
                        sess = NULL;
                }
                op->sym->session = (struct rte_cryptodev_sym_session *)_sess;
@@ -656,7 +657,7 @@ process_op(struct armv8_crypto_qp *qp, struct rte_crypto_op *op,
                memset(op->sym->session, 0,
                                rte_cryptodev_sym_get_header_session_size());
                rte_mempool_put(qp->sess_mp, sess);
-               rte_mempool_put(qp->sess_mp, op->sym->session);
+               rte_mempool_put(qp->sess_mp_priv, op->sym->session);
                op->sym->session = NULL;
        }
 
index ae03117eaf24ca3e8d3b3232646827dbda3e6bb0..a4fee83a8c3217057b59211b449a0ab37608806b 100644 (file)
@@ -220,7 +220,7 @@ armv8_crypto_pmd_qp_create_processed_ops_ring(struct armv8_crypto_qp *qp,
 static int
 armv8_crypto_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                const struct rte_cryptodev_qp_conf *qp_conf,
-               int socket_id, struct rte_mempool *session_pool)
+               int socket_id)
 {
        struct armv8_crypto_qp *qp = NULL;
 
@@ -245,7 +245,8 @@ armv8_crypto_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
        if (qp->processed_ops == NULL)
                goto qp_setup_cleanup;
 
-       qp->sess_mp = session_pool;
+       qp->sess_mp = qp_conf->mp_session;
+       qp->sess_mp_priv = qp_conf->mp_session_private;
 
        memset(&qp->stats, 0, sizeof(qp->stats));
 
index 7feb021db508a33adfad88dfe7ae1ed9887b074b..0afd9c7c53e638e9abc6c896fbaba4f06a59238c 100644 (file)
@@ -116,6 +116,8 @@ struct armv8_crypto_qp {
        /**< Ring for placing process packets */
        struct rte_mempool *sess_mp;
        /**< Session Mempool */
+       struct rte_mempool *sess_mp_priv;
+       /**< Session Private Data Mempool */
        struct rte_cryptodev_stats stats;
        /**< Queue pair statistics */
        char name[RTE_CRYPTODEV_NAME_MAX_LEN];
index f505adf6b3e08af8045bc70c22e0f9f6d956e15b..45b281331796b8e38c0482ac46b99ba3f8df0068 100644 (file)
@@ -1540,8 +1540,7 @@ static int
 caam_jr_queue_pair_setup(
                struct rte_cryptodev *dev, uint16_t qp_id,
                __rte_unused const struct rte_cryptodev_qp_conf *qp_conf,
-               __rte_unused int socket_id,
-               __rte_unused struct rte_mempool *session_pool)
+               __rte_unused int socket_id)
 {
        struct sec_job_ring_t *internals;
        struct caam_jr_qp *qp = NULL;
index 6984913f175bcbb4b7d87a6476b1f255708ad6b2..d5041f0ec144b580ffb2513d6350f78fed2336f8 100644 (file)
@@ -685,7 +685,7 @@ ccp_pmd_qp_create_batch_info_ring(struct ccp_qp *qp,
 static int
 ccp_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                 const struct rte_cryptodev_qp_conf *qp_conf,
-                int socket_id, struct rte_mempool *session_pool)
+                int socket_id)
 {
        struct ccp_private *internals = dev->data->dev_private;
        struct ccp_qp *qp;
@@ -726,7 +726,8 @@ ccp_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                goto qp_setup_cleanup;
        }
 
-       qp->sess_mp = session_pool;
+       qp->sess_mp = qp_conf->mp_session;
+       qp->sess_mp_priv = qp_conf->mp_session_private;
 
        /* mempool for batch info */
        qp->batch_mp = rte_mempool_create(
index 79752f68714a895933bc7cfcb96bbea62a85e5a9..7f2979e892fbb5c710589642b920cb38718c9d28 100644 (file)
@@ -76,6 +76,8 @@ struct ccp_qp {
        /**< Ring for placing process packets */
        struct rte_mempool *sess_mp;
        /**< Session Mempool */
+       struct rte_mempool *sess_mp_priv;
+       /**< Session Private Data Mempool */
        struct rte_mempool *batch_mp;
        /**< Session Mempool for batch info */
        struct rte_cryptodev_stats qp_stats;
index 92d8a95599bb6a3232fa06339800afabbcaf9145..b4bb5528f5c62a4dfbc3f39922ba49ad90fc1817 100644 (file)
@@ -179,7 +179,7 @@ get_ccp_session(struct ccp_qp *qp, struct rte_crypto_op *op)
                if (unlikely(ccp_set_session_parameters(sess, op->sym->xform,
                                                        internals) != 0)) {
                        rte_mempool_put(qp->sess_mp, _sess);
-                       rte_mempool_put(qp->sess_mp, _sess_private_data);
+                       rte_mempool_put(qp->sess_mp_priv, _sess_private_data);
                        sess = NULL;
                }
                op->sym->session = (struct rte_cryptodev_sym_session *)_sess;
@@ -241,6 +241,13 @@ ccp_pmd_dequeue_burst(void *queue_pair, struct rte_crypto_op **ops,
        for (i = 0; i < nb_dequeued; i++)
                if (unlikely(ops[i]->sess_type ==
                             RTE_CRYPTO_OP_SESSIONLESS)) {
+                       struct ccp_session *sess = (struct ccp_session *)
+                                       get_sym_session_private_data(
+                                               ops[i]->sym->session,
+                                               ccp_cryptodev_driver_id);
+
+                       rte_mempool_put(qp->sess_mp_priv,
+                                       sess);
                        rte_mempool_put(qp->sess_mp,
                                        ops[i]->sym->session);
                        ops[i]->sym->session = NULL;
index 6095c6021812b6f3f6aadb4fd83e79456b93e1c1..82220ac4f202e2995f388de6d81e10a24d907332 100644 (file)
@@ -1518,8 +1518,7 @@ dpaa2_sec_queue_pair_release(struct rte_cryptodev *dev, uint16_t queue_pair_id)
 static int
 dpaa2_sec_queue_pair_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                __rte_unused const struct rte_cryptodev_qp_conf *qp_conf,
-               __rte_unused int socket_id,
-               __rte_unused struct rte_mempool *session_pool)
+               __rte_unused int socket_id)
 {
        struct dpaa2_sec_dev_private *priv = dev->data->dev_private;
        struct dpaa2_sec_qp *qp;
index d83e745419c034fe51eaeb4145059302a6a696ba..c95e43b7f8bbc2d68858b1fd8f31187a2ce97bca 100644 (file)
@@ -1661,8 +1661,7 @@ dpaa_sec_queue_pair_release(struct rte_cryptodev *dev,
 static int
 dpaa_sec_queue_pair_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                __rte_unused const struct rte_cryptodev_qp_conf *qp_conf,
-               __rte_unused int socket_id,
-               __rte_unused struct rte_mempool *session_pool)
+               __rte_unused int socket_id)
 {
        struct dpaa_sec_dev_private *internals;
        struct dpaa_sec_qp *qp = NULL;
index 239a1cf4411f1ef79542783fa90d9c29bd859867..6df645a2320f15d443caf9d13fe8bd2796b327e3 100644 (file)
@@ -145,7 +145,8 @@ kasumi_get_session(struct kasumi_qp *qp, struct rte_crypto_op *op)
                if (rte_mempool_get(qp->sess_mp, (void **)&_sess))
                        return NULL;
 
-               if (rte_mempool_get(qp->sess_mp, (void **)&_sess_private_data))
+               if (rte_mempool_get(qp->sess_mp_priv,
+                               (void **)&_sess_private_data))
                        return NULL;
 
                sess = (struct kasumi_session *)_sess_private_data;
@@ -153,7 +154,7 @@ kasumi_get_session(struct kasumi_qp *qp, struct rte_crypto_op *op)
                if (unlikely(kasumi_set_session_parameters(sess,
                                op->sym->xform) != 0)) {
                        rte_mempool_put(qp->sess_mp, _sess);
-                       rte_mempool_put(qp->sess_mp, _sess_private_data);
+                       rte_mempool_put(qp->sess_mp_priv, _sess_private_data);
                        sess = NULL;
                }
                op->sym->session = (struct rte_cryptodev_sym_session *)_sess;
@@ -325,7 +326,7 @@ process_ops(struct rte_crypto_op **ops, struct kasumi_session *session,
                        memset(session, 0, sizeof(struct kasumi_session));
                        memset(ops[i]->sym->session, 0,
                                        rte_cryptodev_sym_get_header_session_size());
-                       rte_mempool_put(qp->sess_mp, session);
+                       rte_mempool_put(qp->sess_mp_priv, session);
                        rte_mempool_put(qp->sess_mp, ops[i]->sym->session);
                        ops[i]->sym->session = NULL;
                }
index 9e4bf1b52f2bf2c24f07cdf18cbddbd5296a9a62..a4982f0916a256dcd7849afd72b948f7176f236c 100644 (file)
@@ -192,7 +192,7 @@ kasumi_pmd_qp_create_processed_ops_ring(struct kasumi_qp *qp,
 static int
 kasumi_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                const struct rte_cryptodev_qp_conf *qp_conf,
-               int socket_id, struct rte_mempool *session_pool)
+               int socket_id)
 {
        struct kasumi_qp *qp = NULL;
 
@@ -217,7 +217,8 @@ kasumi_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
        if (qp->processed_ops == NULL)
                goto qp_setup_cleanup;
 
-       qp->sess_mp = session_pool;
+       qp->sess_mp = qp_conf->mp_session;
+       qp->sess_mp_priv = qp_conf->mp_session_private;
 
        memset(&qp->qp_stats, 0, sizeof(qp->qp_stats));
 
index 488777ca877bd307503e9701c47c2b6803734cd9..76f746c031a0111d1531d83bcea5f4827936421c 100644 (file)
@@ -36,6 +36,8 @@ struct kasumi_qp {
        /**< Ring for placing processed ops */
        struct rte_mempool *sess_mp;
        /**< Session Mempool */
+       struct rte_mempool *sess_mp_priv;
+       /**< Session Private Data Mempool */
        struct rte_cryptodev_stats qp_stats;
        /**< Queue pair statistics */
        uint8_t temp_digest[KASUMI_DIGEST_LENGTH];
index 9956f051f55f867773f8e08b77595234e91d725a..ef520356ff142394e7f1bb47a21310cbd21610f9 100644 (file)
@@ -633,7 +633,7 @@ mrvl_crypto_pmd_close(struct rte_cryptodev *dev)
 static int
 mrvl_crypto_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                const struct rte_cryptodev_qp_conf *qp_conf,
-               int socket_id, struct rte_mempool *session_pool)
+               int socket_id)
 {
        struct mrvl_crypto_qp *qp = NULL;
        char match[RTE_CRYPTODEV_NAME_MAX_LEN];
@@ -690,7 +690,8 @@ mrvl_crypto_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                if (sam_cio_init(&qp->cio_params, &qp->cio) < 0)
                        break;
 
-               qp->sess_mp = session_pool;
+               qp->sess_mp = qp_conf->mp_session;
+               qp->sess_mp_priv = qp_conf->mp_session_private;
 
                memset(&qp->stats, 0, sizeof(qp->stats));
                dev->data->queue_pairs[qp_id] = qp;
index 6f8cf5624818d966fcc6096e0a23ce322e825b9e..deb80c55d6fddd67bcdce1d3eaf52ef31d781366 100644 (file)
@@ -51,6 +51,9 @@ struct mrvl_crypto_qp {
        /** Session Mempool. */
        struct rte_mempool *sess_mp;
 
+       /** Session Private Data Mempool. */
+       struct rte_mempool *sess_mp_priv;
+
        /** Queue pair statistics. */
        struct rte_cryptodev_stats stats;
 
index 6e29a21a68050146d969c14322b11bbf70da00a9..d5e3064f235ae8e2605534a97e6c20015a7a651e 100644 (file)
@@ -87,7 +87,8 @@ get_session(struct null_crypto_qp *qp, struct rte_crypto_op *op)
                if (rte_mempool_get(qp->sess_mp, (void **)&_sess))
                        return NULL;
 
-               if (rte_mempool_get(qp->sess_mp, (void **)&_sess_private_data))
+               if (rte_mempool_get(qp->sess_mp_priv,
+                               (void **)&_sess_private_data))
                        return NULL;
 
                sess = (struct null_crypto_session *)_sess_private_data;
@@ -95,7 +96,7 @@ get_session(struct null_crypto_qp *qp, struct rte_crypto_op *op)
                if (unlikely(null_crypto_set_session_parameters(sess,
                                sym_op->xform) != 0)) {
                        rte_mempool_put(qp->sess_mp, _sess);
-                       rte_mempool_put(qp->sess_mp, _sess_private_data);
+                       rte_mempool_put(qp->sess_mp_priv, _sess_private_data);
                        sess = NULL;
                }
                sym_op->session = (struct rte_cryptodev_sym_session *)_sess;
index 319ca34e75bae50e6e678731cee74aaecd52fb07..d988bfe96ac3c8eb8dc99a36739970c88e30701c 100644 (file)
@@ -189,7 +189,7 @@ null_crypto_pmd_qp_create_processed_pkts_ring(struct null_crypto_qp *qp,
 static int
 null_crypto_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                const struct rte_cryptodev_qp_conf *qp_conf,
-               int socket_id, struct rte_mempool *session_pool)
+               int socket_id)
 {
        struct null_crypto_private *internals = dev->data->dev_private;
        struct null_crypto_qp *qp;
@@ -233,7 +233,8 @@ null_crypto_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                goto qp_setup_cleanup;
        }
 
-       qp->sess_mp = session_pool;
+       qp->sess_mp = qp_conf->mp_session;
+       qp->sess_mp_priv = qp_conf->mp_session_private;
 
        memset(&qp->qp_stats, 0, sizeof(qp->qp_stats));
 
index d5905afd8944a6606c68596f23b8c23da2df5eeb..d7bfd9cc8f555b3553862773fd43a515f2fd0c62 100644 (file)
@@ -31,6 +31,8 @@ struct null_crypto_qp {
        /**< Ring for placing process packets */
        struct rte_mempool *sess_mp;
        /**< Session Mempool */
+       struct rte_mempool *sess_mp_priv;
+       /**< Session Mempool */
        struct rte_cryptodev_stats qp_stats;
        /**< Queue pair statistics */
 } __rte_cache_aligned;
index 90d0c14b8860e460b2291bd0a42bdf06bcd938bb..6a0cf83f41e7a42188074de4f4be156e8100804b 100644 (file)
@@ -186,8 +186,7 @@ static int
 otx_cpt_que_pair_setup(struct rte_cryptodev *dev,
                       uint16_t que_pair_id,
                       const struct rte_cryptodev_qp_conf *qp_conf,
-                      int socket_id __rte_unused,
-                      struct rte_mempool *session_pool __rte_unused)
+                      int socket_id __rte_unused)
 {
        void *cptvf = dev->data->dev_private;
        struct cpt_instance *instance = NULL;
index a0ccacb1e482e547530e22dd0bad4230e7bf5bd6..a193af64229b766c1947b8a5e729d3728dcb5a98 100644 (file)
@@ -768,7 +768,8 @@ get_session(struct openssl_qp *qp, struct rte_crypto_op *op)
                if (rte_mempool_get(qp->sess_mp, (void **)&_sess))
                        return NULL;
 
-               if (rte_mempool_get(qp->sess_mp, (void **)&_sess_private_data))
+               if (rte_mempool_get(qp->sess_mp_priv,
+                               (void **)&_sess_private_data))
                        return NULL;
 
                sess = (struct openssl_session *)_sess_private_data;
@@ -776,7 +777,7 @@ get_session(struct openssl_qp *qp, struct rte_crypto_op *op)
                if (unlikely(openssl_set_session_parameters(sess,
                                op->sym->xform) != 0)) {
                        rte_mempool_put(qp->sess_mp, _sess);
-                       rte_mempool_put(qp->sess_mp, _sess_private_data);
+                       rte_mempool_put(qp->sess_mp_priv, _sess_private_data);
                        sess = NULL;
                }
                op->sym->session = (struct rte_cryptodev_sym_session *)_sess;
@@ -2020,7 +2021,7 @@ process_op(struct openssl_qp *qp, struct rte_crypto_op *op,
                memset(sess, 0, sizeof(struct openssl_session));
                memset(op->sym->session, 0,
                                rte_cryptodev_sym_get_header_session_size());
-               rte_mempool_put(qp->sess_mp, sess);
+               rte_mempool_put(qp->sess_mp_priv, sess);
                rte_mempool_put(qp->sess_mp, op->sym->session);
                op->sym->session = NULL;
        }
index d382476a6abff7c1bfd4ad3288a1c0b7cf1ab2d9..40217cf0dbe6974d6d5b46ce5c8363296b301bb8 100644 (file)
@@ -715,7 +715,7 @@ openssl_pmd_qp_create_processed_ops_ring(struct openssl_qp *qp,
 static int
 openssl_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                const struct rte_cryptodev_qp_conf *qp_conf,
-               int socket_id, struct rte_mempool *session_pool)
+               int socket_id)
 {
        struct openssl_qp *qp = NULL;
 
@@ -740,7 +740,8 @@ openssl_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
        if (qp->processed_ops == NULL)
                goto qp_setup_cleanup;
 
-       qp->sess_mp = session_pool;
+       qp->sess_mp = qp_conf->mp_session;
+       qp->sess_mp_priv = qp_conf->mp_session_private;
 
        memset(&qp->stats, 0, sizeof(qp->stats));
 
index a8f2c8482bfb0aa71e4f7bfca8435a282be574e0..43ac3813dfed6dfa531dcd65516a91ecc53b5775 100644 (file)
@@ -64,6 +64,8 @@ struct openssl_qp {
        /**< Ring for placing process packets */
        struct rte_mempool *sess_mp;
        /**< Session Mempool */
+       struct rte_mempool *sess_mp_priv;
+       /**< Session Private Data Mempool */
        struct rte_cryptodev_stats stats;
        /**< Queue pair statistics */
        uint8_t temp_digest[DIGEST_LENGTH_MAX];
index c3f7004069afe7efb269a674aed18f05f26c53f8..31ccab32e86de13ff438c9828616401b87aa5351 100644 (file)
@@ -127,7 +127,7 @@ static int qat_sym_qp_release(struct rte_cryptodev *dev, uint16_t queue_pair_id)
 
 static int qat_sym_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
        const struct rte_cryptodev_qp_conf *qp_conf,
-       int socket_id, struct rte_mempool *session_pool __rte_unused)
+       int socket_id)
 {
        struct qat_qp *qp;
        int ret = 0;
index 939105aa89ef52ce91aebe61b1880bb48dc40d9a..cf70218b7f75b9eb1d8aac19ae4f61dd61c432b5 100644 (file)
@@ -390,8 +390,7 @@ scheduler_pmd_qp_release(struct rte_cryptodev *dev, uint16_t qp_id)
 /** Setup a queue pair */
 static int
 scheduler_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
-       const struct rte_cryptodev_qp_conf *qp_conf, int socket_id,
-       struct rte_mempool *session_pool)
+       const struct rte_cryptodev_qp_conf *qp_conf, int socket_id)
 {
        struct scheduler_ctx *sched_ctx = dev->data->dev_private;
        struct scheduler_qp_ctx *qp_ctx;
@@ -419,7 +418,7 @@ scheduler_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                 * must be big enough for all the drivers used.
                 */
                ret = rte_cryptodev_queue_pair_setup(slave_id, qp_id,
-                               qp_conf, socket_id, session_pool);
+                               qp_conf, socket_id);
                if (ret < 0)
                        return ret;
        }
index a17536b77736bdb214fb8e2b43abc07ad92e118c..7d131f7801109d0c54921714e24f1277c905925c 100644 (file)
@@ -147,7 +147,8 @@ snow3g_get_session(struct snow3g_qp *qp, struct rte_crypto_op *op)
                if (rte_mempool_get(qp->sess_mp, (void **)&_sess))
                        return NULL;
 
-               if (rte_mempool_get(qp->sess_mp, (void **)&_sess_private_data))
+               if (rte_mempool_get(qp->sess_mp_priv,
+                               (void **)&_sess_private_data))
                        return NULL;
 
                sess = (struct snow3g_session *)_sess_private_data;
@@ -155,7 +156,7 @@ snow3g_get_session(struct snow3g_qp *qp, struct rte_crypto_op *op)
                if (unlikely(snow3g_set_session_parameters(sess,
                                op->sym->xform) != 0)) {
                        rte_mempool_put(qp->sess_mp, _sess);
-                       rte_mempool_put(qp->sess_mp, _sess_private_data);
+                       rte_mempool_put(qp->sess_mp_priv, _sess_private_data);
                        sess = NULL;
                }
                op->sym->session = (struct rte_cryptodev_sym_session *)_sess;
@@ -340,7 +341,7 @@ process_ops(struct rte_crypto_op **ops, struct snow3g_session *session,
                        memset(session, 0, sizeof(struct snow3g_session));
                        memset(ops[i]->sym->session, 0,
                                        rte_cryptodev_sym_get_header_session_size());
-                       rte_mempool_put(qp->sess_mp, session);
+                       rte_mempool_put(qp->sess_mp_priv, session);
                        rte_mempool_put(qp->sess_mp, ops[i]->sym->session);
                        ops[i]->sym->session = NULL;
                }
index a367ee9a065824960de854976762edba5414e844..d2125233f8978803d1a5f4d3743b785dd0bbe0dc 100644 (file)
@@ -198,7 +198,7 @@ snow3g_pmd_qp_create_processed_ops_ring(struct snow3g_qp *qp,
 static int
 snow3g_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                const struct rte_cryptodev_qp_conf *qp_conf,
-               int socket_id, struct rte_mempool *session_pool)
+               int socket_id)
 {
        struct snow3g_qp *qp = NULL;
 
@@ -223,7 +223,8 @@ snow3g_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
        if (qp->processed_ops == NULL)
                goto qp_setup_cleanup;
 
-       qp->sess_mp = session_pool;
+       qp->sess_mp = qp_conf->mp_session;
+       qp->sess_mp_priv = qp_conf->mp_session_private;
 
        memset(&qp->qp_stats, 0, sizeof(qp->qp_stats));
 
index b7807b6216b843aa449065b401378b804bf37408..df5c6092b4c534805f21a713312daeb1a3da3164 100644 (file)
@@ -36,6 +36,8 @@ struct snow3g_qp {
        /**< Ring for placing processed ops */
        struct rte_mempool *sess_mp;
        /**< Session Mempool */
+       struct rte_mempool *sess_mp_priv;
+       /**< Session Private Data Mempool */
        struct rte_cryptodev_stats qp_stats;
        /**< Queue pair statistics */
        uint8_t temp_digest[SNOW3G_DIGEST_LENGTH];
index 568b5a406cb47d57d68903303a618bc3ba4bd76d..4bae3b865797b6c01f038406545f8ac80e946d4f 100644 (file)
@@ -36,8 +36,7 @@ static void virtio_crypto_dev_stats_reset(struct rte_cryptodev *dev);
 static int virtio_crypto_qp_setup(struct rte_cryptodev *dev,
                uint16_t queue_pair_id,
                const struct rte_cryptodev_qp_conf *qp_conf,
-               int socket_id,
-               struct rte_mempool *session_pool);
+               int socket_id);
 static int virtio_crypto_qp_release(struct rte_cryptodev *dev,
                uint16_t queue_pair_id);
 static void virtio_crypto_dev_free_mbufs(struct rte_cryptodev *dev);
@@ -585,8 +584,7 @@ virtio_crypto_dev_stats_reset(struct rte_cryptodev *dev)
 static int
 virtio_crypto_qp_setup(struct rte_cryptodev *dev, uint16_t queue_pair_id,
                const struct rte_cryptodev_qp_conf *qp_conf,
-               int socket_id,
-               struct rte_mempool *session_pool __rte_unused)
+               int socket_id)
 {
        int ret;
        struct virtqueue *vq;
index 313f4590bf0508ebaa267fb37f92429ca19d680e..997c2092fcbc41368675b30bc071e700756fefe0 100644 (file)
@@ -144,7 +144,8 @@ zuc_get_session(struct zuc_qp *qp, struct rte_crypto_op *op)
                if (rte_mempool_get(qp->sess_mp, (void **)&_sess))
                        return NULL;
 
-               if (rte_mempool_get(qp->sess_mp, (void **)&_sess_private_data))
+               if (rte_mempool_get(qp->sess_mp_priv,
+                               (void **)&_sess_private_data))
                        return NULL;
 
                sess = (struct zuc_session *)_sess_private_data;
@@ -152,7 +153,7 @@ zuc_get_session(struct zuc_qp *qp, struct rte_crypto_op *op)
                if (unlikely(zuc_set_session_parameters(sess,
                                op->sym->xform) != 0)) {
                        rte_mempool_put(qp->sess_mp, _sess);
-                       rte_mempool_put(qp->sess_mp, _sess_private_data);
+                       rte_mempool_put(qp->sess_mp_priv, _sess_private_data);
                        sess = NULL;
                }
                op->sym->session = (struct rte_cryptodev_sym_session *)_sess;
@@ -327,7 +328,7 @@ process_ops(struct rte_crypto_op **ops, enum zuc_operation op_type,
                        memset(sessions[i], 0, sizeof(struct zuc_session));
                        memset(ops[i]->sym->session, 0,
                                        rte_cryptodev_sym_get_header_session_size());
-                       rte_mempool_put(qp->sess_mp, sessions[i]);
+                       rte_mempool_put(qp->sess_mp_priv, sessions[i]);
                        rte_mempool_put(qp->sess_mp, ops[i]->sym->session);
                        ops[i]->sym->session = NULL;
                }
index 04d45e4498ba85dcb6db21dcd0d7b5e996b9bc66..1b88947eb1490e928c088cf9369ba82691bdeb55 100644 (file)
@@ -198,7 +198,7 @@ zuc_pmd_qp_create_processed_ops_ring(struct zuc_qp *qp,
 static int
 zuc_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                const struct rte_cryptodev_qp_conf *qp_conf,
-               int socket_id, struct rte_mempool *session_pool)
+               int socket_id)
 {
        struct zuc_qp *qp = NULL;
 
@@ -223,7 +223,8 @@ zuc_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
        if (qp->processed_ops == NULL)
                goto qp_setup_cleanup;
 
-       qp->sess_mp = session_pool;
+       qp->sess_mp = qp_conf->mp_session;
+       qp->sess_mp_priv = qp_conf->mp_session_private;
 
        memset(&qp->qp_stats, 0, sizeof(qp->qp_stats));
 
index 5e5906ddb57bc90e78094dfae1effb543fbd62c1..aa73c0016974b24f08ea95ba89ec0e6bf9d5c034 100644 (file)
@@ -36,6 +36,8 @@ struct zuc_qp {
        /**< Ring for placing processed ops */
        struct rte_mempool *sess_mp;
        /**< Session Mempool */
+       struct rte_mempool *sess_mp_priv;
+       /**< Session Private Data Mempool */
        struct rte_cryptodev_stats qp_stats;
        /**< Queue pair statistics */
        uint8_t temp_digest[ZUC_DIGEST_LENGTH];
index 1480f6dd5d644648e8d71f26efbd0a8d8d1bda2b..f031d880398e6857c04367fe3de40d38120f7962 100644 (file)
@@ -101,7 +101,7 @@ softnic_cryptodev_create(struct pmd_internals *p,
        queue_conf.nb_descriptors = params->queue_size;
        for (i = 0; i < params->n_queues; i++) {
                status = rte_cryptodev_queue_pair_setup(dev_id, i,
-                               &queue_conf, socket_id, NULL);
+                               &queue_conf, socket_id);
                if (status < 0)
                        return NULL;
        }
index e7559c63366d235b8c62fc0fb64d327135c9a6b3..384b7a2407fb82659ef83e3c929c35d652c2aed3 100644 (file)
@@ -39,7 +39,7 @@ static int
 cryptodev_fips_validate_app_int(void)
 {
        struct rte_cryptodev_config conf = {rte_socket_id(), 1};
-       struct rte_cryptodev_qp_conf qp_conf = {128};
+       struct rte_cryptodev_qp_conf qp_conf = {128, NULL, NULL};
        int ret;
 
        ret = rte_cryptodev_configure(env.dev_id, &conf);
@@ -52,7 +52,7 @@ cryptodev_fips_validate_app_int(void)
                return ret;
 
        ret = rte_cryptodev_queue_pair_setup(env.dev_id, 0, &qp_conf,
-                       rte_socket_id(), env.mpool);
+                       rte_socket_id());
        if (ret < 0)
                return ret;
 
index c4ba72beca3566cc44dc2e8465abd4ce67f8a10e..b365810de076a182bceeefbc8e72eaf18c465225 100644 (file)
@@ -93,7 +93,7 @@ cryptodev_create(const char *name, struct cryptodev_params *params)
        queue_conf.nb_descriptors = params->queue_size;
        for (i = 0; i < params->n_queues; i++) {
                status = rte_cryptodev_queue_pair_setup(dev_id, i,
-                               &queue_conf, socket_id, NULL);
+                               &queue_conf, socket_id);
                if (status < 0)
                        return NULL;
        }
index 1bc0b5b50d3c9da19b2c6ae2b53e3e042decc375..a0ff8f7f75346aec4cb347a0da64e2b1a06d3556 100644 (file)
@@ -1493,10 +1493,13 @@ cryptodevs_init(void)
                                        cdev_id);
 
                qp_conf.nb_descriptors = CDEV_QUEUE_DESC;
+               qp_conf.mp_session =
+                               socket_ctx[dev_conf.socket_id].session_pool;
+               qp_conf.mp_session_private =
+                               socket_ctx[dev_conf.socket_id].session_pool;
                for (qp = 0; qp < dev_conf.nb_queue_pairs; qp++)
                        if (rte_cryptodev_queue_pair_setup(cdev_id, qp,
-                                       &qp_conf, dev_conf.socket_id,
-                                       socket_ctx[dev_conf.socket_id].session_pool))
+                                       &qp_conf, dev_conf.socket_id))
                                rte_panic("Failed to setup queue %u for "
                                                "cdev_id %u\n", 0, cdev_id);
 
index f12fd266e6726552caf2c6fbf041d6c00f94af4d..1df7ba743704277aa8853611013415c24b4ce450 100644 (file)
@@ -2443,9 +2443,11 @@ initialize_cryptodevs(struct l2fwd_crypto_options *options, unsigned nb_ports,
                }
 
                qp_conf.nb_descriptors = 2048;
+               qp_conf.mp_session = session_pool_socket[socket_id];
+               qp_conf.mp_session_private = session_pool_socket[socket_id];
 
                retval = rte_cryptodev_queue_pair_setup(cdev_id, 0, &qp_conf,
-                               socket_id, session_pool_socket[socket_id]);
+                               socket_id);
                if (retval < 0) {
                        printf("Failed to setup queue pair %u on cryptodev %u",
                                        0, cdev_id);
index 3deb5263fd2feebfcecc4917ca6174ac10966f2d..cb30f84c0766e585c7c30f7d7ea77ed50957496d 100644 (file)
@@ -463,7 +463,7 @@ free_resource(void)
 int
 main(int argc, char *argv[])
 {
-       struct rte_cryptodev_qp_conf qp_conf = {NB_CRYPTO_DESCRIPTORS};
+       struct rte_cryptodev_qp_conf qp_conf;
        struct rte_cryptodev_config config;
        struct rte_cryptodev_info dev_info;
        char name[128];
@@ -551,11 +551,14 @@ main(int argc, char *argv[])
 
                options.infos[i] = info;
 
+               qp_conf.nb_descriptors = NB_CRYPTO_DESCRIPTORS;
+               qp_conf.mp_session = info->sess_pool;
+               qp_conf.mp_session_private = info->sess_pool;
+
                for (j = 0; j < dev_info.max_nb_queue_pairs; j++) {
                        ret = rte_cryptodev_queue_pair_setup(info->cid, j,
                                        &qp_conf, rte_lcore_to_socket_id(
-                                                       lo->lcore_id),
-                                       info->sess_pool);
+                                                       lo->lcore_id));
                        if (ret < 0) {
                                RTE_LOG(ERR, USER1, "Failed to configure qp\n");
                                goto error_exit;
index a8f94c097e910841816c17366448f7f6167ef46d..e38018183e292462d211cfad9d51f54ad1936e59 100644 (file)
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: BSD-3-Clause
-# Copyright(c) 2015 Intel Corporation
+# Copyright(c) 2015-2019 Intel Corporation
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
@@ -7,7 +7,7 @@ include $(RTE_SDK)/mk/rte.vars.mk
 LIB = librte_cryptodev.a
 
 # library version
-LIBABIVER := 5
+LIBABIVER := 6
 
 # build flags
 CFLAGS += -O3
index 990dd3d444b1b61ca1ade65b421ff0713a761c73..44bd8321206e29e84b51633efb99e6833aa71e8a 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: BSD-3-Clause
-# Copyright(c) 2017 Intel Corporation
+# Copyright(c) 2017-2019 Intel Corporation
 
-version = 5
+version = 6
 sources = files('rte_cryptodev.c', 'rte_cryptodev_pmd.c')
 headers = files('rte_cryptodev.h',
        'rte_cryptodev_pmd.h',
index a52eaaa451000bc6467003cf44b982e7a6c1fc26..4929d045101af6a87864e702a9453e8381a6660d 100644 (file)
@@ -941,8 +941,7 @@ rte_cryptodev_close(uint8_t dev_id)
 
 int
 rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
-               const struct rte_cryptodev_qp_conf *qp_conf, int socket_id,
-               struct rte_mempool *session_pool)
+               const struct rte_cryptodev_qp_conf *qp_conf, int socket_id)
 
 {
        struct rte_cryptodev *dev;
@@ -958,6 +957,17 @@ rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
                return -EINVAL;
        }
 
+       if (!qp_conf) {
+               CDEV_LOG_ERR("qp_conf cannot be NULL\n");
+               return -EINVAL;
+       }
+
+       if ((qp_conf->mp_session && !qp_conf->mp_session_private) ||
+                       (!qp_conf->mp_session && qp_conf->mp_session_private)) {
+               CDEV_LOG_ERR("Invalid mempools\n");
+               return -EINVAL;
+       }
+
        if (dev->data->dev_started) {
                CDEV_LOG_ERR(
                    "device %d must be stopped to allow configuration", dev_id);
@@ -967,7 +977,7 @@ rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
        RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->queue_pair_setup, -ENOTSUP);
 
        return (*dev->dev_ops->queue_pair_setup)(dev, queue_pair_id, qp_conf,
-                       socket_id, session_pool);
+                       socket_id);
 }
 
 
index 4099823f1b26d377f17e5ac23ec26cb7ea93b165..2618fe210db1ae9ce47834f5b5b84a09dcc01353 100644 (file)
@@ -495,6 +495,10 @@ enum rte_cryptodev_event_type {
 /** Crypto device queue pair configuration structure. */
 struct rte_cryptodev_qp_conf {
        uint32_t nb_descriptors; /**< Number of descriptors per queue pair */
+       struct rte_mempool *mp_session;
+       /**< The mempool for creating session in sessionless mode */
+       struct rte_mempool *mp_session_private;
+       /**< The mempool for creating sess private data in sessionless mode */
 };
 
 /**
@@ -672,16 +676,12 @@ rte_cryptodev_close(uint8_t dev_id);
  *                             - 1] previously supplied to
  *                             rte_cryptodev_configure().
  * @param      qp_conf         The pointer to the configuration data to be
- *                             used for the queue pair. NULL value is
- *                             allowed, in which case default configuration
- *                             will be used.
+ *                             used for the queue pair.
  * @param      socket_id       The *socket_id* argument is the socket
  *                             identifier in case of NUMA. The value can be
  *                             *SOCKET_ID_ANY* if there is no NUMA constraint
  *                             for the DMA memory allocated for the receive
  *                             queue pair.
- * @param      session_pool    Pointer to device session mempool, used
- *                             for session-less operations.
  *
  * @return
  *   - 0: Success, queue pair correctly set up.
@@ -689,8 +689,7 @@ rte_cryptodev_close(uint8_t dev_id);
  */
 extern int
 rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
-               const struct rte_cryptodev_qp_conf *qp_conf, int socket_id,
-               struct rte_mempool *session_pool);
+               const struct rte_cryptodev_qp_conf *qp_conf, int socket_id);
 
 /**
  * Get the number of queue pairs on a specific crypto device
index 1b6cafd17a9100cf0f284a7327678980cf643c07..f15c9af3067e4238b724c83d9fb67540dfcc8b88 100644 (file)
@@ -188,13 +188,12 @@ typedef void (*cryptodev_info_get_t)(struct rte_cryptodev *dev,
  * @param      qp_id           Queue Pair Index
  * @param      qp_conf         Queue configuration structure
  * @param      socket_id       Socket Index
- * @param      session_pool    Pointer to device session mempool
  *
  * @return     Returns 0 on success.
  */
 typedef int (*cryptodev_queue_pair_setup_t)(struct rte_cryptodev *dev,
                uint16_t qp_id, const struct rte_cryptodev_qp_conf *qp_conf,
-               int socket_id, struct rte_mempool *session_pool);
+               int socket_id);
 
 /**
  * Release memory resources allocated by given queue pair.
index f437321acd78f28bf7432076431d8369d4eb7ae5..acb6c8c08f00b46421e3cba1e91762e672bb3704 100644 (file)
@@ -461,12 +461,13 @@ testsuite_setup(void)
                        dev_id, ts_params->conf.nb_queue_pairs);
 
        ts_params->qp_conf.nb_descriptors = DEFAULT_NUM_OPS_INFLIGHT;
+       ts_params->qp_conf.mp_session = ts_params->session_mpool;
+       ts_params->qp_conf.mp_session_private = ts_params->session_mpool;
 
        for (qp_id = 0; qp_id < info.max_nb_queue_pairs; qp_id++) {
                TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
                        dev_id, qp_id, &ts_params->qp_conf,
-                       rte_cryptodev_socket_id(dev_id),
-                       ts_params->session_mpool),
+                       rte_cryptodev_socket_id(dev_id)),
                        "Failed to setup queue pair %u on cryptodev %u",
                        qp_id, dev_id);
        }
@@ -519,8 +520,7 @@ ut_setup(void)
                TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
                        ts_params->valid_devs[0], qp_id,
                        &ts_params->qp_conf,
-                       rte_cryptodev_socket_id(ts_params->valid_devs[0]),
-                       ts_params->session_mpool),
+                       rte_cryptodev_socket_id(ts_params->valid_devs[0])),
                        "Failed to setup queue pair %u on cryptodev %u",
                        qp_id, ts_params->valid_devs[0]);
        }
@@ -709,13 +709,14 @@ test_queue_pair_descriptor_setup(void)
         * freed so are re-used if ring is released and re-created.
         */
        qp_conf.nb_descriptors = MIN_NUM_OPS_INFLIGHT; /* min size*/
+       qp_conf.mp_session = ts_params->session_mpool;
+       qp_conf.mp_session_private = ts_params->session_mpool;
 
        for (qp_id = 0; qp_id < ts_params->conf.nb_queue_pairs; qp_id++) {
                TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
                                ts_params->valid_devs[0], qp_id, &qp_conf,
                                rte_cryptodev_socket_id(
-                                               ts_params->valid_devs[0]),
-                               ts_params->session_mpool),
+                                               ts_params->valid_devs[0])),
                                "Failed test for "
                                "rte_cryptodev_queue_pair_setup: num_inflights "
                                "%u on qp %u on cryptodev %u",
@@ -729,8 +730,7 @@ test_queue_pair_descriptor_setup(void)
                TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
                                ts_params->valid_devs[0], qp_id, &qp_conf,
                                rte_cryptodev_socket_id(
-                                               ts_params->valid_devs[0]),
-                               ts_params->session_mpool),
+                                               ts_params->valid_devs[0])),
                                "Failed test for"
                                " rte_cryptodev_queue_pair_setup: num_inflights"
                                " %u on qp %u on cryptodev %u",
@@ -744,8 +744,7 @@ test_queue_pair_descriptor_setup(void)
                TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
                                ts_params->valid_devs[0], qp_id, &qp_conf,
                                rte_cryptodev_socket_id(
-                                               ts_params->valid_devs[0]),
-                               ts_params->session_mpool),
+                                               ts_params->valid_devs[0])),
                                "Failed test for "
                                "rte_cryptodev_queue_pair_setup: num_inflights"
                                " %u on qp %u on cryptodev %u",
@@ -760,8 +759,7 @@ test_queue_pair_descriptor_setup(void)
                TEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(
                                ts_params->valid_devs[0], qp_id, &qp_conf,
                                rte_cryptodev_socket_id(
-                                               ts_params->valid_devs[0]),
-                               ts_params->session_mpool),
+                                               ts_params->valid_devs[0])),
                                "Unexpectedly passed test for "
                                "rte_cryptodev_queue_pair_setup:"
                                "num_inflights %u on qp %u on cryptodev %u",
@@ -776,8 +774,7 @@ test_queue_pair_descriptor_setup(void)
                TEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(
                                ts_params->valid_devs[0], qp_id, &qp_conf,
                                rte_cryptodev_socket_id(
-                                               ts_params->valid_devs[0]),
-                               ts_params->session_mpool),
+                                               ts_params->valid_devs[0])),
                                "Unexpectedly passed test for "
                                "rte_cryptodev_queue_pair_setup:"
                                "num_inflights %u on qp %u on cryptodev %u",
@@ -791,8 +788,7 @@ test_queue_pair_descriptor_setup(void)
                TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
                                ts_params->valid_devs[0], qp_id, &qp_conf,
                                rte_cryptodev_socket_id(
-                                               ts_params->valid_devs[0]),
-                               ts_params->session_mpool),
+                                               ts_params->valid_devs[0])),
                                "Failed test for"
                                " rte_cryptodev_queue_pair_setup:"
                                "num_inflights %u on qp %u on cryptodev %u",
@@ -807,8 +803,7 @@ test_queue_pair_descriptor_setup(void)
                TEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(
                                ts_params->valid_devs[0], qp_id, &qp_conf,
                                rte_cryptodev_socket_id(
-                                               ts_params->valid_devs[0]),
-                               ts_params->session_mpool),
+                                               ts_params->valid_devs[0])),
                                "Unexpectedly passed test for "
                                "rte_cryptodev_queue_pair_setup:"
                                "num_inflights %u on qp %u on cryptodev %u",
@@ -824,8 +819,7 @@ test_queue_pair_descriptor_setup(void)
        TEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(
                        ts_params->valid_devs[0],
                        qp_id, &qp_conf,
-                       rte_cryptodev_socket_id(ts_params->valid_devs[0]),
-                       ts_params->session_mpool),
+                       rte_cryptodev_socket_id(ts_params->valid_devs[0])),
                        "Failed test for rte_cryptodev_queue_pair_setup:"
                        "invalid qp %u on cryptodev %u",
                        qp_id, ts_params->valid_devs[0]);
@@ -835,8 +829,7 @@ test_queue_pair_descriptor_setup(void)
        TEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(
                        ts_params->valid_devs[0],
                        qp_id, &qp_conf,
-                       rte_cryptodev_socket_id(ts_params->valid_devs[0]),
-                       ts_params->session_mpool),
+                       rte_cryptodev_socket_id(ts_params->valid_devs[0])),
                        "Failed test for rte_cryptodev_queue_pair_setup:"
                        "invalid qp %u on cryptodev %u",
                        qp_id, ts_params->valid_devs[0]);
index a899f997350c155ab05438e1ca7291feaef49353..0f6fc5767d205a6ec869f9df9b3659edf03f07a8 100644 (file)
@@ -383,11 +383,12 @@ testsuite_setup(void)
 
        /* configure qp */
        ts_params->qp_conf.nb_descriptors = DEFAULT_NUM_OPS_INFLIGHT;
+       ts_params->qp_conf.mp_session = ts_params->session_mpool;
+       ts_params->qp_conf.mp_session_private = ts_params->session_mpool;
        for (qp_id = 0; qp_id < info.max_nb_queue_pairs; qp_id++) {
                TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
                        dev_id, qp_id, &ts_params->qp_conf,
-                       rte_cryptodev_socket_id(dev_id),
-                       ts_params->session_mpool),
+                       rte_cryptodev_socket_id(dev_id)),
                        "Failed to setup queue pair %u on cryptodev %u ASYM",
                        qp_id, dev_id);
        }
@@ -449,8 +450,7 @@ ut_setup(void)
                TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
                        ts_params->valid_devs[0], qp_id,
                        &ts_params->qp_conf,
-                       rte_cryptodev_socket_id(ts_params->valid_devs[0]),
-                       ts_params->session_mpool),
+                       rte_cryptodev_socket_id(ts_params->valid_devs[0])),
                        "Failed to setup queue pair %u on cryptodev %u",
                        qp_id, ts_params->valid_devs[0]);
        }
index de258c3462d3cd4256301bd18f1d5b9bae749f0a..54717870e3a654239bdaef4c9c03c61dadac0efb 100644 (file)
@@ -546,11 +546,12 @@ configure_cryptodev(void)
                        TEST_CDEV_ID, conf.nb_queue_pairs);
 
        qp_conf.nb_descriptors = DEFAULT_NUM_OPS_INFLIGHT;
+       qp_conf.mp_session = params.session_mpool;
+       qp_conf.mp_session_private = params.session_mpool;
 
        TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
                        TEST_CDEV_ID, TEST_CDEV_QP_ID, &qp_conf,
-                       rte_cryptodev_socket_id(TEST_CDEV_ID),
-                       params.session_mpool),
+                       rte_cryptodev_socket_id(TEST_CDEV_ID)),
                        "Failed to setup queue pair %u on cryptodev %u\n",
                        TEST_CDEV_QP_ID, TEST_CDEV_ID);