net/sfc: check mbufs allocated using mempool API for Rx
[dpdk.git] / drivers / crypto / aesni_mb / aesni_mb_ops.h
index 5a1cba6..d224b72 100644 (file)
 
 #include <intel-ipsec-mb.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
+
 enum aesni_mb_vector_mode {
        RTE_AESNI_MB_NOT_SUPPORTED = 0,
        RTE_AESNI_MB_SSE,
@@ -88,6 +97,16 @@ struct aesni_mb_op_fns {
                        /**< AES CMAC key expansions */
                } keyexp;
                /**< Key expansion functions */
+#if IMB_VERSION_NUM >= IMB_VERSION(0, 50, 0)
+               struct {
+                       hash_fn_t sha1;
+                       hash_fn_t sha224;
+                       hash_fn_t sha256;
+                       hash_fn_t sha384;
+                       hash_fn_t sha512;
+               } multi_block;
+               /** multi block hash functions */
+#endif
        } aux;
        /**< Auxiliary functions */
 };
@@ -104,7 +123,13 @@ static const struct aesni_mb_op_fns job_ops[] = {
                                },
                                .keyexp = {
                                        NULL
+                               },
+#if IMB_VERSION_NUM >= IMB_VERSION(0, 50, 0)
+                               .multi_block = {
+                                       NULL
                                }
+#endif
+
                        }
                },
                [RTE_AESNI_MB_SSE] = {
@@ -131,7 +156,16 @@ static const struct aesni_mb_op_fns job_ops[] = {
                                        aes_xcbc_expand_key_sse,
                                        aes_cmac_subkey_gen_sse,
                                        aes_keyexp_128_enc_sse
+                               },
+#if IMB_VERSION_NUM >= IMB_VERSION(0, 50, 0)
+                               .multi_block = {
+                                       sha1_sse,
+                                       sha224_sse,
+                                       sha256_sse,
+                                       sha384_sse,
+                                       sha512_sse
                                }
+#endif
                        }
                },
                [RTE_AESNI_MB_AVX] = {
@@ -158,7 +192,16 @@ static const struct aesni_mb_op_fns job_ops[] = {
                                        aes_xcbc_expand_key_avx,
                                        aes_cmac_subkey_gen_avx,
                                        aes_keyexp_128_enc_avx
+                               },
+#if IMB_VERSION_NUM >= IMB_VERSION(0, 50, 0)
+                               .multi_block = {
+                                       sha1_avx,
+                                       sha224_avx,
+                                       sha256_avx,
+                                       sha384_avx,
+                                       sha512_avx
                                }
+#endif
                        }
                },
                [RTE_AESNI_MB_AVX2] = {
@@ -185,7 +228,16 @@ static const struct aesni_mb_op_fns job_ops[] = {
                                        aes_xcbc_expand_key_avx2,
                                        aes_cmac_subkey_gen_avx2,
                                        aes_keyexp_128_enc_avx2
+                               },
+#if IMB_VERSION_NUM >= IMB_VERSION(0, 50, 0)
+                               .multi_block = {
+                                       sha1_avx2,
+                                       sha224_avx2,
+                                       sha256_avx2,
+                                       sha384_avx2,
+                                       sha512_avx2
                                }
+#endif
                        }
                },
                [RTE_AESNI_MB_AVX512] = {
@@ -212,7 +264,16 @@ static const struct aesni_mb_op_fns job_ops[] = {
                                        aes_xcbc_expand_key_avx512,
                                        aes_cmac_subkey_gen_avx512,
                                        aes_keyexp_128_enc_avx512
+                               },
+#if IMB_VERSION_NUM >= IMB_VERSION(0, 50, 0)
+                               .multi_block = {
+                                       sha1_avx512,
+                                       sha224_avx512,
+                                       sha256_avx512,
+                                       sha384_avx512,
+                                       sha512_avx512
                                }
+#endif
                        }
                }
 };