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.

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

Reply via email to