From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jasvinder Singh Subject: [PATCH 1/2] ip_pipleine: fix load balance table action Date: Fri, 30 Mar 2018 15:15:28 +0100 Message-ID: <20180330141529.149612-1-jasvinder.singh@intel.com> Cc: cristian.dumitrescu@intel.com To: dev@dpdk.org Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 1AF375592 for ; Fri, 30 Mar 2018 16:15:31 +0200 (CEST) List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Fix bug in load balance action for pipeline table. Signed-off-by: Cristian Dumitrescu Signed-off-by: Jasvinder Singh --- examples/ip_pipeline/action.c | 42 ++++++++++++++++++++++++++++++++++++++++++ examples/ip_pipeline/cli.c | 9 ++++----- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/examples/ip_pipeline/action.c b/examples/ip_pipeline/action.c index 2cedb24..77a04fe 100644 --- a/examples/ip_pipeline/action.c +++ b/examples/ip_pipeline/action.c @@ -186,6 +186,48 @@ table_action_profile_create(const char *name, ((params->action_mask & (1LLU << RTE_TABLE_ACTION_FWD)) == 0)) return NULL; + if ((params->action_mask & (1LLU << RTE_TABLE_ACTION_LB)) && + (params->lb.f_hash == NULL)) { + switch (params->lb.key_size) { + case 8: + params->lb.f_hash = hash_default_key8; + break; + + case 16: + params->lb.f_hash = hash_default_key16; + break; + + case 24: + params->lb.f_hash = hash_default_key24; + break; + + case 32: + params->lb.f_hash = hash_default_key32; + break; + + case 40: + params->lb.f_hash = hash_default_key40; + break; + + case 48: + params->lb.f_hash = hash_default_key48; + break; + + case 56: + params->lb.f_hash = hash_default_key56; + break; + + case 64: + params->lb.f_hash = hash_default_key64; + break; + + default: + return NULL; + } + + params->lb.seed = 0; + } + /* Resource */ ap = rte_table_action_profile_create(¶ms->common); if (ap == NULL) diff --git a/examples/ip_pipeline/cli.c b/examples/ip_pipeline/cli.c index 433f644..357d0ae 100644 --- a/examples/ip_pipeline/cli.c +++ b/examples/ip_pipeline/cli.c @@ -2314,8 +2314,7 @@ cmd_pipeline_table_stats(char **tokens, * priority * ipv4 | ipv6 * - * | array - * pos + * | array * | hash * raw * | ipv4_5tuple @@ -2845,15 +2844,15 @@ parse_table_action_balance(char **tokens, tokens++; n_tokens--; - if (n_tokens < RTE_TABLE_ACTION_LB_KEY_SIZE_MAX) + if (n_tokens < RTE_TABLE_ACTION_LB_TABLE_SIZE) return 0; - for (i = 0; i < RTE_TABLE_ACTION_LB_KEY_SIZE_MAX; i++) + for (i = 0; i < RTE_TABLE_ACTION_LB_TABLE_SIZE; i++) if (parser_read_uint32(&a->lb.out[i], tokens[i]) != 0) return 0; a->action_mask |= 1 << RTE_TABLE_ACTION_LB; - return 1 + RTE_TABLE_ACTION_LB_KEY_SIZE_MAX; + return 1 + RTE_TABLE_ACTION_LB_TABLE_SIZE; } -- 2.9.3