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 541EFA0032; Fri, 24 Jun 2022 15:55:08 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 43E704069D; Fri, 24 Jun 2022 15:55:08 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2044.outbound.protection.outlook.com [40.107.220.44]) by mails.dpdk.org (Postfix) with ESMTP id B653D400EF for ; Fri, 24 Jun 2022 15:55:06 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GZdUEModXfJ4Y/I2IenM3BsoBfid2hvBFTt/SBCA8H/HbsvZBcAa54k461EKAiFzusx4q4CoHbHC6u2tM+MeIf2Tu3q0CB1gqJuIv3cb9qysMfBWv3Bx+o4porJRjBAcQWyUZx+DKjA82rrO2Lp/YahPpvkH3nABrREj3LXByyiGnIqdtS9n6uHK6X2LoUX8FKIIFRGNK0QnitpuUefJ+f/nJ1VXXIGWkaqudA+jy9QSy/P0GbmnMX+E0BJ0sgbHphleEiEVW6eXfMx2QSKOSYSyRLAFN0o3uAZ10I34o7Bv0Rg2SjJjR2U/x9rieEDdLJFlpZPyncIt+OsNhkY3RA== 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=CeT7irzpPiwgq8p83c5o/hLiJsiOiw8W5ECwmDZjFAA=; b=K1PhfOd5flX9cxRirc/K6l3EXt3xBuyZbE4Mlen858FiUm374H7blohkrt+Ok0hLy7KUnAPZkSCMUsbzdm905/u05xKSqNNz38n+ZDk41tkS7K7MV3xJlgm04HUlBPeT1+wmCKlfcF7CNycWPubnutvsbPtKEjGmh7MvkWBqV7cojeTB0zz2wIeqS5igVUOKTCRztE3rO4IvDKYNgICRVCbifajX1MYcmEPwjW8OsvntJdbN/lixnYhRdv5OzMkCTfWheemQf7kmglblFUNzp/n9FAXzislIwa/1KdasXY9+xMlrrmChpctJmzrbTGGl30u+5fk4zIgQaSG6gTCQWQ== 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=CeT7irzpPiwgq8p83c5o/hLiJsiOiw8W5ECwmDZjFAA=; b=En5Y0Hi5IQTsQBqZO6xEiWrCRK1qwfnX+X+0BYU5HBYBiIPUF+tVq0aSqbpPuQl/wlVJu+DZke/S+YLalEcP4T/sERsJn7GRFimat6AwpIUSKlqDiokqrpcDoqmiZ6lxxNs8anO7P3q5AEkgmXvdHrhHZ7aHlgtlSYbCZaE41SQ= Received: from BN1PR14CA0007.namprd14.prod.outlook.com (2603:10b6:408:e3::12) by BYAPR02MB5048.namprd02.prod.outlook.com (2603:10b6:a03:71::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.18; Fri, 24 Jun 2022 13:55:02 +0000 Received: from BN1NAM02FT032.eop-nam02.prod.protection.outlook.com (2603:10b6:408:e3:cafe::3c) by BN1PR14CA0007.outlook.office365.com (2603:10b6:408:e3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.16 via Frontend Transport; Fri, 24 Jun 2022 13:55:02 +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-pvapexch02.xlnx.xilinx.com; pr=C Received: from xir-pvapexch02.xlnx.xilinx.com (149.199.80.198) by BN1NAM02FT032.mail.protection.outlook.com (10.13.3.192) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5373.15 via Frontend Transport; Fri, 24 Jun 2022 13:55:01 +0000 Received: from xir-pvapexch01.xlnx.xilinx.com (172.21.17.15) by xir-pvapexch02.xlnx.xilinx.com (172.21.17.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.14; Fri, 24 Jun 2022 14:55:01 +0100 Received: from smtp.xilinx.com (172.21.105.197) by xir-pvapexch01.xlnx.xilinx.com (172.21.17.15) with Microsoft SMTP Server id 15.1.2176.14 via Frontend Transport; Fri, 24 Jun 2022 14:55:00 +0100 Envelope-to: lihuisong@huawei.com, aman.deep.singh@intel.com, yuying.zhang@intel.com, andrew.rybchenko@oktetlabs.ru, dev@dpdk.org, thomas@monjalon.net, huangdaode@huawei.com, liudongdong3@huawei.com Received: from [10.71.119.54] (port=60146) by smtp.xilinx.com with esmtp (Exim 4.90) (envelope-from ) id 1o4jm0-0003Oo-IG; Fri, 24 Jun 2022 14:55:00 +0100 Message-ID: <3c8eede2-dfe2-b8a6-1bf3-8fa80c713195@xilinx.com> Date: Fri, 24 Jun 2022 14:55:00 +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 V5 3/7] app/testpmd: refactor config all RSS command Content-Language: en-US To: Huisong Li , , , CC: , , , References: <20220429102445.23711-1-lihuisong@huawei.com> <20220624072401.21839-1-lihuisong@huawei.com> <20220624072401.21839-4-lihuisong@huawei.com> From: Ferruh Yigit In-Reply-To: <20220624072401.21839-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: 7e4aad5e-5ce6-4ade-a05c-08da55e92288 X-MS-TrafficTypeDiagnostic: BYAPR02MB5048:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pDVuI1UMb5w3EK1OneR+7wTSNt4KqdSjUXx0FR8WSUHiUmt3xqxhGx2vmHBLjCBDRkaM/lijtbD7pc27swA1ZlM/jOqx51VUqWNUzLm+4TJZ/JT0RWuCpzcj0PLgx8u1qGIeJy5zSIPOwGb3/VugfQ2FRFYEPCjFjbGVuEfnRIqQAIoj2SXds1+6AR2v15UklVPrMB6cvoRbJAEnvrZB0SnxCpF9pvQmU2AL+KNldAKsINZAQNd1z13/pTteWIMr1beXNSL/APSDgQOtOouMu7kusWeK/7D8TJGbP/Ltgm6pPO0VsPDCPh91vLa43PWA3XVwS5pyBE+Tiy7Utx6DwZu6K/H/+aFbUZMk9br3BlvoyVYECowZQC+F/pCgIwO0e4vP6ItVDJ8Pg09wJjiUGsOxlQA/vPO6HqYqKsMBy+DQFBnRchUcCh+GnoUqj4798wIfv2ymDOrz17DydEyqInSaDz40ntW/rFGvpM78yq9teCryRZn+h1mQF/eLKlLWa0f7hhqKZwevGmha5HkTTRipHYrsM12PZ4ESuX1G1CQ6wAcWzlM7voKpw3Q4y+xnDFW9P4tUb6f8qMNfzVBU50i44B8sv1LqMTgDWEf6kB9MASiN2zV8aShstdSRcHmj8BvF5OdRW/cHHjU8kpwvMCAdQk7F7cSmF8K3rQgCajtW6/WS8aKOX54gUBBxb3n378sb607GzH+J0bVqVu4Nw3VQwx9WORklV9Muq/YTNTJJjIY804Eb4AoeXaUpCLyCoF+j24XjCBEuWUdWgnc4zmNHRyIkdc+UzumuJmCDrxCRDkZ3gOERAnbTPT7+hby11+udv4flKAMm56o46w3690Rj/HxJ3JEvNLhpni9ndUM= X-Forefront-Antispam-Report: CIP:149.199.80.198; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:xir-pvapexch02.xlnx.xilinx.com; PTR:unknown-80-198.xilinx.com; CAT:NONE; SFS:(13230016)(4636009)(396003)(136003)(376002)(39860400002)(346002)(46966006)(40470700004)(36840700001)(40460700003)(186003)(110136005)(336012)(47076005)(426003)(83380400001)(26005)(36756003)(31686004)(478600001)(31696002)(40480700001)(82310400005)(36860700001)(30864003)(8936002)(5660300002)(7636003)(9786002)(316002)(54906003)(82740400003)(41300700001)(53546011)(2616005)(2906002)(70586007)(356005)(4326008)(70206006)(8676002)(44832011)(50156003)(43740500002); DIR:OUT; SFP:1101; X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2022 13:55:01.9748 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7e4aad5e-5ce6-4ade-a05c-08da55e92288 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-pvapexch02.xlnx.xilinx.com] X-MS-Exchange-CrossTenant-AuthSource: BN1NAM02FT032.eop-nam02.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR02MB5048 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/24/2022 8:23 AM, Huisong Li wrote: > CAUTION: This message has originated from an External Source. Please use proper judgment and caution when opening attachments, clicking links, or responding to this email. > > > The "port config rss-hash-key" and "show port rss-hash > key" commands both use the 'rss_type_table[]' to get 'rss_types' or the RSS > type name. So this patch uses the 'rss_type_table[]' to get the rss types. > In this way, this command naturally supports more individual types. > > Suggested-by: Ferruh Yigit > Signed-off-by: Huisong Li > --- > app/test-pmd/cmdline.c | 127 ++++++-------------- > app/test-pmd/config.c | 20 ++- > app/test-pmd/testpmd.h | 1 + > doc/guides/testpmd_app_ug/testpmd_funcs.rst | 11 +- > 4 files changed, 63 insertions(+), 96 deletions(-) > > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c > index a701bac953..bea869ce56 100644 > --- a/app/test-pmd/cmdline.c > +++ b/app/test-pmd/cmdline.c > @@ -693,9 +693,14 @@ static void cmd_help_long_parsed(void *parsed_result, > " Enable or disable packet drop on all RX queues of all ports when no " > "receive buffers available.\n\n" > > - "port config all rss (all|default|ip|tcp|udp|sctp|" > - "l2-payload|port|vxlan|geneve|nvgre|vxlan-gpe|ecpri|mpls|ipv4-chksum|l2tpv2|" > - "none|level-default|level-outer|level-inner|)\n" > + "port config all rss (all|default|level-default|level-outer|level-inner|" > + "ip|tcp|udp|sctp|tunnel|vlan|none|" > + "ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|" > + "ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|ipv6-ex|ipv6-tcp-ex|ipv6-udp-ex|" > + "l2_payload|port|vxlan|geneve|nvgre|gtpu|eth|s-vlan|c-vlan|" > + "esp|ah|l2tpv3|pfcp|pppoe|ecpri|mpls|ipv4-chksum|l4-chksum|" > + "l2tpv2|l3-pre96|l3-pre64|l3-pre56|l3-pre48|l3-pre40|l3-pre32|" > + "l2-dst-only|l2-src-only|l4-dst-only|l4-src-only|l3-dst-only|l3-src-only|)\n" > " Set the RSS mode.\n\n" > > "port config port-id rss reta (hash,queue)[,(hash,queue)]\n" > @@ -2062,81 +2067,7 @@ cmd_config_rss_parsed(void *parsed_result, > uint16_t i; > int ret; > > - if (!strcmp(res->value, "all")) > - rss_conf.rss_hf = RTE_ETH_RSS_ETH | RTE_ETH_RSS_VLAN | RTE_ETH_RSS_IP | > - RTE_ETH_RSS_TCP | RTE_ETH_RSS_UDP | RTE_ETH_RSS_SCTP | > - RTE_ETH_RSS_L2_PAYLOAD | RTE_ETH_RSS_L2TPV3 | RTE_ETH_RSS_ESP | > - RTE_ETH_RSS_AH | RTE_ETH_RSS_PFCP | RTE_ETH_RSS_GTPU | > - RTE_ETH_RSS_ECPRI | RTE_ETH_RSS_L2TPV2; > - else if (!strcmp(res->value, "eth")) > - rss_conf.rss_hf = RTE_ETH_RSS_ETH; > - else if (!strcmp(res->value, "vlan")) > - rss_conf.rss_hf = RTE_ETH_RSS_VLAN; > - else if (!strcmp(res->value, "ip")) > - rss_conf.rss_hf = RTE_ETH_RSS_IP; > - else if (!strcmp(res->value, "udp")) > - rss_conf.rss_hf = RTE_ETH_RSS_UDP; > - else if (!strcmp(res->value, "tcp")) > - rss_conf.rss_hf = RTE_ETH_RSS_TCP; > - else if (!strcmp(res->value, "sctp")) > - rss_conf.rss_hf = RTE_ETH_RSS_SCTP; > - else if (!strcmp(res->value, "l2_payload")) > - rss_conf.rss_hf = RTE_ETH_RSS_L2_PAYLOAD; > - else if (!strcmp(res->value, "port")) > - rss_conf.rss_hf = RTE_ETH_RSS_PORT; > - else if (!strcmp(res->value, "vxlan")) > - rss_conf.rss_hf = RTE_ETH_RSS_VXLAN; > - else if (!strcmp(res->value, "geneve")) > - rss_conf.rss_hf = RTE_ETH_RSS_GENEVE; > - else if (!strcmp(res->value, "nvgre")) > - rss_conf.rss_hf = RTE_ETH_RSS_NVGRE; > - else if (!strcmp(res->value, "l3-pre32")) > - rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE32; > - else if (!strcmp(res->value, "l3-pre40")) > - rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE40; > - else if (!strcmp(res->value, "l3-pre48")) > - rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE48; > - else if (!strcmp(res->value, "l3-pre56")) > - rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE56; > - else if (!strcmp(res->value, "l3-pre64")) > - rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE64; > - else if (!strcmp(res->value, "l3-pre96")) > - rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE96; > - else if (!strcmp(res->value, "l3-src-only")) > - rss_conf.rss_hf = RTE_ETH_RSS_L3_SRC_ONLY; > - else if (!strcmp(res->value, "l3-dst-only")) > - rss_conf.rss_hf = RTE_ETH_RSS_L3_DST_ONLY; > - else if (!strcmp(res->value, "l4-src-only")) > - rss_conf.rss_hf = RTE_ETH_RSS_L4_SRC_ONLY; > - else if (!strcmp(res->value, "l4-dst-only")) > - rss_conf.rss_hf = RTE_ETH_RSS_L4_DST_ONLY; > - else if (!strcmp(res->value, "l2-src-only")) > - rss_conf.rss_hf = RTE_ETH_RSS_L2_SRC_ONLY; > - else if (!strcmp(res->value, "l2-dst-only")) > - rss_conf.rss_hf = RTE_ETH_RSS_L2_DST_ONLY; > - else if (!strcmp(res->value, "l2tpv3")) > - rss_conf.rss_hf = RTE_ETH_RSS_L2TPV3; > - else if (!strcmp(res->value, "esp")) > - rss_conf.rss_hf = RTE_ETH_RSS_ESP; > - else if (!strcmp(res->value, "ah")) > - rss_conf.rss_hf = RTE_ETH_RSS_AH; > - else if (!strcmp(res->value, "pfcp")) > - rss_conf.rss_hf = RTE_ETH_RSS_PFCP; > - else if (!strcmp(res->value, "pppoe")) > - rss_conf.rss_hf = RTE_ETH_RSS_PPPOE; > - else if (!strcmp(res->value, "gtpu")) > - rss_conf.rss_hf = RTE_ETH_RSS_GTPU; > - else if (!strcmp(res->value, "ecpri")) > - rss_conf.rss_hf = RTE_ETH_RSS_ECPRI; > - else if (!strcmp(res->value, "mpls")) > - rss_conf.rss_hf = RTE_ETH_RSS_MPLS; > - else if (!strcmp(res->value, "ipv4-chksum")) > - rss_conf.rss_hf = RTE_ETH_RSS_IPV4_CHKSUM; > - else if (!strcmp(res->value, "l2tpv2")) > - rss_conf.rss_hf = RTE_ETH_RSS_L2TPV2; > - else if (!strcmp(res->value, "none")) > - rss_conf.rss_hf = 0; > - else if (!strcmp(res->value, "level-default")) { > + if (!strcmp(res->value, "level-default")) { > rss_hf &= (~RTE_ETH_RSS_LEVEL_MASK); > rss_conf.rss_hf = (rss_hf | RTE_ETH_RSS_LEVEL_PMD_DEFAULT); > } else if (!strcmp(res->value, "level-outer")) { > @@ -2145,14 +2076,29 @@ cmd_config_rss_parsed(void *parsed_result, > } else if (!strcmp(res->value, "level-inner")) { > rss_hf &= (~RTE_ETH_RSS_LEVEL_MASK); > rss_conf.rss_hf = (rss_hf | RTE_ETH_RSS_LEVEL_INNERMOST); > - } else if (!strcmp(res->value, "default")) > + } else if (!strcmp(res->value, "default")) { > use_default = 1; > - else if (isdigit(res->value[0]) && atoi(res->value) > 0 && > - atoi(res->value) < 64) > - rss_conf.rss_hf = 1ULL << atoi(res->value); > - else { > - fprintf(stderr, "Unknown parameter\n"); > - return; > + } else if (isdigit(res->value[0])) { > + int value = atoi(res->value); > + if (value > 0 && value < 64) > + rss_conf.rss_hf = 1ULL << (uint8_t)value; > + else { > + fprintf(stderr, "flowtype_id should be greater than 0 and less than 64.\n"); > + return; > + } > + } else if (!strcmp(res->value, "all") || !strcmp(res->value, "ip") || > + !strcmp(res->value, "udp") || !strcmp(res->value, "tcp") || > + !strcmp(res->value, "sctp") || !strcmp(res->value, "vlan") || > + !strcmp(res->value, "none")) { > + /* Parse group types or none type */ > + rss_conf.rss_hf = str_to_rsstypes(res->value); Why need to have a specific 'if' for the above types, why not directly use 'str_to_rsstypes()'? > + } else { > + /* Get individual type. */ > + rss_conf.rss_hf = str_to_rsstypes(res->value); > + if (rss_conf.rss_hf == 0) { > + fprintf(stderr, "Unknown parameter\n"); > + return; > + } > } > rss_conf.rss_key = NULL; > /* Update global configuration for RSS types. */ > @@ -2203,9 +2149,14 @@ static cmdline_parse_inst_t cmd_config_rss = { > .f = cmd_config_rss_parsed, > .data = NULL, > .help_str = "port config all rss " > - "all|default|eth|vlan|ip|tcp|udp|sctp|l2-payload|port|vxlan|geneve|" > - "nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|ecpri|mpls|ipv4-chksum|l2tpv2|" > - "none|level-default|level-outer|level-inner|", > + "all|default|level-default|level-outer|level-inner|" > + "ip|tcp|udp|sctp|tunnel|vlan|none|" > + "ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|" > + "ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|ipv6-ex|ipv6-tcp-ex|ipv6-udp-ex|" > + "l2_payload|port|vxlan|geneve|nvgre|gtpu|eth|s-vlan|c-vlan|" > + "esp|ah|l2tpv3|pfcp|pppoe|ecpri|mpls|ipv4-chksum|l4-chksum|" > + "l2tpv2|l3-pre96|l3-pre64|l3-pre56|l3-pre48|l3-pre40|l3-pre32|" > + "l2-dst-only|l2-src-only|l4-dst-only|l4-src-only|l3-dst-only|l3-src-only|", > .tokens = { > (void *)&cmd_config_rss_port, > (void *)&cmd_config_rss_keyword, > diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c > index 36a828307c..3bf03c0969 100644 > --- a/app/test-pmd/config.c > +++ b/app/test-pmd/config.c > @@ -673,6 +673,19 @@ print_dev_capabilities(uint64_t capabilities) > } > } > > +uint64_t > +str_to_rsstypes(const char *str) > +{ > + uint16_t i; > + > + for (i = 0; rss_type_table[i].str != NULL; i++) { > + if (strcmp(rss_type_table[i].str, str) == 0) > + return rss_type_table[i].rss_type; > + } > + > + return 0; > +} > + > const char * > rsstypes_to_str(uint64_t rss_type) > { > @@ -3856,15 +3869,10 @@ port_rss_hash_key_update(portid_t port_id, char rss_type[], uint8_t *hash_key, > { > struct rte_eth_rss_conf rss_conf; > int diag; > - unsigned int i; > > rss_conf.rss_key = NULL; > rss_conf.rss_key_len = 0; > - rss_conf.rss_hf = 0; > - for (i = 0; rss_type_table[i].str; i++) { > - if (!strcmp(rss_type_table[i].str, rss_type)) > - rss_conf.rss_hf = rss_type_table[i].rss_type; > - } > + rss_conf.rss_hf = str_to_rsstypes(rss_type); > diag = rte_eth_dev_rss_hash_conf_get(port_id, &rss_conf); > if (diag == 0) { > rss_conf.rss_key = hash_key; > diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h > index 195488b602..2e2987eb66 100644 > --- a/app/test-pmd/testpmd.h > +++ b/app/test-pmd/testpmd.h > @@ -1199,6 +1199,7 @@ extern int flow_parse(const char *src, void *result, unsigned int size, > struct rte_flow_item **pattern, > struct rte_flow_action **actions); > > +uint64_t str_to_rsstypes(const char *str); > const char *rsstypes_to_str(uint64_t rss_type); > > /* For registering driver specific testpmd commands. */ > diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst > index cc299cff6c..63a9e26f33 100644 > --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst > +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst > @@ -2143,8 +2143,15 @@ port config - RSS > ~~~~~~~~~~~~~~~~~ > > Set the RSS (Receive Side Scaling) mode on or off:: > - > - testpmd> port config all rss (all|default|eth|vlan|ip|tcp|udp|sctp|l2-payload|port|vxlan|geneve|nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|ecpri|mpls|l2tpv2|none) > + testpmd> port config all rss (all|default|level-default|level-outer|level-inner| \ > + ip|tcp|udp|sctp|tunnel|vlan|none| \ > + ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other| \ > + ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp| \ > + ipv6-other|ipv6-ex|ipv6-tcp-ex|ipv6-udp-exl2_payload|port| \ > + vxlan|geneve|nvgre|gtpu|eth|s-vlan|c-vlan| \ > + esp|ah|l2tpv3|pfcp|pppoe|ecpri|mpls|ipv4-chksum|l4-chksum| \ > + l2tpv2|l3-pre96|l3-pre64|l3-pre56|l3-pre48|l3-pre40|l3-pre32| \ > + l2-dst-only|l2-src-only|l4-dst-only|l4-src-only|l3-dst-only|l3-src-only|) > > RSS is on by default. > > -- > 2.33.0 >