DPDK 25.11.0-rc1
rte_pmd_cnxk_crypto.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(C) 2024 Marvell.
3 */
4
11#ifndef _PMD_CNXK_CRYPTO_H_
12#define _PMD_CNXK_CRYPTO_H_
13
14#include <stdbool.h>
15#include <stdint.h>
16
17#include <rte_compat.h>
18#include <rte_crypto.h>
19#include <rte_security.h>
20
21#define AE_EC_DATA_MAX 66
22
26typedef enum {
27 RTE_PMD_CNXK_AE_EC_ID_P192 = 0,
28 RTE_PMD_CNXK_AE_EC_ID_P224 = 1,
29 RTE_PMD_CNXK_AE_EC_ID_P256 = 2,
30 RTE_PMD_CNXK_AE_EC_ID_P384 = 3,
31 RTE_PMD_CNXK_AE_EC_ID_P521 = 4,
32 RTE_PMD_CNXK_AE_EC_ID_P160 = 5,
33 RTE_PMD_CNXK_AE_EC_ID_P320 = 6,
34 RTE_PMD_CNXK_AE_EC_ID_P512 = 7,
35 RTE_PMD_CNXK_AE_EC_ID_SM2 = 8,
36 RTE_PMD_CNXK_AE_EC_ID_ED25519 = 9,
37 RTE_PMD_CNXK_AE_EC_ID_ED448 = 10,
38 RTE_PMD_CNXK_AE_EC_ID_PMAX
40
41/* Forward declarations */
42
49struct rte_pmd_cnxk_crypto_qptr;
50
56struct rte_pmd_cnxk_crypto_cptr;
57
66 uint64_t ctx_enc_pkts;
68 uint64_t ctx_enc_bytes;
70 uint64_t ctx_dec_pkts;
72 uint64_t ctx_dec_bytes;
73};
74
87 union {
89 struct rte_security_session *sec_sess;
91 struct rte_cryptodev_sym_session *crypto_sym_sess;
93 struct rte_cryptodev_asym_session *crypto_asym_sess;
94 };
95};
96
107 struct {
108 /* P521 maximum length */
109 uint8_t data[AE_EC_DATA_MAX];
110 unsigned int length;
111 } prime;
112
113 struct {
114 /* P521 maximum length */
115 uint8_t data[AE_EC_DATA_MAX];
116 unsigned int length;
117 } order;
118
119 struct {
120 /* P521 maximum length */
121 uint8_t data[AE_EC_DATA_MAX];
122 unsigned int length;
123 } consta;
124
125 struct {
126 /* P521 maximum length */
127 uint8_t data[AE_EC_DATA_MAX];
128 unsigned int length;
129 } constb;
130};
131
143__rte_experimental
144struct rte_pmd_cnxk_crypto_qptr *rte_pmd_cnxk_crypto_qptr_get(uint8_t dev_id, uint16_t qp_id);
145
162__rte_experimental
163void rte_pmd_cnxk_crypto_submit(struct rte_pmd_cnxk_crypto_qptr *qptr, void *inst,
164 uint16_t nb_inst);
165
186__rte_experimental
187int rte_pmd_cnxk_crypto_cptr_flush(struct rte_pmd_cnxk_crypto_qptr *qptr,
188 struct rte_pmd_cnxk_crypto_cptr *cptr,
189 bool invalidate);
190
200__rte_experimental
201struct rte_pmd_cnxk_crypto_cptr *rte_pmd_cnxk_crypto_cptr_get(
202 struct rte_pmd_cnxk_crypto_sess *rte_sess);
203
225__rte_experimental
226int rte_pmd_cnxk_crypto_cptr_read(struct rte_pmd_cnxk_crypto_qptr *qptr,
227 struct rte_pmd_cnxk_crypto_cptr *cptr, void *data,
228 uint32_t len);
229
251__rte_experimental
252int rte_pmd_cnxk_crypto_cptr_write(struct rte_pmd_cnxk_crypto_qptr *qptr,
253 struct rte_pmd_cnxk_crypto_cptr *cptr, void *data,
254 uint32_t len);
255
269__rte_experimental
270int rte_pmd_cnxk_crypto_qp_stats_get(struct rte_pmd_cnxk_crypto_qptr *qptr,
271 struct rte_pmd_cnxk_crypto_qp_stats *stats);
272
288__rte_experimental
289const uint64_t *rte_pmd_cnxk_ae_fpm_table_get(uint8_t dev_id);
290
310__rte_experimental
312rte_pmd_cnxk_ae_ec_grp_table_get(uint8_t dev_id, uint16_t *nb_max_entries);
313
314#endif /* _PMD_CNXK_CRYPTO_H_ */
rte_crypto_op_sess_type
Definition: rte_crypto.h:61
rte_crypto_op_type
Definition: rte_crypto.h:28
__rte_experimental int rte_pmd_cnxk_crypto_qp_stats_get(struct rte_pmd_cnxk_crypto_qptr *qptr, struct rte_pmd_cnxk_crypto_qp_stats *stats)
rte_pmd_cnxk_ae_ec_id
__rte_experimental struct rte_pmd_cnxk_crypto_qptr * rte_pmd_cnxk_crypto_qptr_get(uint8_t dev_id, uint16_t qp_id)
__rte_experimental const uint64_t * rte_pmd_cnxk_ae_fpm_table_get(uint8_t dev_id)
__rte_experimental int rte_pmd_cnxk_crypto_cptr_flush(struct rte_pmd_cnxk_crypto_qptr *qptr, struct rte_pmd_cnxk_crypto_cptr *cptr, bool invalidate)
__rte_experimental void rte_pmd_cnxk_crypto_submit(struct rte_pmd_cnxk_crypto_qptr *qptr, void *inst, uint16_t nb_inst)
__rte_experimental const struct rte_pmd_cnxk_crypto_ae_ec_group_params ** rte_pmd_cnxk_ae_ec_grp_table_get(uint8_t dev_id, uint16_t *nb_max_entries)
__rte_experimental int rte_pmd_cnxk_crypto_cptr_read(struct rte_pmd_cnxk_crypto_qptr *qptr, struct rte_pmd_cnxk_crypto_cptr *cptr, void *data, uint32_t len)
__rte_experimental int rte_pmd_cnxk_crypto_cptr_write(struct rte_pmd_cnxk_crypto_qptr *qptr, struct rte_pmd_cnxk_crypto_cptr *cptr, void *data, uint32_t len)
__rte_experimental struct rte_pmd_cnxk_crypto_cptr * rte_pmd_cnxk_crypto_cptr_get(struct rte_pmd_cnxk_crypto_sess *rte_sess)
AE EC (Elliptic Curve) group parameters structure.
Crypto CNXK queue pair stats.
Crypto CNXK PMD session structure.
enum rte_crypto_op_sess_type sess_type
struct rte_cryptodev_asym_session * crypto_asym_sess
struct rte_cryptodev_sym_session * crypto_sym_sess
enum rte_crypto_op_type op_type
struct rte_security_session * sec_sess