]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/spdk/dpdk/drivers/crypto/armv8/rte_armv8_pmd.c
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / dpdk / drivers / crypto / armv8 / rte_armv8_pmd.c
index 0d4649adcd1d87a917e4fb80fb09fd54884203b5..8b212772faa607afc4e4f8e131792a7dda9ce27a 100644 (file)
@@ -12,9 +12,9 @@
 #include <rte_malloc.h>
 #include <rte_cpuflags.h>
 
-#include "armv8_crypto_defs.h"
+#include "AArch64cryptolib.h"
 
-#include "rte_armv8_pmd_private.h"
+#include "armv8_pmd_private.h"
 
 static uint8_t cryptodev_driver_id;
 
@@ -78,25 +78,29 @@ crypto_func_tbl_t[CRYPTO_CIPHER_MAX][CRYPTO_AUTH_MAX][CRYPTO_CIPHER_KEYLEN_MAX];
 static const crypto_func_tbl_t
 crypto_op_ca_encrypt = {
        /* [cipher alg][auth alg][key length] = crypto_function, */
-       [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] = aes128cbc_sha1_hmac,
-       [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] = aes128cbc_sha256_hmac,
+       [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] =
+               armv8_enc_aes_cbc_sha1_128,
+       [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] =
+               armv8_enc_aes_cbc_sha256_128,
 };
 
 static const crypto_func_tbl_t
 crypto_op_ca_decrypt = {
-       NULL
+       { {NULL} }
 };
 
 static const crypto_func_tbl_t
 crypto_op_ac_encrypt = {
-       NULL
+       { {NULL} }
 };
 
 static const crypto_func_tbl_t
 crypto_op_ac_decrypt = {
        /* [cipher alg][auth alg][key length] = crypto_function, */
-       [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] = sha1_hmac_aes128cbc_dec,
-       [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] = sha256_hmac_aes128cbc_dec,
+       [CIPH_AES_CBC][AUTH_SHA1_HMAC][KEYL(128)] =
+               armv8_dec_aes_cbc_sha1_128,
+       [CIPH_AES_CBC][AUTH_SHA256_HMAC][KEYL(128)] =
+               armv8_dec_aes_cbc_sha256_128,
 };
 
 /**
@@ -155,13 +159,13 @@ crypto_key_sched_tbl_t[CRYPTO_CIPHER_MAX][CRYPTO_CIPHER_KEYLEN_MAX];
 static const crypto_key_sched_tbl_t
 crypto_key_sched_encrypt = {
        /* [cipher alg][key length] = key_expand_func, */
-       [CIPH_AES_CBC][KEYL(128)] = aes128_key_sched_enc,
+       [CIPH_AES_CBC][KEYL(128)] = armv8_expandkeys_enc_aes_cbc_128,
 };
 
 static const crypto_key_sched_tbl_t
 crypto_key_sched_decrypt = {
        /* [cipher alg][key length] = key_expand_func, */
-       [CIPH_AES_CBC][KEYL(128)] = aes128_key_sched_dec,
+       [CIPH_AES_CBC][KEYL(128)] = armv8_expandkeys_dec_aes_cbc_128,
 };
 
 /**
@@ -277,14 +281,16 @@ auth_set_prerequisites(struct armv8_crypto_session *sess,
                 * Calculate partial hash values for i_key_pad and o_key_pad.
                 * Will be used as initialization state for final HMAC.
                 */
-               error = sha1_block_partial(NULL, sess->auth.hmac.i_key_pad,
-                   partial, SHA1_BLOCK_SIZE);
+               error = armv8_sha1_block_partial(NULL,
+                               sess->auth.hmac.i_key_pad,
+                               partial, SHA1_BLOCK_SIZE);
                if (error != 0)
                        return -1;
                memcpy(sess->auth.hmac.i_key_pad, partial, SHA1_BLOCK_SIZE);
 
-               error = sha1_block_partial(NULL, sess->auth.hmac.o_key_pad,
-                   partial, SHA1_BLOCK_SIZE);
+               error = armv8_sha1_block_partial(NULL,
+                               sess->auth.hmac.o_key_pad,
+                               partial, SHA1_BLOCK_SIZE);
                if (error != 0)
                        return -1;
                memcpy(sess->auth.hmac.o_key_pad, partial, SHA1_BLOCK_SIZE);
@@ -310,14 +316,16 @@ auth_set_prerequisites(struct armv8_crypto_session *sess,
                 * Calculate partial hash values for i_key_pad and o_key_pad.
                 * Will be used as initialization state for final HMAC.
                 */
-               error = sha256_block_partial(NULL, sess->auth.hmac.i_key_pad,
-                   partial, SHA256_BLOCK_SIZE);
+               error = armv8_sha256_block_partial(NULL,
+                               sess->auth.hmac.i_key_pad,
+                               partial, SHA256_BLOCK_SIZE);
                if (error != 0)
                        return -1;
                memcpy(sess->auth.hmac.i_key_pad, partial, SHA256_BLOCK_SIZE);
 
-               error = sha256_block_partial(NULL, sess->auth.hmac.o_key_pad,
-                   partial, SHA256_BLOCK_SIZE);
+               error = armv8_sha256_block_partial(NULL,
+                               sess->auth.hmac.o_key_pad,
+                               partial, SHA256_BLOCK_SIZE);
                if (error != 0)
                        return -1;
                memcpy(sess->auth.hmac.o_key_pad, partial, SHA256_BLOCK_SIZE);
@@ -369,7 +377,16 @@ armv8_crypto_set_session_chained_parameters(struct armv8_crypto_session *sess,
        /* Select cipher key */
        sess->cipher.key.length = cipher_xform->cipher.key.length;
        /* Set cipher direction */
-       cop = sess->cipher.direction;
+       switch (sess->cipher.direction) {
+       case RTE_CRYPTO_CIPHER_OP_ENCRYPT:
+               cop = ARMV8_CRYPTO_CIPHER_OP_ENCRYPT;
+               break;
+       case RTE_CRYPTO_CIPHER_OP_DECRYPT:
+               cop = ARMV8_CRYPTO_CIPHER_OP_DECRYPT;
+               break;
+       default:
+               return -ENOTSUP;
+       }
        /* Set cipher algorithm */
        calg = cipher_xform->cipher.algo;
 
@@ -552,7 +569,7 @@ process_armv8_chained_op(struct armv8_crypto_qp *qp, struct rte_crypto_op *op,
                struct rte_mbuf *mbuf_src, struct rte_mbuf *mbuf_dst)
 {
        crypto_func_t crypto_func;
-       crypto_arg_t arg;
+       armv8_cipher_digest_t arg;
        struct rte_mbuf *m_asrc, *m_adst;
        uint8_t *csrc, *cdst;
        uint8_t *adst, *asrc;
@@ -775,9 +792,9 @@ cryptodev_armv8_crypto_create(const char *name,
        dev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO |
                        RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING |
                        RTE_CRYPTODEV_FF_CPU_NEON |
-                       RTE_CRYPTODEV_FF_CPU_ARM_CE;
+                       RTE_CRYPTODEV_FF_CPU_ARM_CE |
+                       RTE_CRYPTODEV_FF_SYM_SESSIONLESS;
 
-       /* Set vector instructions mode supported */
        internals = dev->data->dev_private;
 
        internals->max_nb_qpairs = init_params->max_nb_queue_pairs;