0244c4dbf4e32537fc3a6d7ec7a05ea057fd7e37
[dpdk.git] / drivers / crypto / nitrox / nitrox_qp.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2019 Marvell International Ltd.
3  */
4
5 #ifndef _NITROX_QP_H_
6 #define _NITROX_QP_H_
7
8 #include <stdbool.h>
9
10 #include <rte_io.h>
11
12 struct nitrox_softreq;
13
14 struct command_queue {
15         const struct rte_memzone *mz;
16         uint8_t *dbell_csr_addr;
17         uint8_t *ring;
18         uint8_t instr_size;
19 };
20
21 struct rid {
22         struct nitrox_softreq *sr;
23 };
24
25 struct nitrox_qp {
26         struct command_queue cmdq;
27         struct rid *ridq;
28         uint32_t count;
29         uint32_t head;
30         uint32_t tail;
31         struct rte_mempool *sr_mp;
32         struct rte_cryptodev_stats stats;
33         uint16_t qno;
34         rte_atomic16_t pending_count;
35 };
36
37 static inline bool
38 nitrox_qp_is_empty(struct nitrox_qp *qp)
39 {
40         return (rte_atomic16_read(&qp->pending_count) == 0);
41 }
42
43 int nitrox_qp_setup(struct nitrox_qp *qp, uint8_t *bar_addr,
44                     const char *dev_name, uint32_t nb_descriptors,
45                     uint8_t inst_size, int socket_id);
46 int nitrox_qp_release(struct nitrox_qp *qp, uint8_t *bar_addr);
47
48 #endif /* _NITROX_QP_H_ */