From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 15DC6A0543; Tue, 7 Jun 2022 10:34:39 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8A24B4281B; Tue, 7 Jun 2022 10:34:19 +0200 (CEST) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by mails.dpdk.org (Postfix) with ESMTP id 7163340156 for ; Tue, 7 Jun 2022 10:34:14 +0200 (CEST) Received: from dggemv703-chm.china.huawei.com (unknown [172.30.72.54]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4LHNsl2znHzjdg1; Tue, 7 Jun 2022 16:33:15 +0800 (CST) Received: from kwepemm600004.china.huawei.com (7.193.23.242) by dggemv703-chm.china.huawei.com (10.3.19.46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 7 Jun 2022 16:34:11 +0800 Received: from localhost.localdomain (10.69.192.56) by kwepemm600004.china.huawei.com (7.193.23.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 7 Jun 2022 16:34:11 +0800 From: Huisong Li To: , , , , CC: , , , Subject: [PATCH V3 app/testpmd 3/4] app/testpmd: compact RSS types output in some commands Date: Tue, 7 Jun 2022 16:32:45 +0800 Message-ID: <20220607083246.12259-4-lihuisong@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20220607083246.12259-1-lihuisong@huawei.com> References: <20220429102445.23711-1-lihuisong@huawei.com> <20220607083246.12259-1-lihuisong@huawei.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.69.192.56] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To kwepemm600004.china.huawei.com (7.193.23.242) X-CFilter-Loop: Reflected X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Ferruh Yigit In port info command output, 'show port info all', supported RSS offload types printed one type per line, and although this information is not most important part of the command it takes big part of the command output. In port RSS hash and flow RSS command output, 'show port 0 rss-hash', and 'flow query 0 0 rss', all enabled RSS types are printed on one line. If there are many types, the print will be very long. Compacting these RSS offloads and types output by fixing the length of the character string printed on each line, instead of one per line or one line. Output becomes as following: Supported RSS offload flow types: ipv4-frag ipv4-tcp ipv4-udp ipv4-sctp ipv4-other ipv6-frag ipv6-tcp ipv6-udp ipv6-sctp ipv6-other l4-dst-only l4-src-only l3-dst-only l3-src-only Signed-off-by: Ferruh Yigit Signed-off-by: Huisong Li --- app/test-pmd/config.c | 64 ++++++++++++++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 16 deletions(-) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 9cb1211f00..209cbcc514 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -66,6 +66,8 @@ #define NS_PER_SEC 1E9 +#define MAX_CHAR_NUM_PER_LINE 64 + static const struct { enum tx_pkt_split split; const char *name; @@ -198,6 +200,8 @@ const struct rss_type_info rss_type_table[] = { static void rss_types_display(uint64_t rss_types) { + uint16_t total_len = 0; + uint16_t str_len = 0; uint16_t i; if (rss_types == 0) @@ -206,9 +210,18 @@ rss_types_display(uint64_t rss_types) for (i = 0; rss_type_table[i].str; i++) { if (rss_type_table[i].rss_type == 0) continue; + if ((rss_types & rss_type_table[i].rss_type) == - rss_type_table[i].rss_type) + rss_type_table[i].rss_type) { + /* contain two blanks */ + str_len = strlen(rss_type_table[i].str) + 2; + if (total_len + str_len > MAX_CHAR_NUM_PER_LINE) { + printf("\n"); + total_len = 0; + } printf(" %s", rss_type_table[i].str); + total_len += str_len; + } } } @@ -766,6 +779,38 @@ rss_offload_to_str(uint64_t rss_offload) return NULL; } +static void +rss_offload_types_display(uint64_t rss_offload_types) +{ +#define USER_DEFINED_DISPLAY_STR_LEN 23 + + uint16_t total_len = 0; + uint16_t str_len = 0; + uint64_t rss_offload; + uint16_t i; + + for (i = 0; i < sizeof(rss_offload_types) * CHAR_BIT; i++) { + rss_offload = RTE_BIT64(i); + if ((rss_offload_types & rss_offload) != 0) { + const char *p = rss_offload_to_str(rss_offload); + + str_len = p ? strlen(p) : USER_DEFINED_DISPLAY_STR_LEN; + str_len += 2; /* add two blanks */ + if (total_len + str_len >= MAX_CHAR_NUM_PER_LINE) { + total_len = 0; + printf("\n"); + } + + if (p) + printf(" %s", p); + else + printf(" user defined 0x%"PRIx64"", + rss_offload); + total_len += str_len; + } + } +} + void port_infos_display(portid_t port_id) { @@ -870,22 +915,9 @@ port_infos_display(portid_t port_id) if (!dev_info.flow_type_rss_offloads) printf("No RSS offload flow type is supported.\n"); else { - uint64_t rss_offload_types = dev_info.flow_type_rss_offloads; - uint16_t i; - printf("Supported RSS offload flow types:\n"); - for (i = 0; i < sizeof(rss_offload_types) * CHAR_BIT; i++) { - uint64_t rss_offload = RTE_BIT64(i); - if ((rss_offload_types & rss_offload) != 0) { - const char *p = - rss_offload_to_str(rss_offload); - if (p) - printf(" %s\n", p); - else - printf(" user defined 0x%"PRIx64"\n", - rss_offload); - } - } + rss_offload_types_display(dev_info.flow_type_rss_offloads); + printf("\n"); } printf("Minimum size of RX buffer: %u\n", dev_info.min_rx_bufsize); -- 2.33.0