summaryrefslogtreecommitdiffstats
path: root/src/dpdk22/lib/librte_pipeline/rte_pipeline.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/dpdk22/lib/librte_pipeline/rte_pipeline.h')
-rw-r--r--src/dpdk22/lib/librte_pipeline/rte_pipeline.h827
1 files changed, 0 insertions, 827 deletions
diff --git a/src/dpdk22/lib/librte_pipeline/rte_pipeline.h b/src/dpdk22/lib/librte_pipeline/rte_pipeline.h
deleted file mode 100644
index 54593245..00000000
--- a/src/dpdk22/lib/librte_pipeline/rte_pipeline.h
+++ /dev/null
@@ -1,827 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Intel Corporation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef __INCLUDE_RTE_PIPELINE_H__
-#define __INCLUDE_RTE_PIPELINE_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @file
- * RTE Pipeline
- *
- * This tool is part of the Intel DPDK Packet Framework tool suite and provides
- * a standard methodology (logically similar to OpenFlow) for rapid development
- * of complex packet processing pipelines out of ports, tables and actions.
- *
- * <B>Basic operation.</B> A pipeline is constructed by connecting its input
- * ports to its output ports through a chain of lookup tables. As result of
- * lookup operation into the current table, one of the table entries (or the
- * default table entry, in case of lookup miss) is identified to provide the
- * actions to be executed on the current packet and the associated action
- * meta-data. The behavior of user actions is defined through the configurable
- * table action handler, while the reserved actions define the next hop for the
- * current packet (either another table, an output port or packet drop) and are
- * handled transparently by the framework.
- *
- * <B>Initialization and run-time flows.</B> Once all the pipeline elements
- * (input ports, tables, output ports) have been created, input ports connected
- * to tables, table action handlers configured, tables populated with the
- * initial set of entries (actions and action meta-data) and input ports
- * enabled, the pipeline runs automatically, pushing packets from input ports
- * to tables and output ports. At each table, the identified user actions are
- * being executed, resulting in action meta-data (stored in the table entry)
- * and packet meta-data (stored with the packet descriptor) being updated. The
- * pipeline tables can have further updates and input ports can be disabled or
- * enabled later on as required.
- *
- * <B>Multi-core scaling.</B> Typically, each CPU core will run its own
- * pipeline instance. Complex application-level pipelines can be implemented by
- * interconnecting multiple CPU core-level pipelines in tree-like topologies,
- * as the same port devices (e.g. SW rings) can serve as output ports for the
- * pipeline running on CPU core A, as well as input ports for the pipeline
- * running on CPU core B. This approach enables the application development
- * using the pipeline (CPU cores connected serially), cluster/run-to-completion
- * (CPU cores connected in parallel) or mixed (pipeline of CPU core clusters)
- * programming models.
- *
- * <B>Thread safety.</B> It is possible to have multiple pipelines running on
- * the same CPU core, but it is not allowed (for thread safety reasons) to have
- * multiple CPU cores running the same pipeline instance.
- *
- ***/
-
-#include <stdint.h>
-
-#include <rte_port.h>
-#include <rte_table.h>
-
-struct rte_mbuf;
-
-/*
- * Pipeline
- *
- */
-/** Opaque data type for pipeline */
-struct rte_pipeline;
-
-/** Parameters for pipeline creation */
-struct rte_pipeline_params {
- /** Pipeline name */
- const char *name;
-
- /** CPU socket ID where memory for the pipeline and its elements (ports
- and tables) should be allocated */
- int socket_id;
-
- /** Offset within packet meta-data to port_id to be used by action
- "Send packet to output port read from packet meta-data". Has to be
- 4-byte aligned. */
- uint32_t offset_port_id;
-};
-
-/** Pipeline port in stats. */
-struct rte_pipeline_port_in_stats {
- /** Port in stats. */
- struct rte_port_in_stats stats;
-
- /** Number of packets dropped by action handler. */
- uint64_t n_pkts_dropped_by_ah;
-
-};
-
-/** Pipeline port out stats. */
-struct rte_pipeline_port_out_stats {
- /** Port out stats. */
- struct rte_port_out_stats stats;
-
- /** Number of packets dropped by action handler. */
- uint64_t n_pkts_dropped_by_ah;
-};
-
-/** Pipeline table stats. */
-struct rte_pipeline_table_stats {
- /** Table stats. */
- struct rte_table_stats stats;
-
- /** Number of packets dropped by lookup hit action handler. */
- uint64_t n_pkts_dropped_by_lkp_hit_ah;
-
- /** Number of packets dropped by lookup miss action handler. */
- uint64_t n_pkts_dropped_by_lkp_miss_ah;
-
- /** Number of packets dropped by pipeline in behalf of this table based on
- * on action specified in table entry. */
- uint64_t n_pkts_dropped_lkp_hit;
-
- /** Number of packets dropped by pipeline in behalf of this table based on
- * on action specified in table entry. */
- uint64_t n_pkts_dropped_lkp_miss;
-};
-
-/**
- * Pipeline create
- *
- * @param params
- * Parameters for pipeline creation
- * @return
- * Handle to pipeline instance on success or NULL otherwise
- */
-struct rte_pipeline *rte_pipeline_create(struct rte_pipeline_params *params);
-
-/**
- * Pipeline free
- *
- * @param p
- * Handle to pipeline instance
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_free(struct rte_pipeline *p);
-
-/**
- * Pipeline consistency check
- *
- * @param p
- * Handle to pipeline instance
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_check(struct rte_pipeline *p);
-
-/**
- * Pipeline run
- *
- * @param p
- * Handle to pipeline instance
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_run(struct rte_pipeline *p);
-
-/**
- * Pipeline flush
- *
- * @param p
- * Handle to pipeline instance
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_flush(struct rte_pipeline *p);
-
-/*
- * Actions
- *
- */
-/** Reserved actions */
-enum rte_pipeline_action {
- /** Drop the packet */
- RTE_PIPELINE_ACTION_DROP = 0,
-
- /** Send packet to output port */
- RTE_PIPELINE_ACTION_PORT,
-
- /** Send packet to output port read from packet meta-data */
- RTE_PIPELINE_ACTION_PORT_META,
-
- /** Send packet to table */
- RTE_PIPELINE_ACTION_TABLE,
-
- /** Number of reserved actions */
- RTE_PIPELINE_ACTIONS
-};
-
-/*
- * Table
- *
- */
-/** Maximum number of tables allowed for any given pipeline instance. The
- value of this parameter cannot be changed. */
-#define RTE_PIPELINE_TABLE_MAX 64
-
-/**
- * Head format for the table entry of any pipeline table. For any given
- * pipeline table, all table entries should have the same size and format. For
- * any given pipeline table, the table entry has to start with a head of this
- * structure, which contains the reserved actions and their associated
- * meta-data, and then optionally continues with user actions and their
- * associated meta-data. As all the currently defined reserved actions are
- * mutually exclusive, only one reserved action can be set per table entry.
- */
-struct rte_pipeline_table_entry {
- /** Reserved action */
- enum rte_pipeline_action action;
-
- union {
- /** Output port ID (meta-data for "Send packet to output port"
- action) */
- uint32_t port_id;
- /** Table ID (meta-data for "Send packet to table" action) */
- uint32_t table_id;
- };
- /** Start of table entry area for user defined actions and meta-data */
- uint8_t action_data[0];
-};
-
-/**
- * Pipeline table action handler on lookup hit
- *
- * The action handler can decide to drop packets by resetting the associated
- * packet bit in the pkts_mask parameter. In this case, the action handler is
- * required not to free the packet buffer, which will be freed eventually by
- * the pipeline.
- *
- * @param pkts
- * Burst of input packets specified as array of up to 64 pointers to struct
- * rte_mbuf
- * @param pkts_mask
- * 64-bit bitmask specifying which packets in the input burst are valid. When
- * pkts_mask bit n is set, then element n of pkts array is pointing to a
- * valid packet and element n of entries array is pointing to a valid table
- * entry associated with the packet, with the association typically done by
- * the table lookup operation. Otherwise, element n of pkts array and element
- * n of entries array will not be accessed.
- * @param entries
- * Set of table entries specified as array of up to 64 pointers to struct
- * rte_pipeline_table_entry
- * @param arg
- * Opaque parameter registered by the user at the pipeline table creation
- * time
- * @return
- * 0 on success, error code otherwise
- */
-typedef int (*rte_pipeline_table_action_handler_hit)(
- struct rte_mbuf **pkts,
- uint64_t *pkts_mask,
- struct rte_pipeline_table_entry **entries,
- void *arg);
-
-/**
- * Pipeline table action handler on lookup miss
- *
- * The action handler can decide to drop packets by resetting the associated
- * packet bit in the pkts_mask parameter. In this case, the action handler is
- * required not to free the packet buffer, which will be freed eventually by
- * the pipeline.
- *
- * @param pkts
- * Burst of input packets specified as array of up to 64 pointers to struct
- * rte_mbuf
- * @param pkts_mask
- * 64-bit bitmask specifying which packets in the input burst are valid. When
- * pkts_mask bit n is set, then element n of pkts array is pointing to a
- * valid packet. Otherwise, element n of pkts array will not be accessed.
- * @param entry
- * Single table entry associated with all the valid packets from the input
- * burst, specified as pointer to struct rte_pipeline_table_entry.
- * This entry is the pipeline table default entry that is associated by the
- * table lookup operation with the input packets that have resulted in lookup
- * miss.
- * @param arg
- * Opaque parameter registered by the user at the pipeline table creation
- * time
- * @return
- * 0 on success, error code otherwise
- */
-typedef int (*rte_pipeline_table_action_handler_miss)(
- struct rte_mbuf **pkts,
- uint64_t *pkts_mask,
- struct rte_pipeline_table_entry *entry,
- void *arg);
-
-/** Parameters for pipeline table creation. Action handlers have to be either
- both enabled or both disabled (they can be disabled by setting them to
- NULL). */
-struct rte_pipeline_table_params {
- /** Table operations (specific to each table type) */
- struct rte_table_ops *ops;
- /** Opaque param to be passed to the table create operation when
- invoked */
- void *arg_create;
- /** Callback function to execute the user actions on input packets in
- case of lookup hit */
- rte_pipeline_table_action_handler_hit f_action_hit;
- /** Callback function to execute the user actions on input packets in
- case of lookup miss */
- rte_pipeline_table_action_handler_miss f_action_miss;
-
- /** Opaque parameter to be passed to lookup hit and/or lookup miss
- action handlers when invoked */
- void *arg_ah;
- /** Memory size to be reserved per table entry for storing the user
- actions and their meta-data */
- uint32_t action_data_size;
-};
-
-/**
- * Pipeline table create
- *
- * @param p
- * Handle to pipeline instance
- * @param params
- * Parameters for pipeline table creation
- * @param table_id
- * Table ID. Valid only within the scope of table IDs of the current
- * pipeline. Only returned after a successful invocation.
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_table_create(struct rte_pipeline *p,
- struct rte_pipeline_table_params *params,
- uint32_t *table_id);
-
-/**
- * Pipeline table default entry add
- *
- * The contents of the table default entry is updated with the provided actions
- * and meta-data. When the default entry is not configured (by using this
- * function), the built-in default entry has the action "Drop" and meta-data
- * set to all-zeros.
- *
- * @param p
- * Handle to pipeline instance
- * @param table_id
- * Table ID (returned by previous invocation of pipeline table create)
- * @param default_entry
- * New contents for the table default entry
- * @param default_entry_ptr
- * On successful invocation, pointer to the default table entry which can be
- * used for further read-write accesses to this table entry. This pointer
- * is valid until the default entry is deleted or re-added.
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_table_default_entry_add(struct rte_pipeline *p,
- uint32_t table_id,
- struct rte_pipeline_table_entry *default_entry,
- struct rte_pipeline_table_entry **default_entry_ptr);
-
-/**
- * Pipeline table default entry delete
- *
- * The new contents of the table default entry is set to reserved action "Drop
- * the packet" with meta-data cleared (i.e. set to all-zeros).
- *
- * @param p
- * Handle to pipeline instance
- * @param table_id
- * Table ID (returned by previous invocation of pipeline table create)
- * @param entry
- * On successful invocation, when entry points to a valid buffer, the
- * previous contents of the table default entry (as it was just before the
- * delete operation) is copied to this buffer
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_table_default_entry_delete(struct rte_pipeline *p,
- uint32_t table_id,
- struct rte_pipeline_table_entry *entry);
-
-/**
- * Pipeline table entry add
- *
- * @param p
- * Handle to pipeline instance
- * @param table_id
- * Table ID (returned by previous invocation of pipeline table create)
- * @param key
- * Table entry key
- * @param entry
- * New contents for the table entry identified by key
- * @param key_found
- * On successful invocation, set to TRUE (value different than 0) if key was
- * already present in the table before the add operation and to FALSE (value
- * 0) if not
- * @param entry_ptr
- * On successful invocation, pointer to the table entry associated with key.
- * This can be used for further read-write accesses to this table entry and
- * is valid until the key is deleted from the table or re-added (usually for
- * associating different actions and/or action meta-data to the current key)
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_table_entry_add(struct rte_pipeline *p,
- uint32_t table_id,
- void *key,
- struct rte_pipeline_table_entry *entry,
- int *key_found,
- struct rte_pipeline_table_entry **entry_ptr);
-
-/**
- * Pipeline table entry delete
- *
- * @param p
- * Handle to pipeline instance
- * @param table_id
- * Table ID (returned by previous invocation of pipeline table create)
- * @param key
- * Table entry key
- * @param key_found
- * On successful invocation, set to TRUE (value different than 0) if key was
- * found in the table before the delete operation and to FALSE (value 0) if
- * not
- * @param entry
- * On successful invocation, when key is found in the table and entry points
- * to a valid buffer, the table entry contents (as it was before the delete
- * was performed) is copied to this buffer
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_table_entry_delete(struct rte_pipeline *p,
- uint32_t table_id,
- void *key,
- int *key_found,
- struct rte_pipeline_table_entry *entry);
-
-/**
- * Pipeline table entry add bulk
- *
- * @param p
- * Handle to pipeline instance
- * @param table_id
- * Table ID (returned by previous invocation of pipeline table create)
- * @param keys
- * Array containing table entry keys
- * @param entries
- * Array containung new contents for every table entry identified by key
- * @param n_keys
- * Number of keys to add
- * @param key_found
- * On successful invocation, key_found for every item in the array is set to
- * TRUE (value different than 0) if key was already present in the table
- * before the add operation and to FALSE (value 0) if not
- * @param entries_ptr
- * On successful invocation, array *entries_ptr stores pointer to every table
- * entry associated with key. This can be used for further read-write accesses
- * to this table entry and is valid until the key is deleted from the table or
- * re-added (usually for associating different actions and/or action meta-data
- * to the current key)
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_table_entry_add_bulk(struct rte_pipeline *p,
- uint32_t table_id,
- void **keys,
- struct rte_pipeline_table_entry **entries,
- uint32_t n_keys,
- int *key_found,
- struct rte_pipeline_table_entry **entries_ptr);
-
-/**
- * Pipeline table entry delete bulk
- *
- * @param p
- * Handle to pipeline instance
- * @param table_id
- * Table ID (returned by previous invocation of pipeline table create)
- * @param keys
- * Array containing table entry keys
- * @param n_keys
- * Number of keys to delete
- * @param key_found
- * On successful invocation, key_found for every item in the array is set to
- * TRUE (value different than 0) if key was found in the table before the
- * delete operation and to FALSE (value 0) if not
- * @param entries
- * If entries pointer is NULL, this pointer is ignored for every entry found.
- * Else, after successful invocation, if specific key is found in the table
- * and entry points to a valid buffer, the table entry contents (as it was
- * before the delete was performed) is copied to this buffer.
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_table_entry_delete_bulk(struct rte_pipeline *p,
- uint32_t table_id,
- void **keys,
- uint32_t n_keys,
- int *key_found,
- struct rte_pipeline_table_entry **entries);
-
-/**
- * Read pipeline table stats.
- *
- * This function reads table statistics identified by *table_id* of given
- * pipeline *p*.
- *
- * @param p
- * Handle to pipeline instance.
- * @param table_id
- * Port ID what stats will be returned.
- * @param stats
- * Statistics buffer.
- * @param clear
- * If not 0 clear stats after reading.
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_table_stats_read(struct rte_pipeline *p, uint32_t table_id,
- struct rte_pipeline_table_stats *stats, int clear);
-
-/*
- * Port IN
- *
- */
-/** Maximum number of input ports allowed for any given pipeline instance. The
- value of this parameter cannot be changed. */
-#define RTE_PIPELINE_PORT_IN_MAX 64
-
-/**
- * Pipeline input port action handler
- *
- * The action handler can decide to drop packets by resetting the associated
- * packet bit in the pkts_mask parameter. In this case, the action handler is
- * required not to free the packet buffer, which will be freed eventually by
- * the pipeline.
- *
- * @param pkts
- * Burst of input packets specified as array of up to 64 pointers to struct
- * rte_mbuf
- * @param n
- * Number of packets in the input burst. This parameter specifies that
- * elements 0 to (n-1) of pkts array are valid.
- * @param pkts_mask
- * 64-bit bitmask specifying which packets in the input burst are still valid
- * after the action handler is executed. When pkts_mask bit n is set, then
- * element n of pkts array is pointing to a valid packet.
- * @param arg
- * Opaque parameter registered by the user at the pipeline table creation
- * time
- * @return
- * 0 on success, error code otherwise
- */
-typedef int (*rte_pipeline_port_in_action_handler)(
- struct rte_mbuf **pkts,
- uint32_t n,
- uint64_t *pkts_mask,
- void *arg);
-
-/** Parameters for pipeline input port creation */
-struct rte_pipeline_port_in_params {
- /** Input port operations (specific to each table type) */
- struct rte_port_in_ops *ops;
- /** Opaque parameter to be passed to create operation when invoked */
- void *arg_create;
-
- /** Callback function to execute the user actions on input packets.
- Disabled if set to NULL. */
- rte_pipeline_port_in_action_handler f_action;
- /** Opaque parameter to be passed to the action handler when invoked */
- void *arg_ah;
-
- /** Recommended burst size for the RX operation(in number of pkts) */
- uint32_t burst_size;
-};
-
-/**
- * Pipeline input port create
- *
- * @param p
- * Handle to pipeline instance
- * @param params
- * Parameters for pipeline input port creation
- * @param port_id
- * Input port ID. Valid only within the scope of input port IDs of the
- * current pipeline. Only returned after a successful invocation.
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_port_in_create(struct rte_pipeline *p,
- struct rte_pipeline_port_in_params *params,
- uint32_t *port_id);
-
-/**
- * Pipeline input port connect to table
- *
- * @param p
- * Handle to pipeline instance
- * @param port_id
- * Port ID (returned by previous invocation of pipeline input port create)
- * @param table_id
- * Table ID (returned by previous invocation of pipeline table create)
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_port_in_connect_to_table(struct rte_pipeline *p,
- uint32_t port_id,
- uint32_t table_id);
-
-/**
- * Pipeline input port enable
- *
- * @param p
- * Handle to pipeline instance
- * @param port_id
- * Port ID (returned by previous invocation of pipeline input port create)
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_port_in_enable(struct rte_pipeline *p,
- uint32_t port_id);
-
-/**
- * Pipeline input port disable
- *
- * @param p
- * Handle to pipeline instance
- * @param port_id
- * Port ID (returned by previous invocation of pipeline input port create)
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_port_in_disable(struct rte_pipeline *p,
- uint32_t port_id);
-
-/**
- * Read pipeline port in stats.
- *
- * This function reads port in statistics identified by *port_id* of given
- * pipeline *p*.
- *
- * @param p
- * Handle to pipeline instance.
- * @param port_id
- * Port ID what stats will be returned.
- * @param stats
- * Statistics buffer.
- * @param clear
- * If not 0 clear stats after reading.
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_port_in_stats_read(struct rte_pipeline *p, uint32_t port_id,
- struct rte_pipeline_port_in_stats *stats, int clear);
-
-/*
- * Port OUT
- *
- */
-/** Maximum number of output ports allowed for any given pipeline instance. The
- value of this parameter cannot be changed. */
-#define RTE_PIPELINE_PORT_OUT_MAX 64
-
-/**
- * Pipeline output port action handler for single packet
- *
- * The action handler can decide to drop packets by resetting the pkt_mask
- * argument. In this case, the action handler is required not to free the
- * packet buffer, which will be freed eventually by the pipeline.
- *
- * @param pkt
- * Input packet
- * @param pkt_mask
- * Output argument set to 0 when the action handler decides to drop the input
- * packet and to 1LLU otherwise
- * @param arg
- * Opaque parameter registered by the user at the pipeline table creation
- * time
- * @return
- * 0 on success, error code otherwise
- */
-typedef int (*rte_pipeline_port_out_action_handler)(
- struct rte_mbuf *pkt,
- uint64_t *pkt_mask,
- void *arg);
-
-/**
- * Pipeline output port action handler bulk
- *
- * The action handler can decide to drop packets by resetting the associated
- * packet bit in the pkts_mask parameter. In this case, the action handler is
- * required not to free the packet buffer, which will be freed eventually by
- * the pipeline.
- *
- * @param pkts
- * Burst of input packets specified as array of up to 64 pointers to struct
- * rte_mbuf
- * @param pkts_mask
- * 64-bit bitmask specifying which packets in the input burst are valid. When
- * pkts_mask bit n is set, then element n of pkts array is pointing to a
- * valid packet. Otherwise, element n of pkts array will not be accessed.
- * @param arg
- * Opaque parameter registered by the user at the pipeline table creation
- * time
- * @return
- * 0 on success, error code otherwise
- */
-typedef int (*rte_pipeline_port_out_action_handler_bulk)(
- struct rte_mbuf **pkts,
- uint64_t *pkts_mask,
- void *arg);
-
-/** Parameters for pipeline output port creation. The action handlers have to
-be either both enabled or both disabled (by setting them to NULL). When
-enabled, the pipeline selects between them at different moments, based on the
-number of packets that have to be sent to the same output port. */
-struct rte_pipeline_port_out_params {
- /** Output port operations (specific to each table type) */
- struct rte_port_out_ops *ops;
- /** Opaque parameter to be passed to create operation when invoked */
- void *arg_create;
-
- /** Callback function executing the user actions on single input
- packet */
- rte_pipeline_port_out_action_handler f_action;
- /** Callback function executing the user actions on bust of input
- packets */
- rte_pipeline_port_out_action_handler_bulk f_action_bulk;
- /** Opaque parameter to be passed to the action handler when invoked */
- void *arg_ah;
-};
-
-/**
- * Pipeline output port create
- *
- * @param p
- * Handle to pipeline instance
- * @param params
- * Parameters for pipeline output port creation
- * @param port_id
- * Output port ID. Valid only within the scope of output port IDs of the
- * current pipeline. Only returned after a successful invocation.
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_port_out_create(struct rte_pipeline *p,
- struct rte_pipeline_port_out_params *params,
- uint32_t *port_id);
-
-/**
- * Pipeline output port packet insert
- *
- * This function is called by the table action handler whenever it generates a
- * new packet to be sent out though one of the pipeline output ports. This
- * packet is not part of the burst of input packets read from any of the
- * pipeline input ports, so it is not an element of the pkts array input
- * parameter of the table action handler. This packet can be dropped by the
- * output port action handler.
- *
- * @param p
- * Handle to pipeline instance
- * @param port_id
- * Output port ID (returned by previous invocation of pipeline output port
- * create) to send the packet specified by pkt
- * @param pkt
- * New packet generated by the table action handler
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_port_out_packet_insert(struct rte_pipeline *p,
- uint32_t port_id,
- struct rte_mbuf *pkt);
-
-/**
- * Read pipeline port out stats.
- *
- * This function reads port out statistics identified by *port_id* of given
- * pipeline *p*.
- *
- * @param p
- * Handle to pipeline instance.
- * @param port_id
- * Port ID what stats will be returned.
- * @param stats
- * Statistics buffer.
- * @param clear
- * If not 0 clear stats after reading.
- * @return
- * 0 on success, error code otherwise
- */
-int rte_pipeline_port_out_stats_read(struct rte_pipeline *p, uint32_t port_id,
- struct rte_pipeline_port_out_stats *stats, int clear);
-#ifdef __cplusplus
-}
-#endif
-
-#endif