Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
rte_swx_pipeline.h(3)		      DPDK		   rte_swx_pipeline.h(3)

NAME
     rte_swx_pipeline.h

SYNOPSIS
     #include <stdint.h>
     #include <stdio.h>
     #include <rte_compat.h>
     #include 'rte_swx_port.h'
     #include 'rte_swx_table.h'
     #include 'rte_swx_extern.h'

   Data Structures
     struct rte_swx_pipeline_mirroring_params
     struct rte_swx_field_params
     struct rte_swx_match_field_params
     struct rte_swx_pipeline_table_params
     struct rte_swx_pipeline_selector_params
     struct rte_swx_pipeline_learner_params

   Macros
     #define RTE_SWX_NAME_SIZE	 64
     #define RTE_SWX_INSTRUCTION_SIZE	256
     #define RTE_SWX_INSTRUCTION_TOKENS_MAX   16
     #define RTE_SWX_PACKET_MIRRORING_SLOTS_DEFAULT   4
     #define RTE_SWX_PACKET_MIRRORING_SESSIONS_DEFAULT	 64

   Functions
     __rte_experimental  struct  rte_swx_pipeline * rte_swx_pipeline_find (const
	 char *name)
     __rte_experimental  int  rte_swx_pipeline_config  (struct	rte_swx_pipeline
	 **p, const char *name, int numa_node)
     __rte_experimental   int	rte_swx_pipeline_port_in_type_register	 (struct
	 rte_swx_pipeline *p, const char *name, struct rte_swx_port_in_ops *ops)
     __rte_experimental     int     rte_swx_pipeline_port_in_config	 (struct
	 rte_swx_pipeline *p, uint32_t port_id, const char *port_type_name, void
	 *args)
     __rte_experimental   int	rte_swx_pipeline_port_out_type_register  (struct
	 rte_swx_pipeline *p,  const  char  *name,  struct  rte_swx_port_out_ops
	 *ops)
     __rte_experimental     int     rte_swx_pipeline_port_out_config	 (struct
	 rte_swx_pipeline *p, uint32_t port_id, const char *port_type_name, void
	 *args)
     __rte_experimental    int	   rte_swx_pipeline_mirroring_config	 (struct
	 rte_swx_pipeline *p, struct rte_swx_pipeline_mirroring_params *params)
     __rte_experimental    int	 rte_swx_pipeline_extern_type_register	 (struct
	 rte_swx_pipeline   *p,   const   char	 *name,   const   char	  *mail-
	 box_struct_type_name,	 rte_swx_extern_type_constructor_t  constructor,
	 rte_swx_extern_type_destructor_t destructor)
     __rte_experimental  int   rte_swx_pipeline_extern_type_member_func_register
	 (struct  rte_swx_pipeline  *p, const char *extern_type_name, const char
	 *name, rte_swx_extern_type_member_func_t member_func)
     __rte_experimental   int	rte_swx_pipeline_extern_object_config	 (struct
	 rte_swx_pipeline  *p,	const  char *extern_type_name, const char *name,
	 const char *args)
     __rte_experimental   int	rte_swx_pipeline_extern_func_register	 (struct
	 rte_swx_pipeline    *p,   const   char   *name,   const   char   *mail-
	 box_struct_type_name, rte_swx_extern_func_t func)
     __rte_experimental    int	  rte_swx_pipeline_hash_func_register	 (struct
	 rte_swx_pipeline *p, const char *name, rte_swx_hash_func_t func)
     __rte_experimental int rte_swx_pipeline_rss_config (struct rte_swx_pipeline
	 *p, const char *name)
     __rte_experimental    int	 rte_swx_pipeline_struct_type_register	 (struct
	 rte_swx_pipeline *p,  const  char  *name,  struct  rte_swx_field_params
	 *fields, uint32_t n_fields, int last_field_has_variable_size)
     __rte_experimental   int	rte_swx_pipeline_packet_header_register  (struct
	 rte_swx_pipeline *p, const char *name, const char *struct_type_name)
     __rte_experimental  int  rte_swx_pipeline_packet_metadata_register  (struct
	 rte_swx_pipeline *p, const char *struct_type_name)
     __rte_experimental      int      rte_swx_pipeline_action_config	 (struct
	 rte_swx_pipeline    *p,    const     char     *name,	  const     char
	 *args_struct_type_name,  const char **instructions, uint32_t n_instruc-
	 tions)
     __rte_experimental   int	 rte_swx_pipeline_table_type_register	 (struct
	 rte_swx_pipeline  *p,	const  char *name, enum rte_swx_table_match_type
	 match_type, struct rte_swx_table_ops *ops)
     __rte_experimental      int      rte_swx_pipeline_table_config	 (struct
	 rte_swx_pipeline  *p,	const  char  *name,  struct rte_swx_pipeline_ta-
	 ble_params *params, const char *recommended_table_type_name, const char
	 *args, uint32_t size)
     __rte_experimental     int     rte_swx_pipeline_selector_config	 (struct
	 rte_swx_pipeline  *p,	const char *name, struct rte_swx_pipeline_selec-
	 tor_params *params)
     __rte_experimental     int     rte_swx_pipeline_learner_config	 (struct
	 rte_swx_pipeline	*p,	 const	    char      *name,	  struct
	 rte_swx_pipeline_learner_params *params, uint32_t size, uint32_t *time-
	 out, uint32_t n_timeouts)
     __rte_experimental     int     rte_swx_pipeline_regarray_config	 (struct
	 rte_swx_pipeline   *p,   const  char  *name,  uint32_t  size,	uint64_t
	 init_val)
     __rte_experimental     int     rte_swx_pipeline_metarray_config	 (struct
	 rte_swx_pipeline *p, const char *name, uint32_t size)
     __rte_experimental    int	  rte_swx_pipeline_instructions_config	 (struct
	 rte_swx_pipeline *p, const  char  **instructions,  uint32_t  n_instruc-
	 tions)
     __rte_experimental int rte_swx_pipeline_build (struct rte_swx_pipeline *p)
     __rte_experimental  int  rte_swx_pipeline_codegen	(FILE  *spec_file,  FILE
	 *code_file, uint32_t *err_line, const char **err_msg)
     __rte_experimental     int     rte_swx_pipeline_build_from_lib	 (struct
	 rte_swx_pipeline **p, const char *name, const char *lib_file_name, FILE
	 *iospec_file, int numa_node)
     __rte_experimental  void  rte_swx_pipeline_run (struct rte_swx_pipeline *p,
	 uint32_t n_instructions)
     __rte_experimental void rte_swx_pipeline_flush (struct rte_swx_pipeline *p)
     __rte_experimental void rte_swx_pipeline_free (struct rte_swx_pipeline *p)

Detailed Description
     RTE SWX Pipeline

     Definition in file rte_swx_pipeline.h.

Macro Definition Documentation
   #define RTE_SWX_NAME_SIZE   64
     Name size.

     Definition at line 27 of file rte_swx_pipeline.h.

   #define RTE_SWX_INSTRUCTION_SIZE   256
     Instruction size.

     Definition at line 32 of file rte_swx_pipeline.h.

   #define RTE_SWX_INSTRUCTION_TOKENS_MAX   16
     Instruction tokens.

     Definition at line 37 of file rte_swx_pipeline.h.

   #define RTE_SWX_PACKET_MIRRORING_SLOTS_DEFAULT   4
     Default number of packet mirroring slots.

     Definition at line 184 of file rte_swx_pipeline.h.

   #define RTE_SWX_PACKET_MIRRORING_SESSIONS_DEFAULT   64
     Default maximum number of packet mirroring sessions.

     Definition at line 189 of file rte_swx_pipeline.h.

Function Documentation
   __rte_experimental struct  rte_swx_pipeline	*  rte_swx_pipeline_find  (const
     char * name)
     Pipeline find

     Parameters
	 name Pipeline name.

     Returns
	 Valid pipeline handle if found or NULL otherwise.

   __rte_experimental int rte_swx_pipeline_config (struct rte_swx_pipeline ** p,
     const char * name, int numa_node)
     Pipeline configure

     Parameters
	 p  Pipeline handle. Must point to valid memory. Contains valid pipeline
	 handle when the function returns successfully.
	 name Pipeline unique name.
	 numa_node Non-Uniform Memory Access (NUMA) node.

     Returns
	 0 on success or the following error codes otherwise:  -EINVAL:  Invalid
	 argument;  -ENOMEM:  Not  enough space/cannot allocate memory; -EEXIST:
	 Pipeline with this name already exists.

   __rte_experimental	int    rte_swx_pipeline_port_in_type_register	 (struct
     rte_swx_pipeline * p, const char * name, struct rte_swx_port_in_ops * ops)
     Pipeline input port type register

     Parameters
	 p Pipeline handle.
	 name Input port type name.
	 ops Input port type operations.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough space/cannot  allocate  memory;	-EEXIST:
	 Input port type with this name already exists.

   __rte_experimental	   int	    rte_swx_pipeline_port_in_config	 (struct
     rte_swx_pipeline * p, uint32_t port_id, const char * port_type_name, void *
     args)
     Pipeline input port configure

     Parameters
	 p Pipeline handle.
	 port_id Input port ID.
	 port_type_name Existing input port type name.
	 args Input port creation arguments.

     Returns
	 0 on success or the following error codes otherwise:  -EINVAL:  Invalid
	 argument;  -ENOMEM:  Not  enough space/cannot allocate memory; -ENODEV:
	 Input port object creation error.

   __rte_experimental	int   rte_swx_pipeline_port_out_type_register	 (struct
     rte_swx_pipeline * p, const char * name, struct rte_swx_port_out_ops * ops)

     Pipeline output port type register

     Parameters
	 p Pipeline handle.
	 name Output port type name.
	 ops Output port type operations.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough space/cannot  allocate  memory;	-EEXIST:
	 Output port type with this name already exists.

   __rte_experimental	   int	    rte_swx_pipeline_port_out_config	 (struct
     rte_swx_pipeline * p, uint32_t port_id, const char * port_type_name, void *
     args)
     Pipeline output port configure

     Parameters
	 p Pipeline handle.
	 port_id Output port ID.
	 port_type_name Existing output port type name.
	 args Output port creation arguments.

     Returns
	 0 on success or the following error codes otherwise:  -EINVAL:  Invalid
	 argument;  -ENOMEM:  Not  enough space/cannot allocate memory; -ENODEV:
	 Output port object creation error.

   __rte_experimental	  int	  rte_swx_pipeline_mirroring_config	 (struct
     rte_swx_pipeline * p, struct rte_swx_pipeline_mirroring_params * params)
     Packet mirroring configure

     Parameters
	 p Pipeline handle.
	 params Packet mirroring parameters.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough memory;	-EEXIST:  Pipeline  was  already
	 built successfully.

   __rte_experimental	 int	rte_swx_pipeline_extern_type_register	 (struct
     rte_swx_pipeline  *  p,  const  char   *	name,	const	char   *   mail-
     box_struct_type_name,     rte_swx_extern_type_constructor_t    constructor,
     rte_swx_extern_type_destructor_t destructor)
     Pipeline extern type register

     Parameters
	 p Pipeline handle.
	 name Extern type name.
	 mailbox_struct_type_name Name of existing struct type	used  to  define
	 the  mailbox  size and layout for the extern objects that are instances
	 of this type. Each extern object gets its own mailbox, which is used to
	 pass the input arguments to the member functions and retrieve the  out-
	 put results.
	 constructor  Function	used  to  create the extern objects that are in-
	 stances of this type.
	 destructor Function used to free the extern objects that are  instances
	 of this type.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough space/cannot  allocate  memory;	-EEXIST:
	 Extern type with this name already exists.

   __rte_experimental	 int   rte_swx_pipeline_extern_type_member_func_register
     (struct rte_swx_pipeline * p, const char * extern_type_name, const  char  *
     name, rte_swx_extern_type_member_func_t member_func)
     Pipeline extern type member function register

     Parameters
	 p Pipeline handle.
	 extern_type_name Existing extern type name.
	 name Name for the new member function to be added to the extern type.
	 member_func The new member function.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough space/cannot  allocate  memory;	-EEXIST:
	 Member  function  with this name already exists for this type; -ENOSPC:
	 Maximum number of member functions reached for this type.

   __rte_experimental	 int	rte_swx_pipeline_extern_object_config	 (struct
     rte_swx_pipeline  *  p,  const  char * extern_type_name, const char * name,
     const char * args)
     Pipeline extern object configure

     Instantiate a given extern type to create new extern object.

     Parameters
	 p Pipeline handle.
	 extern_type_name Existing extern type name.
	 name Name for the new object instantiating the extern type.
	 args Extern object constructor arguments.

     Returns
	 0 on success or the following error codes otherwise:  -EINVAL:  Invalid
	 argument;  -ENOMEM:  Not  enough space/cannot allocate memory; -EEXIST:
	 Extern object with this name already  exists;	-ENODEV:  Extern  object
	 constructor error.

   __rte_experimental	 int	rte_swx_pipeline_extern_func_register	 (struct
     rte_swx_pipeline  *  p,  const  char   *	name,	const	char   *   mail-
     box_struct_type_name, rte_swx_extern_func_t func)
     Pipeline extern function register

     Parameters
	 p Pipeline handle.
	 name Extern function name.
	 mailbox_struct_type_name  Name  of  existing struct type used to define
	 the mailbox size and layout for this extern function.	The  mailbox  is
	 used  to  pass  the input arguments to the extern function and retrieve
	 the output results.
	 func The extern function.

     Returns
	 0 on success or the following error codes otherwise:  -EINVAL:  Invalid
	 argument;  -ENOMEM:  Not  enough space/cannot allocate memory; -EEXIST:
	 Extern function with this name already exists.

   __rte_experimental	 int	 rte_swx_pipeline_hash_func_register	 (struct
     rte_swx_pipeline * p, const char * name, rte_swx_hash_func_t func)
     Pipeline hash function register

     Parameters
	 p Pipeline handle.
	 name Hash function name.
	 func Hash function.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough space/cannot  allocate  memory;	-EEXIST:
	 Hash function with this name already exists.

   __rte_experimental int rte_swx_pipeline_rss_config (struct rte_swx_pipeline *
     p, const char * name)
     Pipeline Receive Side Scaling (RSS) object configure

     Parameters
	 p Pipeline handle.
	 name Name for the new RSS object.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough space/cannot  allocate  memory;	-EEXIST:
	 RSS object with this name already exists.

   __rte_experimental	 int	rte_swx_pipeline_struct_type_register	 (struct
     rte_swx_pipeline * p, const char  *  name,  struct  rte_swx_field_params  *
     fields, uint32_t n_fields, int last_field_has_variable_size)
     Pipeline struct type register

     Structs  are  used  extensively  in many part of the pipeline to define the
     size and layout of a specific memory piece such as: headers, meta-data, ac-
     tion data stored in a table entry, mailboxes for extern objects  and  func-
     tions.  Similar  to C language structs, they are a well defined sequence of
     fields, with each field having a unique name and a constant size.

     In order to use structs to express variable size  packet  headers	such  as
     IPv4  with  options, it is allowed for the last field of the struct type to
     have a variable size between 0 and n_bits bits, with  the	actual	size  of
     this  field  determined at run-time for each packet. This struct feature is
     restricted to just a few selected instructions that deal with packet  head-
     ers,  so a typical struct generally has a constant size that is fully known
     when its struct type is registered.

     Parameters
	 p Pipeline handle.
	 name Struct type name.
	 fields The sequence of struct fields.
	 n_fields The number of struct fields.
	 last_field_has_variable_size If non-zero (true), then	the  last  field
	 has a variable size between 0 and n_bits bits, with its actual size de-
	 termined  at  run-time  for each packet. If zero (false), then the last
	 field has a constant size of n_bits bits.

     Returns
	 0 on success or the following error codes otherwise:  -EINVAL:  Invalid
	 argument;  -ENOMEM:  Not  enough space/cannot allocate memory; -EEXIST:
	 Struct type with this name already exists.

   __rte_experimental	int   rte_swx_pipeline_packet_header_register	 (struct
     rte_swx_pipeline * p, const char * name, const char * struct_type_name)
     Pipeline packet header register

     Parameters
	 p Pipeline handle.
	 name Header name.
	 struct_type_name The struct type instantiated by this packet header.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough space/cannot  allocate  memory;	-EEXIST:
	 Header  with this name already exists; -ENOSPC: Maximum number of head-
	 ers reached for the pipeline.

   __rte_experimental  int   rte_swx_pipeline_packet_metadata_register	 (struct
     rte_swx_pipeline * p, const char * struct_type_name)
     Pipeline packet meta-data register

     Parameters
	 p Pipeline handle.
	 struct_type_name The struct type instantiated by the packet meta-data.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument.

   __rte_experimental	   int	    rte_swx_pipeline_action_config	 (struct
     rte_swx_pipeline	 *    p,    const    char   *	name,	const	char   *
     args_struct_type_name, const char ** instructions, uint32_t n_instructions)

     Instruction operands:

     +-----+---------------------------+------------------+-----+-----+

     |	   | Description	       | Format 	  | DST | SRC |

     +-----+---------------------------+------------------+-----+-----+

     | hdr | Header		       | h.header	  |	|     |

     +-----+---------------------------+------------------+-----+-----+

     | act | Action		       | ACTION 	  |	|     |

     +-----+---------------------------+------------------+-----+-----+

     | tbl | Table		       | TABLE		  |	|     |

     +-----+---------------------------+------------------+-----+-----+

     | H   | Header field	       | h.header.field   | YES | YES |

     +-----+---------------------------+------------------+-----+-----+

     | M   | Meta-data field	       | m.field	  | YES | YES |

     +-----+---------------------------+------------------+-----+-----+

     | E   | Extern obj mailbox field  | e.ext_obj.field  | YES | YES |

     +-----+---------------------------+------------------+-----+-----+

     | F   | Extern func mailbox field | f.ext_func.field | YES | YES |

     +-----+---------------------------+------------------+-----+-----+

     | T   | Table action data field   | t.header.field   | NO	| YES |

     +-----+---------------------------+------------------+-----+-----+

     | I   | Immediate value (64-bit)  | h.header.field   | NO	| YES |

     +-----+---------------------------+------------------+-----+-----+

     Instruction set:

     +------------+----------------------+-------------------+------+--------+

     | Instr.	  | Instruction 	 | Instruction	     | 1st  | 2nd    |

     | Name	  | Description 	 | Format	     | opnd.| opnd.  |

     +------------+----------------------+-------------------+------+--------+

     | rx	  | Receive one pkt	 | rx m.port_in      | M    |	     |

     +------------+----------------------+-------------------+------+--------+

     | tx	  | Transmit one pkt	 | tx m.port_out     | M    |	     |

     +------------+----------------------+-------------------+------+--------+

     | extract	  | Extract one hdr	 | extract h.hdr     | hdr  |	     |

     +------------+----------------------+-------------------+------+--------+

     | emit	  | Emit one hdr	 | emit h.hdr	     | hdr  |	     |

     +------------+----------------------+-------------------+------+--------+

     | validate   | Validate one hdr	 | validate h.hdr    | hdr  |	     |

     +------------+----------------------+-------------------+------+--------+

     | invalidate | Invalidate one hdr	 | invalidate h.hdr  | hdr  |	     |

     +------------+----------------------+-------------------+------+--------+

     | mov	  | dst = src		 | mov dst src	     | HMEF | HMEFTI |

     +------------+----------------------+-------------------+------+--------+

     | add	  | dst += src		 | add dst src	     | HMEF | HMEFTI |

     +------------+----------------------+-------------------+------+--------+

     | sub	  | dst -= src		 | add dst src	     | HMEF | HMEFTI |

     +------------+----------------------+-------------------+------+--------+

     | ckadd	  | Checksum add: dst =  | add dst src	     | HMEF | HMEFTI |

     |		  | dst '+ src[0:1] '+	 |		     |	    | or hdr |

     |		  | src[2:3] '+ ...	 |		     |	    |	     |

     +------------+----------------------+-------------------+------+--------+

     | cksub	  | Checksum subtract:	 | add dst src	     | HMEF | HMEFTI |

     |		  | dst = dst '- src	 |		     |	    |	     |

     +------------+----------------------+-------------------+------+--------+

     | and	  | dst &= src		 | and dst src	     | HMEF | HMEFTI |

     +------------+----------------------+-------------------+------+--------+

     | or	  | dst |= src		 | or  dst src	     | HMEF | HMEFTI |

     +------------+----------------------+-------------------+------+--------+

     | xor	  | dst ^= src		 | xor dst src	     | HMEF | HMEFTI |

     +------------+----------------------+-------------------+------+--------+

     | shl	  | dst <<= src 	 | shl dst src	     | HMEF | HMEFTI |

     +------------+----------------------+-------------------+------+--------+

     | shr	  | dst >>= src 	 | shr dst src	     | HMEF | HMEFTI |

     +------------+----------------------+-------------------+------+--------+

     | table	  | Table lookup	 | table TABLE	     | tbl  |	     |

     +------------+----------------------+-------------------+------+--------+

     | extern	  | Ext obj member func  | extern e.obj.mfunc| ext  |	     |

     |		  | call or ext func call| extern f.func     |	    |	     |

     +------------+----------------------+-------------------+------+--------+

     | jmp	  | Unconditional jump	 | jmp LABEL	     |	    |	     |

     +------------+----------------------+-------------------+------+--------+

     | jmpv	  | Jump if hdr is valid | jmpv LABEL h.hdr  | hdr  |	     |

     +------------+----------------------+-------------------+------+--------+

     | jmpnv	  | Jump if hdr is inval | jmpnv LABEL h.hdr | hdr  |	     |

     +------------+----------------------+-------------------+------+--------+

     | jmph	  | Jump if tbl lkp hit  | jmph LABEL	     |	    |	     |

     +------------+----------------------+-------------------+------+--------+

     | jmpnh	  | Jump if tbl lkp miss | jmpnh LABEL	     |	    |	     |

     +------------+----------------------+-------------------+------+--------+

     | jmpa	  | Jump if action run	 | jmpa LABEL ACTION | act  |	     |

     +------------+----------------------+-------------------+------+--------+

     | jmpna	  | Jump if act not run  | jmpna LABEL ACTION| act  |	     |

     +------------+----------------------+-------------------+------+--------+

     | jmpeq	  | Jump if (a == b)	 | jmpeq LABEL a b   | HMEFT| HMEFTI |

     +------------+----------------------+-------------------+------+--------+

     | jmpneq	  | Jump if (a != b)	 | jmpneq LABEL a b  | HMEFT| HMEFTI |

     +------------+----------------------+-------------------+------+--------+

     | jmplt	  | Jump if (a < b)	 | jmplt LABEL a b   | HMEFT| HMEFTI |

     +------------+----------------------+-------------------+------+--------+

     | jmpgt	  | Jump if (a > b)	 | jmpgt LABEL a b   | HMEFT| HMEFTI |

     +------------+----------------------+-------------------+------+--------+

     | return	  | Return from action	 | return	     |	    |	     |

     +------------+----------------------+-------------------+------+--------+

     At initialization time, the pipeline and action instructions (including the
     symbolic name operands) are translated to internal data structures that are
     used at run-time. Pipeline action configure

     Parameters
	 p Pipeline handle.
	 name Action name.
	 args_struct_type_name The struct type instantiated by the action  data.
	 The  action  data represent the action arguments that are stored in the
	 table entry together with the action ID. Set to NULL  when  the  action
	 does not have any arguments.
	 instructions Action instructions.
	 n_instructions Number of action instructions.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough space/cannot  allocate  memory;	-EEXIST:
	 Action with this name already exists.

   __rte_experimental	  int	 rte_swx_pipeline_table_type_register	 (struct
     rte_swx_pipeline * p, const  char	*  name,  enum	rte_swx_table_match_type
     match_type, struct rte_swx_table_ops * ops)
     Pipeline table type register

     Parameters
	 p Pipeline handle.
	 name Table type name.
	 match_type Match type implemented by the new table type.
	 ops Table type operations.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough space/cannot  allocate  memory;	-EEXIST:
	 Table type with this name already exists.

   __rte_experimental int rte_swx_pipeline_table_config (struct rte_swx_pipeline
     *	p,  const  char  *  name, struct rte_swx_pipeline_table_params * params,
     const char * recommended_table_type_name, const char * args, uint32_t size)

     Pipeline table configure

     Parameters
	 p Pipeline handle.
	 name Table name.
	 params Table parameters.
	 recommended_table_type_name Recommended table type.  Typically  set  to
	 NULL. Useful as guidance when there are multiple table types registered
	 for  the  match  type	of the table, as determined from the table match
	 fields specification. Silently ignored if the	recommended  table  type
	 does not exist or it serves a different match type.
	 args Table creation arguments.
	 size Guideline on maximum number of table entries.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough space/cannot  allocate  memory;	-EEXIST:
	 Table with this name already exists; -ENODEV: Table creation error.

   __rte_experimental	   int	    rte_swx_pipeline_selector_config	 (struct
     rte_swx_pipeline * p, const char  *  name,  struct  rte_swx_pipeline_selec-
     tor_params * params)
     Pipeline selector table configure

     Parameters
	 p Pipeline handle.
	 name Selector table name.
	 params Selector table parameters.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough space/cannot  allocate  memory;	-EEXIST:
	 Selector  table  with this name already exists; -ENODEV: Selector table
	 creation error.

   __rte_experimental	   int	    rte_swx_pipeline_learner_config	 (struct
     rte_swx_pipeline	  *	p,     const	 char	  *	name,	  struct
     rte_swx_pipeline_learner_params * params, uint32_t size, uint32_t	*  time-
     out, uint32_t n_timeouts)
     Pipeline learner table configure

     Parameters
	 p Pipeline handle.
	 name Learner table name.
	 params Learner table parameters.
	 size The maximum number of table entries. Must be non-zero.
	 timeout Array of possible table entry timeouts in seconds. Must be non-
	 NULL.
	 n_timeouts Number of elements in the timeout array.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough space/cannot  allocate  memory;	-EEXIST:
	 Learner  table  with  this  name already exists; -ENODEV: Learner table
	 creation error.

   __rte_experimental	  int	   rte_swx_pipeline_regarray_config	 (struct
     rte_swx_pipeline * p, const char * name, uint32_t size, uint64_t init_val)
     Pipeline register array configure

     Parameters
	 p Pipeline handle.
	 name Register array name.
	 size Number of registers in the array. Each register is 64-bit in size.
	 init_val Initial value for every register in the array. The recommended
	 value is 0.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough space/cannot  allocate  memory;	-EEXIST:
	 Register array with this name already exists.

   __rte_experimental	   int	    rte_swx_pipeline_metarray_config	 (struct
     rte_swx_pipeline * p, const char * name, uint32_t size)
     Pipeline meter array configure

     Parameters
	 p Pipeline handle.
	 name Meter array name.
	 size Number of meters in the array. Each meter in the array  implements
	 the  Two Rate Three Color Marker (trTCM) algorithm, as specified by RFC
	 2698.

     Returns
	 0 on success or the following error codes otherwise:  -EINVAL:  Invalid
	 argument;  -ENOMEM:  Not  enough space/cannot allocate memory; -EEXIST:
	 Meter array with this name already exists.

   __rte_experimental	 int	rte_swx_pipeline_instructions_config	 (struct
     rte_swx_pipeline * p, const char ** instructions, uint32_t n_instructions)
     Pipeline instructions configure

     Parameters
	 p Pipeline handle.
	 instructions Pipeline instructions.
	 n_instructions Number of pipeline instructions.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough space/cannot allocate memory.

   __rte_experimental int rte_swx_pipeline_build (struct rte_swx_pipeline * p)
     Pipeline build

     Once called, the pipeline build operation marks the end of pipeline config-
     uration. At this point, all the internal data structures needed to run  the
     pipeline are built.

     Parameters
	 p Pipeline handle.

     Returns
	 0  on	success or the following error codes otherwise: -EINVAL: Invalid
	 argument; -ENOMEM: Not enough space/cannot  allocate  memory;	-EEXIST:
	 Pipeline was already built successfully.

   __rte_experimental  int  rte_swx_pipeline_codegen  (FILE  * spec_file, FILE *
     code_file, uint32_t * err_line, const char ** err_msg)
     Pipeline C code generate based on input specification file

     Parameters
	 spec_file Pipeline specification file (.spec) provided as input.
	 code_file Pipeline C language file (.c) to be generated.
	 err_line In case of error and non-NULL, the line number within the spec
	 file where the error occurred. The first line number in the file is 1.
	 err_msg In case of error and non-NULL, the error message.

     Returns
	 0 on success or the following error codes otherwise:  -EINVAL:  Invalid
	 argument;  -ENOMEM:  Not  enough space/cannot allocate memory; -EEXIST:
	 Resource with the same name already exists.

   __rte_experimental	   int	    rte_swx_pipeline_build_from_lib	 (struct
     rte_swx_pipeline  ** p, const char * name, const char * lib_file_name, FILE
     * iospec_file, int numa_node)
     Pipeline build from shared object library

     The shared object library must be built from the  C  language  source  code
     file previously generated by the rte_swx_pipeline_codegen() API function.

     The pipeline I/O specification file defines the I/O ports of the pipeline.

     Parameters
	 p  Pipeline handle. Must point to valid memory. Contains valid pipeline
	 handle when the function returns successfully.
	 name Pipeline unique name.
	 lib_file_name Shared object library file name.
	 iospec_file Pipeline I/O specification file.
	 numa_node Non-Uniform Memory Access (NUMA) node.

     Returns
	 0 on success or the following error codes otherwise:  -EINVAL:  Invalid
	 argument;  -ENOMEM:  Not  enough space/cannot allocate memory; -EEXIST:
	 Pipeline with this name already exists; -ENODEV: Extern object or table
	 creation error.

   __rte_experimental void rte_swx_pipeline_run (struct  rte_swx_pipeline  *  p,
     uint32_t n_instructions)
     Pipeline run

     Parameters
	 p Pipeline handle.
	 n_instructions Number of instructions to execute.

   __rte_experimental void rte_swx_pipeline_flush (struct rte_swx_pipeline * p)
     Pipeline flush

     Flush all output ports of the pipeline.

     Parameters
	 p Pipeline handle. If p is NULL, no operation is performed.

   __rte_experimental void rte_swx_pipeline_free (struct rte_swx_pipeline * p)
     Pipeline free

     Parameters
	 p Pipeline handle.

Author
     Generated automatically by Doxygen for DPDK from the source code.

Version 25.11.0 		 Thu Aug 27 2026	   rte_swx_pipeline.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=RTE_SWX_PACKET_MIRRORING_SLOTS_DEFAULT&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help