DPDK  25.11.0
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 
26 typedef 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 
49 struct rte_pmd_cnxk_crypto_qptr;
50 
56 struct 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
144 struct rte_pmd_cnxk_crypto_qptr *rte_pmd_cnxk_crypto_qptr_get(uint8_t dev_id, uint16_t qp_id);
145 
162 __rte_experimental
163 void rte_pmd_cnxk_crypto_submit(struct rte_pmd_cnxk_crypto_qptr *qptr, void *inst,
164  uint16_t nb_inst);
165 
186 __rte_experimental
187 int 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
201 struct rte_pmd_cnxk_crypto_cptr *rte_pmd_cnxk_crypto_cptr_get(
202  struct rte_pmd_cnxk_crypto_sess *rte_sess);
203 
225 __rte_experimental
226 int 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
252 int 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
270 int 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
289 const uint64_t *rte_pmd_cnxk_ae_fpm_table_get(uint8_t dev_id);
290 
310 __rte_experimental
312 rte_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 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 struct rte_pmd_cnxk_crypto_cptr * rte_pmd_cnxk_crypto_cptr_get(struct rte_pmd_cnxk_crypto_sess *rte_sess)
__rte_experimental void rte_pmd_cnxk_crypto_submit(struct rte_pmd_cnxk_crypto_qptr *qptr, void *inst, uint16_t nb_inst)
__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)
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