Add crypto algo match.

Signed-off-by: Hanxiao Li <li.hanxiao@zte.com.cn>
---
 drivers/common/zsda/meson.build |  2 +-
 drivers/crypto/zsda/zsda_sym.c  | 49 +++++++++++++++++++++++++++++++++
 drivers/crypto/zsda/zsda_sym.h  | 20 ++++++++++++++
 3 files changed, 70 insertions(+), 1 deletion(-)
 create mode 100644 drivers/crypto/zsda/zsda_sym.c
 create mode 100644 drivers/crypto/zsda/zsda_sym.h

diff --git a/drivers/common/zsda/meson.build b/drivers/common/zsda/meson.build
index aa911ba4d5..9435cb6a18 100644
--- a/drivers/common/zsda/meson.build
+++ b/drivers/common/zsda/meson.build
@@ -30,7 +30,7 @@ zsda_crypto_path = 'crypto/zsda'
 zsda_crypto_relpath = '../../' + zsda_crypto_path
 if zsda_crypto
     libcrypto = dependency('libcrypto', required: false, method: 'pkg-config')
-    foreach f: ['zsda_sym_pmd.c', 'zsda_sym_session.c']
+    foreach f: ['zsda_sym_pmd.c', 'zsda_sym_session.c', 'zsda_sym.c']
         sources += files(join_paths(zsda_crypto_relpath, f))
     endforeach
     ext_deps += libcrypto
diff --git a/drivers/crypto/zsda/zsda_sym.c b/drivers/crypto/zsda/zsda_sym.c
new file mode 100644
index 0000000000..66590a1e35
--- /dev/null
+++ b/drivers/crypto/zsda/zsda_sym.c
@@ -0,0 +1,49 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2024 ZTE Corporation
+ */
+
+#include "zsda_sym.h"
+
+int
+zsda_encry_match(const void *op_in)
+{
+    const struct rte_crypto_op *op = op_in;
+    struct rte_cryptodev_sym_session *session = op->sym->session;
+    struct zsda_sym_session *sess =
+        (struct zsda_sym_session *)session->driver_priv_data;
+
+    if (sess->chain_order == ZSDA_SYM_CHAIN_ONLY_CIPHER &&
+        sess->cipher.op == RTE_CRYPTO_CIPHER_OP_ENCRYPT)
+        return 1;
+    else
+        return 0;
+}
+
+int
+zsda_decry_match(const void *op_in)
+{
+    const struct rte_crypto_op *op = op_in;
+    struct rte_cryptodev_sym_session *session = op->sym->session;
+    struct zsda_sym_session *sess =
+        (struct zsda_sym_session *)session->driver_priv_data;
+
+    if (sess->chain_order == ZSDA_SYM_CHAIN_ONLY_CIPHER &&
+        sess->cipher.op == RTE_CRYPTO_CIPHER_OP_DECRYPT)
+        return 1;
+    else
+        return 0;
+}
+
+int
+zsda_hash_match(const void *op_in)
+{
+    const struct rte_crypto_op *op = op_in;
+    struct rte_cryptodev_sym_session *session = op->sym->session;
+    struct zsda_sym_session *sess =
+        (struct zsda_sym_session *)session->driver_priv_data;
+
+    if (sess->chain_order == ZSDA_SYM_CHAIN_ONLY_AUTH)
+        return 1;
+    else
+        return 0;
+}
diff --git a/drivers/crypto/zsda/zsda_sym.h b/drivers/crypto/zsda/zsda_sym.h
new file mode 100644
index 0000000000..4e52958862
--- /dev/null
+++ b/drivers/crypto/zsda/zsda_sym.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2024 ZTE Corporation
+ */
+
+#ifndef _ZSDA_SYM_H_
+#define _ZSDA_SYM_H_
+
+#include "zsda_sym_pmd.h"
+
+__rte_unused int
+zsda_encry_match(const void *op_in);
+
+__rte_unused int
+zsda_decry_match(const void *op_in);
+
+__rte_unused int
+zsda_hash_match(const void *op_in);
+
+
+#endif /* _ZSDA_SYM_H_ */
-- 
2.27.0