1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2018 Advanced Micro Devices, Inc. All rights reserved.
5 #ifndef _CCP_PMD_PRIVATE_H_
6 #define _CCP_PMD_PRIVATE_H_
8 #include <rte_cryptodev.h>
9 #include "ccp_crypto.h"
11 #define CRYPTODEV_NAME_CCP_PMD crypto_ccp
13 #define CCP_LOG_ERR(fmt, args...) \
14 RTE_LOG(ERR, CRYPTODEV, "[%s] %s() line %u: " fmt "\n", \
15 RTE_STR(CRYPTODEV_NAME_CCP_PMD), \
16 __func__, __LINE__, ## args)
18 #ifdef RTE_LIBRTE_CCP_DEBUG
19 #define CCP_LOG_INFO(fmt, args...) \
20 RTE_LOG(INFO, CRYPTODEV, "[%s] %s() line %u: " fmt "\n", \
21 RTE_STR(CRYPTODEV_NAME_CCP_PMD), \
22 __func__, __LINE__, ## args)
24 #define CCP_LOG_DBG(fmt, args...) \
25 RTE_LOG(DEBUG, CRYPTODEV, "[%s] %s() line %u: " fmt "\n", \
26 RTE_STR(CRYPTODEV_NAME_CCP_PMD), \
27 __func__, __LINE__, ## args)
29 #define CCP_LOG_INFO(fmt, args...)
30 #define CCP_LOG_DBG(fmt, args...)
33 /**< Maximum queue pairs supported by CCP PMD */
34 #define CCP_PMD_MAX_QUEUE_PAIRS 8
35 #define CCP_NB_MAX_DESCRIPTORS 1024
36 #define CCP_MAX_BURST 256
40 /* private data structure for each CCP crypto device */
42 unsigned int max_nb_qpairs
; /**< Max number of queue pairs */
43 uint8_t crypto_num_dev
; /**< Number of working crypto devices */
44 bool auth_opt
; /**< Authentication offload option */
45 struct ccp_device
*last_dev
; /**< Last working crypto device */
49 struct ccp_batch_info
{
50 struct rte_crypto_op
*op
[CCP_MAX_BURST
];
51 /**< optable populated at enque time from app*/
54 struct ccp_queue
*cmd_q
;
56 uint16_t total_nb_ops
;
57 /**< no. of crypto ops in batch*/
59 /**< no. of ccp queue descriptors*/
61 /**< ccp queue head tail offsets time of enqueue*/
63 uint8_t lsb_buf
[CCP_SB_BYTES
* CCP_MAX_BURST
];
64 phys_addr_t lsb_buf_phys
;
65 /**< LSB intermediate buf for passthru */
68 /**< auth only ops batch for CPU based auth */
69 } __rte_cache_aligned
;
71 /**< CCP crypto queue pair */
74 /**< Queue Pair Identifier */
75 char name
[RTE_CRYPTODEV_NAME_MAX_LEN
];
76 /**< Unique Queue Pair Name */
77 struct rte_ring
*processed_pkts
;
78 /**< Ring for placing process packets */
79 struct rte_mempool
*sess_mp
;
80 /**< Session Mempool */
81 struct rte_mempool
*sess_mp_priv
;
82 /**< Session Private Data Mempool */
83 struct rte_mempool
*batch_mp
;
84 /**< Session Mempool for batch info */
85 struct rte_cryptodev_stats qp_stats
;
86 /**< Queue pair statistics */
87 struct ccp_batch_info
*b_info
;
88 /**< Store ops pulled out of queue */
89 struct rte_cryptodev
*dev
;
90 /**< rte crypto device to which this qp belongs */
91 uint8_t temp_digest
[DIGEST_LENGTH_MAX
];
92 /**< Buffer used to store the digest generated
93 * by the driver when verifying a digest provided
94 * by the user (using authentication verify operation)
96 } __rte_cache_aligned
;
99 /**< device specific operations function pointer structure */
100 extern struct rte_cryptodev_ops
*ccp_pmd_ops
;
103 ccp_cpu_pmd_enqueue_burst(void *queue_pair
,
104 struct rte_crypto_op
**ops
,
107 ccp_cpu_pmd_dequeue_burst(void *queue_pair
,
108 struct rte_crypto_op
**ops
,
111 #endif /* _CCP_PMD_PRIVATE_H_ */