crypto/nitrox: add software queue management
[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 rid {
15         struct nitrox_softreq *sr;
16 };
17
18 struct nitrox_qp {
19         struct rid *ridq;
20         uint32_t count;
21         uint32_t head;
22         uint32_t tail;
23         struct rte_mempool *sr_mp;
24         struct rte_cryptodev_stats stats;
25         uint16_t qno;
26         rte_atomic16_t pending_count;
27 };
28
29 static inline bool
30 nitrox_qp_is_empty(struct nitrox_qp *qp)
31 {
32         return (rte_atomic16_read(&qp->pending_count) == 0);
33 }
34
35 int nitrox_qp_setup(struct nitrox_qp *qp, uint8_t *bar_addr,
36                     const char *dev_name, uint32_t nb_descriptors,
37                     uint8_t inst_size, int socket_id);
38 int nitrox_qp_release(struct nitrox_qp *qp, uint8_t *bar_addr);
39
40 #endif /* _NITROX_QP_H_ */