[dpdk-dev] [PATCH 4/6] app/testpmd: modify the output of CLI, show port fdir

Wenzhuo Lu wenzhuo.lu at intel.com
Fri Sep 25 08:05:23 CEST 2015


There're fdir mask and supported flow type in the output of the CLI,
show port fdir. But not every parameter has meaning for all the fdir
modes, and the supported flow type is meaningless for mac vlan and
cloud modes. So, we output different info for different mode.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu at intel.com>
---
 app/test-pmd/config.c | 44 ++++++++++++++++++++++++++++++--------------
 1 file changed, 30 insertions(+), 14 deletions(-)

diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index cf2aa6e..876679e 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -1829,18 +1829,27 @@ set_qmap(portid_t port_id, uint8_t is_rx, uint16_t queue_id, uint8_t map_value)
 static inline void
 print_fdir_mask(struct rte_eth_fdir_masks *mask)
 {
-	printf("\n    vlan_tci: 0x%04x, src_ipv4: 0x%08x, dst_ipv4: 0x%08x,"
-		      " src_port: 0x%04x, dst_port: 0x%04x",
-		mask->vlan_tci_mask, mask->ipv4_mask.src_ip,
-		mask->ipv4_mask.dst_ip,
-		mask->src_port_mask, mask->dst_port_mask);
-
-	printf("\n    src_ipv6: 0x%08x,0x%08x,0x%08x,0x%08x,"
-		     " dst_ipv6: 0x%08x,0x%08x,0x%08x,0x%08x",
-		mask->ipv6_mask.src_ip[0], mask->ipv6_mask.src_ip[1],
-		mask->ipv6_mask.src_ip[2], mask->ipv6_mask.src_ip[3],
-		mask->ipv6_mask.dst_ip[0], mask->ipv6_mask.dst_ip[1],
-		mask->ipv6_mask.dst_ip[2], mask->ipv6_mask.dst_ip[3]);
+	printf("\n    vlan_tci: 0x%04x, ", mask->vlan_tci_mask);
+
+	if (fdir_conf.mode == RTE_FDIR_MODE_PERFECT_MAC_VLAN)
+		printf("mac_addr: 0x%02x", mask->mac_addr_mask);
+	else if (fdir_conf.mode == RTE_FDIR_MODE_PERFECT_CLOUD)
+		printf("mac_addr: 0x%02x, tunnel_type: 0x%01x, tni_vni: 0x%08x",
+		mask->mac_addr_mask, mask->tunnel_type_mask,mask->tni_vni_mask);
+	else {
+		printf("src_ipv4: 0x%08x, dst_ipv4: 0x%08x,"
+			" src_port: 0x%04x, dst_port: 0x%04x",
+			mask->ipv4_mask.src_ip, mask->ipv4_mask.dst_ip,
+			mask->src_port_mask, mask->dst_port_mask);
+
+		printf("\n    src_ipv6: 0x%08x,0x%08x,0x%08x,0x%08x,"
+			" dst_ipv6: 0x%08x,0x%08x,0x%08x,0x%08x",
+			mask->ipv6_mask.src_ip[0], mask->ipv6_mask.src_ip[1],
+			mask->ipv6_mask.src_ip[2], mask->ipv6_mask.src_ip[3],
+			mask->ipv6_mask.dst_ip[0], mask->ipv6_mask.dst_ip[1],
+			mask->ipv6_mask.dst_ip[2], mask->ipv6_mask.dst_ip[3]);
+	}
+
 	printf("\n");
 }
 
@@ -1966,12 +1975,19 @@ fdir_get_infos(portid_t port_id)
 	printf("  MODE: ");
 	if (fdir_info.mode == RTE_FDIR_MODE_PERFECT)
 		printf("  PERFECT\n");
+	else if (fdir_info.mode == RTE_FDIR_MODE_PERFECT_MAC_VLAN)
+		printf("  PERFECT-MAC-VLAN\n");
+	else if (fdir_info.mode == RTE_FDIR_MODE_PERFECT_CLOUD)
+		printf("  PERFECT-CLOUD\n");
 	else if (fdir_info.mode == RTE_FDIR_MODE_SIGNATURE)
 		printf("  SIGNATURE\n");
 	else
 		printf("  DISABLE\n");
-	printf("  SUPPORTED FLOW TYPE: ");
-	print_fdir_flow_type(fdir_info.flow_types_mask[0]);
+	if (fdir_info.mode != RTE_FDIR_MODE_PERFECT_MAC_VLAN
+		&& fdir_info.mode != RTE_FDIR_MODE_PERFECT_CLOUD) {
+		printf("  SUPPORTED FLOW TYPE: ");
+		print_fdir_flow_type(fdir_info.flow_types_mask[0]);
+	}
 	printf("  FLEX PAYLOAD INFO:\n");
 	printf("  max_len:       %-10"PRIu32"  payload_limit: %-10"PRIu32"\n"
 	       "  payload_unit:  %-10"PRIu32"  payload_seg:   %-10"PRIu32"\n"
-- 
1.9.3



More information about the dev mailing list