From patchwork Wed Sep 2 02:48:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lijun Ou X-Patchwork-Id: 76278 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 679B3A04B5; Wed, 2 Sep 2020 04:50:36 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0357E1C069; Wed, 2 Sep 2020 04:50:35 +0200 (CEST) Received: from huawei.com (szxga04-in.huawei.com [45.249.212.190]) by dpdk.org (Postfix) with ESMTP id B981C137D for ; Wed, 2 Sep 2020 04:50:32 +0200 (CEST) Received: from DGGEMS401-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 25408ABB4730D102D431; Wed, 2 Sep 2020 10:50:31 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by DGGEMS401-HUB.china.huawei.com (10.3.19.201) with Microsoft SMTP Server id 14.3.487.0; Wed, 2 Sep 2020 10:50:22 +0800 From: Lijun Ou To: , , , CC: , Date: Wed, 2 Sep 2020 10:48:04 +0800 Message-ID: <1599014884-62771-1-git-send-email-oulijun@huawei.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-Originating-IP: [10.69.192.56] X-CFilter-Loop: Reflected Subject: [dpdk-dev] [PATCH v2] app/testpmd: fix the default RSS key configuration X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" When a user runs a flow create cmd to configure an RSS rule with specifying the empty rss actions in testpmd, this mean that the flow gets the default RSS functions from the valid NIC default RSS hash key. However, the testpmd is not set the default RSS key incorrectly when RSS key is not specified in flow create cmd. the cmdline as flows: 1. first, startup testpmd: testpmd> show port 0 rss-hash key RSS functions: all ipv4-frag ipv4-other ipv6-frag ipv6-other ip RSS key: 6D5A56DA255B0EC24167253D43A38FB0D0CA2BCBAE7B30B477CB2DA38030F20C6A42B73BBEAC01FA 2. create a rss rule testpmd> flow create 0 ingress pattern eth / ipv4 / udp / end actions rss \ types ipv4-udp end queues end / end 3. show rss-hash key testpmd> show port 0 rss-hash key RSS functions: all ipv4-udp udp RSS key: 74657374706D6427732064656661756C74205253532068617368206B65792C206F76657272696465 Now, it uses rte_eth_dev_rss_hash_conf_get to correctly the default rss key. the cmdline and result as flows: testpmd> show port 0 rss-hash key RSS functions: all ipv4-frag ipv4-other ipv6-frag ipv6-other ip RSS key: 6D5A56DA255B0EC24167253D43A38FB0D0CA2BCBAE7B30B477CB2DA38030F20C6A42B73BBEAC01FA testpmd> flow create 0 ingress pattern eth / ipv4 / udp / end actions rss \ types ipv4-udp end queues end / end testpmd> show port 0 rss-hash key RSS functions: all ipv4-udp udp RSS key: 6D5A56DA255B0EC24167253D43A38FB0D0CA2BCBAE7B30B477CB2DA38030F20C6A42B73BBEAC01FA Fixes: ac8d22de2394 ("ethdev: flatten RSS configuration in flow API") Cc: stable@dpdk.org Signed-off-by: Lijun Ou --- V1->V2: fix the commit. --- app/test-pmd/cmdline_flow.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index 6263d30..e6648da 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -4312,6 +4312,7 @@ parse_vc_action_rss(struct context *ctx, const struct token *token, action_rss_data->queue[i] = i; if (!port_id_is_invalid(ctx->port, DISABLED_WARN) && ctx->port != (portid_t)RTE_PORT_ALL) { + struct rte_eth_rss_conf rss_conf = {0}; struct rte_eth_dev_info info; int ret2; @@ -4322,6 +4323,13 @@ parse_vc_action_rss(struct context *ctx, const struct token *token, action_rss_data->conf.key_len = RTE_MIN(sizeof(action_rss_data->key), info.hash_key_size); + + rss_conf.rss_key_len = sizeof(action_rss_data->key); + rss_conf.rss_key = action_rss_data->key; + ret2 = rte_eth_dev_rss_hash_conf_get(ctx->port, &rss_conf); + if (ret2 != 0) + return ret2; + action_rss_data->conf.key = rss_conf.rss_key; } action->conf = &action_rss_data->conf; return ret;