xref: /dpdk/drivers/common/cpt/cpt_common.h (revision 68a03efeed657e6e05f281479b33b51102797e15)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Cavium, Inc
3  */
4 
5 #ifndef _CPT_COMMON_H_
6 #define _CPT_COMMON_H_
7 
8 #include <rte_mempool.h>
9 
10 /*
11  * This file defines common macros and structs
12  */
13 
14 #define TIME_IN_RESET_COUNT	5
15 
16 /* Default command timeout in seconds */
17 #define DEFAULT_COMMAND_TIMEOUT	4
18 
19 #define CPT_COUNT_THOLD		32
20 #define CPT_TIMER_THOLD		0x3F
21 
22 #define MOD_INC(i, l)   ((i) == (l - 1) ? (i) = 0 : (i)++)
23 
24 struct cpt_qp_meta_info {
25 	struct rte_mempool *pool;
26 	int sg_mlen;
27 	int lb_mlen;
28 };
29 
30 /*
31  * Pending queue structure
32  *
33  */
34 struct pending_queue {
35 	/** Pending requests count */
36 	uint64_t pending_count;
37 	/** Array of pending requests */
38 	uintptr_t *req_queue;
39 	/** Tail of queue to be used for enqueue */
40 	uint16_t enq_tail;
41 	/** Head of queue to be used for dequeue */
42 	uint16_t deq_head;
43 };
44 
45 struct cpt_request_info {
46 	/** Data path fields */
47 	uint64_t comp_baddr;
48 	volatile uint64_t *completion_addr;
49 	volatile uint64_t *alternate_caddr;
50 	void *op;
51 	struct {
52 		uint64_t ei0;
53 		uint64_t ei1;
54 		uint64_t ei2;
55 	} ist;
56 	uint8_t *rptr;
57 	const struct otx2_cpt_qp *qp;
58 
59 	/** Control path fields */
60 	uint64_t time_out;
61 	uint8_t extra_time;
62 } __rte_aligned(8);
63 
64 #endif /* _CPT_COMMON_H_ */
65