net/bnxt: fix handling interface change status
[dpdk.git] / drivers / crypto / mvsam / rte_mrvl_pmd_ops.c
index 62f5a2a..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];
@@ -657,7 +657,7 @@ mrvl_crypto_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,
                 */
                int num = sam_get_num_inst();
                if (num == 0) {
-                       MRVL_CRYPTO_LOG_ERR("No crypto engines detected.\n");
+                       MRVL_LOG(ERR, "No crypto engines detected!");
                        return -1;
                }
 
@@ -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.
  */
@@ -741,7 +742,7 @@ mrvl_crypto_pmd_sym_session_configure(__rte_unused struct rte_cryptodev *dev,
        int ret;
 
        if (sess == NULL) {
-               MRVL_CRYPTO_LOG_ERR("Invalid session struct.");
+               MRVL_LOG(ERR, "Invalid session struct!");
                return -EINVAL;
        }
 
@@ -750,9 +751,11 @@ 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_CRYPTO_LOG_ERR("Failed to configure session parameters.");
+               MRVL_LOG(ERR, "Failed to configure session parameters!");
 
                /* Return session to mempool */
                rte_mempool_put(mp, sess_private_data);
@@ -764,10 +767,16 @@ mrvl_crypto_pmd_sym_session_configure(__rte_unused struct rte_cryptodev *dev,
        mrvl_sess = (struct mrvl_crypto_session *)sess_private_data;
        if (sam_session_create(&mrvl_sess->sam_sess_params,
                                &mrvl_sess->sam_sess) < 0) {
-               MRVL_CRYPTO_LOG_DBG("Failed to create session!");
+               MRVL_LOG(DEBUG, "Failed to create session!");
                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;
 }
 
@@ -792,7 +801,7 @@ mrvl_crypto_pmd_sym_session_clear(struct rte_cryptodev *dev,
 
                if (mrvl_sess->sam_sess &&
                    sam_session_destroy(mrvl_sess->sam_sess) < 0) {
-                       MRVL_CRYPTO_LOG_INFO("Error while destroying session!");
+                       MRVL_LOG(ERR, "Error while destroying session!");
                }
 
                memset(sess, 0, sizeof(struct mrvl_crypto_session));