pipeline: move port type registration to library
Move the port type registration for the well known port types from the application to the pipeline library. Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com> Signed-off-by: Yogesh Jangra <yogesh.jangra@intel.com>
This commit is contained in:
parent
c07aaa6553
commit
6e4a64c8b3
@ -16,10 +16,6 @@
|
||||
#include <rte_mempool.h>
|
||||
#include <rte_mbuf.h>
|
||||
#include <rte_ethdev.h>
|
||||
#include <rte_swx_port_ethdev.h>
|
||||
#include <rte_swx_port_fd.h>
|
||||
#include <rte_swx_port_ring.h>
|
||||
#include <rte_swx_port_source_sink.h>
|
||||
#include <rte_swx_table_em.h>
|
||||
#include <rte_swx_table_wm.h>
|
||||
#include <rte_swx_pipeline.h>
|
||||
@ -543,56 +539,6 @@ pipeline_create(struct obj *obj, const char *name, int numa_node)
|
||||
if (status)
|
||||
goto error;
|
||||
|
||||
status = rte_swx_pipeline_port_in_type_register(p,
|
||||
"ethdev",
|
||||
&rte_swx_port_ethdev_reader_ops);
|
||||
if (status)
|
||||
goto error;
|
||||
|
||||
status = rte_swx_pipeline_port_out_type_register(p,
|
||||
"ethdev",
|
||||
&rte_swx_port_ethdev_writer_ops);
|
||||
if (status)
|
||||
goto error;
|
||||
|
||||
status = rte_swx_pipeline_port_in_type_register(p,
|
||||
"ring",
|
||||
&rte_swx_port_ring_reader_ops);
|
||||
if (status)
|
||||
goto error;
|
||||
|
||||
status = rte_swx_pipeline_port_out_type_register(p,
|
||||
"ring",
|
||||
&rte_swx_port_ring_writer_ops);
|
||||
if (status)
|
||||
goto error;
|
||||
|
||||
#ifdef RTE_PORT_PCAP
|
||||
status = rte_swx_pipeline_port_in_type_register(p,
|
||||
"source",
|
||||
&rte_swx_port_source_ops);
|
||||
if (status)
|
||||
goto error;
|
||||
#endif
|
||||
|
||||
status = rte_swx_pipeline_port_out_type_register(p,
|
||||
"sink",
|
||||
&rte_swx_port_sink_ops);
|
||||
if (status)
|
||||
goto error;
|
||||
|
||||
status = rte_swx_pipeline_port_in_type_register(p,
|
||||
"fd",
|
||||
&rte_swx_port_fd_reader_ops);
|
||||
if (status)
|
||||
goto error;
|
||||
|
||||
status = rte_swx_pipeline_port_out_type_register(p,
|
||||
"fd",
|
||||
&rte_swx_port_fd_writer_ops);
|
||||
if (status)
|
||||
goto error;
|
||||
|
||||
status = rte_swx_pipeline_table_type_register(p,
|
||||
"exact",
|
||||
RTE_SWX_TABLE_MATCH_EXACT,
|
||||
|
@ -7,6 +7,11 @@
|
||||
#include <arpa/inet.h>
|
||||
#include <dlfcn.h>
|
||||
|
||||
#include <rte_swx_port_ethdev.h>
|
||||
#include <rte_swx_port_fd.h>
|
||||
#include <rte_swx_port_ring.h>
|
||||
#include "rte_swx_port_source_sink.h"
|
||||
|
||||
#include "rte_swx_pipeline_internal.h"
|
||||
|
||||
#define CHECK(condition, err_code) \
|
||||
@ -8982,44 +8987,6 @@ metarray_free(struct rte_swx_pipeline *p)
|
||||
/*
|
||||
* Pipeline.
|
||||
*/
|
||||
int
|
||||
rte_swx_pipeline_config(struct rte_swx_pipeline **p, int numa_node)
|
||||
{
|
||||
struct rte_swx_pipeline *pipeline;
|
||||
|
||||
/* Check input parameters. */
|
||||
CHECK(p, EINVAL);
|
||||
|
||||
/* Memory allocation. */
|
||||
pipeline = calloc(1, sizeof(struct rte_swx_pipeline));
|
||||
CHECK(pipeline, ENOMEM);
|
||||
|
||||
/* Initialization. */
|
||||
TAILQ_INIT(&pipeline->struct_types);
|
||||
TAILQ_INIT(&pipeline->port_in_types);
|
||||
TAILQ_INIT(&pipeline->ports_in);
|
||||
TAILQ_INIT(&pipeline->port_out_types);
|
||||
TAILQ_INIT(&pipeline->ports_out);
|
||||
TAILQ_INIT(&pipeline->extern_types);
|
||||
TAILQ_INIT(&pipeline->extern_objs);
|
||||
TAILQ_INIT(&pipeline->extern_funcs);
|
||||
TAILQ_INIT(&pipeline->headers);
|
||||
TAILQ_INIT(&pipeline->actions);
|
||||
TAILQ_INIT(&pipeline->table_types);
|
||||
TAILQ_INIT(&pipeline->tables);
|
||||
TAILQ_INIT(&pipeline->selectors);
|
||||
TAILQ_INIT(&pipeline->learners);
|
||||
TAILQ_INIT(&pipeline->regarrays);
|
||||
TAILQ_INIT(&pipeline->meter_profiles);
|
||||
TAILQ_INIT(&pipeline->metarrays);
|
||||
|
||||
pipeline->n_structs = 1; /* Struct 0 is reserved for action_data. */
|
||||
pipeline->numa_node = numa_node;
|
||||
|
||||
*p = pipeline;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
rte_swx_pipeline_free(struct rte_swx_pipeline *p)
|
||||
{
|
||||
@ -9055,6 +9022,126 @@ rte_swx_pipeline_free(struct rte_swx_pipeline *p)
|
||||
dlclose(lib);
|
||||
}
|
||||
|
||||
static int
|
||||
port_in_types_register(struct rte_swx_pipeline *p)
|
||||
{
|
||||
int status;
|
||||
|
||||
status = rte_swx_pipeline_port_in_type_register(p,
|
||||
"ethdev",
|
||||
&rte_swx_port_ethdev_reader_ops);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
status = rte_swx_pipeline_port_in_type_register(p,
|
||||
"ring",
|
||||
&rte_swx_port_ring_reader_ops);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
#ifdef RTE_PORT_PCAP
|
||||
status = rte_swx_pipeline_port_in_type_register(p,
|
||||
"source",
|
||||
&rte_swx_port_source_ops);
|
||||
if (status)
|
||||
return status;
|
||||
#endif
|
||||
|
||||
status = rte_swx_pipeline_port_in_type_register(p,
|
||||
"fd",
|
||||
&rte_swx_port_fd_reader_ops);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
port_out_types_register(struct rte_swx_pipeline *p)
|
||||
{
|
||||
int status;
|
||||
|
||||
status = rte_swx_pipeline_port_out_type_register(p,
|
||||
"ethdev",
|
||||
&rte_swx_port_ethdev_writer_ops);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
status = rte_swx_pipeline_port_out_type_register(p,
|
||||
"ring",
|
||||
&rte_swx_port_ring_writer_ops);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
status = rte_swx_pipeline_port_out_type_register(p,
|
||||
"sink",
|
||||
&rte_swx_port_sink_ops);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
status = rte_swx_pipeline_port_out_type_register(p,
|
||||
"fd",
|
||||
&rte_swx_port_fd_writer_ops);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
rte_swx_pipeline_config(struct rte_swx_pipeline **p, int numa_node)
|
||||
{
|
||||
struct rte_swx_pipeline *pipeline = NULL;
|
||||
int status = 0;
|
||||
|
||||
/* Check input parameters. */
|
||||
CHECK(p, EINVAL);
|
||||
|
||||
/* Memory allocation. */
|
||||
pipeline = calloc(1, sizeof(struct rte_swx_pipeline));
|
||||
if (!pipeline) {
|
||||
status = -ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* Initialization. */
|
||||
TAILQ_INIT(&pipeline->struct_types);
|
||||
TAILQ_INIT(&pipeline->port_in_types);
|
||||
TAILQ_INIT(&pipeline->ports_in);
|
||||
TAILQ_INIT(&pipeline->port_out_types);
|
||||
TAILQ_INIT(&pipeline->ports_out);
|
||||
TAILQ_INIT(&pipeline->extern_types);
|
||||
TAILQ_INIT(&pipeline->extern_objs);
|
||||
TAILQ_INIT(&pipeline->extern_funcs);
|
||||
TAILQ_INIT(&pipeline->headers);
|
||||
TAILQ_INIT(&pipeline->actions);
|
||||
TAILQ_INIT(&pipeline->table_types);
|
||||
TAILQ_INIT(&pipeline->tables);
|
||||
TAILQ_INIT(&pipeline->selectors);
|
||||
TAILQ_INIT(&pipeline->learners);
|
||||
TAILQ_INIT(&pipeline->regarrays);
|
||||
TAILQ_INIT(&pipeline->meter_profiles);
|
||||
TAILQ_INIT(&pipeline->metarrays);
|
||||
|
||||
pipeline->n_structs = 1; /* Struct 0 is reserved for action_data. */
|
||||
pipeline->numa_node = numa_node;
|
||||
|
||||
status = port_in_types_register(pipeline);
|
||||
if (status)
|
||||
goto error;
|
||||
|
||||
status = port_out_types_register(pipeline);
|
||||
if (status)
|
||||
goto error;
|
||||
|
||||
*p = pipeline;
|
||||
return 0;
|
||||
|
||||
error:
|
||||
rte_swx_pipeline_free(pipeline);
|
||||
return status;
|
||||
}
|
||||
|
||||
int
|
||||
rte_swx_pipeline_instructions_config(struct rte_swx_pipeline *p,
|
||||
const char **instructions,
|
||||
|
Loading…
Reference in New Issue
Block a user