Skip to content

Commit

Permalink
crypto/dpaa2_sec: fix close and uninit functions
Browse files Browse the repository at this point in the history
The init function was calling the dpseci_open
while dpseci_close was called by the open function.
This is a mismatch un-init shall clean the init configurations and
close shall clear the configure function settings.

This was causing issue with recent changes in test framework, where
the close was being called and causing DPAA2 SEC to fail in configure

Fixes: e5cbdfc ("crypto/dpaa2_sec: add basic operations")
Cc: stable@dpdk.org

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
  • Loading branch information
hemantagr authored and Akhil Goyal committed May 5, 2021
1 parent 22629f0 commit 394b4e1
Showing 1 changed file with 24 additions and 26 deletions.
50 changes: 24 additions & 26 deletions drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
Original file line number Diff line number Diff line change
Expand Up @@ -3564,32 +3564,10 @@ dpaa2_sec_dev_stop(struct rte_cryptodev *dev)
}

static int
dpaa2_sec_dev_close(struct rte_cryptodev *dev)
dpaa2_sec_dev_close(struct rte_cryptodev *dev __rte_unused)
{
struct dpaa2_sec_dev_private *priv = dev->data->dev_private;
struct fsl_mc_io *dpseci = (struct fsl_mc_io *)priv->hw;
int ret;

PMD_INIT_FUNC_TRACE();

/* Function is reverse of dpaa2_sec_dev_init.
* It does the following:
* 1. Detach a DPSECI from attached resources i.e. buffer pools, dpbp_id
* 2. Close the DPSECI device
* 3. Free the allocated resources.
*/

/*Close the device at underlying layer*/
ret = dpseci_close(dpseci, CMD_PRI_LOW, priv->token);
if (ret) {
DPAA2_SEC_ERR("Failure closing dpseci device: err(%d)", ret);
return -1;
}

/*Free the allocated memory for ethernet private data and dpseci*/
priv->hw = NULL;
rte_free(dpseci);

return 0;
}

Expand Down Expand Up @@ -3849,11 +3827,31 @@ static const struct rte_security_ops dpaa2_sec_security_ops = {
static int
dpaa2_sec_uninit(const struct rte_cryptodev *dev)
{
struct dpaa2_sec_dev_private *internals = dev->data->dev_private;
struct dpaa2_sec_dev_private *priv = dev->data->dev_private;
struct fsl_mc_io *dpseci = (struct fsl_mc_io *)priv->hw;
int ret;

rte_free(dev->security_ctx);
PMD_INIT_FUNC_TRACE();

/* Function is reverse of dpaa2_sec_dev_init.
* It does the following:
* 1. Detach a DPSECI from attached resources i.e. buffer pools, dpbp_id
* 2. Close the DPSECI device
* 3. Free the allocated resources.
*/

rte_mempool_free(internals->fle_pool);
/*Close the device at underlying layer*/
ret = dpseci_close(dpseci, CMD_PRI_LOW, priv->token);
if (ret) {
DPAA2_SEC_ERR("Failure closing dpseci device: err(%d)", ret);
return -1;
}

/*Free the allocated memory for ethernet private data and dpseci*/
priv->hw = NULL;
rte_free(dpseci);
rte_free(dev->security_ctx);
rte_mempool_free(priv->fle_pool);

DPAA2_SEC_INFO("Closing DPAA2_SEC device %s on numa socket %u",
dev->data->name, rte_socket_id());
Expand Down

0 comments on commit 394b4e1

Please sign in to comment.