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

FreeBSD Manual Pages

  
 
  

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

NAME
       rte_event_eth_tx_adapter.h

SYNOPSIS
       #include	<stdint.h>
       #include	<rte_compat.h>
       #include	<rte_mbuf.h>
       #include	'rte_eventdev.h'

   Data	Structures
       struct rte_event_eth_tx_adapter_conf
       struct rte_event_eth_tx_adapter_runtime_params
       struct rte_event_eth_tx_adapter_stats

   Macros
       #define RTE_EVENT_ETH_TX_ADAPTER_ENQUEUE_SAME_DEST   0x1

   Typedefs
       typedef int(* rte_event_eth_tx_adapter_conf_cb) (uint8_t	id, uint8_t
	   dev_id, struct rte_event_eth_tx_adapter_conf	*conf, void *arg)

   Functions
       int rte_event_eth_tx_adapter_create (uint8_t id,	uint8_t	dev_id,	struct
	   rte_event_port_conf *port_config)
       int rte_event_eth_tx_adapter_create_ext (uint8_t	id, uint8_t dev_id,
	   rte_event_eth_tx_adapter_conf_cb conf_cb, void *conf_arg)
       int rte_event_eth_tx_adapter_free (uint8_t id)
       int rte_event_eth_tx_adapter_start (uint8_t id)
       int rte_event_eth_tx_adapter_stop (uint8_t id)
       int rte_event_eth_tx_adapter_queue_add (uint8_t id, uint16_t
	   eth_dev_id, int32_t queue)
       int rte_event_eth_tx_adapter_queue_del (uint8_t id, uint16_t
	   eth_dev_id, int32_t queue)
       static __rte_always_inline void rte_event_eth_tx_adapter_txq_set
	   (struct rte_mbuf *pkt, uint16_t queue)
       static __rte_always_inline uint16_t rte_event_eth_tx_adapter_txq_get
	   (struct rte_mbuf *pkt)
       int rte_event_eth_tx_adapter_event_port_get (uint8_t id,	uint8_t
	   *event_port_id)
       static uint16_t rte_event_eth_tx_adapter_enqueue	(uint8_t dev_id,
	   uint8_t port_id, struct rte_event ev[], uint16_t nb_events, const
	   uint8_t flags)
       int rte_event_eth_tx_adapter_stats_get (uint8_t id, struct
	   rte_event_eth_tx_adapter_stats *stats)
       int rte_event_eth_tx_adapter_stats_reset	(uint8_t id)
       int rte_event_eth_tx_adapter_service_id_get (uint8_t id,	uint32_t
	   *service_id)
       int rte_event_eth_tx_adapter_instance_get (uint16_t eth_dev_id,
	   uint16_t tx_queue_id, uint8_t *txa_inst_id)
       int rte_event_eth_tx_adapter_queue_start	(uint16_t eth_dev_id, uint16_t
	   tx_queue_id)
       int rte_event_eth_tx_adapter_queue_stop (uint16_t eth_dev_id, uint16_t
	   tx_queue_id)
       __rte_experimental int rte_event_eth_tx_adapter_runtime_params_init
	   (struct rte_event_eth_tx_adapter_runtime_params *txa_params)
       __rte_experimental int rte_event_eth_tx_adapter_runtime_params_set
	   (uint8_t id,	struct rte_event_eth_tx_adapter_runtime_params
	   *params)
       __rte_experimental int rte_event_eth_tx_adapter_runtime_params_get
	   (uint8_t id,	struct rte_event_eth_tx_adapter_runtime_params
	   *params)

Detailed Description
       RTE Event Ethernet Tx Adapter

       The event ethernet Tx adapter provides configuration and	data path APIs
       for the ethernet	transmit stage of an event driven packet processing
       application. These APIs abstract	the implementation of the transmit
       stage and allow the application to use eventdev PMD support or a	common
       implementation.

       In the common implementation, the application enqueues mbufs to the
       adapter which runs as a rte_service function. The service function
       dequeues	events from its	event port and transmits the mbufs referenced
       by these	events.

       The ethernet Tx event adapter APIs are:

        rte_event_eth_tx_adapter_create()

        rte_event_eth_tx_adapter_create_ext()

        rte_event_eth_tx_adapter_free()

        rte_event_eth_tx_adapter_start()

        rte_event_eth_tx_adapter_stop()

        rte_event_eth_tx_adapter_queue_add()

        rte_event_eth_tx_adapter_queue_del()

        rte_event_eth_tx_adapter_stats_get()

        rte_event_eth_tx_adapter_stats_reset()

        rte_event_eth_tx_adapter_enqueue()

        rte_event_eth_tx_adapter_event_port_get()

        rte_event_eth_tx_adapter_service_id_get()

        rte_event_eth_tx_adapter_instance_get()

        rte_event_eth_tx_adapter_queue_start()

        rte_event_eth_tx_adapter_queue_stop()

        rte_event_eth_tx_adapter_runtime_params_get()

        rte_event_eth_tx_adapter_runtime_params_init()

        rte_event_eth_tx_adapter_runtime_params_set()

       The	 application	   creates	 the	   adapter	 using
       rte_event_eth_tx_adapter_create()				    or
       rte_event_eth_tx_adapter_create_ext().

       The  adapter  will  use the common implementation when the eventdev PMD
       does   not    have    the    RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT
       capability.  The	 common	 implementation	 uses  an  event  port that is
       created	 using	 the   port   configuration   parameter	  passed    to
       rte_event_eth_tx_adapter_create().  The	application  can  get the port
       identifier  using  rte_event_eth_tx_adapter_event_port_get()  and  must
       link an event queue to this port.

       If  the eventdev	PMD has	the RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT
       flags  set,  Tx	adapter	 events	  should   be	enqueued   using   the
       rte_event_eth_tx_adapter_enqueue()   function,	else  the  application
       should use rte_event_enqueue_burst().

       Transmit	queues can  be	added  and  deleted  from  the	adapter	 using
       rte_event_eth_tx_adapter_queue_add()/del() APIs respectively.

       The   application   can	 start	 and   stop   the  adapter  using  the
       rte_event_eth_tx_adapter_start/stop() calls.

       The common adapter implementation  uses	an  EAL	 service  function  as
       described  before and its execution is controlled using the rte_service
       APIs. The  rte_event_eth_tx_adapter_service_id_get()  function  can  be
       used to retrieve	the adapter's service function ID.

       The  ethernet port and transmit queue index to transmit the mbuf	on are
       specified using the mbuf	port struct rte_mbuf::hash::txadapter:txq. The
       application  should  use	 the  rte_event_eth_tx_adapter_txq_set()   and
       rte_event_eth_tx_adapter_txq_get()  functions  to  access  the transmit
       queue index, using these	macros will help with  minimizing  application
       impact due to a change in how the transmit queue	index is specified.

       Definition in file rte_event_eth_tx_adapter.h.

Macro Definition Documentation
   #define RTE_EVENT_ETH_TX_ADAPTER_ENQUEUE_SAME_DEST	0x1
       This  flag  is used when	all the	packets	enqueued in the	tx adapter are
       destined	for the	same Ethernet port & Tx	queue.

       Definition at line 358 of file rte_event_eth_tx_adapter.h.

Typedef	Documentation
   typedef  int(*  rte_event_eth_tx_adapter_conf_cb)  (uint8_t	 id,   uint8_t
       dev_id, struct rte_event_eth_tx_adapter_conf *conf, void	*arg)
       Function	 type used for adapter configuration callback. The callback is
       used to fill in members of  the	struct	rte_event_eth_tx_adapter_conf,
       this  callback  is  invoked  when creating a RTE	service	function based
       adapter implementation.

       Parameters
	   id Adapter identifier.
	   dev_id Event	device identifier.
	   conf	Structure that needs to	be populated by	this callback.
	   arg Argument	to the callback. This is  the  same  as	 the  conf_arg
	   passed to the rte_event_eth_tx_adapter_create_ext().

       Returns

	    0:	Success

	    <0: Error code on failure

       Definition at line 160 of file rte_event_eth_tx_adapter.h.

Function Documentation
   int	rte_event_eth_tx_adapter_create	 (uint8_t  id,	uint8_t	dev_id,	struct
       rte_event_port_conf * port_config)
       Create a	new ethernet Tx	adapter	with the specified identifier.

       When   this   API   is	used   for    creating	  adapter    instance,
       rte_event_dev_config::nb_event_ports  is	automatically incremented, and
       event device is reconfigured with additional event port during  service
       initialization. This event device reconfigure logic also	increments the
       rte_event_dev_config::nb_single_link_event_port_queues parameter	if the
       adapter event port config is of type RTE_EVENT_PORT_CFG_SINGLE_LINK.

       Application     no     longer	 needs	   to	 account    for	   the
       rte_event_dev_config::nb_event_ports				   and
       rte_event_dev_config::nb_single_link_event_port_queues	    parameters
       required	for eth	Tx adapter in event device configure when the  adapter
       is created with this API.

       Parameters
	   id The identifier of	the ethernet Tx	adapter.
	   dev_id The event device identifier.
	   port_config	 Event	port  configuration,  the  adapter  uses  this
	   configuration to create an event port if needed.

       Returns

	    0:	Success

	    <0: Error code on failure

   int	rte_event_eth_tx_adapter_create_ext  (uint8_t  id,   uint8_t   dev_id,
       rte_event_eth_tx_adapter_conf_cb	conf_cb, void *	conf_arg)
       Create a	new ethernet Tx	adapter	with the specified identifier.

       Parameters
	   id The identifier of	the ethernet Tx	adapter.
	   dev_id The event device identifier.
	   conf_cb  Callback  function	that initializes members of the	struct
	   rte_event_eth_tx_adapter_conf struct	passed into it.
	   conf_arg Argument that is passed to the conf_cb function.

       Returns

	    0:	Success

	    <0: Error code on failure

   int rte_event_eth_tx_adapter_free (uint8_t id)
       Free an ethernet	Tx adapter

       Parameters
	   id Adapter identifier.

       Returns

	    0:	Success

	    <0: Error code on failure,	If the adapter	still  has  Tx	queues
	     added to it, the function returns -EBUSY.

   int rte_event_eth_tx_adapter_start (uint8_t id)
       Start ethernet Tx adapter

       Parameters
	   id Adapter identifier.

       Returns

	    0:	Success, Adapter started correctly.

	    <0: Error code on failure.

   int rte_event_eth_tx_adapter_stop (uint8_t id)
       Stop ethernet Tx	adapter

       Parameters
	   id Adapter identifier.

       Returns

	    0:	Success.

	    <0: Error code on failure.

   int	rte_event_eth_tx_adapter_queue_add  (uint8_t  id, uint16_t eth_dev_id,
       int32_t queue)
       Add a Tx	queue to the adapter. A	queue value of -1 is used to  indicate
       all queues within the device.

       Parameters
	   id Adapter identifier.
	   eth_dev_id Ethernet Port Identifier.
	   queue Tx queue index.

       Returns

	    0:	Success, Queues	added successfully.

	    <0: Error code on failure.

   int	rte_event_eth_tx_adapter_queue_del  (uint8_t  id, uint16_t eth_dev_id,
       int32_t queue)
       Delete a	Tx queue from the adapter. A queue value  of  -1  is  used  to
       indicate	 all  queues  within  the device, that have been added to this
       adapter.

       Parameters
	   id Adapter identifier.
	   eth_dev_id Ethernet Port Identifier.
	   queue Tx queue index.

       Returns

	    0:	Success, Queues	deleted	successfully.

	    <0: Error code on failure.

   static __rte_always_inline  void  rte_event_eth_tx_adapter_txq_set  (struct
       rte_mbuf	* pkt, uint16_t	queue) [static]
       Set Tx queue in the mbuf. This queue is used by the adapter to transmit
       the mbuf.

       Parameters
	   pkt Pointer to the mbuf.
	   queue Tx queue index.

       Definition at line 318 of file rte_event_eth_tx_adapter.h.

   static    __rte_always_inline   uint16_t   rte_event_eth_tx_adapter_txq_get
       (struct rte_mbuf	* pkt) [static]
       Retrieve	Tx queue from the mbuf.

       Parameters
	   pkt Pointer to the mbuf.

       Returns
	   Tx queue identifier.

       See also
	   rte_event_eth_tx_adapter_txq_set()

       Definition at line 334 of file rte_event_eth_tx_adapter.h.

   int	rte_event_eth_tx_adapter_event_port_get	  (uint8_t   id,   uint8_t   *
       event_port_id)
       Retrieve	 the  adapter event port. The adapter creates an event port if
       the  RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT	is  not	 set  in   the
       ethernet	Tx capabilities	of the event device.

       Parameters
	   id Adapter Identifier.
	   event_port_id Event port pointer.

       Returns

	    0:	Success.

	    <0: Error code on failure.

   static  uint16_t  rte_event_eth_tx_adapter_enqueue (uint8_t dev_id, uint8_t
       port_id,	struct	rte_event  ev[],  uint16_t  nb_events,	const  uint8_t
       flags) [inline],	 [static]
       Enqueue	a  burst  of  events  objects  or  an event object supplied in
       rte_event structure on an event device designated by its	dev_id through
       the event port specified	by port_id. This function is supported if  the
       eventdev	  PMD	has   the   RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT
       capability flag set.

       The nb_events parameter is the number of	event objects to enqueue which
       are supplied in the ev array of rte_event structure.

       The rte_event_eth_tx_adapter_enqueue() function returns the  number  of
       events  objects it actually enqueued. A return value equal to nb_events
       means that all event objects have been enqueued.

       Parameters
	   dev_id The identifier of the	device.
	   port_id The identifier of the event port.
	   ev Points to	an  array  of  nb_events  objects  of  type  rte_event
	   structure  which  contain the event object enqueue operations to be
	   processed.
	   nb_events The number	of event objects to enqueue, typically	number
	   of	  rte_event_port_attr_get(...RTE_EVENT_PORT_ATTR_ENQ_DEPTH...)
	   available for this port.
	   flags	   RTE_EVENT_ETH_TX_ADAPTER_ENQUEUE_		flags.
	   RTE_EVENT_ETH_TX_ADAPTER_ENQUEUE_SAME_DEST  signifies  that all the
	   packets which are enqueued are destined for the same	Ethernet  port
	   & Tx	queue.

       Returns
	   The	number of event	objects	actually enqueued on the event device.
	   The return value can	be  less  than	the  value  of	the  nb_events
	   parameter  when  the	 event	devices	 queue	is  full or if invalid
	   parameters are specified in a rte_event. If	the  return  value  is
	   less	 than  nb_events,  the remaining events	at the end of ev[] are
	   not consumed	and the	caller has to take care	of them, and rte_errno
	   is set accordingly. Possible	errno values include:

	    EINVAL The	port ID	is invalid, device ID is invalid,  an  event's
	     queue  ID	is invalid, or an event's sched	type doesn't match the
	     capabilities of the destination queue.

	    ENOSPC The	event port was backpressured and unable	to enqueue one
	     or	more events. This error	code  is  only	applicable  to	closed
	     systems.

       Definition at line 404 of file rte_event_eth_tx_adapter.h.

   int	    rte_event_eth_tx_adapter_stats_get	   (uint8_t	id,	struct
       rte_event_eth_tx_adapter_stats *	stats)
       Retrieve	statistics for an adapter

       Parameters
	   id Adapter identifier.
	   stats A pointer to structure	used to	 retrieve  statistics  for  an
	   adapter.

       Returns

	    0:	Success, statistics retrieved successfully.

	    <0: Error code on failure.

   int rte_event_eth_tx_adapter_stats_reset (uint8_t id)
       Reset statistics	for an adapter.

       Parameters
	   id Adapter identifier.

       Returns

	    0:	Success, statistics reset successfully.

	    <0: Error code on failure.

   int	 rte_event_eth_tx_adapter_service_id_get   (uint8_t   id,  uint32_t  *
       service_id)
       Retrieve	the service ID of an adapter. If the  adapter  doesn't	use  a
       rte_service function, this function returns -ESRCH.

       Parameters
	   id Adapter identifier.
	   service_id  A  pointer  to  a  uint32_t,  to	 be filled in with the
	   service id.

       Returns

	    0:	Success

	    <0:  Error	 code  on  failure,  if	 the  adapter  doesn't	use  a
	     rte_service function, this	function returns -ESRCH.

   int	rte_event_eth_tx_adapter_instance_get  (uint16_t  eth_dev_id, uint16_t
       tx_queue_id, uint8_t * txa_inst_id)
       Get TX adapter instance id for TX queue

       Parameters
	   eth_dev_id Port identifier of Ethernet device
	   tx_queue_id Etherdev	device TX queue	index
	   txa_inst_id Pointer to  TX  adapter	instance  identifier  Contains
	   valid Tx adapter instance id	when return value is 0

       Returns

	    0:	Success

	    <0: Error code on failure

   int	rte_event_eth_tx_adapter_queue_start  (uint16_t	 eth_dev_id,  uint16_t
       tx_queue_id)
       Enables the adapter to start enqueueing of packets to the Tx queue.

       This function is	provided so that the application can resume enqueueing
       packets that reference  packets	for  <eth_dev_id,  tx_queue_id>	 after
       calling rte_event_eth_tx_adapter_queue_stop().

       See also
	   rte_event_eth_tx_adapter_queue_stop

   Use case:
       The  queue  start/stop  APIs  help  avoid some unexpected behavior with
       application stopping ethdev Tx queues and adapter being unaware of  it.
       With  these  APIs,  the application can call stop API to	notify adapter
       that corresponding ethdev Tx queue is stopped and any in-flight packets
       are freed by adapter dataplane code. Adapter queue stop API  is	called
       before  stopping	 the ethdev Tx queue. When ethdev Tx queue is enabled,
       application can notify adapter to resume	processing of the packets  for
       that  queue  by	calling	 the start API.	The ethdev Tx queue is started
       before calling adapter start API.

       Parameters
	   eth_dev_id Port identifier of Ethernet device.
	   tx_queue_id Ethernet	device transmit	queue index.

       Returns

	    0:	Success

	    <0: Error code on failure

   int	rte_event_eth_tx_adapter_queue_stop  (uint16_t	eth_dev_id,   uint16_t
       tx_queue_id)
       Stops  the  adapter runtime function from enqueueing any	packets	to the
       associated Tx queue. This API also frees	any packets that may have been
       buffered	for this queue.	All inflight packets destined to the queue are
       freed by	the adapter runtime until the queue is started again.

       See also
	   rte_event_eth_tx_adapter_queue_start

       Parameters
	   eth_dev_id Port identifier of Ethernet device.
	   tx_queue_id Ethernet	device transmit	queue index.

       Returns

	    0:	Success

	    <0: Error code on failure

   __rte_experimental int rte_event_eth_tx_adapter_runtime_params_init (struct
       rte_event_eth_tx_adapter_runtime_params * txa_params)
       Initialize the adapter runtime configuration  parameters	 with  default
       values

       Parameters
	   txa_params	 A    pointer	 to    structure    of	 type	struct
	   rte_event_eth_tx_adapter_runtime_params

       Returns

	    0:	Success

	    <0: Error code on failure

   __rte_experimental int rte_event_eth_tx_adapter_runtime_params_set (uint8_t
       id, struct rte_event_eth_tx_adapter_runtime_params * params)
       Set the runtime configuration parameters	for adapter.

       Parameters
	   id Adapter identifier
	   params    A	  pointer    to	   structure	of     type	struct
	   rte_event_eth_tx_adapter_runtime_params	with	 configuration
	   parameter values. The reserved fields of  this  structure  must  be
	   initialized	 to   zero  and	 the  valid  fields  need  to  be  set
	   appropriately.   This   structure   can   be	  initialized	 using
	   rte_event_eth_tx_adapter_runtime_params_init()   API	  to   default
	   values or application may reset this	structure and update  required
	   fields.

       Returns

	    0:	Success

	    <0: Error code on failure

   __rte_experimental int rte_event_eth_tx_adapter_runtime_params_get (uint8_t
       id, struct rte_event_eth_tx_adapter_runtime_params * params)
       Get the runtime configuration parameters	of adapter.

       Parameters
	   id Adapter identifier
	   params     A	    pointer    to    structure	  of	type	struct
	   rte_event_eth_tx_adapter_runtime_params containing valid Tx adapter
	   parameters when return value	is 0.

       Returns

	    0:	Success

	    <0: Error code on failure

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

Version	25.11.0			Thu Jun	11 2026	 rte_event_eth_tx_adapter.h(3)

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

home | help