On 9/24/2020 2:45 PM, Lijun Ou wrote:
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.
Can you please describe the impact, what fails without this fix?
Fixes: ac8d22de2394 ("ethdev: flatten RSS configuration in flow API")
Cc: sta...@dpdk.org
Signed-off-by: Lijun Ou <ouli...@huawei.com>
---
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 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;
'rss_conf.rss_key_len' is the input parameter, it looks like it has been used as
the size of the 'rss_key', but as far as I can see it is not.
Because of this if 'info.hash_key_size' is bigger than
'sizeof(action_rss_data->key)', won't PMD overwrite the stack for the remaining
bytes?
Can you please check?
+ ret2 = rte_eth_dev_rss_hash_conf_get(ctx->port, &rss_conf);
+ if (ret2 != 0)
+ return ret2;
If PMD not implemented the 'rss_hash_conf_get' dev_ops, should it fail the RSS
action?
+ action_rss_data->conf.key = rss_conf.rss_key;
}
action->conf = &action_rss_data->conf;
return ret;