xref: /dpdk/drivers/net/dpaa/fmlib/net_ext.h (revision 2ffc1057f072442ecba3873fb59d76dfb2011e9e)
1 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
2  * Copyright 2008-2012 Freescale Semiconductor Inc.
3  * Copyright 2017-2019 NXP
4  */
5 
6 #ifndef __NET_EXT_H
7 #define __NET_EXT_H
8 
9 #include "ncsw_ext.h"
10 
11 /*
12  * @Description		This file contains common and general netcomm headers
13  *			definitions.
14  */
15 
16 typedef uint8_t ioc_header_field_ppp_t;
17 
18 #define IOC_NET_HF_PPP_PID		(1)
19 #define IOC_NET_HF_PPP_COMPRESSED	(IOC_NET_HF_PPP_PID << 1)
20 #define IOC_NET_HF_PPP_ALL_FIELDS	((IOC_NET_HF_PPP_PID << 2) - 1)
21 
22 typedef uint8_t ioc_header_field_pppoe_t;
23 
24 #define ioc_net_hf_pppo_e_ver		(1)
25 #define ioc_net_hf_pppo_e_type		(ioc_net_hf_pppo_e_ver << 1)
26 #define ioc_net_hf_pppo_e_code		(ioc_net_hf_pppo_e_ver << 2)
27 #define ioc_net_hf_pppo_e_sid		(ioc_net_hf_pppo_e_ver << 3)
28 #define ioc_net_hf_pppo_e_len		(ioc_net_hf_pppo_e_ver << 4)
29 #define ioc_net_hf_pppo_e_session	(ioc_net_hf_pppo_e_ver << 5)
30 #define ioc_net_hf_pppo_e_pid		(ioc_net_hf_pppo_e_ver << 6)
31 #define ioc_net_hf_pppo_e_all_fields	((ioc_net_hf_pppo_e_ver << 7) - 1)
32 
33 #define IOC_NET_HF_PPPMUX_PID		(1)
34 #define IOC_NET_HF_PPPMUX_CKSUM		(IOC_NET_HF_PPPMUX_PID << 1)
35 #define IOC_NET_HF_PPPMUX_COMPRESSED	(IOC_NET_HF_PPPMUX_PID << 2)
36 #define IOC_NET_HF_PPPMUX_ALL_FIELDS	((IOC_NET_HF_PPPMUX_PID << 3) - 1)
37 
38 #define IOC_NET_HF_PPPMUX_SUBFRAME_PFF	(1)
39 #define IOC_NET_HF_PPPMUX_SUBFRAME_LXT	(IOC_NET_HF_PPPMUX_SUBFRAME_PFF << 1)
40 #define IOC_NET_HF_PPPMUX_SUBFRAME_LEN	(IOC_NET_HF_PPPMUX_SUBFRAME_PFF << 2)
41 #define IOC_NET_HF_PPPMUX_SUBFRAME_PID	(IOC_NET_HF_PPPMUX_SUBFRAME_PFF << 3)
42 #define IOC_NET_HF_PPPMUX_SUBFRAME_USE_PID \
43 		(IOC_NET_HF_PPPMUX_SUBFRAME_PFF << 4)
44 #define IOC_NET_HF_PPPMUX_SUBFRAME_ALL_FIELDS \
45 		((IOC_NET_HF_PPPMUX_SUBFRAME_PFF << 5) - 1)
46 
47 typedef uint8_t ioc_header_field_eth_t;
48 
49 #define IOC_NET_HF_ETH_DA		(1)
50 #define IOC_NET_HF_ETH_SA		(IOC_NET_HF_ETH_DA << 1)
51 #define IOC_NET_HF_ETH_LENGTH		(IOC_NET_HF_ETH_DA << 2)
52 #define IOC_NET_HF_ETH_TYPE		(IOC_NET_HF_ETH_DA << 3)
53 #define IOC_NET_HF_ETH_FINAL_CKSUM	(IOC_NET_HF_ETH_DA << 4)
54 #define IOC_NET_HF_ETH_PADDING		(IOC_NET_HF_ETH_DA << 5)
55 #define IOC_NET_HF_ETH_ALL_FIELDS	((IOC_NET_HF_ETH_DA << 6) - 1)
56 
57 #define IOC_NET_HF_ETH_ADDR_SIZE	6
58 
59 typedef uint16_t ioc_header_field_ip_t;
60 
61 #define IOC_NET_HF_IP_VER		(1)
62 #define IOC_NET_HF_IP_DSCP		(IOC_NET_HF_IP_VER << 2)
63 #define IOC_NET_HF_IP_ECN		(IOC_NET_HF_IP_VER << 3)
64 #define IOC_NET_HF_IP_PROTO		(IOC_NET_HF_IP_VER << 4)
65 
66 #define IOC_NET_HF_IP_PROTO_SIZE	1
67 
68 typedef uint16_t ioc_header_field_ipv4_t;
69 
70 #define ioc_net_hf_ipv_4_ver		(1)
71 #define ioc_net_hf_ipv_4_hdr_len		(ioc_net_hf_ipv_4_ver << 1)
72 #define ioc_net_hf_ipv_4_tos		(ioc_net_hf_ipv_4_ver << 2)
73 #define ioc_net_hf_ipv_4_total_len	(ioc_net_hf_ipv_4_ver << 3)
74 #define ioc_net_hf_ipv_4_id		(ioc_net_hf_ipv_4_ver << 4)
75 #define ioc_net_hf_ipv_4_flag_d		(ioc_net_hf_ipv_4_ver << 5)
76 #define ioc_net_hf_ipv_4_flag_m		(ioc_net_hf_ipv_4_ver << 6)
77 #define ioc_net_hf_ipv_4_offset		(ioc_net_hf_ipv_4_ver << 7)
78 #define ioc_net_hf_ipv_4_ttl		(ioc_net_hf_ipv_4_ver << 8)
79 #define ioc_net_hf_ipv_4_proto		(ioc_net_hf_ipv_4_ver << 9)
80 #define ioc_net_hf_ipv_4_cksum		(ioc_net_hf_ipv_4_ver << 10)
81 #define ioc_net_hf_ipv_4_src_ip		(ioc_net_hf_ipv_4_ver << 11)
82 #define ioc_net_hf_ipv_4_dst_ip		(ioc_net_hf_ipv_4_ver << 12)
83 #define ioc_net_hf_ipv_4_opts		(ioc_net_hf_ipv_4_ver << 13)
84 #define ioc_net_hf_ipv_4_opts_COUNT	(ioc_net_hf_ipv_4_ver << 14)
85 #define ioc_net_hf_ipv_4_all_fields	((ioc_net_hf_ipv_4_ver << 15) - 1)
86 
87 #define ioc_net_hf_ipv_4_addr_size	4
88 #define ioc_net_hf_ipv_4_proto_SIZE	1
89 
90 typedef uint8_t ioc_header_field_ipv6_t;
91 
92 #define ioc_net_hf_ipv_6_ver		(1)
93 #define ioc_net_hf_ipv_6_tc		(ioc_net_hf_ipv_6_ver << 1)
94 #define ioc_net_hf_ipv_6_src_ip		(ioc_net_hf_ipv_6_ver << 2)
95 #define ioc_net_hf_ipv_6_dst_ip		(ioc_net_hf_ipv_6_ver << 3)
96 #define ioc_net_hf_ipv_6_next_hdr	(ioc_net_hf_ipv_6_ver << 4)
97 #define ioc_net_hf_ipv_6_fl		(ioc_net_hf_ipv_6_ver << 5)
98 #define ioc_net_hf_ipv_6_hop_limit	(ioc_net_hf_ipv_6_ver << 6)
99 #define ioc_net_hf_ipv_6_all_fields	((ioc_net_hf_ipv_6_ver << 7) - 1)
100 
101 #define ioc_net_hf_ipv6_addr_size	16
102 #define ioc_net_hf_ipv_6_next_hdr_SIZE	1
103 
104 #define IOC_NET_HF_ICMP_TYPE		(1)
105 #define IOC_NET_HF_ICMP_CODE		(IOC_NET_HF_ICMP_TYPE << 1)
106 #define IOC_NET_HF_ICMP_CKSUM		(IOC_NET_HF_ICMP_TYPE << 2)
107 #define IOC_NET_HF_ICMP_ID		(IOC_NET_HF_ICMP_TYPE << 3)
108 #define IOC_NET_HF_ICMP_SQ_NUM		(IOC_NET_HF_ICMP_TYPE << 4)
109 #define IOC_NET_HF_ICMP_ALL_FIELDS	((IOC_NET_HF_ICMP_TYPE << 5) - 1)
110 
111 #define IOC_NET_HF_ICMP_CODE_SIZE	1
112 #define IOC_NET_HF_ICMP_TYPE_SIZE	1
113 
114 #define IOC_NET_HF_IGMP_VERSION		(1)
115 #define IOC_NET_HF_IGMP_TYPE		(IOC_NET_HF_IGMP_VERSION << 1)
116 #define IOC_NET_HF_IGMP_CKSUM		(IOC_NET_HF_IGMP_VERSION << 2)
117 #define IOC_NET_HF_IGMP_DATA		(IOC_NET_HF_IGMP_VERSION << 3)
118 #define IOC_NET_HF_IGMP_ALL_FIELDS	((IOC_NET_HF_IGMP_VERSION << 4) - 1)
119 
120 typedef uint16_t ioc_header_field_tcp_t;
121 
122 #define IOC_NET_HF_TCP_PORT_SRC		(1)
123 #define IOC_NET_HF_TCP_PORT_DST		(IOC_NET_HF_TCP_PORT_SRC << 1)
124 #define IOC_NET_HF_TCP_SEQ		(IOC_NET_HF_TCP_PORT_SRC << 2)
125 #define IOC_NET_HF_TCP_ACK		(IOC_NET_HF_TCP_PORT_SRC << 3)
126 #define IOC_NET_HF_TCP_OFFSET		(IOC_NET_HF_TCP_PORT_SRC << 4)
127 #define IOC_NET_HF_TCP_FLAGS		(IOC_NET_HF_TCP_PORT_SRC << 5)
128 #define IOC_NET_HF_TCP_WINDOW		(IOC_NET_HF_TCP_PORT_SRC << 6)
129 #define IOC_NET_HF_TCP_CKSUM		(IOC_NET_HF_TCP_PORT_SRC << 7)
130 #define IOC_NET_HF_TCP_URGPTR		(IOC_NET_HF_TCP_PORT_SRC << 8)
131 #define IOC_NET_HF_TCP_OPTS		(IOC_NET_HF_TCP_PORT_SRC << 9)
132 #define IOC_NET_HF_TCP_OPTS_COUNT	(IOC_NET_HF_TCP_PORT_SRC << 10)
133 #define IOC_NET_HF_TCP_ALL_FIELDS	((IOC_NET_HF_TCP_PORT_SRC << 11) - 1)
134 
135 #define IOC_NET_HF_TCP_PORT_SIZE	2
136 
137 typedef uint8_t ioc_header_field_sctp_t;
138 
139 #define IOC_NET_HF_SCTP_PORT_SRC	(1)
140 #define IOC_NET_HF_SCTP_PORT_DST	(IOC_NET_HF_SCTP_PORT_SRC << 1)
141 #define IOC_NET_HF_SCTP_VER_TAG		(IOC_NET_HF_SCTP_PORT_SRC << 2)
142 #define IOC_NET_HF_SCTP_CKSUM		(IOC_NET_HF_SCTP_PORT_SRC << 3)
143 #define IOC_NET_HF_SCTP_ALL_FIELDS	((IOC_NET_HF_SCTP_PORT_SRC << 4) - 1)
144 
145 #define IOC_NET_HF_SCTP_PORT_SIZE	2
146 
147 typedef uint8_t ioc_header_field_dccp_t;
148 
149 #define IOC_NET_HF_DCCP_PORT_SRC	(1)
150 #define IOC_NET_HF_DCCP_PORT_DST	(IOC_NET_HF_DCCP_PORT_SRC << 1)
151 #define IOC_NET_HF_DCCP_ALL_FIELDS	((IOC_NET_HF_DCCP_PORT_SRC << 2) - 1)
152 
153 #define IOC_NET_HF_DCCP_PORT_SIZE	2
154 
155 typedef uint8_t ioc_header_field_udp_t;
156 
157 #define IOC_NET_HF_UDP_PORT_SRC		(1)
158 #define IOC_NET_HF_UDP_PORT_DST		(IOC_NET_HF_UDP_PORT_SRC << 1)
159 #define IOC_NET_HF_UDP_LEN		(IOC_NET_HF_UDP_PORT_SRC << 2)
160 #define IOC_NET_HF_UDP_CKSUM		(IOC_NET_HF_UDP_PORT_SRC << 3)
161 #define IOC_NET_HF_UDP_ALL_FIELDS	((IOC_NET_HF_UDP_PORT_SRC << 4) - 1)
162 
163 #define IOC_NET_HF_UDP_PORT_SIZE	2
164 
165 typedef uint8_t ioc_header_field_udp_lite_t;
166 
167 #define IOC_NET_HF_UDP_LITE_PORT_SRC	(1)
168 #define IOC_NET_HF_UDP_LITE_PORT_DST	(IOC_NET_HF_UDP_LITE_PORT_SRC << 1)
169 #define IOC_NET_HF_UDP_LITE_ALL_FIELDS \
170 		((IOC_NET_HF_UDP_LITE_PORT_SRC << 2) - 1)
171 
172 #define IOC_NET_HF_UDP_LITE_PORT_SIZE		2
173 
174 typedef uint8_t ioc_header_field_udp_encap_esp_t;
175 
176 #define IOC_NET_HF_UDP_ENCAP_ESP_PORT_SRC	(1)
177 #define IOC_NET_HF_UDP_ENCAP_ESP_PORT_DST \
178 		(IOC_NET_HF_UDP_ENCAP_ESP_PORT_SRC << 1)
179 #define IOC_NET_HF_UDP_ENCAP_ESP_LEN \
180 		(IOC_NET_HF_UDP_ENCAP_ESP_PORT_SRC << 2)
181 #define IOC_NET_HF_UDP_ENCAP_ESP_CKSUM \
182 		(IOC_NET_HF_UDP_ENCAP_ESP_PORT_SRC << 3)
183 #define IOC_NET_HF_UDP_ENCAP_ESP_SPI \
184 		(IOC_NET_HF_UDP_ENCAP_ESP_PORT_SRC << 4)
185 #define IOC_NET_HF_UDP_ENCAP_ESP_SEQUENCE_NUM \
186 		(IOC_NET_HF_UDP_ENCAP_ESP_PORT_SRC << 5)
187 #define IOC_NET_HF_UDP_ENCAP_ESP_ALL_FIELDS \
188 		((IOC_NET_HF_UDP_ENCAP_ESP_PORT_SRC << 6) - 1)
189 
190 #define IOC_NET_HF_UDP_ENCAP_ESP_PORT_SIZE	2
191 #define IOC_NET_HF_UDP_ENCAP_ESP_SPI_SIZE	4
192 
193 #define IOC_NET_HF_IPHC_CID		(1)
194 #define IOC_NET_HF_IPHC_CID_TYPE	(IOC_NET_HF_IPHC_CID << 1)
195 #define IOC_NET_HF_IPHC_HCINDEX		(IOC_NET_HF_IPHC_CID << 2)
196 #define IOC_NET_HF_IPHC_GEN		(IOC_NET_HF_IPHC_CID << 3)
197 #define IOC_NET_HF_IPHC_D_BIT		(IOC_NET_HF_IPHC_CID << 4)
198 #define IOC_NET_HF_IPHC_ALL_FIELDS	((IOC_NET_HF_IPHC_CID << 5) - 1)
199 
200 #define IOC_NET_HF_SCTP_CHUNK_DATA_TYPE		(1)
201 #define IOC_NET_HF_SCTP_CHUNK_DATA_FLAGS \
202 		(IOC_NET_HF_SCTP_CHUNK_DATA_TYPE << 1)
203 #define IOC_NET_HF_SCTP_CHUNK_DATA_LENGTH \
204 		(IOC_NET_HF_SCTP_CHUNK_DATA_TYPE << 2)
205 #define IOC_NET_HF_SCTP_CHUNK_DATA_TSN \
206 		(IOC_NET_HF_SCTP_CHUNK_DATA_TYPE << 3)
207 #define IOC_NET_HF_SCTP_CHUNK_DATA_STREAM_ID \
208 		(IOC_NET_HF_SCTP_CHUNK_DATA_TYPE << 4)
209 #define IOC_NET_HF_SCTP_CHUNK_DATA_STREAM_SQN \
210 		(IOC_NET_HF_SCTP_CHUNK_DATA_TYPE << 5)
211 #define IOC_NET_HF_SCTP_CHUNK_DATA_PAYLOAD_PID \
212 		(IOC_NET_HF_SCTP_CHUNK_DATA_TYPE << 6)
213 #define IOC_NET_HF_SCTP_CHUNK_DATA_UNORDERED \
214 		(IOC_NET_HF_SCTP_CHUNK_DATA_TYPE << 7)
215 #define IOC_NET_HF_SCTP_CHUNK_DATA_BEGINNING \
216 		(IOC_NET_HF_SCTP_CHUNK_DATA_TYPE << 8)
217 #define IOC_NET_HF_SCTP_CHUNK_DATA_END \
218 		(IOC_NET_HF_SCTP_CHUNK_DATA_TYPE << 9)
219 #define IOC_NET_HF_SCTP_CHUNK_DATA_ALL_FIELDS \
220 		((IOC_NET_HF_SCTP_CHUNK_DATA_TYPE << 10) - 1)
221 
222 #define ioc_net_hf_l2tpv_2_type_bit	(1)
223 #define ioc_net_hf_l2tpv_2_length_bit	(ioc_net_hf_l2tpv_2_type_bit << 1)
224 #define ioc_net_hf_l2tpv_2_sequence_bit	(ioc_net_hf_l2tpv_2_type_bit << 2)
225 #define ioc_net_hf_l2tpv_2_offset_bit	(ioc_net_hf_l2tpv_2_type_bit << 3)
226 #define ioc_net_hf_l2tpv_2_priority_bit	(ioc_net_hf_l2tpv_2_type_bit << 4)
227 #define ioc_net_hf_l2tpv_2_version	(ioc_net_hf_l2tpv_2_type_bit << 5)
228 #define ioc_net_hf_l2tpv_2_len		(ioc_net_hf_l2tpv_2_type_bit << 6)
229 #define ioc_net_hf_l2tpv_2_tunnel_id	(ioc_net_hf_l2tpv_2_type_bit << 7)
230 #define ioc_net_hf_l2tpv_2_session_id	(ioc_net_hf_l2tpv_2_type_bit << 8)
231 #define ioc_net_hf_l2tpv_2_ns		(ioc_net_hf_l2tpv_2_type_bit << 9)
232 #define ioc_net_hf_l2tpv_2_nr		(ioc_net_hf_l2tpv_2_type_bit << 10)
233 #define ioc_net_hf_l2tpv_2_offset_size	(ioc_net_hf_l2tpv_2_type_bit << 11)
234 #define ioc_net_hf_l2tpv_2_first_byte	(ioc_net_hf_l2tpv_2_type_bit << 12)
235 #define ioc_net_hf_l2tpv_2_all_fields \
236 		((ioc_net_hf_l2tpv_2_type_bit << 13) - 1)
237 
238 #define ioc_net_hf_l2tpv_3_ctrl_type_bit	(1)
239 #define ioc_net_hf_l2tpv_3_ctrl_length_bit \
240 		(ioc_net_hf_l2tpv_3_ctrl_type_bit << 1)
241 #define ioc_net_hf_l2tpv_3_ctrl_sequence_bit \
242 		(ioc_net_hf_l2tpv_3_ctrl_type_bit << 2)
243 #define ioc_net_hf_l2tpv_3_ctrl_version	(ioc_net_hf_l2tpv_3_ctrl_type_bit << 3)
244 #define ioc_net_hf_l2tpv_3_ctrl_length	(ioc_net_hf_l2tpv_3_ctrl_type_bit << 4)
245 #define ioc_net_hf_l2tpv_3_ctrl_control	(ioc_net_hf_l2tpv_3_ctrl_type_bit << 5)
246 #define ioc_net_hf_l2tpv_3_ctrl_sent	(ioc_net_hf_l2tpv_3_ctrl_type_bit << 6)
247 #define ioc_net_hf_l2tpv_3_ctrl_recv	(ioc_net_hf_l2tpv_3_ctrl_type_bit << 7)
248 #define ioc_net_hf_l2tpv_3_ctrl_first_byte \
249 		(ioc_net_hf_l2tpv_3_ctrl_type_bit << 8)
250 #define ioc_net_hf_l2tpv_3_ctrl_all_fields \
251 		((ioc_net_hf_l2tpv_3_ctrl_type_bit << 9) - 1)
252 
253 #define ioc_net_hf_l2tpv_3_sess_type_bit	(1)
254 #define ioc_net_hf_l2tpv_3_sess_version	(ioc_net_hf_l2tpv_3_sess_type_bit << 1)
255 #define ioc_net_hf_l2tpv_3_sess_id	(ioc_net_hf_l2tpv_3_sess_type_bit << 2)
256 #define ioc_net_hf_l2tpv_3_sess_cookie	(ioc_net_hf_l2tpv_3_sess_type_bit << 3)
257 #define ioc_net_hf_l2tpv_3_sess_all_fields \
258 		((ioc_net_hf_l2tpv_3_sess_type_bit << 4) - 1)
259 
260 typedef uint8_t ioc_header_field_vlan_t;
261 
262 #define IOC_NET_HF_VLAN_VPRI		(1)
263 #define IOC_NET_HF_VLAN_CFI		(IOC_NET_HF_VLAN_VPRI << 1)
264 #define IOC_NET_HF_VLAN_VID		(IOC_NET_HF_VLAN_VPRI << 2)
265 #define IOC_NET_HF_VLAN_LENGTH		(IOC_NET_HF_VLAN_VPRI << 3)
266 #define IOC_NET_HF_VLAN_TYPE		(IOC_NET_HF_VLAN_VPRI << 4)
267 #define IOC_NET_HF_VLAN_ALL_FIELDS	((IOC_NET_HF_VLAN_VPRI << 5) - 1)
268 
269 #define IOC_NET_HF_VLAN_TCI		(IOC_NET_HF_VLAN_VPRI | \
270 				IOC_NET_HF_VLAN_CFI | \
271 				IOC_NET_HF_VLAN_VID)
272 
273 typedef uint8_t ioc_header_field_llc_t;
274 
275 #define IOC_NET_HF_LLC_DSAP		(1)
276 #define IOC_NET_HF_LLC_SSAP		(IOC_NET_HF_LLC_DSAP << 1)
277 #define IOC_NET_HF_LLC_CTRL		(IOC_NET_HF_LLC_DSAP << 2)
278 #define IOC_NET_HF_LLC_ALL_FIELDS	((IOC_NET_HF_LLC_DSAP << 3) - 1)
279 
280 #define IOC_NET_HF_NLPID_NLPID	(1)
281 #define IOC_NET_HF_NLPID_ALL_FIELDS	((IOC_NET_HF_NLPID_NLPID << 1) - 1)
282 
283 typedef uint8_t ioc_header_field_snap_t;
284 
285 #define IOC_NET_HF_SNAP_OUI		(1)
286 #define IOC_NET_HF_SNAP_PID		(IOC_NET_HF_SNAP_OUI << 1)
287 #define IOC_NET_HF_SNAP_ALL_FIELDS	((IOC_NET_HF_SNAP_OUI << 2) - 1)
288 
289 typedef uint8_t ioc_header_field_llc_snap_t;
290 
291 #define IOC_NET_HF_LLC_SNAP_TYPE	(1)
292 #define IOC_NET_HF_LLC_SNAP_ALL_FIELDS	((IOC_NET_HF_LLC_SNAP_TYPE << 1) - 1)
293 
294 #define IOC_NET_HF_ARP_HTYPE		(1)
295 #define IOC_NET_HF_ARP_PTYPE		(IOC_NET_HF_ARP_HTYPE << 1)
296 #define IOC_NET_HF_ARP_HLEN		(IOC_NET_HF_ARP_HTYPE << 2)
297 #define IOC_NET_HF_ARP_PLEN		(IOC_NET_HF_ARP_HTYPE << 3)
298 #define IOC_NET_HF_ARP_OPER		(IOC_NET_HF_ARP_HTYPE << 4)
299 #define IOC_NET_HF_ARP_SHA		(IOC_NET_HF_ARP_HTYPE << 5)
300 #define IOC_NET_HF_ARP_SPA		(IOC_NET_HF_ARP_HTYPE << 6)
301 #define IOC_NET_HF_ARP_TH		(IOC_NET_HF_ARP_HTYPE << 7)
302 #define IOC_NET_HF_ARP_TPA		(IOC_NET_HF_ARP_HTYPE << 8)
303 #define IOC_NET_HF_ARP_ALL_FIELDS	((IOC_NET_HF_ARP_HTYPE << 9) - 1)
304 
305 #define IOC_NET_HF_RFC2684_LLC		(1)
306 #define IOC_NET_HF_RFC2684_NLPID	(IOC_NET_HF_RFC2684_LLC << 1)
307 #define IOC_NET_HF_RFC2684_OUI		(IOC_NET_HF_RFC2684_LLC << 2)
308 #define IOC_NET_HF_RFC2684_PID		(IOC_NET_HF_RFC2684_LLC << 3)
309 #define IOC_NET_HF_RFC2684_VPN_OUI	(IOC_NET_HF_RFC2684_LLC << 4)
310 #define IOC_NET_HF_RFC2684_VPN_IDX	(IOC_NET_HF_RFC2684_LLC << 5)
311 #define IOC_NET_HF_RFC2684_ALL_FIELDS	((IOC_NET_HF_RFC2684_LLC << 6) - 1)
312 
313 #define IOC_NET_HF_USER_DEFINED_SRCPORT	(1)
314 #define IOC_NET_HF_USER_DEFINED_PCDID	(IOC_NET_HF_USER_DEFINED_SRCPORT << 1)
315 #define IOC_NET_HF_USER_DEFINED_ALL_FIELDS \
316 		((IOC_NET_HF_USER_DEFINED_SRCPORT << 2) - 1)
317 
318 #define IOC_NET_HF_PAYLOAD_BUFFER	(1)
319 #define IOC_NET_HF_PAYLOAD_SIZE		(IOC_NET_HF_PAYLOAD_BUFFER << 1)
320 #define IOC_NET_HF_MAX_FRM_SIZE		(IOC_NET_HF_PAYLOAD_BUFFER << 2)
321 #define IOC_NET_HF_MIN_FRM_SIZE		(IOC_NET_HF_PAYLOAD_BUFFER << 3)
322 #define IOC_NET_HF_PAYLOAD_TYPE		(IOC_NET_HF_PAYLOAD_BUFFER << 4)
323 #define IOC_NET_HF_FRAME_SIZE		(IOC_NET_HF_PAYLOAD_BUFFER << 5)
324 #define IOC_NET_HF_PAYLOAD_ALL_FIELDS	((IOC_NET_HF_PAYLOAD_BUFFER << 6) - 1)
325 
326 typedef uint8_t ioc_header_field_gre_t;
327 
328 #define IOC_NET_HF_GRE_TYPE		(1)
329 #define IOC_NET_HF_GRE_ALL_FIELDS	((IOC_NET_HF_GRE_TYPE << 1) - 1)
330 
331 typedef uint8_t ioc_header_field_minencap_t;
332 
333 #define IOC_NET_HF_MINENCAP_SRC_IP	(1)
334 #define IOC_NET_HF_MINENCAP_DST_IP	(IOC_NET_HF_MINENCAP_SRC_IP << 1)
335 #define IOC_NET_HF_MINENCAP_TYPE	(IOC_NET_HF_MINENCAP_SRC_IP << 2)
336 #define IOC_NET_HF_MINENCAP_ALL_FIELDS	((IOC_NET_HF_MINENCAP_SRC_IP << 3) - 1)
337 
338 typedef uint8_t ioc_header_field_ipsec_ah_t;
339 
340 #define IOC_NET_HF_IPSEC_AH_SPI	(1)
341 #define IOC_NET_HF_IPSEC_AH_NH		(IOC_NET_HF_IPSEC_AH_SPI << 1)
342 #define IOC_NET_HF_IPSEC_AH_ALL_FIELDS	((IOC_NET_HF_IPSEC_AH_SPI << 2) - 1)
343 
344 typedef uint8_t ioc_header_field_ipsec_esp_t;
345 
346 #define IOC_NET_HF_IPSEC_ESP_SPI	(1)
347 #define IOC_NET_HF_IPSEC_ESP_SEQUENCE_NUM	(IOC_NET_HF_IPSEC_ESP_SPI << 1)
348 #define IOC_NET_HF_IPSEC_ESP_ALL_FIELDS	((IOC_NET_HF_IPSEC_ESP_SPI << 2) - 1)
349 
350 #define IOC_NET_HF_IPSEC_ESP_SPI_SIZE		4
351 
352 
353 typedef uint8_t ioc_header_field_mpls_t;
354 
355 #define IOC_NET_HF_MPLS_LABEL_STACK		(1)
356 #define IOC_NET_HF_MPLS_LABEL_STACK_ALL_FIELDS \
357 		((IOC_NET_HF_MPLS_LABEL_STACK << 1) - 1)
358 
359 typedef uint8_t ioc_header_field_macsec_t;
360 
361 #define IOC_NET_HF_MACSEC_SECTAG	(1)
362 #define IOC_NET_HF_MACSEC_ALL_FIELDS	((IOC_NET_HF_MACSEC_SECTAG << 1) - 1)
363 
364 typedef enum {
365 	HEADER_TYPE_NONE = 0,
366 	HEADER_TYPE_PAYLOAD,
367 	HEADER_TYPE_ETH,
368 	HEADER_TYPE_VLAN,
369 	HEADER_TYPE_IPV4,
370 	HEADER_TYPE_IPV6,
371 	HEADER_TYPE_IP,
372 	HEADER_TYPE_TCP,
373 	HEADER_TYPE_UDP,
374 	HEADER_TYPE_UDP_LITE,
375 	HEADER_TYPE_IPHC,
376 	HEADER_TYPE_SCTP,
377 	HEADER_TYPE_SCTP_CHUNK_DATA,
378 	HEADER_TYPE_PPPOE,
379 	HEADER_TYPE_PPP,
380 	HEADER_TYPE_PPPMUX,
381 	HEADER_TYPE_PPPMUX_SUBFRAME,
382 	HEADER_TYPE_L2TPV2,
383 	HEADER_TYPE_L2TPV3_CTRL,
384 	HEADER_TYPE_L2TPV3_SESS,
385 	HEADER_TYPE_LLC,
386 	HEADER_TYPE_LLC_SNAP,
387 	HEADER_TYPE_NLPID,
388 	HEADER_TYPE_SNAP,
389 	HEADER_TYPE_MPLS,
390 	HEADER_TYPE_IPSEC_AH,
391 	HEADER_TYPE_IPSEC_ESP,
392 	HEADER_TYPE_UDP_ENCAP_ESP, /* RFC 3948 */
393 	HEADER_TYPE_MACSEC,
394 	HEADER_TYPE_GRE,
395 	HEADER_TYPE_MINENCAP,
396 	HEADER_TYPE_DCCP,
397 	HEADER_TYPE_ICMP,
398 	HEADER_TYPE_IGMP,
399 	HEADER_TYPE_ARP,
400 	HEADER_TYPE_CAPWAP,
401 	HEADER_TYPE_CAPWAP_DTLS,
402 	HEADER_TYPE_RFC2684,
403 	HEADER_TYPE_USER_DEFINED_L2,
404 	HEADER_TYPE_USER_DEFINED_L3,
405 	HEADER_TYPE_USER_DEFINED_L4,
406 	HEADER_TYPE_USER_DEFINED_SHIM1,
407 	HEADER_TYPE_USER_DEFINED_SHIM2,
408 	MAX_HEADER_TYPE_COUNT
409 } ioc_net_header_type;
410 
411 #endif /* __NET_EXT_H */
412