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