net/mlx5: support more tunnel types
[dpdk.git] / drivers / net / ice / base / ice_fdir.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2001-2021 Intel Corporation
3  */
4
5 #include "ice_common.h"
6 #include "ice_fdir.h"
7
8 /* These are training packet headers used to program flow director filters. */
9 static const u8 ice_fdir_tcpv4_pkt[] = {
10         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
11         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
12         0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x40, 0x06,
13         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
14         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
15         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00,
16         0x20, 0x00, 0x00, 0x00, 0x00, 0x00
17 };
18
19 static const u8 ice_fdir_udpv4_pkt[] = {
20         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
21         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
22         0x00, 0x1C, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
23         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
24         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
25         0x00, 0x00,
26 };
27
28 static const u8 ice_fdir_sctpv4_pkt[] = {
29         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
30         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
31         0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x40, 0x84,
32         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
33         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34         0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35 };
36
37 static const u8 ice_fdir_ipv4_pkt[] = {
38         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
40         0x00, 0x14, 0x00, 0x00, 0x40, 0x00, 0x40, 0x10,
41         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
42         0x00, 0x00
43 };
44
45 static const u8 ice_fdir_udp4_vxlan_pkt[] = {
46         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
48         0x00, 0x4e, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
49         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51         0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00,
52         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
54         0x45, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x40, 0x00,
55         0x40, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
56         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
57         0x00, 0x00, 0x00, 0x00,
58 };
59
60 static const u8 ice_fdir_ipv4_gtpu4_pkt[] = {
61         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
62         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
63         0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
64         0x7c, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
65         0x00, 0x00, 0x08, 0x68, 0x08, 0x68, 0x00, 0x24,
66         0xbf, 0xc0, 0x30, 0xff, 0x00, 0x14, 0x00, 0x00,
67         0x00, 0x00, 0x45, 0x00, 0x00, 0x14, 0x00, 0x01,
68         0x00, 0x00, 0x40, 0x00, 0x3a, 0x3d, 0x00, 0x00,
69         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
70 };
71
72 static const u8 ice_fdir_udp4_gtpu4_pkt[] = {
73         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
74         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
75         0x00, 0x40, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
76         0x7c, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
77         0x00, 0x00, 0x08, 0x68, 0x08, 0x68, 0x00, 0x2c,
78         0x00, 0x6f, 0x30, 0xff, 0x00, 0x1c, 0x00, 0x00,
79         0x00, 0x00, 0x45, 0x00, 0x00, 0x1c, 0x00, 0x01,
80         0x00, 0x00, 0x40, 0x11, 0x3a, 0x24, 0x00, 0x00,
81         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
82         0x00, 0x00, 0x00, 0x08, 0xbe, 0xc7, 0x00, 0x00,
83 };
84
85 static const u8 ice_fdir_tcp4_gtpu4_pkt[] = {
86         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
87         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
88         0x00, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
89         0x7c, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
90         0x00, 0x00, 0x08, 0x68, 0x08, 0x68, 0x00, 0x38,
91         0x00, 0x4c, 0x30, 0xff, 0x00, 0x28, 0x00, 0x00,
92         0x00, 0x00, 0x45, 0x00, 0x00, 0x28, 0x00, 0x01,
93         0x00, 0x00, 0x40, 0x06, 0x3a, 0x23, 0x00, 0x00,
94         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96         0x00, 0x00, 0x50, 0x02, 0x20, 0x00, 0x4e, 0xd2,
97         0x00, 0x00, 0x00, 0x00,
98 };
99
100 static const u8 ice_fdir_ipv6_gtpu4_pkt[] = {
101         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
102         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
103         0x00, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
104         0x7c, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
105         0x00, 0x00, 0x08, 0x68, 0x08, 0x68, 0x00, 0x38,
106         0x24, 0x42, 0x30, 0xff, 0x00, 0x28, 0x00, 0x00,
107         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
108         0x3b, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
109         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
110         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
111         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
112         0x00, 0x00, 0x00, 0x00,
113 };
114
115 static const u8 ice_fdir_udp6_gtpu4_pkt[] = {
116         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
117         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
118         0x00, 0x54, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
119         0x7c, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
120         0x00, 0x00, 0x08, 0x68, 0x08, 0x68, 0x00, 0x40,
121         0x4e, 0x3d, 0x30, 0xff, 0x00, 0x30, 0x00, 0x00,
122         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x08,
123         0x11, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
124         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
125         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
126         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
127         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
128         0xff, 0xdc, 0x00, 0x00,
129 };
130
131 static const u8 ice_fdir_tcp6_gtpu4_pkt[] = {
132         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
133         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
134         0x00, 0x62, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
135         0x7c, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
136         0x00, 0x00, 0x08, 0x68, 0x08, 0x68, 0x00, 0x4e,
137         0x59, 0x08, 0x30, 0xff, 0x00, 0x3e, 0x00, 0x00,
138         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x16,
139         0x06, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
140         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
141         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
142         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
143         0x00, 0x00, 0x00, 0x14, 0x00, 0x50, 0x00, 0x00,
144         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02,
145         0x20, 0x00, 0x8f, 0x7b, 0x00, 0x00, 0x00, 0x00,
146 };
147
148 static const u8 ice_fdir_ipv4_gtpu4_eh_pkt[] = {
149         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
150         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
151         0x00, 0x42, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
152         0x7c, 0xa8, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
153         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x2e,
154         0xba, 0x1d, 0x34, 0xff, 0x00, 0x1e, 0x00, 0x00,
155         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
156         0x00, 0x00, 0x45, 0x00, 0x00, 0x16, 0x00, 0x01,
157         0x00, 0x00, 0x40, 0x00, 0x7c, 0xe5, 0x7f, 0x00,
158         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00,
159 };
160
161 static const u8 ice_fdir_udp4_gtpu4_eh_pkt[] = {
162         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
163         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
164         0x00, 0x4a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
165         0x7c, 0xa0, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
166         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x36,
167         0xb8, 0x23, 0x34, 0xff, 0x00, 0x26, 0x00, 0x00,
168         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
169         0x00, 0x00, 0x45, 0x00, 0x00, 0x1e, 0x00, 0x01,
170         0x00, 0x00, 0x40, 0x11, 0x7c, 0xcc, 0x7f, 0x00,
171         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00,
172         0x00, 0x00, 0x00, 0x0a, 0x01, 0xd8, 0x00, 0x00,
173 };
174
175 static const u8 ice_fdir_tcp4_gtpu4_eh_pkt[] = {
176         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
177         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
178         0x00, 0x56, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
179         0x7c, 0x94, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
180         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x42,
181         0xb8, 0x00, 0x34, 0xff, 0x00, 0x32, 0x00, 0x00,
182         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
183         0x00, 0x00, 0x45, 0x00, 0x00, 0x2a, 0x00, 0x01,
184         0x00, 0x00, 0x40, 0x06, 0x7c, 0xcb, 0x7f, 0x00,
185         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00,
186         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
187         0x00, 0x00, 0x50, 0x02, 0x20, 0x00, 0x91, 0xde,
188         0x00, 0x00, 0x00, 0x00,
189 };
190
191 static const u8 ice_fdir_ipv6_gtpu4_eh_pkt[] = {
192         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
193         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
194         0x00, 0x56, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
195         0x7c, 0x94, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
196         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x42,
197         0x1e, 0x9d, 0x34, 0xff, 0x00, 0x32, 0x00, 0x00,
198         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
199         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x02,
200         0x3b, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
201         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
202         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
203         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
204         0x00, 0x01, 0x00, 0x00,
205 };
206
207 static const u8 ice_fdir_udp6_gtpu4_eh_pkt[] = {
208         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
209         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
210         0x00, 0x5e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
211         0x7c, 0x8c, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
212         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x4a,
213         0x48, 0x9a, 0x34, 0xff, 0x00, 0x3a, 0x00, 0x00,
214         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
215         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0a,
216         0x11, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
217         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
218         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
219         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
220         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a,
221         0xff, 0xd8, 0x00, 0x00,
222 };
223
224 static const u8 ice_fdir_tcp6_gtpu4_eh_pkt[] = {
225         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
226         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
227         0x00, 0x6a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
228         0x7c, 0x80, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
229         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x56,
230         0x53, 0x6b, 0x34, 0xff, 0x00, 0x46, 0x00, 0x00,
231         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
232         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x16,
233         0x06, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
234         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
235         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
236         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
237         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
238         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02,
239         0x20, 0x00, 0x8f, 0xdf, 0x00, 0x00, 0x00, 0x00,
240 };
241
242 static const u8 ice_fdir_ipv4_gtpu4_eh_dw_pkt[] = {
243         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
244         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
245         0x00, 0x42, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
246         0x7c, 0xa8, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
247         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x2e,
248         0xba, 0x1d, 0x34, 0xff, 0x00, 0x1e, 0x00, 0x00,
249         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
250         0x00, 0x00, 0x45, 0x00, 0x00, 0x16, 0x00, 0x01,
251         0x00, 0x00, 0x40, 0x00, 0x7c, 0xe5, 0x7f, 0x00,
252         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00,
253 };
254
255 static const u8 ice_fdir_udp4_gtpu4_eh_dw_pkt[] = {
256         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
257         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
258         0x00, 0x4a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
259         0x7c, 0xa0, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
260         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x36,
261         0xb8, 0x23, 0x34, 0xff, 0x00, 0x26, 0x00, 0x00,
262         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
263         0x00, 0x00, 0x45, 0x00, 0x00, 0x1e, 0x00, 0x01,
264         0x00, 0x00, 0x40, 0x11, 0x7c, 0xcc, 0x7f, 0x00,
265         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00,
266         0x00, 0x00, 0x00, 0x0a, 0x01, 0xd8, 0x00, 0x00,
267 };
268
269 static const u8 ice_fdir_tcp4_gtpu4_eh_dw_pkt[] = {
270         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
271         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
272         0x00, 0x56, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
273         0x7c, 0x94, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
274         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x42,
275         0xb8, 0x00, 0x34, 0xff, 0x00, 0x32, 0x00, 0x00,
276         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
277         0x00, 0x00, 0x45, 0x00, 0x00, 0x2a, 0x00, 0x01,
278         0x00, 0x00, 0x40, 0x06, 0x7c, 0xcb, 0x7f, 0x00,
279         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00,
280         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
281         0x00, 0x00, 0x50, 0x02, 0x20, 0x00, 0x91, 0xde,
282         0x00, 0x00, 0x00, 0x00,
283 };
284
285 static const u8 ice_fdir_ipv6_gtpu4_eh_dw_pkt[] = {
286         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
287         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
288         0x00, 0x56, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
289         0x7c, 0x94, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
290         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x42,
291         0x1e, 0x9d, 0x34, 0xff, 0x00, 0x32, 0x00, 0x00,
292         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
293         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x02,
294         0x3b, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
295         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
296         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
297         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
298         0x00, 0x01, 0x00, 0x00,
299 };
300
301 static const u8 ice_fdir_udp6_gtpu4_eh_dw_pkt[] = {
302         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
303         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
304         0x00, 0x5e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
305         0x7c, 0x8c, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
306         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x4a,
307         0x48, 0x9a, 0x34, 0xff, 0x00, 0x3a, 0x00, 0x00,
308         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
309         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0a,
310         0x11, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
311         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
312         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
313         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
314         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a,
315         0xff, 0xd8, 0x00, 0x00,
316 };
317
318 static const u8 ice_fdir_tcp6_gtpu4_eh_dw_pkt[] = {
319         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
320         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
321         0x00, 0x6a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
322         0x7c, 0x80, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
323         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x56,
324         0x53, 0x6b, 0x34, 0xff, 0x00, 0x46, 0x00, 0x00,
325         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
326         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x16,
327         0x06, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
328         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
329         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
330         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
331         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
332         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02,
333         0x20, 0x00, 0x8f, 0xdf, 0x00, 0x00, 0x00, 0x00,
334 };
335
336 static const u8 ice_fdir_ipv4_gtpu4_eh_up_pkt[] = {
337         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
338         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
339         0x00, 0x42, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
340         0x7c, 0xa8, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
341         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x2e,
342         0xba, 0x0d, 0x34, 0xff, 0x00, 0x1e, 0x00, 0x00,
343         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x10,
344         0x00, 0x00, 0x45, 0x00, 0x00, 0x16, 0x00, 0x01,
345         0x00, 0x00, 0x40, 0x00, 0x7c, 0xe5, 0x7f, 0x00,
346         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00,
347 };
348
349 static const u8 ice_fdir_udp4_gtpu4_eh_up_pkt[] = {
350         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
351         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
352         0x00, 0x4a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
353         0x7c, 0xa0, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
354         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x36,
355         0xb8, 0x13, 0x34, 0xff, 0x00, 0x26, 0x00, 0x00,
356         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x10,
357         0x00, 0x00, 0x45, 0x00, 0x00, 0x1e, 0x00, 0x01,
358         0x00, 0x00, 0x40, 0x11, 0x7c, 0xcc, 0x7f, 0x00,
359         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00,
360         0x00, 0x00, 0x00, 0x0a, 0x01, 0xd8, 0x00, 0x00,
361 };
362
363 static const u8 ice_fdir_tcp4_gtpu4_eh_up_pkt[] = {
364         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
365         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
366         0x00, 0x56, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
367         0x7c, 0x94, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
368         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x42,
369         0xb7, 0xf0, 0x34, 0xff, 0x00, 0x32, 0x00, 0x00,
370         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x10,
371         0x00, 0x00, 0x45, 0x00, 0x00, 0x2a, 0x00, 0x01,
372         0x00, 0x00, 0x40, 0x06, 0x7c, 0xcb, 0x7f, 0x00,
373         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00,
374         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
375         0x00, 0x00, 0x50, 0x02, 0x20, 0x00, 0x91, 0xde,
376         0x00, 0x00, 0x00, 0x00,
377 };
378
379 static const u8 ice_fdir_ipv6_gtpu4_eh_up_pkt[] = {
380         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
381         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
382         0x00, 0x56, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
383         0x7c, 0x94, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
384         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x42,
385         0x1e, 0x8d, 0x34, 0xff, 0x00, 0x32, 0x00, 0x00,
386         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x10,
387         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x02,
388         0x3b, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
389         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
390         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
391         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
392         0x00, 0x01, 0x00, 0x00,
393 };
394
395 static const u8 ice_fdir_udp6_gtpu4_eh_up_pkt[] = {
396         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
397         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
398         0x00, 0x5e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
399         0x7c, 0x8c, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
400         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x4a,
401         0x48, 0x8a, 0x34, 0xff, 0x00, 0x3a, 0x00, 0x00,
402         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x10,
403         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0a,
404         0x11, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
405         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
406         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
407         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
408         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a,
409         0xff, 0xd8, 0x00, 0x00,
410 };
411
412 static const u8 ice_fdir_tcp6_gtpu4_eh_up_pkt[] = {
413         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
414         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
415         0x00, 0x6a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
416         0x7c, 0x80, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
417         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x56,
418         0x53, 0x5b, 0x34, 0xff, 0x00, 0x46, 0x00, 0x00,
419         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x10,
420         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x16,
421         0x06, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
422         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
423         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
424         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
425         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
426         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02,
427         0x20, 0x00, 0x8f, 0xdf, 0x00, 0x00, 0x00, 0x00,
428 };
429
430 static const u8 ice_fdir_icmp4_gtpu4_pkt[] = {
431         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
432         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
433         0x00, 0x4c, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
434         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
435         0x00, 0x00, 0x08, 0x68, 0x08, 0x68, 0x00, 0x00,
436         0x00, 0x00, 0x34, 0xff, 0x00, 0x28, 0x00, 0x00,
437         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x02, 0x00,
438         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00,
439         0x00, 0x1c, 0x00, 0x00, 0x40, 0x00, 0x40, 0x01,
440         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
441         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
442         0x00, 0x00,
443 };
444
445 static const u8 ice_fdir_ipv6_gtpu6_pkt[] = {
446         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
447         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
448         0x00, 0x00, 0x00, 0x38, 0x11, 0x40, 0x00, 0x00,
449         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
450         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
451         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
452         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x68,
453         0x08, 0x68, 0x00, 0x38, 0x22, 0x43, 0x30, 0xff,
454         0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
455         0x00, 0x00, 0x00, 0x00, 0x3b, 0x40, 0x00, 0x00,
456         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
457         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
458         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
459         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
460 };
461
462 static const u8 ice_fdir_ipv6_gtpu6_eh_pkt[] = {
463         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
464         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
465         0x00, 0x00, 0x00, 0x44, 0x11, 0x40, 0x00, 0x00,
466         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
467         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
468         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
469         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x68,
470         0x08, 0x68, 0x00, 0x44, 0x1b, 0x9a, 0x34, 0xff,
471         0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
472         0x00, 0x85, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
473         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
474         0x3b, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
475         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
476         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
477         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
478         0x00, 0x00, 0x00, 0x00,
479 };
480
481 static const u8 ice_fdir_ipv6_gtpu6_eh_dw_pkt[] = {
482         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
483         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
484         0x00, 0x00, 0x00, 0x44, 0x11, 0x40, 0x00, 0x00,
485         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
486         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
487         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
488         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x68,
489         0x08, 0x68, 0x00, 0x44, 0x1b, 0x9a, 0x34, 0xff,
490         0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
491         0x00, 0x85, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
492         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
493         0x3b, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
494         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
495         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
496         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
497         0x00, 0x00, 0x00, 0x00,
498 };
499
500 static const u8 ice_fdir_ipv6_gtpu6_eh_up_pkt[] = {
501         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
502         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
503         0x00, 0x00, 0x00, 0x44, 0x11, 0x40, 0x00, 0x00,
504         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
505         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
506         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
507         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x68,
508         0x08, 0x68, 0x00, 0x44, 0x1b, 0x8a, 0x34, 0xff,
509         0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
510         0x00, 0x85, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00,
511         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
512         0x3b, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
513         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
514         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
515         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
516         0x00, 0x00, 0x00, 0x00,
517 };
518
519 static const u8 ice_fdir_ipv4_l2tpv3_pkt[] = {
520         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
521         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
522         0x00, 0x14, 0x00, 0x00, 0x40, 0x00, 0x40, 0x73,
523         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
524         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
525         0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
526 };
527
528 static const u8 ice_fdir_ipv6_l2tpv3_pkt[] = {
529         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
530         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
531         0x00, 0x00, 0x00, 0x00, 0x73, 0x40, 0x00, 0x00,
532         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
533         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
534         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
535         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
536         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
537         0x00, 0x00,
538 };
539
540 static const u8 ice_fdir_ipv4_esp_pkt[] = {
541         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
542         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
543         0x00, 0x14, 0x00, 0x00, 0x40, 0x00, 0x40, 0x32,
544         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
545         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
546         0x00, 0x00
547 };
548
549 static const u8 ice_fdir_ipv6_esp_pkt[] = {
550         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
551         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
552         0x00, 0x00, 0x00, 0x00, 0x32, 0x40, 0x00, 0x00,
553         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
554         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
555         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
556         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
557         0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
558 };
559
560 static const u8 ice_fdir_ipv4_ah_pkt[] = {
561         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
562         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
563         0x00, 0x14, 0x00, 0x00, 0x40, 0x00, 0x40, 0x33,
564         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
565         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
566         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
567         0x00, 0x00
568 };
569
570 static const u8 ice_fdir_ipv6_ah_pkt[] = {
571         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
572         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
573         0x00, 0x00, 0x00, 0x00, 0x33, 0x40, 0x00, 0x00,
574         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
575         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
576         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
577         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
578         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
579         0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
580 };
581
582 static const u8 ice_fdir_ipv4_nat_t_esp_pkt[] = {
583         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
584         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
585         0x00, 0x1C, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
586         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
587         0x00, 0x00, 0x00, 0x00, 0x11, 0x94, 0x00, 0x00,
588         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
589         0x00, 0x00,
590 };
591
592 static const u8 ice_fdir_ipv6_nat_t_esp_pkt[] = {
593         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
594         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
595         0x00, 0x00, 0x00, 0x08, 0x11, 0x40, 0x00, 0x00,
596         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
597         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
598         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
599         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
600         0x11, 0x94, 0x00, 0x00, 0x00, 0x08,
601 };
602
603 static const u8 ice_fdir_ipv4_pfcp_node_pkt[] = {
604         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
605         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
606         0x00, 0x2C, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
607         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
608         0x00, 0x00, 0x22, 0x65, 0x22, 0x65, 0x00, 0x00,
609         0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00,
610         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
611         0x00, 0x00,
612 };
613
614 static const u8 ice_fdir_ipv4_pfcp_session_pkt[] = {
615         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
616         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
617         0x00, 0x2C, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
618         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
619         0x00, 0x00, 0x22, 0x65, 0x22, 0x65, 0x00, 0x00,
620         0x00, 0x00, 0x21, 0x00, 0x00, 0x10, 0x00, 0x00,
621         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
622         0x00, 0x00,
623 };
624
625 static const u8 ice_fdir_ipv6_pfcp_node_pkt[] = {
626         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
627         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
628         0x00, 0x00, 0x00, 0x18, 0x11, 0x40, 0x00, 0x00,
629         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
630         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
631         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
632         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x65,
633         0x22, 0x65, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
634         0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
635         0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
636 };
637
638 static const u8 ice_fdir_ipv6_pfcp_session_pkt[] = {
639         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
640         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
641         0x00, 0x00, 0x00, 0x18, 0x11, 0x40, 0x00, 0x00,
642         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
643         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
644         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
645         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x65,
646         0x22, 0x65, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00,
647         0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
648         0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
649 };
650
651 static const u8 ice_fdir_non_ip_l2_pkt[] = {
652         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
653         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
654         0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
655 };
656
657 static const u8 ice_fdir_ecpri_tp0_pkt[] = {
658         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
659         0x00, 0x00, 0x00, 0x00, 0xAE, 0xFE, 0x10, 0x00,
660         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
661         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
662 };
663
664 static const u8 ice_fdir_ipv4_udp_ecpri_tp0_pkt[] = {
665         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
666         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
667         0x00, 0x1C, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
668         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
669         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
670         0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
671         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
672 };
673
674 static const u8 ice_fdir_ipv6_frag_pkt[] = {
675         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
676         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
677         0x00, 0x00, 0x00, 0x00, 0x2C, 0x40, 0x00, 0x00,
678         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
679         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
680         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
681         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x00,
682         0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
683 };
684
685 static const u8 ice_fdir_ipv4_frag_pkt[] = {
686         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
687         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
688         0x00, 0x14, 0x00, 0x00, 0x20, 0x00, 0x40, 0x10,
689         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
690         0x00, 0x00
691 };
692
693 /* IPV4 GRE INNER IPV4 */
694 static const u8 ice_fdir_ipv4_gre4_pkt[] = {
695         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
696         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
697         0x00, 0x2e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
698         0x7c, 0x9e, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
699         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
700         0x00, 0x16, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00,
701         0x7c, 0xe5, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
702         0x00, 0x01, 0x00, 0x00,
703 };
704
705 static const u8 ice_fdir_udp4_gre4_pkt[] = {
706         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
707         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
708         0x00, 0x36, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
709         0x7c, 0x96, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
710         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
711         0x00, 0x1e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
712         0x7c, 0xcc, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
713         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a,
714         0x01, 0xd8, 0x00, 0x00,
715 };
716
717 static const u8 ice_fdir_tcp4_gre4_pkt[] = {
718         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
719         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
720         0x00, 0x42, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
721         0x7c, 0x8a, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
722         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
723         0x00, 0x2a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x06,
724         0x7c, 0xcb, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
725         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
726         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02,
727         0x20, 0x00, 0x91, 0xde, 0x00, 0x00, 0x00, 0x00,
728 };
729
730 /* IPV4 GRE INNER IPV6 */
731 static const u8 ice_fdir_ipv6_gre4_pkt[] = {
732         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
733         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
734         0x00, 0x42, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
735         0x7c, 0x8a, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
736         0x00, 0x01, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
737         0x00, 0x00, 0x00, 0x02, 0x3b, 0x40, 0x00, 0x00,
738         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
739         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
740         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
741         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
742 };
743
744 static const u8 ice_fdir_udp6_gre4_pkt[] = {
745         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
746         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
747         0x00, 0x4a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
748         0x7c, 0x82, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
749         0x00, 0x01, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
750         0x00, 0x00, 0x00, 0x0a, 0x11, 0x40, 0x00, 0x00,
751         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
752         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
753         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
754         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
755         0x00, 0x00, 0x00, 0x0a, 0xff, 0xd8, 0x00, 0x00,
756 };
757
758 static const u8 ice_fdir_tcp6_gre4_pkt[] = {
759         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
760         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
761         0x00, 0x56, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
762         0x7c, 0x76, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
763         0x00, 0x01, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
764         0x00, 0x00, 0x00, 0x16, 0x06, 0x40, 0x00, 0x00,
765         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
766         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
767         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
768         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
769         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
770         0x00, 0x00, 0x50, 0x02, 0x20, 0x00, 0x8f, 0xdf,
771         0x00, 0x00, 0x00, 0x00,
772 };
773
774 /* IPV6 GRE INNER IPV4 */
775 static const u8 ice_fdir_ipv4_gre6_pkt[] = {
776         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
777         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
778         0x00, 0x00, 0x00, 0x18, 0x2F, 0x40, 0x00, 0x00,
779         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
780         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
781         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
782         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
783         0x08, 0x00, 0x45, 0x00, 0x00, 0x14, 0x00, 0x01,
784         0x00, 0x00, 0x40, 0x00, 0x7A, 0xEA, 0x00, 0x00,
785         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
786 };
787
788 static const u8 ice_fdir_udp4_gre6_pkt[] = {
789         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
790         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
791         0x00, 0x00, 0x00, 0x20, 0x2F, 0x40, 0x00, 0x00,
792         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
793         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
794         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
795         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
796         0x08, 0x00, 0x45, 0x00, 0x00, 0x1C, 0x00, 0x01,
797         0x00, 0x00, 0x40, 0x11, 0x7A, 0xD1, 0x00, 0x00,
798         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
799         0x00, 0x00, 0x00, 0x08, 0xFF, 0xDE, 0x00, 0x00,
800 };
801
802 static const u8 ice_fdir_tcp4_gre6_pkt[] = {
803         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
804         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
805         0x00, 0x00, 0x00, 0x2C, 0x2F, 0x40, 0x00, 0x00,
806         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
807         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
808         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
809         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
810         0x08, 0x00, 0x45, 0x00, 0x00, 0x28, 0x00, 0x01,
811         0x00, 0x00, 0x40, 0x06, 0x7A, 0xD0, 0x00, 0x00,
812         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
813         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
814         0x00, 0x00, 0x50, 0x02, 0x20, 0x00, 0x8F, 0xE3,
815         0x00, 0x00, 0x00, 0x00,
816 };
817
818 /* IPV6 GRE INNER IPV6 */
819 static const u8 ice_fdir_ipv6_gre6_pkt[] = {
820         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
821         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
822         0x00, 0x00, 0x00, 0x2C, 0x2F, 0x40, 0x00, 0x00,
823         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
824         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
825         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
826         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
827         0x86, 0xDD, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
828         0x3B, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
829         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
830         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
831         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
832         0x00, 0x01, 0x00, 0x00,
833 };
834
835 static const u8 ice_fdir_udp6_gre6_pkt[] = {
836         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
837         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
838         0x00, 0x00, 0x00, 0x34, 0x2F, 0x40, 0x00, 0x00,
839         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
840         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
841         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
842         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
843         0x86, 0xDD, 0x60, 0x00, 0x00, 0x00, 0x00, 0x08,
844         0x11, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
845         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
846         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
847         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
848         0x00, 0x01, 0x00, 0x35, 0x00, 0x35, 0x00, 0x08,
849         0xFF, 0x72, 0x00, 0x00,
850 };
851
852 static const u8 ice_fdir_tcp6_gre6_pkt[] = {
853         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
854         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
855         0x00, 0x00, 0x00, 0x40, 0x2F, 0x40, 0x00, 0x00,
856         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
857         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
858         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
859         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
860         0x86, 0xDD, 0x60, 0x00, 0x00, 0x00, 0x00, 0x14,
861         0x06, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
862         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
863         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
864         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
865         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
866         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02,
867         0x20, 0x00, 0x8F, 0xE1, 0x00, 0x00, 0x00, 0x00,
868 };
869
870 /* IPV4 GRE IPV4 GTPU IPV4 */
871 static const u8 ice_fdir_ipv4_gtpu4_gre4_pkt[] = {
872         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
873         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
874         0x00, 0x52, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
875         0x7c, 0x7a, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
876         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
877         0x00, 0x3a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
878         0x7c, 0xb0, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
879         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x26,
880         0xbf, 0xba, 0x30, 0xff, 0x00, 0x16, 0x00, 0x00,
881         0x00, 0x00, 0x45, 0x00, 0x00, 0x16, 0x00, 0x01,
882         0x00, 0x00, 0x40, 0x00, 0x7c, 0xe5, 0x7f, 0x00,
883         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00,
884 };
885
886 static const u8 ice_fdir_udp4_gtpu4_gre4_pkt[] = {
887         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
888         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
889         0x00, 0x5a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
890         0x7c, 0x72, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
891         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
892         0x00, 0x42, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
893         0x7c, 0xa8, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
894         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x2e,
895         0xbd, 0xc0, 0x30, 0xff, 0x00, 0x1e, 0x00, 0x00,
896         0x00, 0x00, 0x45, 0x00, 0x00, 0x1e, 0x00, 0x01,
897         0x00, 0x00, 0x40, 0x11, 0x7c, 0xcc, 0x7f, 0x00,
898         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x35,
899         0x00, 0x35, 0x00, 0x0a, 0x01, 0x6e, 0x00, 0x00,
900 };
901
902 static const u8 ice_fdir_tcp4_gtpu4_gre4_pkt[] = {
903         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
904         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
905         0x00, 0x66, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
906         0x7c, 0x66, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
907         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
908         0x00, 0x4e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
909         0x7c, 0x9c, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
910         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x3a,
911         0xbd, 0x9d, 0x30, 0xff, 0x00, 0x2a, 0x00, 0x00,
912         0x00, 0x00, 0x45, 0x00, 0x00, 0x2a, 0x00, 0x01,
913         0x00, 0x00, 0x40, 0x06, 0x7c, 0xcb, 0x7f, 0x00,
914         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x14,
915         0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
916         0x00, 0x00, 0x50, 0x02, 0x20, 0x00, 0x91, 0x7a,
917         0x00, 0x00, 0x00, 0x00,
918 };
919
920 /* IPV4 GRE IPV4 GTPU IPV6 */
921 static const u8 ice_fdir_ipv6_gtpu4_gre4_pkt[] = {
922         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
923         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
924         0x00, 0x66, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
925         0x7c, 0x66, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
926         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
927         0x00, 0x4e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
928         0x7c, 0x9c, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
929         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x3a,
930         0x24, 0x3a, 0x30, 0xff, 0x00, 0x2a, 0x00, 0x00,
931         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x02,
932         0x3b, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
933         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
934         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
935         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
936         0x00, 0x01, 0x00, 0x00,
937 };
938
939 static const u8 ice_fdir_udp6_gtpu4_gre4_pkt[] = {
940         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
941         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
942         0x00, 0x6e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
943         0x7c, 0x5e, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
944         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
945         0x00, 0x56, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
946         0x7c, 0x94, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
947         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x42,
948         0x4e, 0x37, 0x30, 0xff, 0x00, 0x32, 0x00, 0x00,
949         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0a,
950         0x11, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
951         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
952         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
953         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
954         0x00, 0x01, 0x00, 0x35, 0x00, 0x35, 0x00, 0x0a,
955         0xff, 0x6e, 0x00, 0x00,
956 };
957
958 static const u8 ice_fdir_tcp6_gtpu4_gre4_pkt[] = {
959         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
960         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
961         0x00, 0x7a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
962         0x7c, 0x52, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
963         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
964         0x00, 0x62, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
965         0x7c, 0x88, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
966         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x4e,
967         0x59, 0x08, 0x30, 0xff, 0x00, 0x3e, 0x00, 0x00,
968         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x16,
969         0x06, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
970         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
971         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
972         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
973         0x00, 0x01, 0x00, 0x14, 0x00, 0x50, 0x00, 0x00,
974         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02,
975         0x20, 0x00, 0x8f, 0x7b, 0x00, 0x00, 0x00, 0x00,
976 };
977
978 /* IPV6 GRE IPV4 GTPU IPV4 */
979 static const u8 ice_fdir_ipv4_gtpu4_gre6_pkt[] = {
980         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
981         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
982         0x00, 0x00, 0x00, 0x3e, 0x2f, 0x40, 0x00, 0x00,
983         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
984         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
985         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
986         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
987         0x08, 0x00, 0x45, 0x00, 0x00, 0x3a, 0x00, 0x01,
988         0x00, 0x00, 0x40, 0x11, 0x7c, 0xb0, 0x7f, 0x00,
989         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
990         0x08, 0x68, 0x00, 0x26, 0xbf, 0xba, 0x30, 0xff,
991         0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00,
992         0x00, 0x16, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00,
993         0x7c, 0xe5, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
994         0x00, 0x01, 0x00, 0x00,
995 };
996
997 static const u8 ice_fdir_udp4_gtpu4_gre6_pkt[] = {
998         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
999         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1000         0x00, 0x00, 0x00, 0x46, 0x2f, 0x40, 0x00, 0x00,
1001         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1002         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1003         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1004         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1005         0x08, 0x00, 0x45, 0x00, 0x00, 0x42, 0x00, 0x01,
1006         0x00, 0x00, 0x40, 0x11, 0x7c, 0xa8, 0x7f, 0x00,
1007         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1008         0x08, 0x68, 0x00, 0x2e, 0xbd, 0xc0, 0x30, 0xff,
1009         0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00,
1010         0x00, 0x1e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1011         0x7c, 0xcc, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1012         0x00, 0x01, 0x00, 0x35, 0x00, 0x35, 0x00, 0x0a,
1013         0x01, 0x6e, 0x00, 0x00,
1014 };
1015
1016 static const u8 ice_fdir_tcp4_gtpu4_gre6_pkt[] = {
1017         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1018         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1019         0x00, 0x00, 0x00, 0x52, 0x2f, 0x40, 0x00, 0x00,
1020         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1021         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1022         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1023         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1024         0x08, 0x00, 0x45, 0x00, 0x00, 0x4e, 0x00, 0x01,
1025         0x00, 0x00, 0x40, 0x11, 0x7c, 0x9c, 0x7f, 0x00,
1026         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1027         0x08, 0x68, 0x00, 0x3a, 0xbd, 0x9d, 0x30, 0xff,
1028         0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00,
1029         0x00, 0x2a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x06,
1030         0x7c, 0xcb, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1031         0x00, 0x01, 0x00, 0x14, 0x00, 0x50, 0x00, 0x00,
1032         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02,
1033         0x20, 0x00, 0x91, 0x7a, 0x00, 0x00, 0x00, 0x00,
1034 };
1035
1036 /* IPV6 GRE IPV4 GTPU IPV6 */
1037 static const u8 ice_fdir_ipv6_gtpu4_gre6_pkt[] = {
1038         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1039         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1040         0x00, 0x00, 0x00, 0x52, 0x2f, 0x40, 0x00, 0x00,
1041         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1042         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1043         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1044         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1045         0x08, 0x00, 0x45, 0x00, 0x00, 0x4e, 0x00, 0x01,
1046         0x00, 0x00, 0x40, 0x11, 0x7c, 0x9c, 0x7f, 0x00,
1047         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1048         0x08, 0x68, 0x00, 0x3a, 0x24, 0x3a, 0x30, 0xff,
1049         0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
1050         0x00, 0x00, 0x00, 0x02, 0x3b, 0x40, 0x00, 0x00,
1051         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1052         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1053         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1054         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1055 };
1056
1057 static const u8 ice_fdir_udp6_gtpu4_gre6_pkt[] = {
1058         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1059         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1060         0x00, 0x00, 0x00, 0x5a, 0x2f, 0x40, 0x00, 0x00,
1061         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1062         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1063         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1064         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1065         0x08, 0x00, 0x45, 0x00, 0x00, 0x56, 0x00, 0x01,
1066         0x00, 0x00, 0x40, 0x11, 0x7c, 0x94, 0x7f, 0x00,
1067         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1068         0x08, 0x68, 0x00, 0x42, 0x4e, 0x37, 0x30, 0xff,
1069         0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
1070         0x00, 0x00, 0x00, 0x0a, 0x11, 0x40, 0x00, 0x00,
1071         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1072         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1073         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1074         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x35,
1075         0x00, 0x35, 0x00, 0x0a, 0xff, 0x6e, 0x00, 0x00,
1076 };
1077
1078 static const u8 ice_fdir_tcp6_gtpu4_gre6_pkt[] = {
1079         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1080         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1081         0x00, 0x00, 0x00, 0x66, 0x2f, 0x40, 0x00, 0x00,
1082         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1083         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1084         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1085         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1086         0x08, 0x00, 0x45, 0x00, 0x00, 0x62, 0x00, 0x01,
1087         0x00, 0x00, 0x40, 0x11, 0x7c, 0x88, 0x7f, 0x00,
1088         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1089         0x08, 0x68, 0x00, 0x4e, 0x59, 0x08, 0x30, 0xff,
1090         0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
1091         0x00, 0x00, 0x00, 0x16, 0x06, 0x40, 0x00, 0x00,
1092         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1093         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1094         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1095         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14,
1096         0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1097         0x00, 0x00, 0x50, 0x02, 0x20, 0x00, 0x8f, 0x7b,
1098         0x00, 0x00, 0x00, 0x00,
1099 };
1100
1101 /* IPV4 GRE IPV4 GTPU EH IPV4 */
1102 static const u8 ice_fdir_ipv4_gtpu4_eh_gre4_pkt[] = {
1103         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1104         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1105         0x00, 0x5a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1106         0x7c, 0x72, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1107         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1108         0x00, 0x42, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1109         0x7c, 0xa8, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1110         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x2e,
1111         0xba, 0x1d, 0x34, 0xff, 0x00, 0x1e, 0x00, 0x00,
1112         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
1113         0x00, 0x00, 0x45, 0x00, 0x00, 0x16, 0x00, 0x01,
1114         0x00, 0x00, 0x40, 0x00, 0x7c, 0xe5, 0x7f, 0x00,
1115         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00,
1116 };
1117
1118 static const u8 ice_fdir_udp4_gtpu4_eh_gre4_pkt[] = {
1119         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1120         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1121         0x00, 0x62, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1122         0x7c, 0x6a, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1123         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1124         0x00, 0x4a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1125         0x7c, 0xa0, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1126         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x36,
1127         0xb8, 0x23, 0x34, 0xff, 0x00, 0x26, 0x00, 0x00,
1128         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
1129         0x00, 0x00, 0x45, 0x00, 0x00, 0x1e, 0x00, 0x01,
1130         0x00, 0x00, 0x40, 0x11, 0x7c, 0xcc, 0x7f, 0x00,
1131         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x35,
1132         0x00, 0x35, 0x00, 0x0a, 0x01, 0x6e, 0x00, 0x00,
1133 };
1134
1135 static const u8 ice_fdir_tcp4_gtpu4_eh_gre4_pkt[] = {
1136         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1137         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1138         0x00, 0x6e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1139         0x7c, 0x5e, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1140         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1141         0x00, 0x56, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1142         0x7c, 0x94, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1143         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x42,
1144         0xb8, 0x00, 0x34, 0xff, 0x00, 0x32, 0x00, 0x00,
1145         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
1146         0x00, 0x00, 0x45, 0x00, 0x00, 0x2a, 0x00, 0x01,
1147         0x00, 0x00, 0x40, 0x06, 0x7c, 0xcb, 0x7f, 0x00,
1148         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x14,
1149         0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1150         0x00, 0x00, 0x50, 0x02, 0x20, 0x00, 0x91, 0x7a,
1151         0x00, 0x00, 0x00, 0x00,
1152 };
1153
1154 /* IPV4 GRE IPV4 GTPU EH IPV6 */
1155 static const u8 ice_fdir_ipv6_gtpu4_eh_gre4_pkt[] = {
1156         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1157         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1158         0x00, 0x6e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1159         0x7c, 0x5e, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1160         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1161         0x00, 0x56, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1162         0x7c, 0x94, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1163         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x42,
1164         0x1e, 0x9d, 0x34, 0xff, 0x00, 0x32, 0x00, 0x00,
1165         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
1166         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x02,
1167         0x3b, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1168         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1169         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1170         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1171         0x00, 0x01, 0x00, 0x00,
1172 };
1173
1174 static const u8 ice_fdir_udp6_gtpu4_eh_gre4_pkt[] = {
1175         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1176         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1177         0x00, 0x76, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1178         0x7c, 0x56, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1179         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1180         0x00, 0x5e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1181         0x7c, 0x8c, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1182         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x4a,
1183         0x48, 0x9a, 0x34, 0xff, 0x00, 0x3a, 0x00, 0x00,
1184         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
1185         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0a,
1186         0x11, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1187         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1188         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1189         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1190         0x00, 0x01, 0x00, 0x35, 0x00, 0x35, 0x00, 0x0a,
1191         0xff, 0x6e, 0x00, 0x00,
1192 };
1193
1194 static const u8 ice_fdir_tcp6_gtpu4_eh_gre4_pkt[] = {
1195         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1196         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1197         0x00, 0x82, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1198         0x7c, 0x4a, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1199         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1200         0x00, 0x6a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1201         0x7c, 0x80, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1202         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x56,
1203         0x53, 0x6b, 0x34, 0xff, 0x00, 0x46, 0x00, 0x00,
1204         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
1205         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x16,
1206         0x06, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1207         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1208         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1209         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1210         0x00, 0x01, 0x00, 0x14, 0x00, 0x50, 0x00, 0x00,
1211         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02,
1212         0x20, 0x00, 0x8f, 0x7b, 0x00, 0x00, 0x00, 0x00,
1213 };
1214
1215 /* IPV6 GRE IPV4 GTPU EH IPV4 */
1216 static const u8 ice_fdir_ipv4_gtpu4_eh_gre6_pkt[] = {
1217         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1218         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1219         0x00, 0x00, 0x00, 0x46, 0x2f, 0x40, 0x00, 0x00,
1220         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1221         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1222         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1223         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1224         0x08, 0x00, 0x45, 0x00, 0x00, 0x42, 0x00, 0x01,
1225         0x00, 0x00, 0x40, 0x11, 0x7c, 0xa8, 0x7f, 0x00,
1226         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1227         0x08, 0x68, 0x00, 0x2e, 0xba, 0x1d, 0x34, 0xff,
1228         0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1229         0x00, 0x85, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00,
1230         0x00, 0x16, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00,
1231         0x7c, 0xe5, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1232         0x00, 0x01, 0x00, 0x00,
1233 };
1234
1235 static const u8 ice_fdir_udp4_gtpu4_eh_gre6_pkt[] = {
1236         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1237         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1238         0x00, 0x00, 0x00, 0x4e, 0x2f, 0x40, 0x00, 0x00,
1239         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1240         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1241         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1242         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1243         0x08, 0x00, 0x45, 0x00, 0x00, 0x4a, 0x00, 0x01,
1244         0x00, 0x00, 0x40, 0x11, 0x7c, 0xa0, 0x7f, 0x00,
1245         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1246         0x08, 0x68, 0x00, 0x36, 0xb8, 0x23, 0x34, 0xff,
1247         0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1248         0x00, 0x85, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00,
1249         0x00, 0x1e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1250         0x7c, 0xcc, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1251         0x00, 0x01, 0x00, 0x35, 0x00, 0x35, 0x00, 0x0a,
1252         0x01, 0x6e, 0x00, 0x00,
1253 };
1254
1255 static const u8 ice_fdir_tcp4_gtpu4_eh_gre6_pkt[] = {
1256         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1257         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1258         0x00, 0x00, 0x00, 0x5a, 0x2f, 0x40, 0x00, 0x00,
1259         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1260         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1261         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1262         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1263         0x08, 0x00, 0x45, 0x00, 0x00, 0x56, 0x00, 0x01,
1264         0x00, 0x00, 0x40, 0x11, 0x7c, 0x94, 0x7f, 0x00,
1265         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1266         0x08, 0x68, 0x00, 0x42, 0xb8, 0x00, 0x34, 0xff,
1267         0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1268         0x00, 0x85, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00,
1269         0x00, 0x2a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x06,
1270         0x7c, 0xcb, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1271         0x00, 0x01, 0x00, 0x14, 0x00, 0x50, 0x00, 0x00,
1272         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02,
1273         0x20, 0x00, 0x91, 0x7a, 0x00, 0x00, 0x00, 0x00,
1274 };
1275
1276 /* IPV6 GRE IPV4 GTPU EH IPV6 */
1277 static const u8 ice_fdir_ipv6_gtpu4_eh_gre6_pkt[] = {
1278         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1279         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1280         0x00, 0x00, 0x00, 0x5a, 0x2f, 0x40, 0x00, 0x00,
1281         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1282         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1283         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1284         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1285         0x08, 0x00, 0x45, 0x00, 0x00, 0x56, 0x00, 0x01,
1286         0x00, 0x00, 0x40, 0x11, 0x7c, 0x94, 0x7f, 0x00,
1287         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1288         0x08, 0x68, 0x00, 0x42, 0x1e, 0x9d, 0x34, 0xff,
1289         0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1290         0x00, 0x85, 0x01, 0x00, 0x00, 0x00, 0x60, 0x00,
1291         0x00, 0x00, 0x00, 0x02, 0x3b, 0x40, 0x00, 0x00,
1292         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1293         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1294         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1295         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1296 };
1297
1298 static const u8 ice_fdir_udp6_gtpu4_eh_gre6_pkt[] = {
1299         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1300         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1301         0x00, 0x00, 0x00, 0x62, 0x2f, 0x40, 0x00, 0x00,
1302         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1303         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1304         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1305         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1306         0x08, 0x00, 0x45, 0x00, 0x00, 0x5e, 0x00, 0x01,
1307         0x00, 0x00, 0x40, 0x11, 0x7c, 0x8c, 0x7f, 0x00,
1308         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1309         0x08, 0x68, 0x00, 0x4a, 0x48, 0x9a, 0x34, 0xff,
1310         0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1311         0x00, 0x85, 0x01, 0x00, 0x00, 0x00, 0x60, 0x00,
1312         0x00, 0x00, 0x00, 0x0a, 0x11, 0x40, 0x00, 0x00,
1313         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1314         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1315         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1316         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x35,
1317         0x00, 0x35, 0x00, 0x0a, 0xff, 0x6e, 0x00, 0x00,
1318 };
1319
1320 static const u8 ice_fdir_tcp6_gtpu4_eh_gre6_pkt[] = {
1321         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1322         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1323         0x00, 0x00, 0x00, 0x6e, 0x2f, 0x40, 0x00, 0x00,
1324         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1325         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1326         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1327         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1328         0x08, 0x00, 0x45, 0x00, 0x00, 0x6a, 0x00, 0x01,
1329         0x00, 0x00, 0x40, 0x11, 0x7c, 0x80, 0x7f, 0x00,
1330         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1331         0x08, 0x68, 0x00, 0x56, 0x53, 0x6b, 0x34, 0xff,
1332         0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1333         0x00, 0x85, 0x01, 0x00, 0x00, 0x00, 0x60, 0x00,
1334         0x00, 0x00, 0x00, 0x16, 0x06, 0x40, 0x00, 0x00,
1335         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1336         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1337         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1338         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14,
1339         0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1340         0x00, 0x00, 0x50, 0x02, 0x20, 0x00, 0x8f, 0x7b,
1341         0x00, 0x00, 0x00, 0x00,
1342 };
1343
1344 /* IPV4 GRE IPV4 GTPU DW IPV4 */
1345 static const u8 ice_fdir_ipv4_gtpu4_eh_dw_gre4_pkt[] = {
1346         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1347         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1348         0x00, 0x5a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1349         0x7c, 0x72, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1350         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1351         0x00, 0x42, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1352         0x7c, 0xa8, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1353         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x2e,
1354         0xba, 0x1d, 0x34, 0xff, 0x00, 0x1e, 0x00, 0x00,
1355         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
1356         0x00, 0x00, 0x45, 0x00, 0x00, 0x16, 0x00, 0x01,
1357         0x00, 0x00, 0x40, 0x00, 0x7c, 0xe5, 0x7f, 0x00,
1358         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00,
1359 };
1360
1361 static const u8 ice_fdir_udp4_gtpu4_eh_dw_gre4_pkt[] = {
1362         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1363         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1364         0x00, 0x62, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1365         0x7c, 0x6a, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1366         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1367         0x00, 0x4a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1368         0x7c, 0xa0, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1369         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x36,
1370         0xb8, 0x23, 0x34, 0xff, 0x00, 0x26, 0x00, 0x00,
1371         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
1372         0x00, 0x00, 0x45, 0x00, 0x00, 0x1e, 0x00, 0x01,
1373         0x00, 0x00, 0x40, 0x11, 0x7c, 0xcc, 0x7f, 0x00,
1374         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x35,
1375         0x00, 0x35, 0x00, 0x0a, 0x01, 0x6e, 0x00, 0x00,
1376 };
1377
1378 static const u8 ice_fdir_tcp4_gtpu4_eh_dw_gre4_pkt[] = {
1379         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1380         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1381         0x00, 0x6e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1382         0x7c, 0x5e, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1383         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1384         0x00, 0x56, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1385         0x7c, 0x94, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1386         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x42,
1387         0xb8, 0x00, 0x34, 0xff, 0x00, 0x32, 0x00, 0x00,
1388         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
1389         0x00, 0x00, 0x45, 0x00, 0x00, 0x2a, 0x00, 0x01,
1390         0x00, 0x00, 0x40, 0x06, 0x7c, 0xcb, 0x7f, 0x00,
1391         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x14,
1392         0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1393         0x00, 0x00, 0x50, 0x02, 0x20, 0x00, 0x91, 0x7a,
1394         0x00, 0x00, 0x00, 0x00,
1395 };
1396
1397 /* IPV4 GRE IPV4 GTPU DW IPV6 */
1398 static const u8 ice_fdir_ipv6_gtpu4_eh_dw_gre4_pkt[] = {
1399         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1400         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1401         0x00, 0x6e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1402         0x7c, 0x5e, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1403         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1404         0x00, 0x56, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1405         0x7c, 0x94, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1406         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x42,
1407         0x1e, 0x9d, 0x34, 0xff, 0x00, 0x32, 0x00, 0x00,
1408         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
1409         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x02,
1410         0x3b, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1411         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1412         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1413         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1414         0x00, 0x01, 0x00, 0x00,
1415 };
1416
1417 static const u8 ice_fdir_udp6_gtpu4_eh_dw_gre4_pkt[] = {
1418         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1419         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1420         0x00, 0x76, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1421         0x7c, 0x56, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1422         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1423         0x00, 0x5e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1424         0x7c, 0x8c, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1425         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x4a,
1426         0x48, 0x9a, 0x34, 0xff, 0x00, 0x3a, 0x00, 0x00,
1427         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
1428         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0a,
1429         0x11, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1430         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1431         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1432         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1433         0x00, 0x01, 0x00, 0x35, 0x00, 0x35, 0x00, 0x0a,
1434         0xff, 0x6e, 0x00, 0x00,
1435 };
1436
1437 static const u8 ice_fdir_tcp6_gtpu4_eh_dw_gre4_pkt[] = {
1438         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1439         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1440         0x00, 0x82, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1441         0x7c, 0x4a, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1442         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1443         0x00, 0x6a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1444         0x7c, 0x80, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1445         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x56,
1446         0x53, 0x6b, 0x34, 0xff, 0x00, 0x46, 0x00, 0x00,
1447         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00,
1448         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x16,
1449         0x06, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1450         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1451         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1452         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1453         0x00, 0x01, 0x00, 0x14, 0x00, 0x50, 0x00, 0x00,
1454         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02,
1455         0x20, 0x00, 0x8f, 0x7b, 0x00, 0x00, 0x00, 0x00,
1456 };
1457
1458 /* IPV6 GRE IPV4 GTPU DW IPV4 */
1459 static const u8 ice_fdir_ipv4_gtpu4_eh_dw_gre6_pkt[] = {
1460         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1461         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1462         0x00, 0x00, 0x00, 0x46, 0x2f, 0x40, 0x00, 0x00,
1463         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1464         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1465         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1466         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1467         0x08, 0x00, 0x45, 0x00, 0x00, 0x42, 0x00, 0x01,
1468         0x00, 0x00, 0x40, 0x11, 0x7c, 0xa8, 0x7f, 0x00,
1469         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1470         0x08, 0x68, 0x00, 0x2e, 0xba, 0x1d, 0x34, 0xff,
1471         0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1472         0x00, 0x85, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00,
1473         0x00, 0x16, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00,
1474         0x7c, 0xe5, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1475         0x00, 0x01, 0x00, 0x00,
1476 };
1477
1478 static const u8 ice_fdir_udp4_gtpu4_eh_dw_gre6_pkt[] = {
1479         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1480         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1481         0x00, 0x00, 0x00, 0x4e, 0x2f, 0x40, 0x00, 0x00,
1482         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1483         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1484         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1485         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1486         0x08, 0x00, 0x45, 0x00, 0x00, 0x4a, 0x00, 0x01,
1487         0x00, 0x00, 0x40, 0x11, 0x7c, 0xa0, 0x7f, 0x00,
1488         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1489         0x08, 0x68, 0x00, 0x36, 0xb8, 0x23, 0x34, 0xff,
1490         0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1491         0x00, 0x85, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00,
1492         0x00, 0x1e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1493         0x7c, 0xcc, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1494         0x00, 0x01, 0x00, 0x35, 0x00, 0x35, 0x00, 0x0a,
1495         0x01, 0x6e, 0x00, 0x00,
1496 };
1497
1498 static const u8 ice_fdir_tcp4_gtpu4_eh_dw_gre6_pkt[] = {
1499         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1500         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1501         0x00, 0x00, 0x00, 0x5a, 0x2f, 0x40, 0x00, 0x00,
1502         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1503         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1504         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1505         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1506         0x08, 0x00, 0x45, 0x00, 0x00, 0x56, 0x00, 0x01,
1507         0x00, 0x00, 0x40, 0x11, 0x7c, 0x94, 0x7f, 0x00,
1508         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1509         0x08, 0x68, 0x00, 0x42, 0xb8, 0x00, 0x34, 0xff,
1510         0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1511         0x00, 0x85, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00,
1512         0x00, 0x2a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x06,
1513         0x7c, 0xcb, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1514         0x00, 0x01, 0x00, 0x14, 0x00, 0x50, 0x00, 0x00,
1515         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02,
1516         0x20, 0x00, 0x91, 0x7a, 0x00, 0x00, 0x00, 0x00,
1517 };
1518
1519 /* IPV6 GRE IPV4 GTPU DW IPV6 */
1520 static const u8 ice_fdir_ipv6_gtpu4_eh_dw_gre6_pkt[] = {
1521         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1522         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1523         0x00, 0x00, 0x00, 0x5a, 0x2f, 0x40, 0x00, 0x00,
1524         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1525         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1526         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1527         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1528         0x08, 0x00, 0x45, 0x00, 0x00, 0x56, 0x00, 0x01,
1529         0x00, 0x00, 0x40, 0x11, 0x7c, 0x94, 0x7f, 0x00,
1530         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1531         0x08, 0x68, 0x00, 0x42, 0x1e, 0x9d, 0x34, 0xff,
1532         0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1533         0x00, 0x85, 0x01, 0x00, 0x00, 0x00, 0x60, 0x00,
1534         0x00, 0x00, 0x00, 0x02, 0x3b, 0x40, 0x00, 0x00,
1535         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1536         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1537         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1538         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1539 };
1540
1541 static const u8 ice_fdir_udp6_gtpu4_eh_dw_gre6_pkt[] = {
1542         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1543         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1544         0x00, 0x00, 0x00, 0x62, 0x2f, 0x40, 0x00, 0x00,
1545         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1546         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1547         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1548         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1549         0x08, 0x00, 0x45, 0x00, 0x00, 0x5e, 0x00, 0x01,
1550         0x00, 0x00, 0x40, 0x11, 0x7c, 0x8c, 0x7f, 0x00,
1551         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1552         0x08, 0x68, 0x00, 0x4a, 0x48, 0x9a, 0x34, 0xff,
1553         0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1554         0x00, 0x85, 0x01, 0x00, 0x00, 0x00, 0x60, 0x00,
1555         0x00, 0x00, 0x00, 0x0a, 0x11, 0x40, 0x00, 0x00,
1556         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1557         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1558         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1559         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x35,
1560         0x00, 0x35, 0x00, 0x0a, 0xff, 0x6e, 0x00, 0x00,
1561 };
1562
1563 static const u8 ice_fdir_tcp6_gtpu4_eh_dw_gre6_pkt[] = {
1564         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1565         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1566         0x00, 0x00, 0x00, 0x6e, 0x2f, 0x40, 0x00, 0x00,
1567         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1568         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1569         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1570         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1571         0x08, 0x00, 0x45, 0x00, 0x00, 0x6a, 0x00, 0x01,
1572         0x00, 0x00, 0x40, 0x11, 0x7c, 0x80, 0x7f, 0x00,
1573         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1574         0x08, 0x68, 0x00, 0x56, 0x53, 0x6b, 0x34, 0xff,
1575         0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1576         0x00, 0x85, 0x01, 0x00, 0x00, 0x00, 0x60, 0x00,
1577         0x00, 0x00, 0x00, 0x16, 0x06, 0x40, 0x00, 0x00,
1578         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1579         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1580         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1581         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14,
1582         0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1583         0x00, 0x00, 0x50, 0x02, 0x20, 0x00, 0x8f, 0x7b,
1584         0x00, 0x00, 0x00, 0x00,
1585 };
1586
1587 /* IPV4 GRE IPV4 GTPU UP IPV4 */
1588 static const u8 ice_fdir_ipv4_gtpu4_eh_up_gre4_pkt[] = {
1589         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1590         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1591         0x00, 0x5a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1592         0x7c, 0x72, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1593         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1594         0x00, 0x42, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1595         0x7c, 0xa8, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1596         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x2e,
1597         0xba, 0x0d, 0x34, 0xff, 0x00, 0x1e, 0x00, 0x00,
1598         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x10,
1599         0x00, 0x00, 0x45, 0x00, 0x00, 0x16, 0x00, 0x01,
1600         0x00, 0x00, 0x40, 0x00, 0x7c, 0xe5, 0x7f, 0x00,
1601         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00,
1602 };
1603
1604 static const u8 ice_fdir_udp4_gtpu4_eh_up_gre4_pkt[] = {
1605         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1606         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1607         0x00, 0x62, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1608         0x7c, 0x6a, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1609         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1610         0x00, 0x4a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1611         0x7c, 0xa0, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1612         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x36,
1613         0xb8, 0x13, 0x34, 0xff, 0x00, 0x26, 0x00, 0x00,
1614         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x10,
1615         0x00, 0x00, 0x45, 0x00, 0x00, 0x1e, 0x00, 0x01,
1616         0x00, 0x00, 0x40, 0x11, 0x7c, 0xcc, 0x7f, 0x00,
1617         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x35,
1618         0x00, 0x35, 0x00, 0x0a, 0x01, 0x6e, 0x00, 0x00,
1619 };
1620
1621 static const u8 ice_fdir_tcp4_gtpu4_eh_up_gre4_pkt[] = {
1622         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1623         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1624         0x00, 0x6e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1625         0x7c, 0x5e, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1626         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1627         0x00, 0x56, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1628         0x7c, 0x94, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1629         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x42,
1630         0xb7, 0xf0, 0x34, 0xff, 0x00, 0x32, 0x00, 0x00,
1631         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x10,
1632         0x00, 0x00, 0x45, 0x00, 0x00, 0x2a, 0x00, 0x01,
1633         0x00, 0x00, 0x40, 0x06, 0x7c, 0xcb, 0x7f, 0x00,
1634         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x14,
1635         0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1636         0x00, 0x00, 0x50, 0x02, 0x20, 0x00, 0x91, 0x7a,
1637         0x00, 0x00, 0x00, 0x00,
1638 };
1639
1640 /* IPV4 GRE IPV4 GTPU UP IPV6 */
1641 static const u8 ice_fdir_ipv6_gtpu4_eh_up_gre4_pkt[] = {
1642         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1643         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1644         0x00, 0x6e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1645         0x7c, 0x5e, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1646         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1647         0x00, 0x56, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1648         0x7c, 0x94, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1649         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x42,
1650         0x1e, 0x8d, 0x34, 0xff, 0x00, 0x32, 0x00, 0x00,
1651         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x10,
1652         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x02,
1653         0x3b, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1654         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1655         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1656         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1657         0x00, 0x01, 0x00, 0x00,
1658 };
1659
1660 static const u8 ice_fdir_udp6_gtpu4_eh_up_gre4_pkt[] = {
1661         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1662         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1663         0x00, 0x76, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1664         0x7c, 0x56, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1665         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1666         0x00, 0x5e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1667         0x7c, 0x8c, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1668         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x4a,
1669         0x48, 0x8a, 0x34, 0xff, 0x00, 0x3a, 0x00, 0x00,
1670         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x10,
1671         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0a,
1672         0x11, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1673         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1674         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1675         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1676         0x00, 0x01, 0x00, 0x35, 0x00, 0x35, 0x00, 0x0a,
1677         0xff, 0x6e, 0x00, 0x00,
1678 };
1679
1680 static const u8 ice_fdir_tcp6_gtpu4_eh_up_gre4_pkt[] = {
1681         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1682         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1683         0x00, 0x82, 0x00, 0x01, 0x00, 0x00, 0x40, 0x2f,
1684         0x7c, 0x4a, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1685         0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1686         0x00, 0x6a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1687         0x7c, 0x80, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1688         0x00, 0x01, 0x08, 0x68, 0x08, 0x68, 0x00, 0x56,
1689         0x53, 0x5b, 0x34, 0xff, 0x00, 0x46, 0x00, 0x00,
1690         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x01, 0x10,
1691         0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x16,
1692         0x06, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1693         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1694         0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1695         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1696         0x00, 0x01, 0x00, 0x14, 0x00, 0x50, 0x00, 0x00,
1697         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02,
1698         0x20, 0x00, 0x8f, 0x7b, 0x00, 0x00, 0x00, 0x00,
1699 };
1700
1701 /* IPV6 GRE IPV4 GTPU UP IPV4 */
1702 static const u8 ice_fdir_ipv4_gtpu4_eh_up_gre6_pkt[] = {
1703         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1704         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1705         0x00, 0x00, 0x00, 0x46, 0x2f, 0x40, 0x00, 0x00,
1706         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1707         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1708         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1709         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1710         0x08, 0x00, 0x45, 0x00, 0x00, 0x42, 0x00, 0x01,
1711         0x00, 0x00, 0x40, 0x11, 0x7c, 0xa8, 0x7f, 0x00,
1712         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1713         0x08, 0x68, 0x00, 0x2e, 0xba, 0x0d, 0x34, 0xff,
1714         0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1715         0x00, 0x85, 0x01, 0x10, 0x00, 0x00, 0x45, 0x00,
1716         0x00, 0x16, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00,
1717         0x7c, 0xe5, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1718         0x00, 0x01, 0x00, 0x00,
1719 };
1720
1721 static const u8 ice_fdir_udp4_gtpu4_eh_up_gre6_pkt[] = {
1722         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1723         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1724         0x00, 0x00, 0x00, 0x4e, 0x2f, 0x40, 0x00, 0x00,
1725         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1726         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1727         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1728         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1729         0x08, 0x00, 0x45, 0x00, 0x00, 0x4a, 0x00, 0x01,
1730         0x00, 0x00, 0x40, 0x11, 0x7c, 0xa0, 0x7f, 0x00,
1731         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1732         0x08, 0x68, 0x00, 0x36, 0xb8, 0x13, 0x34, 0xff,
1733         0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1734         0x00, 0x85, 0x01, 0x10, 0x00, 0x00, 0x45, 0x00,
1735         0x00, 0x1e, 0x00, 0x01, 0x00, 0x00, 0x40, 0x11,
1736         0x7c, 0xcc, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1737         0x00, 0x01, 0x00, 0x35, 0x00, 0x35, 0x00, 0x0a,
1738         0x01, 0x6e, 0x00, 0x00,
1739 };
1740
1741 static const u8 ice_fdir_tcp4_gtpu4_eh_up_gre6_pkt[] = {
1742         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1743         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1744         0x00, 0x00, 0x00, 0x5a, 0x2f, 0x40, 0x00, 0x00,
1745         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1746         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1747         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1748         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1749         0x08, 0x00, 0x45, 0x00, 0x00, 0x56, 0x00, 0x01,
1750         0x00, 0x00, 0x40, 0x11, 0x7c, 0x94, 0x7f, 0x00,
1751         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1752         0x08, 0x68, 0x00, 0x42, 0xb7, 0xf0, 0x34, 0xff,
1753         0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1754         0x00, 0x85, 0x01, 0x10, 0x00, 0x00, 0x45, 0x00,
1755         0x00, 0x2a, 0x00, 0x01, 0x00, 0x00, 0x40, 0x06,
1756         0x7c, 0xcb, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
1757         0x00, 0x01, 0x00, 0x14, 0x00, 0x50, 0x00, 0x00,
1758         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02,
1759         0x20, 0x00, 0x91, 0x7a, 0x00, 0x00, 0x00, 0x00,
1760 };
1761
1762 /* IPV6 GRE IPV4 GTPU UP IPV6 */
1763 static const u8 ice_fdir_ipv6_gtpu4_eh_up_gre6_pkt[] = {
1764         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1765         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1766         0x00, 0x00, 0x00, 0x5a, 0x2f, 0x40, 0x00, 0x00,
1767         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1768         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1769         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1770         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1771         0x08, 0x00, 0x45, 0x00, 0x00, 0x56, 0x00, 0x01,
1772         0x00, 0x00, 0x40, 0x11, 0x7c, 0x94, 0x7f, 0x00,
1773         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1774         0x08, 0x68, 0x00, 0x42, 0x1e, 0x8d, 0x34, 0xff,
1775         0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1776         0x00, 0x85, 0x01, 0x10, 0x00, 0x00, 0x60, 0x00,
1777         0x00, 0x00, 0x00, 0x02, 0x3b, 0x40, 0x00, 0x00,
1778         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1779         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1780         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1781         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1782 };
1783
1784 static const u8 ice_fdir_udp6_gtpu4_eh_up_gre6_pkt[] = {
1785         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1786         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1787         0x00, 0x00, 0x00, 0x62, 0x2f, 0x40, 0x00, 0x00,
1788         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1789         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1790         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1791         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1792         0x08, 0x00, 0x45, 0x00, 0x00, 0x5e, 0x00, 0x01,
1793         0x00, 0x00, 0x40, 0x11, 0x7c, 0x8c, 0x7f, 0x00,
1794         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1795         0x08, 0x68, 0x00, 0x4a, 0x48, 0x8a, 0x34, 0xff,
1796         0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1797         0x00, 0x85, 0x01, 0x10, 0x00, 0x00, 0x60, 0x00,
1798         0x00, 0x00, 0x00, 0x0a, 0x11, 0x40, 0x00, 0x00,
1799         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1800         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1801         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1802         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x35,
1803         0x00, 0x35, 0x00, 0x0a, 0xff, 0x6e, 0x00, 0x00,
1804 };
1805
1806 static const u8 ice_fdir_tcp6_gtpu4_eh_up_gre6_pkt[] = {
1807         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
1808         0x00, 0x00, 0x00, 0x00, 0x86, 0xdd, 0x60, 0x00,
1809         0x00, 0x00, 0x00, 0x6e, 0x2f, 0x40, 0x00, 0x00,
1810         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1811         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1812         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1813         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1814         0x08, 0x00, 0x45, 0x00, 0x00, 0x6a, 0x00, 0x01,
1815         0x00, 0x00, 0x40, 0x11, 0x7c, 0x80, 0x7f, 0x00,
1816         0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x08, 0x68,
1817         0x08, 0x68, 0x00, 0x56, 0x53, 0x5b, 0x34, 0xff,
1818         0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1819         0x00, 0x85, 0x01, 0x10, 0x00, 0x00, 0x60, 0x00,
1820         0x00, 0x00, 0x00, 0x16, 0x06, 0x40, 0x00, 0x00,
1821         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1822         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
1823         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1824         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14,
1825         0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1826         0x00, 0x00, 0x50, 0x02, 0x20, 0x00, 0x8f, 0x7b,
1827         0x00, 0x00, 0x00, 0x00,
1828 };
1829
1830 static const u8 ice_fdir_tcpv6_pkt[] = {
1831         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1832         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
1833         0x00, 0x00, 0x00, 0x14, 0x06, 0x40, 0x00, 0x00,
1834         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1835         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1836         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1837         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1838         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1839         0x00, 0x00, 0x50, 0x00, 0x20, 0x00, 0x00, 0x00,
1840         0x00, 0x00,
1841 };
1842
1843 static const u8 ice_fdir_udpv6_pkt[] = {
1844         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1845         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
1846         0x00, 0x00, 0x00, 0x08, 0x11, 0x40, 0x00, 0x00,
1847         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1848         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1849         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1850         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1851         0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
1852 };
1853
1854 static const u8 ice_fdir_sctpv6_pkt[] = {
1855         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1856         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
1857         0x00, 0x00, 0x00, 0x0C, 0x84, 0x40, 0x00, 0x00,
1858         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1859         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1860         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1861         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1862         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1863         0x00, 0x00,
1864 };
1865
1866 static const u8 ice_fdir_ipv6_pkt[] = {
1867         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1868         0x00, 0x00, 0x00, 0x00, 0x86, 0xDD, 0x60, 0x00,
1869         0x00, 0x00, 0x00, 0x00, 0x3B, 0x40, 0x00, 0x00,
1870         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1871         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1872         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1873         0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1874 };
1875
1876 static const u8 ice_fdir_tcp4_tun_pkt[] = {
1877         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1878         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1879         0x00, 0x5a, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
1880         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1881         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1882         0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00,
1883         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1884         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
1885         0x45, 0x00, 0x00, 0x28, 0x00, 0x00, 0x40, 0x00,
1886         0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1887         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1888         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1889         0x50, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
1890 };
1891
1892 static const u8 ice_fdir_udp4_tun_pkt[] = {
1893         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1894         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1895         0x00, 0x4e, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
1896         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1897         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1898         0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00,
1899         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1900         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
1901         0x45, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x40, 0x00,
1902         0x40, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1903         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1904         0x00, 0x00, 0x00, 0x00,
1905 };
1906
1907 static const u8 ice_fdir_sctp4_tun_pkt[] = {
1908         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1909         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1910         0x00, 0x52, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
1911         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1912         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1913         0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00,
1914         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1915         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
1916         0x45, 0x00, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00,
1917         0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1918         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1919         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1920 };
1921
1922 static const u8 ice_fdir_ip4_tun_pkt[] = {
1923         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1924         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1925         0x00, 0x46, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
1926         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1927         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1928         0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00,
1929         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1930         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
1931         0x45, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00,
1932         0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1933         0x00, 0x00, 0x00, 0x00,
1934 };
1935
1936 static const u8 ice_fdir_tcp6_tun_pkt[] = {
1937         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1938         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1939         0x00, 0x6e, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
1940         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1941         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1942         0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00,
1943         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1944         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xdd,
1945         0x60, 0x00, 0x00, 0x00, 0x00, 0x14, 0x06, 0x40,
1946         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1947         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1948         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1949         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1950         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1951         0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x20, 0x00,
1952         0x00, 0x00, 0x00, 0x00,
1953 };
1954
1955 static const u8 ice_fdir_udp6_tun_pkt[] = {
1956         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1957         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1958         0x00, 0x62, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
1959         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1960         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1961         0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00,
1962         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1963         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xdd,
1964         0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x11, 0x40,
1965         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1966         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1967         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1968         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1969         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1970 };
1971
1972 static const u8 ice_fdir_sctp6_tun_pkt[] = {
1973         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1974         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1975         0x00, 0x66, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
1976         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1977         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1978         0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00,
1979         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1980         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xdd,
1981         0x60, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x84, 0x40,
1982         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1983         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1984         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1985         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1986         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1987         0x00, 0x00, 0x00, 0x00,
1988 };
1989
1990 static const u8 ice_fdir_ip6_tun_pkt[] = {
1991         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1992         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
1993         0x00, 0x5a, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
1994         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1995         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1996         0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00,
1997         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1998         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xdd,
1999         0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x40,
2000         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2001         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2002         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2003         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2004 };
2005
2006 /* Flow Director no-op training packet table */
2007 static const struct ice_fdir_base_pkt ice_fdir_pkt[] = {
2008         {
2009                 ICE_FLTR_PTYPE_NONF_IPV4_TCP,
2010                 sizeof(ice_fdir_tcpv4_pkt), ice_fdir_tcpv4_pkt,
2011                 sizeof(ice_fdir_tcp4_tun_pkt), ice_fdir_tcp4_tun_pkt,
2012         },
2013         {
2014                 ICE_FLTR_PTYPE_NONF_IPV4_UDP,
2015                 sizeof(ice_fdir_udpv4_pkt), ice_fdir_udpv4_pkt,
2016                 sizeof(ice_fdir_udp4_tun_pkt), ice_fdir_udp4_tun_pkt,
2017         },
2018         {
2019                 ICE_FLTR_PTYPE_NONF_IPV4_SCTP,
2020                 sizeof(ice_fdir_sctpv4_pkt), ice_fdir_sctpv4_pkt,
2021                 sizeof(ice_fdir_sctp4_tun_pkt), ice_fdir_sctp4_tun_pkt,
2022         },
2023         {
2024                 ICE_FLTR_PTYPE_NONF_IPV4_OTHER,
2025                 sizeof(ice_fdir_ipv4_pkt), ice_fdir_ipv4_pkt,
2026                 sizeof(ice_fdir_ip4_tun_pkt), ice_fdir_ip4_tun_pkt,
2027         },
2028         {
2029                 ICE_FLTR_PTYPE_FRAG_IPV4,
2030                 sizeof(ice_fdir_ipv4_frag_pkt), ice_fdir_ipv4_frag_pkt,
2031                 sizeof(ice_fdir_ipv4_frag_pkt), ice_fdir_ipv4_frag_pkt,
2032         },
2033         {
2034                 ICE_FLTR_PTYPE_FRAG_IPV6,
2035                 sizeof(ice_fdir_ipv6_frag_pkt), ice_fdir_ipv6_frag_pkt,
2036                 sizeof(ice_fdir_ipv6_frag_pkt), ice_fdir_ipv6_frag_pkt,
2037         },
2038         {
2039                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU,
2040                 sizeof(ice_fdir_ipv4_gtpu4_pkt),
2041                 ice_fdir_ipv4_gtpu4_pkt,
2042                 sizeof(ice_fdir_ipv4_gtpu4_pkt),
2043                 ice_fdir_ipv4_gtpu4_pkt,
2044         },
2045         {
2046                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH,
2047                 sizeof(ice_fdir_ipv4_gtpu4_eh_pkt),
2048                 ice_fdir_ipv4_gtpu4_eh_pkt,
2049                 sizeof(ice_fdir_ipv4_gtpu4_eh_pkt),
2050                 ice_fdir_ipv4_gtpu4_eh_pkt,
2051         },
2052         {
2053                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW,
2054                 sizeof(ice_fdir_ipv4_gtpu4_eh_dw_pkt),
2055                 ice_fdir_ipv4_gtpu4_eh_dw_pkt,
2056                 sizeof(ice_fdir_ipv4_gtpu4_eh_dw_pkt),
2057                 ice_fdir_ipv4_gtpu4_eh_dw_pkt,
2058         },
2059         {
2060                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP,
2061                 sizeof(ice_fdir_ipv4_gtpu4_eh_up_pkt),
2062                 ice_fdir_ipv4_gtpu4_eh_up_pkt,
2063                 sizeof(ice_fdir_ipv4_gtpu4_eh_up_pkt),
2064                 ice_fdir_ipv4_gtpu4_eh_up_pkt,
2065         },
2066         /* IPV4 GRE IPV4 GTPU */
2067         {
2068                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU,
2069                 sizeof(ice_fdir_ipv4_gtpu4_gre4_pkt),
2070                 ice_fdir_ipv4_gtpu4_gre4_pkt,
2071                 sizeof(ice_fdir_ipv4_gtpu4_gre4_pkt),
2072                 ice_fdir_ipv4_gtpu4_gre4_pkt,
2073         },
2074         /* IPV4 GRE IPV4 GTPU EH */
2075         {
2076                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH,
2077                 sizeof(ice_fdir_ipv4_gtpu4_eh_gre4_pkt),
2078                 ice_fdir_ipv4_gtpu4_eh_gre4_pkt,
2079                 sizeof(ice_fdir_ipv4_gtpu4_eh_gre4_pkt),
2080                 ice_fdir_ipv4_gtpu4_eh_gre4_pkt,
2081         },
2082         /* IPV4 GRE IPV4 GTPU DW */
2083         {
2084                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW,
2085                 sizeof(ice_fdir_ipv4_gtpu4_eh_dw_gre4_pkt),
2086                 ice_fdir_ipv4_gtpu4_eh_dw_gre4_pkt,
2087                 sizeof(ice_fdir_ipv4_gtpu4_eh_dw_gre4_pkt),
2088                 ice_fdir_ipv4_gtpu4_eh_dw_gre4_pkt,
2089         },
2090         /* IPV4 GRE IPV4 GTPU UP */
2091         {
2092                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP,
2093                 sizeof(ice_fdir_ipv4_gtpu4_eh_up_gre4_pkt),
2094                 ice_fdir_ipv4_gtpu4_eh_up_gre4_pkt,
2095                 sizeof(ice_fdir_ipv4_gtpu4_eh_up_gre4_pkt),
2096                 ice_fdir_ipv4_gtpu4_eh_up_gre4_pkt,
2097         },
2098         /* IPV6 GRE IPV4 GTPU */
2099         {
2100                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU,
2101                 sizeof(ice_fdir_ipv4_gtpu4_gre6_pkt),
2102                 ice_fdir_ipv4_gtpu4_gre6_pkt,
2103                 sizeof(ice_fdir_ipv4_gtpu4_gre6_pkt),
2104                 ice_fdir_ipv4_gtpu4_gre6_pkt,
2105         },
2106         /* IPV6 GRE IPV4 GTPU EH */
2107         {
2108                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH,
2109                 sizeof(ice_fdir_ipv4_gtpu4_eh_gre6_pkt),
2110                 ice_fdir_ipv4_gtpu4_eh_gre6_pkt,
2111                 sizeof(ice_fdir_ipv4_gtpu4_eh_gre6_pkt),
2112                 ice_fdir_ipv4_gtpu4_eh_gre6_pkt,
2113         },
2114         /* IPV6 GRE IPV4 GTPU DW */
2115         {
2116                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW,
2117                 sizeof(ice_fdir_ipv4_gtpu4_eh_dw_gre6_pkt),
2118                 ice_fdir_ipv4_gtpu4_eh_dw_gre6_pkt,
2119                 sizeof(ice_fdir_ipv4_gtpu4_eh_dw_gre6_pkt),
2120                 ice_fdir_ipv4_gtpu4_eh_dw_gre6_pkt,
2121         },
2122         /* IPV6 GRE IPV4 GTPU UP */
2123         {
2124                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP,
2125                 sizeof(ice_fdir_ipv4_gtpu4_eh_up_gre6_pkt),
2126                 ice_fdir_ipv4_gtpu4_eh_up_gre6_pkt,
2127                 sizeof(ice_fdir_ipv4_gtpu4_eh_up_gre6_pkt),
2128                 ice_fdir_ipv4_gtpu4_eh_up_gre6_pkt,
2129         },
2130         {
2131                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4,
2132                 sizeof(ice_fdir_ipv4_gtpu4_pkt),
2133                 ice_fdir_ipv4_gtpu4_pkt,
2134                 sizeof(ice_fdir_ipv4_gtpu4_pkt),
2135                 ice_fdir_ipv4_gtpu4_pkt,
2136         },
2137         {
2138                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4_UDP,
2139                 sizeof(ice_fdir_udp4_gtpu4_pkt),
2140                 ice_fdir_udp4_gtpu4_pkt,
2141                 sizeof(ice_fdir_udp4_gtpu4_pkt),
2142                 ice_fdir_udp4_gtpu4_pkt,
2143         },
2144         {
2145                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4_TCP,
2146                 sizeof(ice_fdir_tcp4_gtpu4_pkt),
2147                 ice_fdir_tcp4_gtpu4_pkt,
2148                 sizeof(ice_fdir_tcp4_gtpu4_pkt),
2149                 ice_fdir_tcp4_gtpu4_pkt,
2150         },
2151         {
2152                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV6,
2153                 sizeof(ice_fdir_ipv6_gtpu4_pkt),
2154                 ice_fdir_ipv6_gtpu4_pkt,
2155                 sizeof(ice_fdir_ipv6_gtpu4_pkt),
2156                 ice_fdir_ipv6_gtpu4_pkt,
2157         },
2158         {
2159                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV6_UDP,
2160                 sizeof(ice_fdir_udp6_gtpu4_pkt),
2161                 ice_fdir_udp6_gtpu4_pkt,
2162                 sizeof(ice_fdir_udp6_gtpu4_pkt),
2163                 ice_fdir_udp6_gtpu4_pkt,
2164         },
2165         {
2166                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV6_TCP,
2167                 sizeof(ice_fdir_tcp6_gtpu4_pkt),
2168                 ice_fdir_tcp6_gtpu4_pkt,
2169                 sizeof(ice_fdir_tcp6_gtpu4_pkt),
2170                 ice_fdir_tcp6_gtpu4_pkt,
2171         },
2172         {
2173                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV4,
2174                 sizeof(ice_fdir_ipv4_gtpu4_eh_pkt),
2175                 ice_fdir_ipv4_gtpu4_eh_pkt,
2176                 sizeof(ice_fdir_ipv4_gtpu4_eh_pkt),
2177                 ice_fdir_ipv4_gtpu4_eh_pkt,
2178         },
2179         {
2180                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV4_UDP,
2181                 sizeof(ice_fdir_udp4_gtpu4_eh_pkt),
2182                 ice_fdir_udp4_gtpu4_eh_pkt,
2183                 sizeof(ice_fdir_udp4_gtpu4_eh_pkt),
2184                 ice_fdir_udp4_gtpu4_eh_pkt,
2185         },
2186         {
2187                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV4_TCP,
2188                 sizeof(ice_fdir_tcp4_gtpu4_eh_pkt),
2189                 ice_fdir_tcp4_gtpu4_eh_pkt,
2190                 sizeof(ice_fdir_tcp4_gtpu4_eh_pkt),
2191                 ice_fdir_tcp4_gtpu4_eh_pkt,
2192         },
2193         {
2194                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV6,
2195                 sizeof(ice_fdir_ipv6_gtpu4_eh_pkt),
2196                 ice_fdir_ipv6_gtpu4_eh_pkt,
2197                 sizeof(ice_fdir_ipv6_gtpu4_eh_pkt),
2198                 ice_fdir_ipv6_gtpu4_eh_pkt,
2199         },
2200         {
2201                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV6_UDP,
2202                 sizeof(ice_fdir_udp6_gtpu4_eh_pkt),
2203                 ice_fdir_udp6_gtpu4_eh_pkt,
2204                 sizeof(ice_fdir_udp6_gtpu4_eh_pkt),
2205                 ice_fdir_udp6_gtpu4_eh_pkt,
2206         },
2207         {
2208                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV6_TCP,
2209                 sizeof(ice_fdir_tcp6_gtpu4_eh_pkt),
2210                 ice_fdir_tcp6_gtpu4_eh_pkt,
2211                 sizeof(ice_fdir_tcp6_gtpu4_eh_pkt),
2212                 ice_fdir_tcp6_gtpu4_eh_pkt,
2213         },
2214         {
2215                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV4,
2216                 sizeof(ice_fdir_ipv4_gtpu4_eh_dw_pkt),
2217                 ice_fdir_ipv4_gtpu4_eh_dw_pkt,
2218                 sizeof(ice_fdir_ipv4_gtpu4_eh_dw_pkt),
2219                 ice_fdir_ipv4_gtpu4_eh_dw_pkt,
2220         },
2221         {
2222                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV4_UDP,
2223                 sizeof(ice_fdir_udp4_gtpu4_eh_dw_pkt),
2224                 ice_fdir_udp4_gtpu4_eh_dw_pkt,
2225                 sizeof(ice_fdir_udp4_gtpu4_eh_dw_pkt),
2226                 ice_fdir_udp4_gtpu4_eh_dw_pkt,
2227         },
2228         {
2229                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV4_TCP,
2230                 sizeof(ice_fdir_tcp4_gtpu4_eh_dw_pkt),
2231                 ice_fdir_tcp4_gtpu4_eh_dw_pkt,
2232                 sizeof(ice_fdir_tcp4_gtpu4_eh_dw_pkt),
2233                 ice_fdir_tcp4_gtpu4_eh_dw_pkt,
2234         },
2235         {
2236                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV6,
2237                 sizeof(ice_fdir_ipv6_gtpu4_eh_dw_pkt),
2238                 ice_fdir_ipv6_gtpu4_eh_dw_pkt,
2239                 sizeof(ice_fdir_ipv6_gtpu4_eh_dw_pkt),
2240                 ice_fdir_ipv6_gtpu4_eh_dw_pkt,
2241         },
2242         {
2243                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV6_UDP,
2244                 sizeof(ice_fdir_udp6_gtpu4_eh_dw_pkt),
2245                 ice_fdir_udp6_gtpu4_eh_dw_pkt,
2246                 sizeof(ice_fdir_udp6_gtpu4_eh_dw_pkt),
2247                 ice_fdir_udp6_gtpu4_eh_dw_pkt,
2248         },
2249         {
2250                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV6_TCP,
2251                 sizeof(ice_fdir_tcp6_gtpu4_eh_dw_pkt),
2252                 ice_fdir_tcp6_gtpu4_eh_dw_pkt,
2253                 sizeof(ice_fdir_tcp6_gtpu4_eh_dw_pkt),
2254                 ice_fdir_tcp6_gtpu4_eh_dw_pkt,
2255         },
2256         {
2257                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV4,
2258                 sizeof(ice_fdir_ipv4_gtpu4_eh_up_pkt),
2259                 ice_fdir_ipv4_gtpu4_eh_up_pkt,
2260                 sizeof(ice_fdir_ipv4_gtpu4_eh_up_pkt),
2261                 ice_fdir_ipv4_gtpu4_eh_up_pkt,
2262         },
2263         {
2264                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV4_UDP,
2265                 sizeof(ice_fdir_udp4_gtpu4_eh_up_pkt),
2266                 ice_fdir_udp4_gtpu4_eh_up_pkt,
2267                 sizeof(ice_fdir_udp4_gtpu4_eh_up_pkt),
2268                 ice_fdir_udp4_gtpu4_eh_up_pkt,
2269         },
2270         {
2271                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV4_TCP,
2272                 sizeof(ice_fdir_tcp4_gtpu4_eh_up_pkt),
2273                 ice_fdir_tcp4_gtpu4_eh_up_pkt,
2274                 sizeof(ice_fdir_tcp4_gtpu4_eh_up_pkt),
2275                 ice_fdir_tcp4_gtpu4_eh_up_pkt,
2276         },
2277         {
2278                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV6,
2279                 sizeof(ice_fdir_ipv6_gtpu4_eh_up_pkt),
2280                 ice_fdir_ipv6_gtpu4_eh_up_pkt,
2281                 sizeof(ice_fdir_ipv6_gtpu4_eh_up_pkt),
2282                 ice_fdir_ipv6_gtpu4_eh_up_pkt,
2283         },
2284         {
2285                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV6_UDP,
2286                 sizeof(ice_fdir_udp6_gtpu4_eh_up_pkt),
2287                 ice_fdir_udp6_gtpu4_eh_up_pkt,
2288                 sizeof(ice_fdir_udp6_gtpu4_eh_up_pkt),
2289                 ice_fdir_udp6_gtpu4_eh_up_pkt,
2290         },
2291         {
2292                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV6_TCP,
2293                 sizeof(ice_fdir_tcp6_gtpu4_eh_up_pkt),
2294                 ice_fdir_tcp6_gtpu4_eh_up_pkt,
2295                 sizeof(ice_fdir_tcp6_gtpu4_eh_up_pkt),
2296                 ice_fdir_tcp6_gtpu4_eh_up_pkt,
2297         },
2298         {
2299                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4_ICMP,
2300                 sizeof(ice_fdir_icmp4_gtpu4_pkt),
2301                 ice_fdir_icmp4_gtpu4_pkt,
2302                 sizeof(ice_fdir_icmp4_gtpu4_pkt),
2303                 ice_fdir_icmp4_gtpu4_pkt,
2304         },
2305         {
2306                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4_OTHER,
2307                 sizeof(ice_fdir_ipv4_gtpu4_pkt),
2308                 ice_fdir_ipv4_gtpu4_pkt,
2309                 sizeof(ice_fdir_ipv4_gtpu4_pkt),
2310                 ice_fdir_ipv4_gtpu4_pkt,
2311         },
2312         {
2313                 ICE_FLTR_PTYPE_NONF_IPV6_GTPU,
2314                 sizeof(ice_fdir_ipv6_gtpu6_pkt),
2315                 ice_fdir_ipv6_gtpu6_pkt,
2316                 sizeof(ice_fdir_ipv6_gtpu6_pkt),
2317                 ice_fdir_ipv6_gtpu6_pkt,
2318         },
2319         {
2320                 ICE_FLTR_PTYPE_NONF_IPV6_GTPU_EH,
2321                 sizeof(ice_fdir_ipv6_gtpu6_eh_pkt),
2322                 ice_fdir_ipv6_gtpu6_eh_pkt,
2323                 sizeof(ice_fdir_ipv6_gtpu6_eh_pkt),
2324                 ice_fdir_ipv6_gtpu6_eh_pkt,
2325         },
2326         {
2327                 ICE_FLTR_PTYPE_NONF_IPV6_GTPU_EH_DW,
2328                 sizeof(ice_fdir_ipv6_gtpu6_eh_dw_pkt),
2329                 ice_fdir_ipv6_gtpu6_eh_dw_pkt,
2330                 sizeof(ice_fdir_ipv6_gtpu6_eh_dw_pkt),
2331                 ice_fdir_ipv6_gtpu6_eh_dw_pkt,
2332         },
2333         {
2334                 ICE_FLTR_PTYPE_NONF_IPV6_GTPU_EH_UP,
2335                 sizeof(ice_fdir_ipv6_gtpu6_eh_up_pkt),
2336                 ice_fdir_ipv6_gtpu6_eh_up_pkt,
2337                 sizeof(ice_fdir_ipv6_gtpu6_eh_up_pkt),
2338                 ice_fdir_ipv6_gtpu6_eh_up_pkt,
2339         },
2340         {
2341                 ICE_FLTR_PTYPE_NONF_IPV6_GTPU_IPV6_OTHER,
2342                 sizeof(ice_fdir_ipv6_gtpu6_pkt),
2343                 ice_fdir_ipv6_gtpu6_pkt,
2344                 sizeof(ice_fdir_ipv6_gtpu6_pkt),
2345                 ice_fdir_ipv6_gtpu6_pkt,
2346         },
2347         {
2348                 ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV4_OTHER,
2349                 sizeof(ice_fdir_ipv4_gtpu4_eh_pkt),
2350                 ice_fdir_ipv4_gtpu4_eh_pkt,
2351                 sizeof(ice_fdir_ipv4_gtpu4_eh_pkt),
2352                 ice_fdir_ipv4_gtpu4_eh_pkt,
2353         },
2354         {
2355                 ICE_FLTR_PTYPE_NONF_IPV6_GTPU_EH_IPV6_OTHER,
2356                 sizeof(ice_fdir_ipv6_gtpu6_eh_pkt),
2357                 ice_fdir_ipv6_gtpu6_eh_pkt,
2358                 sizeof(ice_fdir_ipv6_gtpu6_eh_pkt),
2359                 ice_fdir_ipv6_gtpu6_eh_pkt,
2360         },
2361         {
2362                 ICE_FLTR_PTYPE_NONF_IPV4_L2TPV3,
2363                 sizeof(ice_fdir_ipv4_l2tpv3_pkt), ice_fdir_ipv4_l2tpv3_pkt,
2364                 sizeof(ice_fdir_ipv4_l2tpv3_pkt), ice_fdir_ipv4_l2tpv3_pkt,
2365         },
2366         {
2367                 ICE_FLTR_PTYPE_NONF_IPV6_L2TPV3,
2368                 sizeof(ice_fdir_ipv6_l2tpv3_pkt), ice_fdir_ipv6_l2tpv3_pkt,
2369                 sizeof(ice_fdir_ipv6_l2tpv3_pkt), ice_fdir_ipv6_l2tpv3_pkt,
2370         },
2371         {
2372                 ICE_FLTR_PTYPE_NONF_IPV4_ESP,
2373                 sizeof(ice_fdir_ipv4_esp_pkt), ice_fdir_ipv4_esp_pkt,
2374                 sizeof(ice_fdir_ipv4_esp_pkt), ice_fdir_ipv4_esp_pkt,
2375         },
2376         {
2377                 ICE_FLTR_PTYPE_NONF_IPV6_ESP,
2378                 sizeof(ice_fdir_ipv6_esp_pkt), ice_fdir_ipv6_esp_pkt,
2379                 sizeof(ice_fdir_ipv6_esp_pkt), ice_fdir_ipv6_esp_pkt,
2380         },
2381         {
2382                 ICE_FLTR_PTYPE_NONF_IPV4_AH,
2383                 sizeof(ice_fdir_ipv4_ah_pkt), ice_fdir_ipv4_ah_pkt,
2384                 sizeof(ice_fdir_ipv4_ah_pkt), ice_fdir_ipv4_ah_pkt,
2385         },
2386         {
2387                 ICE_FLTR_PTYPE_NONF_IPV6_AH,
2388                 sizeof(ice_fdir_ipv6_ah_pkt), ice_fdir_ipv6_ah_pkt,
2389                 sizeof(ice_fdir_ipv6_ah_pkt), ice_fdir_ipv6_ah_pkt,
2390         },
2391         {
2392                 ICE_FLTR_PTYPE_NONF_IPV4_NAT_T_ESP,
2393                 sizeof(ice_fdir_ipv4_nat_t_esp_pkt),
2394                 ice_fdir_ipv4_nat_t_esp_pkt,
2395                 sizeof(ice_fdir_ipv4_nat_t_esp_pkt),
2396                 ice_fdir_ipv4_nat_t_esp_pkt,
2397         },
2398         {
2399                 ICE_FLTR_PTYPE_NONF_IPV6_NAT_T_ESP,
2400                 sizeof(ice_fdir_ipv6_nat_t_esp_pkt),
2401                 ice_fdir_ipv6_nat_t_esp_pkt,
2402                 sizeof(ice_fdir_ipv6_nat_t_esp_pkt),
2403                 ice_fdir_ipv6_nat_t_esp_pkt,
2404         },
2405         {
2406                 ICE_FLTR_PTYPE_NONF_IPV4_PFCP_NODE,
2407                 sizeof(ice_fdir_ipv4_pfcp_node_pkt),
2408                 ice_fdir_ipv4_pfcp_node_pkt,
2409                 sizeof(ice_fdir_ipv4_pfcp_node_pkt),
2410                 ice_fdir_ipv4_pfcp_node_pkt,
2411         },
2412         {
2413                 ICE_FLTR_PTYPE_NONF_IPV4_PFCP_SESSION,
2414                 sizeof(ice_fdir_ipv4_pfcp_session_pkt),
2415                 ice_fdir_ipv4_pfcp_session_pkt,
2416                 sizeof(ice_fdir_ipv4_pfcp_session_pkt),
2417                 ice_fdir_ipv4_pfcp_session_pkt,
2418         },
2419         {
2420                 ICE_FLTR_PTYPE_NONF_IPV6_PFCP_NODE,
2421                 sizeof(ice_fdir_ipv6_pfcp_node_pkt),
2422                 ice_fdir_ipv6_pfcp_node_pkt,
2423                 sizeof(ice_fdir_ipv6_pfcp_node_pkt),
2424                 ice_fdir_ipv6_pfcp_node_pkt,
2425         },
2426         {
2427                 ICE_FLTR_PTYPE_NONF_IPV6_PFCP_SESSION,
2428                 sizeof(ice_fdir_ipv6_pfcp_session_pkt),
2429                 ice_fdir_ipv6_pfcp_session_pkt,
2430                 sizeof(ice_fdir_ipv6_pfcp_session_pkt),
2431                 ice_fdir_ipv6_pfcp_session_pkt,
2432         },
2433         {
2434                 ICE_FLTR_PTYPE_NON_IP_L2,
2435                 sizeof(ice_fdir_non_ip_l2_pkt), ice_fdir_non_ip_l2_pkt,
2436                 sizeof(ice_fdir_non_ip_l2_pkt), ice_fdir_non_ip_l2_pkt,
2437         },
2438         {
2439                 ICE_FLTR_PTYPE_NONF_IPV4_UDP_VXLAN,
2440                 sizeof(ice_fdir_udp4_vxlan_pkt), ice_fdir_udp4_vxlan_pkt,
2441                 sizeof(ice_fdir_udp4_vxlan_pkt), ice_fdir_udp4_vxlan_pkt,
2442         },
2443         {
2444                 ICE_FLTR_PTYPE_NONF_IPV4_UDP_VXLAN_IPV4_UDP,
2445                 sizeof(ice_fdir_udp4_tun_pkt), ice_fdir_udp4_tun_pkt,
2446                 sizeof(ice_fdir_udp4_tun_pkt), ice_fdir_udp4_tun_pkt,
2447         },
2448         {
2449                 ICE_FLTR_PTYPE_NONF_IPV4_UDP_VXLAN_IPV4_TCP,
2450                 sizeof(ice_fdir_tcp4_tun_pkt), ice_fdir_tcp4_tun_pkt,
2451                 sizeof(ice_fdir_tcp4_tun_pkt), ice_fdir_tcp4_tun_pkt,
2452         },
2453         {
2454                 ICE_FLTR_PTYPE_NONF_IPV4_UDP_VXLAN_IPV4_SCTP,
2455                 sizeof(ice_fdir_sctp4_tun_pkt), ice_fdir_sctp4_tun_pkt,
2456                 sizeof(ice_fdir_sctp4_tun_pkt), ice_fdir_sctp4_tun_pkt,
2457         },
2458         {
2459                 ICE_FLTR_PTYPE_NONF_IPV4_UDP_VXLAN_IPV4_OTHER,
2460                 sizeof(ice_fdir_ip4_tun_pkt), ice_fdir_ip4_tun_pkt,
2461                 sizeof(ice_fdir_ip4_tun_pkt), ice_fdir_ip4_tun_pkt,
2462         },
2463         {
2464                 ICE_FLTR_PTYPE_NONF_ECPRI_TP0,
2465                 sizeof(ice_fdir_ecpri_tp0_pkt), ice_fdir_ecpri_tp0_pkt,
2466                 sizeof(ice_fdir_ecpri_tp0_pkt), ice_fdir_ecpri_tp0_pkt,
2467         },
2468         {
2469                 ICE_FLTR_PTYPE_NONF_IPV4_UDP_ECPRI_TP0,
2470                 sizeof(ice_fdir_ipv4_udp_ecpri_tp0_pkt),
2471                 ice_fdir_ipv4_udp_ecpri_tp0_pkt,
2472                 sizeof(ice_fdir_ipv4_udp_ecpri_tp0_pkt),
2473                 ice_fdir_ipv4_udp_ecpri_tp0_pkt,
2474         },
2475         /* IPV4 GRE INNER IPV4 */
2476         {
2477                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4,
2478                 sizeof(ice_fdir_ipv4_gre4_pkt),
2479                 ice_fdir_ipv4_gre4_pkt,
2480                 sizeof(ice_fdir_ipv4_gre4_pkt),
2481                 ice_fdir_ipv4_gre4_pkt,
2482         },
2483         {
2484                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_UDP,
2485                 sizeof(ice_fdir_udp4_gre4_pkt),
2486                 ice_fdir_udp4_gre4_pkt,
2487                 sizeof(ice_fdir_udp4_gre4_pkt),
2488                 ice_fdir_udp4_gre4_pkt,
2489         },
2490         {
2491                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_TCP,
2492                 sizeof(ice_fdir_tcp4_gre4_pkt),
2493                 ice_fdir_tcp4_gre4_pkt,
2494                 sizeof(ice_fdir_tcp4_gre4_pkt),
2495                 ice_fdir_tcp4_gre4_pkt,
2496         },
2497         /* IPV4 GRE INNER IPV6 */
2498         {
2499                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV6,
2500                 sizeof(ice_fdir_ipv6_gre4_pkt),
2501                 ice_fdir_ipv6_gre4_pkt,
2502                 sizeof(ice_fdir_ipv6_gre4_pkt),
2503                 ice_fdir_ipv6_gre4_pkt,
2504         },
2505         {
2506                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV6_UDP,
2507                 sizeof(ice_fdir_udp6_gre4_pkt),
2508                 ice_fdir_udp6_gre4_pkt,
2509                 sizeof(ice_fdir_udp6_gre4_pkt),
2510                 ice_fdir_udp6_gre4_pkt,
2511         },
2512         {
2513                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV6_TCP,
2514                 sizeof(ice_fdir_tcp6_gre4_pkt),
2515                 ice_fdir_tcp6_gre4_pkt,
2516                 sizeof(ice_fdir_tcp6_gre4_pkt),
2517                 ice_fdir_tcp6_gre4_pkt,
2518         },
2519         /* IPV6 GRE INNER IPV4 */
2520         {
2521                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4,
2522                 sizeof(ice_fdir_ipv4_gre6_pkt),
2523                 ice_fdir_ipv4_gre6_pkt,
2524                 sizeof(ice_fdir_ipv4_gre6_pkt),
2525                 ice_fdir_ipv4_gre6_pkt,
2526         },
2527         {
2528                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_UDP,
2529                 sizeof(ice_fdir_udp4_gre6_pkt),
2530                 ice_fdir_udp4_gre6_pkt,
2531                 sizeof(ice_fdir_udp4_gre6_pkt),
2532                 ice_fdir_udp4_gre6_pkt,
2533         },
2534         {
2535                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_TCP,
2536                 sizeof(ice_fdir_tcp4_gre6_pkt),
2537                 ice_fdir_tcp4_gre6_pkt,
2538                 sizeof(ice_fdir_tcp4_gre6_pkt),
2539                 ice_fdir_tcp4_gre6_pkt,
2540         },
2541         /* IPV4 GRE INNER IPV6 */
2542         {
2543                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV6,
2544                 sizeof(ice_fdir_ipv6_gre6_pkt),
2545                 ice_fdir_ipv6_gre6_pkt,
2546                 sizeof(ice_fdir_ipv6_gre6_pkt),
2547                 ice_fdir_ipv6_gre6_pkt,
2548         },
2549         {
2550                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV6_UDP,
2551                 sizeof(ice_fdir_udp6_gre6_pkt),
2552                 ice_fdir_udp6_gre6_pkt,
2553                 sizeof(ice_fdir_udp6_gre6_pkt),
2554                 ice_fdir_udp6_gre6_pkt,
2555         },
2556         {
2557                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV6_TCP,
2558                 sizeof(ice_fdir_tcp6_gre6_pkt),
2559                 ice_fdir_tcp6_gre6_pkt,
2560                 sizeof(ice_fdir_tcp6_gre6_pkt),
2561                 ice_fdir_tcp6_gre6_pkt,
2562         },
2563         /* IPV4 GRE IPV4 GTPU IPV4 */
2564         {
2565                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV4,
2566                 sizeof(ice_fdir_ipv4_gtpu4_gre4_pkt),
2567                 ice_fdir_ipv4_gtpu4_gre4_pkt,
2568                 sizeof(ice_fdir_ipv4_gtpu4_gre4_pkt),
2569                 ice_fdir_ipv4_gtpu4_gre4_pkt,
2570         },
2571         {
2572                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV4_UDP,
2573                 sizeof(ice_fdir_udp4_gtpu4_gre4_pkt),
2574                 ice_fdir_udp4_gtpu4_gre4_pkt,
2575                 sizeof(ice_fdir_udp4_gtpu4_gre4_pkt),
2576                 ice_fdir_udp4_gtpu4_gre4_pkt,
2577         },
2578         {
2579                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV4_TCP,
2580                 sizeof(ice_fdir_tcp4_gtpu4_gre4_pkt),
2581                 ice_fdir_tcp4_gtpu4_gre4_pkt,
2582                 sizeof(ice_fdir_tcp4_gtpu4_gre4_pkt),
2583                 ice_fdir_tcp4_gtpu4_gre4_pkt,
2584         },
2585         /* IPV4 GRE IPV4 GTPU IPV6 */
2586         {
2587                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV6,
2588                 sizeof(ice_fdir_ipv6_gtpu4_gre4_pkt),
2589                 ice_fdir_ipv6_gtpu4_gre4_pkt,
2590                 sizeof(ice_fdir_ipv6_gtpu4_gre4_pkt),
2591                 ice_fdir_ipv6_gtpu4_gre4_pkt,
2592         },
2593         {
2594                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV6_UDP,
2595                 sizeof(ice_fdir_udp6_gtpu4_gre4_pkt),
2596                 ice_fdir_udp6_gtpu4_gre4_pkt,
2597                 sizeof(ice_fdir_udp6_gtpu4_gre4_pkt),
2598                 ice_fdir_udp6_gtpu4_gre4_pkt,
2599         },
2600         {
2601                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV6_TCP,
2602                 sizeof(ice_fdir_tcp6_gtpu4_gre4_pkt),
2603                 ice_fdir_tcp6_gtpu4_gre4_pkt,
2604                 sizeof(ice_fdir_tcp6_gtpu4_gre4_pkt),
2605                 ice_fdir_tcp6_gtpu4_gre4_pkt,
2606         },
2607         /* IPV6 GRE IPV4 GTPU IPV4 */
2608         {
2609                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV4,
2610                 sizeof(ice_fdir_ipv4_gtpu4_gre6_pkt),
2611                 ice_fdir_ipv4_gtpu4_gre6_pkt,
2612                 sizeof(ice_fdir_ipv4_gtpu4_gre6_pkt),
2613                 ice_fdir_ipv4_gtpu4_gre6_pkt,
2614         },
2615         {
2616                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV4_UDP,
2617                 sizeof(ice_fdir_udp4_gtpu4_gre6_pkt),
2618                 ice_fdir_udp4_gtpu4_gre6_pkt,
2619                 sizeof(ice_fdir_udp4_gtpu4_gre6_pkt),
2620                 ice_fdir_udp4_gtpu4_gre6_pkt,
2621         },
2622         {
2623                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV4_TCP,
2624                 sizeof(ice_fdir_tcp4_gtpu4_gre6_pkt),
2625                 ice_fdir_tcp4_gtpu4_gre6_pkt,
2626                 sizeof(ice_fdir_tcp4_gtpu4_gre6_pkt),
2627                 ice_fdir_tcp4_gtpu4_gre6_pkt,
2628         },
2629         /* IPV6 GRE IPV4 GTPU IPV6 */
2630         {
2631                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV6,
2632                 sizeof(ice_fdir_ipv6_gtpu4_gre6_pkt),
2633                 ice_fdir_ipv6_gtpu4_gre6_pkt,
2634                 sizeof(ice_fdir_ipv6_gtpu4_gre6_pkt),
2635                 ice_fdir_ipv6_gtpu4_gre6_pkt,
2636         },
2637         {
2638                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV6_UDP,
2639                 sizeof(ice_fdir_udp6_gtpu4_gre6_pkt),
2640                 ice_fdir_udp6_gtpu4_gre6_pkt,
2641                 sizeof(ice_fdir_udp6_gtpu4_gre6_pkt),
2642                 ice_fdir_udp6_gtpu4_gre6_pkt,
2643         },
2644         {
2645                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV6_TCP,
2646                 sizeof(ice_fdir_tcp6_gtpu4_gre6_pkt),
2647                 ice_fdir_tcp6_gtpu4_gre6_pkt,
2648                 sizeof(ice_fdir_tcp6_gtpu4_gre6_pkt),
2649                 ice_fdir_tcp6_gtpu4_gre6_pkt,
2650         },
2651         /* IPV4 GRE IPV4 GTPU EH IPV4 */
2652         {
2653                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV4,
2654                 sizeof(ice_fdir_ipv4_gtpu4_eh_gre4_pkt),
2655                 ice_fdir_ipv4_gtpu4_eh_gre4_pkt,
2656                 sizeof(ice_fdir_ipv4_gtpu4_eh_gre4_pkt),
2657                 ice_fdir_ipv4_gtpu4_eh_gre4_pkt,
2658         },
2659         {
2660                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV4_UDP,
2661                 sizeof(ice_fdir_udp4_gtpu4_eh_gre4_pkt),
2662                 ice_fdir_udp4_gtpu4_eh_gre4_pkt,
2663                 sizeof(ice_fdir_udp4_gtpu4_eh_gre4_pkt),
2664                 ice_fdir_udp4_gtpu4_eh_gre4_pkt,
2665         },
2666         {
2667                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV4_TCP,
2668                 sizeof(ice_fdir_tcp4_gtpu4_eh_gre4_pkt),
2669                 ice_fdir_tcp4_gtpu4_eh_gre4_pkt,
2670                 sizeof(ice_fdir_tcp4_gtpu4_eh_gre4_pkt),
2671                 ice_fdir_tcp4_gtpu4_eh_gre4_pkt,
2672         },
2673         /* IPV4 GRE IPV4 GTPU EH IPV6 */
2674         {
2675                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV6,
2676                 sizeof(ice_fdir_ipv6_gtpu4_eh_gre4_pkt),
2677                 ice_fdir_ipv6_gtpu4_eh_gre4_pkt,
2678                 sizeof(ice_fdir_ipv6_gtpu4_eh_gre4_pkt),
2679                 ice_fdir_ipv6_gtpu4_eh_gre4_pkt,
2680         },
2681         {
2682                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV6_UDP,
2683                 sizeof(ice_fdir_udp6_gtpu4_eh_gre4_pkt),
2684                 ice_fdir_udp6_gtpu4_eh_gre4_pkt,
2685                 sizeof(ice_fdir_udp6_gtpu4_eh_gre4_pkt),
2686                 ice_fdir_udp6_gtpu4_eh_gre4_pkt,
2687         },
2688         {
2689                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV6_TCP,
2690                 sizeof(ice_fdir_tcp6_gtpu4_eh_gre4_pkt),
2691                 ice_fdir_tcp6_gtpu4_eh_gre4_pkt,
2692                 sizeof(ice_fdir_tcp6_gtpu4_eh_gre4_pkt),
2693                 ice_fdir_tcp6_gtpu4_eh_gre4_pkt,
2694         },
2695         /* IPV6 GRE IPV4 GTPU EH IPV4 */
2696         {
2697                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV4,
2698                 sizeof(ice_fdir_ipv4_gtpu4_eh_gre6_pkt),
2699                 ice_fdir_ipv4_gtpu4_eh_gre6_pkt,
2700                 sizeof(ice_fdir_ipv4_gtpu4_eh_gre6_pkt),
2701                 ice_fdir_ipv4_gtpu4_eh_gre6_pkt,
2702         },
2703         {
2704                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV4_UDP,
2705                 sizeof(ice_fdir_udp4_gtpu4_eh_gre6_pkt),
2706                 ice_fdir_udp4_gtpu4_eh_gre6_pkt,
2707                 sizeof(ice_fdir_udp4_gtpu4_eh_gre6_pkt),
2708                 ice_fdir_udp4_gtpu4_eh_gre6_pkt,
2709         },
2710         {
2711                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV4_TCP,
2712                 sizeof(ice_fdir_tcp4_gtpu4_eh_gre6_pkt),
2713                 ice_fdir_tcp4_gtpu4_eh_gre6_pkt,
2714                 sizeof(ice_fdir_tcp4_gtpu4_eh_gre6_pkt),
2715                 ice_fdir_tcp4_gtpu4_eh_gre6_pkt,
2716         },
2717         /* IPV6 GRE IPV4 GTPU EH IPV6 */
2718         {
2719                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV6,
2720                 sizeof(ice_fdir_ipv6_gtpu4_eh_gre6_pkt),
2721                 ice_fdir_ipv6_gtpu4_eh_gre6_pkt,
2722                 sizeof(ice_fdir_ipv6_gtpu4_eh_gre6_pkt),
2723                 ice_fdir_ipv6_gtpu4_eh_gre6_pkt,
2724         },
2725         {
2726                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV6_UDP,
2727                 sizeof(ice_fdir_udp6_gtpu4_eh_gre6_pkt),
2728                 ice_fdir_udp6_gtpu4_eh_gre6_pkt,
2729                 sizeof(ice_fdir_udp6_gtpu4_eh_gre6_pkt),
2730                 ice_fdir_udp6_gtpu4_eh_gre6_pkt,
2731         },
2732         {
2733                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV6_TCP,
2734                 sizeof(ice_fdir_tcp6_gtpu4_eh_gre6_pkt),
2735                 ice_fdir_tcp6_gtpu4_eh_gre6_pkt,
2736                 sizeof(ice_fdir_tcp6_gtpu4_eh_gre6_pkt),
2737                 ice_fdir_tcp6_gtpu4_eh_gre6_pkt,
2738         },
2739         /* IPV4 GRE IPV4 GTPU DW IPV4 */
2740         {
2741                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV4,
2742                 sizeof(ice_fdir_ipv4_gtpu4_eh_dw_gre4_pkt),
2743                 ice_fdir_ipv4_gtpu4_eh_dw_gre4_pkt,
2744                 sizeof(ice_fdir_ipv4_gtpu4_eh_dw_gre4_pkt),
2745                 ice_fdir_ipv4_gtpu4_eh_dw_gre4_pkt,
2746         },
2747         {
2748                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV4_UDP,
2749                 sizeof(ice_fdir_udp4_gtpu4_eh_dw_gre4_pkt),
2750                 ice_fdir_udp4_gtpu4_eh_dw_gre4_pkt,
2751                 sizeof(ice_fdir_udp4_gtpu4_eh_dw_gre4_pkt),
2752                 ice_fdir_udp4_gtpu4_eh_dw_gre4_pkt,
2753         },
2754         {
2755                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV4_TCP,
2756                 sizeof(ice_fdir_tcp4_gtpu4_eh_dw_gre4_pkt),
2757                 ice_fdir_tcp4_gtpu4_eh_dw_gre4_pkt,
2758                 sizeof(ice_fdir_tcp4_gtpu4_eh_dw_gre4_pkt),
2759                 ice_fdir_tcp4_gtpu4_eh_dw_gre4_pkt,
2760         },
2761         /* IPV4 GRE IPV4 GTPU DW IPV6 */
2762         {
2763                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV6,
2764                 sizeof(ice_fdir_ipv6_gtpu4_eh_dw_gre4_pkt),
2765                 ice_fdir_ipv6_gtpu4_eh_dw_gre4_pkt,
2766                 sizeof(ice_fdir_ipv6_gtpu4_eh_dw_gre4_pkt),
2767                 ice_fdir_ipv6_gtpu4_eh_dw_gre4_pkt,
2768         },
2769         {
2770                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV6_UDP,
2771                 sizeof(ice_fdir_udp6_gtpu4_eh_dw_gre4_pkt),
2772                 ice_fdir_udp6_gtpu4_eh_dw_gre4_pkt,
2773                 sizeof(ice_fdir_udp6_gtpu4_eh_dw_gre4_pkt),
2774                 ice_fdir_udp6_gtpu4_eh_dw_gre4_pkt,
2775         },
2776         {
2777                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV6_TCP,
2778                 sizeof(ice_fdir_tcp6_gtpu4_eh_dw_gre4_pkt),
2779                 ice_fdir_tcp6_gtpu4_eh_dw_gre4_pkt,
2780                 sizeof(ice_fdir_tcp6_gtpu4_eh_dw_gre4_pkt),
2781                 ice_fdir_tcp6_gtpu4_eh_dw_gre4_pkt,
2782         },
2783         /* IPV6 GRE IPV4 GTPU DW IPV4 */
2784         {
2785                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV4,
2786                 sizeof(ice_fdir_ipv4_gtpu4_eh_dw_gre6_pkt),
2787                 ice_fdir_ipv4_gtpu4_eh_dw_gre6_pkt,
2788                 sizeof(ice_fdir_ipv4_gtpu4_eh_dw_gre6_pkt),
2789                 ice_fdir_ipv4_gtpu4_eh_dw_gre6_pkt,
2790         },
2791         {
2792                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV4_UDP,
2793                 sizeof(ice_fdir_udp4_gtpu4_eh_dw_gre6_pkt),
2794                 ice_fdir_udp4_gtpu4_eh_dw_gre6_pkt,
2795                 sizeof(ice_fdir_udp4_gtpu4_eh_dw_gre6_pkt),
2796                 ice_fdir_udp4_gtpu4_eh_dw_gre6_pkt,
2797         },
2798         {
2799                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV4_TCP,
2800                 sizeof(ice_fdir_tcp4_gtpu4_eh_dw_gre6_pkt),
2801                 ice_fdir_tcp4_gtpu4_eh_dw_gre6_pkt,
2802                 sizeof(ice_fdir_tcp4_gtpu4_eh_dw_gre6_pkt),
2803                 ice_fdir_tcp4_gtpu4_eh_dw_gre6_pkt,
2804         },
2805         /* IPV6 GRE IPV4 GTPU DW IPV6 */
2806         {
2807                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV6,
2808                 sizeof(ice_fdir_ipv6_gtpu4_eh_dw_gre6_pkt),
2809                 ice_fdir_ipv6_gtpu4_eh_dw_gre6_pkt,
2810                 sizeof(ice_fdir_ipv6_gtpu4_eh_dw_gre6_pkt),
2811                 ice_fdir_ipv6_gtpu4_eh_dw_gre6_pkt,
2812         },
2813         {
2814                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV6_UDP,
2815                 sizeof(ice_fdir_udp6_gtpu4_eh_dw_gre6_pkt),
2816                 ice_fdir_udp6_gtpu4_eh_dw_gre6_pkt,
2817                 sizeof(ice_fdir_udp6_gtpu4_eh_dw_gre6_pkt),
2818                 ice_fdir_udp6_gtpu4_eh_dw_gre6_pkt,
2819         },
2820         {
2821                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV6_TCP,
2822                 sizeof(ice_fdir_tcp6_gtpu4_eh_dw_gre6_pkt),
2823                 ice_fdir_tcp6_gtpu4_eh_dw_gre6_pkt,
2824                 sizeof(ice_fdir_tcp6_gtpu4_eh_dw_gre6_pkt),
2825                 ice_fdir_tcp6_gtpu4_eh_dw_gre6_pkt,
2826         },
2827         /* IPV4 GRE IPV4 GTPU UP IPV4 */
2828         {
2829                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV4,
2830                 sizeof(ice_fdir_ipv4_gtpu4_eh_up_gre4_pkt),
2831                 ice_fdir_ipv4_gtpu4_eh_up_gre4_pkt,
2832                 sizeof(ice_fdir_ipv4_gtpu4_eh_up_gre4_pkt),
2833                 ice_fdir_ipv4_gtpu4_eh_up_gre4_pkt,
2834         },
2835         {
2836                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV4_UDP,
2837                 sizeof(ice_fdir_udp4_gtpu4_eh_up_gre4_pkt),
2838                 ice_fdir_udp4_gtpu4_eh_up_gre4_pkt,
2839                 sizeof(ice_fdir_udp4_gtpu4_eh_up_gre4_pkt),
2840                 ice_fdir_udp4_gtpu4_eh_up_gre4_pkt,
2841         },
2842         {
2843                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV4_TCP,
2844                 sizeof(ice_fdir_tcp4_gtpu4_eh_up_gre4_pkt),
2845                 ice_fdir_tcp4_gtpu4_eh_up_gre4_pkt,
2846                 sizeof(ice_fdir_tcp4_gtpu4_eh_up_gre4_pkt),
2847                 ice_fdir_tcp4_gtpu4_eh_up_gre4_pkt,
2848         },
2849         /* IPV4 GRE IPV4 GTPU UP IPV6 */
2850         {
2851                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV6,
2852                 sizeof(ice_fdir_ipv6_gtpu4_eh_up_gre4_pkt),
2853                 ice_fdir_ipv6_gtpu4_eh_up_gre4_pkt,
2854                 sizeof(ice_fdir_ipv6_gtpu4_eh_up_gre4_pkt),
2855                 ice_fdir_ipv6_gtpu4_eh_up_gre4_pkt,
2856         },
2857         {
2858                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV6_UDP,
2859                 sizeof(ice_fdir_udp6_gtpu4_eh_up_gre4_pkt),
2860                 ice_fdir_udp6_gtpu4_eh_up_gre4_pkt,
2861                 sizeof(ice_fdir_udp6_gtpu4_eh_up_gre4_pkt),
2862                 ice_fdir_udp6_gtpu4_eh_up_gre4_pkt,
2863         },
2864         {
2865                 ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV6_TCP,
2866                 sizeof(ice_fdir_tcp6_gtpu4_eh_up_gre4_pkt),
2867                 ice_fdir_tcp6_gtpu4_eh_up_gre4_pkt,
2868                 sizeof(ice_fdir_tcp6_gtpu4_eh_up_gre4_pkt),
2869                 ice_fdir_tcp6_gtpu4_eh_up_gre4_pkt,
2870         },
2871         /* IPV6 GRE IPV4 GTPU UP IPV4 */
2872         {
2873                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV4,
2874                 sizeof(ice_fdir_ipv4_gtpu4_eh_up_gre6_pkt),
2875                 ice_fdir_ipv4_gtpu4_eh_up_gre6_pkt,
2876                 sizeof(ice_fdir_ipv4_gtpu4_eh_up_gre6_pkt),
2877                 ice_fdir_ipv4_gtpu4_eh_up_gre6_pkt,
2878         },
2879         {
2880                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV4_UDP,
2881                 sizeof(ice_fdir_udp4_gtpu4_eh_up_gre6_pkt),
2882                 ice_fdir_udp4_gtpu4_eh_up_gre6_pkt,
2883                 sizeof(ice_fdir_udp4_gtpu4_eh_up_gre6_pkt),
2884                 ice_fdir_udp4_gtpu4_eh_up_gre6_pkt,
2885         },
2886         {
2887                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV4_TCP,
2888                 sizeof(ice_fdir_tcp4_gtpu4_eh_up_gre6_pkt),
2889                 ice_fdir_tcp4_gtpu4_eh_up_gre6_pkt,
2890                 sizeof(ice_fdir_tcp4_gtpu4_eh_up_gre6_pkt),
2891                 ice_fdir_tcp4_gtpu4_eh_up_gre6_pkt,
2892         },
2893         /* IPV6 GRE IPV4 GTPU UP IPV6 */
2894         {
2895                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV6,
2896                 sizeof(ice_fdir_ipv6_gtpu4_eh_up_gre6_pkt),
2897                 ice_fdir_ipv6_gtpu4_eh_up_gre6_pkt,
2898                 sizeof(ice_fdir_ipv6_gtpu4_eh_up_gre6_pkt),
2899                 ice_fdir_ipv6_gtpu4_eh_up_gre6_pkt,
2900         },
2901         {
2902                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV6_UDP,
2903                 sizeof(ice_fdir_udp6_gtpu4_eh_up_gre6_pkt),
2904                 ice_fdir_udp6_gtpu4_eh_up_gre6_pkt,
2905                 sizeof(ice_fdir_udp6_gtpu4_eh_up_gre6_pkt),
2906                 ice_fdir_udp6_gtpu4_eh_up_gre6_pkt,
2907         },
2908         {
2909                 ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV6_TCP,
2910                 sizeof(ice_fdir_tcp6_gtpu4_eh_up_gre6_pkt),
2911                 ice_fdir_tcp6_gtpu4_eh_up_gre6_pkt,
2912                 sizeof(ice_fdir_tcp6_gtpu4_eh_up_gre6_pkt),
2913                 ice_fdir_tcp6_gtpu4_eh_up_gre6_pkt,
2914         },
2915         {
2916                 ICE_FLTR_PTYPE_NONF_IPV6_TCP,
2917                 sizeof(ice_fdir_tcpv6_pkt), ice_fdir_tcpv6_pkt,
2918                 sizeof(ice_fdir_tcp6_tun_pkt), ice_fdir_tcp6_tun_pkt,
2919         },
2920         {
2921                 ICE_FLTR_PTYPE_NONF_IPV6_UDP,
2922                 sizeof(ice_fdir_udpv6_pkt), ice_fdir_udpv6_pkt,
2923                 sizeof(ice_fdir_udp6_tun_pkt), ice_fdir_udp6_tun_pkt,
2924         },
2925         {
2926                 ICE_FLTR_PTYPE_NONF_IPV6_SCTP,
2927                 sizeof(ice_fdir_sctpv6_pkt), ice_fdir_sctpv6_pkt,
2928                 sizeof(ice_fdir_sctp6_tun_pkt), ice_fdir_sctp6_tun_pkt,
2929         },
2930         {
2931                 ICE_FLTR_PTYPE_NONF_IPV6_OTHER,
2932                 sizeof(ice_fdir_ipv6_pkt), ice_fdir_ipv6_pkt,
2933                 sizeof(ice_fdir_ip6_tun_pkt), ice_fdir_ip6_tun_pkt,
2934         },
2935 };
2936
2937 #define ICE_FDIR_NUM_PKT ARRAY_SIZE(ice_fdir_pkt)
2938
2939 /**
2940  * ice_set_dflt_val_fd_desc
2941  * @fd_fltr_ctx: pointer to fd filter descriptor
2942  */
2943 static void ice_set_dflt_val_fd_desc(struct ice_fd_fltr_desc_ctx *fd_fltr_ctx)
2944 {
2945         fd_fltr_ctx->comp_q = ICE_FXD_FLTR_QW0_COMP_Q_ZERO;
2946         fd_fltr_ctx->comp_report = ICE_FXD_FLTR_QW0_COMP_REPORT_SW_FAIL;
2947         fd_fltr_ctx->fd_space = ICE_FXD_FLTR_QW0_FD_SPACE_GUAR_BEST;
2948         fd_fltr_ctx->cnt_ena = ICE_FXD_FLTR_QW0_STAT_ENA_PKTS;
2949         fd_fltr_ctx->evict_ena = ICE_FXD_FLTR_QW0_EVICT_ENA_TRUE;
2950         fd_fltr_ctx->toq = ICE_FXD_FLTR_QW0_TO_Q_EQUALS_QINDEX;
2951         fd_fltr_ctx->toq_prio = ICE_FXD_FLTR_QW0_TO_Q_PRIO1;
2952         fd_fltr_ctx->dpu_recipe = ICE_FXD_FLTR_QW0_DPU_RECIPE_DFLT;
2953         fd_fltr_ctx->drop = ICE_FXD_FLTR_QW0_DROP_NO;
2954         fd_fltr_ctx->flex_prio = ICE_FXD_FLTR_QW0_FLEX_PRI_NONE;
2955         fd_fltr_ctx->flex_mdid = ICE_FXD_FLTR_QW0_FLEX_MDID0;
2956         fd_fltr_ctx->flex_val = ICE_FXD_FLTR_QW0_FLEX_VAL0;
2957         fd_fltr_ctx->dtype = ICE_TX_DESC_DTYPE_FLTR_PROG;
2958         fd_fltr_ctx->desc_prof_prio = ICE_FXD_FLTR_QW1_PROF_PRIO_ZERO;
2959         fd_fltr_ctx->desc_prof = ICE_FXD_FLTR_QW1_PROF_ZERO;
2960         fd_fltr_ctx->swap = ICE_FXD_FLTR_QW1_SWAP_SET;
2961         fd_fltr_ctx->fdid_prio = ICE_FXD_FLTR_QW1_FDID_PRI_ONE;
2962         fd_fltr_ctx->fdid_mdid = ICE_FXD_FLTR_QW1_FDID_MDID_FD;
2963         fd_fltr_ctx->fdid = ICE_FXD_FLTR_QW1_FDID_ZERO;
2964 }
2965
2966 /**
2967  * ice_set_fd_desc_val
2968  * @ctx: pointer to fd filter descriptor context
2969  * @fdir_desc: populated with fd filter descriptor values
2970  */
2971 static void
2972 ice_set_fd_desc_val(struct ice_fd_fltr_desc_ctx *ctx,
2973                     struct ice_fltr_desc *fdir_desc)
2974 {
2975         u64 qword;
2976
2977         /* prep QW0 of FD filter programming desc */
2978         qword = ((u64)ctx->qindex << ICE_FXD_FLTR_QW0_QINDEX_S) &
2979                 ICE_FXD_FLTR_QW0_QINDEX_M;
2980         qword |= ((u64)ctx->comp_q << ICE_FXD_FLTR_QW0_COMP_Q_S) &
2981                  ICE_FXD_FLTR_QW0_COMP_Q_M;
2982         qword |= ((u64)ctx->comp_report << ICE_FXD_FLTR_QW0_COMP_REPORT_S) &
2983                  ICE_FXD_FLTR_QW0_COMP_REPORT_M;
2984         qword |= ((u64)ctx->fd_space << ICE_FXD_FLTR_QW0_FD_SPACE_S) &
2985                  ICE_FXD_FLTR_QW0_FD_SPACE_M;
2986         qword |= ((u64)ctx->cnt_index << ICE_FXD_FLTR_QW0_STAT_CNT_S) &
2987                  ICE_FXD_FLTR_QW0_STAT_CNT_M;
2988         qword |= ((u64)ctx->cnt_ena << ICE_FXD_FLTR_QW0_STAT_ENA_S) &
2989                  ICE_FXD_FLTR_QW0_STAT_ENA_M;
2990         qword |= ((u64)ctx->evict_ena << ICE_FXD_FLTR_QW0_EVICT_ENA_S) &
2991                  ICE_FXD_FLTR_QW0_EVICT_ENA_M;
2992         qword |= ((u64)ctx->toq << ICE_FXD_FLTR_QW0_TO_Q_S) &
2993                  ICE_FXD_FLTR_QW0_TO_Q_M;
2994         qword |= ((u64)ctx->toq_prio << ICE_FXD_FLTR_QW0_TO_Q_PRI_S) &
2995                  ICE_FXD_FLTR_QW0_TO_Q_PRI_M;
2996         qword |= ((u64)ctx->dpu_recipe << ICE_FXD_FLTR_QW0_DPU_RECIPE_S) &
2997                  ICE_FXD_FLTR_QW0_DPU_RECIPE_M;
2998         qword |= ((u64)ctx->drop << ICE_FXD_FLTR_QW0_DROP_S) &
2999                  ICE_FXD_FLTR_QW0_DROP_M;
3000         qword |= ((u64)ctx->flex_prio << ICE_FXD_FLTR_QW0_FLEX_PRI_S) &
3001                  ICE_FXD_FLTR_QW0_FLEX_PRI_M;
3002         qword |= ((u64)ctx->flex_mdid << ICE_FXD_FLTR_QW0_FLEX_MDID_S) &
3003                  ICE_FXD_FLTR_QW0_FLEX_MDID_M;
3004         qword |= ((u64)ctx->flex_val << ICE_FXD_FLTR_QW0_FLEX_VAL_S) &
3005                  ICE_FXD_FLTR_QW0_FLEX_VAL_M;
3006         fdir_desc->qidx_compq_space_stat = CPU_TO_LE64(qword);
3007
3008         /* prep QW1 of FD filter programming desc */
3009         qword = ((u64)ctx->dtype << ICE_FXD_FLTR_QW1_DTYPE_S) &
3010                 ICE_FXD_FLTR_QW1_DTYPE_M;
3011         qword |= ((u64)ctx->pcmd << ICE_FXD_FLTR_QW1_PCMD_S) &
3012                  ICE_FXD_FLTR_QW1_PCMD_M;
3013         qword |= ((u64)ctx->desc_prof_prio << ICE_FXD_FLTR_QW1_PROF_PRI_S) &
3014                  ICE_FXD_FLTR_QW1_PROF_PRI_M;
3015         qword |= ((u64)ctx->desc_prof << ICE_FXD_FLTR_QW1_PROF_S) &
3016                  ICE_FXD_FLTR_QW1_PROF_M;
3017         qword |= ((u64)ctx->fd_vsi << ICE_FXD_FLTR_QW1_FD_VSI_S) &
3018                  ICE_FXD_FLTR_QW1_FD_VSI_M;
3019         qword |= ((u64)ctx->swap << ICE_FXD_FLTR_QW1_SWAP_S) &
3020                  ICE_FXD_FLTR_QW1_SWAP_M;
3021         qword |= ((u64)ctx->fdid_prio << ICE_FXD_FLTR_QW1_FDID_PRI_S) &
3022                  ICE_FXD_FLTR_QW1_FDID_PRI_M;
3023         qword |= ((u64)ctx->fdid_mdid << ICE_FXD_FLTR_QW1_FDID_MDID_S) &
3024                  ICE_FXD_FLTR_QW1_FDID_MDID_M;
3025         qword |= ((u64)ctx->fdid << ICE_FXD_FLTR_QW1_FDID_S) &
3026                  ICE_FXD_FLTR_QW1_FDID_M;
3027         fdir_desc->dtype_cmd_vsi_fdid = CPU_TO_LE64(qword);
3028 }
3029
3030 /**
3031  * ice_fdir_get_prgm_desc - set a fdir descriptor from a fdir filter struct
3032  * @hw: pointer to the hardware structure
3033  * @input: filter
3034  * @fdesc: filter descriptor
3035  * @add: if add is true, this is an add operation, false implies delete
3036  */
3037 void
3038 ice_fdir_get_prgm_desc(struct ice_hw *hw, struct ice_fdir_fltr *input,
3039                        struct ice_fltr_desc *fdesc, bool add)
3040 {
3041         struct ice_fd_fltr_desc_ctx fdir_fltr_ctx = { 0 };
3042
3043         /* set default context info */
3044         ice_set_dflt_val_fd_desc(&fdir_fltr_ctx);
3045
3046         /* change sideband filtering values */
3047         fdir_fltr_ctx.fdid = input->fltr_id;
3048         if (input->dest_ctl == ICE_FLTR_PRGM_DESC_DEST_DROP_PKT) {
3049                 fdir_fltr_ctx.drop = ICE_FXD_FLTR_QW0_DROP_YES;
3050                 fdir_fltr_ctx.qindex = 0;
3051         } else if (input->dest_ctl ==
3052                    ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER) {
3053                 fdir_fltr_ctx.drop = ICE_FXD_FLTR_QW0_DROP_NO;
3054                 fdir_fltr_ctx.qindex = 0;
3055         } else {
3056                 if (input->dest_ctl ==
3057                     ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_QGROUP)
3058                         fdir_fltr_ctx.toq = input->q_region;
3059                 fdir_fltr_ctx.drop = ICE_FXD_FLTR_QW0_DROP_NO;
3060                 fdir_fltr_ctx.qindex = input->q_index;
3061         }
3062         fdir_fltr_ctx.cnt_ena = input->cnt_ena;
3063         fdir_fltr_ctx.cnt_index = input->cnt_index;
3064         fdir_fltr_ctx.fd_vsi = ice_get_hw_vsi_num(hw, input->dest_vsi);
3065         fdir_fltr_ctx.evict_ena = ICE_FXD_FLTR_QW0_EVICT_ENA_FALSE;
3066         if (input->dest_ctl == ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER)
3067                 fdir_fltr_ctx.toq_prio = 0;
3068         else
3069                 fdir_fltr_ctx.toq_prio = 3;
3070         fdir_fltr_ctx.pcmd = add ? ICE_FXD_FLTR_QW1_PCMD_ADD :
3071                 ICE_FXD_FLTR_QW1_PCMD_REMOVE;
3072         fdir_fltr_ctx.swap = ICE_FXD_FLTR_QW1_SWAP_NOT_SET;
3073         fdir_fltr_ctx.comp_q = ICE_FXD_FLTR_QW0_COMP_Q_ZERO;
3074         fdir_fltr_ctx.comp_report = input->comp_report;
3075         fdir_fltr_ctx.fdid_prio = input->fdid_prio;
3076         fdir_fltr_ctx.desc_prof = 1;
3077         fdir_fltr_ctx.desc_prof_prio = 3;
3078         ice_set_fd_desc_val(&fdir_fltr_ctx, fdesc);
3079 }
3080
3081 /**
3082  * ice_alloc_fd_res_cntr - obtain counter resource for FD type
3083  * @hw: pointer to the hardware structure
3084  * @cntr_id: returns counter index
3085  */
3086 enum ice_status ice_alloc_fd_res_cntr(struct ice_hw *hw, u16 *cntr_id)
3087 {
3088         return ice_alloc_res_cntr(hw, ICE_AQC_RES_TYPE_FDIR_COUNTER_BLOCK,
3089                                   ICE_AQC_RES_TYPE_FLAG_DEDICATED, 1, cntr_id);
3090 }
3091
3092 /**
3093  * ice_free_fd_res_cntr - Free counter resource for FD type
3094  * @hw: pointer to the hardware structure
3095  * @cntr_id: counter index to be freed
3096  */
3097 enum ice_status ice_free_fd_res_cntr(struct ice_hw *hw, u16 cntr_id)
3098 {
3099         return ice_free_res_cntr(hw, ICE_AQC_RES_TYPE_FDIR_COUNTER_BLOCK,
3100                                  ICE_AQC_RES_TYPE_FLAG_DEDICATED, 1, cntr_id);
3101 }
3102
3103 /**
3104  * ice_alloc_fd_guar_item - allocate resource for FD guaranteed entries
3105  * @hw: pointer to the hardware structure
3106  * @cntr_id: returns counter index
3107  * @num_fltr: number of filter entries to be allocated
3108  */
3109 enum ice_status
3110 ice_alloc_fd_guar_item(struct ice_hw *hw, u16 *cntr_id, u16 num_fltr)
3111 {
3112         return ice_alloc_res_cntr(hw, ICE_AQC_RES_TYPE_FDIR_GUARANTEED_ENTRIES,
3113                                   ICE_AQC_RES_TYPE_FLAG_DEDICATED, num_fltr,
3114                                   cntr_id);
3115 }
3116
3117 /**
3118  * ice_free_fd_guar_item - Free flow director guaranteed entries
3119  * @hw: pointer to the hardware structure
3120  * @cntr_id: counter index that needs to be freed
3121  * @num_fltr: number of filters to be freed
3122  */
3123 enum ice_status
3124 ice_free_fd_guar_item(struct ice_hw *hw, u16 cntr_id, u16 num_fltr)
3125 {
3126         return ice_free_res_cntr(hw, ICE_AQC_RES_TYPE_FDIR_GUARANTEED_ENTRIES,
3127                                  ICE_AQC_RES_TYPE_FLAG_DEDICATED, num_fltr,
3128                                  cntr_id);
3129 }
3130
3131 /**
3132  * ice_alloc_fd_shrd_item - allocate resource for flow director shared entries
3133  * @hw: pointer to the hardware structure
3134  * @cntr_id: returns counter index
3135  * @num_fltr: number of filter entries to be allocated
3136  */
3137 enum ice_status
3138 ice_alloc_fd_shrd_item(struct ice_hw *hw, u16 *cntr_id, u16 num_fltr)
3139 {
3140         return ice_alloc_res_cntr(hw, ICE_AQC_RES_TYPE_FDIR_SHARED_ENTRIES,
3141                                   ICE_AQC_RES_TYPE_FLAG_DEDICATED, num_fltr,
3142                                   cntr_id);
3143 }
3144
3145 /**
3146  * ice_free_fd_shrd_item - Free flow director shared entries
3147  * @hw: pointer to the hardware structure
3148  * @cntr_id: counter index that needs to be freed
3149  * @num_fltr: number of filters to be freed
3150  */
3151 enum ice_status
3152 ice_free_fd_shrd_item(struct ice_hw *hw, u16 cntr_id, u16 num_fltr)
3153 {
3154         return ice_free_res_cntr(hw, ICE_AQC_RES_TYPE_FDIR_SHARED_ENTRIES,
3155                                  ICE_AQC_RES_TYPE_FLAG_DEDICATED, num_fltr,
3156                                  cntr_id);
3157 }
3158
3159 /**
3160  * ice_get_fdir_cnt_all - get the number of Flow Director filters
3161  * @hw: hardware data structure
3162  *
3163  * Returns the number of filters available on device
3164  */
3165 int ice_get_fdir_cnt_all(struct ice_hw *hw)
3166 {
3167         return hw->func_caps.fd_fltr_guar + hw->func_caps.fd_fltr_best_effort;
3168 }
3169
3170 /**
3171  * ice_pkt_insert_ipv6_addr - insert a be32 IPv6 address into a memory buffer.
3172  * @pkt: packet buffer
3173  * @offset: offset into buffer
3174  * @addr: IPv6 address to convert and insert into pkt at offset
3175  */
3176 static void ice_pkt_insert_ipv6_addr(u8 *pkt, int offset, __be32 *addr)
3177 {
3178         int idx;
3179
3180         for (idx = 0; idx < ICE_IPV6_ADDR_LEN_AS_U32; idx++)
3181                 ice_memcpy(pkt + offset + idx * sizeof(*addr), &addr[idx],
3182                            sizeof(*addr), ICE_NONDMA_TO_NONDMA);
3183 }
3184
3185 /**
3186  * ice_pkt_insert_u6_qfi - insert a u6 value qfi into a memory buffer for gtpu
3187  * @pkt: packet buffer
3188  * @offset: offset into buffer
3189  * @data: 8 bit value to convert and insert into pkt at offset
3190  *
3191  * This function is designed for inserting qfi (6 bits) for gtpu.
3192  */
3193 static void ice_pkt_insert_u6_qfi(u8 *pkt, int offset, u8 data)
3194 {
3195         u8 ret;
3196
3197         ret = (data & 0x3F) + (*(pkt + offset) & 0xC0);
3198         ice_memcpy(pkt + offset, &ret, sizeof(ret), ICE_NONDMA_TO_NONDMA);
3199 }
3200
3201 /**
3202  * ice_pkt_insert_u8 - insert a u8 value into a memory buffer.
3203  * @pkt: packet buffer
3204  * @offset: offset into buffer
3205  * @data: 8 bit value to convert and insert into pkt at offset
3206  */
3207 static void ice_pkt_insert_u8(u8 *pkt, int offset, u8 data)
3208 {
3209         ice_memcpy(pkt + offset, &data, sizeof(data), ICE_NONDMA_TO_NONDMA);
3210 }
3211
3212 /**
3213  * ice_pkt_insert_u8_tc - insert a u8 value into a memory buffer for TC ipv6.
3214  * @pkt: packet buffer
3215  * @offset: offset into buffer
3216  * @data: 8 bit value to convert and insert into pkt at offset
3217  *
3218  * This function is designed for inserting Traffic Class (TC) for IPv6,
3219  * since that TC is not aligned in number of bytes. Here we split it out
3220  * into two part and fill each byte with data copy from pkt, then insert
3221  * the two bytes data one by one.
3222  */
3223 static void ice_pkt_insert_u8_tc(u8 *pkt, int offset, u8 data)
3224 {
3225         u8 high, low;
3226
3227         high = (data >> 4) + (*(pkt + offset) & 0xF0);
3228         ice_memcpy(pkt + offset, &high, sizeof(high), ICE_NONDMA_TO_NONDMA);
3229
3230         low = (*(pkt + offset + 1) & 0x0F) + ((data & 0x0F) << 4);
3231         ice_memcpy(pkt + offset + 1, &low, sizeof(low), ICE_NONDMA_TO_NONDMA);
3232 }
3233
3234 /**
3235  * ice_pkt_insert_u16 - insert a be16 value into a memory buffer.
3236  * @pkt: packet buffer
3237  * @offset: offset into buffer
3238  * @data: 16 bit value to convert and insert into pkt at offset
3239  */
3240 static void ice_pkt_insert_u16(u8 *pkt, int offset, __be16 data)
3241 {
3242         ice_memcpy(pkt + offset, &data, sizeof(data), ICE_NONDMA_TO_NONDMA);
3243 }
3244
3245 /**
3246  * ice_pkt_insert_u32 - insert a be32 value into a memory buffer.
3247  * @pkt: packet buffer
3248  * @offset: offset into buffer
3249  * @data: 32 bit value to convert and insert into pkt at offset
3250  */
3251 static void ice_pkt_insert_u32(u8 *pkt, int offset, __be32 data)
3252 {
3253         ice_memcpy(pkt + offset, &data, sizeof(data), ICE_NONDMA_TO_NONDMA);
3254 }
3255
3256 /**
3257  * ice_pkt_insert_mac_addr - insert a MAC addr into a memory buffer.
3258  * @pkt: packet buffer
3259  * @addr: MAC address to convert and insert into pkt at offset
3260  */
3261 static void ice_pkt_insert_mac_addr(u8 *pkt, u8 *addr)
3262 {
3263         ice_memcpy(pkt, addr, ETH_ALEN, ICE_NONDMA_TO_NONDMA);
3264 }
3265
3266 /**
3267  * ice_fdir_get_open_tunnel_port
3268  * @hw: pointer to the hardware structure
3269  * @flow: flow ptype
3270  * @port: returns open port
3271  *
3272  * returns an open tunnel port specified for this flow type
3273  */
3274 static enum ice_status
3275 ice_fdir_get_open_tunnel_port(struct ice_hw *hw, enum ice_fltr_ptype flow,
3276                               u16 *port)
3277 {
3278         switch (flow) {
3279         case ICE_FLTR_PTYPE_NONF_IPV4_UDP_ECPRI_TP0:
3280                 /* eCPRI tunnel */
3281                 if (!ice_get_open_tunnel_port(hw, TNL_ECPRI, port))
3282                         return ICE_ERR_DOES_NOT_EXIST;
3283                 break;
3284         default:
3285                 if (!ice_get_open_tunnel_port(hw, TNL_VXLAN, port) &&
3286                     !ice_get_open_tunnel_port(hw, TNL_GENEVE, port))
3287                         return ICE_ERR_DOES_NOT_EXIST;
3288         }
3289
3290         return ICE_SUCCESS;
3291 }
3292
3293 /**
3294  * ice_fdir_get_gen_prgm_pkt - generate a training packet
3295  * @hw: pointer to the hardware structure
3296  * @input: flow director filter data structure
3297  * @pkt: pointer to return filter packet
3298  * @frag: generate a fragment packet
3299  * @tun: true implies generate a tunnel packet
3300  */
3301 enum ice_status
3302 ice_fdir_get_gen_prgm_pkt(struct ice_hw *hw, struct ice_fdir_fltr *input,
3303                           u8 *pkt, bool frag, bool tun)
3304 {
3305         enum ice_fltr_ptype flow;
3306         u16 tnl_port;
3307         u8 *loc;
3308         u16 idx;
3309
3310         if (input->flow_type == ICE_FLTR_PTYPE_NONF_IPV4_OTHER) {
3311                 switch (input->ip.v4.proto) {
3312                 case ICE_IP_PROTO_TCP:
3313                         flow = ICE_FLTR_PTYPE_NONF_IPV4_TCP;
3314                         break;
3315                 case ICE_IP_PROTO_UDP:
3316                         flow = ICE_FLTR_PTYPE_NONF_IPV4_UDP;
3317                         break;
3318                 case ICE_IP_PROTO_SCTP:
3319                         flow = ICE_FLTR_PTYPE_NONF_IPV4_SCTP;
3320                         break;
3321                 default:
3322                         flow = ICE_FLTR_PTYPE_NONF_IPV4_OTHER;
3323                         break;
3324                 }
3325         } else if (input->flow_type == ICE_FLTR_PTYPE_NONF_IPV6_OTHER) {
3326                 switch (input->ip.v6.proto) {
3327                 case ICE_IP_PROTO_TCP:
3328                         flow = ICE_FLTR_PTYPE_NONF_IPV6_TCP;
3329                         break;
3330                 case ICE_IP_PROTO_UDP:
3331                         flow = ICE_FLTR_PTYPE_NONF_IPV6_UDP;
3332                         break;
3333                 case ICE_IP_PROTO_SCTP:
3334                         flow = ICE_FLTR_PTYPE_NONF_IPV6_SCTP;
3335                         break;
3336                 default:
3337                         flow = ICE_FLTR_PTYPE_NONF_IPV6_OTHER;
3338                         break;
3339                 }
3340         } else {
3341                 flow = input->flow_type;
3342         }
3343
3344         for (idx = 0; idx < ICE_FDIR_NUM_PKT; idx++)
3345                 if (ice_fdir_pkt[idx].flow == flow)
3346                         break;
3347         if (idx == ICE_FDIR_NUM_PKT)
3348                 return ICE_ERR_PARAM;
3349         if (!tun) {
3350                 ice_memcpy(pkt, ice_fdir_pkt[idx].pkt,
3351                            ice_fdir_pkt[idx].pkt_len, ICE_NONDMA_TO_NONDMA);
3352                 loc = pkt;
3353         } else {
3354                 if (!ice_fdir_pkt[idx].tun_pkt)
3355                         return ICE_ERR_PARAM;
3356
3357                 switch (flow) {
3358                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4:
3359                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4_UDP:
3360                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4_TCP:
3361                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV6:
3362                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV6_UDP:
3363                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV6_TCP:
3364                         ice_memcpy(pkt, ice_fdir_pkt[idx].tun_pkt,
3365                                    ice_fdir_pkt[idx].tun_pkt_len,
3366                                    ICE_NONDMA_TO_NONDMA);
3367                         loc = &pkt[ICE_FDIR_GTPU_IP_INNER_PKT_OFF];
3368                         break;
3369                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV4:
3370                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV4_UDP:
3371                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV4_TCP:
3372                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV6:
3373                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV6_UDP:
3374                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV6_TCP:
3375                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV4:
3376                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV4_UDP:
3377                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV4_TCP:
3378                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV6:
3379                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV6_UDP:
3380                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV6_TCP:
3381                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV4:
3382                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV4_UDP:
3383                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV4_TCP:
3384                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV6:
3385                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV6_UDP:
3386                 case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV6_TCP:
3387                         ice_memcpy(pkt, ice_fdir_pkt[idx].tun_pkt,
3388                                    ice_fdir_pkt[idx].tun_pkt_len,
3389                                    ICE_NONDMA_TO_NONDMA);
3390                         loc = &pkt[ICE_FDIR_GTPU_EH_INNER_PKT_OFF];
3391                         break;
3392                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4:
3393                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_UDP:
3394                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_TCP:
3395                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV6:
3396                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV6_UDP:
3397                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV6_TCP:
3398                         ice_memcpy(pkt, ice_fdir_pkt[idx].tun_pkt,
3399                                    ice_fdir_pkt[idx].tun_pkt_len,
3400                                    ICE_NONDMA_TO_NONDMA);
3401                         loc = &pkt[ICE_FDIR_IPV4_GRE_INNER_PKT_OFF];
3402                         break;
3403                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4:
3404                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_UDP:
3405                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_TCP:
3406                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV6:
3407                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV6_UDP:
3408                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV6_TCP:
3409                         ice_memcpy(pkt, ice_fdir_pkt[idx].tun_pkt,
3410                                    ice_fdir_pkt[idx].tun_pkt_len,
3411                                    ICE_NONDMA_TO_NONDMA);
3412                         loc = &pkt[ICE_FDIR_IPV6_GRE_INNER_PKT_OFF];
3413                         break;
3414                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV4:
3415                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV4_UDP:
3416                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV4_TCP:
3417                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV6:
3418                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV6_UDP:
3419                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV6_TCP:
3420                         ice_memcpy(pkt, ice_fdir_pkt[idx].tun_pkt,
3421                                    ice_fdir_pkt[idx].tun_pkt_len,
3422                                    ICE_NONDMA_TO_NONDMA);
3423                         loc = &pkt[ICE_FDIR_V4_V4_GTPOGRE_PKT_OFF];
3424                         break;
3425                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV4:
3426                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV4_UDP:
3427                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV4_TCP:
3428                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV6:
3429                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV6_UDP:
3430                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV6_TCP:
3431                         ice_memcpy(pkt, ice_fdir_pkt[idx].tun_pkt,
3432                                    ice_fdir_pkt[idx].tun_pkt_len,
3433                                    ICE_NONDMA_TO_NONDMA);
3434                         loc = &pkt[ICE_FDIR_V6_V4_GTPOGRE_PKT_OFF];
3435                         break;
3436                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV4:
3437                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV4_UDP:
3438                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV4_TCP:
3439                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV6:
3440                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV6_UDP:
3441                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV6_TCP:
3442                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV4:
3443                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV4_UDP:
3444                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV4_TCP:
3445                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV6:
3446                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV6_UDP:
3447                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV6_TCP:
3448                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV4:
3449                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV4_UDP:
3450                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV4_TCP:
3451                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV6:
3452                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV6_UDP:
3453                 case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV6_TCP:
3454                         ice_memcpy(pkt, ice_fdir_pkt[idx].tun_pkt,
3455                                    ice_fdir_pkt[idx].tun_pkt_len,
3456                                    ICE_NONDMA_TO_NONDMA);
3457                         loc = &pkt[ICE_FDIR_V4_V4_GTPOGRE_EH_PKT_OFF];
3458                         break;
3459                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV4:
3460                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV4_UDP:
3461                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV4_TCP:
3462                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV6:
3463                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV6_UDP:
3464                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV6_TCP:
3465                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV4:
3466                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV4_UDP:
3467                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV4_TCP:
3468                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV6:
3469                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV6_UDP:
3470                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV6_TCP:
3471                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV4:
3472                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV4_UDP:
3473                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV4_TCP:
3474                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV6:
3475                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV6_UDP:
3476                 case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV6_TCP:
3477                         ice_memcpy(pkt, ice_fdir_pkt[idx].tun_pkt,
3478                                    ice_fdir_pkt[idx].tun_pkt_len,
3479                                    ICE_NONDMA_TO_NONDMA);
3480                         loc = &pkt[ICE_FDIR_V6_V4_GTPOGRE_EH_PKT_OFF];
3481                         break;
3482                 default:
3483                         if (ice_fdir_get_open_tunnel_port(hw, flow, &tnl_port))
3484                                 return ICE_ERR_DOES_NOT_EXIST;
3485
3486                         ice_memcpy(pkt, ice_fdir_pkt[idx].tun_pkt,
3487                                    ice_fdir_pkt[idx].tun_pkt_len,
3488                                    ICE_NONDMA_TO_NONDMA);
3489                         ice_pkt_insert_u16(pkt, ICE_IPV4_UDP_DST_PORT_OFFSET,
3490                                            HTONS(tnl_port));
3491                         loc = &pkt[ICE_FDIR_TUN_PKT_OFF];
3492                         break;
3493                 }
3494         }
3495
3496         /* Reverse the src and dst, since the HW expects them to be from Tx
3497          * perspective. The input from user is from Rx filter perspective.
3498          */
3499         switch (flow) {
3500         case ICE_FLTR_PTYPE_NONF_IPV4_TCP:
3501                 ice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,
3502                                    input->ip.v4.src_ip);
3503                 ice_pkt_insert_u16(loc, ICE_IPV4_TCP_DST_PORT_OFFSET,
3504                                    input->ip.v4.src_port);
3505                 ice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,
3506                                    input->ip.v4.dst_ip);
3507                 ice_pkt_insert_u16(loc, ICE_IPV4_TCP_SRC_PORT_OFFSET,
3508                                    input->ip.v4.dst_port);
3509                 ice_pkt_insert_u8(loc, ICE_IPV4_TOS_OFFSET, input->ip.v4.tos);
3510                 ice_pkt_insert_u8(loc, ICE_IPV4_TTL_OFFSET, input->ip.v4.ttl);
3511                 ice_pkt_insert_mac_addr(loc, input->ext_data.dst_mac);
3512                 if (frag)
3513                         loc[20] = ICE_FDIR_IPV4_PKT_FLAG_MF;
3514                 break;
3515         case ICE_FLTR_PTYPE_NONF_IPV4_UDP:
3516                 ice_pkt_insert_mac_addr(pkt, input->ext_data_outer.dst_mac);
3517                 ice_pkt_insert_mac_addr(pkt + ETH_ALEN,
3518                                         input->ext_data_outer.src_mac);
3519                 ice_pkt_insert_u32(pkt, ICE_IPV4_SRC_ADDR_OFFSET,
3520                                    input->ip_outer.v4.dst_ip);
3521                 ice_pkt_insert_u32(pkt, ICE_IPV4_DST_ADDR_OFFSET,
3522                                    input->ip_outer.v4.src_ip);
3523                 ice_pkt_insert_u8(pkt, ICE_IPV4_TOS_OFFSET, input->ip_outer.v4.tos);
3524                 ice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,
3525                                    input->ip.v4.src_ip);
3526                 ice_pkt_insert_u16(loc, ICE_IPV4_UDP_DST_PORT_OFFSET,
3527                                    input->ip.v4.src_port);
3528                 ice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,
3529                                    input->ip.v4.dst_ip);
3530                 ice_pkt_insert_u16(loc, ICE_IPV4_UDP_SRC_PORT_OFFSET,
3531                                    input->ip.v4.dst_port);
3532                 ice_pkt_insert_u8(loc, ICE_IPV4_TOS_OFFSET, input->ip.v4.tos);
3533                 ice_pkt_insert_u8(loc, ICE_IPV4_TTL_OFFSET, input->ip.v4.ttl);
3534                 ice_pkt_insert_mac_addr(loc, input->ext_data.dst_mac);
3535                 ice_pkt_insert_mac_addr(loc + ETH_ALEN, input->ext_data.src_mac);
3536                 break;
3537         case ICE_FLTR_PTYPE_NONF_IPV4_SCTP:
3538                 ice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,
3539                                    input->ip.v4.src_ip);
3540                 ice_pkt_insert_u16(loc, ICE_IPV4_SCTP_DST_PORT_OFFSET,
3541                                    input->ip.v4.src_port);
3542                 ice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,
3543                                    input->ip.v4.dst_ip);
3544                 ice_pkt_insert_u16(loc, ICE_IPV4_SCTP_SRC_PORT_OFFSET,
3545                                    input->ip.v4.dst_port);
3546                 ice_pkt_insert_u8(loc, ICE_IPV4_TOS_OFFSET, input->ip.v4.tos);
3547                 ice_pkt_insert_u8(loc, ICE_IPV4_TTL_OFFSET, input->ip.v4.ttl);
3548                 ice_pkt_insert_mac_addr(loc, input->ext_data.dst_mac);
3549                 break;
3550         case ICE_FLTR_PTYPE_NONF_IPV4_OTHER:
3551                 ice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,
3552                                    input->ip.v4.src_ip);
3553                 ice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,
3554                                    input->ip.v4.dst_ip);
3555                 ice_pkt_insert_u8(loc, ICE_IPV4_TOS_OFFSET, input->ip.v4.tos);
3556                 ice_pkt_insert_u8(loc, ICE_IPV4_TTL_OFFSET, input->ip.v4.ttl);
3557                 ice_pkt_insert_u8(loc, ICE_IPV4_PROTO_OFFSET,
3558                                   input->ip.v4.proto);
3559                 ice_pkt_insert_mac_addr(loc, input->ext_data.dst_mac);
3560                 break;
3561         case ICE_FLTR_PTYPE_NONF_IPV4_UDP_VXLAN:
3562         case ICE_FLTR_PTYPE_NONF_IPV4_UDP_VXLAN_IPV4_UDP:
3563                 ice_pkt_insert_mac_addr(pkt, input->ext_data_outer.dst_mac);
3564                 ice_pkt_insert_mac_addr(pkt + ETH_ALEN, input->ext_data_outer.src_mac);
3565                 ice_pkt_insert_u32(pkt, ICE_IPV4_SRC_ADDR_OFFSET,
3566                                    input->ip_outer.v4.dst_ip);
3567                 ice_pkt_insert_u32(pkt, ICE_IPV4_DST_ADDR_OFFSET,
3568                                    input->ip_outer.v4.src_ip);
3569                 ice_pkt_insert_u8(pkt, ICE_IPV4_TOS_OFFSET, input->ip_outer.v4.tos);
3570                 ice_pkt_insert_u32(pkt, ICE_IPV4_VXLAN_VNI_OFFSET,
3571                                    input->vxlan_data.vni);
3572                 ice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,
3573                                    input->ip.v4.src_ip);
3574                 ice_pkt_insert_u16(loc, ICE_IPV4_UDP_DST_PORT_OFFSET,
3575                                    input->ip.v4.src_port);
3576                 ice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,
3577                                    input->ip.v4.dst_ip);
3578                 ice_pkt_insert_u16(loc, ICE_IPV4_UDP_SRC_PORT_OFFSET,
3579                                    input->ip.v4.dst_port);
3580                 ice_pkt_insert_u8(loc, ICE_IPV4_TOS_OFFSET, input->ip.v4.tos);
3581                 ice_pkt_insert_u8(loc, ICE_IPV4_TTL_OFFSET, input->ip.v4.ttl);
3582                 ice_pkt_insert_mac_addr(loc, input->ext_data.dst_mac);
3583                 ice_pkt_insert_mac_addr(loc + ETH_ALEN, input->ext_data.src_mac);
3584                 break;
3585         case ICE_FLTR_PTYPE_NONF_IPV4_UDP_VXLAN_IPV4_TCP:
3586                 ice_pkt_insert_mac_addr(pkt, input->ext_data_outer.dst_mac);
3587                 ice_pkt_insert_mac_addr(pkt + ETH_ALEN,
3588                                         input->ext_data_outer.src_mac);
3589                 ice_pkt_insert_u32(pkt, ICE_IPV4_SRC_ADDR_OFFSET,
3590                                    input->ip_outer.v4.dst_ip);
3591                 ice_pkt_insert_u32(pkt, ICE_IPV4_DST_ADDR_OFFSET,
3592                                    input->ip_outer.v4.src_ip);
3593                 ice_pkt_insert_u8(pkt, ICE_IPV4_TOS_OFFSET,
3594                                   input->ip_outer.v4.tos);
3595                 ice_pkt_insert_u32(pkt, ICE_IPV4_VXLAN_VNI_OFFSET,
3596                                    input->vxlan_data.vni);
3597                 ice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,
3598                                    input->ip.v4.src_ip);
3599                 ice_pkt_insert_u16(loc, ICE_IPV4_TCP_DST_PORT_OFFSET,
3600                                    input->ip.v4.src_port);
3601                 ice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,
3602                                    input->ip.v4.dst_ip);
3603                 ice_pkt_insert_u16(loc, ICE_IPV4_TCP_SRC_PORT_OFFSET,
3604                                    input->ip.v4.dst_port);
3605                 ice_pkt_insert_u8(loc, ICE_IPV4_TOS_OFFSET, input->ip.v4.tos);
3606                 ice_pkt_insert_u8(loc, ICE_IPV4_TTL_OFFSET, input->ip.v4.ttl);
3607                 ice_pkt_insert_mac_addr(loc, input->ext_data.dst_mac);
3608                 ice_pkt_insert_mac_addr(loc + ETH_ALEN,
3609                                         input->ext_data.src_mac);
3610                 if (frag)
3611                         loc[20] = ICE_FDIR_IPV4_PKT_FLAG_MF;
3612                 break;
3613         case ICE_FLTR_PTYPE_NONF_IPV4_UDP_VXLAN_IPV4_SCTP:
3614                 ice_pkt_insert_mac_addr(pkt, input->ext_data_outer.dst_mac);
3615                 ice_pkt_insert_mac_addr(pkt + ETH_ALEN,
3616                                         input->ext_data_outer.src_mac);
3617                 ice_pkt_insert_u32(pkt, ICE_IPV4_SRC_ADDR_OFFSET,
3618                                    input->ip_outer.v4.dst_ip);
3619                 ice_pkt_insert_u32(pkt, ICE_IPV4_DST_ADDR_OFFSET,
3620                                    input->ip_outer.v4.src_ip);
3621                 ice_pkt_insert_u8(pkt, ICE_IPV4_TOS_OFFSET,
3622                                   input->ip_outer.v4.tos);
3623                 ice_pkt_insert_u32(pkt, ICE_IPV4_VXLAN_VNI_OFFSET,
3624                                    input->vxlan_data.vni);
3625                 ice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,
3626                                    input->ip.v4.src_ip);
3627                 ice_pkt_insert_u16(loc, ICE_IPV4_SCTP_DST_PORT_OFFSET,
3628                                    input->ip.v4.src_port);
3629                 ice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,
3630                                    input->ip.v4.dst_ip);
3631                 ice_pkt_insert_u16(loc, ICE_IPV4_SCTP_SRC_PORT_OFFSET,
3632                                    input->ip.v4.dst_port);
3633                 ice_pkt_insert_u8(loc, ICE_IPV4_TOS_OFFSET, input->ip.v4.tos);
3634                 ice_pkt_insert_u8(loc, ICE_IPV4_TTL_OFFSET, input->ip.v4.ttl);
3635                 ice_pkt_insert_mac_addr(loc, input->ext_data.dst_mac);
3636                 ice_pkt_insert_mac_addr(loc + ETH_ALEN,
3637                                         input->ext_data.src_mac);
3638                 break;
3639         case ICE_FLTR_PTYPE_NONF_IPV4_UDP_VXLAN_IPV4_OTHER:
3640                 ice_pkt_insert_mac_addr(pkt, input->ext_data_outer.dst_mac);
3641                 ice_pkt_insert_mac_addr(pkt + ETH_ALEN,
3642                                         input->ext_data_outer.src_mac);
3643                 ice_pkt_insert_u32(pkt, ICE_IPV4_SRC_ADDR_OFFSET,
3644                                    input->ip_outer.v4.dst_ip);
3645                 ice_pkt_insert_u32(pkt, ICE_IPV4_DST_ADDR_OFFSET,
3646                                    input->ip_outer.v4.src_ip);
3647                 ice_pkt_insert_u8(pkt, ICE_IPV4_TOS_OFFSET,
3648                                   input->ip_outer.v4.tos);
3649                 ice_pkt_insert_u32(pkt, ICE_IPV4_VXLAN_VNI_OFFSET,
3650                                    input->vxlan_data.vni);
3651                 ice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,
3652                                    input->ip.v4.src_ip);
3653                 ice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,
3654                                    input->ip.v4.dst_ip);
3655                 ice_pkt_insert_u8(loc, ICE_IPV4_TOS_OFFSET, input->ip.v4.tos);
3656                 ice_pkt_insert_u8(loc, ICE_IPV4_TTL_OFFSET, input->ip.v4.ttl);
3657                 ice_pkt_insert_u8(loc, ICE_IPV4_PROTO_OFFSET,
3658                                   input->ip.v4.proto);
3659                 ice_pkt_insert_mac_addr(loc, input->ext_data.dst_mac);
3660                 ice_pkt_insert_mac_addr(loc + ETH_ALEN,
3661                                         input->ext_data.src_mac);
3662                 break;
3663         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU:
3664                 ice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,
3665                                    input->ip.v4.src_ip);
3666                 ice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,
3667                                    input->ip.v4.dst_ip);
3668                 ice_pkt_insert_u32(loc, ICE_IPV4_GTPU_TEID_OFFSET,
3669                                    input->gtpu_data.teid);
3670                 break;
3671         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4:
3672         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV4:
3673         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV4:
3674         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV4:
3675         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV4:
3676         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV4:
3677         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV4:
3678         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV4:
3679         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV4:
3680         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV4:
3681         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV4:
3682         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV4:
3683                 ice_pkt_insert_u32(loc, ICE_IPV4_NO_MAC_DST_ADDR_OFFSET,
3684                                    input->ip.v4.src_ip);
3685                 ice_pkt_insert_u32(loc, ICE_IPV4_NO_MAC_SRC_ADDR_OFFSET,
3686                                    input->ip.v4.dst_ip);
3687                 ice_pkt_insert_u8(loc, ICE_IPV4_NO_MAC_TOS_OFFSET, input->ip.v4.tos);
3688                 ice_pkt_insert_u8(loc, ICE_IPV4_NO_MAC_TTL_OFFSET, input->ip.v4.ttl);
3689                 ice_pkt_insert_u8(loc, ICE_IPV4_NO_MAC_PROTO_OFFSET,
3690                                   input->ip.v4.proto);
3691                 break;
3692         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH:
3693         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW:
3694         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP:
3695                 ice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,
3696                                    input->ip.v4.src_ip);
3697                 ice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,
3698                                    input->ip.v4.dst_ip);
3699                 ice_pkt_insert_u32(loc, ICE_IPV4_GTPU_TEID_OFFSET,
3700                                    input->gtpu_data.teid);
3701                 ice_pkt_insert_u6_qfi(loc, ICE_IPV4_GTPU_QFI_OFFSET,
3702                                       input->gtpu_data.qfi);
3703                 break;
3704         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU:
3705                 ice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,
3706                                    input->ip.v4.src_ip);
3707                 ice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,
3708                                    input->ip.v4.dst_ip);
3709                 ice_pkt_insert_u32(loc, ICE_IPV4_GTPOGRE_TEID_OFFSET,
3710                                    input->gtpu_data.teid);
3711                 break;
3712         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH:
3713         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW:
3714         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP:
3715                 ice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,
3716                                    input->ip.v4.src_ip);
3717                 ice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,
3718                                    input->ip.v4.dst_ip);
3719                 ice_pkt_insert_u32(loc, ICE_IPV4_GTPOGRE_TEID_OFFSET,
3720                                    input->gtpu_data.teid);
3721                 ice_pkt_insert_u6_qfi(loc, ICE_IPV4_GTPOGRE_QFI_OFFSET,
3722                                       input->gtpu_data.qfi);
3723                 break;
3724         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4_UDP:
3725         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV4_UDP:
3726         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV4_UDP:
3727         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV4_UDP:
3728         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV4_UDP:
3729         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV4_UDP:
3730         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV4_UDP:
3731         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV4_UDP:
3732         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV4_UDP:
3733         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV4_UDP:
3734         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV4_UDP:
3735         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV4_UDP:
3736                 ice_pkt_insert_u32(loc, ICE_IPV4_NO_MAC_DST_ADDR_OFFSET,
3737                                    input->ip.v4.src_ip);
3738                 ice_pkt_insert_u16(loc, ICE_UDP4_NO_MAC_DST_PORT_OFFSET,
3739                                    input->ip.v4.src_port);
3740                 ice_pkt_insert_u32(loc, ICE_IPV4_NO_MAC_SRC_ADDR_OFFSET,
3741                                    input->ip.v4.dst_ip);
3742                 ice_pkt_insert_u16(loc, ICE_UDP4_NO_MAC_SRC_PORT_OFFSET,
3743                                    input->ip.v4.dst_port);
3744                 ice_pkt_insert_u8(loc, ICE_IPV4_NO_MAC_TOS_OFFSET, input->ip.v4.tos);
3745                 ice_pkt_insert_u8(loc, ICE_IPV4_NO_MAC_TTL_OFFSET, input->ip.v4.ttl);
3746                 break;
3747         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4_TCP:
3748         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV4_TCP:
3749         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV4_TCP:
3750         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV4_TCP:
3751         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV4_TCP:
3752         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV4_TCP:
3753         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV4_TCP:
3754         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV4_TCP:
3755         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV4_TCP:
3756         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV4_TCP:
3757         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV4_TCP:
3758         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV4_TCP:
3759                 ice_pkt_insert_u32(loc, ICE_IPV4_NO_MAC_DST_ADDR_OFFSET,
3760                                    input->ip.v4.src_ip);
3761                 ice_pkt_insert_u16(loc, ICE_TCP4_NO_MAC_DST_PORT_OFFSET,
3762                                    input->ip.v4.src_port);
3763                 ice_pkt_insert_u32(loc, ICE_IPV4_NO_MAC_SRC_ADDR_OFFSET,
3764                                    input->ip.v4.dst_ip);
3765                 ice_pkt_insert_u16(loc, ICE_TCP4_NO_MAC_SRC_PORT_OFFSET,
3766                                    input->ip.v4.dst_port);
3767                 ice_pkt_insert_u8(loc, ICE_IPV4_NO_MAC_TOS_OFFSET, input->ip.v4.tos);
3768                 ice_pkt_insert_u8(loc, ICE_IPV4_NO_MAC_TTL_OFFSET, input->ip.v4.ttl);
3769                 break;
3770         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV6:
3771         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV6:
3772         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV6:
3773         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV6:
3774         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV6:
3775         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV6:
3776         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV6:
3777         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV6:
3778         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV6:
3779         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV6:
3780         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV6:
3781         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV6:
3782                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_NO_MAC_DST_ADDR_OFFSET,
3783                                          input->ip.v6.src_ip);
3784                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_NO_MAC_SRC_ADDR_OFFSET,
3785                                          input->ip.v6.dst_ip);
3786                 ice_pkt_insert_u8_tc(loc, ICE_IPV6_NO_MAC_TC_OFFSET, input->ip.v6.tc);
3787                 ice_pkt_insert_u8(loc, ICE_IPV6_NO_MAC_HLIM_OFFSET, input->ip.v6.hlim);
3788                 ice_pkt_insert_u8(loc, ICE_IPV6_NO_MAC_PROTO_OFFSET,
3789                                   input->ip.v6.proto);
3790                 break;
3791         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV6_UDP:
3792         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV6_UDP:
3793         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV6_UDP:
3794         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV6_UDP:
3795         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV6_UDP:
3796         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV6_UDP:
3797         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV6_UDP:
3798         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV6_UDP:
3799         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV6_UDP:
3800         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV6_UDP:
3801         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV6_UDP:
3802         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV6_UDP:
3803                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_NO_MAC_DST_ADDR_OFFSET,
3804                                          input->ip.v6.src_ip);
3805                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_NO_MAC_SRC_ADDR_OFFSET,
3806                                          input->ip.v6.dst_ip);
3807                 ice_pkt_insert_u16(loc, ICE_UDP6_NO_MAC_DST_PORT_OFFSET,
3808                                    input->ip.v6.src_port);
3809                 ice_pkt_insert_u16(loc, ICE_UDP6_NO_MAC_SRC_PORT_OFFSET,
3810                                    input->ip.v6.dst_port);
3811                 ice_pkt_insert_u8_tc(loc, ICE_IPV6_NO_MAC_TC_OFFSET, input->ip.v6.tc);
3812                 ice_pkt_insert_u8(loc, ICE_IPV6_NO_MAC_HLIM_OFFSET, input->ip.v6.hlim);
3813                 break;
3814         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV6_TCP:
3815         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV6_TCP:
3816         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_DW_IPV6_TCP:
3817         case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_UP_IPV6_TCP:
3818         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_IPV6_TCP:
3819         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_IPV6_TCP:
3820         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_IPV6_TCP:
3821         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_DW_IPV6_TCP:
3822         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_GTPU_EH_UP_IPV6_TCP:
3823         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_IPV6_TCP:
3824         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW_IPV6_TCP:
3825         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP_IPV6_TCP:
3826                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_NO_MAC_DST_ADDR_OFFSET,
3827                                          input->ip.v6.src_ip);
3828                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_NO_MAC_SRC_ADDR_OFFSET,
3829                                          input->ip.v6.dst_ip);
3830                 ice_pkt_insert_u16(loc, ICE_TCP6_NO_MAC_DST_PORT_OFFSET,
3831                                    input->ip.v6.src_port);
3832                 ice_pkt_insert_u16(loc, ICE_TCP6_NO_MAC_SRC_PORT_OFFSET,
3833                                    input->ip.v6.dst_port);
3834                 ice_pkt_insert_u8_tc(loc, ICE_IPV6_NO_MAC_TC_OFFSET, input->ip.v6.tc);
3835                 ice_pkt_insert_u8(loc, ICE_IPV6_NO_MAC_HLIM_OFFSET, input->ip.v6.hlim);
3836                 break;
3837         case ICE_FLTR_PTYPE_NONF_IPV6_GTPU:
3838         case ICE_FLTR_PTYPE_NONF_IPV6_GTPU_IPV6_OTHER:
3839                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_DST_ADDR_OFFSET,
3840                                          input->ip.v6.src_ip);
3841                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_SRC_ADDR_OFFSET,
3842                                          input->ip.v6.dst_ip);
3843                 ice_pkt_insert_u32(loc, ICE_IPV6_GTPU_TEID_OFFSET,
3844                                    input->gtpu_data.teid);
3845                 break;
3846         case ICE_FLTR_PTYPE_NONF_IPV6_GTPU_EH:
3847         case ICE_FLTR_PTYPE_NONF_IPV6_GTPU_EH_DW:
3848         case ICE_FLTR_PTYPE_NONF_IPV6_GTPU_EH_UP:
3849         case ICE_FLTR_PTYPE_NONF_IPV6_GTPU_EH_IPV6_OTHER:
3850                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_DST_ADDR_OFFSET,
3851                                          input->ip.v6.src_ip);
3852                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_SRC_ADDR_OFFSET,
3853                                          input->ip.v6.dst_ip);
3854                 ice_pkt_insert_u32(loc, ICE_IPV6_GTPU_TEID_OFFSET,
3855                                    input->gtpu_data.teid);
3856                 ice_pkt_insert_u6_qfi(loc, ICE_IPV6_GTPU_QFI_OFFSET,
3857                                       input->gtpu_data.qfi);
3858                 break;
3859         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU:
3860                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_DST_ADDR_OFFSET,
3861                                          input->ip.v6.src_ip);
3862                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_SRC_ADDR_OFFSET,
3863                                          input->ip.v6.dst_ip);
3864                 ice_pkt_insert_u32(loc, ICE_IPV6_GTPOGRE_TEID_OFFSET,
3865                                    input->gtpu_data.teid);
3866                 break;
3867         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH:
3868         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_DW:
3869         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_GTPU_EH_UP:
3870                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_DST_ADDR_OFFSET,
3871                                          input->ip.v6.src_ip);
3872                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_SRC_ADDR_OFFSET,
3873                                          input->ip.v6.dst_ip);
3874                 ice_pkt_insert_u32(loc, ICE_IPV6_GTPOGRE_TEID_OFFSET,
3875                                    input->gtpu_data.teid);
3876                 ice_pkt_insert_u6_qfi(loc, ICE_IPV6_GTPOGRE_QFI_OFFSET,
3877                                       input->gtpu_data.qfi);
3878                 break;
3879         case ICE_FLTR_PTYPE_NONF_IPV4_L2TPV3:
3880                 ice_pkt_insert_u32(loc, ICE_IPV4_L2TPV3_SESS_ID_OFFSET,
3881                                    input->l2tpv3_data.session_id);
3882                 break;
3883         case ICE_FLTR_PTYPE_NONF_IPV6_L2TPV3:
3884                 ice_pkt_insert_u32(loc, ICE_IPV6_L2TPV3_SESS_ID_OFFSET,
3885                                    input->l2tpv3_data.session_id);
3886                 break;
3887         case ICE_FLTR_PTYPE_NONF_IPV4_ESP:
3888                 ice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,
3889                                    input->ip.v4.src_ip);
3890                 ice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,
3891                                    input->ip.v4.dst_ip);
3892                 ice_pkt_insert_u32(loc, ICE_IPV4_ESP_SPI_OFFSET,
3893                                    input->ip.v4.sec_parm_idx);
3894                 break;
3895         case ICE_FLTR_PTYPE_NONF_IPV6_ESP:
3896                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_DST_ADDR_OFFSET,
3897                                          input->ip.v6.src_ip);
3898                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_SRC_ADDR_OFFSET,
3899                                          input->ip.v6.dst_ip);
3900                 ice_pkt_insert_u32(loc, ICE_IPV6_ESP_SPI_OFFSET,
3901                                    input->ip.v6.sec_parm_idx);
3902                 break;
3903         case ICE_FLTR_PTYPE_NONF_IPV4_AH:
3904                 ice_pkt_insert_u32(loc, ICE_IPV4_AH_SPI_OFFSET,
3905                                    input->ip.v4.sec_parm_idx);
3906                 break;
3907         case ICE_FLTR_PTYPE_NONF_IPV6_AH:
3908                 ice_pkt_insert_u32(loc, ICE_IPV6_AH_SPI_OFFSET,
3909                                    input->ip.v6.sec_parm_idx);
3910                 break;
3911         case ICE_FLTR_PTYPE_NONF_IPV4_NAT_T_ESP:
3912                 ice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,
3913                                    input->ip.v4.src_ip);
3914                 ice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,
3915                                    input->ip.v4.dst_ip);
3916                 ice_pkt_insert_u32(loc, ICE_IPV4_NAT_T_ESP_SPI_OFFSET,
3917                                    input->ip.v4.sec_parm_idx);
3918                 break;
3919         case ICE_FLTR_PTYPE_NONF_IPV6_NAT_T_ESP:
3920                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_DST_ADDR_OFFSET,
3921                                          input->ip.v6.src_ip);
3922                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_SRC_ADDR_OFFSET,
3923                                          input->ip.v6.dst_ip);
3924                 ice_pkt_insert_u32(loc, ICE_IPV6_NAT_T_ESP_SPI_OFFSET,
3925                                    input->ip.v6.sec_parm_idx);
3926                 break;
3927         case ICE_FLTR_PTYPE_NONF_IPV4_PFCP_NODE:
3928         case ICE_FLTR_PTYPE_NONF_IPV4_PFCP_SESSION:
3929                 ice_pkt_insert_u16(loc, ICE_IPV4_UDP_SRC_PORT_OFFSET,
3930                                    input->ip.v4.dst_port);
3931                 break;
3932         case ICE_FLTR_PTYPE_NONF_IPV6_PFCP_NODE:
3933         case ICE_FLTR_PTYPE_NONF_IPV6_PFCP_SESSION:
3934                 ice_pkt_insert_u16(loc, ICE_IPV6_UDP_SRC_PORT_OFFSET,
3935                                    input->ip.v6.dst_port);
3936                 break;
3937         case ICE_FLTR_PTYPE_NON_IP_L2:
3938                 ice_pkt_insert_u16(loc, ICE_MAC_ETHTYPE_OFFSET,
3939                                    input->ext_data.ether_type);
3940                 break;
3941         case ICE_FLTR_PTYPE_NONF_ECPRI_TP0:
3942                 ice_pkt_insert_u16(loc, ICE_ECPRI_TP0_PC_ID_OFFSET,
3943                                    input->ecpri_data.pc_id);
3944                 break;
3945         case ICE_FLTR_PTYPE_NONF_IPV4_UDP_ECPRI_TP0:
3946                 /* Use pkt instead of loc, since PC_ID is in outer part */
3947                 ice_pkt_insert_u16(pkt, ICE_IPV4_UDP_ECPRI_TP0_PC_ID_OFFSET,
3948                                    input->ecpri_data.pc_id);
3949                 break;
3950         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4:
3951         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4:
3952                 ice_pkt_insert_u32(loc, ICE_IPV4_NO_MAC_DST_ADDR_OFFSET,
3953                                    input->ip.v4.src_ip);
3954                 ice_pkt_insert_u32(loc, ICE_IPV4_NO_MAC_SRC_ADDR_OFFSET,
3955                                    input->ip.v4.dst_ip);
3956                 ice_pkt_insert_u8(loc, ICE_IPV4_NO_MAC_TOS_OFFSET,
3957                                   input->ip.v4.tos);
3958                 ice_pkt_insert_u8(loc, ICE_IPV4_NO_MAC_PROTO_OFFSET,
3959                                   input->ip.v4.proto);
3960                 break;
3961         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_TCP:
3962         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_TCP:
3963                 ice_pkt_insert_u32(loc, ICE_IPV4_NO_MAC_DST_ADDR_OFFSET,
3964                                    input->ip.v4.src_ip);
3965                 ice_pkt_insert_u16(loc, ICE_TCP4_NO_MAC_DST_PORT_OFFSET,
3966                                    input->ip.v4.src_port);
3967                 ice_pkt_insert_u32(loc, ICE_IPV4_NO_MAC_SRC_ADDR_OFFSET,
3968                                    input->ip.v4.dst_ip);
3969                 ice_pkt_insert_u16(loc, ICE_TCP4_NO_MAC_SRC_PORT_OFFSET,
3970                                    input->ip.v4.dst_port);
3971                 ice_pkt_insert_u8(loc, ICE_IPV4_NO_MAC_TOS_OFFSET,
3972                                   input->ip.v4.tos);
3973                 break;
3974         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV4_UDP:
3975         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV4_UDP:
3976                 ice_pkt_insert_u32(loc, ICE_IPV4_NO_MAC_DST_ADDR_OFFSET,
3977                                    input->ip.v4.src_ip);
3978                 ice_pkt_insert_u16(loc, ICE_UDP4_NO_MAC_DST_PORT_OFFSET,
3979                                    input->ip.v4.src_port);
3980                 ice_pkt_insert_u32(loc, ICE_IPV4_NO_MAC_SRC_ADDR_OFFSET,
3981                                    input->ip.v4.dst_ip);
3982                 ice_pkt_insert_u16(loc, ICE_UDP4_NO_MAC_SRC_PORT_OFFSET,
3983                                    input->ip.v4.dst_port);
3984                 ice_pkt_insert_u8(loc, ICE_IPV4_NO_MAC_TOS_OFFSET,
3985                                   input->ip.v4.tos);
3986                 break;
3987         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV6:
3988         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV6:
3989                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_NO_MAC_DST_ADDR_OFFSET,
3990                                          input->ip.v6.src_ip);
3991                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_NO_MAC_SRC_ADDR_OFFSET,
3992                                          input->ip.v6.dst_ip);
3993                 ice_pkt_insert_u8_tc(loc, ICE_IPV6_NO_MAC_TC_OFFSET,
3994                                      input->ip.v6.tc);
3995                 ice_pkt_insert_u8(loc, ICE_IPV6_NO_MAC_PROTO_OFFSET,
3996                                   input->ip.v6.proto);
3997                 break;
3998         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV6_TCP:
3999         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV6_TCP:
4000                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_NO_MAC_DST_ADDR_OFFSET,
4001                                          input->ip.v6.src_ip);
4002                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_NO_MAC_SRC_ADDR_OFFSET,
4003                                          input->ip.v6.dst_ip);
4004                 ice_pkt_insert_u16(loc, ICE_TCP6_NO_MAC_DST_PORT_OFFSET,
4005                                    input->ip.v6.src_port);
4006                 ice_pkt_insert_u16(loc, ICE_TCP6_NO_MAC_SRC_PORT_OFFSET,
4007                                    input->ip.v6.dst_port);
4008                 ice_pkt_insert_u8_tc(loc, ICE_IPV6_NO_MAC_TC_OFFSET,
4009                                      input->ip.v6.tc);
4010                 break;
4011         case ICE_FLTR_PTYPE_NONF_IPV4_GRE_IPV6_UDP:
4012         case ICE_FLTR_PTYPE_NONF_IPV6_GRE_IPV6_UDP:
4013                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_NO_MAC_DST_ADDR_OFFSET,
4014                                          input->ip.v6.src_ip);
4015                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_NO_MAC_SRC_ADDR_OFFSET,
4016                                          input->ip.v6.dst_ip);
4017                 ice_pkt_insert_u16(loc, ICE_UDP6_NO_MAC_DST_PORT_OFFSET,
4018                                    input->ip.v6.src_port);
4019                 ice_pkt_insert_u16(loc, ICE_UDP6_NO_MAC_SRC_PORT_OFFSET,
4020                                    input->ip.v6.dst_port);
4021                 ice_pkt_insert_u8_tc(loc, ICE_IPV6_NO_MAC_TC_OFFSET,
4022                                      input->ip.v6.tc);
4023                 break;
4024         case ICE_FLTR_PTYPE_NONF_IPV6_TCP:
4025                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_DST_ADDR_OFFSET,
4026                                          input->ip.v6.src_ip);
4027                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_SRC_ADDR_OFFSET,
4028                                          input->ip.v6.dst_ip);
4029                 ice_pkt_insert_u16(loc, ICE_IPV6_TCP_DST_PORT_OFFSET,
4030                                    input->ip.v6.src_port);
4031                 ice_pkt_insert_u16(loc, ICE_IPV6_TCP_SRC_PORT_OFFSET,
4032                                    input->ip.v6.dst_port);
4033                 ice_pkt_insert_u8_tc(loc, ICE_IPV6_TC_OFFSET, input->ip.v6.tc);
4034                 ice_pkt_insert_u8(loc, ICE_IPV6_HLIM_OFFSET, input->ip.v6.hlim);
4035                 ice_pkt_insert_mac_addr(loc, input->ext_data.dst_mac);
4036                 break;
4037         case ICE_FLTR_PTYPE_NONF_IPV6_UDP:
4038                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_DST_ADDR_OFFSET,
4039                                          input->ip.v6.src_ip);
4040                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_SRC_ADDR_OFFSET,
4041                                          input->ip.v6.dst_ip);
4042                 ice_pkt_insert_u16(loc, ICE_IPV6_UDP_DST_PORT_OFFSET,
4043                                    input->ip.v6.src_port);
4044                 ice_pkt_insert_u16(loc, ICE_IPV6_UDP_SRC_PORT_OFFSET,
4045                                    input->ip.v6.dst_port);
4046                 ice_pkt_insert_u8_tc(loc, ICE_IPV6_TC_OFFSET, input->ip.v6.tc);
4047                 ice_pkt_insert_u8(loc, ICE_IPV6_HLIM_OFFSET, input->ip.v6.hlim);
4048                 ice_pkt_insert_mac_addr(loc, input->ext_data.dst_mac);
4049                 break;
4050         case ICE_FLTR_PTYPE_NONF_IPV6_SCTP:
4051                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_DST_ADDR_OFFSET,
4052                                          input->ip.v6.src_ip);
4053                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_SRC_ADDR_OFFSET,
4054                                          input->ip.v6.dst_ip);
4055                 ice_pkt_insert_u16(loc, ICE_IPV6_SCTP_DST_PORT_OFFSET,
4056                                    input->ip.v6.src_port);
4057                 ice_pkt_insert_u16(loc, ICE_IPV6_SCTP_SRC_PORT_OFFSET,
4058                                    input->ip.v6.dst_port);
4059                 ice_pkt_insert_u8_tc(loc, ICE_IPV6_TC_OFFSET, input->ip.v6.tc);
4060                 ice_pkt_insert_u8(loc, ICE_IPV6_HLIM_OFFSET, input->ip.v6.hlim);
4061                 ice_pkt_insert_mac_addr(loc, input->ext_data.dst_mac);
4062                 break;
4063         case ICE_FLTR_PTYPE_NONF_IPV6_OTHER:
4064                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_DST_ADDR_OFFSET,
4065                                          input->ip.v6.src_ip);
4066                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_SRC_ADDR_OFFSET,
4067                                          input->ip.v6.dst_ip);
4068                 ice_pkt_insert_u8_tc(loc, ICE_IPV6_TC_OFFSET, input->ip.v6.tc);
4069                 ice_pkt_insert_u8(loc, ICE_IPV6_HLIM_OFFSET, input->ip.v6.hlim);
4070                 ice_pkt_insert_u8(loc, ICE_IPV6_PROTO_OFFSET,
4071                                   input->ip.v6.proto);
4072                 ice_pkt_insert_mac_addr(loc, input->ext_data.dst_mac);
4073                 break;
4074         case ICE_FLTR_PTYPE_FRAG_IPV4:
4075                 ice_pkt_insert_u32(loc, ICE_IPV4_DST_ADDR_OFFSET,
4076                                    input->ip.v4.src_ip);
4077                 ice_pkt_insert_u32(loc, ICE_IPV4_SRC_ADDR_OFFSET,
4078                                    input->ip.v4.dst_ip);
4079                 ice_pkt_insert_u8(loc, ICE_IPV4_TOS_OFFSET, input->ip.v4.tos);
4080                 ice_pkt_insert_u16(loc, ICE_IPV4_ID_OFFSET,
4081                                    input->ip.v4.packet_id);
4082                 ice_pkt_insert_u8(loc, ICE_IPV4_TTL_OFFSET, input->ip.v4.ttl);
4083                 ice_pkt_insert_u8(loc, ICE_IPV4_PROTO_OFFSET,
4084                                   input->ip.v4.proto);
4085                 ice_pkt_insert_mac_addr(loc, input->ext_data.dst_mac);
4086                 break;
4087         case ICE_FLTR_PTYPE_FRAG_IPV6:
4088                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_DST_ADDR_OFFSET,
4089                                          input->ip.v6.src_ip);
4090                 ice_pkt_insert_ipv6_addr(loc, ICE_IPV6_SRC_ADDR_OFFSET,
4091                                          input->ip.v6.dst_ip);
4092                 ice_pkt_insert_u8_tc(loc, ICE_IPV6_TC_OFFSET, input->ip.v6.tc);
4093                 ice_pkt_insert_u8(loc, ICE_IPV6_HLIM_OFFSET, input->ip.v6.hlim);
4094                 ice_pkt_insert_mac_addr(loc, input->ext_data.dst_mac);
4095                 ice_pkt_insert_u32(loc, ICE_IPV6_ID_OFFSET,
4096                                    input->ip.v6.packet_id);
4097                 break;
4098         default:
4099                 return ICE_ERR_PARAM;
4100         }
4101
4102         if (input->flex_fltr)
4103                 ice_pkt_insert_u16(loc, input->flex_offset, input->flex_word);
4104
4105         return ICE_SUCCESS;
4106 }
4107
4108 /**
4109  * ice_fdir_get_prgm_pkt - generate a training packet
4110  * @input: flow director filter data structure
4111  * @pkt: pointer to return filter packet
4112  * @frag: generate a fragment packet
4113  */
4114 enum ice_status
4115 ice_fdir_get_prgm_pkt(struct ice_fdir_fltr *input, u8 *pkt, bool frag)
4116 {
4117         return ice_fdir_get_gen_prgm_pkt(NULL, input, pkt, frag, false);
4118 }
4119
4120 /**
4121  * ice_fdir_has_frag - does flow type have 2 ptypes
4122  * @flow: flow ptype
4123  *
4124  * returns true is there is a fragment packet for this ptype
4125  */
4126 bool ice_fdir_has_frag(enum ice_fltr_ptype flow)
4127 {
4128         if (flow == ICE_FLTR_PTYPE_FRAG_IPV4 ||
4129             flow == ICE_FLTR_PTYPE_FRAG_IPV6)
4130                 return true;
4131         else
4132                 return false;
4133 }
4134
4135 /**
4136  * ice_fdir_find_fltr_by_idx - find filter with idx
4137  * @hw: pointer to hardware structure
4138  * @fltr_idx: index to find.
4139  *
4140  * Returns pointer to filter if found or null
4141  */
4142 struct ice_fdir_fltr *
4143 ice_fdir_find_fltr_by_idx(struct ice_hw *hw, u32 fltr_idx)
4144 {
4145         struct ice_fdir_fltr *rule;
4146
4147         LIST_FOR_EACH_ENTRY(rule, &hw->fdir_list_head, ice_fdir_fltr,
4148                             fltr_node) {
4149                 /* rule ID found in the list */
4150                 if (fltr_idx == rule->fltr_id)
4151                         return rule;
4152                 if (fltr_idx < rule->fltr_id)
4153                         break;
4154         }
4155         return NULL;
4156 }
4157
4158 /**
4159  * ice_fdir_list_add_fltr - add a new node to the flow director filter list
4160  * @hw: hardware structure
4161  * @fltr: filter node to add to structure
4162  */
4163 void ice_fdir_list_add_fltr(struct ice_hw *hw, struct ice_fdir_fltr *fltr)
4164 {
4165         struct ice_fdir_fltr *rule, *parent = NULL;
4166
4167         LIST_FOR_EACH_ENTRY(rule, &hw->fdir_list_head, ice_fdir_fltr,
4168                             fltr_node) {
4169                 /* rule ID found or pass its spot in the list */
4170                 if (rule->fltr_id >= fltr->fltr_id)
4171                         break;
4172                 parent = rule;
4173         }
4174
4175         if (parent)
4176                 LIST_ADD_AFTER(&fltr->fltr_node, &parent->fltr_node);
4177         else
4178                 LIST_ADD(&fltr->fltr_node, &hw->fdir_list_head);
4179 }
4180
4181 /**
4182  * ice_fdir_update_cntrs - increment / decrement filter counter
4183  * @hw: pointer to hardware structure
4184  * @flow: filter flow type
4185  * @acl_fltr: true indicates an ACL filter
4186  * @add: true implies filters added
4187  */
4188 void
4189 ice_fdir_update_cntrs(struct ice_hw *hw, enum ice_fltr_ptype flow,
4190                       bool acl_fltr, bool add)
4191 {
4192         int incr;
4193
4194         incr = add ? 1 : -1;
4195         hw->fdir_active_fltr += incr;
4196         if (flow == ICE_FLTR_PTYPE_NONF_NONE || flow >= ICE_FLTR_PTYPE_MAX) {
4197                 ice_debug(hw, ICE_DBG_SW, "Unknown filter type %d\n", flow);
4198         } else {
4199                 if (acl_fltr)
4200                         hw->acl_fltr_cnt[flow] += incr;
4201                 else
4202                         hw->fdir_fltr_cnt[flow] += incr;
4203         }
4204 }
4205
4206 /**
4207  * ice_cmp_ipv6_addr - compare 2 IP v6 addresses
4208  * @a: IP v6 address
4209  * @b: IP v6 address
4210  *
4211  * Returns 0 on equal, returns non-0 if different
4212  */
4213 static int ice_cmp_ipv6_addr(__be32 *a, __be32 *b)
4214 {
4215         return memcmp(a, b, 4 * sizeof(__be32));
4216 }
4217
4218 /**
4219  * ice_fdir_comp_rules - compare 2 filters
4220  * @a: a Flow Director filter data structure
4221  * @b: a Flow Director filter data structure
4222  * @v6: bool true if v6 filter
4223  *
4224  * Returns true if the filters match
4225  */
4226 static bool
4227 ice_fdir_comp_rules(struct ice_fdir_fltr *a,  struct ice_fdir_fltr *b, bool v6)
4228 {
4229         enum ice_fltr_ptype flow_type = a->flow_type;
4230
4231         /* The calling function already checks that the two filters have the
4232          * same flow_type.
4233          */
4234         if (!v6) {
4235                 if (flow_type == ICE_FLTR_PTYPE_NONF_IPV4_TCP ||
4236                     flow_type == ICE_FLTR_PTYPE_NONF_IPV4_UDP ||
4237                     flow_type == ICE_FLTR_PTYPE_NONF_IPV4_SCTP) {
4238                         if (a->ip.v4.dst_ip == b->ip.v4.dst_ip &&
4239                             a->ip.v4.src_ip == b->ip.v4.src_ip &&
4240                             a->ip.v4.dst_port == b->ip.v4.dst_port &&
4241                             a->ip.v4.src_port == b->ip.v4.src_port)
4242                                 return true;
4243                 } else if (flow_type == ICE_FLTR_PTYPE_NONF_IPV4_OTHER) {
4244                         if (a->ip.v4.dst_ip == b->ip.v4.dst_ip &&
4245                             a->ip.v4.src_ip == b->ip.v4.src_ip &&
4246                             a->ip.v4.l4_header == b->ip.v4.l4_header &&
4247                             a->ip.v4.proto == b->ip.v4.proto &&
4248                             a->ip.v4.ip_ver == b->ip.v4.ip_ver &&
4249                             a->ip.v4.tos == b->ip.v4.tos)
4250                                 return true;
4251                 }
4252         } else {
4253                 if (flow_type == ICE_FLTR_PTYPE_NONF_IPV6_UDP ||
4254                     flow_type == ICE_FLTR_PTYPE_NONF_IPV6_TCP ||
4255                     flow_type == ICE_FLTR_PTYPE_NONF_IPV6_SCTP) {
4256                         if (a->ip.v6.dst_port == b->ip.v6.dst_port &&
4257                             a->ip.v6.src_port == b->ip.v6.src_port &&
4258                             !ice_cmp_ipv6_addr(a->ip.v6.dst_ip,
4259                                                b->ip.v6.dst_ip) &&
4260                             !ice_cmp_ipv6_addr(a->ip.v6.src_ip,
4261                                                b->ip.v6.src_ip))
4262                                 return true;
4263                 } else if (flow_type == ICE_FLTR_PTYPE_NONF_IPV6_OTHER) {
4264                         if (a->ip.v6.dst_port == b->ip.v6.dst_port &&
4265                             a->ip.v6.src_port == b->ip.v6.src_port)
4266                                 return true;
4267                 }
4268         }
4269
4270         return false;
4271 }
4272
4273 /**
4274  * ice_fdir_is_dup_fltr - test if filter is already in list for PF
4275  * @hw: hardware data structure
4276  * @input: Flow Director filter data structure
4277  *
4278  * Returns true if the filter is found in the list
4279  */
4280 bool ice_fdir_is_dup_fltr(struct ice_hw *hw, struct ice_fdir_fltr *input)
4281 {
4282         struct ice_fdir_fltr *rule;
4283         bool ret = false;
4284
4285         LIST_FOR_EACH_ENTRY(rule, &hw->fdir_list_head, ice_fdir_fltr,
4286                             fltr_node) {
4287                 enum ice_fltr_ptype flow_type;
4288
4289                 if (rule->flow_type != input->flow_type)
4290                         continue;
4291
4292                 flow_type = input->flow_type;
4293                 if (flow_type == ICE_FLTR_PTYPE_NONF_IPV4_TCP ||
4294                     flow_type == ICE_FLTR_PTYPE_NONF_IPV4_UDP ||
4295                     flow_type == ICE_FLTR_PTYPE_NONF_IPV4_SCTP ||
4296                     flow_type == ICE_FLTR_PTYPE_NONF_IPV4_OTHER)
4297                         ret = ice_fdir_comp_rules(rule, input, false);
4298                 else
4299                         ret = ice_fdir_comp_rules(rule, input, true);
4300                 if (ret) {
4301                         if (rule->fltr_id == input->fltr_id &&
4302                             rule->q_index != input->q_index)
4303                                 ret = false;
4304                         else
4305                                 break;
4306                 }
4307         }
4308
4309         return ret;
4310 }
4311
4312 /**
4313  * ice_clear_pf_fd_table - admin command to clear FD table for PF
4314  * @hw: hardware data structure
4315  *
4316  * Clears FD table entries for a PF by issuing admin command (direct, 0x0B06)
4317  */
4318 enum ice_status ice_clear_pf_fd_table(struct ice_hw *hw)
4319 {
4320         struct ice_aqc_clear_fd_table *cmd;
4321         struct ice_aq_desc desc;
4322
4323         cmd = &desc.params.clear_fd_table;
4324         ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_clear_fd_table);
4325         cmd->clear_type = CL_FD_VM_VF_TYPE_PF_IDX;
4326         /* vsi_index must be 0 to clear FD table for a PF */
4327         cmd->vsi_index = CPU_TO_LE16(0);
4328
4329         return ice_aq_send_cmd(hw, &desc, NULL, 0, NULL);
4330 }