From patchwork Thu Jul 28 15:11:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cristian Dumitrescu X-Patchwork-Id: 114355 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 898F9A00C5; Thu, 28 Jul 2022 17:12:05 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3359D42BBE; Thu, 28 Jul 2022 17:11:56 +0200 (CEST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id 690E94014F for ; Thu, 28 Jul 2022 17:11:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1659021112; x=1690557112; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=QGOlaI25Cq/W2w3fmxfgarFtx5//9Ylju/pTtyV5fZc=; b=hXvOUAjw4WADqQKuQp/NkTW7SxFM7UZT5cXlF7zN86PSAf/hkQFNXqmO 5LtbkBpqM10OioWxdgiKWfb4QnPNqcKPPTFe9t4OSoUr592BvQ3TO8pDT q7aWTmmobEThiBUfyavJWLd8PLydEyDATNKHj3Onv8aHdXECjLV3NiT/h sCogNr1OmnW6Cmw5fdj6JFhHEhZI+gQL2I3+/fxo77qMvwnAbW8wTwqKG zXpguTpxBpjndUAPri460FKovOHXmIbSavQprtE+jLPEFcpYjQR/8MYWj 7fyLMejOPJzsP+CCKYnP7ynp4j4mwSqKjRSKJPeNpiF2JYxFN5dSxAH0F g==; X-IronPort-AV: E=McAfee;i="6400,9594,10422"; a="288547364" X-IronPort-AV: E=Sophos;i="5.93,198,1654585200"; d="scan'208";a="288547364" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jul 2022 08:11:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,198,1654585200"; d="scan'208";a="633727133" Received: from silpixa00400573.ir.intel.com (HELO silpixa00400573.ger.corp.intel.com.) ([10.237.223.157]) by orsmga001.jf.intel.com with ESMTP; 28 Jul 2022 08:11:51 -0700 From: Cristian Dumitrescu To: dev@dpdk.org Cc: "Kamalakannan R ." Subject: [PATCH V6 02/17] pipeline: move specification data structures to internal header Date: Thu, 28 Jul 2022 15:11:32 +0000 Message-Id: <20220728151147.603265-3-cristian.dumitrescu@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220728151147.603265-1-cristian.dumitrescu@intel.com> References: <20220718130713.339003-1-cristian.dumitrescu@intel.com> <20220728151147.603265-1-cristian.dumitrescu@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Move all the pipeline object specification data structures to an internal header file. Signed-off-by: Cristian Dumitrescu Signed-off-by: Kamalakannan R. --- lib/pipeline/rte_swx_pipeline_spec.c | 126 +------------------ lib/pipeline/rte_swx_pipeline_spec.h | 176 +++++++++++++++++++++++++++ 2 files changed, 177 insertions(+), 125 deletions(-) create mode 100644 lib/pipeline/rte_swx_pipeline_spec.h diff --git a/lib/pipeline/rte_swx_pipeline_spec.c b/lib/pipeline/rte_swx_pipeline_spec.c index 904b9eb471..5e07b4f794 100644 --- a/lib/pipeline/rte_swx_pipeline_spec.c +++ b/lib/pipeline/rte_swx_pipeline_spec.c @@ -9,7 +9,7 @@ #include -#include "rte_swx_pipeline.h" +#include "rte_swx_pipeline_spec.h" #ifndef MAX_LINE_LENGTH #define MAX_LINE_LENGTH 2048 @@ -34,15 +34,7 @@ /* * extobj. - * - * extobj OBJ_NAME instanceof OBJ_TYPE [ pragma OBJ_CREATE_ARGS ] */ -struct extobj_spec { - char *name; - char *extern_type_name; - char *pragma; -}; - static void extobj_spec_free(struct extobj_spec *s) { @@ -104,18 +96,7 @@ extobj_statement_parse(struct extobj_spec *s, /* * struct. * - * struct STRUCT_TYPE_NAME { - * bit | varbit FIELD_NAME - * ... - * } */ -struct struct_spec { - char *name; - struct rte_swx_field_params *fields; - uint32_t n_fields; - int varbit; -}; - static void struct_spec_free(struct struct_spec *s) { @@ -293,13 +274,7 @@ struct_block_parse(struct struct_spec *s, /* * header. * - * header HEADER_NAME instanceof STRUCT_TYPE_NAME */ -struct header_spec { - char *name; - char *struct_type_name; -}; - static void header_spec_free(struct header_spec *s) { @@ -351,12 +326,7 @@ header_statement_parse(struct header_spec *s, /* * metadata. * - * metadata instanceof STRUCT_TYPE_NAME */ -struct metadata_spec { - char *struct_type_name; -}; - static void metadata_spec_free(struct metadata_spec *s) { @@ -400,18 +370,7 @@ metadata_statement_parse(struct metadata_spec *s, /* * action. * - * action ACTION_NAME args none | instanceof STRUCT_TYPE_NAME { - * INSTRUCTION - * ... - * } */ -struct action_spec { - char *name; - char *args_struct_type_name; - const char **instructions; - uint32_t n_instructions; -}; - static void action_spec_free(struct action_spec *s) { @@ -540,29 +499,7 @@ action_block_parse(struct action_spec *s, /* * table. * - * table TABLE_NAME { - * key { - * MATCH_FIELD_NAME exact | wildcard | lpm - * ... - * } - * actions { - * ACTION_NAME [ @tableonly | @defaultonly ] - * ... - * } - * default_action ACTION_NAME args none | ARG0_NAME ARG0_VALUE ... [ const ] - * instanceof TABLE_TYPE_NAME - * pragma ARGS - * size SIZE - * } */ -struct table_spec { - char *name; - struct rte_swx_pipeline_table_params params; - char *recommended_table_type_name; - char *args; - uint32_t size; -}; - static void table_spec_free(struct table_spec *s) { @@ -1084,22 +1021,7 @@ table_block_parse(struct table_spec *s, /* * selector. * - * selector SELECTOR_NAME { - * group_id FIELD_NAME - * selector { - * FIELD_NAME - * ... - * } - * member_id FIELD_NAME - * n_groups N_GROUPS - * n_members_per_group N_MEMBERS_PER_GROUP - * } */ -struct selector_spec { - char *name; - struct rte_swx_pipeline_selector_params params; -}; - static void selector_spec_free(struct selector_spec *s) { @@ -1385,31 +1307,7 @@ selector_block_parse(struct selector_spec *s, /* * learner. * - * learner LEARNER_NAME { - * key { - * MATCH_FIELD_NAME - * ... - * } - * actions { - * ACTION_NAME [ @tableonly | @defaultonly] - * ... - * } - * default_action ACTION_NAME args none | ARG0_NAME ARG0_VALUE ... [ const ] - * size SIZE - * timeout { - * TIMEOUT_IN_SECONDS - * ... - * } - * } */ -struct learner_spec { - char *name; - struct rte_swx_pipeline_learner_params params; - uint32_t size; - uint32_t *timeout; - uint32_t n_timeouts; -}; - static void learner_spec_free(struct learner_spec *s) { @@ -1958,14 +1856,7 @@ learner_block_parse(struct learner_spec *s, /* * regarray. * - * regarray NAME size SIZE initval INITVAL */ -struct regarray_spec { - char *name; - uint64_t init_val; - uint32_t size; -}; - static void regarray_spec_free(struct regarray_spec *s) { @@ -2033,13 +1924,7 @@ regarray_statement_parse(struct regarray_spec *s, /* * metarray. * - * metarray NAME size SIZE */ -struct metarray_spec { - char *name; - uint32_t size; -}; - static void metarray_spec_free(struct metarray_spec *s) { @@ -2095,16 +1980,7 @@ metarray_statement_parse(struct metarray_spec *s, /* * apply. * - * apply { - * INSTRUCTION - * ... - * } */ -struct apply_spec { - const char **instructions; - uint32_t n_instructions; -}; - static void apply_spec_free(struct apply_spec *s) { diff --git a/lib/pipeline/rte_swx_pipeline_spec.h b/lib/pipeline/rte_swx_pipeline_spec.h new file mode 100644 index 0000000000..8458de878a --- /dev/null +++ b/lib/pipeline/rte_swx_pipeline_spec.h @@ -0,0 +1,176 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2022 Intel Corporation + */ +#include +#include + +#include + +#include + +/* + * extobj. + * + * extobj OBJ_NAME instanceof OBJ_TYPE [ pragma OBJ_CREATE_ARGS ] + */ +struct extobj_spec { + char *name; + char *extern_type_name; + char *pragma; +}; + +/* + * struct. + * + * struct STRUCT_TYPE_NAME { + * bit | varbit FIELD_NAME + * ... + * } + */ +struct struct_spec { + char *name; + struct rte_swx_field_params *fields; + uint32_t n_fields; + int varbit; +}; + +/* + * header. + * + * header HEADER_NAME instanceof STRUCT_TYPE_NAME + */ +struct header_spec { + char *name; + char *struct_type_name; +}; + +/* + * metadata. + * + * metadata instanceof STRUCT_TYPE_NAME + */ +struct metadata_spec { + char *struct_type_name; +}; + +/* + * action. + * + * action ACTION_NAME args none | instanceof STRUCT_TYPE_NAME { + * INSTRUCTION + * ... + * } + */ +struct action_spec { + char *name; + char *args_struct_type_name; + const char **instructions; + uint32_t n_instructions; +}; + +/* + * table. + * + * table TABLE_NAME { + * key { + * MATCH_FIELD_NAME exact | wildcard | lpm + * ... + * } + * actions { + * ACTION_NAME [ @tableonly | @defaultonly ] + * ... + * } + * default_action ACTION_NAME args none | ARG0_NAME ARG0_VALUE ... [ const ] + * instanceof TABLE_TYPE_NAME + * pragma ARGS + * size SIZE + * } + */ +struct table_spec { + char *name; + struct rte_swx_pipeline_table_params params; + char *recommended_table_type_name; + char *args; + uint32_t size; +}; + +/* + * selector. + * + * selector SELECTOR_NAME { + * group_id FIELD_NAME + * selector { + * FIELD_NAME + * ... + * } + * member_id FIELD_NAME + * n_groups N_GROUPS + * n_members_per_group N_MEMBERS_PER_GROUP + * } + */ +struct selector_spec { + char *name; + struct rte_swx_pipeline_selector_params params; +}; + +/* + * learner. + * + * learner LEARNER_NAME { + * key { + * MATCH_FIELD_NAME + * ... + * } + * actions { + * ACTION_NAME [ @tableonly | @defaultonly] + * ... + * } + * default_action ACTION_NAME args none | ARG0_NAME ARG0_VALUE ... [ const ] + * size SIZE + * timeout { + * TIMEOUT_IN_SECONDS + * ... + * } + * } + */ +struct learner_spec { + char *name; + struct rte_swx_pipeline_learner_params params; + uint32_t size; + uint32_t *timeout; + uint32_t n_timeouts; +}; + +/* + * regarray. + * + * regarray NAME size SIZE initval INITVAL + */ +struct regarray_spec { + char *name; + uint64_t init_val; + uint32_t size; +}; + +/* + * metarray. + * + * metarray NAME size SIZE + */ +struct metarray_spec { + char *name; + uint32_t size; +}; + +/* + * apply. + * + * apply { + * INSTRUCTION + * ... + * } + */ +struct apply_spec { + const char **instructions; + uint32_t n_instructions; +};