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

  
 
  

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  *ser-
	 vice_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	applica-
     tion.  These APIs abstract the implementation of the transmit stage and al-
     low 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 ap-
     plication	  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  des-
     tined 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  call-
     back  is  invoked when creating a RTE service function based adapter imple-
     mentation.

     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_con-
     fig::nb_event_ports  is  automatically incremented, and event device is re-
     configured with additional event port during service  initialization.  This
     event  device  reconfigure  logic	also  increments  the rte_event_dev_con-
     fig::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_con-
     fig::nb_event_ports	    and 	   rte_event_dev_config::nb_sin-
     gle_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  configura-
	 tion 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 pack-
	 ets  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 remain-
	 ing 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  capabili-
	   ties 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  *  ser-
     vice_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 applica-
     tion stopping ethdev Tx queues and adapter being unaware of it. With  these
     APIs,  the application can call stop API to notify adapter that correspond-
     ing 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  no-
     tify  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 asso-
     ciated 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 up-
	 date 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 pa-
	 rameters 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 Aug 27 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_stop&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help