1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(C) 2021 Marvell.
5 #ifndef _CNXK_CRYPTODEV_OPS_H_
6 #define _CNXK_CRYPTODEV_OPS_H_
8 #include <rte_cryptodev.h>
12 #define CNXK_CPT_MIN_HEADROOM_REQ 24
14 struct cpt_qp_meta_info {
15 struct rte_mempool *pool;
23 CNXK_CPT_CIPHER_ENC_AUTH_GEN,
24 CNXK_CPT_AUTH_VRFY_CIPHER_DEC,
25 CNXK_CPT_AUTH_GEN_CIPHER_ENC,
26 CNXK_CPT_CIPHER_DEC_AUTH_VRFY
29 struct cpt_inflight_req {
31 struct rte_crypto_op *cop;
36 struct pending_queue {
37 /** Pending requests count */
38 uint64_t pending_count;
39 /** Array of pending requests */
40 struct cpt_inflight_req *req_queue;
41 /** Tail of queue to be used for enqueue */
43 /** Head of queue to be used for dequeue */
45 /** Timeout to track h/w being unresponsive */
52 struct pending_queue pend_q;
54 struct rte_mempool *sess_mp;
55 /**< Session mempool */
56 struct rte_mempool *sess_mp_priv;
57 /**< Session private data mempool */
58 struct cpt_qp_meta_info meta_info;
59 /**< Metabuf info required to support operations on the queue pair */
60 struct roc_cpt_lmtline lmtline;
61 /**< Lmtline information */
64 int cnxk_cpt_dev_config(struct rte_cryptodev *dev,
65 struct rte_cryptodev_config *conf);
67 int cnxk_cpt_dev_start(struct rte_cryptodev *dev);
69 void cnxk_cpt_dev_stop(struct rte_cryptodev *dev);
71 int cnxk_cpt_dev_close(struct rte_cryptodev *dev);
73 void cnxk_cpt_dev_info_get(struct rte_cryptodev *dev,
74 struct rte_cryptodev_info *info);
76 int cnxk_cpt_queue_pair_setup(struct rte_cryptodev *dev, uint16_t qp_id,
77 const struct rte_cryptodev_qp_conf *conf,
78 int socket_id __rte_unused);
80 int cnxk_cpt_queue_pair_release(struct rte_cryptodev *dev, uint16_t qp_id);
82 unsigned int cnxk_cpt_sym_session_get_size(struct rte_cryptodev *dev);
84 int cnxk_cpt_sym_session_configure(struct rte_cryptodev *dev,
85 struct rte_crypto_sym_xform *xform,
86 struct rte_cryptodev_sym_session *sess,
87 struct rte_mempool *pool);
89 int sym_session_configure(struct roc_cpt *roc_cpt, int driver_id,
90 struct rte_crypto_sym_xform *xform,
91 struct rte_cryptodev_sym_session *sess,
92 struct rte_mempool *pool);
94 void cnxk_cpt_sym_session_clear(struct rte_cryptodev *dev,
95 struct rte_cryptodev_sym_session *sess);
97 void sym_session_clear(int driver_id, struct rte_cryptodev_sym_session *sess);
99 #endif /* _CNXK_CRYPTODEV_OPS_H_ */