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