Call rte_cryptodev_pmd_release_device() if probing a PCI crypto device, instead of accessing the variables directly. This will be useful when rte_cryptodev_pci_probe() gets moved to a separate file.
Signed-off-by: Pablo de Lara <pablo.de.lara.gua...@intel.com> Acked-by: Declan Doherty <declan.dohe...@intel.com> --- lib/librte_cryptodev/rte_cryptodev.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c index c0cfe94..d02a4d0 100644 --- a/lib/librte_cryptodev/rte_cryptodev.c +++ b/lib/librte_cryptodev/rte_cryptodev.c @@ -541,9 +541,12 @@ rte_cryptodev_pmd_release_device(struct rte_cryptodev *cryptodev) if (cryptodev == NULL) return -EINVAL; - ret = rte_cryptodev_close(cryptodev->data->dev_id); - if (ret < 0) - return ret; + /* Close device only if device operations have been set */ + if (cryptodev->dev_ops) { + ret = rte_cryptodev_close(cryptodev->data->dev_id); + if (ret < 0) + return ret; + } cryptodev->attached = RTE_CRYPTODEV_DETACHED; cryptodev_globals.nb_devs--; @@ -604,8 +607,8 @@ rte_cryptodev_pci_probe(struct rte_pci_driver *pci_drv, if (rte_eal_process_type() == RTE_PROC_PRIMARY) rte_free(cryptodev->data->dev_private); - cryptodev->attached = RTE_CRYPTODEV_DETACHED; - cryptodev_globals.nb_devs--; + /* free crypto device */ + rte_cryptodev_pmd_release_device(cryptodev); return -ENXIO; } -- 2.9.4