From f3698c3d09a69ea398a1c5c3c01083a84ee173b0 Mon Sep 17 00:00:00 2001 From: Ophir Munk Date: Fri, 9 Nov 2018 09:38:10 +0000 Subject: [PATCH] app/testpmd: revert setting default RSS This reverts the patch that enables default RSS action by setting key=NULL and key_len=0. In current testpmd implementation a key pointer must exist if key_len!=0. For example, the following flow rule will cause a segmentation fault: flow create 0 actions rss queues 0 1 end key_len 40 / end Fixes: a4391f8bae85 ("app/testpmd: set default RSS key as null") Cc: stable@dpdk.org Signed-off-by: Ophir Munk Reviewed-by: Ferruh Yigit --- app/test-pmd/cmdline_flow.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index 91e2e3507b..23ea7cc829 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -3248,15 +3248,26 @@ parse_vc_action_rss(struct context *ctx, const struct token *token, .func = RTE_ETH_HASH_FUNCTION_DEFAULT, .level = 0, .types = rss_hf, - .key_len = 0, + .key_len = sizeof(action_rss_data->key), .queue_num = RTE_MIN(nb_rxq, ACTION_RSS_QUEUE_NUM), - .key = NULL, + .key = action_rss_data->key, .queue = action_rss_data->queue, }, + .key = "testpmd's default RSS hash key, " + "override it for better balancing", .queue = { 0 }, }; for (i = 0; i < action_rss_data->conf.queue_num; ++i) 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_dev_info info; + + rte_eth_dev_info_get(ctx->port, &info); + action_rss_data->conf.key_len = + RTE_MIN(sizeof(action_rss_data->key), + info.hash_key_size); + } action->conf = &action_rss_data->conf; return ret; } -- 2.20.1