Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause
2 : : * Copyright(c) 2015-2020 Beijing WangXun Technology Co., Ltd.
3 : : */
4 : :
5 : : #include <rte_mbuf.h>
6 : : #include <rte_memory.h>
7 : :
8 : : #include "base/txgbe_type.h"
9 : : #include "txgbe_ptypes.h"
10 : :
11 : : /* The txgbe_ptype_lookup is used to convert from the 8-bit ptid in the
12 : : * hardware to a bit-field that can be used by SW to more easily determine the
13 : : * packet type.
14 : : *
15 : : * Macros are used to shorten the table lines and make this table human
16 : : * readable.
17 : : *
18 : : * We store the PTYPE in the top byte of the bit field - this is just so that
19 : : * we can check that the table doesn't have a row missing, as the index into
20 : : * the table should be the PTYPE.
21 : : *
22 : : * Typical work flow:
23 : : *
24 : : * IF NOT txgbe_ptype_lookup[ptid].known
25 : : * THEN
26 : : * Packet is unknown
27 : : * ELSE IF txgbe_ptype_lookup[ptid].mac == TXGBE_DEC_PTYPE_MAC_IP
28 : : * Use the rest of the fields to look at the tunnels, inner protocols, etc
29 : : * ELSE
30 : : * Use the enum txgbe_l2_ptypes to decode the packet type
31 : : * ENDIF
32 : : */
33 : : #define TPTE(ptid, l2, l3, l4, tun, el2, el3, el4) \
34 : : [ptid] = (RTE_PTYPE_L2_##l2 | \
35 : : RTE_PTYPE_L3_##l3 | \
36 : : RTE_PTYPE_L4_##l4 | \
37 : : RTE_PTYPE_TUNNEL_##tun | \
38 : : RTE_PTYPE_INNER_L2_##el2 | \
39 : : RTE_PTYPE_INNER_L3_##el3 | \
40 : : RTE_PTYPE_INNER_L4_##el4)
41 : :
42 : : #define RTE_PTYPE_L2_NONE 0
43 : : #define RTE_PTYPE_L3_NONE 0
44 : : #define RTE_PTYPE_L4_NONE 0
45 : : #define RTE_PTYPE_TUNNEL_NONE 0
46 : : #define RTE_PTYPE_INNER_L2_NONE 0
47 : : #define RTE_PTYPE_INNER_L3_NONE 0
48 : : #define RTE_PTYPE_INNER_L4_NONE 0
49 : :
50 : : static u32 txgbe_ptype_lookup[TXGBE_PTID_MAX] __rte_cache_aligned = {
51 : : /* L2:0-3 L3:4-7 L4:8-11 TUN:12-15 EL2:16-19 EL3:20-23 EL2:24-27 */
52 : : /* L2: ETH */
53 : : TPTE(0x10, ETHER, NONE, NONE, NONE, NONE, NONE, NONE),
54 : : TPTE(0x11, ETHER, NONE, NONE, NONE, NONE, NONE, NONE),
55 : : TPTE(0x12, ETHER_TIMESYNC, NONE, NONE, NONE, NONE, NONE, NONE),
56 : : TPTE(0x13, ETHER_FIP, NONE, NONE, NONE, NONE, NONE, NONE),
57 : : TPTE(0x14, ETHER_LLDP, NONE, NONE, NONE, NONE, NONE, NONE),
58 : : TPTE(0x15, ETHER_CNM, NONE, NONE, NONE, NONE, NONE, NONE),
59 : : TPTE(0x16, ETHER_EAPOL, NONE, NONE, NONE, NONE, NONE, NONE),
60 : : TPTE(0x17, ETHER_ARP, NONE, NONE, NONE, NONE, NONE, NONE),
61 : : /* L2: Ethertype Filter */
62 : : TPTE(0x18, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
63 : : TPTE(0x19, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
64 : : TPTE(0x1A, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
65 : : TPTE(0x1B, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
66 : : TPTE(0x1C, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
67 : : TPTE(0x1D, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
68 : : TPTE(0x1E, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
69 : : TPTE(0x1F, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
70 : : /* L3: IP */
71 : : TPTE(0x20, ETHER, IPV4, NONFRAG, NONE, NONE, NONE, NONE),
72 : : TPTE(0x21, ETHER, IPV4, FRAG, NONE, NONE, NONE, NONE),
73 : : TPTE(0x22, ETHER, IPV4, NONFRAG, NONE, NONE, NONE, NONE),
74 : : TPTE(0x23, ETHER, IPV4, UDP, NONE, NONE, NONE, NONE),
75 : : TPTE(0x24, ETHER, IPV4, TCP, NONE, NONE, NONE, NONE),
76 : : TPTE(0x25, ETHER, IPV4, SCTP, NONE, NONE, NONE, NONE),
77 : : TPTE(0x29, ETHER, IPV6, FRAG, NONE, NONE, NONE, NONE),
78 : : TPTE(0x2A, ETHER, IPV6, NONFRAG, NONE, NONE, NONE, NONE),
79 : : TPTE(0x2B, ETHER, IPV6, UDP, NONE, NONE, NONE, NONE),
80 : : TPTE(0x2C, ETHER, IPV6, TCP, NONE, NONE, NONE, NONE),
81 : : TPTE(0x2D, ETHER, IPV6, SCTP, NONE, NONE, NONE, NONE),
82 : : /* L2: FCoE */
83 : : TPTE(0x30, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
84 : : TPTE(0x31, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
85 : : TPTE(0x32, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
86 : : TPTE(0x33, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
87 : : TPTE(0x34, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
88 : : TPTE(0x35, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
89 : : TPTE(0x36, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
90 : : TPTE(0x37, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
91 : : TPTE(0x38, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
92 : : TPTE(0x39, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
93 : : /* IPv4 -> IPv4/IPv6 */
94 : : TPTE(0x81, ETHER, IPV4, NONE, IP, NONE, IPV4, FRAG),
95 : : TPTE(0x82, ETHER, IPV4, NONE, IP, NONE, IPV4, NONFRAG),
96 : : TPTE(0x83, ETHER, IPV4, NONE, IP, NONE, IPV4, UDP),
97 : : TPTE(0x84, ETHER, IPV4, NONE, IP, NONE, IPV4, TCP),
98 : : TPTE(0x85, ETHER, IPV4, NONE, IP, NONE, IPV4, SCTP),
99 : : TPTE(0x89, ETHER, IPV4, NONE, IP, NONE, IPV6, FRAG),
100 : : TPTE(0x8A, ETHER, IPV4, NONE, IP, NONE, IPV6, NONFRAG),
101 : : TPTE(0x8B, ETHER, IPV4, NONE, IP, NONE, IPV6, UDP),
102 : : TPTE(0x8C, ETHER, IPV4, NONE, IP, NONE, IPV6, TCP),
103 : : TPTE(0x8D, ETHER, IPV4, NONE, IP, NONE, IPV6, SCTP),
104 : : /* IPv4 -> GRE/Teredo/VXLAN -> NONE/IPv4/IPv6 */
105 : : TPTE(0x90, ETHER, IPV4, NONE, GRENAT, NONE, NONE, NONE),
106 : : TPTE(0x91, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, FRAG),
107 : : TPTE(0x92, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, NONFRAG),
108 : : TPTE(0x93, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, UDP),
109 : : TPTE(0x94, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, TCP),
110 : : TPTE(0x95, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, SCTP),
111 : : TPTE(0x99, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, FRAG),
112 : : TPTE(0x9A, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, NONFRAG),
113 : : TPTE(0x9B, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, UDP),
114 : : TPTE(0x9C, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, TCP),
115 : : TPTE(0x9D, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, SCTP),
116 : : /* IPv4 -> GRE/Teredo/VXLAN -> MAC -> NONE/IPv4/IPv6 */
117 : : TPTE(0xA0, ETHER, IPV4, NONE, GRENAT, ETHER, NONE, NONE),
118 : : TPTE(0xA1, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, FRAG),
119 : : TPTE(0xA2, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, NONFRAG),
120 : : TPTE(0xA3, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, UDP),
121 : : TPTE(0xA4, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, TCP),
122 : : TPTE(0xA5, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, SCTP),
123 : : TPTE(0xA9, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, FRAG),
124 : : TPTE(0xAA, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, NONFRAG),
125 : : TPTE(0xAB, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, UDP),
126 : : TPTE(0xAC, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, TCP),
127 : : TPTE(0xAD, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, SCTP),
128 : : /* IPv4 -> GRE/Teredo/VXLAN -> MAC+VLAN -> NONE/IPv4/IPv6 */
129 : : TPTE(0xB0, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, NONE, NONE),
130 : : TPTE(0xB1, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, FRAG),
131 : : TPTE(0xB2, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, NONFRAG),
132 : : TPTE(0xB3, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, UDP),
133 : : TPTE(0xB4, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, TCP),
134 : : TPTE(0xB5, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, SCTP),
135 : : TPTE(0xB9, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, FRAG),
136 : : TPTE(0xBA, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, NONFRAG),
137 : : TPTE(0xBB, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, UDP),
138 : : TPTE(0xBC, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, TCP),
139 : : TPTE(0xBD, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, SCTP),
140 : : /* IPv6 -> IPv4/IPv6 */
141 : : TPTE(0xC1, ETHER, IPV6, NONE, IP, NONE, IPV4, FRAG),
142 : : TPTE(0xC2, ETHER, IPV6, NONE, IP, NONE, IPV4, NONFRAG),
143 : : TPTE(0xC3, ETHER, IPV6, NONE, IP, NONE, IPV4, UDP),
144 : : TPTE(0xC4, ETHER, IPV6, NONE, IP, NONE, IPV4, TCP),
145 : : TPTE(0xC5, ETHER, IPV6, NONE, IP, NONE, IPV4, SCTP),
146 : : TPTE(0xC9, ETHER, IPV6, NONE, IP, NONE, IPV6, FRAG),
147 : : TPTE(0xCA, ETHER, IPV6, NONE, IP, NONE, IPV6, NONFRAG),
148 : : TPTE(0xCB, ETHER, IPV6, NONE, IP, NONE, IPV6, UDP),
149 : : TPTE(0xCC, ETHER, IPV6, NONE, IP, NONE, IPV6, TCP),
150 : : TPTE(0xCD, ETHER, IPV6, NONE, IP, NONE, IPV6, SCTP),
151 : : /* IPv6 -> GRE/Teredo/VXLAN -> NONE/IPv4/IPv6 */
152 : : TPTE(0xD0, ETHER, IPV6, NONE, GRENAT, NONE, NONE, NONE),
153 : : TPTE(0xD1, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, FRAG),
154 : : TPTE(0xD2, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, NONFRAG),
155 : : TPTE(0xD3, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, UDP),
156 : : TPTE(0xD4, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, TCP),
157 : : TPTE(0xD5, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, SCTP),
158 : : TPTE(0xD9, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, FRAG),
159 : : TPTE(0xDA, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, NONFRAG),
160 : : TPTE(0xDB, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, UDP),
161 : : TPTE(0xDC, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, TCP),
162 : : TPTE(0xDD, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, SCTP),
163 : : /* IPv6 -> GRE/Teredo/VXLAN -> MAC -> NONE/IPv4/IPv6 */
164 : : TPTE(0xE0, ETHER, IPV6, NONE, GRENAT, ETHER, NONE, NONE),
165 : : TPTE(0xE1, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, FRAG),
166 : : TPTE(0xE2, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, NONFRAG),
167 : : TPTE(0xE3, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, UDP),
168 : : TPTE(0xE4, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, TCP),
169 : : TPTE(0xE5, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, SCTP),
170 : : TPTE(0xE9, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, FRAG),
171 : : TPTE(0xEA, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, NONFRAG),
172 : : TPTE(0xEB, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, UDP),
173 : : TPTE(0xEC, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, TCP),
174 : : TPTE(0xED, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, SCTP),
175 : : /* IPv6 -> GRE/Teredo/VXLAN -> MAC+VLAN -> NONE/IPv4/IPv6 */
176 : : TPTE(0xF0, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, NONE, NONE),
177 : : TPTE(0xF1, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, FRAG),
178 : : TPTE(0xF2, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, NONFRAG),
179 : : TPTE(0xF3, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, UDP),
180 : : TPTE(0xF4, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, TCP),
181 : : TPTE(0xF5, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, SCTP),
182 : : TPTE(0xF9, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, FRAG),
183 : : TPTE(0xFA, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, NONFRAG),
184 : : TPTE(0xFB, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, UDP),
185 : : TPTE(0xFC, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, TCP),
186 : : TPTE(0xFD, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, SCTP),
187 : : };
188 : :
189 : 0 : u32 *txgbe_get_supported_ptypes(void)
190 : : {
191 : : static u32 ptypes[] = {
192 : : /* For non-vec functions,
193 : : * refers to txgbe_rxd_pkt_info_to_pkt_type();
194 : : */
195 : : RTE_PTYPE_L2_ETHER,
196 : : RTE_PTYPE_L3_IPV4,
197 : : RTE_PTYPE_L3_IPV4_EXT,
198 : : RTE_PTYPE_L3_IPV6,
199 : : RTE_PTYPE_L3_IPV6_EXT,
200 : : RTE_PTYPE_L4_SCTP,
201 : : RTE_PTYPE_L4_TCP,
202 : : RTE_PTYPE_L4_UDP,
203 : : RTE_PTYPE_TUNNEL_IP,
204 : : RTE_PTYPE_INNER_L3_IPV6,
205 : : RTE_PTYPE_INNER_L3_IPV6_EXT,
206 : : RTE_PTYPE_INNER_L4_TCP,
207 : : RTE_PTYPE_INNER_L4_UDP,
208 : : RTE_PTYPE_UNKNOWN
209 : : };
210 : :
211 : 0 : return ptypes;
212 : : }
213 : :
214 : : static inline u8
215 : : txgbe_encode_ptype_fcoe(u32 ptype)
216 : : {
217 : : u8 ptid;
218 : :
219 : : UNREFERENCED_PARAMETER(ptype);
220 : : ptid = TXGBE_PTID_PKT_FCOE;
221 : :
222 : : return ptid;
223 : : }
224 : :
225 : : static inline u8
226 : : txgbe_encode_ptype_mac(u32 ptype)
227 : : {
228 : : u8 ptid;
229 : :
230 : : ptid = TXGBE_PTID_PKT_MAC;
231 : :
232 [ # # ]: 0 : switch (ptype & RTE_PTYPE_L2_MASK) {
233 : : case RTE_PTYPE_L2_ETHER_FCOE:
234 : : ptid = txgbe_encode_ptype_fcoe(ptype);
235 : : break;
236 : : case RTE_PTYPE_UNKNOWN:
237 : : break;
238 : : case RTE_PTYPE_L2_ETHER_TIMESYNC:
239 : : ptid |= TXGBE_PTID_TYP_TS;
240 : : break;
241 : : case RTE_PTYPE_L2_ETHER_ARP:
242 : : ptid |= TXGBE_PTID_TYP_ARP;
243 : : break;
244 : : case RTE_PTYPE_L2_ETHER_LLDP:
245 : : ptid |= TXGBE_PTID_TYP_LLDP;
246 : : break;
247 : : default:
248 : : ptid |= TXGBE_PTID_TYP_MAC;
249 : : break;
250 : : }
251 : :
252 : : return ptid;
253 : : }
254 : :
255 : : static inline u8
256 : 0 : txgbe_encode_ptype_ip(u32 ptype)
257 : : {
258 : : u8 ptid;
259 : :
260 : : ptid = TXGBE_PTID_PKT_IP;
261 : :
262 [ # # # ]: 0 : switch (ptype & RTE_PTYPE_L3_MASK) {
263 : : case RTE_PTYPE_L3_IPV4:
264 : : case RTE_PTYPE_L3_IPV4_EXT:
265 : : case RTE_PTYPE_L3_IPV4_EXT_UNKNOWN:
266 : : break;
267 : 0 : case RTE_PTYPE_L3_IPV6:
268 : : case RTE_PTYPE_L3_IPV6_EXT:
269 : : case RTE_PTYPE_L3_IPV6_EXT_UNKNOWN:
270 : : ptid |= TXGBE_PTID_PKT_IPV6;
271 : 0 : break;
272 : : default:
273 : : return txgbe_encode_ptype_mac(ptype);
274 : : }
275 : :
276 [ # # # # : 0 : switch (ptype & RTE_PTYPE_L4_MASK) {
# ]
277 : 0 : case RTE_PTYPE_L4_TCP:
278 : 0 : ptid |= TXGBE_PTID_TYP_TCP;
279 : 0 : break;
280 : 0 : case RTE_PTYPE_L4_UDP:
281 : 0 : ptid |= TXGBE_PTID_TYP_UDP;
282 : 0 : break;
283 : 0 : case RTE_PTYPE_L4_SCTP:
284 : 0 : ptid |= TXGBE_PTID_TYP_SCTP;
285 : 0 : break;
286 : 0 : case RTE_PTYPE_L4_FRAG:
287 : 0 : ptid |= TXGBE_PTID_TYP_IPFRAG;
288 : 0 : break;
289 : 0 : default:
290 : 0 : ptid |= TXGBE_PTID_TYP_IPDATA;
291 : 0 : break;
292 : : }
293 : :
294 : : return ptid;
295 : : }
296 : :
297 : : static inline u8
298 : 0 : txgbe_encode_ptype_tunnel(u32 ptype)
299 : : {
300 : : u8 ptid;
301 : :
302 : : ptid = TXGBE_PTID_PKT_TUN;
303 : :
304 [ # # # ]: 0 : switch (ptype & RTE_PTYPE_L3_MASK) {
305 : : case RTE_PTYPE_L3_IPV4:
306 : : case RTE_PTYPE_L3_IPV4_EXT:
307 : : case RTE_PTYPE_L3_IPV4_EXT_UNKNOWN:
308 : : break;
309 : 0 : case RTE_PTYPE_L3_IPV6:
310 : : case RTE_PTYPE_L3_IPV6_EXT:
311 : : case RTE_PTYPE_L3_IPV6_EXT_UNKNOWN:
312 : : ptid |= TXGBE_PTID_TUN_IPV6;
313 : 0 : break;
314 : 0 : default:
315 : 0 : return txgbe_encode_ptype_ip(ptype);
316 : : }
317 : :
318 [ # # ]: 0 : switch (ptype & RTE_PTYPE_TUNNEL_MASK) {
319 : : case RTE_PTYPE_TUNNEL_IP:
320 : : ptid |= TXGBE_PTID_TUN_EI;
321 : : break;
322 : : case RTE_PTYPE_TUNNEL_GRE:
323 : : case RTE_PTYPE_TUNNEL_VXLAN:
324 : : case RTE_PTYPE_TUNNEL_VXLAN_GPE:
325 : : case RTE_PTYPE_TUNNEL_NVGRE:
326 : : case RTE_PTYPE_TUNNEL_GENEVE:
327 : : case RTE_PTYPE_TUNNEL_GRENAT:
328 : : break;
329 : : default:
330 : : return ptid;
331 : : }
332 : :
333 [ # # # ]: 0 : switch (ptype & RTE_PTYPE_INNER_L3_MASK) {
334 : : case RTE_PTYPE_INNER_L3_IPV4:
335 : : case RTE_PTYPE_INNER_L3_IPV4_EXT:
336 : : case RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN:
337 : : break;
338 : 0 : case RTE_PTYPE_INNER_L3_IPV6:
339 : : case RTE_PTYPE_INNER_L3_IPV6_EXT:
340 : : case RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN:
341 : 0 : ptid |= TXGBE_PTID_PKT_IPV6;
342 : 0 : break;
343 : : default:
344 : : return ptid;
345 : : }
346 : :
347 [ # # # # : 0 : switch (ptype & RTE_PTYPE_INNER_L4_MASK) {
# ]
348 : 0 : case RTE_PTYPE_INNER_L4_TCP:
349 : 0 : ptid |= TXGBE_PTID_TYP_TCP;
350 : 0 : break;
351 : 0 : case RTE_PTYPE_INNER_L4_UDP:
352 : 0 : ptid |= TXGBE_PTID_TYP_UDP;
353 : 0 : break;
354 : 0 : case RTE_PTYPE_INNER_L4_SCTP:
355 : 0 : ptid |= TXGBE_PTID_TYP_SCTP;
356 : 0 : break;
357 : 0 : case RTE_PTYPE_INNER_L4_FRAG:
358 : 0 : ptid |= TXGBE_PTID_TYP_IPFRAG;
359 : 0 : break;
360 : 0 : default:
361 : 0 : ptid |= TXGBE_PTID_TYP_IPDATA;
362 : 0 : break;
363 : : }
364 : :
365 : : return ptid;
366 : : }
367 : :
368 : 0 : u32 txgbe_decode_ptype(u8 ptid)
369 : : {
370 [ # # ]: 0 : if (-1 != txgbe_etflt_id(ptid))
371 : : return RTE_PTYPE_UNKNOWN;
372 : :
373 : 0 : return txgbe_ptype_lookup[ptid];
374 : : }
375 : :
376 : 0 : u8 txgbe_encode_ptype(u32 ptype)
377 : : {
378 : : u8 ptid = 0;
379 : :
380 [ # # ]: 0 : if (ptype & RTE_PTYPE_TUNNEL_MASK)
381 : 0 : ptid = txgbe_encode_ptype_tunnel(ptype);
382 [ # # ]: 0 : else if (ptype & RTE_PTYPE_L3_MASK)
383 : 0 : ptid = txgbe_encode_ptype_ip(ptype);
384 [ # # ]: 0 : else if (ptype & RTE_PTYPE_L2_MASK)
385 : : ptid = txgbe_encode_ptype_mac(ptype);
386 : : else
387 : : ptid = TXGBE_PTID_NULL;
388 : :
389 : 0 : return ptid;
390 : : }
391 : :
392 : : /**
393 : : * Use 2 different table for normal packet and tunnel packet
394 : : * to save the space.
395 : : */
396 : : const u32
397 : : txgbe_ptype_table[TXGBE_PTID_MAX] __rte_cache_aligned = {
398 : : [TXGBE_PT_ETHER] = RTE_PTYPE_L2_ETHER,
399 : : [TXGBE_PT_IPV4] = RTE_PTYPE_L2_ETHER |
400 : : RTE_PTYPE_L3_IPV4,
401 : : [TXGBE_PT_IPV4_TCP] = RTE_PTYPE_L2_ETHER |
402 : : RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_TCP,
403 : : [TXGBE_PT_IPV4_UDP] = RTE_PTYPE_L2_ETHER |
404 : : RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_UDP,
405 : : [TXGBE_PT_IPV4_SCTP] = RTE_PTYPE_L2_ETHER |
406 : : RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_SCTP,
407 : : [TXGBE_PT_IPV4_EXT] = RTE_PTYPE_L2_ETHER |
408 : : RTE_PTYPE_L3_IPV4_EXT,
409 : : [TXGBE_PT_IPV4_EXT_TCP] = RTE_PTYPE_L2_ETHER |
410 : : RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_TCP,
411 : : [TXGBE_PT_IPV4_EXT_UDP] = RTE_PTYPE_L2_ETHER |
412 : : RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_UDP,
413 : : [TXGBE_PT_IPV4_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
414 : : RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_SCTP,
415 : : [TXGBE_PT_IPV6] = RTE_PTYPE_L2_ETHER |
416 : : RTE_PTYPE_L3_IPV6,
417 : : [TXGBE_PT_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
418 : : RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_TCP,
419 : : [TXGBE_PT_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
420 : : RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_UDP,
421 : : [TXGBE_PT_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
422 : : RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_SCTP,
423 : : [TXGBE_PT_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
424 : : RTE_PTYPE_L3_IPV6_EXT,
425 : : [TXGBE_PT_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
426 : : RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_TCP,
427 : : [TXGBE_PT_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
428 : : RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_UDP,
429 : : [TXGBE_PT_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
430 : : RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_SCTP,
431 : : [TXGBE_PT_IPV4_IPV6] = RTE_PTYPE_L2_ETHER |
432 : : RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
433 : : RTE_PTYPE_INNER_L3_IPV6,
434 : : [TXGBE_PT_IPV4_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
435 : : RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
436 : : RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_TCP,
437 : : [TXGBE_PT_IPV4_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
438 : : RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
439 : : RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_UDP,
440 : : [TXGBE_PT_IPV4_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
441 : : RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
442 : : RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_SCTP,
443 : : [TXGBE_PT_IPV4_EXT_IPV6] = RTE_PTYPE_L2_ETHER |
444 : : RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
445 : : RTE_PTYPE_INNER_L3_IPV6,
446 : : [TXGBE_PT_IPV4_EXT_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
447 : : RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
448 : : RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_TCP,
449 : : [TXGBE_PT_IPV4_EXT_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
450 : : RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
451 : : RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_UDP,
452 : : [TXGBE_PT_IPV4_EXT_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
453 : : RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
454 : : RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_SCTP,
455 : : [TXGBE_PT_IPV4_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
456 : : RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
457 : : RTE_PTYPE_INNER_L3_IPV6_EXT,
458 : : [TXGBE_PT_IPV4_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
459 : : RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
460 : : RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_TCP,
461 : : [TXGBE_PT_IPV4_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
462 : : RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
463 : : RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_UDP,
464 : : [TXGBE_PT_IPV4_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
465 : : RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
466 : : RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_SCTP,
467 : : [TXGBE_PT_IPV4_EXT_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
468 : : RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
469 : : RTE_PTYPE_INNER_L3_IPV6_EXT,
470 : : [TXGBE_PT_IPV4_EXT_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
471 : : RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
472 : : RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_TCP,
473 : : [TXGBE_PT_IPV4_EXT_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
474 : : RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
475 : : RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_UDP,
476 : : [TXGBE_PT_IPV4_EXT_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
477 : : RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
478 : : RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_SCTP,
479 : : };
480 : :
481 : : const u32
482 : : txgbe_ptype_table_tn[TXGBE_PTID_MAX] __rte_cache_aligned = {
483 : : [TXGBE_PT_NVGRE] = RTE_PTYPE_L2_ETHER |
484 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
485 : : RTE_PTYPE_INNER_L2_ETHER,
486 : : [TXGBE_PT_NVGRE_IPV4] = RTE_PTYPE_L2_ETHER |
487 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
488 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
489 : : [TXGBE_PT_NVGRE_IPV4_EXT] = RTE_PTYPE_L2_ETHER |
490 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
491 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT,
492 : : [TXGBE_PT_NVGRE_IPV6] = RTE_PTYPE_L2_ETHER |
493 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
494 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6,
495 : : [TXGBE_PT_NVGRE_IPV4_IPV6] = RTE_PTYPE_L2_ETHER |
496 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
497 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
498 : : [TXGBE_PT_NVGRE_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
499 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
500 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT,
501 : : [TXGBE_PT_NVGRE_IPV4_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
502 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
503 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
504 : : [TXGBE_PT_NVGRE_IPV4_TCP] = RTE_PTYPE_L2_ETHER |
505 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
506 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 |
507 : : RTE_PTYPE_INNER_L4_TCP,
508 : : [TXGBE_PT_NVGRE_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
509 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
510 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6 |
511 : : RTE_PTYPE_INNER_L4_TCP,
512 : : [TXGBE_PT_NVGRE_IPV4_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
513 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
514 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
515 : : [TXGBE_PT_NVGRE_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
516 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
517 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT |
518 : : RTE_PTYPE_INNER_L4_TCP,
519 : : [TXGBE_PT_NVGRE_IPV4_IPV6_EXT_TCP] =
520 : : RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
521 : : RTE_PTYPE_TUNNEL_GRE | RTE_PTYPE_INNER_L2_ETHER |
522 : : RTE_PTYPE_INNER_L3_IPV4,
523 : : [TXGBE_PT_NVGRE_IPV4_UDP] = RTE_PTYPE_L2_ETHER |
524 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
525 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 |
526 : : RTE_PTYPE_INNER_L4_UDP,
527 : : [TXGBE_PT_NVGRE_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
528 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
529 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6 |
530 : : RTE_PTYPE_INNER_L4_UDP,
531 : : [TXGBE_PT_NVGRE_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
532 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
533 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6 |
534 : : RTE_PTYPE_INNER_L4_SCTP,
535 : : [TXGBE_PT_NVGRE_IPV4_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
536 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
537 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
538 : : [TXGBE_PT_NVGRE_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
539 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
540 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT |
541 : : RTE_PTYPE_INNER_L4_UDP,
542 : : [TXGBE_PT_NVGRE_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
543 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
544 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT |
545 : : RTE_PTYPE_INNER_L4_SCTP,
546 : : [TXGBE_PT_NVGRE_IPV4_IPV6_EXT_UDP] =
547 : : RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
548 : : RTE_PTYPE_TUNNEL_GRE | RTE_PTYPE_INNER_L2_ETHER |
549 : : RTE_PTYPE_INNER_L3_IPV4,
550 : : [TXGBE_PT_NVGRE_IPV4_SCTP] = RTE_PTYPE_L2_ETHER |
551 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
552 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 |
553 : : RTE_PTYPE_INNER_L4_SCTP,
554 : : [TXGBE_PT_NVGRE_IPV4_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
555 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
556 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT |
557 : : RTE_PTYPE_INNER_L4_SCTP,
558 : : [TXGBE_PT_NVGRE_IPV4_EXT_TCP] = RTE_PTYPE_L2_ETHER |
559 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
560 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT |
561 : : RTE_PTYPE_INNER_L4_TCP,
562 : : [TXGBE_PT_NVGRE_IPV4_EXT_UDP] = RTE_PTYPE_L2_ETHER |
563 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
564 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT |
565 : : RTE_PTYPE_INNER_L4_UDP,
566 : :
567 : : [TXGBE_PT_VXLAN] = RTE_PTYPE_L2_ETHER |
568 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
569 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER,
570 : : [TXGBE_PT_VXLAN_IPV4] = RTE_PTYPE_L2_ETHER |
571 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
572 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
573 : : RTE_PTYPE_INNER_L3_IPV4,
574 : : [TXGBE_PT_VXLAN_IPV4_EXT] = RTE_PTYPE_L2_ETHER |
575 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
576 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
577 : : RTE_PTYPE_INNER_L3_IPV4_EXT,
578 : : [TXGBE_PT_VXLAN_IPV6] = RTE_PTYPE_L2_ETHER |
579 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
580 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
581 : : RTE_PTYPE_INNER_L3_IPV6,
582 : : [TXGBE_PT_VXLAN_IPV4_IPV6] = RTE_PTYPE_L2_ETHER |
583 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
584 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
585 : : RTE_PTYPE_INNER_L3_IPV4,
586 : : [TXGBE_PT_VXLAN_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
587 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
588 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
589 : : RTE_PTYPE_INNER_L3_IPV6_EXT,
590 : : [TXGBE_PT_VXLAN_IPV4_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
591 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
592 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
593 : : RTE_PTYPE_INNER_L3_IPV4,
594 : : [TXGBE_PT_VXLAN_IPV4_TCP] = RTE_PTYPE_L2_ETHER |
595 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
596 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
597 : : RTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_TCP,
598 : : [TXGBE_PT_VXLAN_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
599 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
600 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
601 : : RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_TCP,
602 : : [TXGBE_PT_VXLAN_IPV4_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
603 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
604 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
605 : : RTE_PTYPE_INNER_L3_IPV4,
606 : : [TXGBE_PT_VXLAN_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
607 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
608 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
609 : : RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_TCP,
610 : : [TXGBE_PT_VXLAN_IPV4_IPV6_EXT_TCP] =
611 : : RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
612 : : RTE_PTYPE_L4_UDP | RTE_PTYPE_TUNNEL_VXLAN |
613 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
614 : : [TXGBE_PT_VXLAN_IPV4_UDP] = RTE_PTYPE_L2_ETHER |
615 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
616 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
617 : : RTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_UDP,
618 : : [TXGBE_PT_VXLAN_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
619 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
620 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
621 : : RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_UDP,
622 : : [TXGBE_PT_VXLAN_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
623 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
624 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
625 : : RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_SCTP,
626 : : [TXGBE_PT_VXLAN_IPV4_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
627 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
628 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
629 : : RTE_PTYPE_INNER_L3_IPV4,
630 : : [TXGBE_PT_VXLAN_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
631 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
632 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
633 : : RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_UDP,
634 : : [TXGBE_PT_VXLAN_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
635 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
636 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
637 : : RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_SCTP,
638 : : [TXGBE_PT_VXLAN_IPV4_IPV6_EXT_UDP] =
639 : : RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
640 : : RTE_PTYPE_L4_UDP | RTE_PTYPE_TUNNEL_VXLAN |
641 : : RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
642 : : [TXGBE_PT_VXLAN_IPV4_SCTP] = RTE_PTYPE_L2_ETHER |
643 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
644 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
645 : : RTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_SCTP,
646 : : [TXGBE_PT_VXLAN_IPV4_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
647 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
648 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
649 : : RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_SCTP,
650 : : [TXGBE_PT_VXLAN_IPV4_EXT_TCP] = RTE_PTYPE_L2_ETHER |
651 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
652 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
653 : : RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_TCP,
654 : : [TXGBE_PT_VXLAN_IPV4_EXT_UDP] = RTE_PTYPE_L2_ETHER |
655 : : RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
656 : : RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
657 : : RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_UDP,
658 : : };
|