net/bnxt: fix handling interface change status
[dpdk.git] / drivers / crypto / mvsam / rte_mrvl_pmd_ops.c
index 9956f05..56a5450 100644 (file)
@@ -633,7 +633,7 @@ mrvl_crypto_pmd_close(struct rte_cryptodev *dev)
 static int
 mrvl_crypto_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                const struct rte_cryptodev_qp_conf *qp_conf,
-               int socket_id, struct rte_mempool *session_pool)
+               int socket_id)
 {
        struct mrvl_crypto_qp *qp = NULL;
        char match[RTE_CRYPTODEV_NAME_MAX_LEN];
@@ -690,7 +690,8 @@ mrvl_crypto_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                if (sam_cio_init(&qp->cio_params, &qp->cio) < 0)
                        break;
 
-               qp->sess_mp = session_pool;
+               qp->sess_mp = qp_conf->mp_session;
+               qp->sess_mp_priv = qp_conf->mp_session_private;
 
                memset(&qp->stats, 0, sizeof(qp->stats));
                dev->data->queue_pairs[qp_id] = qp;
@@ -726,7 +727,7 @@ mrvl_crypto_pmd_sym_session_get_size(__rte_unused struct rte_cryptodev *dev)
 /** Configure the session from a crypto xform chain (PMD ops callback).
  *
  * @param dev Pointer to the device structure.
- * @param xform Pointer to the crytpo configuration structure.
+ * @param xform Pointer to the crypto configuration structure.
  * @param sess Pointer to the empty session structure.
  * @returns 0 upon success, negative value otherwise.
  */
@@ -750,6 +751,8 @@ mrvl_crypto_pmd_sym_session_configure(__rte_unused struct rte_cryptodev *dev,
                return -ENOMEM;
        }
 
+       memset(sess_private_data, 0, sizeof(struct mrvl_crypto_session));
+
        ret = mrvl_crypto_set_session_parameters(sess_private_data, xform);
        if (ret != 0) {
                MRVL_LOG(ERR, "Failed to configure session parameters!");
@@ -768,6 +771,12 @@ mrvl_crypto_pmd_sym_session_configure(__rte_unused struct rte_cryptodev *dev,
                return -EIO;
        }
 
+       /* free the keys memory allocated for session creation */
+       if (mrvl_sess->sam_sess_params.cipher_key != NULL)
+               free(mrvl_sess->sam_sess_params.cipher_key);
+       if (mrvl_sess->sam_sess_params.auth_key != NULL)
+               free(mrvl_sess->sam_sess_params.auth_key);
+
        return 0;
 }