[PATCH] app/testpmd: add L4 port to verbose output

Alex Chapman alex.chapman at arm.com
Thu Aug 15 16:20:51 CEST 2024


To help distinguish packets we want to add more identifiable
information and print port number for all packets.
This will make packet metadata more uniform as previously it
only printed port number for encapsulated packets.

Bugzilla-ID: 1517

Signed-off-by: Alex Chapman <alex.chapman at arm.com>
Reviewed-by: Luca Vizzarro <luca.vizzarro at arm.com>
Reviewed-by: Paul Szczepanek <paul.szczepanek at arm.com>
---
 app/test-pmd/util.c | 71 +++++++++++++++++++++++++++------------------
 1 file changed, 42 insertions(+), 29 deletions(-)

diff --git a/app/test-pmd/util.c b/app/test-pmd/util.c
index bf9b639d95..5fa05fad16 100644
--- a/app/test-pmd/util.c
+++ b/app/test-pmd/util.c
@@ -81,7 +81,6 @@ dump_pkt_burst(uint16_t port_id, uint16_t queue, struct rte_mbuf *pkts[],
 	char buf[256];
 	struct rte_net_hdr_lens hdr_lens;
 	uint32_t sw_packet_type;
-	uint16_t udp_port;
 	uint32_t vx_vni;
 	const char *reason;
 	int dynf_index;
@@ -234,49 +233,63 @@ dump_pkt_burst(uint16_t port_id, uint16_t queue, struct rte_mbuf *pkts[],
 		if (sw_packet_type & RTE_PTYPE_INNER_L4_MASK)
 			MKDUMPSTR(print_buf, buf_size, cur_len,
 				  " - inner_l4_len=%d", hdr_lens.inner_l4_len);
-		if (is_encapsulation) {
-			struct rte_ipv4_hdr *ipv4_hdr;
-			struct rte_ipv6_hdr *ipv6_hdr;
-			struct rte_udp_hdr *udp_hdr;
-			uint8_t l2_len;
-			uint8_t l3_len;
-			uint8_t l4_len;
-			uint8_t l4_proto;
-			struct  rte_vxlan_hdr *vxlan_hdr;
-
-			l2_len  = sizeof(struct rte_ether_hdr);
-
-			/* Do not support ipv4 option field */
-			if (RTE_ETH_IS_IPV4_HDR(packet_type)) {
-				l3_len = sizeof(struct rte_ipv4_hdr);
-				ipv4_hdr = rte_pktmbuf_mtod_offset(mb,
+
+		struct rte_ipv4_hdr *ipv4_hdr;
+		struct rte_ipv6_hdr *ipv6_hdr;
+		struct rte_udp_hdr *udp_hdr;
+		struct rte_tcp_hdr *tcp_hdr;
+		uint8_t l2_len;
+		uint8_t l3_len;
+		uint8_t l4_len;
+		uint8_t l4_proto;
+		uint16_t l4_port;
+		struct  rte_vxlan_hdr *vxlan_hdr;
+
+		l2_len  = sizeof(struct rte_ether_hdr);
+
+		/* Do not support ipv4 option field */
+		if (RTE_ETH_IS_IPV4_HDR(packet_type)) {
+			l3_len = sizeof(struct rte_ipv4_hdr);
+			ipv4_hdr = rte_pktmbuf_mtod_offset(mb,
 				struct rte_ipv4_hdr *,
 				l2_len);
-				l4_proto = ipv4_hdr->next_proto_id;
-			} else {
-				l3_len = sizeof(struct rte_ipv6_hdr);
-				ipv6_hdr = rte_pktmbuf_mtod_offset(mb,
+			l4_proto = ipv4_hdr->next_proto_id;
+		} else {
+			l3_len = sizeof(struct rte_ipv6_hdr);
+			ipv6_hdr = rte_pktmbuf_mtod_offset(mb,
 				struct rte_ipv6_hdr *,
 				l2_len);
-				l4_proto = ipv6_hdr->proto;
-			}
-			if (l4_proto == IPPROTO_UDP) {
-				udp_hdr = rte_pktmbuf_mtod_offset(mb,
+			l4_proto = ipv6_hdr->proto;
+		}
+		if (l4_proto == IPPROTO_UDP) {
+			udp_hdr = rte_pktmbuf_mtod_offset(mb,
 				struct rte_udp_hdr *,
 				l2_len + l3_len);
+			l4_port = RTE_BE_TO_CPU_16(udp_hdr->dst_port);
+			if (is_encapsulation) {
 				l4_len = sizeof(struct rte_udp_hdr);
 				vxlan_hdr = rte_pktmbuf_mtod_offset(mb,
-				struct rte_vxlan_hdr *,
-				l2_len + l3_len + l4_len);
-				udp_port = RTE_BE_TO_CPU_16(udp_hdr->dst_port);
+					struct rte_vxlan_hdr *,
+					l2_len + l3_len + l4_len);
 				vx_vni = rte_be_to_cpu_32(vxlan_hdr->vx_vni);
 				MKDUMPSTR(print_buf, buf_size, cur_len,
 					  " - VXLAN packet: packet type =%d, "
 					  "Destination UDP port =%d, VNI = %d, "
 					  "last_rsvd = %d", packet_type,
-					  udp_port, vx_vni >> 8, vx_vni & 0xff);
+					  l4_port, vx_vni >> 8, vx_vni & 0xff);
+			} else {
+				MKDUMPSTR(print_buf, buf_size, cur_len,
+					" - Destination UDP port=%d", l4_port);
 			}
+		} else if (l4_proto == IPPROTO_TCP) {
+			tcp_hdr = rte_pktmbuf_mtod_offset(mb,
+				struct rte_tcp_hdr *,
+				l2_len + l3_len);
+			l4_port = RTE_BE_TO_CPU_16(tcp_hdr->dst_port);
+			MKDUMPSTR(print_buf, buf_size, cur_len,
+				" - Destination TCP port=%d", l4_port);
 		}
+
 		MKDUMPSTR(print_buf, buf_size, cur_len,
 			  " - %s queue=0x%x", is_rx ? "Receive" : "Send",
 			  (unsigned int) queue);
-- 
2.34.1



More information about the dev mailing list