1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2020 Intel Corporation
13 #include <rte_debug.h>
14 #include <rte_ether.h>
15 #include <rte_ethdev_driver.h>
17 #include <rte_malloc.h>
18 #include <rte_eth_ctrl.h>
19 #include <rte_tailq.h>
20 #include <rte_flow_driver.h>
24 #include "iavf_generic_flow.h"
26 enum iavf_pattern_hint_type {
27 IAVF_PHINT_NONE = 0x00000000,
28 IAVF_PHINT_IPV4 = 0x00000001,
29 IAVF_PHINT_IPV4_UDP = 0x00000002,
30 IAVF_PHINT_IPV4_TCP = 0x00000004,
31 IAVF_PHINT_IPV4_SCTP = 0x00000008,
32 IAVF_PHINT_IPV6 = 0x00000010,
33 IAVF_PHINT_IPV6_UDP = 0x00000020,
34 IAVF_PHINT_IPV6_TCP = 0x00000040,
35 IAVF_PHINT_IPV6_SCTP = 0x00000080,
36 IAVF_PHINT_IPV4_GTPU_IP = 0x00000100,
37 IAVF_PHINT_IPV4_GTPU_EH = 0x00000200,
38 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK = 0x00000400,
39 IAVF_PHINT_IPV4_GTPU_EH_UPLINK = 0x00000800,
40 IAVF_PHINT_IPV6_GTPU_IP = 0x00001000,
41 IAVF_PHINT_IPV6_GTPU_EH = 0x00002000,
42 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK = 0x00004000,
43 IAVF_PHINT_IPV6_GTPU_EH_UPLINK = 0x00008000,
46 #define IAVF_GTPU_EH_DWNLINK 0
47 #define IAVF_GTPU_EH_UPLINK 1
49 struct iavf_pattern_match_type {
50 uint64_t pattern_hint;
53 struct iavf_hash_match_type {
55 struct virtchnl_proto_hdrs *proto_hdrs;
56 uint64_t pattern_hint;
59 struct iavf_rss_meta {
60 struct virtchnl_proto_hdrs *proto_hdrs;
61 enum virtchnl_rss_algorithm rss_algorithm;
64 struct iavf_hash_flow_cfg {
65 struct virtchnl_rss_cfg *rss_cfg;
70 iavf_hash_init(struct iavf_adapter *ad);
72 iavf_hash_create(struct iavf_adapter *ad, struct rte_flow *flow, void *meta,
73 struct rte_flow_error *error);
75 iavf_hash_destroy(struct iavf_adapter *ad, struct rte_flow *flow,
76 struct rte_flow_error *error);
78 iavf_hash_uninit(struct iavf_adapter *ad);
80 iavf_hash_free(struct rte_flow *flow);
82 iavf_hash_parse_pattern_action(struct iavf_adapter *ad,
83 struct iavf_pattern_match_item *array,
85 const struct rte_flow_item pattern[],
86 const struct rte_flow_action actions[],
88 struct rte_flow_error *error);
90 static struct iavf_pattern_match_type phint_empty = {
92 static struct iavf_pattern_match_type phint_eth_ipv4 = {
94 static struct iavf_pattern_match_type phint_eth_ipv4_udp = {
96 static struct iavf_pattern_match_type phint_eth_ipv4_tcp = {
98 static struct iavf_pattern_match_type phint_eth_ipv4_sctp = {
99 IAVF_PHINT_IPV4_SCTP};
100 static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_ipv4 = {
102 static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_ipv4_udp = {
103 IAVF_PHINT_IPV4_UDP};
104 static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_ipv4_tcp = {
105 IAVF_PHINT_IPV4_TCP};
106 static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_ipv6 = {
108 static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_ipv6_udp = {
109 IAVF_PHINT_IPV6_UDP};
110 static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_ipv6_tcp = {
111 IAVF_PHINT_IPV6_TCP};
112 static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_ipv4 = {
114 static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_ipv4_udp = {
115 IAVF_PHINT_IPV4_UDP};
116 static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_ipv4_tcp = {
117 IAVF_PHINT_IPV4_TCP};
118 static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_ipv6 = {
120 static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_ipv6_udp = {
121 IAVF_PHINT_IPV6_UDP};
122 static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_ipv6_tcp = {
123 IAVF_PHINT_IPV6_TCP};
124 static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv4 = {
126 static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv4_udp = {
127 IAVF_PHINT_IPV4_UDP};
128 static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv4_tcp = {
129 IAVF_PHINT_IPV4_TCP};
130 static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv6 = {
132 static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv6_udp = {
133 IAVF_PHINT_IPV6_UDP};
134 static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv6_tcp = {
135 IAVF_PHINT_IPV6_TCP};
136 static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv4 = {
138 static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv4_udp = {
139 IAVF_PHINT_IPV4_UDP};
140 static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv4_tcp = {
141 IAVF_PHINT_IPV4_TCP};
142 static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv6 = {
144 static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv6_udp = {
145 IAVF_PHINT_IPV6_UDP};
146 static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv6_tcp = {
147 IAVF_PHINT_IPV6_TCP};
148 static struct iavf_pattern_match_type phint_eth_ipv4_esp = {
150 static struct iavf_pattern_match_type phint_eth_ipv4_udp_esp = {
151 IAVF_PHINT_IPV4_UDP};
152 static struct iavf_pattern_match_type phint_eth_ipv4_ah = {
154 static struct iavf_pattern_match_type phint_eth_ipv4_l2tpv3 = {
156 static struct iavf_pattern_match_type phint_eth_ipv4_pfcp = {
157 IAVF_PHINT_IPV4_UDP};
158 static struct iavf_pattern_match_type phint_eth_vlan_ipv4 = {
160 static struct iavf_pattern_match_type phint_eth_vlan_ipv4_udp = {
161 IAVF_PHINT_IPV4_UDP};
162 static struct iavf_pattern_match_type phint_eth_vlan_ipv4_tcp = {
163 IAVF_PHINT_IPV4_TCP};
164 static struct iavf_pattern_match_type phint_eth_vlan_ipv4_sctp = {
165 IAVF_PHINT_IPV4_SCTP};
166 static struct iavf_pattern_match_type phint_eth_ipv6 = {
168 static struct iavf_pattern_match_type phint_eth_ipv6_udp = {
169 IAVF_PHINT_IPV6_UDP};
170 static struct iavf_pattern_match_type phint_eth_ipv6_tcp = {
171 IAVF_PHINT_IPV6_TCP};
172 static struct iavf_pattern_match_type phint_eth_ipv6_sctp = {
173 IAVF_PHINT_IPV6_SCTP};
174 static struct iavf_pattern_match_type phint_eth_ipv6_esp = {
176 static struct iavf_pattern_match_type phint_eth_ipv6_udp_esp = {
177 IAVF_PHINT_IPV6_UDP};
178 static struct iavf_pattern_match_type phint_eth_ipv6_ah = {
180 static struct iavf_pattern_match_type phint_eth_ipv6_l2tpv3 = {
182 static struct iavf_pattern_match_type phint_eth_ipv6_pfcp = {
183 IAVF_PHINT_IPV6_UDP};
184 static struct iavf_pattern_match_type phint_eth_vlan_ipv6 = {
186 static struct iavf_pattern_match_type phint_eth_vlan_ipv6_udp = {
187 IAVF_PHINT_IPV6_UDP};
188 static struct iavf_pattern_match_type phint_eth_vlan_ipv6_tcp = {
189 IAVF_PHINT_IPV6_TCP};
190 static struct iavf_pattern_match_type phint_eth_vlan_ipv6_sctp = {
191 IAVF_PHINT_IPV6_SCTP};
194 * Supported pattern for hash.
195 * The first member is pattern item type,
196 * the second member is input set mask,
197 * the third member is pattern hint for hash.
199 static struct iavf_pattern_match_item iavf_hash_pattern_list[] = {
200 {iavf_pattern_eth_ipv4, IAVF_INSET_NONE, &phint_eth_ipv4},
201 {iavf_pattern_eth_ipv4_udp, IAVF_INSET_NONE, &phint_eth_ipv4_udp},
202 {iavf_pattern_eth_ipv4_tcp, IAVF_INSET_NONE, &phint_eth_ipv4_tcp},
203 {iavf_pattern_eth_ipv4_sctp, IAVF_INSET_NONE, &phint_eth_ipv4_sctp},
204 {iavf_pattern_eth_ipv4_gtpu_ipv4, IAVF_INSET_NONE,
205 &phint_eth_ipv4_gtpu_ipv4},
206 {iavf_pattern_eth_ipv4_gtpu_ipv4_udp, IAVF_INSET_NONE,
207 &phint_eth_ipv4_gtpu_ipv4_udp},
208 {iavf_pattern_eth_ipv4_gtpu_ipv4_tcp, IAVF_INSET_NONE,
209 &phint_eth_ipv4_gtpu_ipv4_tcp},
210 {iavf_pattern_eth_ipv4_gtpu_ipv6, IAVF_INSET_NONE,
211 &phint_eth_ipv4_gtpu_ipv6},
212 {iavf_pattern_eth_ipv4_gtpu_ipv6_udp, IAVF_INSET_NONE,
213 &phint_eth_ipv4_gtpu_ipv6_udp},
214 {iavf_pattern_eth_ipv4_gtpu_ipv6_tcp, IAVF_INSET_NONE,
215 &phint_eth_ipv4_gtpu_ipv6_tcp},
216 {iavf_pattern_eth_ipv6_gtpu_ipv4, IAVF_INSET_NONE,
217 &phint_eth_ipv6_gtpu_ipv4},
218 {iavf_pattern_eth_ipv6_gtpu_ipv4_udp, IAVF_INSET_NONE,
219 &phint_eth_ipv6_gtpu_ipv4_udp},
220 {iavf_pattern_eth_ipv6_gtpu_ipv4_tcp, IAVF_INSET_NONE,
221 &phint_eth_ipv6_gtpu_ipv4_tcp},
222 {iavf_pattern_eth_ipv6_gtpu_ipv6, IAVF_INSET_NONE,
223 &phint_eth_ipv6_gtpu_ipv6},
224 {iavf_pattern_eth_ipv6_gtpu_ipv6_udp, IAVF_INSET_NONE,
225 &phint_eth_ipv6_gtpu_ipv6_udp},
226 {iavf_pattern_eth_ipv6_gtpu_ipv6_tcp, IAVF_INSET_NONE,
227 &phint_eth_ipv6_gtpu_ipv6_tcp},
228 {iavf_pattern_eth_ipv4_gtpu_eh_ipv4, IAVF_INSET_NONE,
229 &phint_eth_ipv4_gtpu_eh_ipv4},
230 {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_udp, IAVF_INSET_NONE,
231 &phint_eth_ipv4_gtpu_eh_ipv4_udp},
232 {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp, IAVF_INSET_NONE,
233 &phint_eth_ipv4_gtpu_eh_ipv4_tcp},
234 {iavf_pattern_eth_ipv4_gtpu_eh_ipv6, IAVF_INSET_NONE,
235 &phint_eth_ipv4_gtpu_eh_ipv6},
236 {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_udp, IAVF_INSET_NONE,
237 &phint_eth_ipv4_gtpu_eh_ipv6_udp},
238 {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_tcp, IAVF_INSET_NONE,
239 &phint_eth_ipv4_gtpu_eh_ipv6_tcp},
240 {iavf_pattern_eth_ipv6_gtpu_eh_ipv4, IAVF_INSET_NONE,
241 &phint_eth_ipv6_gtpu_eh_ipv4},
242 {iavf_pattern_eth_ipv6_gtpu_eh_ipv4_udp, IAVF_INSET_NONE,
243 &phint_eth_ipv6_gtpu_eh_ipv4_udp},
244 {iavf_pattern_eth_ipv6_gtpu_eh_ipv4_tcp, IAVF_INSET_NONE,
245 &phint_eth_ipv6_gtpu_eh_ipv4_tcp},
246 {iavf_pattern_eth_ipv6_gtpu_eh_ipv6, IAVF_INSET_NONE,
247 &phint_eth_ipv6_gtpu_eh_ipv6},
248 {iavf_pattern_eth_ipv6_gtpu_eh_ipv6_udp, IAVF_INSET_NONE,
249 &phint_eth_ipv6_gtpu_eh_ipv6_udp},
250 {iavf_pattern_eth_ipv6_gtpu_eh_ipv6_tcp, IAVF_INSET_NONE,
251 &phint_eth_ipv6_gtpu_eh_ipv6_tcp},
252 {iavf_pattern_eth_ipv4_esp, IAVF_INSET_NONE, &phint_eth_ipv4_esp},
253 {iavf_pattern_eth_ipv4_udp_esp, IAVF_INSET_NONE,
254 &phint_eth_ipv4_udp_esp},
255 {iavf_pattern_eth_ipv4_ah, IAVF_INSET_NONE, &phint_eth_ipv4_ah},
256 {iavf_pattern_eth_ipv4_l2tpv3, IAVF_INSET_NONE,
257 &phint_eth_ipv4_l2tpv3},
258 {iavf_pattern_eth_ipv4_pfcp, IAVF_INSET_NONE, &phint_eth_ipv4_pfcp},
259 {iavf_pattern_eth_vlan_ipv4, IAVF_INSET_NONE, &phint_eth_vlan_ipv4},
260 {iavf_pattern_eth_vlan_ipv4_udp, IAVF_INSET_NONE,
261 &phint_eth_vlan_ipv4_udp},
262 {iavf_pattern_eth_vlan_ipv4_tcp, IAVF_INSET_NONE,
263 &phint_eth_vlan_ipv4_tcp},
264 {iavf_pattern_eth_vlan_ipv4_sctp, IAVF_INSET_NONE,
265 &phint_eth_vlan_ipv4_sctp},
266 {iavf_pattern_eth_ipv6, IAVF_INSET_NONE, &phint_eth_ipv6},
267 {iavf_pattern_eth_ipv6_udp, IAVF_INSET_NONE, &phint_eth_ipv6_udp},
268 {iavf_pattern_eth_ipv6_tcp, IAVF_INSET_NONE, &phint_eth_ipv6_tcp},
269 {iavf_pattern_eth_ipv6_sctp, IAVF_INSET_NONE, &phint_eth_ipv6_sctp},
270 {iavf_pattern_eth_ipv6_esp, IAVF_INSET_NONE, &phint_eth_ipv6_esp},
271 {iavf_pattern_eth_ipv6_udp_esp, IAVF_INSET_NONE,
272 &phint_eth_ipv6_udp_esp},
273 {iavf_pattern_eth_ipv6_ah, IAVF_INSET_NONE, &phint_eth_ipv6_ah},
274 {iavf_pattern_eth_ipv6_l2tpv3, IAVF_INSET_NONE,
275 &phint_eth_ipv6_l2tpv3},
276 {iavf_pattern_eth_ipv6_pfcp, IAVF_INSET_NONE, &phint_eth_ipv6_pfcp},
277 {iavf_pattern_eth_vlan_ipv6, IAVF_INSET_NONE, &phint_eth_vlan_ipv6},
278 {iavf_pattern_eth_vlan_ipv6_udp, IAVF_INSET_NONE,
279 &phint_eth_vlan_ipv6_udp},
280 {iavf_pattern_eth_vlan_ipv6_tcp, IAVF_INSET_NONE,
281 &phint_eth_vlan_ipv6_tcp},
282 {iavf_pattern_eth_vlan_ipv6_sctp, IAVF_INSET_NONE,
283 &phint_eth_vlan_ipv6_sctp},
284 {iavf_pattern_empty, IAVF_INSET_NONE, &phint_empty},
287 #define TUNNEL_LEVEL_OUTER 0
288 #define TUNNEL_LEVEL_FIRST_INNER 1
290 #define PROTO_COUNT_ONE 1
291 #define PROTO_COUNT_TWO 2
292 #define PROTO_COUNT_THREE 3
294 #define BUFF_NOUSED 0
295 #define FIELD_FOR_PROTO_ONLY 0
297 #define FIELD_SELECTOR(proto_hdr_field) \
298 (1UL << ((proto_hdr_field) & PROTO_HDR_FIELD_MASK))
300 #define proto_hint_eth_src { \
301 VIRTCHNL_PROTO_HDR_ETH, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_SRC), \
304 #define proto_hint_eth_dst { \
305 VIRTCHNL_PROTO_HDR_ETH, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_DST), \
308 #define proto_hint_eth_only { \
309 VIRTCHNL_PROTO_HDR_ETH, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } }
311 #define proto_hint_eth { \
312 VIRTCHNL_PROTO_HDR_ETH, \
313 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_SRC) | \
314 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_DST), {BUFF_NOUSED } }
316 #define proto_hint_svlan { \
317 VIRTCHNL_PROTO_HDR_S_VLAN, \
318 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_S_VLAN_ID), {BUFF_NOUSED } }
320 #define proto_hint_cvlan { \
321 VIRTCHNL_PROTO_HDR_C_VLAN, \
322 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_C_VLAN_ID), {BUFF_NOUSED } }
324 #define proto_hint_ipv4_src { \
325 VIRTCHNL_PROTO_HDR_IPV4, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC), \
328 #define proto_hint_ipv4_dst { \
329 VIRTCHNL_PROTO_HDR_IPV4, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST), \
332 #define proto_hint_ipv4_only { \
333 VIRTCHNL_PROTO_HDR_IPV4, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } }
335 #define proto_hint_ipv4 { \
336 VIRTCHNL_PROTO_HDR_IPV4, \
337 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC) | \
338 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST), {BUFF_NOUSED } }
340 #define proto_hint_ipv4_src_prot { \
341 VIRTCHNL_PROTO_HDR_IPV4, \
342 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC) | \
343 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_PROT), \
346 #define proto_hint_ipv4_dst_prot { \
347 VIRTCHNL_PROTO_HDR_IPV4, \
348 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST) | \
349 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_PROT), \
352 #define proto_hint_ipv4_only_prot { \
353 VIRTCHNL_PROTO_HDR_IPV4, \
354 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_PROT), {BUFF_NOUSED } }
356 #define proto_hint_ipv4_prot { \
357 VIRTCHNL_PROTO_HDR_IPV4, \
358 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC) | \
359 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST) | \
360 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_PROT), {BUFF_NOUSED } }
362 #define proto_hint_udp_src_port { \
363 VIRTCHNL_PROTO_HDR_UDP, \
364 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_SRC_PORT), {BUFF_NOUSED } }
366 #define proto_hint_udp_dst_port { \
367 VIRTCHNL_PROTO_HDR_UDP, \
368 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_DST_PORT), {BUFF_NOUSED } }
370 #define proto_hint_udp_only { \
371 VIRTCHNL_PROTO_HDR_UDP, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } }
373 #define proto_hint_udp { \
374 VIRTCHNL_PROTO_HDR_UDP, \
375 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_SRC_PORT) | \
376 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_DST_PORT), {BUFF_NOUSED } }
378 #define proto_hint_tcp_src_port { \
379 VIRTCHNL_PROTO_HDR_TCP, \
380 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_SRC_PORT), {BUFF_NOUSED } }
382 #define proto_hint_tcp_dst_port { \
383 VIRTCHNL_PROTO_HDR_TCP, \
384 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_DST_PORT), {BUFF_NOUSED } }
386 #define proto_hint_tcp_only { \
387 VIRTCHNL_PROTO_HDR_TCP, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } }
389 #define proto_hint_tcp { \
390 VIRTCHNL_PROTO_HDR_TCP, \
391 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_SRC_PORT) | \
392 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_DST_PORT), {BUFF_NOUSED } }
394 #define proto_hint_sctp_src_port { \
395 VIRTCHNL_PROTO_HDR_SCTP, \
396 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT), {BUFF_NOUSED } }
398 #define proto_hint_sctp_dst_port { \
399 VIRTCHNL_PROTO_HDR_SCTP, \
400 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_DST_PORT), {BUFF_NOUSED } }
402 #define proto_hint_sctp_only { \
403 VIRTCHNL_PROTO_HDR_SCTP, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } }
405 #define proto_hint_sctp { \
406 VIRTCHNL_PROTO_HDR_SCTP, \
407 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT) | \
408 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_DST_PORT), {BUFF_NOUSED } }
410 #define proto_hint_ipv6_src { \
411 VIRTCHNL_PROTO_HDR_IPV6, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC), \
414 #define proto_hint_ipv6_dst { \
415 VIRTCHNL_PROTO_HDR_IPV6, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST), \
418 #define proto_hint_ipv6_only { \
419 VIRTCHNL_PROTO_HDR_IPV6, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } }
421 #define proto_hint_ipv6 { \
422 VIRTCHNL_PROTO_HDR_IPV6, \
423 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC) | \
424 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST), {BUFF_NOUSED } }
426 #define proto_hint_ipv6_src_prot { \
427 VIRTCHNL_PROTO_HDR_IPV6, \
428 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC) | \
429 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), \
432 #define proto_hint_ipv6_dst_prot { \
433 VIRTCHNL_PROTO_HDR_IPV6, \
434 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST) | \
435 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), \
438 #define proto_hint_ipv6_only_prot { \
439 VIRTCHNL_PROTO_HDR_IPV6, \
440 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), {BUFF_NOUSED } }
442 #define proto_hint_ipv6_prot { \
443 VIRTCHNL_PROTO_HDR_IPV6, \
444 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC) | \
445 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST) | \
446 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), {BUFF_NOUSED } }
448 #define proto_hint_gtpu_ip_teid { \
449 VIRTCHNL_PROTO_HDR_GTPU_IP, \
450 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_GTPU_IP_TEID), {BUFF_NOUSED } }
452 #define proto_hint_gtpu_eh_only { \
453 VIRTCHNL_PROTO_HDR_GTPU_EH, \
454 FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } }
456 #define proto_hint_gtpu_ip_only { \
457 VIRTCHNL_PROTO_HDR_GTPU_IP, \
458 FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } }
460 #define proto_hint_gtpu_up_only { \
461 VIRTCHNL_PROTO_HDR_GTPU_EH_PDU_UP, \
462 FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } }
464 #define proto_hint_gtpu_dwn_only { \
465 VIRTCHNL_PROTO_HDR_GTPU_EH_PDU_DWN, \
466 FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } }
468 #define proto_hint_esp { \
469 VIRTCHNL_PROTO_HDR_ESP, \
470 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ESP_SPI), {BUFF_NOUSED } }
472 #define proto_hint_ah { \
473 VIRTCHNL_PROTO_HDR_AH, \
474 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_AH_SPI), {BUFF_NOUSED } }
476 #define proto_hint_l2tpv3 { \
477 VIRTCHNL_PROTO_HDR_L2TPV3, \
478 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_L2TPV3_SESS_ID), {BUFF_NOUSED } }
480 #define proto_hint_pfcp { \
481 VIRTCHNL_PROTO_HDR_PFCP, \
482 FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_PFCP_SEID), {BUFF_NOUSED } }
486 struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4 = {
487 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_eth_src,
488 proto_hint_ipv4_only }
491 struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4_udp = {
492 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_src,
493 proto_hint_ipv4_only, proto_hint_udp_only }
496 struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4_tcp = {
497 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_src,
498 proto_hint_ipv4_only, proto_hint_tcp_only }
501 struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4_sctp = {
502 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_src,
503 proto_hint_ipv4_only, proto_hint_sctp_only }
506 struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4 = {
507 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_eth_dst,
508 proto_hint_ipv4_only }
511 struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4_udp = {
512 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_dst,
513 proto_hint_ipv4_only, proto_hint_udp_only }
516 struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4_tcp = {
517 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_dst,
518 proto_hint_ipv4_only, proto_hint_tcp_only }
521 struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4_sctp = {
522 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_dst,
523 proto_hint_ipv4_only, proto_hint_sctp_only }
526 struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4 = {
527 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_eth,
528 proto_hint_ipv4_only }
531 struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4_udp = {
532 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth,
533 proto_hint_ipv4_only, proto_hint_udp_only }
536 struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4_tcp = {
537 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth,
538 proto_hint_ipv4_only, proto_hint_tcp_only }
541 struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4_sctp = {
542 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth,
543 proto_hint_ipv4_only, proto_hint_sctp_only }
546 struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4 = {
547 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_svlan,
548 proto_hint_ipv4_only}
551 struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4_udp = {
552 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_svlan,
553 proto_hint_ipv4_only, proto_hint_udp_only}
556 struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4_tcp = {
557 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_svlan,
558 proto_hint_ipv4_only, proto_hint_tcp_only}
561 struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4_sctp = {
562 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_svlan,
563 proto_hint_ipv4_only, proto_hint_sctp_only}
566 struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4 = {
567 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_cvlan,
568 proto_hint_ipv4_only}
571 struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4_udp = {
572 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_cvlan,
573 proto_hint_ipv4_only, proto_hint_udp_only}
576 struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4_tcp = {
577 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_cvlan,
578 proto_hint_ipv4_only, proto_hint_tcp_only}
581 struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4_sctp = {
582 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_cvlan,
583 proto_hint_ipv4_only, proto_hint_sctp_only}
586 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src = {
587 TUNNEL_LEVEL_OUTER, PROTO_COUNT_ONE, {proto_hint_ipv4_src }
590 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst = {
591 TUNNEL_LEVEL_OUTER, PROTO_COUNT_ONE, {proto_hint_ipv4_dst }
594 struct virtchnl_proto_hdrs hdrs_hint_ipv4 = {
595 TUNNEL_LEVEL_OUTER, PROTO_COUNT_ONE, {proto_hint_ipv4 }
598 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp = {
599 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot,
600 proto_hint_udp_only }
603 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp = {
604 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot,
605 proto_hint_udp_only }
608 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_only = {
609 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_prot,
610 proto_hint_udp_only }
613 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp = {
614 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot,
615 proto_hint_tcp_only }
618 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp = {
619 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot,
620 proto_hint_tcp_only }
623 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_only = {
624 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_prot,
625 proto_hint_tcp_only }
628 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_sctp = {
629 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot,
630 proto_hint_sctp_only }
633 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_sctp = {
634 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot,
635 proto_hint_sctp_only }
638 struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp_only = {
639 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_prot,
640 proto_hint_sctp_only }
643 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_port = {
644 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot,
645 proto_hint_udp_src_port }
648 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_port = {
649 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot,
650 proto_hint_udp_dst_port }
653 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_port = {
654 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot,
655 proto_hint_udp_src_port }
658 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_port = {
659 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot,
660 proto_hint_udp_dst_port }
663 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_port = {
664 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only_prot,
665 proto_hint_udp_src_port }
668 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_port = {
669 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only_prot,
670 proto_hint_udp_dst_port }
673 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp = {
674 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_prot,
678 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_port = {
679 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot,
680 proto_hint_tcp_src_port }
683 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_port = {
684 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot,
685 proto_hint_tcp_dst_port }
688 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_port = {
689 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot,
690 proto_hint_tcp_src_port }
693 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_port = {
694 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot,
695 proto_hint_tcp_dst_port }
698 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_port = {
699 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only_prot,
700 proto_hint_tcp_src_port }
703 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_port = {
704 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only_prot,
705 proto_hint_tcp_dst_port }
708 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp = {
709 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_prot,
713 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_sctp_src_port = {
714 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src,
715 proto_hint_sctp_src_port }
718 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_sctp_dst_port = {
719 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src,
720 proto_hint_sctp_dst_port }
723 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_sctp_src_port = {
724 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst,
725 proto_hint_sctp_src_port }
728 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_sctp_dst_port = {
729 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst,
730 proto_hint_sctp_dst_port }
733 struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp_src_port = {
734 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only,
735 proto_hint_sctp_src_port }
738 struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp_dst_port = {
739 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only,
740 proto_hint_sctp_dst_port }
743 struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp = {
744 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4,
748 struct virtchnl_proto_hdrs hdrs_hint_ipv4_esp = {
749 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only,
753 struct virtchnl_proto_hdrs hdrs_hint_ipv4_ah = {
754 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only,
758 struct virtchnl_proto_hdrs hdrs_hint_ipv4_l2tpv3 = {
759 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only,
763 struct virtchnl_proto_hdrs hdrs_hint_ipv4_pfcp = {
764 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only,
768 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_esp = {
769 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_ipv4_only,
770 proto_hint_udp_only, proto_hint_esp }
775 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_ip = {
776 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_ip_only,
777 proto_hint_ipv4_src }
780 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_ip = {
781 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_ip_only,
782 proto_hint_ipv4_dst }
785 struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_ip = {
786 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_ip_only,
790 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_gtpu_ip = {
791 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
792 proto_hint_ipv4_src_prot, proto_hint_udp_only }
795 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_gtpu_ip = {
796 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
797 proto_hint_ipv4_dst_prot, proto_hint_udp_only }
800 struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_udp_ip = {
801 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
802 proto_hint_ipv4_prot, proto_hint_udp_only }
805 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_gtpu_ip = {
806 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
807 proto_hint_ipv4_src_prot, proto_hint_tcp_only }
810 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_gtpu_ip = {
811 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
812 proto_hint_ipv4_dst_prot, proto_hint_tcp_only }
815 struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_tcp_ip = {
816 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
817 proto_hint_ipv4_prot, proto_hint_tcp_only }
820 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_ip = {
821 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
822 proto_hint_ipv4_only_prot, proto_hint_udp_src_port}
825 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_ip = {
826 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
827 proto_hint_ipv4_only_prot, proto_hint_udp_dst_port}
830 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_ip = {
831 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
832 proto_hint_ipv4_only_prot, proto_hint_tcp_src_port}
835 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_ip = {
836 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
837 proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port}
840 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_ip = {
841 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
842 proto_hint_ipv4_src_prot, proto_hint_udp_src_port}
845 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_ip = {
846 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
847 proto_hint_ipv4_src_prot, proto_hint_udp_dst_port}
850 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_ip = {
851 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
852 proto_hint_ipv4_src_prot, proto_hint_tcp_src_port}
855 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_ip = {
856 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
857 proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port}
860 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_ip = {
861 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
862 proto_hint_ipv4_dst_prot, proto_hint_udp_src_port}
865 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_ip = {
866 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
867 proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port}
870 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_ip = {
871 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
872 proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port}
875 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_ip = {
876 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
877 proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port}
880 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_ip = {
881 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
882 proto_hint_ipv4_prot, proto_hint_udp}
885 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_ip = {
886 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
887 proto_hint_ipv4_prot, proto_hint_tcp}
890 struct virtchnl_proto_hdrs hdrs_hint_teid_gtpu_ip = {
891 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_ip_teid}
896 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_gtpu_ip = {
897 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_ip_only,
898 proto_hint_ipv6_src }
901 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_gtpu_ip = {
902 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_ip_only,
903 proto_hint_ipv6_dst }
906 struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_ip = {
907 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_ip_only,
911 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_gtpu_ip = {
912 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
913 proto_hint_ipv6_src_prot, proto_hint_udp_only }
916 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_gtpu_ip = {
917 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
918 proto_hint_ipv6_dst_prot, proto_hint_udp_only }
921 struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_udp_ip = {
922 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
923 proto_hint_ipv6_prot, proto_hint_udp_only }
926 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_gtpu_ip = {
927 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
928 proto_hint_ipv6_src_prot, proto_hint_tcp_only }
931 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_gtpu_ip = {
932 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
933 proto_hint_ipv6_dst_prot, proto_hint_tcp_only }
936 struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_tcp_ip = {
937 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
938 proto_hint_ipv6_prot, proto_hint_tcp_only }
941 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_gtpu_ip = {
942 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
943 proto_hint_ipv6_only_prot, proto_hint_udp_src_port}
946 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_gtpu_ip = {
947 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
948 proto_hint_ipv6_only_prot, proto_hint_udp_dst_port}
951 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_gtpu_ip = {
952 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
953 proto_hint_ipv6_only_prot, proto_hint_tcp_src_port}
956 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_gtpu_ip = {
957 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
958 proto_hint_ipv6_only_prot, proto_hint_tcp_dst_port}
961 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_gtpu_ip = {
962 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
963 proto_hint_ipv6_src_prot, proto_hint_udp_src_port}
966 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_gtpu_ip = {
967 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
968 proto_hint_ipv6_src_prot, proto_hint_udp_dst_port}
971 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_gtpu_ip = {
972 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
973 proto_hint_ipv6_src_prot, proto_hint_tcp_src_port}
976 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_gtpu_ip = {
977 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
978 proto_hint_ipv6_src_prot, proto_hint_tcp_dst_port}
981 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_gtpu_ip = {
982 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
983 proto_hint_ipv6_dst_prot, proto_hint_udp_src_port}
986 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_gtpu_ip = {
987 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
988 proto_hint_ipv6_dst_prot, proto_hint_udp_dst_port}
991 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_gtpu_ip = {
992 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
993 proto_hint_ipv6_dst_prot, proto_hint_tcp_src_port}
996 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_gtpu_ip = {
997 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
998 proto_hint_ipv6_dst_prot, proto_hint_tcp_dst_port}
1001 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_gtpu_ip = {
1002 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
1003 proto_hint_ipv6_prot, proto_hint_udp}
1006 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_gtpu_ip = {
1007 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
1008 proto_hint_ipv6_prot, proto_hint_tcp}
1013 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_gtpu_eh = {
1014 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1015 proto_hint_ipv4_src_prot, proto_hint_udp_only }
1018 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_gtpu_eh = {
1019 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1020 proto_hint_ipv4_dst_prot, proto_hint_udp_only }
1023 struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_udp_eh = {
1024 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1025 proto_hint_ipv4_prot, proto_hint_udp_only }
1028 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_gtpu_eh = {
1029 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1030 proto_hint_ipv4_src_prot, proto_hint_tcp_only }
1033 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_gtpu_eh = {
1034 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1035 proto_hint_ipv4_dst_prot, proto_hint_tcp_only }
1038 struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_tcp_eh = {
1039 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1040 proto_hint_ipv4_prot, proto_hint_tcp_only }
1043 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_eh = {
1044 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1045 proto_hint_ipv4_only_prot, proto_hint_udp_src_port}
1048 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_eh = {
1049 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1050 proto_hint_ipv4_only_prot, proto_hint_udp_dst_port}
1053 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_eh = {
1054 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1055 proto_hint_ipv4_only_prot, proto_hint_tcp_src_port}
1058 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_eh = {
1059 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1060 proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port}
1063 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_eh = {
1064 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
1065 proto_hint_ipv4_src }
1068 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_eh = {
1069 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1070 proto_hint_ipv4_src_prot, proto_hint_udp_src_port}
1073 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_eh = {
1074 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1075 proto_hint_ipv4_src_prot, proto_hint_udp_dst_port}
1078 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_eh = {
1079 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1080 proto_hint_ipv4_src_prot, proto_hint_tcp_src_port}
1083 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_eh = {
1084 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1085 proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port}
1088 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_eh = {
1089 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
1090 proto_hint_ipv4_dst }
1093 struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_eh = {
1094 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
1098 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_eh = {
1099 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1100 proto_hint_ipv4_dst_prot, proto_hint_udp_src_port}
1103 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_eh = {
1104 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1105 proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port}
1108 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_eh = {
1109 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1110 proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port}
1113 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_eh = {
1114 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1115 proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port}
1118 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_eh = {
1119 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1120 proto_hint_ipv4_prot, proto_hint_udp}
1123 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_eh = {
1124 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1125 proto_hint_ipv4_prot, proto_hint_tcp}
1130 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_gtpu_eh = {
1131 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1132 proto_hint_ipv6_src_prot, proto_hint_udp_only }
1135 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_gtpu_eh = {
1136 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1137 proto_hint_ipv6_dst_prot, proto_hint_udp_only }
1140 struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_udp_eh = {
1141 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1142 proto_hint_ipv6_prot, proto_hint_udp_only }
1145 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_gtpu_eh = {
1146 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1147 proto_hint_ipv6_src_prot, proto_hint_tcp_only }
1150 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_gtpu_eh = {
1151 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1152 proto_hint_ipv6_dst_prot, proto_hint_tcp_only }
1155 struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_tcp_eh = {
1156 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1157 proto_hint_ipv6_prot, proto_hint_tcp_only }
1160 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_gtpu_eh = {
1161 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1162 proto_hint_ipv6_only_prot, proto_hint_udp_src_port}
1165 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_gtpu_eh = {
1166 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1167 proto_hint_ipv6_only_prot, proto_hint_udp_dst_port}
1170 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_gtpu_eh = {
1171 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1172 proto_hint_ipv6_only_prot, proto_hint_tcp_src_port}
1175 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_gtpu_eh = {
1176 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1177 proto_hint_ipv6_only_prot, proto_hint_tcp_dst_port}
1180 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_gtpu_eh = {
1181 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
1182 proto_hint_ipv6_src }
1185 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_gtpu_eh = {
1186 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1187 proto_hint_ipv6_src_prot, proto_hint_udp_src_port}
1190 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_gtpu_eh = {
1191 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1192 proto_hint_ipv6_src_prot, proto_hint_udp_dst_port}
1195 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_gtpu_eh = {
1196 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1197 proto_hint_ipv6_src_prot, proto_hint_tcp_src_port}
1200 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_gtpu_eh = {
1201 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1202 proto_hint_ipv6_src_prot, proto_hint_tcp_dst_port}
1205 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_gtpu_eh = {
1206 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
1207 proto_hint_ipv6_dst }
1210 struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_eh = {
1211 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
1215 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_gtpu_eh = {
1216 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1217 proto_hint_ipv6_dst_prot, proto_hint_udp_src_port}
1220 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_gtpu_eh = {
1221 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1222 proto_hint_ipv6_dst_prot, proto_hint_udp_dst_port}
1225 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_gtpu_eh = {
1226 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1227 proto_hint_ipv6_dst_prot, proto_hint_tcp_src_port}
1230 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_gtpu_eh = {
1231 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1232 proto_hint_ipv6_dst_prot, proto_hint_tcp_dst_port}
1235 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_gtpu_eh = {
1236 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1237 proto_hint_ipv6_prot, proto_hint_udp}
1240 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_gtpu_eh = {
1241 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
1242 proto_hint_ipv6_prot, proto_hint_tcp}
1247 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_gtpu_up = {
1248 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1249 proto_hint_ipv4_src_prot, proto_hint_udp_only }
1252 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_gtpu_up = {
1253 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1254 proto_hint_ipv4_dst_prot, proto_hint_udp_only }
1257 struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_udp_up = {
1258 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1259 proto_hint_ipv4_prot, proto_hint_udp_only }
1262 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_gtpu_up = {
1263 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1264 proto_hint_ipv4_src_prot, proto_hint_tcp_only }
1267 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_gtpu_up = {
1268 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1269 proto_hint_ipv4_dst_prot, proto_hint_tcp_only }
1272 struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_tcp_up = {
1273 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1274 proto_hint_ipv4_prot, proto_hint_tcp_only }
1277 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_up = {
1278 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1279 proto_hint_ipv4_only_prot, proto_hint_udp_src_port}
1282 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_up = {
1283 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1284 proto_hint_ipv4_only_prot, proto_hint_udp_dst_port}
1287 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_up = {
1288 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1289 proto_hint_ipv4_only_prot, proto_hint_tcp_src_port}
1292 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_up = {
1293 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1294 proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port}
1297 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_up = {
1298 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
1299 proto_hint_ipv4_src }
1302 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_up = {
1303 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1304 proto_hint_ipv4_src_prot, proto_hint_udp_src_port}
1307 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_up = {
1308 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1309 proto_hint_ipv4_src_prot, proto_hint_udp_dst_port}
1312 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_up = {
1313 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1314 proto_hint_ipv4_src_prot, proto_hint_tcp_src_port}
1317 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_up = {
1318 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1319 proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port}
1322 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_up = {
1323 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
1324 proto_hint_ipv4_dst }
1327 struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_up = {
1328 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
1332 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_up = {
1333 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1334 proto_hint_ipv4_dst_prot, proto_hint_udp_src_port}
1337 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_up = {
1338 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1339 proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port}
1342 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_up = {
1343 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1344 proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port}
1347 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_up = {
1348 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1349 proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port}
1352 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_up = {
1353 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1354 proto_hint_ipv4_prot, proto_hint_udp}
1357 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_up = {
1358 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1359 proto_hint_ipv4_prot, proto_hint_tcp}
1364 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_gtpu_up = {
1365 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1366 proto_hint_ipv6_src_prot, proto_hint_udp_only }
1369 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_gtpu_up = {
1370 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1371 proto_hint_ipv6_dst_prot, proto_hint_udp_only }
1374 struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_udp_up = {
1375 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1376 proto_hint_ipv6_prot, proto_hint_udp_only }
1379 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_gtpu_up = {
1380 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1381 proto_hint_ipv6_src_prot, proto_hint_tcp_only }
1384 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_gtpu_up = {
1385 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1386 proto_hint_ipv6_dst_prot, proto_hint_tcp_only }
1389 struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_tcp_up = {
1390 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1391 proto_hint_ipv6_prot, proto_hint_tcp_only }
1394 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_gtpu_up = {
1395 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1396 proto_hint_ipv6_only_prot, proto_hint_udp_src_port}
1399 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_gtpu_up = {
1400 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1401 proto_hint_ipv6_only_prot, proto_hint_udp_dst_port}
1404 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_gtpu_up = {
1405 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1406 proto_hint_ipv6_only_prot, proto_hint_tcp_src_port}
1409 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_gtpu_up = {
1410 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1411 proto_hint_ipv6_only_prot, proto_hint_tcp_dst_port}
1414 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_gtpu_up = {
1415 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
1416 proto_hint_ipv6_src }
1419 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_gtpu_up = {
1420 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1421 proto_hint_ipv6_src_prot, proto_hint_udp_src_port}
1424 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_gtpu_up = {
1425 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1426 proto_hint_ipv6_src_prot, proto_hint_udp_dst_port}
1429 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_gtpu_up = {
1430 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1431 proto_hint_ipv6_src_prot, proto_hint_tcp_src_port}
1434 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_gtpu_up = {
1435 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1436 proto_hint_ipv6_src_prot, proto_hint_tcp_dst_port}
1439 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_gtpu_up = {
1440 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
1441 proto_hint_ipv6_dst }
1444 struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_up = {
1445 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
1449 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_gtpu_up = {
1450 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1451 proto_hint_ipv6_dst_prot, proto_hint_udp_src_port}
1454 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_gtpu_up = {
1455 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1456 proto_hint_ipv6_dst_prot, proto_hint_udp_dst_port}
1459 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_gtpu_up = {
1460 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1461 proto_hint_ipv6_dst_prot, proto_hint_tcp_src_port}
1464 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_gtpu_up = {
1465 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1466 proto_hint_ipv6_dst_prot, proto_hint_tcp_dst_port}
1469 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_gtpu_up = {
1470 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1471 proto_hint_ipv6_prot, proto_hint_udp}
1474 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_gtpu_up = {
1475 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
1476 proto_hint_ipv6_prot, proto_hint_tcp}
1481 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_gtpu_dwn = {
1482 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1483 proto_hint_ipv4_src_prot, proto_hint_udp_only }
1486 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_gtpu_dwn = {
1487 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1488 proto_hint_ipv4_dst_prot, proto_hint_udp_only }
1491 struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_udp_dwn = {
1492 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1493 proto_hint_ipv4_prot, proto_hint_udp_only }
1496 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_gtpu_dwn = {
1497 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1498 proto_hint_ipv4_src_prot, proto_hint_tcp_only }
1501 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_gtpu_dwn = {
1502 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1503 proto_hint_ipv4_dst_prot, proto_hint_tcp_only }
1506 struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_tcp_dwn = {
1507 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1508 proto_hint_ipv4_prot, proto_hint_tcp_only }
1511 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_dwn = {
1512 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1513 proto_hint_ipv4_only_prot, proto_hint_udp_src_port}
1516 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_dwn = {
1517 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1518 proto_hint_ipv4_only_prot, proto_hint_udp_dst_port}
1521 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_dwn = {
1522 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1523 proto_hint_ipv4_only_prot, proto_hint_tcp_src_port}
1526 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_dwn = {
1527 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1528 proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port}
1531 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_dwn = {
1532 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
1533 proto_hint_ipv4_src }
1536 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_dwn = {
1537 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1538 proto_hint_ipv4_src_prot, proto_hint_udp_src_port}
1541 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_dwn = {
1542 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1543 proto_hint_ipv4_src_prot, proto_hint_udp_dst_port}
1546 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_dwn = {
1547 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1548 proto_hint_ipv4_src_prot, proto_hint_tcp_src_port}
1551 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_dwn = {
1552 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1553 proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port}
1556 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_dwn = {
1557 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
1558 proto_hint_ipv4_dst }
1561 struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_dwn = {
1562 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
1566 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_dwn = {
1567 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1568 proto_hint_ipv4_dst_prot, proto_hint_udp_src_port}
1571 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_dwn = {
1572 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1573 proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port}
1576 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_dwn = {
1577 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1578 proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port}
1581 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_dwn = {
1582 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1583 proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port}
1586 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_dwn = {
1587 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1588 proto_hint_ipv4_prot, proto_hint_udp}
1591 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_dwn = {
1592 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1593 proto_hint_ipv4_prot, proto_hint_tcp}
1598 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_gtpu_dwn = {
1599 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1600 proto_hint_ipv6_src_prot, proto_hint_udp_only }
1603 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_gtpu_dwn = {
1604 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1605 proto_hint_ipv6_dst_prot, proto_hint_udp_only }
1608 struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_udp_dwn = {
1609 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1610 proto_hint_ipv6_prot, proto_hint_udp_only }
1613 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_gtpu_dwn = {
1614 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1615 proto_hint_ipv6_src_prot, proto_hint_tcp_only }
1618 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_gtpu_dwn = {
1619 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1620 proto_hint_ipv6_dst_prot, proto_hint_tcp_only }
1623 struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_tcp_dwn = {
1624 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1625 proto_hint_ipv6_prot, proto_hint_tcp_only }
1628 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_gtpu_dwn = {
1629 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1630 proto_hint_ipv6_only_prot, proto_hint_udp_src_port}
1633 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_gtpu_dwn = {
1634 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1635 proto_hint_ipv6_only_prot, proto_hint_udp_dst_port}
1638 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_gtpu_dwn = {
1639 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1640 proto_hint_ipv6_only_prot, proto_hint_tcp_src_port}
1643 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_gtpu_dwn = {
1644 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1645 proto_hint_ipv6_only_prot, proto_hint_tcp_dst_port}
1648 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_gtpu_dwn = {
1649 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
1650 proto_hint_ipv6_src }
1653 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_gtpu_dwn = {
1654 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1655 proto_hint_ipv6_src_prot, proto_hint_udp_src_port}
1658 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_gtpu_dwn = {
1659 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1660 proto_hint_ipv6_src_prot, proto_hint_udp_dst_port}
1663 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_gtpu_dwn = {
1664 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1665 proto_hint_ipv6_src_prot, proto_hint_tcp_src_port}
1668 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_gtpu_dwn = {
1669 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1670 proto_hint_ipv6_src_prot, proto_hint_tcp_dst_port}
1673 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_gtpu_dwn = {
1674 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
1675 proto_hint_ipv6_dst }
1678 struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_dwn = {
1679 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
1683 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_gtpu_dwn = {
1684 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1685 proto_hint_ipv6_dst_prot, proto_hint_udp_src_port}
1688 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_gtpu_dwn = {
1689 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1690 proto_hint_ipv6_dst_prot, proto_hint_udp_dst_port}
1693 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_gtpu_dwn = {
1694 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1695 proto_hint_ipv6_dst_prot, proto_hint_tcp_src_port}
1698 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_gtpu_dwn = {
1699 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1700 proto_hint_ipv6_dst_prot, proto_hint_tcp_dst_port}
1703 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_gtpu_dwn = {
1704 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1705 proto_hint_ipv6_prot, proto_hint_udp}
1708 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_gtpu_dwn = {
1709 TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
1710 proto_hint_ipv6_prot, proto_hint_tcp}
1715 struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv6 = {
1716 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_eth_src,
1717 proto_hint_ipv6_only }
1720 struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv6_udp = {
1721 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_src,
1722 proto_hint_ipv6_only, proto_hint_udp_only }
1725 struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv6_tcp = {
1726 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_src,
1727 proto_hint_ipv6_only, proto_hint_tcp_only }
1730 struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv6_sctp = {
1731 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_src,
1732 proto_hint_ipv6_only, proto_hint_sctp_only }
1735 struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv6 = {
1736 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_eth_dst,
1737 proto_hint_ipv6_only }
1740 struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv6_udp = {
1741 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_dst,
1742 proto_hint_ipv6_only, proto_hint_udp_only }
1745 struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv6_tcp = {
1746 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_dst,
1747 proto_hint_ipv6_only, proto_hint_tcp_only }
1750 struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv6_sctp = {
1751 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_dst,
1752 proto_hint_ipv6_only, proto_hint_sctp_only }
1755 struct virtchnl_proto_hdrs hdrs_hint_eth_ipv6 = {
1756 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_eth,
1757 proto_hint_ipv6_only }
1760 struct virtchnl_proto_hdrs hdrs_hint_eth_ipv6_udp = {
1761 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth,
1762 proto_hint_ipv6_only, proto_hint_udp_only }
1765 struct virtchnl_proto_hdrs hdrs_hint_eth_ipv6_tcp = {
1766 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth,
1767 proto_hint_ipv6_only, proto_hint_tcp_only }
1770 struct virtchnl_proto_hdrs hdrs_hint_eth_ipv6_sctp = {
1771 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth,
1772 proto_hint_ipv6_only, proto_hint_sctp_only }
1775 struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv6 = {
1776 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_svlan,
1777 proto_hint_ipv6_only}
1780 struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv6_udp = {
1781 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_svlan,
1782 proto_hint_ipv6_only, proto_hint_udp_only}
1785 struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv6_tcp = {
1786 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_svlan,
1787 proto_hint_ipv6_only, proto_hint_tcp_only}
1790 struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv6_sctp = {
1791 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_svlan,
1792 proto_hint_ipv6_only, proto_hint_sctp_only}
1795 struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6 = {
1796 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_cvlan,
1797 proto_hint_ipv6_only}
1800 struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6_udp = {
1801 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_cvlan,
1802 proto_hint_ipv6_only, proto_hint_udp_only}
1805 struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6_tcp = {
1806 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_cvlan,
1807 proto_hint_ipv6_only, proto_hint_tcp_only}
1810 struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6_sctp = {
1811 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_cvlan,
1812 proto_hint_ipv6_only, proto_hint_sctp_only}
1815 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src = {
1816 TUNNEL_LEVEL_OUTER, PROTO_COUNT_ONE, {proto_hint_ipv6_src }
1819 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst = {
1820 TUNNEL_LEVEL_OUTER, PROTO_COUNT_ONE, {proto_hint_ipv6_dst }
1823 struct virtchnl_proto_hdrs hdrs_hint_ipv6 = {
1824 TUNNEL_LEVEL_OUTER, PROTO_COUNT_ONE, {proto_hint_ipv6 }
1827 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp = {
1828 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot,
1829 proto_hint_udp_only }
1832 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp = {
1833 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot,
1834 proto_hint_udp_only }
1837 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_only = {
1838 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_prot,
1839 proto_hint_udp_only }
1842 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp = {
1843 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot,
1844 proto_hint_tcp_only }
1847 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp = {
1848 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot,
1849 proto_hint_tcp_only }
1852 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_only = {
1853 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_prot,
1854 proto_hint_tcp_only }
1857 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_sctp = {
1858 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot,
1859 proto_hint_sctp_only }
1862 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_sctp = {
1863 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot,
1864 proto_hint_sctp_only }
1867 struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp_only = {
1868 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_prot,
1869 proto_hint_sctp_only }
1872 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_port = {
1873 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot,
1874 proto_hint_udp_src_port }
1877 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_port = {
1878 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot,
1879 proto_hint_udp_dst_port }
1882 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_port = {
1883 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot,
1884 proto_hint_udp_src_port }
1887 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_port = {
1888 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot,
1889 proto_hint_udp_dst_port }
1892 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_port = {
1893 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only_prot,
1894 proto_hint_udp_src_port }
1897 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_port = {
1898 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only_prot,
1899 proto_hint_udp_dst_port }
1902 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp = {
1903 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_prot,
1907 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_port = {
1908 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot,
1909 proto_hint_tcp_src_port }
1912 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_port = {
1913 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot,
1914 proto_hint_tcp_dst_port }
1917 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_port = {
1918 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot,
1919 proto_hint_tcp_src_port }
1922 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_port = {
1923 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot,
1924 proto_hint_tcp_dst_port }
1927 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_port = {
1928 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only_prot,
1929 proto_hint_tcp_src_port }
1932 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_port = {
1933 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only_prot,
1934 proto_hint_tcp_dst_port }
1937 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp = {
1938 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_prot,
1942 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_sctp_src_port = {
1943 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src,
1944 proto_hint_sctp_src_port }
1947 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_sctp_dst_port = {
1948 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src,
1949 proto_hint_sctp_dst_port }
1952 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_sctp_src_port = {
1953 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst,
1954 proto_hint_sctp_src_port }
1957 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_sctp_dst_port = {
1958 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst,
1959 proto_hint_sctp_dst_port }
1962 struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp_src_port = {
1963 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only,
1964 proto_hint_sctp_src_port }
1967 struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp_dst_port = {
1968 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only,
1969 proto_hint_sctp_dst_port }
1972 struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp = {
1973 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6,
1977 struct virtchnl_proto_hdrs hdrs_hint_ipv6_esp = {
1978 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only,
1982 struct virtchnl_proto_hdrs hdrs_hint_ipv6_ah = {
1983 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only,
1987 struct virtchnl_proto_hdrs hdrs_hint_ipv6_l2tpv3 = {
1988 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only,
1992 struct virtchnl_proto_hdrs hdrs_hint_ipv6_pfcp = {
1993 TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only,
1997 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_esp = {
1998 TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_ipv6_only,
1999 proto_hint_udp_only, proto_hint_esp }
2002 struct iavf_hash_match_type iavf_hash_map_list[] = {
2004 {ETH_RSS_L2_SRC_ONLY,
2005 &hdrs_hint_eth_src_ipv4, IAVF_PHINT_IPV4},
2006 {ETH_RSS_L2_DST_ONLY,
2007 &hdrs_hint_eth_dst_ipv4, IAVF_PHINT_IPV4},
2009 &hdrs_hint_eth_ipv4, IAVF_PHINT_IPV4},
2010 {ETH_RSS_IPV4 | ETH_RSS_L3_SRC_ONLY,
2011 &hdrs_hint_ipv4_src, IAVF_PHINT_IPV4},
2012 {ETH_RSS_IPV4 | ETH_RSS_L3_DST_ONLY,
2013 &hdrs_hint_ipv4_dst, IAVF_PHINT_IPV4},
2015 &hdrs_hint_ipv4, IAVF_PHINT_IPV4},
2017 &hdrs_hint_ipv4_esp, IAVF_PHINT_IPV4},
2019 &hdrs_hint_ipv4_ah, IAVF_PHINT_IPV4},
2021 &hdrs_hint_ipv4_l2tpv3, IAVF_PHINT_IPV4},
2023 &hdrs_hint_svlan_ipv4, IAVF_PHINT_IPV4},
2025 &hdrs_hint_svlan_ipv4_udp, IAVF_PHINT_IPV4_UDP},
2027 &hdrs_hint_svlan_ipv4_tcp, IAVF_PHINT_IPV4_TCP},
2029 &hdrs_hint_svlan_ipv4_sctp, IAVF_PHINT_IPV4_SCTP},
2031 &hdrs_hint_cvlan_ipv4, IAVF_PHINT_IPV4},
2033 &hdrs_hint_cvlan_ipv4_udp, IAVF_PHINT_IPV4_UDP},
2035 &hdrs_hint_cvlan_ipv4_tcp, IAVF_PHINT_IPV4_TCP},
2037 &hdrs_hint_cvlan_ipv4_sctp, IAVF_PHINT_IPV4_SCTP},
2039 {ETH_RSS_L2_SRC_ONLY,
2040 &hdrs_hint_eth_src_ipv4_udp, IAVF_PHINT_IPV4_UDP},
2041 {ETH_RSS_L2_DST_ONLY,
2042 &hdrs_hint_eth_dst_ipv4_udp, IAVF_PHINT_IPV4_UDP},
2044 &hdrs_hint_eth_ipv4_udp, IAVF_PHINT_IPV4_UDP},
2045 {ETH_RSS_NONFRAG_IPV4_UDP |
2046 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2047 &hdrs_hint_ipv4_src_udp_src_port, IAVF_PHINT_IPV4_UDP},
2048 {ETH_RSS_NONFRAG_IPV4_UDP |
2049 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2050 &hdrs_hint_ipv4_src_udp_dst_port, IAVF_PHINT_IPV4_UDP},
2051 {ETH_RSS_NONFRAG_IPV4_UDP |
2052 ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src_udp,
2053 IAVF_PHINT_IPV4_UDP},
2054 {ETH_RSS_NONFRAG_IPV4_UDP |
2055 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2056 &hdrs_hint_ipv4_dst_udp_src_port, IAVF_PHINT_IPV4_UDP},
2057 {ETH_RSS_NONFRAG_IPV4_UDP |
2058 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2059 &hdrs_hint_ipv4_dst_udp_dst_port, IAVF_PHINT_IPV4_UDP},
2060 {ETH_RSS_NONFRAG_IPV4_UDP |
2061 ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst_udp,
2062 IAVF_PHINT_IPV4_UDP},
2063 {ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L4_SRC_ONLY,
2064 &hdrs_hint_ipv4_udp_src_port, IAVF_PHINT_IPV4_UDP},
2065 {ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L4_DST_ONLY,
2066 &hdrs_hint_ipv4_udp_dst_port, IAVF_PHINT_IPV4_UDP},
2068 &hdrs_hint_ipv4_pfcp, IAVF_PHINT_IPV4_UDP},
2070 &hdrs_hint_ipv4_udp_esp, IAVF_PHINT_IPV4_UDP},
2071 {ETH_RSS_NONFRAG_IPV4_UDP,
2072 &hdrs_hint_ipv4_udp, IAVF_PHINT_IPV4_UDP},
2074 {ETH_RSS_L2_SRC_ONLY,
2075 &hdrs_hint_eth_src_ipv4_tcp, IAVF_PHINT_IPV4_TCP},
2076 {ETH_RSS_L2_DST_ONLY,
2077 &hdrs_hint_eth_dst_ipv4_tcp, IAVF_PHINT_IPV4_TCP},
2079 &hdrs_hint_eth_ipv4_tcp, IAVF_PHINT_IPV4_TCP},
2080 {ETH_RSS_NONFRAG_IPV4_TCP |
2081 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2082 &hdrs_hint_ipv4_src_tcp_src_port, IAVF_PHINT_IPV4_TCP},
2083 {ETH_RSS_NONFRAG_IPV4_TCP |
2084 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2085 &hdrs_hint_ipv4_src_tcp_dst_port, IAVF_PHINT_IPV4_TCP},
2086 {ETH_RSS_NONFRAG_IPV4_TCP |
2087 ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src_tcp,
2088 IAVF_PHINT_IPV4_TCP},
2089 {ETH_RSS_NONFRAG_IPV4_TCP |
2090 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2091 &hdrs_hint_ipv4_dst_tcp_src_port, IAVF_PHINT_IPV4_TCP},
2092 {ETH_RSS_NONFRAG_IPV4_TCP |
2093 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2094 &hdrs_hint_ipv4_dst_tcp_dst_port, IAVF_PHINT_IPV4_TCP},
2095 {ETH_RSS_NONFRAG_IPV4_TCP |
2096 ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst_tcp,
2097 IAVF_PHINT_IPV4_TCP},
2098 {ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L4_SRC_ONLY,
2099 &hdrs_hint_ipv4_tcp_src_port, IAVF_PHINT_IPV4_TCP},
2100 {ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L4_DST_ONLY,
2101 &hdrs_hint_ipv4_tcp_dst_port, IAVF_PHINT_IPV4_TCP},
2102 {ETH_RSS_NONFRAG_IPV4_TCP,
2103 &hdrs_hint_ipv4_tcp, IAVF_PHINT_IPV4_TCP},
2105 {ETH_RSS_L2_SRC_ONLY,
2106 &hdrs_hint_eth_src_ipv4_sctp, IAVF_PHINT_IPV4_SCTP},
2107 {ETH_RSS_L2_DST_ONLY,
2108 &hdrs_hint_eth_dst_ipv4_sctp, IAVF_PHINT_IPV4_SCTP},
2110 &hdrs_hint_eth_ipv4_sctp, IAVF_PHINT_IPV4_SCTP},
2111 {ETH_RSS_NONFRAG_IPV4_SCTP |
2112 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2113 &hdrs_hint_ipv4_src_sctp_src_port, IAVF_PHINT_IPV4_SCTP},
2114 {ETH_RSS_NONFRAG_IPV4_SCTP |
2115 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2116 &hdrs_hint_ipv4_src_sctp_dst_port, IAVF_PHINT_IPV4_SCTP},
2117 {ETH_RSS_NONFRAG_IPV4_SCTP |
2118 ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src_sctp,
2119 IAVF_PHINT_IPV4_SCTP},
2120 {ETH_RSS_NONFRAG_IPV4_SCTP |
2121 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2122 &hdrs_hint_ipv4_dst_sctp_src_port, IAVF_PHINT_IPV4_SCTP},
2123 {ETH_RSS_NONFRAG_IPV4_SCTP |
2124 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2125 &hdrs_hint_ipv4_dst_sctp_dst_port, IAVF_PHINT_IPV4_SCTP},
2126 {ETH_RSS_NONFRAG_IPV4_SCTP |
2127 ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst_sctp,
2128 IAVF_PHINT_IPV4_SCTP},
2129 {ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L4_SRC_ONLY,
2130 &hdrs_hint_ipv4_sctp_src_port, IAVF_PHINT_IPV4_SCTP},
2131 {ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L4_DST_ONLY,
2132 &hdrs_hint_ipv4_sctp_dst_port, IAVF_PHINT_IPV4_SCTP},
2133 {ETH_RSS_NONFRAG_IPV4_SCTP,
2134 &hdrs_hint_ipv4_sctp, IAVF_PHINT_IPV4_SCTP},
2136 {ETH_RSS_L2_SRC_ONLY,
2137 &hdrs_hint_eth_src_ipv6, IAVF_PHINT_IPV6},
2138 {ETH_RSS_L2_DST_ONLY,
2139 &hdrs_hint_eth_dst_ipv6, IAVF_PHINT_IPV6},
2141 &hdrs_hint_eth_ipv6, IAVF_PHINT_IPV6},
2142 {ETH_RSS_IPV6 | ETH_RSS_L3_SRC_ONLY,
2143 &hdrs_hint_ipv6_src, IAVF_PHINT_IPV6},
2144 {ETH_RSS_IPV6 | ETH_RSS_L3_DST_ONLY,
2145 &hdrs_hint_ipv6_dst, IAVF_PHINT_IPV6},
2147 &hdrs_hint_ipv6, IAVF_PHINT_IPV6},
2149 &hdrs_hint_ipv6_esp, IAVF_PHINT_IPV6},
2151 &hdrs_hint_ipv6_ah, IAVF_PHINT_IPV6},
2153 &hdrs_hint_ipv6_l2tpv3, IAVF_PHINT_IPV6},
2155 {ETH_RSS_L2_SRC_ONLY,
2156 &hdrs_hint_eth_src_ipv6_udp, IAVF_PHINT_IPV6_UDP},
2157 {ETH_RSS_L2_DST_ONLY,
2158 &hdrs_hint_eth_dst_ipv6_udp, IAVF_PHINT_IPV6_UDP},
2160 &hdrs_hint_eth_ipv6_udp, IAVF_PHINT_IPV6_UDP},
2161 {ETH_RSS_NONFRAG_IPV6_UDP |
2162 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2163 &hdrs_hint_ipv6_src_udp_src_port, IAVF_PHINT_IPV6_UDP},
2164 {ETH_RSS_NONFRAG_IPV6_UDP |
2165 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2166 &hdrs_hint_ipv6_src_udp_dst_port, IAVF_PHINT_IPV6_UDP},
2167 {ETH_RSS_NONFRAG_IPV6_UDP |
2168 ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src_udp,
2169 IAVF_PHINT_IPV6_UDP},
2170 {ETH_RSS_NONFRAG_IPV6_UDP |
2171 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2172 &hdrs_hint_ipv6_dst_udp_src_port, IAVF_PHINT_IPV6_UDP},
2173 {ETH_RSS_NONFRAG_IPV6_UDP |
2174 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2175 &hdrs_hint_ipv6_dst_udp_dst_port, IAVF_PHINT_IPV6_UDP},
2176 {ETH_RSS_NONFRAG_IPV6_UDP |
2177 ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst_udp,
2178 IAVF_PHINT_IPV6_UDP},
2179 {ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L4_SRC_ONLY,
2180 &hdrs_hint_ipv6_udp_src_port, IAVF_PHINT_IPV6_UDP},
2181 {ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L4_DST_ONLY,
2182 &hdrs_hint_ipv6_udp_dst_port, IAVF_PHINT_IPV6_UDP},
2184 &hdrs_hint_ipv6_pfcp, IAVF_PHINT_IPV6_UDP},
2186 &hdrs_hint_ipv6_udp_esp, IAVF_PHINT_IPV6_UDP},
2187 {ETH_RSS_NONFRAG_IPV6_UDP,
2188 &hdrs_hint_ipv6_udp, IAVF_PHINT_IPV6_UDP},
2190 {ETH_RSS_L2_SRC_ONLY,
2191 &hdrs_hint_eth_src_ipv6_tcp, IAVF_PHINT_IPV6_TCP},
2192 {ETH_RSS_L2_DST_ONLY,
2193 &hdrs_hint_eth_dst_ipv6_tcp, IAVF_PHINT_IPV6_TCP},
2195 &hdrs_hint_eth_ipv6_tcp, IAVF_PHINT_IPV6_TCP},
2196 {ETH_RSS_NONFRAG_IPV6_TCP |
2197 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2198 &hdrs_hint_ipv6_src_tcp_src_port, IAVF_PHINT_IPV6_TCP},
2199 {ETH_RSS_NONFRAG_IPV6_TCP |
2200 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2201 &hdrs_hint_ipv6_src_tcp_dst_port, IAVF_PHINT_IPV6_TCP},
2202 {ETH_RSS_NONFRAG_IPV6_TCP |
2203 ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src_tcp,
2204 IAVF_PHINT_IPV6_TCP},
2205 {ETH_RSS_NONFRAG_IPV6_TCP |
2206 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2207 &hdrs_hint_ipv6_dst_tcp_src_port, IAVF_PHINT_IPV6_TCP},
2208 {ETH_RSS_NONFRAG_IPV6_TCP |
2209 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2210 &hdrs_hint_ipv6_dst_tcp_dst_port, IAVF_PHINT_IPV6_TCP},
2211 {ETH_RSS_NONFRAG_IPV6_TCP |
2212 ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst_tcp,
2213 IAVF_PHINT_IPV6_TCP},
2214 {ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L4_SRC_ONLY,
2215 &hdrs_hint_ipv6_tcp_src_port, IAVF_PHINT_IPV6_TCP},
2216 {ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L4_DST_ONLY,
2217 &hdrs_hint_ipv6_tcp_dst_port, IAVF_PHINT_IPV6_TCP},
2218 {ETH_RSS_NONFRAG_IPV6_TCP,
2219 &hdrs_hint_ipv6_tcp, IAVF_PHINT_IPV6_TCP},
2221 {ETH_RSS_L2_SRC_ONLY,
2222 &hdrs_hint_eth_src_ipv6_sctp, IAVF_PHINT_IPV6_SCTP},
2223 {ETH_RSS_L2_DST_ONLY,
2224 &hdrs_hint_eth_dst_ipv6_sctp, IAVF_PHINT_IPV6_SCTP},
2226 &hdrs_hint_eth_ipv6_sctp, IAVF_PHINT_IPV6_SCTP},
2227 {ETH_RSS_NONFRAG_IPV6_SCTP |
2228 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2229 &hdrs_hint_ipv6_src_sctp_src_port, IAVF_PHINT_IPV6_SCTP},
2230 {ETH_RSS_NONFRAG_IPV6_SCTP |
2231 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2232 &hdrs_hint_ipv6_src_sctp_dst_port, IAVF_PHINT_IPV6_SCTP},
2233 {ETH_RSS_NONFRAG_IPV6_SCTP |
2234 ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src_sctp,
2235 IAVF_PHINT_IPV6_SCTP},
2236 {ETH_RSS_NONFRAG_IPV6_SCTP |
2237 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2238 &hdrs_hint_ipv6_dst_sctp_src_port, IAVF_PHINT_IPV6_SCTP},
2239 {ETH_RSS_NONFRAG_IPV6_SCTP |
2240 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2241 &hdrs_hint_ipv6_dst_sctp_dst_port, IAVF_PHINT_IPV6_SCTP},
2242 {ETH_RSS_NONFRAG_IPV6_SCTP |
2243 ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst_sctp,
2244 IAVF_PHINT_IPV6_SCTP},
2245 {ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L4_SRC_ONLY,
2246 &hdrs_hint_ipv6_sctp_src_port, IAVF_PHINT_IPV6_SCTP},
2247 {ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L4_DST_ONLY,
2248 &hdrs_hint_ipv6_sctp_dst_port, IAVF_PHINT_IPV6_SCTP},
2249 {ETH_RSS_NONFRAG_IPV6_SCTP,
2250 &hdrs_hint_ipv6_sctp, IAVF_PHINT_IPV6_SCTP},
2252 &hdrs_hint_svlan_ipv6, IAVF_PHINT_IPV6},
2254 &hdrs_hint_svlan_ipv6_udp, IAVF_PHINT_IPV6_UDP},
2256 &hdrs_hint_svlan_ipv6_tcp, IAVF_PHINT_IPV6_TCP},
2258 &hdrs_hint_svlan_ipv6_sctp, IAVF_PHINT_IPV6_SCTP},
2260 &hdrs_hint_cvlan_ipv6, IAVF_PHINT_IPV6},
2262 &hdrs_hint_cvlan_ipv6_udp, IAVF_PHINT_IPV6_UDP},
2264 &hdrs_hint_cvlan_ipv6_tcp, IAVF_PHINT_IPV6_TCP},
2266 &hdrs_hint_cvlan_ipv6_sctp, IAVF_PHINT_IPV6_SCTP},
2269 struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
2272 /* IPv4 GTPU IP IPv4*/
2274 ETH_RSS_L3_SRC_ONLY,
2275 &hdrs_hint_ipv4_src_gtpu_ip,
2276 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4},
2278 ETH_RSS_L3_DST_ONLY,
2279 &hdrs_hint_ipv4_dst_gtpu_ip,
2280 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4},
2282 &hdrs_hint_ipv4_gtpu_ip,
2283 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4},
2285 &hdrs_hint_teid_gtpu_ip,
2286 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4},
2287 /* IPv4 GTPU IP IPv6*/
2289 ETH_RSS_L3_SRC_ONLY,
2290 &hdrs_hint_ipv6_src_gtpu_ip,
2291 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6},
2293 ETH_RSS_L3_DST_ONLY,
2294 &hdrs_hint_ipv6_dst_gtpu_ip,
2295 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6},
2297 &hdrs_hint_ipv6_gtpu_ip,
2298 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6},
2300 &hdrs_hint_teid_gtpu_ip,
2301 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6},
2302 /* IPv6 GTPU IP IPv4*/
2304 ETH_RSS_L3_SRC_ONLY,
2305 &hdrs_hint_ipv4_src_gtpu_ip,
2306 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4},
2308 ETH_RSS_L3_DST_ONLY,
2309 &hdrs_hint_ipv4_dst_gtpu_ip,
2310 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4},
2312 &hdrs_hint_ipv4_gtpu_ip,
2313 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4},
2315 &hdrs_hint_teid_gtpu_ip,
2316 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4},
2317 /* IPv6 GTPU IP IPv6*/
2319 ETH_RSS_L3_SRC_ONLY,
2320 &hdrs_hint_ipv6_src_gtpu_ip,
2321 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6},
2323 ETH_RSS_L3_DST_ONLY,
2324 &hdrs_hint_ipv6_dst_gtpu_ip,
2325 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6},
2327 &hdrs_hint_ipv6_gtpu_ip,
2328 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6},
2330 &hdrs_hint_teid_gtpu_ip,
2331 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6},
2332 /* IPv4 GTPU IP IPv4 UDP */
2333 {ETH_RSS_NONFRAG_IPV4_UDP |
2334 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2335 &hdrs_hint_ipv4_src_udp_src_gtpu_ip,
2336 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2337 {ETH_RSS_NONFRAG_IPV4_UDP |
2338 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2339 &hdrs_hint_ipv4_src_udp_dst_gtpu_ip,
2340 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2341 {ETH_RSS_NONFRAG_IPV4_UDP |
2342 ETH_RSS_L3_SRC_ONLY,
2343 &hdrs_hint_ipv4_src_udp_gtpu_ip,
2344 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2345 {ETH_RSS_NONFRAG_IPV4_UDP |
2346 ETH_RSS_L4_SRC_ONLY,
2347 &hdrs_hint_ipv4_udp_src_gtpu_ip,
2348 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2349 {ETH_RSS_NONFRAG_IPV4_UDP |
2350 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2351 &hdrs_hint_ipv4_dst_udp_src_gtpu_ip,
2352 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2353 {ETH_RSS_NONFRAG_IPV4_UDP |
2354 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2355 &hdrs_hint_ipv4_dst_udp_dst_gtpu_ip,
2356 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2357 {ETH_RSS_NONFRAG_IPV4_UDP |
2358 ETH_RSS_L3_DST_ONLY,
2359 &hdrs_hint_ipv4_dst_udp_gtpu_ip,
2360 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2361 {ETH_RSS_NONFRAG_IPV4_UDP |
2362 ETH_RSS_L4_DST_ONLY,
2363 &hdrs_hint_ipv4_udp_dst_gtpu_ip,
2364 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2365 {ETH_RSS_NONFRAG_IPV4_UDP,
2366 &hdrs_hint_ipv4_udp_gtpu_ip,
2367 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2368 /* IPv4 GTPU IP IPv6 UDP */
2369 {ETH_RSS_NONFRAG_IPV6_UDP |
2370 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2371 &hdrs_hint_ipv6_src_udp_src_gtpu_ip,
2372 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2373 {ETH_RSS_NONFRAG_IPV6_UDP |
2374 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2375 &hdrs_hint_ipv6_src_udp_dst_gtpu_ip,
2376 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2377 {ETH_RSS_NONFRAG_IPV6_UDP |
2378 ETH_RSS_L3_SRC_ONLY,
2379 &hdrs_hint_ipv6_src_udp_gtpu_ip,
2380 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2381 {ETH_RSS_NONFRAG_IPV6_UDP |
2382 ETH_RSS_L4_SRC_ONLY,
2383 &hdrs_hint_ipv6_udp_src_gtpu_ip,
2384 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2385 {ETH_RSS_NONFRAG_IPV6_UDP |
2386 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2387 &hdrs_hint_ipv6_dst_udp_src_gtpu_ip,
2388 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2389 {ETH_RSS_NONFRAG_IPV6_UDP |
2390 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2391 &hdrs_hint_ipv6_dst_udp_dst_gtpu_ip,
2392 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2393 {ETH_RSS_NONFRAG_IPV6_UDP |
2394 ETH_RSS_L3_DST_ONLY,
2395 &hdrs_hint_ipv6_dst_udp_gtpu_ip,
2396 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2397 {ETH_RSS_NONFRAG_IPV6_UDP |
2398 ETH_RSS_L4_DST_ONLY,
2399 &hdrs_hint_ipv6_udp_dst_gtpu_ip,
2400 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2401 {ETH_RSS_NONFRAG_IPV6_UDP,
2402 &hdrs_hint_ipv6_udp_gtpu_ip,
2403 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2404 /* IPv6 GTPU IP IPv4 UDP */
2405 {ETH_RSS_NONFRAG_IPV4_UDP |
2406 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2407 &hdrs_hint_ipv4_src_udp_src_gtpu_ip,
2408 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2409 {ETH_RSS_NONFRAG_IPV4_UDP |
2410 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2411 &hdrs_hint_ipv4_src_udp_dst_gtpu_ip,
2412 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2413 {ETH_RSS_NONFRAG_IPV4_UDP |
2414 ETH_RSS_L3_SRC_ONLY,
2415 &hdrs_hint_ipv4_src_udp_gtpu_ip,
2416 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2417 {ETH_RSS_NONFRAG_IPV4_UDP |
2418 ETH_RSS_L4_SRC_ONLY,
2419 &hdrs_hint_ipv4_udp_src_gtpu_ip,
2420 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2421 {ETH_RSS_NONFRAG_IPV4_UDP |
2422 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2423 &hdrs_hint_ipv4_dst_udp_src_gtpu_ip,
2424 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2425 {ETH_RSS_NONFRAG_IPV4_UDP |
2426 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2427 &hdrs_hint_ipv4_dst_udp_dst_gtpu_ip,
2428 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2429 {ETH_RSS_NONFRAG_IPV4_UDP |
2430 ETH_RSS_L3_DST_ONLY,
2431 &hdrs_hint_ipv4_dst_udp_gtpu_ip,
2432 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2433 {ETH_RSS_NONFRAG_IPV4_UDP |
2434 ETH_RSS_L4_DST_ONLY,
2435 &hdrs_hint_ipv4_udp_dst_gtpu_ip,
2436 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2437 {ETH_RSS_NONFRAG_IPV4_UDP,
2438 &hdrs_hint_ipv4_udp_gtpu_ip,
2439 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
2440 /* IPv6 GTPU IP IPv6 UDP */
2441 {ETH_RSS_NONFRAG_IPV6_UDP |
2442 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2443 &hdrs_hint_ipv6_src_udp_src_gtpu_ip,
2444 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2445 {ETH_RSS_NONFRAG_IPV6_UDP |
2446 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2447 &hdrs_hint_ipv6_src_udp_dst_gtpu_ip,
2448 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2449 {ETH_RSS_NONFRAG_IPV6_UDP |
2450 ETH_RSS_L3_SRC_ONLY,
2451 &hdrs_hint_ipv6_src_udp_gtpu_ip,
2452 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2453 {ETH_RSS_NONFRAG_IPV6_UDP |
2454 ETH_RSS_L4_SRC_ONLY,
2455 &hdrs_hint_ipv6_udp_src_gtpu_ip,
2456 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2457 {ETH_RSS_NONFRAG_IPV6_UDP |
2458 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2459 &hdrs_hint_ipv6_dst_udp_src_gtpu_ip,
2460 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2461 {ETH_RSS_NONFRAG_IPV6_UDP |
2462 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2463 &hdrs_hint_ipv6_dst_udp_dst_gtpu_ip,
2464 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2465 {ETH_RSS_NONFRAG_IPV6_UDP |
2466 ETH_RSS_L3_DST_ONLY,
2467 &hdrs_hint_ipv6_dst_udp_gtpu_ip,
2468 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2469 {ETH_RSS_NONFRAG_IPV6_UDP |
2470 ETH_RSS_L4_DST_ONLY,
2471 &hdrs_hint_ipv6_udp_dst_gtpu_ip,
2472 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2473 {ETH_RSS_NONFRAG_IPV6_UDP,
2474 &hdrs_hint_ipv6_udp_gtpu_ip,
2475 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
2476 /* IPv4 GTPU IP IPv4 TCP */
2477 {ETH_RSS_NONFRAG_IPV4_TCP |
2478 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2479 &hdrs_hint_ipv4_src_tcp_src_gtpu_ip,
2480 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2481 {ETH_RSS_NONFRAG_IPV4_TCP |
2482 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2483 &hdrs_hint_ipv4_src_tcp_dst_gtpu_ip,
2484 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2485 {ETH_RSS_NONFRAG_IPV4_TCP |
2486 ETH_RSS_L3_SRC_ONLY,
2487 &hdrs_hint_ipv4_src_tcp_gtpu_ip,
2488 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2489 {ETH_RSS_NONFRAG_IPV4_TCP |
2490 ETH_RSS_L4_SRC_ONLY,
2491 &hdrs_hint_ipv4_tcp_src_gtpu_ip,
2492 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2493 {ETH_RSS_NONFRAG_IPV4_TCP |
2494 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2495 &hdrs_hint_ipv4_dst_tcp_src_gtpu_ip,
2496 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2497 {ETH_RSS_NONFRAG_IPV4_TCP |
2498 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2499 &hdrs_hint_ipv4_dst_tcp_dst_gtpu_ip,
2500 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2501 {ETH_RSS_NONFRAG_IPV4_TCP |
2502 ETH_RSS_L3_DST_ONLY,
2503 &hdrs_hint_ipv4_dst_tcp_gtpu_ip,
2504 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2505 {ETH_RSS_NONFRAG_IPV4_TCP |
2506 ETH_RSS_L4_DST_ONLY,
2507 &hdrs_hint_ipv4_tcp_dst_gtpu_ip,
2508 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2509 {ETH_RSS_NONFRAG_IPV4_TCP,
2510 &hdrs_hint_ipv4_tcp_gtpu_ip,
2511 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2512 /* IPv4 GTPU IP IPv6 TCP */
2513 {ETH_RSS_NONFRAG_IPV6_TCP |
2514 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2515 &hdrs_hint_ipv6_src_tcp_src_gtpu_ip,
2516 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2517 {ETH_RSS_NONFRAG_IPV6_TCP |
2518 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2519 &hdrs_hint_ipv6_src_tcp_dst_gtpu_ip,
2520 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2521 {ETH_RSS_NONFRAG_IPV6_TCP |
2522 ETH_RSS_L3_SRC_ONLY,
2523 &hdrs_hint_ipv6_src_tcp_gtpu_ip,
2524 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2525 {ETH_RSS_NONFRAG_IPV6_TCP |
2526 ETH_RSS_L4_SRC_ONLY,
2527 &hdrs_hint_ipv6_tcp_src_gtpu_ip,
2528 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2529 {ETH_RSS_NONFRAG_IPV6_TCP |
2530 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2531 &hdrs_hint_ipv6_dst_tcp_src_gtpu_ip,
2532 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2533 {ETH_RSS_NONFRAG_IPV6_TCP |
2534 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2535 &hdrs_hint_ipv6_dst_tcp_dst_gtpu_ip,
2536 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2537 {ETH_RSS_NONFRAG_IPV6_TCP |
2538 ETH_RSS_L3_DST_ONLY,
2539 &hdrs_hint_ipv6_dst_tcp_gtpu_ip,
2540 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2541 {ETH_RSS_NONFRAG_IPV6_TCP |
2542 ETH_RSS_L4_DST_ONLY,
2543 &hdrs_hint_ipv6_tcp_dst_gtpu_ip,
2544 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2545 {ETH_RSS_NONFRAG_IPV6_TCP,
2546 &hdrs_hint_ipv6_tcp_gtpu_ip,
2547 IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2548 /* IPv6 GTPU IP IPv4 TCP */
2549 {ETH_RSS_NONFRAG_IPV4_TCP |
2550 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2551 &hdrs_hint_ipv4_src_tcp_src_gtpu_ip,
2552 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2553 {ETH_RSS_NONFRAG_IPV4_TCP |
2554 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2555 &hdrs_hint_ipv4_src_tcp_dst_gtpu_ip,
2556 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2557 {ETH_RSS_NONFRAG_IPV4_TCP |
2558 ETH_RSS_L3_SRC_ONLY,
2559 &hdrs_hint_ipv4_src_tcp_gtpu_ip,
2560 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2561 {ETH_RSS_NONFRAG_IPV4_TCP |
2562 ETH_RSS_L4_SRC_ONLY,
2563 &hdrs_hint_ipv4_tcp_src_gtpu_ip,
2564 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2565 {ETH_RSS_NONFRAG_IPV4_TCP |
2566 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2567 &hdrs_hint_ipv4_dst_tcp_src_gtpu_ip,
2568 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2569 {ETH_RSS_NONFRAG_IPV4_TCP |
2570 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2571 &hdrs_hint_ipv4_dst_tcp_dst_gtpu_ip,
2572 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2573 {ETH_RSS_NONFRAG_IPV4_TCP |
2574 ETH_RSS_L3_DST_ONLY,
2575 &hdrs_hint_ipv4_dst_tcp_gtpu_ip,
2576 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2577 {ETH_RSS_NONFRAG_IPV4_TCP |
2578 ETH_RSS_L4_DST_ONLY,
2579 &hdrs_hint_ipv4_tcp_dst_gtpu_ip,
2580 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2581 {ETH_RSS_NONFRAG_IPV4_TCP,
2582 &hdrs_hint_ipv4_tcp_gtpu_ip,
2583 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
2584 /* IPv6 GTPU IP IPv6 TCP */
2585 {ETH_RSS_NONFRAG_IPV6_TCP |
2586 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2587 &hdrs_hint_ipv6_src_tcp_src_gtpu_ip,
2588 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2589 {ETH_RSS_NONFRAG_IPV6_TCP |
2590 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2591 &hdrs_hint_ipv6_src_tcp_dst_gtpu_ip,
2592 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2593 {ETH_RSS_NONFRAG_IPV6_TCP |
2594 ETH_RSS_L3_SRC_ONLY,
2595 &hdrs_hint_ipv6_src_tcp_gtpu_ip,
2596 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2597 {ETH_RSS_NONFRAG_IPV6_TCP |
2598 ETH_RSS_L4_SRC_ONLY,
2599 &hdrs_hint_ipv6_tcp_src_gtpu_ip,
2600 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2601 {ETH_RSS_NONFRAG_IPV6_TCP |
2602 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2603 &hdrs_hint_ipv6_dst_tcp_src_gtpu_ip,
2604 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2605 {ETH_RSS_NONFRAG_IPV6_TCP |
2606 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2607 &hdrs_hint_ipv6_dst_tcp_dst_gtpu_ip,
2608 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2609 {ETH_RSS_NONFRAG_IPV6_TCP |
2610 ETH_RSS_L3_DST_ONLY,
2611 &hdrs_hint_ipv6_dst_tcp_gtpu_ip,
2612 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2613 {ETH_RSS_NONFRAG_IPV6_TCP |
2614 ETH_RSS_L4_DST_ONLY,
2615 &hdrs_hint_ipv6_tcp_dst_gtpu_ip,
2616 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2617 {ETH_RSS_NONFRAG_IPV6_TCP,
2618 &hdrs_hint_ipv6_tcp_gtpu_ip,
2619 IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
2621 /* IPv4 GTPU EH IPv4 */
2623 ETH_RSS_L3_SRC_ONLY,
2624 &hdrs_hint_ipv4_src_gtpu_eh,
2625 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4},
2627 ETH_RSS_L3_DST_ONLY,
2628 &hdrs_hint_ipv4_dst_gtpu_eh,
2629 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4},
2631 &hdrs_hint_ipv4_gtpu_eh,
2632 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4},
2633 /* IPv4 GTPU EH IPv6 */
2635 ETH_RSS_L3_SRC_ONLY,
2636 &hdrs_hint_ipv6_src_gtpu_eh,
2637 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6},
2639 ETH_RSS_L3_DST_ONLY,
2640 &hdrs_hint_ipv6_dst_gtpu_eh,
2641 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6},
2643 &hdrs_hint_ipv6_gtpu_eh,
2644 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6},
2645 /* IPv6 GTPU EH IPv4 */
2647 ETH_RSS_L3_SRC_ONLY,
2648 &hdrs_hint_ipv4_src_gtpu_eh,
2649 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4},
2651 ETH_RSS_L3_DST_ONLY,
2652 &hdrs_hint_ipv4_dst_gtpu_eh,
2653 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4},
2655 &hdrs_hint_ipv4_gtpu_eh,
2656 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4},
2657 /* IPv6 GTPU EH IPv6 */
2659 ETH_RSS_L3_SRC_ONLY,
2660 &hdrs_hint_ipv6_src_gtpu_eh,
2661 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6},
2663 ETH_RSS_L3_DST_ONLY,
2664 &hdrs_hint_ipv6_dst_gtpu_eh,
2665 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6},
2667 &hdrs_hint_ipv6_gtpu_eh,
2668 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6},
2669 /* IPv4 GTPU EH IPv4 UDP */
2670 {ETH_RSS_NONFRAG_IPV4_UDP |
2671 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2672 &hdrs_hint_ipv4_src_udp_src_gtpu_eh,
2673 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2674 {ETH_RSS_NONFRAG_IPV4_UDP |
2675 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2676 &hdrs_hint_ipv4_src_udp_dst_gtpu_eh,
2677 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2678 {ETH_RSS_NONFRAG_IPV4_UDP |
2679 ETH_RSS_L3_SRC_ONLY,
2680 &hdrs_hint_ipv4_src_udp_gtpu_eh,
2681 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2682 {ETH_RSS_NONFRAG_IPV4_UDP |
2683 ETH_RSS_L4_SRC_ONLY,
2684 &hdrs_hint_ipv4_udp_src_gtpu_eh,
2685 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2686 {ETH_RSS_NONFRAG_IPV4_UDP |
2687 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2688 &hdrs_hint_ipv4_dst_udp_src_gtpu_eh,
2689 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2690 {ETH_RSS_NONFRAG_IPV4_UDP |
2691 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2692 &hdrs_hint_ipv4_dst_udp_dst_gtpu_eh,
2693 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2694 {ETH_RSS_NONFRAG_IPV4_UDP |
2695 ETH_RSS_L3_DST_ONLY,
2696 &hdrs_hint_ipv4_dst_udp_gtpu_eh,
2697 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2698 {ETH_RSS_NONFRAG_IPV4_UDP |
2699 ETH_RSS_L4_DST_ONLY,
2700 &hdrs_hint_ipv4_udp_dst_gtpu_eh,
2701 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2702 {ETH_RSS_NONFRAG_IPV4_UDP,
2703 &hdrs_hint_ipv4_udp_gtpu_eh,
2704 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2705 /* IPv4 GTPU EH IPv6 UDP */
2706 {ETH_RSS_NONFRAG_IPV6_UDP |
2707 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2708 &hdrs_hint_ipv6_src_udp_src_gtpu_eh,
2709 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2710 {ETH_RSS_NONFRAG_IPV6_UDP |
2711 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2712 &hdrs_hint_ipv6_src_udp_dst_gtpu_eh,
2713 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2714 {ETH_RSS_NONFRAG_IPV6_UDP |
2715 ETH_RSS_L3_SRC_ONLY,
2716 &hdrs_hint_ipv6_src_udp_gtpu_eh,
2717 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2718 {ETH_RSS_NONFRAG_IPV6_UDP |
2719 ETH_RSS_L4_SRC_ONLY,
2720 &hdrs_hint_ipv6_udp_src_gtpu_eh,
2721 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2722 {ETH_RSS_NONFRAG_IPV6_UDP |
2723 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2724 &hdrs_hint_ipv6_dst_udp_src_gtpu_eh,
2725 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2726 {ETH_RSS_NONFRAG_IPV6_UDP |
2727 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2728 &hdrs_hint_ipv6_dst_udp_dst_gtpu_eh,
2729 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2730 {ETH_RSS_NONFRAG_IPV6_UDP |
2731 ETH_RSS_L3_DST_ONLY,
2732 &hdrs_hint_ipv6_dst_udp_gtpu_eh,
2733 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2734 {ETH_RSS_NONFRAG_IPV6_UDP |
2735 ETH_RSS_L4_DST_ONLY,
2736 &hdrs_hint_ipv6_udp_dst_gtpu_eh,
2737 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2738 {ETH_RSS_NONFRAG_IPV6_UDP,
2739 &hdrs_hint_ipv6_udp_gtpu_eh,
2740 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2741 /* IPv6 GTPU EH IPv4 UDP */
2742 {ETH_RSS_NONFRAG_IPV4_UDP |
2743 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2744 &hdrs_hint_ipv4_src_udp_src_gtpu_eh,
2745 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2746 {ETH_RSS_NONFRAG_IPV4_UDP |
2747 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2748 &hdrs_hint_ipv4_src_udp_dst_gtpu_eh,
2749 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2750 {ETH_RSS_NONFRAG_IPV4_UDP |
2751 ETH_RSS_L3_SRC_ONLY,
2752 &hdrs_hint_ipv4_src_udp_gtpu_eh,
2753 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2754 {ETH_RSS_NONFRAG_IPV4_UDP |
2755 ETH_RSS_L4_SRC_ONLY,
2756 &hdrs_hint_ipv4_udp_src_gtpu_eh,
2757 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2758 {ETH_RSS_NONFRAG_IPV4_UDP |
2759 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2760 &hdrs_hint_ipv4_dst_udp_src_gtpu_eh,
2761 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2762 {ETH_RSS_NONFRAG_IPV4_UDP |
2763 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2764 &hdrs_hint_ipv4_dst_udp_dst_gtpu_eh,
2765 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2766 {ETH_RSS_NONFRAG_IPV4_UDP |
2767 ETH_RSS_L3_DST_ONLY,
2768 &hdrs_hint_ipv4_dst_udp_gtpu_eh,
2769 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2770 {ETH_RSS_NONFRAG_IPV4_UDP |
2771 ETH_RSS_L4_DST_ONLY,
2772 &hdrs_hint_ipv4_udp_dst_gtpu_eh,
2773 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2774 {ETH_RSS_NONFRAG_IPV4_UDP,
2775 &hdrs_hint_ipv4_udp_gtpu_eh,
2776 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
2777 /* IPv6 GTPU EH IPv6 UDP */
2778 {ETH_RSS_NONFRAG_IPV6_UDP |
2779 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2780 &hdrs_hint_ipv6_src_udp_src_gtpu_eh,
2781 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2782 {ETH_RSS_NONFRAG_IPV6_UDP |
2783 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2784 &hdrs_hint_ipv6_src_udp_dst_gtpu_eh,
2785 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2786 {ETH_RSS_NONFRAG_IPV6_UDP |
2787 ETH_RSS_L3_SRC_ONLY,
2788 &hdrs_hint_ipv6_src_udp_gtpu_eh,
2789 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2790 {ETH_RSS_NONFRAG_IPV6_UDP |
2791 ETH_RSS_L4_SRC_ONLY,
2792 &hdrs_hint_ipv6_udp_src_gtpu_eh,
2793 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2794 {ETH_RSS_NONFRAG_IPV6_UDP |
2795 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2796 &hdrs_hint_ipv6_dst_udp_src_gtpu_eh,
2797 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2798 {ETH_RSS_NONFRAG_IPV6_UDP |
2799 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2800 &hdrs_hint_ipv6_dst_udp_dst_gtpu_eh,
2801 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2802 {ETH_RSS_NONFRAG_IPV6_UDP |
2803 ETH_RSS_L3_DST_ONLY,
2804 &hdrs_hint_ipv6_dst_udp_gtpu_eh,
2805 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2806 {ETH_RSS_NONFRAG_IPV6_UDP |
2807 ETH_RSS_L4_DST_ONLY,
2808 &hdrs_hint_ipv6_udp_dst_gtpu_eh,
2809 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2810 {ETH_RSS_NONFRAG_IPV6_UDP,
2811 &hdrs_hint_ipv6_udp_gtpu_eh,
2812 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
2813 /* IPv4 GTPU EH IPv4 TCP */
2814 {ETH_RSS_NONFRAG_IPV4_TCP |
2815 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2816 &hdrs_hint_ipv4_src_tcp_src_gtpu_eh,
2817 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2818 {ETH_RSS_NONFRAG_IPV4_TCP |
2819 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2820 &hdrs_hint_ipv4_src_tcp_dst_gtpu_eh,
2821 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2822 {ETH_RSS_NONFRAG_IPV4_TCP |
2823 ETH_RSS_L3_SRC_ONLY,
2824 &hdrs_hint_ipv4_src_tcp_gtpu_eh,
2825 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2826 {ETH_RSS_NONFRAG_IPV4_TCP |
2827 ETH_RSS_L4_SRC_ONLY,
2828 &hdrs_hint_ipv4_tcp_src_gtpu_eh,
2829 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2830 {ETH_RSS_NONFRAG_IPV4_TCP |
2831 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2832 &hdrs_hint_ipv4_dst_tcp_src_gtpu_eh,
2833 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2834 {ETH_RSS_NONFRAG_IPV4_TCP |
2835 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2836 &hdrs_hint_ipv4_dst_tcp_dst_gtpu_eh,
2837 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2838 {ETH_RSS_NONFRAG_IPV4_TCP |
2839 ETH_RSS_L3_DST_ONLY,
2840 &hdrs_hint_ipv4_dst_tcp_gtpu_eh,
2841 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2842 {ETH_RSS_NONFRAG_IPV4_TCP |
2843 ETH_RSS_L4_DST_ONLY,
2844 &hdrs_hint_ipv4_tcp_dst_gtpu_eh,
2845 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2846 {ETH_RSS_NONFRAG_IPV4_TCP,
2847 &hdrs_hint_ipv4_tcp_gtpu_eh,
2848 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2849 /* IPv4 GTPU EH IPv6 TCP */
2850 {ETH_RSS_NONFRAG_IPV6_TCP |
2851 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2852 &hdrs_hint_ipv6_src_tcp_src_gtpu_eh,
2853 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2854 {ETH_RSS_NONFRAG_IPV6_TCP |
2855 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2856 &hdrs_hint_ipv6_src_tcp_dst_gtpu_eh,
2857 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2858 {ETH_RSS_NONFRAG_IPV6_TCP |
2859 ETH_RSS_L3_SRC_ONLY,
2860 &hdrs_hint_ipv6_src_tcp_gtpu_eh,
2861 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2862 {ETH_RSS_NONFRAG_IPV6_TCP |
2863 ETH_RSS_L4_SRC_ONLY,
2864 &hdrs_hint_ipv6_tcp_src_gtpu_eh,
2865 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2866 {ETH_RSS_NONFRAG_IPV6_TCP |
2867 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2868 &hdrs_hint_ipv6_dst_tcp_src_gtpu_eh,
2869 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2870 {ETH_RSS_NONFRAG_IPV6_TCP |
2871 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2872 &hdrs_hint_ipv6_dst_tcp_dst_gtpu_eh,
2873 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2874 {ETH_RSS_NONFRAG_IPV6_TCP |
2875 ETH_RSS_L3_DST_ONLY,
2876 &hdrs_hint_ipv6_dst_tcp_gtpu_eh,
2877 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2878 {ETH_RSS_NONFRAG_IPV6_TCP |
2879 ETH_RSS_L4_DST_ONLY,
2880 &hdrs_hint_ipv6_tcp_dst_gtpu_eh,
2881 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2882 {ETH_RSS_NONFRAG_IPV6_TCP,
2883 &hdrs_hint_ipv6_tcp_gtpu_eh,
2884 IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2885 /* IPv6 GTPU EH IPv4 TCP */
2886 {ETH_RSS_NONFRAG_IPV4_TCP |
2887 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2888 &hdrs_hint_ipv4_src_tcp_src_gtpu_eh,
2889 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2890 {ETH_RSS_NONFRAG_IPV4_TCP |
2891 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2892 &hdrs_hint_ipv4_src_tcp_dst_gtpu_eh,
2893 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2894 {ETH_RSS_NONFRAG_IPV4_TCP |
2895 ETH_RSS_L3_SRC_ONLY,
2896 &hdrs_hint_ipv4_src_tcp_gtpu_eh,
2897 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2898 {ETH_RSS_NONFRAG_IPV4_TCP |
2899 ETH_RSS_L4_SRC_ONLY,
2900 &hdrs_hint_ipv4_tcp_src_gtpu_eh,
2901 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2902 {ETH_RSS_NONFRAG_IPV4_TCP |
2903 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2904 &hdrs_hint_ipv4_dst_tcp_src_gtpu_eh,
2905 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2906 {ETH_RSS_NONFRAG_IPV4_TCP |
2907 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2908 &hdrs_hint_ipv4_dst_tcp_dst_gtpu_eh,
2909 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2910 {ETH_RSS_NONFRAG_IPV4_TCP |
2911 ETH_RSS_L3_DST_ONLY,
2912 &hdrs_hint_ipv4_dst_tcp_gtpu_eh,
2913 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2914 {ETH_RSS_NONFRAG_IPV4_TCP |
2915 ETH_RSS_L4_DST_ONLY,
2916 &hdrs_hint_ipv4_tcp_dst_gtpu_eh,
2917 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2918 {ETH_RSS_NONFRAG_IPV4_TCP,
2919 &hdrs_hint_ipv4_tcp_gtpu_eh,
2920 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
2921 /* IPv6 GTPU EH IPv6 TCP */
2922 {ETH_RSS_NONFRAG_IPV6_TCP |
2923 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
2924 &hdrs_hint_ipv6_src_tcp_src_gtpu_eh,
2925 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2926 {ETH_RSS_NONFRAG_IPV6_TCP |
2927 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
2928 &hdrs_hint_ipv6_src_tcp_dst_gtpu_eh,
2929 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2930 {ETH_RSS_NONFRAG_IPV6_TCP |
2931 ETH_RSS_L3_SRC_ONLY,
2932 &hdrs_hint_ipv6_src_tcp_gtpu_eh,
2933 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2934 {ETH_RSS_NONFRAG_IPV6_TCP |
2935 ETH_RSS_L4_SRC_ONLY,
2936 &hdrs_hint_ipv6_tcp_src_gtpu_eh,
2937 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2938 {ETH_RSS_NONFRAG_IPV6_TCP |
2939 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
2940 &hdrs_hint_ipv6_dst_tcp_src_gtpu_eh,
2941 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2942 {ETH_RSS_NONFRAG_IPV6_TCP |
2943 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
2944 &hdrs_hint_ipv6_dst_tcp_dst_gtpu_eh,
2945 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2946 {ETH_RSS_NONFRAG_IPV6_TCP |
2947 ETH_RSS_L3_DST_ONLY,
2948 &hdrs_hint_ipv6_dst_tcp_gtpu_eh,
2949 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2950 {ETH_RSS_NONFRAG_IPV6_TCP |
2951 ETH_RSS_L4_DST_ONLY,
2952 &hdrs_hint_ipv6_tcp_dst_gtpu_eh,
2953 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2954 {ETH_RSS_NONFRAG_IPV6_TCP,
2955 &hdrs_hint_ipv6_tcp_gtpu_eh,
2956 IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
2958 /* IPv4 GTPU EH UP IPv4 */
2960 ETH_RSS_L3_SRC_ONLY,
2961 &hdrs_hint_ipv4_src_gtpu_up,
2962 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
2964 ETH_RSS_L3_DST_ONLY,
2965 &hdrs_hint_ipv4_dst_gtpu_up,
2966 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
2968 &hdrs_hint_ipv4_gtpu_up,
2969 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
2970 /* IPv4 GTPU EH UP IPv6 */
2972 ETH_RSS_L3_SRC_ONLY,
2973 &hdrs_hint_ipv6_src_gtpu_up,
2974 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6},
2976 ETH_RSS_L3_DST_ONLY,
2977 &hdrs_hint_ipv6_dst_gtpu_up,
2978 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6},
2980 &hdrs_hint_ipv6_gtpu_up,
2981 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6},
2982 /* IPv6 GTPU EH UP IPv4 */
2984 ETH_RSS_L3_SRC_ONLY,
2985 &hdrs_hint_ipv4_src_gtpu_up,
2986 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
2988 ETH_RSS_L3_DST_ONLY,
2989 &hdrs_hint_ipv4_dst_gtpu_up,
2990 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
2992 &hdrs_hint_ipv4_gtpu_up,
2993 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
2994 /* IPv6 GTPU EH UP IPv6 */
2996 ETH_RSS_L3_SRC_ONLY,
2997 &hdrs_hint_ipv6_src_gtpu_up,
2998 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6},
3000 ETH_RSS_L3_DST_ONLY,
3001 &hdrs_hint_ipv6_dst_gtpu_up,
3002 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6},
3004 &hdrs_hint_ipv6_gtpu_up,
3005 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6},
3006 /* IPv4 GTPU EH UP IPv4 UDP */
3007 {ETH_RSS_NONFRAG_IPV4_UDP |
3008 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3009 &hdrs_hint_ipv4_src_udp_src_gtpu_up,
3010 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3011 {ETH_RSS_NONFRAG_IPV4_UDP |
3012 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3013 &hdrs_hint_ipv4_src_udp_dst_gtpu_up,
3014 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3015 {ETH_RSS_NONFRAG_IPV4_UDP |
3016 ETH_RSS_L3_SRC_ONLY,
3017 &hdrs_hint_ipv4_src_udp_gtpu_up,
3018 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3019 {ETH_RSS_NONFRAG_IPV4_UDP |
3020 ETH_RSS_L4_SRC_ONLY,
3021 &hdrs_hint_ipv4_udp_src_gtpu_up,
3022 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3023 {ETH_RSS_NONFRAG_IPV4_UDP |
3024 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3025 &hdrs_hint_ipv4_dst_udp_src_gtpu_up,
3026 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3027 {ETH_RSS_NONFRAG_IPV4_UDP |
3028 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3029 &hdrs_hint_ipv4_dst_udp_dst_gtpu_up,
3030 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3031 {ETH_RSS_NONFRAG_IPV4_UDP |
3032 ETH_RSS_L3_DST_ONLY,
3033 &hdrs_hint_ipv4_dst_udp_gtpu_up,
3034 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3035 {ETH_RSS_NONFRAG_IPV4_UDP |
3036 ETH_RSS_L4_DST_ONLY,
3037 &hdrs_hint_ipv4_udp_dst_gtpu_up,
3038 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3039 {ETH_RSS_NONFRAG_IPV4_UDP,
3040 &hdrs_hint_ipv4_udp_gtpu_up,
3041 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3042 /* IPv4 GTPU EH UP IPv6 UDP */
3043 {ETH_RSS_NONFRAG_IPV6_UDP |
3044 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3045 &hdrs_hint_ipv6_src_udp_src_gtpu_up,
3046 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3047 {ETH_RSS_NONFRAG_IPV6_UDP |
3048 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3049 &hdrs_hint_ipv6_src_udp_dst_gtpu_up,
3050 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3051 {ETH_RSS_NONFRAG_IPV6_UDP |
3052 ETH_RSS_L3_SRC_ONLY,
3053 &hdrs_hint_ipv6_src_udp_gtpu_up,
3054 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3055 {ETH_RSS_NONFRAG_IPV6_UDP |
3056 ETH_RSS_L4_SRC_ONLY,
3057 &hdrs_hint_ipv6_udp_src_gtpu_up,
3058 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3059 {ETH_RSS_NONFRAG_IPV6_UDP |
3060 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3061 &hdrs_hint_ipv6_dst_udp_src_gtpu_up,
3062 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3063 {ETH_RSS_NONFRAG_IPV6_UDP |
3064 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3065 &hdrs_hint_ipv6_dst_udp_dst_gtpu_up,
3066 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3067 {ETH_RSS_NONFRAG_IPV6_UDP |
3068 ETH_RSS_L3_DST_ONLY,
3069 &hdrs_hint_ipv6_dst_udp_gtpu_up,
3070 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3071 {ETH_RSS_NONFRAG_IPV6_UDP |
3072 ETH_RSS_L4_DST_ONLY,
3073 &hdrs_hint_ipv6_udp_dst_gtpu_up,
3074 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3075 {ETH_RSS_NONFRAG_IPV6_UDP,
3076 &hdrs_hint_ipv6_udp_gtpu_up,
3077 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3078 /* IPv6 GTPU EH UP IPv4 UDP */
3079 {ETH_RSS_NONFRAG_IPV4_UDP |
3080 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3081 &hdrs_hint_ipv4_src_udp_src_gtpu_up,
3082 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3083 {ETH_RSS_NONFRAG_IPV4_UDP |
3084 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3085 &hdrs_hint_ipv4_src_udp_dst_gtpu_up,
3086 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3087 {ETH_RSS_NONFRAG_IPV4_UDP |
3088 ETH_RSS_L3_SRC_ONLY,
3089 &hdrs_hint_ipv4_src_udp_gtpu_up,
3090 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3091 {ETH_RSS_NONFRAG_IPV4_UDP |
3092 ETH_RSS_L4_SRC_ONLY,
3093 &hdrs_hint_ipv4_udp_src_gtpu_up,
3094 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3095 {ETH_RSS_NONFRAG_IPV4_UDP |
3096 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3097 &hdrs_hint_ipv4_dst_udp_src_gtpu_up,
3098 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3099 {ETH_RSS_NONFRAG_IPV4_UDP |
3100 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3101 &hdrs_hint_ipv4_dst_udp_dst_gtpu_up,
3102 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3103 {ETH_RSS_NONFRAG_IPV4_UDP |
3104 ETH_RSS_L3_DST_ONLY,
3105 &hdrs_hint_ipv4_dst_udp_gtpu_up,
3106 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3107 {ETH_RSS_NONFRAG_IPV4_UDP |
3108 ETH_RSS_L4_DST_ONLY,
3109 &hdrs_hint_ipv4_udp_dst_gtpu_up,
3110 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3111 {ETH_RSS_NONFRAG_IPV4_UDP,
3112 &hdrs_hint_ipv4_udp_gtpu_up,
3113 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
3114 /* IPv6 GTPU EH UP IPv6 UDP */
3115 {ETH_RSS_NONFRAG_IPV6_UDP |
3116 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3117 &hdrs_hint_ipv6_src_udp_src_gtpu_up,
3118 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3119 {ETH_RSS_NONFRAG_IPV6_UDP |
3120 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3121 &hdrs_hint_ipv6_src_udp_dst_gtpu_up,
3122 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3123 {ETH_RSS_NONFRAG_IPV6_UDP |
3124 ETH_RSS_L3_SRC_ONLY,
3125 &hdrs_hint_ipv6_src_udp_gtpu_up,
3126 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3127 {ETH_RSS_NONFRAG_IPV6_UDP |
3128 ETH_RSS_L4_SRC_ONLY,
3129 &hdrs_hint_ipv6_udp_src_gtpu_up,
3130 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3131 {ETH_RSS_NONFRAG_IPV6_UDP |
3132 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3133 &hdrs_hint_ipv6_dst_udp_src_gtpu_up,
3134 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3135 {ETH_RSS_NONFRAG_IPV6_UDP |
3136 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3137 &hdrs_hint_ipv6_dst_udp_dst_gtpu_up,
3138 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3139 {ETH_RSS_NONFRAG_IPV6_UDP |
3140 ETH_RSS_L3_DST_ONLY,
3141 &hdrs_hint_ipv6_dst_udp_gtpu_up,
3142 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3143 {ETH_RSS_NONFRAG_IPV6_UDP |
3144 ETH_RSS_L4_DST_ONLY,
3145 &hdrs_hint_ipv6_udp_dst_gtpu_up,
3146 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3147 {ETH_RSS_NONFRAG_IPV6_UDP,
3148 &hdrs_hint_ipv6_udp_gtpu_up,
3149 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
3150 /* IPv4 GTPU EH UP IPv4 TCP */
3151 {ETH_RSS_NONFRAG_IPV4_TCP |
3152 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3153 &hdrs_hint_ipv4_src_tcp_src_gtpu_up,
3154 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3155 {ETH_RSS_NONFRAG_IPV4_TCP |
3156 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3157 &hdrs_hint_ipv4_src_tcp_dst_gtpu_up,
3158 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3159 {ETH_RSS_NONFRAG_IPV4_TCP |
3160 ETH_RSS_L3_SRC_ONLY,
3161 &hdrs_hint_ipv4_src_tcp_gtpu_up,
3162 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3163 {ETH_RSS_NONFRAG_IPV4_TCP |
3164 ETH_RSS_L4_SRC_ONLY,
3165 &hdrs_hint_ipv4_tcp_src_gtpu_up,
3166 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3167 {ETH_RSS_NONFRAG_IPV4_TCP |
3168 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3169 &hdrs_hint_ipv4_dst_tcp_src_gtpu_up,
3170 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3171 {ETH_RSS_NONFRAG_IPV4_TCP |
3172 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3173 &hdrs_hint_ipv4_dst_tcp_dst_gtpu_up,
3174 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3175 {ETH_RSS_NONFRAG_IPV4_TCP |
3176 ETH_RSS_L3_DST_ONLY,
3177 &hdrs_hint_ipv4_dst_tcp_gtpu_up,
3178 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3179 {ETH_RSS_NONFRAG_IPV4_TCP |
3180 ETH_RSS_L4_DST_ONLY,
3181 &hdrs_hint_ipv4_tcp_dst_gtpu_up,
3182 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3183 {ETH_RSS_NONFRAG_IPV4_TCP,
3184 &hdrs_hint_ipv4_tcp_gtpu_up,
3185 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3186 /* IPv4 GTPU EH UP IPv6 TCP */
3187 {ETH_RSS_NONFRAG_IPV6_TCP |
3188 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3189 &hdrs_hint_ipv6_src_tcp_src_gtpu_up,
3190 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3191 {ETH_RSS_NONFRAG_IPV6_TCP |
3192 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3193 &hdrs_hint_ipv6_src_tcp_dst_gtpu_up,
3194 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3195 {ETH_RSS_NONFRAG_IPV6_TCP |
3196 ETH_RSS_L3_SRC_ONLY,
3197 &hdrs_hint_ipv6_src_tcp_gtpu_up,
3198 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3199 {ETH_RSS_NONFRAG_IPV6_TCP |
3200 ETH_RSS_L4_SRC_ONLY,
3201 &hdrs_hint_ipv6_tcp_src_gtpu_up,
3202 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3203 {ETH_RSS_NONFRAG_IPV6_TCP |
3204 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3205 &hdrs_hint_ipv6_dst_tcp_src_gtpu_up,
3206 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3207 {ETH_RSS_NONFRAG_IPV6_TCP |
3208 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3209 &hdrs_hint_ipv6_dst_tcp_dst_gtpu_up,
3210 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3211 {ETH_RSS_NONFRAG_IPV6_TCP |
3212 ETH_RSS_L3_DST_ONLY,
3213 &hdrs_hint_ipv6_dst_tcp_gtpu_up,
3214 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3215 {ETH_RSS_NONFRAG_IPV6_TCP |
3216 ETH_RSS_L4_DST_ONLY,
3217 &hdrs_hint_ipv6_tcp_dst_gtpu_up,
3218 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3219 {ETH_RSS_NONFRAG_IPV6_TCP,
3220 &hdrs_hint_ipv6_tcp_gtpu_up,
3221 IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3222 /* IPv6 GTPU EH UP IPv4 TCP */
3223 {ETH_RSS_NONFRAG_IPV4_TCP |
3224 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3225 &hdrs_hint_ipv4_src_tcp_src_gtpu_up,
3226 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3227 {ETH_RSS_NONFRAG_IPV4_TCP |
3228 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3229 &hdrs_hint_ipv4_src_tcp_dst_gtpu_up,
3230 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3231 {ETH_RSS_NONFRAG_IPV4_TCP |
3232 ETH_RSS_L3_SRC_ONLY,
3233 &hdrs_hint_ipv4_src_tcp_gtpu_up,
3234 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3235 {ETH_RSS_NONFRAG_IPV4_TCP |
3236 ETH_RSS_L4_SRC_ONLY,
3237 &hdrs_hint_ipv4_tcp_src_gtpu_up,
3238 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3239 {ETH_RSS_NONFRAG_IPV4_TCP |
3240 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3241 &hdrs_hint_ipv4_dst_tcp_src_gtpu_up,
3242 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3243 {ETH_RSS_NONFRAG_IPV4_TCP |
3244 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3245 &hdrs_hint_ipv4_dst_tcp_dst_gtpu_up,
3246 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3247 {ETH_RSS_NONFRAG_IPV4_TCP |
3248 ETH_RSS_L3_DST_ONLY,
3249 &hdrs_hint_ipv4_dst_tcp_gtpu_up,
3250 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3251 {ETH_RSS_NONFRAG_IPV4_TCP |
3252 ETH_RSS_L4_DST_ONLY,
3253 &hdrs_hint_ipv4_tcp_dst_gtpu_up,
3254 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3255 {ETH_RSS_NONFRAG_IPV4_TCP,
3256 &hdrs_hint_ipv4_tcp_gtpu_up,
3257 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
3258 /* IPv6 GTPU EH UP IPv6 TCP */
3259 {ETH_RSS_NONFRAG_IPV6_TCP |
3260 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3261 &hdrs_hint_ipv6_src_tcp_src_gtpu_up,
3262 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3263 {ETH_RSS_NONFRAG_IPV6_TCP |
3264 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3265 &hdrs_hint_ipv6_src_tcp_dst_gtpu_up,
3266 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3267 {ETH_RSS_NONFRAG_IPV6_TCP |
3268 ETH_RSS_L3_SRC_ONLY,
3269 &hdrs_hint_ipv6_src_tcp_gtpu_up,
3270 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3271 {ETH_RSS_NONFRAG_IPV6_TCP |
3272 ETH_RSS_L4_SRC_ONLY,
3273 &hdrs_hint_ipv6_tcp_src_gtpu_up,
3274 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3275 {ETH_RSS_NONFRAG_IPV6_TCP |
3276 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3277 &hdrs_hint_ipv6_dst_tcp_src_gtpu_up,
3278 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3279 {ETH_RSS_NONFRAG_IPV6_TCP |
3280 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3281 &hdrs_hint_ipv6_dst_tcp_dst_gtpu_up,
3282 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3283 {ETH_RSS_NONFRAG_IPV6_TCP |
3284 ETH_RSS_L3_DST_ONLY,
3285 &hdrs_hint_ipv6_dst_tcp_gtpu_up,
3286 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3287 {ETH_RSS_NONFRAG_IPV6_TCP |
3288 ETH_RSS_L4_DST_ONLY,
3289 &hdrs_hint_ipv6_tcp_dst_gtpu_up,
3290 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3291 {ETH_RSS_NONFRAG_IPV6_TCP,
3292 &hdrs_hint_ipv6_tcp_gtpu_up,
3293 IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
3295 /* IPv4 GTPU EH DWN IPv4 */
3297 ETH_RSS_L3_SRC_ONLY,
3298 &hdrs_hint_ipv4_src_gtpu_dwn,
3299 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
3301 ETH_RSS_L3_DST_ONLY,
3302 &hdrs_hint_ipv4_dst_gtpu_dwn,
3303 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
3305 &hdrs_hint_ipv4_gtpu_dwn,
3306 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
3307 /* IPv4 GTPU EH DWN IPv6 */
3309 ETH_RSS_L3_SRC_ONLY,
3310 &hdrs_hint_ipv6_src_gtpu_dwn,
3311 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6},
3313 ETH_RSS_L3_DST_ONLY,
3314 &hdrs_hint_ipv6_dst_gtpu_dwn,
3315 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6},
3317 &hdrs_hint_ipv6_gtpu_dwn,
3318 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6},
3319 /* IPv6 GTPU EH DWN IPv4 */
3321 ETH_RSS_L3_SRC_ONLY,
3322 &hdrs_hint_ipv4_src_gtpu_dwn,
3323 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
3325 ETH_RSS_L3_DST_ONLY,
3326 &hdrs_hint_ipv4_dst_gtpu_dwn,
3327 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
3329 &hdrs_hint_ipv4_gtpu_dwn,
3330 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
3331 /* IPv6 GTPU EH DWN IPv6 */
3333 ETH_RSS_L3_SRC_ONLY,
3334 &hdrs_hint_ipv6_src_gtpu_dwn,
3335 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6},
3337 ETH_RSS_L3_DST_ONLY,
3338 &hdrs_hint_ipv6_dst_gtpu_dwn,
3339 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6},
3341 &hdrs_hint_ipv6_gtpu_dwn,
3342 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6},
3343 /* IPv4 GTPU EH DWN IPv4 UDP */
3344 {ETH_RSS_NONFRAG_IPV4_UDP |
3345 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3346 &hdrs_hint_ipv4_src_udp_src_gtpu_dwn,
3347 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3348 {ETH_RSS_NONFRAG_IPV4_UDP |
3349 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3350 &hdrs_hint_ipv4_src_udp_dst_gtpu_dwn,
3351 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3352 {ETH_RSS_NONFRAG_IPV4_UDP |
3353 ETH_RSS_L3_SRC_ONLY,
3354 &hdrs_hint_ipv4_src_udp_gtpu_dwn,
3355 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3356 {ETH_RSS_NONFRAG_IPV4_UDP |
3357 ETH_RSS_L4_SRC_ONLY,
3358 &hdrs_hint_ipv4_udp_src_gtpu_dwn,
3359 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3360 {ETH_RSS_NONFRAG_IPV4_UDP |
3361 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3362 &hdrs_hint_ipv4_dst_udp_src_gtpu_dwn,
3363 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3364 {ETH_RSS_NONFRAG_IPV4_UDP |
3365 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3366 &hdrs_hint_ipv4_dst_udp_dst_gtpu_dwn,
3367 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3368 {ETH_RSS_NONFRAG_IPV4_UDP |
3369 ETH_RSS_L3_DST_ONLY,
3370 &hdrs_hint_ipv4_dst_udp_gtpu_dwn,
3371 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3372 {ETH_RSS_NONFRAG_IPV4_UDP |
3373 ETH_RSS_L4_DST_ONLY,
3374 &hdrs_hint_ipv4_udp_dst_gtpu_dwn,
3375 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3376 {ETH_RSS_NONFRAG_IPV4_UDP,
3377 &hdrs_hint_ipv4_udp_gtpu_dwn,
3378 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3379 /* IPv4 GTPU EH DWN IPv6 UDP */
3380 {ETH_RSS_NONFRAG_IPV6_UDP |
3381 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3382 &hdrs_hint_ipv6_src_udp_src_gtpu_dwn,
3383 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3384 {ETH_RSS_NONFRAG_IPV6_UDP |
3385 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3386 &hdrs_hint_ipv6_src_udp_dst_gtpu_dwn,
3387 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3388 {ETH_RSS_NONFRAG_IPV6_UDP |
3389 ETH_RSS_L3_SRC_ONLY,
3390 &hdrs_hint_ipv6_src_udp_gtpu_dwn,
3391 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3392 {ETH_RSS_NONFRAG_IPV6_UDP |
3393 ETH_RSS_L4_SRC_ONLY,
3394 &hdrs_hint_ipv6_udp_src_gtpu_dwn,
3395 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3396 {ETH_RSS_NONFRAG_IPV6_UDP |
3397 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3398 &hdrs_hint_ipv6_dst_udp_src_gtpu_dwn,
3399 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3400 {ETH_RSS_NONFRAG_IPV6_UDP |
3401 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3402 &hdrs_hint_ipv6_dst_udp_dst_gtpu_dwn,
3403 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3404 {ETH_RSS_NONFRAG_IPV6_UDP |
3405 ETH_RSS_L3_DST_ONLY,
3406 &hdrs_hint_ipv6_dst_udp_gtpu_dwn,
3407 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3408 {ETH_RSS_NONFRAG_IPV6_UDP |
3409 ETH_RSS_L4_DST_ONLY,
3410 &hdrs_hint_ipv6_udp_dst_gtpu_dwn,
3411 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3412 {ETH_RSS_NONFRAG_IPV6_UDP,
3413 &hdrs_hint_ipv6_udp_gtpu_dwn,
3414 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3415 /* IPv6 GTPU EH DWN IPv4 UDP */
3416 {ETH_RSS_NONFRAG_IPV4_UDP |
3417 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3418 &hdrs_hint_ipv4_src_udp_src_gtpu_dwn,
3419 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3420 {ETH_RSS_NONFRAG_IPV4_UDP |
3421 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3422 &hdrs_hint_ipv4_src_udp_dst_gtpu_dwn,
3423 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3424 {ETH_RSS_NONFRAG_IPV4_UDP |
3425 ETH_RSS_L3_SRC_ONLY,
3426 &hdrs_hint_ipv4_src_udp_gtpu_dwn,
3427 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3428 {ETH_RSS_NONFRAG_IPV4_UDP |
3429 ETH_RSS_L4_SRC_ONLY,
3430 &hdrs_hint_ipv4_udp_src_gtpu_dwn,
3431 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3432 {ETH_RSS_NONFRAG_IPV4_UDP |
3433 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3434 &hdrs_hint_ipv4_dst_udp_src_gtpu_dwn,
3435 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3436 {ETH_RSS_NONFRAG_IPV4_UDP |
3437 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3438 &hdrs_hint_ipv4_dst_udp_dst_gtpu_dwn,
3439 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3440 {ETH_RSS_NONFRAG_IPV4_UDP |
3441 ETH_RSS_L3_DST_ONLY,
3442 &hdrs_hint_ipv4_dst_udp_gtpu_dwn,
3443 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3444 {ETH_RSS_NONFRAG_IPV4_UDP |
3445 ETH_RSS_L4_DST_ONLY,
3446 &hdrs_hint_ipv4_udp_dst_gtpu_dwn,
3447 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3448 {ETH_RSS_NONFRAG_IPV4_UDP,
3449 &hdrs_hint_ipv4_udp_gtpu_dwn,
3450 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
3451 /* IPv6 GTPU EH DWN IPv6 UDP */
3452 {ETH_RSS_NONFRAG_IPV6_UDP |
3453 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3454 &hdrs_hint_ipv6_src_udp_src_gtpu_dwn,
3455 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3456 {ETH_RSS_NONFRAG_IPV6_UDP |
3457 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3458 &hdrs_hint_ipv6_src_udp_dst_gtpu_dwn,
3459 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3460 {ETH_RSS_NONFRAG_IPV6_UDP |
3461 ETH_RSS_L3_SRC_ONLY,
3462 &hdrs_hint_ipv6_src_udp_gtpu_dwn,
3463 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3464 {ETH_RSS_NONFRAG_IPV6_UDP |
3465 ETH_RSS_L4_SRC_ONLY,
3466 &hdrs_hint_ipv6_udp_src_gtpu_dwn,
3467 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3468 {ETH_RSS_NONFRAG_IPV6_UDP |
3469 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3470 &hdrs_hint_ipv6_dst_udp_src_gtpu_dwn,
3471 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3472 {ETH_RSS_NONFRAG_IPV6_UDP |
3473 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3474 &hdrs_hint_ipv6_dst_udp_dst_gtpu_dwn,
3475 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3476 {ETH_RSS_NONFRAG_IPV6_UDP |
3477 ETH_RSS_L3_DST_ONLY,
3478 &hdrs_hint_ipv6_dst_udp_gtpu_dwn,
3479 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3480 {ETH_RSS_NONFRAG_IPV6_UDP |
3481 ETH_RSS_L4_DST_ONLY,
3482 &hdrs_hint_ipv6_udp_dst_gtpu_dwn,
3483 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3484 {ETH_RSS_NONFRAG_IPV6_UDP,
3485 &hdrs_hint_ipv6_udp_gtpu_dwn,
3486 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
3487 /* IPv4 GTPU EH DWN IPv4 TCP */
3488 {ETH_RSS_NONFRAG_IPV4_TCP |
3489 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3490 &hdrs_hint_ipv4_src_tcp_src_gtpu_dwn,
3491 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3492 {ETH_RSS_NONFRAG_IPV4_TCP |
3493 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3494 &hdrs_hint_ipv4_src_tcp_dst_gtpu_dwn,
3495 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3496 {ETH_RSS_NONFRAG_IPV4_TCP |
3497 ETH_RSS_L3_SRC_ONLY,
3498 &hdrs_hint_ipv4_src_tcp_gtpu_dwn,
3499 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3500 {ETH_RSS_NONFRAG_IPV4_TCP |
3501 ETH_RSS_L4_SRC_ONLY,
3502 &hdrs_hint_ipv4_tcp_src_gtpu_dwn,
3503 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3504 {ETH_RSS_NONFRAG_IPV4_TCP |
3505 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3506 &hdrs_hint_ipv4_dst_tcp_src_gtpu_dwn,
3507 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3508 {ETH_RSS_NONFRAG_IPV4_TCP |
3509 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3510 &hdrs_hint_ipv4_dst_tcp_dst_gtpu_dwn,
3511 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3512 {ETH_RSS_NONFRAG_IPV4_TCP |
3513 ETH_RSS_L3_DST_ONLY,
3514 &hdrs_hint_ipv4_dst_tcp_gtpu_dwn,
3515 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3516 {ETH_RSS_NONFRAG_IPV4_TCP |
3517 ETH_RSS_L4_DST_ONLY,
3518 &hdrs_hint_ipv4_tcp_dst_gtpu_dwn,
3519 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3520 {ETH_RSS_NONFRAG_IPV4_TCP,
3521 &hdrs_hint_ipv4_tcp_gtpu_dwn,
3522 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3523 /* IPv4 GTPU EH DWN IPv6 TCP */
3524 {ETH_RSS_NONFRAG_IPV6_TCP |
3525 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3526 &hdrs_hint_ipv6_src_tcp_src_gtpu_dwn,
3527 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3528 {ETH_RSS_NONFRAG_IPV6_TCP |
3529 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3530 &hdrs_hint_ipv6_src_tcp_dst_gtpu_dwn,
3531 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3532 {ETH_RSS_NONFRAG_IPV6_TCP |
3533 ETH_RSS_L3_SRC_ONLY,
3534 &hdrs_hint_ipv6_src_tcp_gtpu_dwn,
3535 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3536 {ETH_RSS_NONFRAG_IPV6_TCP |
3537 ETH_RSS_L4_SRC_ONLY,
3538 &hdrs_hint_ipv6_tcp_src_gtpu_dwn,
3539 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3540 {ETH_RSS_NONFRAG_IPV6_TCP |
3541 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3542 &hdrs_hint_ipv6_dst_tcp_src_gtpu_dwn,
3543 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3544 {ETH_RSS_NONFRAG_IPV6_TCP |
3545 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3546 &hdrs_hint_ipv6_dst_tcp_dst_gtpu_dwn,
3547 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3548 {ETH_RSS_NONFRAG_IPV6_TCP |
3549 ETH_RSS_L3_DST_ONLY,
3550 &hdrs_hint_ipv6_dst_tcp_gtpu_dwn,
3551 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3552 {ETH_RSS_NONFRAG_IPV6_TCP |
3553 ETH_RSS_L4_DST_ONLY,
3554 &hdrs_hint_ipv6_tcp_dst_gtpu_dwn,
3555 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3556 {ETH_RSS_NONFRAG_IPV6_TCP,
3557 &hdrs_hint_ipv6_tcp_gtpu_dwn,
3558 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3559 /* IPv6 GTPU EH DWN IPv4 TCP */
3560 {ETH_RSS_NONFRAG_IPV4_TCP |
3561 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3562 &hdrs_hint_ipv4_src_tcp_src_gtpu_dwn,
3563 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3564 {ETH_RSS_NONFRAG_IPV4_TCP |
3565 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3566 &hdrs_hint_ipv4_src_tcp_dst_gtpu_dwn,
3567 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3568 {ETH_RSS_NONFRAG_IPV4_TCP |
3569 ETH_RSS_L3_SRC_ONLY,
3570 &hdrs_hint_ipv4_src_tcp_gtpu_dwn,
3571 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3572 {ETH_RSS_NONFRAG_IPV4_TCP |
3573 ETH_RSS_L4_SRC_ONLY,
3574 &hdrs_hint_ipv4_tcp_src_gtpu_dwn,
3575 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3576 {ETH_RSS_NONFRAG_IPV4_TCP |
3577 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3578 &hdrs_hint_ipv4_dst_tcp_src_gtpu_dwn,
3579 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3580 {ETH_RSS_NONFRAG_IPV4_TCP |
3581 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3582 &hdrs_hint_ipv4_dst_tcp_dst_gtpu_dwn,
3583 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3584 {ETH_RSS_NONFRAG_IPV4_TCP |
3585 ETH_RSS_L3_DST_ONLY,
3586 &hdrs_hint_ipv4_dst_tcp_gtpu_dwn,
3587 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3588 {ETH_RSS_NONFRAG_IPV4_TCP |
3589 ETH_RSS_L4_DST_ONLY,
3590 &hdrs_hint_ipv4_tcp_dst_gtpu_dwn,
3591 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3592 {ETH_RSS_NONFRAG_IPV4_TCP,
3593 &hdrs_hint_ipv4_tcp_gtpu_dwn,
3594 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
3595 /* IPv6 GTPU EH DWN IPv6 TCP */
3596 {ETH_RSS_NONFRAG_IPV6_TCP |
3597 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
3598 &hdrs_hint_ipv6_src_tcp_src_gtpu_dwn,
3599 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3600 {ETH_RSS_NONFRAG_IPV6_TCP |
3601 ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
3602 &hdrs_hint_ipv6_src_tcp_dst_gtpu_dwn,
3603 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3604 {ETH_RSS_NONFRAG_IPV6_TCP |
3605 ETH_RSS_L3_SRC_ONLY,
3606 &hdrs_hint_ipv6_src_tcp_gtpu_dwn,
3607 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3608 {ETH_RSS_NONFRAG_IPV6_TCP |
3609 ETH_RSS_L4_SRC_ONLY,
3610 &hdrs_hint_ipv6_tcp_src_gtpu_dwn,
3611 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3612 {ETH_RSS_NONFRAG_IPV6_TCP |
3613 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
3614 &hdrs_hint_ipv6_dst_tcp_src_gtpu_dwn,
3615 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3616 {ETH_RSS_NONFRAG_IPV6_TCP |
3617 ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
3618 &hdrs_hint_ipv6_dst_tcp_dst_gtpu_dwn,
3619 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3620 {ETH_RSS_NONFRAG_IPV6_TCP |
3621 ETH_RSS_L3_DST_ONLY,
3622 &hdrs_hint_ipv6_dst_tcp_gtpu_dwn,
3623 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3624 {ETH_RSS_NONFRAG_IPV6_TCP |
3625 ETH_RSS_L4_DST_ONLY,
3626 &hdrs_hint_ipv6_tcp_dst_gtpu_dwn,
3627 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3628 {ETH_RSS_NONFRAG_IPV6_TCP,
3629 &hdrs_hint_ipv6_tcp_gtpu_dwn,
3630 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
3633 struct virtchnl_proto_hdrs *iavf_hash_default_hdrs[] = {
3635 &hdrs_hint_ipv4_udp,
3636 &hdrs_hint_ipv4_tcp,
3637 &hdrs_hint_ipv4_sctp,
3639 &hdrs_hint_ipv6_udp,
3640 &hdrs_hint_ipv6_tcp,
3641 &hdrs_hint_ipv6_sctp,
3644 static struct iavf_flow_engine iavf_hash_engine = {
3645 .init = iavf_hash_init,
3646 .create = iavf_hash_create,
3647 .destroy = iavf_hash_destroy,
3648 .uninit = iavf_hash_uninit,
3649 .free = iavf_hash_free,
3650 .type = IAVF_FLOW_ENGINE_HASH,
3653 /* Register parser for comms package. */
3654 static struct iavf_flow_parser iavf_hash_parser = {
3655 .engine = &iavf_hash_engine,
3656 .array = iavf_hash_pattern_list,
3657 .array_len = RTE_DIM(iavf_hash_pattern_list),
3658 .parse_pattern_action = iavf_hash_parse_pattern_action,
3659 .stage = IAVF_FLOW_STAGE_RSS,
3663 iavf_hash_default_set(struct iavf_adapter *ad, bool add)
3665 struct virtchnl_rss_cfg *rss_cfg;
3668 rss_cfg = rte_zmalloc("iavf rss rule",
3669 sizeof(struct virtchnl_rss_cfg), 0);
3673 for (i = 0; i < RTE_DIM(iavf_hash_default_hdrs); i++) {
3674 rss_cfg->proto_hdrs = *iavf_hash_default_hdrs[i];
3675 rss_cfg->rss_algorithm = VIRTCHNL_RSS_ALG_TOEPLITZ_ASYMMETRIC;
3677 iavf_add_del_rss_cfg(ad, rss_cfg, add);
3683 RTE_INIT(iavf_hash_engine_init)
3685 struct iavf_flow_engine *engine = &iavf_hash_engine;
3687 iavf_register_flow_engine(engine);
3691 iavf_hash_init(struct iavf_adapter *ad)
3693 struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(ad);
3694 struct iavf_flow_parser *parser;
3700 if (!(vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_ADV_RSS_PF))
3703 parser = &iavf_hash_parser;
3705 ret = iavf_register_parser(parser, ad);
3707 PMD_DRV_LOG(ERR, "fail to register hash parser");
3711 ret = iavf_hash_default_set(ad, true);
3713 PMD_DRV_LOG(ERR, "fail to set default RSS");
3714 iavf_unregister_parser(parser, ad);
3721 iavf_hash_parse_pattern(struct iavf_pattern_match_item *pattern_match_item,
3722 const struct rte_flow_item pattern[], uint64_t *phint,
3723 struct rte_flow_error *error)
3725 const struct rte_flow_item *item = pattern;
3726 const struct rte_flow_item_gtp_psc *psc;
3729 for (item = pattern; item->type != RTE_FLOW_ITEM_TYPE_END; item++) {
3731 rte_flow_error_set(error, EINVAL,
3732 RTE_FLOW_ERROR_TYPE_ITEM, item,
3733 "Not support range");
3737 switch (item->type) {
3738 case RTE_FLOW_ITEM_TYPE_IPV6:
3741 case RTE_FLOW_ITEM_TYPE_GTPU:
3742 *phint |= (outer_ipv6) ?
3743 IAVF_PHINT_IPV6_GTPU_IP :
3744 IAVF_PHINT_IPV4_GTPU_IP;
3746 case RTE_FLOW_ITEM_TYPE_GTP_PSC:
3748 *phint &= (outer_ipv6) ?
3749 ~IAVF_PHINT_IPV6_GTPU_IP :
3750 ~IAVF_PHINT_IPV4_GTPU_IP;
3752 *phint |= (outer_ipv6) ?
3753 IAVF_PHINT_IPV6_GTPU_EH :
3754 IAVF_PHINT_IPV4_GTPU_EH;
3755 else if (psc->pdu_type == IAVF_GTPU_EH_UPLINK)
3756 *phint |= (outer_ipv6) ?
3757 IAVF_PHINT_IPV6_GTPU_EH_UPLINK :
3758 IAVF_PHINT_IPV4_GTPU_EH_UPLINK;
3759 else if (psc->pdu_type == IAVF_GTPU_EH_DWNLINK)
3760 *phint |= (outer_ipv6) ?
3761 IAVF_PHINT_IPV6_GTPU_EH_DWNLINK :
3762 IAVF_PHINT_IPV4_GTPU_EH_DWNLINK;
3769 /* update and restore pattern hint */
3770 *phint |= ((struct iavf_pattern_match_type *)
3771 (pattern_match_item->meta))->pattern_hint;
3777 iavf_hash_parse_action(const struct rte_flow_action actions[],
3778 uint64_t pattern_hint, void **meta,
3779 struct rte_flow_error *error)
3781 struct iavf_rss_meta *rss_meta = (struct iavf_rss_meta *)*meta;
3782 struct iavf_hash_match_type *hash_map_list;
3783 enum rte_flow_action_type action_type;
3784 const struct rte_flow_action_rss *rss;
3785 const struct rte_flow_action *action;
3787 bool item_found = false;
3791 /* Supported action is RSS. */
3792 for (action = actions; action->type !=
3793 RTE_FLOW_ACTION_TYPE_END; action++) {
3794 action_type = action->type;
3795 switch (action_type) {
3796 case RTE_FLOW_ACTION_TYPE_RSS:
3798 rss_type = rss->types;
3801 RTE_ETH_HASH_FUNCTION_SIMPLE_XOR){
3802 rss_meta->rss_algorithm =
3803 VIRTCHNL_RSS_ALG_XOR_ASYMMETRIC;
3804 return rte_flow_error_set(error, ENOTSUP,
3805 RTE_FLOW_ERROR_TYPE_ACTION, action,
3806 "function simple_xor is not supported");
3807 } else if (rss->func ==
3808 RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ) {
3809 rss_meta->rss_algorithm =
3810 VIRTCHNL_RSS_ALG_TOEPLITZ_SYMMETRIC;
3812 rss_meta->rss_algorithm =
3813 VIRTCHNL_RSS_ALG_TOEPLITZ_ASYMMETRIC;
3817 return rte_flow_error_set(error, ENOTSUP,
3818 RTE_FLOW_ERROR_TYPE_ACTION, action,
3819 "a nonzero RSS encapsulation level is not supported");
3822 return rte_flow_error_set(error, ENOTSUP,
3823 RTE_FLOW_ERROR_TYPE_ACTION, action,
3824 "a nonzero RSS key_len is not supported");
3827 return rte_flow_error_set(error, ENOTSUP,
3828 RTE_FLOW_ERROR_TYPE_ACTION, action,
3829 "a non-NULL RSS queue is not supported");
3832 * Check simultaneous use of SRC_ONLY and DST_ONLY
3833 * of the same level.
3835 rss_type = rte_eth_rss_hf_refine(rss_type);
3837 if ((pattern_hint & IAVF_PHINT_IPV4_GTPU_IP) ||
3838 (pattern_hint & IAVF_PHINT_IPV4_GTPU_EH) ||
3839 (pattern_hint & IAVF_PHINT_IPV4_GTPU_EH_UPLINK) ||
3840 (pattern_hint & IAVF_PHINT_IPV4_GTPU_EH_DWNLINK) ||
3841 (pattern_hint & IAVF_PHINT_IPV6_GTPU_IP) ||
3842 (pattern_hint & IAVF_PHINT_IPV6_GTPU_EH) ||
3843 (pattern_hint & IAVF_PHINT_IPV6_GTPU_EH_UPLINK) ||
3844 (pattern_hint & IAVF_PHINT_IPV6_GTPU_EH_DWNLINK)) {
3845 hash_map_list = iavf_gtpu_hash_map_list;
3846 mlist_len = RTE_DIM(iavf_gtpu_hash_map_list);
3848 hash_map_list = iavf_hash_map_list;
3849 mlist_len = RTE_DIM(iavf_hash_map_list);
3852 /* Find matched proto hdrs according to hash type. */
3853 for (i = 0; i < mlist_len; i++) {
3854 struct iavf_hash_match_type *ht_map =
3856 if (rss_type == ht_map->hash_type &&
3857 pattern_hint == ht_map->pattern_hint) {
3858 rss_meta->proto_hdrs =
3866 return rte_flow_error_set(error, ENOTSUP,
3867 RTE_FLOW_ERROR_TYPE_ACTION, action,
3868 "Not supported flow");
3871 case RTE_FLOW_ACTION_TYPE_END:
3875 rte_flow_error_set(error, EINVAL,
3876 RTE_FLOW_ERROR_TYPE_ACTION, action,
3886 iavf_hash_parse_pattern_action(__rte_unused struct iavf_adapter *ad,
3887 struct iavf_pattern_match_item *array,
3889 const struct rte_flow_item pattern[],
3890 const struct rte_flow_action actions[],
3892 struct rte_flow_error *error)
3894 struct iavf_pattern_match_item *pattern_match_item;
3895 struct iavf_rss_meta *rss_meta_ptr;
3896 uint64_t phint = IAVF_PHINT_NONE;
3899 rss_meta_ptr = rte_zmalloc(NULL, sizeof(*rss_meta_ptr), 0);
3900 if (!rss_meta_ptr) {
3901 rte_flow_error_set(error, EINVAL,
3902 RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
3903 "No memory for rss_meta_ptr");
3907 /* Check rss supported pattern and find matched pattern. */
3908 pattern_match_item =
3909 iavf_search_pattern_match_item(pattern, array, array_len,
3911 if (!pattern_match_item) {
3916 ret = iavf_hash_parse_pattern(pattern_match_item, pattern, &phint,
3921 ret = iavf_hash_parse_action(actions, phint,
3922 (void **)&rss_meta_ptr, error);
3926 *meta = rss_meta_ptr;
3928 rte_free(rss_meta_ptr);
3930 rte_free(pattern_match_item);
3936 iavf_hash_create(__rte_unused struct iavf_adapter *ad,
3937 __rte_unused struct rte_flow *flow, void *meta,
3938 __rte_unused struct rte_flow_error *error)
3940 struct iavf_rss_meta *rss_meta = (struct iavf_rss_meta *)meta;
3941 struct virtchnl_rss_cfg *rss_cfg;
3944 rss_cfg = rte_zmalloc("iavf rss rule",
3945 sizeof(struct virtchnl_rss_cfg), 0);
3947 rte_flow_error_set(error, EINVAL,
3948 RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
3949 "No memory for rss rule");
3953 rss_cfg->proto_hdrs = *rss_meta->proto_hdrs;
3954 rss_cfg->rss_algorithm = rss_meta->rss_algorithm;
3956 ret = iavf_add_del_rss_cfg(ad, rss_cfg, true);
3958 flow->rule = rss_cfg;
3960 PMD_DRV_LOG(ERR, "fail to add RSS configure");
3961 rte_flow_error_set(error, -ret,
3962 RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
3963 "Failed to add rss rule.");
3974 iavf_hash_destroy(__rte_unused struct iavf_adapter *ad,
3975 struct rte_flow *flow,
3976 __rte_unused struct rte_flow_error *error)
3978 struct virtchnl_rss_cfg *rss_cfg;
3981 rss_cfg = (struct virtchnl_rss_cfg *)flow->rule;
3983 ret = iavf_add_del_rss_cfg(ad, rss_cfg, false);
3985 PMD_DRV_LOG(ERR, "fail to del RSS configure");
3986 rte_flow_error_set(error, -ret,
3987 RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
3988 "Failed to delete rss rule.");
3995 iavf_hash_uninit(struct iavf_adapter *ad)
3997 if (iavf_hash_default_set(ad, false))
3998 PMD_DRV_LOG(ERR, "fail to delete default RSS");
4000 iavf_unregister_parser(&iavf_hash_parser, ad);
4004 iavf_hash_free(struct rte_flow *flow)
4006 rte_free(flow->rule);