From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 20E1A5A7D for ; Thu, 29 Jan 2015 06:30:00 +0100 (CET) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP; 28 Jan 2015 21:29:59 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.09,484,1418112000"; d="scan'208";a="658435676" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by fmsmga001.fm.intel.com with ESMTP; 28 Jan 2015 21:29:58 -0800 Received: from shecgisg004.sh.intel.com (shecgisg004.sh.intel.com [10.239.29.89]) by shvmail01.sh.intel.com with ESMTP id t0T5TttL022926; Thu, 29 Jan 2015 13:29:55 +0800 Received: from shecgisg004.sh.intel.com (localhost [127.0.0.1]) by shecgisg004.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id t0T5TqPx013715; Thu, 29 Jan 2015 13:29:54 +0800 Received: (from wujingji@localhost) by shecgisg004.sh.intel.com (8.13.6/8.13.6/Submit) id t0T5TqvD013711; Thu, 29 Jan 2015 13:29:52 +0800 From: Jingjing Wu To: dev@dpdk.org Date: Thu, 29 Jan 2015 13:29:22 +0800 Message-Id: <1422509365-13596-13-git-send-email-jingjing.wu@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1422509365-13596-1-git-send-email-jingjing.wu@intel.com> References: <1422509365-13596-1-git-send-email-jingjing.wu@intel.com> Subject: [dpdk-dev] [PATCH 12/15] testpmd: update function to show flow director information X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Jan 2015 05:30:02 -0000 update the function to print information includes: - capability - mask - flex configuration Signed-off-by: Jingjing Wu --- app/test-pmd/config.c | 77 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 32 deletions(-) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index c40f819..4db9b9a 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -98,6 +98,7 @@ static const char *flowtype_str[RTE_ETH_FLOW_TYPE_MAX] = { NULL, + "raw", "udp4", "tcp4", "sctp4", @@ -1822,14 +1823,34 @@ fdir_remove_signature_filter(portid_t port_id, } static inline void -print_fdir_flex_payload(struct rte_eth_fdir_flex_conf *flex_conf) +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"); +} + +static inline void +print_fdir_flex_payload(struct rte_eth_fdir_flex_conf *flex_conf, uint32_t num) { struct rte_eth_flex_payload_cfg *cfg; - int i, j; + uint32_t i, j; for (i = 0; i < flex_conf->nb_payloads; i++) { cfg = &flex_conf->flex_set[i]; - if (cfg->type == RTE_ETH_L2_PAYLOAD) + if (cfg->type == RTE_ETH_RAW_PAYLOAD) + printf("\n RAW: "); + else if (cfg->type == RTE_ETH_L2_PAYLOAD) printf("\n L2_PAYLOAD: "); else if (cfg->type == RTE_ETH_L3_PAYLOAD) printf("\n L3_PAYLOAD: "); @@ -1837,22 +1858,22 @@ print_fdir_flex_payload(struct rte_eth_fdir_flex_conf *flex_conf) printf("\n L4_PAYLOAD: "); else printf("\n UNKNOWN PAYLOAD(%u): ", cfg->type); - for (j = 0; j < RTE_ETH_FDIR_MAX_FLEXLEN; j++) + for (j = 0; j < num; j++) printf(" %-5u", cfg->src_offset[j]); } printf("\n"); } static inline void -print_fdir_flex_mask(struct rte_eth_fdir_flex_conf *flex_conf) +print_fdir_flex_mask(struct rte_eth_fdir_flex_conf *flex_conf, uint32_t num) { struct rte_eth_fdir_flex_mask *mask; - int i, j; + uint32_t i, j; for (i = 0; i < flex_conf->nb_flexmasks; i++) { mask = &flex_conf->flex_mask[i]; printf("\n %s:\t", flowtype_str[mask->flow_type]); - for (j = 0; j < RTE_ETH_FDIR_MAX_FLEXLEN; j++) + for (j = 0; j < num; j++) printf(" %02x", mask->mask[j]); } printf("\n"); @@ -1885,26 +1906,8 @@ fdir_get_infos(portid_t port_id) return; ret = rte_eth_dev_filter_supported(port_id, RTE_ETH_FILTER_FDIR); if (ret < 0) { - /* use the old fdir APIs to get info */ - struct rte_eth_fdir fdir; - memset(&fdir, 0, sizeof(fdir)); - ret = rte_eth_dev_fdir_get_infos(port_id, &fdir); - if (ret < 0) { - printf("\n getting fdir info fails on port %-2d\n", - port_id); - return; - } - printf("\n %s FDIR infos for port %-2d %s\n", - fdir_stats_border, port_id, fdir_stats_border); - printf(" collision: %-10"PRIu64" free: %"PRIu64"\n" - " maxhash: %-10"PRIu64" maxlen: %"PRIu64"\n" - " add: %-10"PRIu64" remove: %"PRIu64"\n" - " f_add: %-10"PRIu64" f_remove: %"PRIu64"\n", - (uint64_t)(fdir.collision), (uint64_t)(fdir.free), - (uint64_t)(fdir.maxhash), (uint64_t)(fdir.maxlen), - fdir.add, fdir.remove, fdir.f_add, fdir.f_remove); - printf(" %s############################%s\n", - fdir_stats_border, fdir_stats_border); + printf("\n FDIR is not supported on port %-2d\n", + port_id); return; } @@ -1933,18 +1936,28 @@ fdir_get_infos(portid_t port_id) fdir_info.flex_payload_unit, fdir_info.max_flex_payload_segment_num, fdir_info.flex_bitmask_unit, fdir_info.max_flex_bitmask_num); + printf(" MASK: "); + print_fdir_mask(&fdir_info.mask); if (fdir_info.flex_conf.nb_payloads > 0) { printf(" FLEX PAYLOAD SRC OFFSET:"); - print_fdir_flex_payload(&fdir_info.flex_conf); + print_fdir_flex_payload(&fdir_info.flex_conf, fdir_info.max_flexpayload); } if (fdir_info.flex_conf.nb_flexmasks > 0) { printf(" FLEX MASK CFG:"); - print_fdir_flex_mask(&fdir_info.flex_conf); + print_fdir_flex_mask(&fdir_info.flex_conf, fdir_info.max_flexpayload); } - printf(" guarant_count: %-10"PRIu32" best_count: %-10"PRIu32"\n", + printf(" guarant_count: %-10"PRIu32" best_count: %"PRIu32"\n", fdir_stat.guarant_cnt, fdir_stat.best_cnt); - printf(" guarant_space: %-10"PRIu32" best_space: %-10"PRIu32"\n", - fdir_info.guarant_spc, fdir_info.guarant_spc); + printf(" guarant_space: %-10"PRIu32" best_space: %"PRIu32"\n", + fdir_info.guarant_spc, fdir_info.best_spc); + printf(" collision: %-10"PRIu32" free: %"PRIu32"\n" + " maxhash: %-10"PRIu32" maxlen: %"PRIu32"\n" + " add: %-10"PRIu64" remove: %"PRIu64"\n" + " f_add: %-10"PRIu64" f_remove: %"PRIu64"\n", + fdir_stat.collision, fdir_stat.free, + fdir_stat.maxhash, fdir_stat.maxlen, + fdir_stat.add, fdir_stat.remove, + fdir_stat.f_add, fdir_stat.f_remove); printf(" %s############################%s\n", fdir_stats_border, fdir_stats_border); } -- 1.9.3