common/cnxk: support profile statistics
[dpdk.git] / drivers / common / cnxk / roc_ae.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2021 Marvell.
3  */
4
5 #ifndef __ROC_AE_H__
6 #define __ROC_AE_H__
7
8 /* AE opcodes */
9 #define ROC_AE_MAJOR_OP_MODEX        0x03
10 #define ROC_AE_MAJOR_OP_ECDSA        0x04
11 #define ROC_AE_MAJOR_OP_ECC          0x05
12 #define ROC_AE_MINOR_OP_MODEX        0x01
13 #define ROC_AE_MINOR_OP_PKCS_ENC     0x02
14 #define ROC_AE_MINOR_OP_PKCS_ENC_CRT 0x03
15 #define ROC_AE_MINOR_OP_PKCS_DEC     0x04
16 #define ROC_AE_MINOR_OP_PKCS_DEC_CRT 0x05
17 #define ROC_AE_MINOR_OP_MODEX_CRT    0x06
18 #define ROC_AE_MINOR_OP_ECDSA_SIGN   0x01
19 #define ROC_AE_MINOR_OP_ECDSA_VERIFY 0x02
20 #define ROC_AE_MINOR_OP_ECC_UMP      0x03
21
22 /**
23  * Enumeration roc_ae_ec_id
24  *
25  * Enumerates supported elliptic curves
26  */
27 typedef enum {
28         ROC_AE_EC_ID_P192 = 0,
29         ROC_AE_EC_ID_P224 = 1,
30         ROC_AE_EC_ID_P256 = 2,
31         ROC_AE_EC_ID_P384 = 3,
32         ROC_AE_EC_ID_P521 = 4,
33         ROC_AE_EC_ID_P160 = 5,
34         ROC_AE_EC_ID_P320 = 6,
35         ROC_AE_EC_ID_P512 = 7,
36         ROC_AE_EC_ID_PMAX = 8
37 } roc_ae_ec_id;
38
39 /* Prime and order fields of built-in elliptic curves */
40 struct roc_ae_ec_group {
41         struct {
42                 /* P521 maximum length */
43                 uint8_t data[66];
44                 unsigned int length;
45         } prime;
46
47         struct {
48                 /* P521 maximum length */
49                 uint8_t data[66];
50                 unsigned int length;
51         } order;
52
53         struct {
54                 /* P521 maximum length */
55                 uint8_t data[66];
56                 unsigned int length;
57         } consta;
58
59         struct {
60                 /* P521 maximum length */
61                 uint8_t data[66];
62                 unsigned int length;
63         } constb;
64 };
65
66 struct roc_ae_ec_ctx {
67         /* Prime length defined by microcode for EC operations */
68         uint8_t curveid;
69 };
70
71 /* Buffer pointer */
72 struct roc_ae_buf_ptr {
73         void *vaddr;
74 };
75
76 int __roc_api roc_ae_ec_grp_get(struct roc_ae_ec_group **tbl);
77 void __roc_api roc_ae_ec_grp_put(void);
78 #endif /* __ROC_AE_H__ */