]>
Commit | Line | Data |
---|---|---|
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 | ||
394 | enum 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 */ |