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