在 2020/7/15 15:14, Phil Yang 写道:
-----Original Message-----
From: dev <dev-boun...@dpdk.org> On Behalf Of Lijun Ou
Sent: Thursday, July 9, 2020 9:48 PM
To: wenzhuo...@intel.com; beilei.x...@intel.com;
bernard.iremon...@intel.com; adrien.mazarg...@6wind.com;
ferruh.yi...@intel.com
Cc: dev@dpdk.org; linux...@huawei.com
Subject: [dpdk-dev] [PATCH] app/testpmd: fix the default RSS key
configuration
When an user runs a flow create cmd to configure an RSS rule
without specifying the empty rss actions in testpmd, this mean
that the flow gets the default RSS functions. However, the
testpmd is not set the default RSS key incorrectly when RSS key
is specified in flow create cmd.
Hi Lijun,
I think it works.
When we create an RSS flow rule which doesn't specify any 'rss-hash-key', the
'rss-hash-key' will be updated with the default key.
Step 1:
testpmd> show port 0 rss-hash key
RSS functions:
all ipv4-frag ipv4-other ipv6-frag ipv6-other ip
RSS key:
4439796BB54C5023B675EA5B124F9F30B8A2C03DDFDC4D02A08C9B334AF64A4C05C6FA343958D8557D99583AE138C92E81150366
Step 2:
testpmd> flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types
ipv4-udp end queues end / end
Flow rule #0 created
Step 3:
testpmd> show port 0 rss-hash key
RSS functions:
all ipv4-udp udp
RSS key:
74657374706D6427732064656661756C74205253532068617368206B65792C206F7665727269646520697420666F722062657474
Thanks,
Phil
Yes, However, it is not the default value that users use when testpmd
starts. This may mislead users. When the driver is initialized, the
default key used by the driver is provided for users. The key varies
according to the DPDK vendor.However, after the DPDK is initialized, if
the user runs the flow create command without specifying the rss key,
the driver obtains another default key value, which may be different
from the default value expected by the user.
Thanks
Lijun Ou
Now, it uses rte_eth_dev_rss_hash_conf_get to correctly the
default rss key.
Fixes: ac8d22de2394 ("ethdev: flatten RSS configuration in flow API")
Cc: sta...@dpdk.org
Signed-off-by: Lijun Ou <ouli...@huawei.com>
---
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 4e2006c..7eddde4 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -4168,6 +4168,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;
@@ -4178,6 +4179,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
.