cryptodev: rename ADD field
[dpdk.git] / drivers / crypto / openssl / rte_openssl_pmd.c
index f86cc10..c7c520f 100644 (file)
@@ -45,6 +45,8 @@
 
 #define DES_BLOCK_SIZE 8
 
+static uint8_t cryptodev_driver_id;
+
 static int cryptodev_openssl_remove(struct rte_vdev_device *vdev);
 
 /*----------------------------------------------------------------------------*/
@@ -456,7 +458,7 @@ openssl_set_session_aead_parameters(struct openssl_session *sess,
                return -EINVAL;
        }
 
-       sess->auth.aad_length = xform->aead.add_auth_data_length;
+       sess->auth.aad_length = xform->aead.aad_length;
        sess->auth.digest_length = xform->aead.digest_length;
 
        return 0;
@@ -556,27 +558,33 @@ get_session(struct openssl_qp *qp, struct rte_crypto_op *op)
 
        if (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) {
                /* get existing session */
-               if (likely(op->sym->session != NULL &&
-                               op->sym->session->dev_type ==
-                               RTE_CRYPTODEV_OPENSSL_PMD))
+               if (likely(op->sym->session != NULL))
                        sess = (struct openssl_session *)
-                               op->sym->session->_private;
-       } else  {
+                                       get_session_private_data(
+                                       op->sym->session,
+                                       cryptodev_driver_id);
+       } else {
                /* provide internal session */
                void *_sess = NULL;
+               void *_sess_private_data = NULL;
 
-               if (!rte_mempool_get(qp->sess_mp, (void **)&_sess)) {
-                       sess = (struct openssl_session *)
-                               ((struct rte_cryptodev_sym_session *)_sess)
-                               ->_private;
-
-                       if (unlikely(openssl_set_session_parameters(
-                                       sess, op->sym->xform) != 0)) {
-                               rte_mempool_put(qp->sess_mp, _sess);
-                               sess = NULL;
-                       } else
-                               op->sym->session = _sess;
+               if (rte_mempool_get(qp->sess_mp, (void **)&_sess))
+                       return NULL;
+
+               if (rte_mempool_get(qp->sess_mp, (void **)&_sess_private_data))
+                       return NULL;
+
+               sess = (struct openssl_session *)_sess_private_data;
+
+               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);
+                       sess = NULL;
                }
+               op->sym->session = (struct rte_cryptodev_sym_session *)_sess;
+               set_session_private_data(op->sym->session, cryptodev_driver_id,
+                       _sess_private_data);
        }
 
        if (sess == NULL)
@@ -1318,6 +1326,9 @@ process_op(const struct openssl_qp *qp, struct rte_crypto_op *op,
        if (op->sess_type == RTE_CRYPTO_OP_SESSIONLESS) {
                openssl_reset_session(sess);
                memset(sess, 0, sizeof(struct openssl_session));
+               memset(op->sym->session, 0,
+                               rte_cryptodev_get_header_session_size());
+               rte_mempool_put(qp->sess_mp, sess);
                rte_mempool_put(qp->sess_mp, op->sym->session);
                op->sym->session = NULL;
        }
@@ -1404,7 +1415,7 @@ cryptodev_openssl_create(const char *name,
                goto init_error;
        }
 
-       dev->dev_type = RTE_CRYPTODEV_OPENSSL_PMD;
+       dev->driver_id = cryptodev_driver_id;
        dev->dev_ops = rte_openssl_pmd_ops;
 
        /* register rx/tx burst functions for data path */
@@ -1493,3 +1504,4 @@ RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_OPENSSL_PMD,
        "max_nb_queue_pairs=<int> "
        "max_nb_sessions=<int> "
        "socket_id=<int>");
+RTE_PMD_REGISTER_CRYPTO_DRIVER(cryptodev_openssl_pmd_drv, cryptodev_driver_id);