From patchwork Fri Mar 30 14:15:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jasvinder Singh X-Patchwork-Id: 36777 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 245A55681; Fri, 30 Mar 2018 16:15:34 +0200 (CEST) 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) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Mar 2018 07:15:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,382,1517904000"; d="scan'208";a="28861536" Received: from silpixa00381635.ir.intel.com (HELO silpixa00381635.ger.corp.intel.com) ([10.237.222.149]) by fmsmga008.fm.intel.com with ESMTP; 30 Mar 2018 07:15:30 -0700 From: Jasvinder Singh To: dev@dpdk.org Cc: cristian.dumitrescu@intel.com Date: Fri, 30 Mar 2018 15:15:28 +0100 Message-Id: <20180330141529.149612-1-jasvinder.singh@intel.com> X-Mailer: git-send-email 2.9.3 Subject: [dpdk-dev] [PATCH 1/2] ip_pipleine: fix load balance table action X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list 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; }