Signed-off-by: speech_white <humin29@huawei.com> (cherry picked from commit cde27f08d4dbefb7f03bfca6229f95cb88bf08a2)
58 lines
2.0 KiB
Diff
58 lines
2.0 KiB
Diff
From ca937bfe5f48de028c25312bcdb30ec1a6a4cd8e Mon Sep 17 00:00:00 2001
|
|
From: Lijun Ou <oulijun@huawei.com>
|
|
Date: Fri, 28 Jan 2022 10:07:04 +0800
|
|
Subject: [PATCH] net/hns3: fix RSS key with null
|
|
|
|
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 <oulijun@huawei.com>
|
|
---
|
|
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
|
|
|