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 CB7BEA054D; Tue, 7 Jun 2022 17:46:35 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BB36F410EF; Tue, 7 Jun 2022 17:46:35 +0200 (CEST) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2079.outbound.protection.outlook.com [40.107.236.79]) by mails.dpdk.org (Postfix) with ESMTP id 4E7D04021D for ; Tue, 7 Jun 2022 17:46:34 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cFAQMn6SUC6JQ+C/woixysycK1HiwHPnUmiAFUfm8ap4yEt+3wbilSeXSMQyE9/zHasYjIOI0Sx+xT6QL8WDtL/MilrV2Fw+x7IkUj1QqFVeVmqYPU1VHtV3lUfcjXG2oO/cwKqe01qJ1sdjOoNFr+lF1tirVNEjhwCgSIvO+g/NRNkkmHTm0RZNXEHX2Glu8kmuWfmRsYnuA5R80olj7hTbnbHc1dTo1RQt2MqJAVhAHS1DsALgVlGHTxBUnjnKNK2dzdMuRj6tfKgi2cHqiWbfV967YYOrjQEabZtmmBARDTAujKVkNl52rUznevYy8AxSy201BJdUTm//LWD2aA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=4+xUUEs4zmQMpb8INCVHd0kV5uardhhHDLOyP4onKJg=; b=WsxpgEFXZD42cdlHSDxjw9yeXwrXn8WHp1qb+HPIWVCn702e3wOZR5buDfystIzHRNnRWFMh02IEWjeAneLI94b9K1w4AWs9doBzugqJDKXYC+DDtoRNbRuFeWcAMp0x+LYT5O+28olT2yPPg9myUoZJIjhAtvmPcgliaiFuUnNXl6yU+jkmuSjNTz0vrfDjNpSe4yJZkRAUxP4EtXxTY57Ro72aoab4AhDV2ozwpdxcKNWMh9q1Q38AgQIk5EOSS6m5lx1o6ola39L+PLOx6/4uWZvQS2UBU3qt+MkqZys+agtsvaGmbQAxGmqBc27dvWiIlbdd5bIBdjizmVTClg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 149.199.80.198) smtp.rcpttodomain=huawei.com smtp.mailfrom=xilinx.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=xilinx.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector2-xilinx-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4+xUUEs4zmQMpb8INCVHd0kV5uardhhHDLOyP4onKJg=; b=ZytJcUEvousMf7MgkBEqj46BtMyvkiCDK8VL8G99+VGN6SILKROuzdSBhVcBsC3FK7j7vsf59DAKZaZwO51/SQ54bqYY4XAgazVMGyDYFd1xiRUNU3T4y7o0bwwVKNZ3gLbaVY3A19cdiDp37ODFYBqcEv66FN5eslSdqAdxRWQ= Received: from SN6PR05CA0023.namprd05.prod.outlook.com (2603:10b6:805:de::36) by BN7PR02MB5186.namprd02.prod.outlook.com (2603:10b6:408:21::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.13; Tue, 7 Jun 2022 15:46:32 +0000 Received: from SN1NAM02FT0019.eop-nam02.prod.protection.outlook.com (2603:10b6:805:de:cafe::1a) by SN6PR05CA0023.outlook.office365.com (2603:10b6:805:de::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.6 via Frontend Transport; Tue, 7 Jun 2022 15:46:32 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 149.199.80.198) smtp.mailfrom=xilinx.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.80.198 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.80.198; helo=xir-pvapexch01.xlnx.xilinx.com; pr=C Received: from xir-pvapexch01.xlnx.xilinx.com (149.199.80.198) by SN1NAM02FT0019.mail.protection.outlook.com (10.97.4.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5314.12 via Frontend Transport; Tue, 7 Jun 2022 15:46:31 +0000 Received: from xir-pvapexch02.xlnx.xilinx.com (172.21.17.17) by xir-pvapexch01.xlnx.xilinx.com (172.21.17.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.14; Tue, 7 Jun 2022 16:46:30 +0100 Received: from smtp.xilinx.com (172.21.105.198) by xir-pvapexch02.xlnx.xilinx.com (172.21.17.17) with Microsoft SMTP Server id 15.1.2176.14 via Frontend Transport; Tue, 7 Jun 2022 16:46:30 +0100 Envelope-to: lihuisong@huawei.com, xiaoyun.li@intel.com, aman.deep.singh@intel.com, yuying.zhang@intel.com, andrew.rybchenko@oktetlabs.ru, dev@dpdk.org, thomas@monjalon.net, huangdaode@huawei.com Received: from [10.71.117.191] (port=62246) by smtp.xilinx.com with esmtp (Exim 4.90) (envelope-from ) id 1nybPa-0007TH-0U; Tue, 07 Jun 2022 16:46:30 +0100 Message-ID: <3120e1ce-013e-5024-6a2a-e4cf9a8f3a86@xilinx.com> Date: Tue, 7 Jun 2022 16:46:29 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 Subject: Re: [PATCH V3 app/testpmd 3/4] app/testpmd: compact RSS types output in some commands Content-Language: en-US To: Huisong Li , , , , CC: , , References: <20220429102445.23711-1-lihuisong@huawei.com> <20220607083246.12259-1-lihuisong@huawei.com> <20220607083246.12259-4-lihuisong@huawei.com> From: Ferruh Yigit In-Reply-To: <20220607083246.12259-4-lihuisong@huawei.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dd07bc6c-a4d7-4fa9-1a25-08da489ce4d3 X-MS-TrafficTypeDiagnostic: BN7PR02MB5186:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jFLwCpo32FDd1dGicry8dwVkRoAAIlsLrMh7B+92u0rPGQZocKrwlgyQ3WMPg+sXvrtiu6dgUPp2WJlxwaPwXpXBuNRq4q2Oin3ZUUgEJvMQKCJc7jB72qbUkh0y2HZt7lNBgx24apMGyEvkzLcmbWAkG5gm1S2FNipGE4RvMdcq9VdMZMvaSS2SlEbzL5ADDMFUkZwWA13arZLRmhYrx9KGiZyG+lMqyVfM8jHyX6ouzK5KZozNEUZwWvAaJ8UpiBwY6peG1olJQ3tNkNkEEGIXs2S3CzVpmYfLBire0itlx8WJQwXc5j8z53IuWcCZAygIpnIkwV0GoRJdf8FU1Xyf65bolEWM3fOMP0tW94zgK9h4YFzjfV630UZMHzlgZcgVogAOO1Db1AxlC8T8F2Qj660gNVlAQhVGxUcNqT+v3lLVyYfbvgaPg6+ZTS9fL9AWwsQm5aAE8NEqIfvvXpO4LwsaKe+coqbgDUDwTY5AEcaByT03GkuTuPHgWMAO9Hc78NVUcmXUmc3r3mNEjx/7PCyEKXh7DBMsbP4hp7z/M4MNPgOxd77Fp78R0PzhXcYKy29/3ljiY6Ys7Xfal6KAOQ5EFTerxrVw1ByCECrND/3uW3VtIe86KuJLP1s4TPPibHePXQ6m/gzTyeAZK8fwfnggYEyJmmw+rueO7E7cMwXVo7ugI5uqG7CS6KhOsbx2iHkVFm0DtV8iUSi5dWjLmpy+2sd/RNYBA937Dp8= X-Forefront-Antispam-Report: CIP:149.199.80.198; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:xir-pvapexch01.xlnx.xilinx.com; PTR:unknown-80-198.xilinx.com; CAT:NONE; SFS:(13230001)(4636009)(36840700001)(40470700004)(46966006)(31696002)(70206006)(31686004)(70586007)(2906002)(5660300002)(508600001)(9786002)(8936002)(8676002)(4326008)(7636003)(44832011)(36860700001)(36756003)(316002)(356005)(186003)(2616005)(47076005)(54906003)(53546011)(336012)(110136005)(426003)(82310400005)(40460700003)(26005)(83380400001)(50156003)(43740500002); DIR:OUT; SFP:1101; X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jun 2022 15:46:31.4828 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dd07bc6c-a4d7-4fa9-1a25-08da489ce4d3 X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.80.198]; Helo=[xir-pvapexch01.xlnx.xilinx.com] X-MS-Exchange-CrossTenant-AuthSource: SN1NAM02FT0019.eop-nam02.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR02MB5186 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 On 6/7/2022 9:32 AM, Huisong Li wrote: > > 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; > + } > + } > +} If you go with 'rss_type_table[]', above function can be used for both 'port_infos_display()' and 'rss_types_display()', what do you think? And perhaps 'rss_offload_types_display()' can get length as parameter. > + > 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 >