New upstream version 18.02
[deb_dpdk.git] / drivers / net / octeontx / base / octeontx_pki_var.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2017 Cavium, Inc
3  */
4
5 #ifndef __OCTEONTX_PKI_VAR_H__
6 #define __OCTEONTX_PKI_VAR_H__
7
8 #include <rte_byteorder.h>
9
10 #define OCTTX_PACKET_WQE_SKIP           128
11 #define OCTTX_PACKET_FIRST_SKIP         240
12 #define OCTTX_PACKET_LATER_SKIP         128
13
14 /* WQE descriptor */
15 typedef union octtx_wqe_s {
16         uint64_t        w[6];
17
18         struct {
19 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
20                 struct {
21                         uint64_t        pknd : 6;
22                         uint64_t        rsvd0 : 10;
23                         uint64_t        style : 8;
24                         uint64_t        bufs : 8;
25                         uint64_t        chan : 12;
26                         uint64_t        apad : 3;
27                         uint64_t        rsvd1 : 1;
28                         uint64_t        aura : 12;
29                         uint64_t        rsvd2 : 4;
30                 } w0;
31
32                 struct {
33                         uint64_t        tag :   32;
34                         uint64_t        tt :    2;
35                         uint64_t        grp :   10;
36                         uint64_t        rsvd0 : 2;
37                         uint64_t        rsvd1 : 2;
38                         uint64_t        len :   16;
39                 } w1;
40
41                 struct {
42                         uint64_t        op_code : 8;
43                         uint64_t        err_lev : 3;
44                         uint64_t        raw     : 1;
45                         uint64_t        l2m     : 1;
46                         uint64_t        l2b     : 1;
47                         uint64_t        l3m     : 1;
48                         uint64_t        l3b     : 1;
49                         uint64_t        l3fr    : 1;
50                         uint64_t        pf1     : 1;
51                         uint64_t        pf2     : 1;
52                         uint64_t        pf3     : 1;
53                         uint64_t        pf4     : 1;
54                         uint64_t        sh      : 1;
55                         uint64_t        vs      : 1;
56                         uint64_t        vv      : 1;
57                         uint64_t        rsvd0   : 8;
58                         uint64_t        lae     : 1;
59                         uint64_t        lbty    : 5;
60                         uint64_t        lcty    : 5;
61                         uint64_t        ldty    : 5;
62                         uint64_t        lety    : 5;
63                         uint64_t        lfty    : 5;
64                         uint64_t        lgty    : 5;
65                         uint64_t        sw      : 1;
66                 } w2;
67
68                 struct {
69                         uint64_t        addr;   /* Byte addr of start-of-pkt */
70                 } w3;
71
72                 struct {
73                         uint64_t        laptr : 8;
74                         uint64_t        lbptr : 8;
75                         uint64_t        lcptr : 8;
76                         uint64_t        ldprt : 8;
77                         uint64_t        leptr : 8;
78                         uint64_t        lfptr : 8;
79                         uint64_t        lgptr : 8;
80                         uint64_t        vlptr : 8;
81                 } w4;
82
83                 struct {
84                         uint64_t        rsvd0 : 47;
85                         uint64_t        dwd : 1;
86                         uint64_t        size : 16;
87                 } w5;
88 #else
89                 struct {
90                         uint64_t        rsvd2 : 4;
91                         uint64_t        aura : 12;
92                         uint64_t        rsvd1 : 1;
93                         uint64_t        apad : 3;
94                         uint64_t        chan : 12;
95                         uint64_t        bufs : 8;
96                         uint64_t        style : 8;
97                         uint64_t        rsvd0 : 10;
98                         uint64_t        pknd : 6;
99                 } w0;
100
101                 struct {
102                         uint64_t        len :   16;
103                         uint64_t        rsvd1 : 2;
104                         uint64_t        rsvd0 : 2;
105                         uint64_t        grp :   10;
106                         uint64_t        tt :    2;
107                         uint64_t        tag :   32;
108                 } w1;
109
110                 struct {
111                         uint64_t        sw      : 1;
112                         uint64_t        lgty    : 5;
113                         uint64_t        lfty    : 5;
114                         uint64_t        lety    : 5;
115                         uint64_t        ldty    : 5;
116                         uint64_t        lcty    : 5;
117                         uint64_t        lbty    : 5;
118                         uint64_t        lae     : 1;
119                         uint64_t        rsvd0   : 8;
120                         uint64_t        vv      : 1;
121                         uint64_t        vs      : 1;
122                         uint64_t        sh      : 1;
123                         uint64_t        pf4     : 1;
124                         uint64_t        pf3     : 1;
125                         uint64_t        pf2     : 1;
126                         uint64_t        pf1     : 1;
127                         uint64_t        l3fr    : 1;
128                         uint64_t        l3b     : 1;
129                         uint64_t        l3m     : 1;
130                         uint64_t        l2b     : 1;
131                         uint64_t        l2m     : 1;
132                         uint64_t        raw     : 1;
133         uint64_t        err_lev : 3;
134                         uint64_t        op_code : 8;
135                 } w2;
136
137                 struct {
138                         uint64_t        addr;   /* Byte addr of start-of-pkt */
139                 } w3;
140
141                 struct {
142                         uint64_t        vlptr : 8;
143                         uint64_t        lgptr : 8;
144                         uint64_t        lfptr : 8;
145                         uint64_t        leptr : 8;
146                         uint64_t        ldprt : 8;
147                         uint64_t        lcptr : 8;
148                         uint64_t        lbptr : 8;
149                         uint64_t        laptr : 8;
150                 } w4;
151 #endif
152         } s;
153
154 } __rte_packed octtx_wqe_t;
155
156 enum occtx_pki_ltype_e {
157         OCCTX_PKI_LTYPE_NONE            = 0,
158         OCCTX_PKI_LTYPE_ENET            = 1,
159         OCCTX_PKI_LTYPE_VLAN            = 2,
160         OCCTX_PKI_LTYPE_SNAP_PAYLD      = 5,
161         OCCTX_PKI_LTYPE_ARP             = 6,
162         OCCTX_PKI_LTYPE_RARP            = 7,
163         OCCTX_PKI_LTYPE_IP4             = 8,
164         OCCTX_PKI_LTYPE_IP4_OPT         = 9,
165         OCCTX_PKI_LTYPE_IP6             = 0xa,
166         OCCTX_PKI_LTYPE_IP6_OPT         = 0xb,
167         OCCTX_PKI_LTYPE_IPSEC_ESP       = 0xc,
168         OCCTX_PKI_LTYPE_IPFRAG          = 0xd,
169         OCCTX_PKI_LTYPE_IPCOMP          = 0xe,
170         OCCTX_PKI_LTYPE_TCP             = 0x10,
171         OCCTX_PKI_LTYPE_UDP             = 0x11,
172         OCCTX_PKI_LTYPE_SCTP            = 0x12,
173         OCCTX_PKI_LTYPE_UDP_VXLAN       = 0x13,
174         OCCTX_PKI_LTYPE_GRE             = 0x14,
175         OCCTX_PKI_LTYPE_NVGRE           = 0x15,
176         OCCTX_PKI_LTYPE_GTP             = 0x16,
177         OCCTX_PKI_LTYPE_UDP_GENEVE      = 0x17,
178         OCCTX_PKI_LTYPE_SW28            = 0x1c,
179         OCCTX_PKI_LTYPE_SW29            = 0x1d,
180         OCCTX_PKI_LTYPE_SW30            = 0x1e,
181         OCCTX_PKI_LTYPE_SW31            = 0x1f,
182         OCCTX_PKI_LTYPE_LAST
183 };
184
185 enum lc_type_e {
186         LC_NONE         = OCCTX_PKI_LTYPE_NONE,
187         LC_IPV4         = OCCTX_PKI_LTYPE_IP4,
188         LC_IPV4_OPT     = OCCTX_PKI_LTYPE_IP4_OPT,
189         LC_IPV6         = OCCTX_PKI_LTYPE_IP6,
190         LC_IPV6_OPT     = OCCTX_PKI_LTYPE_IP6_OPT,
191 };
192
193 enum le_type_e {
194         LE_NONE         = OCCTX_PKI_LTYPE_NONE,
195 };
196
197 enum lf_type_e {
198         LF_NONE         = OCCTX_PKI_LTYPE_NONE,
199         LF_IPSEC_ESP    = OCCTX_PKI_LTYPE_IPSEC_ESP,
200         LF_IPFRAG       = OCCTX_PKI_LTYPE_IPFRAG,
201         LF_IPCOMP       = OCCTX_PKI_LTYPE_IPCOMP,
202         LF_TCP          = OCCTX_PKI_LTYPE_TCP,
203         LF_UDP          = OCCTX_PKI_LTYPE_UDP,
204         LF_GRE          = OCCTX_PKI_LTYPE_GRE,
205         LF_UDP_GENEVE   = OCCTX_PKI_LTYPE_UDP_GENEVE,
206         LF_UDP_VXLAN    = OCCTX_PKI_LTYPE_UDP_VXLAN,
207         LF_NVGRE        = OCCTX_PKI_LTYPE_NVGRE,
208 };
209 #endif /* __OCTEONTX_PKI_VAR_H__ */