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 9866FA034E; Fri, 28 Jan 2022 03:07:16 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3CF6142827; Fri, 28 Jan 2022 03:07:01 +0100 (CET) Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by mails.dpdk.org (Postfix) with ESMTP id 1AA0642761 for ; Fri, 28 Jan 2022 03:06:57 +0100 (CET) Received: from dggeme756-chm.china.huawei.com (unknown [172.30.72.53]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4JlLQP3JFLz9sC6; Fri, 28 Jan 2022 10:05:33 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by dggeme756-chm.china.huawei.com (10.3.19.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2308.21; Fri, 28 Jan 2022 10:06:54 +0800 From: "Min Hu (Connor)" To: CC: , Subject: [PATCH 2/6] net/hns3: fix RSS key with null Date: Fri, 28 Jan 2022 10:07:04 +0800 Message-ID: <20220128020708.62787-3-humin29@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20220128020708.62787-1-humin29@huawei.com> References: <20220128020708.62787-1-humin29@huawei.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.69.192.56] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To dggeme756-chm.china.huawei.com (10.3.19.102) 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 From: Lijun Ou Since the patch '1848b117' has initialized the variable 'key' in 'struct rte_flow_action_rss' with 'NULL', the PMD will use the default RSS key when create the first RSS rule with NULL RSS key. Then, if create a repeated RSS rule with the above, it will not identify duplicate rules and return an error message. To solve the preceding problem, determine whether the current RSS keys are the same based on whether the length of key_len of rss is 0. Fixes: 1848b117cca1 ("app/testpmd: fix RSS key for flow API RSS rule") Cc: stable@dpdk.org Signed-off-by: Lijun Ou --- drivers/net/hns3/hns3_flow.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/net/hns3/hns3_flow.c b/drivers/net/hns3/hns3_flow.c index 56ef6f57b2..aba07aaa6f 100644 --- a/drivers/net/hns3/hns3_flow.c +++ b/drivers/net/hns3/hns3_flow.c @@ -1286,6 +1286,7 @@ static bool hns3_action_rss_same(const struct rte_flow_action_rss *comp, const struct rte_flow_action_rss *with) { + bool rss_key_is_same; bool func_is_same; /* @@ -1302,11 +1303,16 @@ hns3_action_rss_same(const struct rte_flow_action_rss *comp, func_is_same = (with->func != RTE_ETH_HASH_FUNCTION_DEFAULT) ? (comp->func == with->func) : true; - return (func_is_same && + if (with->key_len == 0 || with->key == NULL) + rss_key_is_same = 1; + else + rss_key_is_same = comp->key_len == with->key_len && + !memcmp(comp->key, with->key, with->key_len); + + return (func_is_same && rss_key_is_same && comp->types == (with->types & HNS3_ETH_RSS_SUPPORT) && - comp->level == with->level && comp->key_len == with->key_len && + comp->level == with->level && comp->queue_num == with->queue_num && - !memcmp(comp->key, with->key, with->key_len) && !memcmp(comp->queue, with->queue, sizeof(*with->queue) * with->queue_num)); } -- 2.33.0