]> git.proxmox.com Git - ceph.git/blame - ceph/src/spdk/dpdk/drivers/net/dpaa2/mc/fsl_net.h
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / dpdk / drivers / net / dpaa2 / mc / fsl_net.h
CommitLineData
11fdf7f2
TL
1/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
2 *
3 * Copyright 2013-2015 Freescale Semiconductor Inc.
f67539c2 4 * Copyright 2018-2019 NXP
11fdf7f2
TL
5 *
6 */
f67539c2 7
11fdf7f2
TL
8#ifndef __FSL_NET_H
9#define __FSL_NET_H
10
11#define LAST_HDR_INDEX 0xFFFFFFFF
12
13/*****************************************************************************/
14/* Protocol fields */
15/*****************************************************************************/
16
17/************************* Ethernet fields *********************************/
18#define NH_FLD_ETH_DA (1)
19#define NH_FLD_ETH_SA (NH_FLD_ETH_DA << 1)
20#define NH_FLD_ETH_LENGTH (NH_FLD_ETH_DA << 2)
21#define NH_FLD_ETH_TYPE (NH_FLD_ETH_DA << 3)
22#define NH_FLD_ETH_FINAL_CKSUM (NH_FLD_ETH_DA << 4)
23#define NH_FLD_ETH_PADDING (NH_FLD_ETH_DA << 5)
24#define NH_FLD_ETH_ALL_FIELDS ((NH_FLD_ETH_DA << 6) - 1)
25
26#define NH_FLD_ETH_ADDR_SIZE 6
27
28/*************************** VLAN fields ***********************************/
29#define NH_FLD_VLAN_VPRI (1)
30#define NH_FLD_VLAN_CFI (NH_FLD_VLAN_VPRI << 1)
31#define NH_FLD_VLAN_VID (NH_FLD_VLAN_VPRI << 2)
32#define NH_FLD_VLAN_LENGTH (NH_FLD_VLAN_VPRI << 3)
33#define NH_FLD_VLAN_TYPE (NH_FLD_VLAN_VPRI << 4)
34#define NH_FLD_VLAN_ALL_FIELDS ((NH_FLD_VLAN_VPRI << 5) - 1)
35
36#define NH_FLD_VLAN_TCI (NH_FLD_VLAN_VPRI | \
37 NH_FLD_VLAN_CFI | \
38 NH_FLD_VLAN_VID)
39
40/************************ IP (generic) fields ******************************/
41#define NH_FLD_IP_VER (1)
42#define NH_FLD_IP_DSCP (NH_FLD_IP_VER << 2)
43#define NH_FLD_IP_ECN (NH_FLD_IP_VER << 3)
44#define NH_FLD_IP_PROTO (NH_FLD_IP_VER << 4)
45#define NH_FLD_IP_SRC (NH_FLD_IP_VER << 5)
46#define NH_FLD_IP_DST (NH_FLD_IP_VER << 6)
47#define NH_FLD_IP_TOS_TC (NH_FLD_IP_VER << 7)
48#define NH_FLD_IP_ID (NH_FLD_IP_VER << 8)
49#define NH_FLD_IP_ALL_FIELDS ((NH_FLD_IP_VER << 9) - 1)
50
51#define NH_FLD_IP_PROTO_SIZE 1
52
53/***************************** IPV4 fields *********************************/
54#define NH_FLD_IPV4_VER (1)
55#define NH_FLD_IPV4_HDR_LEN (NH_FLD_IPV4_VER << 1)
56#define NH_FLD_IPV4_TOS (NH_FLD_IPV4_VER << 2)
57#define NH_FLD_IPV4_TOTAL_LEN (NH_FLD_IPV4_VER << 3)
58#define NH_FLD_IPV4_ID (NH_FLD_IPV4_VER << 4)
59#define NH_FLD_IPV4_FLAG_D (NH_FLD_IPV4_VER << 5)
60#define NH_FLD_IPV4_FLAG_M (NH_FLD_IPV4_VER << 6)
61#define NH_FLD_IPV4_OFFSET (NH_FLD_IPV4_VER << 7)
62#define NH_FLD_IPV4_TTL (NH_FLD_IPV4_VER << 8)
63#define NH_FLD_IPV4_PROTO (NH_FLD_IPV4_VER << 9)
64#define NH_FLD_IPV4_CKSUM (NH_FLD_IPV4_VER << 10)
65#define NH_FLD_IPV4_SRC_IP (NH_FLD_IPV4_VER << 11)
66#define NH_FLD_IPV4_DST_IP (NH_FLD_IPV4_VER << 12)
67#define NH_FLD_IPV4_OPTS (NH_FLD_IPV4_VER << 13)
68#define NH_FLD_IPV4_OPTS_COUNT (NH_FLD_IPV4_VER << 14)
69#define NH_FLD_IPV4_ALL_FIELDS ((NH_FLD_IPV4_VER << 15) - 1)
70
71#define NH_FLD_IPV4_ADDR_SIZE 4
72#define NH_FLD_IPV4_PROTO_SIZE 1
73
74/***************************** IPV6 fields *********************************/
75#define NH_FLD_IPV6_VER (1)
76#define NH_FLD_IPV6_TC (NH_FLD_IPV6_VER << 1)
77#define NH_FLD_IPV6_SRC_IP (NH_FLD_IPV6_VER << 2)
78#define NH_FLD_IPV6_DST_IP (NH_FLD_IPV6_VER << 3)
79#define NH_FLD_IPV6_NEXT_HDR (NH_FLD_IPV6_VER << 4)
80#define NH_FLD_IPV6_FL (NH_FLD_IPV6_VER << 5)
81#define NH_FLD_IPV6_HOP_LIMIT (NH_FLD_IPV6_VER << 6)
82#define NH_FLD_IPV6_ID (NH_FLD_IPV6_VER << 7)
83#define NH_FLD_IPV6_ALL_FIELDS ((NH_FLD_IPV6_VER << 8) - 1)
84
85#define NH_FLD_IPV6_ADDR_SIZE 16
86#define NH_FLD_IPV6_NEXT_HDR_SIZE 1
87
88/***************************** ICMP fields *********************************/
89#define NH_FLD_ICMP_TYPE (1)
90#define NH_FLD_ICMP_CODE (NH_FLD_ICMP_TYPE << 1)
91#define NH_FLD_ICMP_CKSUM (NH_FLD_ICMP_TYPE << 2)
92#define NH_FLD_ICMP_ID (NH_FLD_ICMP_TYPE << 3)
93#define NH_FLD_ICMP_SQ_NUM (NH_FLD_ICMP_TYPE << 4)
94#define NH_FLD_ICMP_ALL_FIELDS ((NH_FLD_ICMP_TYPE << 5) - 1)
95
96#define NH_FLD_ICMP_CODE_SIZE 1
97#define NH_FLD_ICMP_TYPE_SIZE 1
98
99/***************************** IGMP fields *********************************/
100#define NH_FLD_IGMP_VERSION (1)
101#define NH_FLD_IGMP_TYPE (NH_FLD_IGMP_VERSION << 1)
102#define NH_FLD_IGMP_CKSUM (NH_FLD_IGMP_VERSION << 2)
103#define NH_FLD_IGMP_DATA (NH_FLD_IGMP_VERSION << 3)
104#define NH_FLD_IGMP_ALL_FIELDS ((NH_FLD_IGMP_VERSION << 4) - 1)
105
106/***************************** TCP fields **********************************/
107#define NH_FLD_TCP_PORT_SRC (1)
108#define NH_FLD_TCP_PORT_DST (NH_FLD_TCP_PORT_SRC << 1)
109#define NH_FLD_TCP_SEQ (NH_FLD_TCP_PORT_SRC << 2)
110#define NH_FLD_TCP_ACK (NH_FLD_TCP_PORT_SRC << 3)
111#define NH_FLD_TCP_OFFSET (NH_FLD_TCP_PORT_SRC << 4)
112#define NH_FLD_TCP_FLAGS (NH_FLD_TCP_PORT_SRC << 5)
113#define NH_FLD_TCP_WINDOW (NH_FLD_TCP_PORT_SRC << 6)
114#define NH_FLD_TCP_CKSUM (NH_FLD_TCP_PORT_SRC << 7)
115#define NH_FLD_TCP_URGPTR (NH_FLD_TCP_PORT_SRC << 8)
116#define NH_FLD_TCP_OPTS (NH_FLD_TCP_PORT_SRC << 9)
117#define NH_FLD_TCP_OPTS_COUNT (NH_FLD_TCP_PORT_SRC << 10)
118#define NH_FLD_TCP_ALL_FIELDS ((NH_FLD_TCP_PORT_SRC << 11) - 1)
119
120#define NH_FLD_TCP_PORT_SIZE 2
121
122/***************************** UDP fields **********************************/
123#define NH_FLD_UDP_PORT_SRC (1)
124#define NH_FLD_UDP_PORT_DST (NH_FLD_UDP_PORT_SRC << 1)
125#define NH_FLD_UDP_LEN (NH_FLD_UDP_PORT_SRC << 2)
126#define NH_FLD_UDP_CKSUM (NH_FLD_UDP_PORT_SRC << 3)
127#define NH_FLD_UDP_ALL_FIELDS ((NH_FLD_UDP_PORT_SRC << 4) - 1)
128
129#define NH_FLD_UDP_PORT_SIZE 2
130
131/*************************** UDP-lite fields *******************************/
132#define NH_FLD_UDP_LITE_PORT_SRC (1)
133#define NH_FLD_UDP_LITE_PORT_DST (NH_FLD_UDP_LITE_PORT_SRC << 1)
134#define NH_FLD_UDP_LITE_ALL_FIELDS \
135 ((NH_FLD_UDP_LITE_PORT_SRC << 2) - 1)
136
137#define NH_FLD_UDP_LITE_PORT_SIZE 2
138
139/*************************** UDP-encap-ESP fields **************************/
140#define NH_FLD_UDP_ENC_ESP_PORT_SRC (1)
141#define NH_FLD_UDP_ENC_ESP_PORT_DST (NH_FLD_UDP_ENC_ESP_PORT_SRC << 1)
142#define NH_FLD_UDP_ENC_ESP_LEN (NH_FLD_UDP_ENC_ESP_PORT_SRC << 2)
143#define NH_FLD_UDP_ENC_ESP_CKSUM (NH_FLD_UDP_ENC_ESP_PORT_SRC << 3)
144#define NH_FLD_UDP_ENC_ESP_SPI (NH_FLD_UDP_ENC_ESP_PORT_SRC << 4)
145#define NH_FLD_UDP_ENC_ESP_SEQUENCE_NUM (NH_FLD_UDP_ENC_ESP_PORT_SRC << 5)
146#define NH_FLD_UDP_ENC_ESP_ALL_FIELDS \
147 ((NH_FLD_UDP_ENC_ESP_PORT_SRC << 6) - 1)
148
149#define NH_FLD_UDP_ENC_ESP_PORT_SIZE 2
150#define NH_FLD_UDP_ENC_ESP_SPI_SIZE 4
151
152/***************************** SCTP fields *********************************/
153#define NH_FLD_SCTP_PORT_SRC (1)
154#define NH_FLD_SCTP_PORT_DST (NH_FLD_SCTP_PORT_SRC << 1)
155#define NH_FLD_SCTP_VER_TAG (NH_FLD_SCTP_PORT_SRC << 2)
156#define NH_FLD_SCTP_CKSUM (NH_FLD_SCTP_PORT_SRC << 3)
157#define NH_FLD_SCTP_ALL_FIELDS ((NH_FLD_SCTP_PORT_SRC << 4) - 1)
158
159#define NH_FLD_SCTP_PORT_SIZE 2
160
161/***************************** DCCP fields *********************************/
162#define NH_FLD_DCCP_PORT_SRC (1)
163#define NH_FLD_DCCP_PORT_DST (NH_FLD_DCCP_PORT_SRC << 1)
164#define NH_FLD_DCCP_ALL_FIELDS ((NH_FLD_DCCP_PORT_SRC << 2) - 1)
165
166#define NH_FLD_DCCP_PORT_SIZE 2
167
168/***************************** IPHC fields *********************************/
169#define NH_FLD_IPHC_CID (1)
170#define NH_FLD_IPHC_CID_TYPE (NH_FLD_IPHC_CID << 1)
171#define NH_FLD_IPHC_HCINDEX (NH_FLD_IPHC_CID << 2)
172#define NH_FLD_IPHC_GEN (NH_FLD_IPHC_CID << 3)
173#define NH_FLD_IPHC_D_BIT (NH_FLD_IPHC_CID << 4)
174#define NH_FLD_IPHC_ALL_FIELDS ((NH_FLD_IPHC_CID << 5) - 1)
175
176/***************************** SCTP fields *********************************/
177#define NH_FLD_SCTP_CHUNK_DATA_TYPE (1)
178#define NH_FLD_SCTP_CHUNK_DATA_FLAGS (NH_FLD_SCTP_CHUNK_DATA_TYPE << 1)
179#define NH_FLD_SCTP_CHUNK_DATA_LENGTH (NH_FLD_SCTP_CHUNK_DATA_TYPE << 2)
180#define NH_FLD_SCTP_CHUNK_DATA_TSN (NH_FLD_SCTP_CHUNK_DATA_TYPE << 3)
181#define NH_FLD_SCTP_CHUNK_DATA_STREAM_ID (NH_FLD_SCTP_CHUNK_DATA_TYPE << 4)
182#define NH_FLD_SCTP_CHUNK_DATA_STREAM_SQN (NH_FLD_SCTP_CHUNK_DATA_TYPE << 5)
183#define NH_FLD_SCTP_CHUNK_DATA_PAYLOAD_PID (NH_FLD_SCTP_CHUNK_DATA_TYPE << 6)
184#define NH_FLD_SCTP_CHUNK_DATA_UNORDERED (NH_FLD_SCTP_CHUNK_DATA_TYPE << 7)
9f95a23c 185#define NH_FLD_SCTP_CHUNK_DATA_BEGGINING (NH_FLD_SCTP_CHUNK_DATA_TYPE << 8)
11fdf7f2
TL
186#define NH_FLD_SCTP_CHUNK_DATA_END (NH_FLD_SCTP_CHUNK_DATA_TYPE << 9)
187#define NH_FLD_SCTP_CHUNK_DATA_ALL_FIELDS \
188 ((NH_FLD_SCTP_CHUNK_DATA_TYPE << 10) - 1)
189
190/*************************** L2TPV2 fields *********************************/
191#define NH_FLD_L2TPV2_TYPE_BIT (1)
192#define NH_FLD_L2TPV2_LENGTH_BIT (NH_FLD_L2TPV2_TYPE_BIT << 1)
193#define NH_FLD_L2TPV2_SEQUENCE_BIT (NH_FLD_L2TPV2_TYPE_BIT << 2)
194#define NH_FLD_L2TPV2_OFFSET_BIT (NH_FLD_L2TPV2_TYPE_BIT << 3)
195#define NH_FLD_L2TPV2_PRIORITY_BIT (NH_FLD_L2TPV2_TYPE_BIT << 4)
196#define NH_FLD_L2TPV2_VERSION (NH_FLD_L2TPV2_TYPE_BIT << 5)
197#define NH_FLD_L2TPV2_LEN (NH_FLD_L2TPV2_TYPE_BIT << 6)
198#define NH_FLD_L2TPV2_TUNNEL_ID (NH_FLD_L2TPV2_TYPE_BIT << 7)
199#define NH_FLD_L2TPV2_SESSION_ID (NH_FLD_L2TPV2_TYPE_BIT << 8)
200#define NH_FLD_L2TPV2_NS (NH_FLD_L2TPV2_TYPE_BIT << 9)
201#define NH_FLD_L2TPV2_NR (NH_FLD_L2TPV2_TYPE_BIT << 10)
202#define NH_FLD_L2TPV2_OFFSET_SIZE (NH_FLD_L2TPV2_TYPE_BIT << 11)
203#define NH_FLD_L2TPV2_FIRST_BYTE (NH_FLD_L2TPV2_TYPE_BIT << 12)
204#define NH_FLD_L2TPV2_ALL_FIELDS \
205 ((NH_FLD_L2TPV2_TYPE_BIT << 13) - 1)
206
207/*************************** L2TPV3 fields *********************************/
208#define NH_FLD_L2TPV3_CTRL_TYPE_BIT (1)
209#define NH_FLD_L2TPV3_CTRL_LENGTH_BIT (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 1)
210#define NH_FLD_L2TPV3_CTRL_SEQUENCE_BIT (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 2)
211#define NH_FLD_L2TPV3_CTRL_VERSION (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 3)
212#define NH_FLD_L2TPV3_CTRL_LENGTH (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 4)
213#define NH_FLD_L2TPV3_CTRL_CONTROL (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 5)
214#define NH_FLD_L2TPV3_CTRL_SENT (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 6)
215#define NH_FLD_L2TPV3_CTRL_RECV (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 7)
216#define NH_FLD_L2TPV3_CTRL_FIRST_BYTE (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 8)
217#define NH_FLD_L2TPV3_CTRL_ALL_FIELDS \
218 ((NH_FLD_L2TPV3_CTRL_TYPE_BIT << 9) - 1)
219
220#define NH_FLD_L2TPV3_SESS_TYPE_BIT (1)
221#define NH_FLD_L2TPV3_SESS_VERSION (NH_FLD_L2TPV3_SESS_TYPE_BIT << 1)
222#define NH_FLD_L2TPV3_SESS_ID (NH_FLD_L2TPV3_SESS_TYPE_BIT << 2)
223#define NH_FLD_L2TPV3_SESS_COOKIE (NH_FLD_L2TPV3_SESS_TYPE_BIT << 3)
224#define NH_FLD_L2TPV3_SESS_ALL_FIELDS \
225 ((NH_FLD_L2TPV3_SESS_TYPE_BIT << 4) - 1)
226
227/**************************** PPP fields ***********************************/
228#define NH_FLD_PPP_PID (1)
229#define NH_FLD_PPP_COMPRESSED (NH_FLD_PPP_PID << 1)
230#define NH_FLD_PPP_ALL_FIELDS ((NH_FLD_PPP_PID << 2) - 1)
231
232/************************** PPPoE fields ***********************************/
233#define NH_FLD_PPPOE_VER (1)
234#define NH_FLD_PPPOE_TYPE (NH_FLD_PPPOE_VER << 1)
235#define NH_FLD_PPPOE_CODE (NH_FLD_PPPOE_VER << 2)
236#define NH_FLD_PPPOE_SID (NH_FLD_PPPOE_VER << 3)
237#define NH_FLD_PPPOE_LEN (NH_FLD_PPPOE_VER << 4)
238#define NH_FLD_PPPOE_SESSION (NH_FLD_PPPOE_VER << 5)
239#define NH_FLD_PPPOE_PID (NH_FLD_PPPOE_VER << 6)
240#define NH_FLD_PPPOE_ALL_FIELDS ((NH_FLD_PPPOE_VER << 7) - 1)
241
242/************************* PPP-Mux fields **********************************/
243#define NH_FLD_PPPMUX_PID (1)
244#define NH_FLD_PPPMUX_CKSUM (NH_FLD_PPPMUX_PID << 1)
245#define NH_FLD_PPPMUX_COMPRESSED (NH_FLD_PPPMUX_PID << 2)
246#define NH_FLD_PPPMUX_ALL_FIELDS ((NH_FLD_PPPMUX_PID << 3) - 1)
247
248/*********************** PPP-Mux sub-frame fields **************************/
249#define NH_FLD_PPPMUX_SUBFRM_PFF (1)
250#define NH_FLD_PPPMUX_SUBFRM_LXT (NH_FLD_PPPMUX_SUBFRM_PFF << 1)
251#define NH_FLD_PPPMUX_SUBFRM_LEN (NH_FLD_PPPMUX_SUBFRM_PFF << 2)
252#define NH_FLD_PPPMUX_SUBFRM_PID (NH_FLD_PPPMUX_SUBFRM_PFF << 3)
253#define NH_FLD_PPPMUX_SUBFRM_USE_PID (NH_FLD_PPPMUX_SUBFRM_PFF << 4)
254#define NH_FLD_PPPMUX_SUBFRM_ALL_FIELDS \
255 ((NH_FLD_PPPMUX_SUBFRM_PFF << 5) - 1)
256
257/*************************** LLC fields ************************************/
258#define NH_FLD_LLC_DSAP (1)
259#define NH_FLD_LLC_SSAP (NH_FLD_LLC_DSAP << 1)
260#define NH_FLD_LLC_CTRL (NH_FLD_LLC_DSAP << 2)
261#define NH_FLD_LLC_ALL_FIELDS ((NH_FLD_LLC_DSAP << 3) - 1)
262
263/*************************** NLPID fields **********************************/
264#define NH_FLD_NLPID_NLPID (1)
265#define NH_FLD_NLPID_ALL_FIELDS ((NH_FLD_NLPID_NLPID << 1) - 1)
266
267/*************************** SNAP fields ***********************************/
268#define NH_FLD_SNAP_OUI (1)
269#define NH_FLD_SNAP_PID (NH_FLD_SNAP_OUI << 1)
270#define NH_FLD_SNAP_ALL_FIELDS ((NH_FLD_SNAP_OUI << 2) - 1)
271
272/*************************** LLC SNAP fields *******************************/
273#define NH_FLD_LLC_SNAP_TYPE (1)
274#define NH_FLD_LLC_SNAP_ALL_FIELDS ((NH_FLD_LLC_SNAP_TYPE << 1) - 1)
275
276#define NH_FLD_ARP_HTYPE (1)
277#define NH_FLD_ARP_PTYPE (NH_FLD_ARP_HTYPE << 1)
278#define NH_FLD_ARP_HLEN (NH_FLD_ARP_HTYPE << 2)
279#define NH_FLD_ARP_PLEN (NH_FLD_ARP_HTYPE << 3)
280#define NH_FLD_ARP_OPER (NH_FLD_ARP_HTYPE << 4)
281#define NH_FLD_ARP_SHA (NH_FLD_ARP_HTYPE << 5)
282#define NH_FLD_ARP_SPA (NH_FLD_ARP_HTYPE << 6)
283#define NH_FLD_ARP_THA (NH_FLD_ARP_HTYPE << 7)
284#define NH_FLD_ARP_TPA (NH_FLD_ARP_HTYPE << 8)
285#define NH_FLD_ARP_ALL_FIELDS ((NH_FLD_ARP_HTYPE << 9) - 1)
286
287/*************************** RFC2684 fields ********************************/
288#define NH_FLD_RFC2684_LLC (1)
289#define NH_FLD_RFC2684_NLPID (NH_FLD_RFC2684_LLC << 1)
290#define NH_FLD_RFC2684_OUI (NH_FLD_RFC2684_LLC << 2)
291#define NH_FLD_RFC2684_PID (NH_FLD_RFC2684_LLC << 3)
292#define NH_FLD_RFC2684_VPN_OUI (NH_FLD_RFC2684_LLC << 4)
293#define NH_FLD_RFC2684_VPN_IDX (NH_FLD_RFC2684_LLC << 5)
294#define NH_FLD_RFC2684_ALL_FIELDS ((NH_FLD_RFC2684_LLC << 6) - 1)
295
296/*************************** User defined fields ***************************/
297#define NH_FLD_USER_DEFINED_SRCPORT (1)
298#define NH_FLD_USER_DEFINED_PCDID (NH_FLD_USER_DEFINED_SRCPORT << 1)
299#define NH_FLD_USER_DEFINED_ALL_FIELDS \
300 ((NH_FLD_USER_DEFINED_SRCPORT << 2) - 1)
301
302/*************************** Payload fields ********************************/
303#define NH_FLD_PAYLOAD_BUFFER (1)
304#define NH_FLD_PAYLOAD_SIZE (NH_FLD_PAYLOAD_BUFFER << 1)
305#define NH_FLD_MAX_FRM_SIZE (NH_FLD_PAYLOAD_BUFFER << 2)
306#define NH_FLD_MIN_FRM_SIZE (NH_FLD_PAYLOAD_BUFFER << 3)
307#define NH_FLD_PAYLOAD_TYPE (NH_FLD_PAYLOAD_BUFFER << 4)
308#define NH_FLD_FRAME_SIZE (NH_FLD_PAYLOAD_BUFFER << 5)
309#define NH_FLD_PAYLOAD_ALL_FIELDS ((NH_FLD_PAYLOAD_BUFFER << 6) - 1)
310
311/*************************** GRE fields ************************************/
312#define NH_FLD_GRE_TYPE (1)
313#define NH_FLD_GRE_ALL_FIELDS ((NH_FLD_GRE_TYPE << 1) - 1)
314
315/*************************** MINENCAP fields *******************************/
316#define NH_FLD_MINENCAP_SRC_IP (1)
317#define NH_FLD_MINENCAP_DST_IP (NH_FLD_MINENCAP_SRC_IP << 1)
318#define NH_FLD_MINENCAP_TYPE (NH_FLD_MINENCAP_SRC_IP << 2)
319#define NH_FLD_MINENCAP_ALL_FIELDS \
320 ((NH_FLD_MINENCAP_SRC_IP << 3) - 1)
321
322/*************************** IPSEC AH fields *******************************/
323#define NH_FLD_IPSEC_AH_SPI (1)
324#define NH_FLD_IPSEC_AH_NH (NH_FLD_IPSEC_AH_SPI << 1)
325#define NH_FLD_IPSEC_AH_ALL_FIELDS ((NH_FLD_IPSEC_AH_SPI << 2) - 1)
326
327/*************************** IPSEC ESP fields ******************************/
328#define NH_FLD_IPSEC_ESP_SPI (1)
329#define NH_FLD_IPSEC_ESP_SEQUENCE_NUM (NH_FLD_IPSEC_ESP_SPI << 1)
330#define NH_FLD_IPSEC_ESP_ALL_FIELDS ((NH_FLD_IPSEC_ESP_SPI << 2) - 1)
331
332#define NH_FLD_IPSEC_ESP_SPI_SIZE 4
333
334/*************************** MPLS fields ***********************************/
335#define NH_FLD_MPLS_LABEL_STACK (1)
336#define NH_FLD_MPLS_LABEL_STACK_ALL_FIELDS \
337 ((NH_FLD_MPLS_LABEL_STACK << 1) - 1)
338
339/*************************** MACSEC fields *********************************/
340#define NH_FLD_MACSEC_SECTAG (1)
341#define NH_FLD_MACSEC_ALL_FIELDS ((NH_FLD_MACSEC_SECTAG << 1) - 1)
342
343/*************************** GTP fields ************************************/
344#define NH_FLD_GTP_TEID (1)
345
346/* Protocol options */
347
348/* Ethernet options */
349#define NH_OPT_ETH_BROADCAST 1
350#define NH_OPT_ETH_MULTICAST 2
351#define NH_OPT_ETH_UNICAST 3
352#define NH_OPT_ETH_BPDU 4
353
354#define NH_ETH_IS_MULTICAST_ADDR(addr) (addr[0] & 0x01)
355/* also applicable for broadcast */
356
357/* VLAN options */
358#define NH_OPT_VLAN_CFI 1
359
360/* IPV4 options */
361#define NH_OPT_IPV4_UNICAST 1
362#define NH_OPT_IPV4_MULTICAST 2
363#define NH_OPT_IPV4_BROADCAST 3
364#define NH_OPT_IPV4_OPTION 4
365#define NH_OPT_IPV4_FRAG 5
366#define NH_OPT_IPV4_INITIAL_FRAG 6
367
368/* IPV6 options */
369#define NH_OPT_IPV6_UNICAST 1
370#define NH_OPT_IPV6_MULTICAST 2
371#define NH_OPT_IPV6_OPTION 3
372#define NH_OPT_IPV6_FRAG 4
373#define NH_OPT_IPV6_INITIAL_FRAG 5
374
375/* General IP options (may be used for any version) */
376#define NH_OPT_IP_FRAG 1
377#define NH_OPT_IP_INITIAL_FRAG 2
378#define NH_OPT_IP_OPTION 3
379
380/* Minenc. options */
381#define NH_OPT_MINENCAP_SRC_ADDR_PRESENT 1
382
383/* GRE. options */
384#define NH_OPT_GRE_ROUTING_PRESENT 1
385
386/* TCP options */
387#define NH_OPT_TCP_OPTIONS 1
388#define NH_OPT_TCP_CONTROL_HIGH_BITS 2
389#define NH_OPT_TCP_CONTROL_LOW_BITS 3
390
391/* CAPWAP options */
392#define NH_OPT_CAPWAP_DTLS 1
393
394enum net_prot {
395 NET_PROT_NONE = 0,
396 NET_PROT_PAYLOAD,
397 NET_PROT_ETH,
398 NET_PROT_VLAN,
399 NET_PROT_IPV4,
400 NET_PROT_IPV6,
401 NET_PROT_IP,
402 NET_PROT_TCP,
403 NET_PROT_UDP,
404 NET_PROT_UDP_LITE,
405 NET_PROT_IPHC,
406 NET_PROT_SCTP,
407 NET_PROT_SCTP_CHUNK_DATA,
408 NET_PROT_PPPOE,
409 NET_PROT_PPP,
410 NET_PROT_PPPMUX,
411 NET_PROT_PPPMUX_SUBFRM,
412 NET_PROT_L2TPV2,
413 NET_PROT_L2TPV3_CTRL,
414 NET_PROT_L2TPV3_SESS,
415 NET_PROT_LLC,
416 NET_PROT_LLC_SNAP,
417 NET_PROT_NLPID,
418 NET_PROT_SNAP,
419 NET_PROT_MPLS,
420 NET_PROT_IPSEC_AH,
421 NET_PROT_IPSEC_ESP,
422 NET_PROT_UDP_ENC_ESP, /* RFC 3948 */
423 NET_PROT_MACSEC,
424 NET_PROT_GRE,
425 NET_PROT_MINENCAP,
426 NET_PROT_DCCP,
427 NET_PROT_ICMP,
428 NET_PROT_IGMP,
429 NET_PROT_ARP,
430 NET_PROT_CAPWAP_DATA,
431 NET_PROT_CAPWAP_CTRL,
432 NET_PROT_RFC2684,
433 NET_PROT_ICMPV6,
434 NET_PROT_FCOE,
435 NET_PROT_FIP,
436 NET_PROT_ISCSI,
437 NET_PROT_GTP,
438 NET_PROT_USER_DEFINED_L2,
439 NET_PROT_USER_DEFINED_L3,
440 NET_PROT_USER_DEFINED_L4,
441 NET_PROT_USER_DEFINED_L5,
442 NET_PROT_USER_DEFINED_SHIM1,
443 NET_PROT_USER_DEFINED_SHIM2,
444
445 NET_PROT_DUMMY_LAST
446};
447
448/*! IEEE8021.Q */
449#define NH_IEEE8021Q_ETYPE 0x8100
450#define NH_IEEE8021Q_HDR(etype, pcp, dei, vlan_id) \
451 ((((uint32_t)(etype & 0xFFFF)) << 16) | \
452 (((uint32_t)(pcp & 0x07)) << 13) | \
453 (((uint32_t)(dei & 0x01)) << 12) | \
454 (((uint32_t)(vlan_id & 0xFFF))))
455
456#endif /* __FSL_NET_H */