crypto/qat: unify device private data structure
[dpdk.git] / drivers / crypto / qat / qat_sym_session.c
index 04bc2d7..8ca475c 100644 (file)
@@ -131,7 +131,7 @@ ctx_init_err:
 
 static int
 qat_is_cipher_alg_supported(enum rte_crypto_cipher_algorithm algo,
-               struct qat_sym_dev_private *internals)
+               struct qat_cryptodev_private *internals)
 {
        int i = 0;
        const struct rte_cryptodev_capabilities *capability;
@@ -152,7 +152,7 @@ qat_is_cipher_alg_supported(enum rte_crypto_cipher_algorithm algo,
 
 static int
 qat_is_auth_alg_supported(enum rte_crypto_auth_algorithm algo,
-               struct qat_sym_dev_private *internals)
+               struct qat_cryptodev_private *internals)
 {
        int i = 0;
        const struct rte_cryptodev_capabilities *capability;
@@ -267,7 +267,7 @@ qat_sym_session_configure_cipher(struct rte_cryptodev *dev,
                struct rte_crypto_sym_xform *xform,
                struct qat_sym_session *session)
 {
-       struct qat_sym_dev_private *internals = dev->data->dev_private;
+       struct qat_cryptodev_private *internals = dev->data->dev_private;
        struct rte_crypto_cipher_xform *cipher_xform = NULL;
        enum qat_device_gen qat_dev_gen =
                                internals->qat_dev->qat_dev_gen;
@@ -532,7 +532,8 @@ static void
 qat_sym_session_handle_mixed(const struct rte_cryptodev *dev,
                struct qat_sym_session *session)
 {
-       const struct qat_sym_dev_private *qat_private = dev->data->dev_private;
+       const struct qat_cryptodev_private *qat_private =
+                       dev->data->dev_private;
        enum qat_device_gen min_dev_gen = (qat_private->internal_capabilities &
                        QAT_SYM_CAP_MIXED_CRYPTO) ? QAT_GEN2 : QAT_GEN3;
 
@@ -564,7 +565,7 @@ qat_sym_session_set_parameters(struct rte_cryptodev *dev,
                struct rte_crypto_sym_xform *xform, void *session_private)
 {
        struct qat_sym_session *session = session_private;
-       struct qat_sym_dev_private *internals = dev->data->dev_private;
+       struct qat_cryptodev_private *internals = dev->data->dev_private;
        enum qat_device_gen qat_dev_gen = internals->qat_dev->qat_dev_gen;
        int ret;
        int qat_cmd_id;
@@ -707,9 +708,11 @@ qat_sym_session_configure_auth(struct rte_cryptodev *dev,
                                struct qat_sym_session *session)
 {
        struct rte_crypto_auth_xform *auth_xform = qat_get_auth_xform(xform);
-       struct qat_sym_dev_private *internals = dev->data->dev_private;
+       struct qat_cryptodev_private *internals = dev->data->dev_private;
        const uint8_t *key_data = auth_xform->key.data;
        uint8_t key_length = auth_xform->key.length;
+       enum qat_device_gen qat_dev_gen =
+                       internals->qat_dev->qat_dev_gen;
 
        session->aes_cmac = 0;
        session->auth_key_length = auth_xform->key.length;
@@ -717,6 +720,7 @@ qat_sym_session_configure_auth(struct rte_cryptodev *dev,
        session->auth_iv.length = auth_xform->iv.length;
        session->auth_mode = ICP_QAT_HW_AUTH_MODE1;
        session->is_auth = 1;
+       session->digest_length = auth_xform->digest_length;
 
        switch (auth_xform->algo) {
        case RTE_CRYPTO_AUTH_SHA1:
@@ -773,6 +777,10 @@ qat_sym_session_configure_auth(struct rte_cryptodev *dev,
                        session->auth_iv.length = AES_GCM_J0_LEN;
                else
                        session->is_iv12B = 1;
+               if (qat_dev_gen == QAT_GEN4) {
+                       session->is_cnt_zero = 1;
+                       session->is_ucs = 1;
+               }
                break;
        case RTE_CRYPTO_AUTH_SNOW3G_UIA2:
                session->qat_hash_alg = ICP_QAT_HW_AUTH_ALGO_SNOW_3G_UIA2;
@@ -858,7 +866,6 @@ qat_sym_session_configure_auth(struct rte_cryptodev *dev,
                        return -EINVAL;
        }
 
-       session->digest_length = auth_xform->digest_length;
        return 0;
 }
 
@@ -869,7 +876,7 @@ qat_sym_session_configure_aead(struct rte_cryptodev *dev,
 {
        struct rte_crypto_aead_xform *aead_xform = &xform->aead;
        enum rte_crypto_auth_operation crypto_operation;
-       struct qat_sym_dev_private *internals =
+       struct qat_cryptodev_private *internals =
                        dev->data->dev_private;
        enum qat_device_gen qat_dev_gen =
                        internals->qat_dev->qat_dev_gen;
@@ -922,6 +929,8 @@ qat_sym_session_configure_aead(struct rte_cryptodev *dev,
        case RTE_CRYPTO_AEAD_CHACHA20_POLY1305:
                if (aead_xform->key.length != ICP_QAT_HW_CHACHAPOLY_KEY_SZ)
                        return -EINVAL;
+               if (qat_dev_gen == QAT_GEN4)
+                       session->is_ucs = 1;
                session->qat_cipher_alg =
                                ICP_QAT_HW_CIPHER_ALGO_CHACHA20_POLY1305;
                qat_sym_session_handle_single_pass(session,
@@ -1812,6 +1821,7 @@ int qat_sym_cd_auth_set(struct qat_sym_session *cdesc,
                || cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_AES_XCBC_MAC
                || cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_AES_CBC_MAC
                || cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_NULL
+               || cdesc->is_cnt_zero
                        )
                hash->auth_counter.counter = 0;
        else {