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 E241C4321D; Sat, 28 Oct 2023 05:14:15 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6F09A4029A; Sat, 28 Oct 2023 05:14:15 +0200 (CEST) Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by mails.dpdk.org (Postfix) with ESMTP id 3D13440291 for ; Sat, 28 Oct 2023 05:14:12 +0200 (CEST) Received: from kwepemm000004.china.huawei.com (unknown [172.30.72.56]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4SHPfQ5HYlzPnh3 for ; Sat, 28 Oct 2023 11:10:06 +0800 (CST) Received: from [10.67.121.59] (10.67.121.59) by kwepemm000004.china.huawei.com (7.193.23.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.31; Sat, 28 Oct 2023 11:14:10 +0800 Message-ID: <94580e37-f43f-7c6f-58eb-396774c960bc@huawei.com> Date: Sat, 28 Oct 2023 11:14:09 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Subject: Re: [PATCH v7 9/9] app/testpmd: add RSS hash algorithms display To: Jie Hai , , Aman Singh , Yuying Zhang CC: , References: <20231027092836.445224-1-haijie1@huawei.com> <20231028014611.4086500-1-haijie1@huawei.com> <20231028014611.4086500-10-haijie1@huawei.com> From: "lihuisong (C)" In-Reply-To: <20231028014611.4086500-10-haijie1@huawei.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.67.121.59] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To kwepemm000004.china.huawei.com (7.193.23.18) 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 在 2023/10/28 9:46, Jie Hai 写道: > Add the command "show port X rss-hash algorithm" to display > the RSS hash algorithms of port X. An example is shown: > > testpmd> show port 0 rss-hash algorithm > RSS algorithms: > toeplitz > > Signed-off-by: Jie Hai > --- > app/test-pmd/cmdline.c | 29 ++++++++++++++++++++++++----- > app/test-pmd/config.c | 29 ++++++++++------------------- > app/test-pmd/testpmd.h | 2 +- > 3 files changed, 35 insertions(+), 25 deletions(-) > > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c > index 679ca47b9401..d0eafd7f1254 100644 > --- a/app/test-pmd/cmdline.c > +++ b/app/test-pmd/cmdline.c > @@ -174,8 +174,8 @@ static void cmd_help_long_parsed(void *parsed_result, > " by masks on port X. size is used to indicate the" > " hardware supported reta size\n\n" > > - "show port (port_id) rss-hash [key]\n" > - " Display the RSS hash functions and RSS hash key of port\n\n" > + "show port (port_id) rss-hash [key | algorithm]\n" > + " Display the RSS hash functions, RSS hash key and RSS hash algorithms of port\n\n" > > "clear port (info|stats|xstats|fdir) (port_id|all)\n" > " Clear information for port_id, or all.\n\n" > @@ -3026,15 +3026,17 @@ struct cmd_showport_rss_hash { > cmdline_fixed_string_t rss_hash; > cmdline_fixed_string_t rss_type; > cmdline_fixed_string_t key; /* optional argument */ > + cmdline_fixed_string_t algorithm; /* optional argument */ > }; > > static void cmd_showport_rss_hash_parsed(void *parsed_result, > __rte_unused struct cmdline *cl, > - void *show_rss_key) > + __rte_unused void *data) > { > struct cmd_showport_rss_hash *res = parsed_result; > > - port_rss_hash_conf_show(res->port_id, show_rss_key != NULL); > + port_rss_hash_conf_show(res->port_id, > + !strcmp(res->key, "key"), !strcmp(res->algorithm, "algorithm")); > } > > static cmdline_parse_token_string_t cmd_showport_rss_hash_show = > @@ -3049,6 +3051,8 @@ static cmdline_parse_token_string_t cmd_showport_rss_hash_rss_hash = > "rss-hash"); > static cmdline_parse_token_string_t cmd_showport_rss_hash_rss_key = > TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, key, "key"); > +static cmdline_parse_token_string_t cmd_showport_rss_hash_rss_algo = > + TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, algorithm, "algorithm"); > > static cmdline_parse_inst_t cmd_showport_rss_hash = { > .f = cmd_showport_rss_hash_parsed, > @@ -3065,7 +3069,7 @@ static cmdline_parse_inst_t cmd_showport_rss_hash = { > > static cmdline_parse_inst_t cmd_showport_rss_hash_key = { > .f = cmd_showport_rss_hash_parsed, > - .data = (void *)1, > + .data = NULL, > .help_str = "show port rss-hash key", > .tokens = { > (void *)&cmd_showport_rss_hash_show, > @@ -3077,6 +3081,20 @@ static cmdline_parse_inst_t cmd_showport_rss_hash_key = { > }, > }; > > +static cmdline_parse_inst_t cmd_showport_rss_hash_algo = { > + .f = cmd_showport_rss_hash_parsed, > + .data = NULL, > + .help_str = "show port rss-hash algorithm", > + .tokens = { > + (void *)&cmd_showport_rss_hash_show, > + (void *)&cmd_showport_rss_hash_port, > + (void *)&cmd_showport_rss_hash_port_id, > + (void *)&cmd_showport_rss_hash_rss_hash, > + (void *)&cmd_showport_rss_hash_rss_algo, > + NULL, > + }, > +}; > + > /* *** Configure DCB *** */ > struct cmd_config_dcb { > cmdline_fixed_string_t port; > @@ -12953,6 +12971,7 @@ static cmdline_parse_ctx_t builtin_ctx[] = { > (cmdline_parse_inst_t *)&cmd_tunnel_udp_config, > (cmdline_parse_inst_t *)&cmd_showport_rss_hash, > (cmdline_parse_inst_t *)&cmd_showport_rss_hash_key, > + (cmdline_parse_inst_t *)&cmd_showport_rss_hash_algo, > (cmdline_parse_inst_t *)&cmd_config_rss_hash_key, > (cmdline_parse_inst_t *)&cmd_cleanup_txq_mbufs, > (cmdline_parse_inst_t *)&cmd_dump, > diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c > index b9fdb7e8f162..c090b77b536c 100644 > --- a/app/test-pmd/config.c > +++ b/app/test-pmd/config.c > @@ -1504,24 +1504,7 @@ rss_config_display(struct rte_flow_action_rss *rss_conf) > printf(" %d", rss_conf->queue[i]); > printf("\n"); > > - printf(" function: "); > - switch (rss_conf->func) { > - case RTE_ETH_HASH_FUNCTION_DEFAULT: > - printf("default\n"); > - break; > - case RTE_ETH_HASH_FUNCTION_TOEPLITZ: > - printf("toeplitz\n"); > - break; > - case RTE_ETH_HASH_FUNCTION_SIMPLE_XOR: > - printf("simple_xor\n"); > - break; > - case RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ: > - printf("symmetric_toeplitz\n"); > - break; > - default: > - printf("Unknown function\n"); > - return; > - } > + printf(" function: %s\n", rte_eth_dev_rss_algo_name(rss_conf->func)); > > printf(" RSS key:\n"); > if (rss_conf->key_len == 0) { > @@ -4486,7 +4469,7 @@ port_rss_reta_info(portid_t port_id, > * key of the port. > */ > void > -port_rss_hash_conf_show(portid_t port_id, int show_rss_key) > +port_rss_hash_conf_show(portid_t port_id, int show_rss_key, int show_rss_algo) > { > struct rte_eth_rss_conf rss_conf = {0}; > uint8_t rss_key[RSS_HASH_KEY_LENGTH]; > @@ -4536,8 +4519,16 @@ port_rss_hash_conf_show(portid_t port_id, int show_rss_key) > printf("RSS disabled\n"); > return; > } > + > + if (show_rss_algo) { > + printf("RSS algorithms:\n %s\n", > + rte_eth_dev_rss_algo_name(rss_conf.algorithm)); algorithms --> algorithm, right? Acked-by: Huisong Li > + return; > + } > + > printf("RSS functions:\n"); > rss_types_display(rss_hf, TESTPMD_RSS_TYPES_CHAR_NUM_PER_LINE); > + > if (!show_rss_key) > return; > printf("RSS key:\n"); > diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h > index 09a36b90b806..9b10a9ea1cf2 100644 > --- a/app/test-pmd/testpmd.h > +++ b/app/test-pmd/testpmd.h > @@ -1153,7 +1153,7 @@ int set_vf_rate_limit(portid_t port_id, uint16_t vf, uint32_t rate, > int set_rxq_avail_thresh(portid_t port_id, uint16_t queue_id, > uint8_t avail_thresh); > > -void port_rss_hash_conf_show(portid_t port_id, int show_rss_key); > +void port_rss_hash_conf_show(portid_t port_id, int show_rss_key, int show_rss_algo); > void port_rss_hash_key_update(portid_t port_id, char rss_type[], > uint8_t *hash_key, uint8_t hash_key_len); > int rx_queue_id_is_invalid(queueid_t rxq_id);