@@ -91,7 +91,11 @@ pkt_burst_receive(struct fwd_stream *fs)
9191 uint64_t ol_flags ;
9292 uint16_t nb_rx ;
9393 uint16_t i , packet_type ;
94+ #ifdef RTE_NEXT_ABI
95+ uint16_t is_encapsulation ;
96+ #else
9497 uint64_t is_encapsulation ;
98+ #endif
9599
96100#ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES
97101 uint64_t start_tsc ;
@@ -135,8 +139,12 @@ pkt_burst_receive(struct fwd_stream *fs)
135139 ol_flags = mb -> ol_flags ;
136140 packet_type = mb -> packet_type ;
137141
142+ #ifdef RTE_NEXT_ABI
143+ is_encapsulation = RTE_ETH_IS_TUNNEL_PKT (packet_type );
144+ #else
138145 is_encapsulation = ol_flags & (PKT_RX_TUNNEL_IPV4_HDR |
139146 PKT_RX_TUNNEL_IPV6_HDR );
147+ #endif
140148
141149 print_ether_addr (" src=" , & eth_hdr -> s_addr );
142150 print_ether_addr (" - dst=" , & eth_hdr -> d_addr );
@@ -163,6 +171,177 @@ pkt_burst_receive(struct fwd_stream *fs)
163171 if (ol_flags & PKT_RX_QINQ_PKT )
164172 printf (" - QinQ VLAN tci=0x%x, VLAN tci outer=0x%x" ,
165173 mb -> vlan_tci , mb -> vlan_tci_outer );
174+ #ifdef RTE_NEXT_ABI
175+ if (mb -> packet_type ) {
176+ uint32_t ptype ;
177+
178+ /* (outer) L2 packet type */
179+ ptype = mb -> packet_type & RTE_PTYPE_L2_MASK ;
180+ switch (ptype ) {
181+ case RTE_PTYPE_L2_ETHER :
182+ printf (" - (outer) L2 type: ETHER" );
183+ break ;
184+ case RTE_PTYPE_L2_ETHER_TIMESYNC :
185+ printf (" - (outer) L2 type: ETHER_Timesync" );
186+ break ;
187+ case RTE_PTYPE_L2_ETHER_ARP :
188+ printf (" - (outer) L2 type: ETHER_ARP" );
189+ break ;
190+ case RTE_PTYPE_L2_ETHER_LLDP :
191+ printf (" - (outer) L2 type: ETHER_LLDP" );
192+ break ;
193+ default :
194+ printf (" - (outer) L2 type: Unknown" );
195+ break ;
196+ }
197+
198+ /* (outer) L3 packet type */
199+ ptype = mb -> packet_type & RTE_PTYPE_L3_MASK ;
200+ switch (ptype ) {
201+ case RTE_PTYPE_L3_IPV4 :
202+ printf (" - (outer) L3 type: IPV4" );
203+ break ;
204+ case RTE_PTYPE_L3_IPV4_EXT :
205+ printf (" - (outer) L3 type: IPV4_EXT" );
206+ break ;
207+ case RTE_PTYPE_L3_IPV6 :
208+ printf (" - (outer) L3 type: IPV6" );
209+ break ;
210+ case RTE_PTYPE_L3_IPV4_EXT_UNKNOWN :
211+ printf (" - (outer) L3 type: IPV4_EXT_UNKNOWN" );
212+ break ;
213+ case RTE_PTYPE_L3_IPV6_EXT :
214+ printf (" - (outer) L3 type: IPV6_EXT" );
215+ break ;
216+ case RTE_PTYPE_L3_IPV6_EXT_UNKNOWN :
217+ printf (" - (outer) L3 type: IPV6_EXT_UNKNOWN" );
218+ break ;
219+ default :
220+ printf (" - (outer) L3 type: Unknown" );
221+ break ;
222+ }
223+
224+ /* (outer) L4 packet type */
225+ ptype = mb -> packet_type & RTE_PTYPE_L4_MASK ;
226+ switch (ptype ) {
227+ case RTE_PTYPE_L4_TCP :
228+ printf (" - (outer) L4 type: TCP" );
229+ break ;
230+ case RTE_PTYPE_L4_UDP :
231+ printf (" - (outer) L4 type: UDP" );
232+ break ;
233+ case RTE_PTYPE_L4_FRAG :
234+ printf (" - (outer) L4 type: L4_FRAG" );
235+ break ;
236+ case RTE_PTYPE_L4_SCTP :
237+ printf (" - (outer) L4 type: SCTP" );
238+ break ;
239+ case RTE_PTYPE_L4_ICMP :
240+ printf (" - (outer) L4 type: ICMP" );
241+ break ;
242+ case RTE_PTYPE_L4_NONFRAG :
243+ printf (" - (outer) L4 type: L4_NONFRAG" );
244+ break ;
245+ default :
246+ printf (" - (outer) L4 type: Unknown" );
247+ break ;
248+ }
249+
250+ /* packet tunnel type */
251+ ptype = mb -> packet_type & RTE_PTYPE_TUNNEL_MASK ;
252+ switch (ptype ) {
253+ case RTE_PTYPE_TUNNEL_IP :
254+ printf (" - Tunnel type: IP" );
255+ break ;
256+ case RTE_PTYPE_TUNNEL_GRE :
257+ printf (" - Tunnel type: GRE" );
258+ break ;
259+ case RTE_PTYPE_TUNNEL_VXLAN :
260+ printf (" - Tunnel type: VXLAN" );
261+ break ;
262+ case RTE_PTYPE_TUNNEL_NVGRE :
263+ printf (" - Tunnel type: NVGRE" );
264+ break ;
265+ case RTE_PTYPE_TUNNEL_GENEVE :
266+ printf (" - Tunnel type: GENEVE" );
267+ break ;
268+ case RTE_PTYPE_TUNNEL_GRENAT :
269+ printf (" - Tunnel type: GRENAT" );
270+ break ;
271+ default :
272+ printf (" - Tunnel type: Unknown" );
273+ break ;
274+ }
275+
276+ /* inner L2 packet type */
277+ ptype = mb -> packet_type & RTE_PTYPE_INNER_L2_MASK ;
278+ switch (ptype ) {
279+ case RTE_PTYPE_INNER_L2_ETHER :
280+ printf (" - Inner L2 type: ETHER" );
281+ break ;
282+ case RTE_PTYPE_INNER_L2_ETHER_VLAN :
283+ printf (" - Inner L2 type: ETHER_VLAN" );
284+ break ;
285+ default :
286+ printf (" - Inner L2 type: Unknown" );
287+ break ;
288+ }
289+
290+ /* inner L3 packet type */
291+ ptype = mb -> packet_type & RTE_PTYPE_INNER_INNER_L3_MASK ;
292+ switch (ptype ) {
293+ case RTE_PTYPE_INNER_L3_IPV4 :
294+ printf (" - Inner L3 type: IPV4" );
295+ break ;
296+ case RTE_PTYPE_INNER_L3_IPV4_EXT :
297+ printf (" - Inner L3 type: IPV4_EXT" );
298+ break ;
299+ case RTE_PTYPE_INNER_L3_IPV6 :
300+ printf (" - Inner L3 type: IPV6" );
301+ break ;
302+ case RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN :
303+ printf (" - Inner L3 type: IPV4_EXT_UNKNOWN" );
304+ break ;
305+ case RTE_PTYPE_INNER_L3_IPV6_EXT :
306+ printf (" - Inner L3 type: IPV6_EXT" );
307+ break ;
308+ case RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN :
309+ printf (" - Inner L3 type: IPV6_EXT_UNKNOWN" );
310+ break ;
311+ default :
312+ printf (" - Inner L3 type: Unknown" );
313+ break ;
314+ }
315+
316+ /* inner L4 packet type */
317+ ptype = mb -> packet_type & RTE_PTYPE_INNER_L4_MASK ;
318+ switch (ptype ) {
319+ case RTE_PTYPE_INNER_L4_TCP :
320+ printf (" - Inner L4 type: TCP" );
321+ break ;
322+ case RTE_PTYPE_INNER_L4_UDP :
323+ printf (" - Inner L4 type: UDP" );
324+ break ;
325+ case RTE_PTYPE_INNER_L4_FRAG :
326+ printf (" - Inner L4 type: L4_FRAG" );
327+ break ;
328+ case RTE_PTYPE_INNER_L4_SCTP :
329+ printf (" - Inner L4 type: SCTP" );
330+ break ;
331+ case RTE_PTYPE_INNER_L4_ICMP :
332+ printf (" - Inner L4 type: ICMP" );
333+ break ;
334+ case RTE_PTYPE_INNER_L4_NONFRAG :
335+ printf (" - Inner L4 type: L4_NONFRAG" );
336+ break ;
337+ default :
338+ printf (" - Inner L4 type: Unknown" );
339+ break ;
340+ }
341+ printf ("\n" );
342+ } else
343+ printf ("Unknown packet type\n" );
344+ #endif /* RTE_NEXT_ABI */
166345 if (is_encapsulation ) {
167346 struct ipv4_hdr * ipv4_hdr ;
168347 struct ipv6_hdr * ipv6_hdr ;
@@ -176,7 +355,11 @@ pkt_burst_receive(struct fwd_stream *fs)
176355 l2_len = sizeof (struct ether_hdr );
177356
178357 /* Do not support ipv4 option field */
358+ #ifdef RTE_NEXT_ABI
359+ if (RTE_ETH_IS_IPV4_HDR (packet_type )) {
360+ #else
179361 if (ol_flags & PKT_RX_TUNNEL_IPV4_HDR ) {
362+ #endif
180363 l3_len = sizeof (struct ipv4_hdr );
181364 ipv4_hdr = rte_pktmbuf_mtod_offset (mb ,
182365 struct ipv4_hdr * ,
0 commit comments