cryptodev: remove crypto device type enumeration
[dpdk.git] / lib / librte_cryptodev / rte_cryptodev.c
index 497f9ce..107632b 100644 (file)
@@ -452,12 +452,12 @@ rte_cryptodev_count(void)
 }
 
 uint8_t
-rte_cryptodev_count_devtype(enum rte_cryptodev_type type)
+rte_cryptodev_device_count_by_driver(uint8_t driver_id)
 {
        uint8_t i, dev_count = 0;
 
        for (i = 0; i < rte_cryptodev_globals->max_devs; i++)
-               if (rte_cryptodev_globals->devs[i].dev_type == type &&
+               if (rte_cryptodev_globals->devs[i].driver_id == driver_id &&
                        rte_cryptodev_globals->devs[i].attached ==
                                        RTE_CRYPTODEV_ATTACHED)
                        dev_count++;
@@ -1101,7 +1101,7 @@ rte_cryptodev_sym_session_init(struct rte_mempool *mp,
        memset(sess, 0, mp->elt_size);
 
        sess->dev_id = dev->data->dev_id;
-       sess->dev_type = dev->dev_type;
+       sess->driver_id = dev->driver_id;
        sess->mp = mp;
 
        if (dev->dev_ops->session_initialize)
@@ -1268,7 +1268,7 @@ rte_cryptodev_sym_session_free(uint8_t dev_id,
        dev = &rte_crypto_devices[dev_id];
 
        /* Check the session belongs to this device type */
-       if (sess->dev_type != dev->dev_type)
+       if (sess->driver_id != dev->driver_id)
                return sess;
 
        /* Let device implementation clear session material */
@@ -1380,3 +1380,60 @@ rte_cryptodev_pmd_create_dev_name(char *name, const char *dev_name_prefix)
 
        return -1;
 }
+
+TAILQ_HEAD(cryptodev_driver_list, cryptodev_driver);
+
+static struct cryptodev_driver_list cryptodev_driver_list =
+       TAILQ_HEAD_INITIALIZER(cryptodev_driver_list);
+
+struct cryptodev_driver {
+       TAILQ_ENTRY(cryptodev_driver) next; /**< Next in list. */
+       const struct rte_driver *driver;
+       uint8_t id;
+};
+
+static uint8_t nb_drivers;
+
+int
+rte_cryptodev_driver_id_get(const char *name)
+{
+       struct cryptodev_driver *driver;
+       const char *driver_name;
+
+       if (name == NULL) {
+               RTE_LOG(DEBUG, CRYPTODEV, "name pointer NULL");
+               return -1;
+       }
+
+       TAILQ_FOREACH(driver, &cryptodev_driver_list, next) {
+               driver_name = driver->driver->name;
+               if (strncmp(driver_name, name, strlen(driver_name)) == 0)
+                       return driver->id;
+       }
+       return -1;
+}
+
+const char *
+rte_cryptodev_driver_name_get(uint8_t driver_id)
+{
+       struct cryptodev_driver *driver;
+
+       TAILQ_FOREACH(driver, &cryptodev_driver_list, next)
+               if (driver->id == driver_id)
+                       return driver->driver->name;
+       return NULL;
+}
+
+uint8_t
+rte_cryptodev_allocate_driver(const struct rte_driver *drv)
+{
+       struct cryptodev_driver *driver;
+
+       driver = malloc(sizeof(*driver));
+       driver->driver = drv;
+       driver->id = nb_drivers;
+
+       TAILQ_INSERT_TAIL(&cryptodev_driver_list, driver, next);
+
+       return nb_drivers++;
+}