New upstream version 18.08
[deb_dpdk.git] / drivers / crypto / aesni_mb / rte_aesni_mb_pmd_private.h
index 948e091..70e9d18 100644 (file)
@@ -7,28 +7,26 @@
 
 #include "aesni_mb_ops.h"
 
+/*
+ * IMB_VERSION_NUM macro was introduced in version Multi-buffer 0.50,
+ * so if macro is not defined, it means that the version is 0.49.
+ */
+#if !defined(IMB_VERSION_NUM)
+#define IMB_VERSION(a, b, c) (((a) << 16) + ((b) << 8) + (c))
+#define IMB_VERSION_NUM IMB_VERSION(0, 49, 0)
+#endif
+
 #define CRYPTODEV_NAME_AESNI_MB_PMD    crypto_aesni_mb
 /**< AES-NI Multi buffer PMD device name */
 
-#define MB_LOG_ERR(fmt, args...) \
-       RTE_LOG(ERR, CRYPTODEV, "[%s] %s() line %u: " fmt "\n",  \
-                       RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD), \
-                       __func__, __LINE__, ## args)
-
-#ifdef RTE_LIBRTE_AESNI_MB_DEBUG
-#define MB_LOG_INFO(fmt, args...) \
-       RTE_LOG(INFO, CRYPTODEV, "[%s] %s() line %u: " fmt "\n", \
-                       CRYPTODEV_NAME_AESNI_MB_PMD, \
-                       __func__, __LINE__, ## args)
-
-#define MB_LOG_DBG(fmt, args...) \
-       RTE_LOG(DEBUG, CRYPTODEV, "[%s] %s() line %u: " fmt "\n", \
-                       CRYPTODEV_NAME_AESNI_MB_PMD, \
-                       __func__, __LINE__, ## args)
-#else
-#define MB_LOG_INFO(fmt, args...)
-#define MB_LOG_DBG(fmt, args...)
-#endif
+/** AESNI_MB PMD LOGTYPE DRIVER */
+int aesni_mb_logtype_driver;
+
+#define AESNI_MB_LOG(level, fmt, ...)  \
+       rte_log(RTE_LOG_ ## level, aesni_mb_logtype_driver,  \
+                       "%s() line %u: " fmt "\n", __func__, __LINE__,  \
+                                       ## __VA_ARGS__)
+
 
 #define HMAC_IPAD_VALUE                        (0x36)
 #define HMAC_OPAD_VALUE                        (0x5C)
@@ -66,8 +64,9 @@ static const unsigned auth_truncated_digest_byte_lengths[] = {
                [SHA_384]       = 24,
                [SHA_512]       = 32,
                [AES_XCBC]      = 12,
+               [AES_CMAC]      = 16,
                [AES_CCM]       = 8,
-               [NULL_HASH]     = 0
+               [NULL_HASH]     = 0
 };
 
 /**
@@ -91,7 +90,8 @@ static const unsigned auth_digest_byte_lengths[] = {
                [SHA_384]       = 48,
                [SHA_512]       = 64,
                [AES_XCBC]      = 16,
-               [NULL_HASH]     = 0
+               [AES_CMAC]      = 16,
+               [NULL_HASH]             = 0
 };
 
 /**
@@ -122,8 +122,6 @@ struct aesni_mb_private {
        /**< CPU vector instruction set mode */
        unsigned max_nb_queue_pairs;
        /**< Max number of queue pairs supported by device */
-       unsigned max_nb_sessions;
-       /**< Max number of sessions supported by device */
 };
 
 /** AESNI Multi buffer queue pair */
@@ -134,7 +132,7 @@ struct aesni_mb_qp {
        /**< Unique Queue Pair Name */
        const struct aesni_mb_op_fns *op_fns;
        /**< Vector mode dependent pointer table of the multi-buffer APIs */
-       MB_MGR mb_mgr;
+       MB_MGR *mb_mgr;
        /**< Multi-buffer instance */
        struct rte_ring *ingress_queue;
        /**< Ring for placing operations ready for processing */
@@ -171,12 +169,18 @@ struct aesni_mb_session {
 
                uint64_t key_length_in_bytes;
 
-               struct {
-                       uint32_t encode[60] __rte_aligned(16);
-                       /**< encode key */
-                       uint32_t decode[60] __rte_aligned(16);
-                       /**< decode key */
-               } expanded_aes_keys;
+               union {
+                       struct {
+                               uint32_t encode[60] __rte_aligned(16);
+                               /**< encode key */
+                               uint32_t decode[60] __rte_aligned(16);
+                               /**< decode key */
+                       } expanded_aes_keys;
+                       struct {
+                               const void *ks_ptr[3];
+                               uint64_t key[3][16];
+                       } exp_3des_keys;
+               };
                /**< Expanded AES keys - Allocating space to
                 * contain the maximum expanded key size which
                 * is 240 bytes for 256 bit AES, calculate by:
@@ -211,14 +215,24 @@ struct aesni_mb_session {
                            uint8_t k3[16] __rte_aligned(16);
                            /**< k3. */
                        } xcbc;
+
+                       struct {
+                               uint32_t expkey[60] __rte_aligned(16);
+                                                   /**< k1 (expanded key). */
+                               uint32_t skey1[4] __rte_aligned(16);
+                                                   /**< k2. */
+                               uint32_t skey2[4] __rte_aligned(16);
+                                                   /**< k3. */
+                       } cmac;
                        /**< Expanded XCBC authentication keys */
                };
+       /** digest size */
+       uint16_t digest_len;
+
        } auth;
        struct {
                /** AAD data length */
                uint16_t aad_len;
-               /** digest size */
-               uint16_t digest_len;
        } aead;
 } __rte_cache_aligned;