drivers: use vdev registration
[dpdk.git] / drivers / crypto / aesni_gcm / aesni_gcm_pmd.c
index 83aa272..c93ebfe 100644 (file)
@@ -37,7 +37,7 @@
 #include <rte_hexdump.h>
 #include <rte_cryptodev.h>
 #include <rte_cryptodev_pmd.h>
-#include <rte_dev.h>
+#include <rte_vdev.h>
 #include <rte_malloc.h>
 #include <rte_cpuflags.h>
 
@@ -57,7 +57,7 @@ create_unique_device_name(char *name, size_t size)
        if (name == NULL)
                return -EINVAL;
 
-       ret = snprintf(name, size, "%s_%u", CRYPTODEV_NAME_AESNI_GCM_PMD,
+       ret = snprintf(name, size, "%s_%u", RTE_STR(CRYPTODEV_NAME_AESNI_GCM_PMD),
                        unique_name_id++);
        if (ret < 0)
                return ret;
@@ -180,8 +180,9 @@ aesni_gcm_get_session(struct aesni_gcm_qp *qp, struct rte_crypto_sym_op *op)
 {
        struct aesni_gcm_session *sess = NULL;
 
-       if (op->type == RTE_CRYPTO_SYM_OP_WITH_SESSION) {
-               if (unlikely(op->session->type != RTE_CRYPTODEV_AESNI_GCM_PMD))
+       if (op->sess_type == RTE_CRYPTO_SYM_OP_WITH_SESSION) {
+               if (unlikely(op->session->dev_type
+                                       != RTE_CRYPTODEV_AESNI_GCM_PMD))
                        return sess;
 
                sess = (struct aesni_gcm_session *)op->session->_private;
@@ -339,7 +340,7 @@ handle_completed_gcm_crypto_op(struct aesni_gcm_qp *qp,
        post_process_gcm_crypto_op(op);
 
        /* Free session if a session-less crypto op */
-       if (op->sym->type == RTE_CRYPTO_SYM_OP_SESSIONLESS) {
+       if (op->sym->sess_type == RTE_CRYPTO_SYM_OP_SESSIONLESS) {
                rte_mempool_put(qp->sess_mp, op->sym->session);
                op->sym->session = NULL;
        }
@@ -445,6 +446,24 @@ aesni_gcm_create(const char *name,
        dev->dequeue_burst = aesni_gcm_pmd_dequeue_burst;
        dev->enqueue_burst = aesni_gcm_pmd_enqueue_burst;
 
+       dev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO |
+                       RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING |
+                       RTE_CRYPTODEV_FF_CPU_AESNI;
+
+       switch (vector_mode) {
+       case RTE_AESNI_GCM_SSE:
+               dev->feature_flags |= RTE_CRYPTODEV_FF_CPU_SSE;
+               break;
+       case RTE_AESNI_GCM_AVX:
+               dev->feature_flags |= RTE_CRYPTODEV_FF_CPU_AVX;
+               break;
+       case RTE_AESNI_GCM_AVX2:
+               dev->feature_flags |= RTE_CRYPTODEV_FF_CPU_AVX2;
+               break;
+       default:
+               break;
+       }
+
        /* Set vector instructions mode supported */
        internals = dev->data->dev_private;
 
@@ -495,11 +514,16 @@ aesni_gcm_uninit(const char *name)
        return 0;
 }
 
-static struct rte_driver aesni_gcm_pmd_drv = {
-       .name = CRYPTODEV_NAME_AESNI_GCM_PMD,
-       .type = PMD_VDEV,
+static struct rte_vdev_driver aesni_gcm_pmd_drv = {
+       .driver = {
+               .type = PMD_VDEV,
+       },
        .init = aesni_gcm_init,
        .uninit = aesni_gcm_uninit
 };
 
-PMD_REGISTER_DRIVER(aesni_gcm_pmd_drv);
+DRIVER_REGISTER_VDEV(CRYPTODEV_NAME_AESNI_GCM_PMD, aesni_gcm_pmd_drv);
+DRIVER_REGISTER_PARAM_STRING(CRYPTODEV_NAME_AESNI_GCM_PMD,
+       "max_nb_queue_pairs=<int> "
+       "max_nb_sessions=<int> "
+       "socket_id=<int>");