net/ice: enable Rx timestamp on flex descriptor
[dpdk.git] / drivers / net / dpaa / fmlib / net_ext.h
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 */