X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_cryptodev%2Frte_cryptodev.c;h=e5f287634a97cfd561a61198fcb9a365d6eec5f8;hb=2eb6a1a3e5fc6e2760187d9c598468509f320e61;hp=8ee5d47a9b2c8910f4991339aaa868ae432a8dcf;hpb=f7db6f821e96eaa2edb5d9035cc8e87489353daa;p=dpdk.git diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c index 8ee5d47a9b..e5f287634a 100644 --- a/lib/librte_cryptodev/rte_cryptodev.c +++ b/lib/librte_cryptodev/rte_cryptodev.c @@ -311,8 +311,7 @@ rte_cryptodev_sym_capability_check_cipher( int rte_cryptodev_sym_capability_check_auth( const struct rte_cryptodev_symmetric_capability *capability, - uint16_t key_size, uint16_t digest_size, uint16_t aad_size, - uint16_t iv_size) + uint16_t key_size, uint16_t digest_size, uint16_t iv_size) { if (param_range_check(key_size, capability->auth.key_size)) return -1; @@ -320,9 +319,6 @@ rte_cryptodev_sym_capability_check_auth( if (param_range_check(digest_size, capability->auth.digest_size)) return -1; - if (param_range_check(aad_size, capability->auth.aad_size)) - return -1; - if (param_range_check(iv_size, capability->auth.iv_size)) return -1; @@ -492,6 +488,16 @@ rte_cryptodev_devices_get(const char *driver_name, uint8_t *devices, return count; } +void * +rte_cryptodev_get_sec_ctx(uint8_t dev_id) +{ + if (rte_crypto_devices[dev_id].feature_flags & + RTE_CRYPTODEV_FF_SECURITY) + return rte_crypto_devices[dev_id].security_ctx; + + return NULL; +} + int rte_cryptodev_socket_id(uint8_t dev_id) { @@ -587,6 +593,9 @@ rte_cryptodev_pmd_allocate(const char *name, int socket_id) cryptodev->data->socket_id = socket_id; cryptodev->data->dev_started = 0; + /* init user callbacks */ + TAILQ_INIT(&(cryptodev->link_intr_cbs)); + cryptodev->attached = RTE_CRYPTODEV_ATTACHED; cryptodev_globals.nb_devs++; @@ -1089,20 +1098,22 @@ rte_cryptodev_sym_session_init(uint8_t dev_id, { struct rte_cryptodev *dev; uint8_t index; + int ret; dev = rte_cryptodev_pmd_get_dev(dev_id); if (sess == NULL || xforms == NULL || dev == NULL) - return -1; + return -EINVAL; index = dev->driver_id; if (sess->sess_private_data[index] == NULL) { - if (dev->dev_ops->session_configure(dev, xforms, sess, mp) < 0) { + ret = dev->dev_ops->session_configure(dev, xforms, sess, mp); + if (ret < 0) { CDEV_LOG_ERR( "dev_id %d failed to configure session details", dev_id); - return -1; + return ret; } } @@ -1273,7 +1284,7 @@ rte_crypto_op_init(struct rte_mempool *mempool, __rte_crypto_op_reset(op, type); - op->phys_addr = rte_mem_virt2phy(_op_data); + op->phys_addr = rte_mem_virt2iova(_op_data); op->mempool = mempool; } @@ -1364,12 +1375,6 @@ 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; -}; - int rte_cryptodev_driver_id_get(const char *name) { @@ -1389,6 +1394,17 @@ rte_cryptodev_driver_id_get(const char *name) return -1; } +const char * +rte_cryptodev_name_get(uint8_t dev_id) +{ + struct rte_cryptodev *dev = rte_cryptodev_pmd_get_dev(dev_id); + + if (dev == NULL) + return NULL; + + return dev->data->name; +} + const char * rte_cryptodev_driver_name_get(uint8_t driver_id) { @@ -1401,15 +1417,13 @@ rte_cryptodev_driver_name_get(uint8_t driver_id) } uint8_t -rte_cryptodev_allocate_driver(const struct rte_driver *drv) +rte_cryptodev_allocate_driver(struct cryptodev_driver *crypto_drv, + const struct rte_driver *drv) { - struct cryptodev_driver *driver; - - driver = malloc(sizeof(*driver)); - driver->driver = drv; - driver->id = nb_drivers; + crypto_drv->driver = drv; + crypto_drv->id = nb_drivers; - TAILQ_INSERT_TAIL(&cryptodev_driver_list, driver, next); + TAILQ_INSERT_TAIL(&cryptodev_driver_list, crypto_drv, next); return nb_drivers++; }