xref: /dpdk/drivers/net/ice/base/ice_fdir.c (revision e4d745ab)
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  */
ice_set_dflt_val_fd_desc(struct ice_fd_fltr_desc_ctx * fd_fltr_ctx)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
ice_set_fd_desc_val(struct ice_fd_fltr_desc_ctx * ctx,struct ice_fltr_desc * fdir_desc)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
ice_fdir_get_prgm_desc(struct ice_hw * hw,struct ice_fdir_fltr * input,struct ice_fltr_desc * fdesc,bool add)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  */
ice_alloc_fd_res_cntr(struct ice_hw * hw,u16 * cntr_id)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  */
ice_free_fd_res_cntr(struct ice_hw * hw,u16 cntr_id)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
ice_alloc_fd_guar_item(struct ice_hw * hw,u16 * cntr_id,u16 num_fltr)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
ice_free_fd_guar_item(struct ice_hw * hw,u16 cntr_id,u16 num_fltr)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
ice_alloc_fd_shrd_item(struct ice_hw * hw,u16 * cntr_id,u16 num_fltr)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
ice_free_fd_shrd_item(struct ice_hw * hw,u16 cntr_id,u16 num_fltr)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  */
ice_get_fdir_cnt_all(struct ice_hw * hw)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  */
ice_pkt_insert_ipv6_addr(u8 * pkt,int offset,__be32 * addr)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  */
ice_pkt_insert_u6_qfi(u8 * pkt,int offset,u8 data)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  */
ice_pkt_insert_u8(u8 * pkt,int offset,u8 data)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  */
ice_pkt_insert_u8_tc(u8 * pkt,int offset,u8 data)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  */
ice_pkt_insert_u16(u8 * pkt,int offset,__be16 data)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  */
ice_pkt_insert_u32(u8 * pkt,int offset,__be32 data)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  */
ice_pkt_insert_mac_addr(u8 * pkt,u8 * addr)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
ice_fdir_get_open_tunnel_port(struct ice_hw * hw,enum ice_fltr_ptype flow,u16 * port)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
ice_fdir_get_gen_prgm_pkt(struct ice_hw * hw,struct ice_fdir_fltr * input,u8 * pkt,bool frag,bool tun)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
ice_fdir_get_prgm_pkt(struct ice_fdir_fltr * input,u8 * pkt,bool frag)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  */
ice_fdir_has_frag(enum ice_fltr_ptype flow)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 *
ice_fdir_find_fltr_by_idx(struct ice_hw * hw,u32 fltr_idx)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  */
ice_fdir_list_add_fltr(struct ice_hw * hw,struct ice_fdir_fltr * fltr)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
ice_fdir_update_cntrs(struct ice_hw * hw,enum ice_fltr_ptype flow,bool acl_fltr,bool add)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  */
ice_cmp_ipv6_addr(__be32 * a,__be32 * b)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
ice_fdir_comp_rules(struct ice_fdir_fltr * a,struct ice_fdir_fltr * b,bool v6)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  */
ice_fdir_is_dup_fltr(struct ice_hw * hw,struct ice_fdir_fltr * input)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  */
ice_clear_pf_fd_table(struct ice_hw * hw)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 }
4331