From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D8F0DA04DB; Thu, 15 Oct 2020 14:40:36 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4D3111E54A; Thu, 15 Oct 2020 14:40:34 +0200 (CEST) Received: from huawei.com (szxga06-in.huawei.com [45.249.212.32]) by dpdk.org (Postfix) with ESMTP id 69ED61E4B8 for ; Thu, 15 Oct 2020 14:40:31 +0200 (CEST) Received: from DGGEMS405-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id 48D9656294B82782C353; Thu, 15 Oct 2020 20:40:28 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by DGGEMS405-HUB.china.huawei.com (10.3.19.205) with Microsoft SMTP Server id 14.3.487.0; Thu, 15 Oct 2020 20:40:18 +0800 From: Lijun Ou To: , , , CC: , Date: Thu, 15 Oct 2020 20:41:02 +0800 Message-ID: <1602765662-43299-1-git-send-email-oulijun@huawei.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600955105-53176-2-git-send-email-oulijun@huawei.com> References: <1600955105-53176-2-git-send-email-oulijun@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.69.192.56] X-CFilter-Loop: Reflected Subject: [dpdk-dev] [PATCH v5] 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 start the testpmd, the pmd driver initializes the RSS configuration. Generally, the recommended RSS hash key is used as the default key in the driver. In addition, the default key is different from the default RSS flow in testpmd without specifying RSS hash key. So. if you do not specify the RSS key when creating an RSS rule, the testpmd uses the default key as the default RSS key of the RSS rule. As a result, you may mistakenly consider that the RSS key in use is the valid default key of the NIC, actually, the key and the valid default key of the NIC are two values. Consider the follow usage with testpmd: 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: -6D5A56DA255B0EC24167253D43A38FB0D0CA2BCBAE7B30B477CB2DA38030F -20C6A42B73BBEAC01FA 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: -74657374706D6427732064656661756C74205253532068617368206B65792C206F -76657272696465 In order to solve the above problems, it use the NIC valid default RSS key instead of the testpmd dummy RSS key in the flow configuration when the RSS key is not specified in the flow rule. If the NIC RSS key is invalid, it will use testpmd dummy RSS key as the default key. Fixes: ac8d22de2394 ("ethdev: flatten RSS configuration in flow API") Cc: stable@dpdk.org Signed-off-by: Lijun Ou Reviewed-by: Phil Yang --- V4->V5: -rewrite the commit log -add reviewed-by V3->V4: -fix checkpatch warning and shorter commit content. V2->V3: -fix checkpatch warning. 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 84bba0f..578555e 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -4735,6 +4735,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; @@ -4745,6 +4746,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; -- 2.7.4