drivers: rename register macro prefix
[dpdk.git] / drivers / crypto / aesni_mb / rte_aesni_mb_pmd.c
index f28b29f..b936735 100644 (file)
 #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>
-#include <rte_mbuf_offload.h>
 
 #include "rte_aesni_mb_pmd_private.h"
 
@@ -55,7 +54,7 @@ create_unique_device_name(char *name, size_t size)
        if (name == NULL)
                return -EINVAL;
 
-       ret = snprintf(name, size, "%s_%u", CRYPTODEV_NAME_AESNI_MB_PMD,
+       ret = snprintf(name, size, "%s_%u", RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD),
                        unique_name_id++);
        if (ret < 0)
                return ret;
@@ -223,6 +222,9 @@ aesni_mb_set_session_cipher_parameters(const struct aesni_mb_ops *mb_ops,
        case RTE_CRYPTO_CIPHER_AES_CBC:
                sess->cipher.mode = CBC;
                break;
+       case RTE_CRYPTO_CIPHER_AES_CTR:
+               sess->cipher.mode = CNTR;
+               break;
        default:
                MB_LOG_ERR("Unsupported cipher mode parameter");
                return -1;
@@ -300,8 +302,8 @@ get_session(struct aesni_mb_qp *qp, struct rte_crypto_op *op)
 {
        struct aesni_mb_session *sess = NULL;
 
-       if (op->sym->type == RTE_CRYPTO_SYM_OP_WITH_SESSION) {
-               if (unlikely(op->sym->session->type !=
+       if (op->sym->sess_type == RTE_CRYPTO_SYM_OP_WITH_SESSION) {
+               if (unlikely(op->sym->session->dev_type !=
                                RTE_CRYPTODEV_AESNI_MB_PMD))
                        return NULL;
 
@@ -380,9 +382,11 @@ process_crypto_op(struct aesni_mb_qp *qp, struct rte_crypto_op *op,
                /* append space for output data to mbuf */
                char *odata = rte_pktmbuf_append(m_dst,
                                rte_pktmbuf_data_len(op->sym->m_src));
-               if (odata == NULL)
+               if (odata == NULL) {
                        MB_LOG_ERR("failed to allocate space in destination "
                                        "mbuf for source data");
+                       return NULL;
+               }
 
                memcpy(odata, rte_pktmbuf_mtod(op->sym->m_src, void*),
                                rte_pktmbuf_data_len(op->sym->m_src));
@@ -476,7 +480,7 @@ post_process_mb_job(struct aesni_mb_qp *qp, JOB_AES_HMAC *job)
        }
 
        /* 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;
        }
@@ -561,7 +565,7 @@ aesni_mb_pmd_enqueue_burst(void *queue_pair, struct rte_crypto_op **ops,
                goto flush_jobs;
        else
                qp->stats.enqueued_count += processed_jobs;
-               return i;
+       return i;
 
 flush_jobs:
        /*
@@ -591,10 +595,11 @@ aesni_mb_pmd_dequeue_burst(void *queue_pair, struct rte_crypto_op **ops,
 }
 
 
-static int cryptodev_aesni_mb_uninit(const char *name);
+static int cryptodev_aesni_mb_remove(const char *name);
 
 static int
-cryptodev_aesni_mb_create(const char *name, unsigned socket_id)
+cryptodev_aesni_mb_create(const char *name,
+               struct rte_crypto_vdev_init_params *init_params)
 {
        struct rte_cryptodev *dev;
        char crypto_dev_name[RTE_CRYPTODEV_NAME_MAX_LEN];
@@ -628,7 +633,7 @@ cryptodev_aesni_mb_create(const char *name, unsigned socket_id)
 
 
        dev = rte_cryptodev_pmd_virtual_dev_init(crypto_dev_name,
-                       sizeof(struct aesni_mb_private), socket_id);
+                       sizeof(struct aesni_mb_private), init_params->socket_id);
        if (dev == NULL) {
                MB_LOG_ERR("failed to create cryptodev vdev");
                goto init_error;
@@ -641,33 +646,64 @@ cryptodev_aesni_mb_create(const char *name, unsigned socket_id)
        dev->dequeue_burst = aesni_mb_pmd_dequeue_burst;
        dev->enqueue_burst = aesni_mb_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_MB_SSE:
+               dev->feature_flags |= RTE_CRYPTODEV_FF_CPU_SSE;
+               break;
+       case RTE_AESNI_MB_AVX:
+               dev->feature_flags |= RTE_CRYPTODEV_FF_CPU_AVX;
+               break;
+       case RTE_AESNI_MB_AVX2:
+               dev->feature_flags |= RTE_CRYPTODEV_FF_CPU_AVX2;
+               break;
+       default:
+               break;
+       }
+
        /* Set vector instructions mode supported */
        internals = dev->data->dev_private;
 
        internals->vector_mode = vector_mode;
-       internals->max_nb_queue_pairs = RTE_AESNI_MB_PMD_MAX_NB_QUEUE_PAIRS;
-       internals->max_nb_sessions = RTE_AESNI_MB_PMD_MAX_NB_SESSIONS;
+       internals->max_nb_queue_pairs = init_params->max_nb_queue_pairs;
+       internals->max_nb_sessions = init_params->max_nb_sessions;
 
        return 0;
 init_error:
        MB_LOG_ERR("driver %s: cryptodev_aesni_create failed", name);
 
-       cryptodev_aesni_mb_uninit(crypto_dev_name);
+       cryptodev_aesni_mb_remove(crypto_dev_name);
        return -EFAULT;
 }
 
 
 static int
-cryptodev_aesni_mb_init(const char *name,
-               const char *params __rte_unused)
+cryptodev_aesni_mb_probe(const char *name,
+               const char *input_args)
 {
-       RTE_LOG(INFO, PMD, "Initialising %s\n", name);
-
-       return cryptodev_aesni_mb_create(name, rte_socket_id());
+       struct rte_crypto_vdev_init_params init_params = {
+               RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_QUEUE_PAIRS,
+               RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_SESSIONS,
+               rte_socket_id()
+       };
+
+       rte_cryptodev_parse_vdev_init_params(&init_params, input_args);
+
+       RTE_LOG(INFO, PMD, "Initialising %s on NUMA node %d\n", name,
+                       init_params.socket_id);
+       RTE_LOG(INFO, PMD, "  Max number of queue pairs = %d\n",
+                       init_params.max_nb_queue_pairs);
+       RTE_LOG(INFO, PMD, "  Max number of sessions = %d\n",
+                       init_params.max_nb_sessions);
+
+       return cryptodev_aesni_mb_create(name, &init_params);
 }
 
 static int
-cryptodev_aesni_mb_uninit(const char *name)
+cryptodev_aesni_mb_remove(const char *name)
 {
        if (name == NULL)
                return -EINVAL;
@@ -678,11 +714,13 @@ cryptodev_aesni_mb_uninit(const char *name)
        return 0;
 }
 
-static struct rte_driver cryptodev_aesni_mb_pmd_drv = {
-       .name = CRYPTODEV_NAME_AESNI_MB_PMD,
-       .type = PMD_VDEV,
-       .init = cryptodev_aesni_mb_init,
-       .uninit = cryptodev_aesni_mb_uninit
+static struct rte_vdev_driver cryptodev_aesni_mb_pmd_drv = {
+       .probe = cryptodev_aesni_mb_probe,
+       .remove = cryptodev_aesni_mb_remove
 };
 
-PMD_REGISTER_DRIVER(cryptodev_aesni_mb_pmd_drv);
+RTE_PMD_REGISTER_VDEV(CRYPTODEV_NAME_AESNI_MB_PMD, cryptodev_aesni_mb_pmd_drv);
+RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_AESNI_MB_PMD,
+       "max_nb_queue_pairs=<int> "
+       "max_nb_sessions=<int> "
+       "socket_id=<int>");