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

  
 
  

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

NAME
     rte_event_dma_adapter.h

SYNOPSIS
     #include <stdint.h>
     #include <rte_common.h>
     #include <rte_dmadev.h>
     #include <rte_eventdev.h>

   Data Structures
     struct rte_event_dma_adapter_conf
     struct rte_event_dma_adapter_runtime_params
     struct rte_event_dma_adapter_stats

   Typedefs
     typedef int(* rte_event_dma_adapter_conf_cb) (uint8_t id, uint8_t evdev_id,
	 struct rte_event_dma_adapter_conf *conf, void *arg)

   Enumerations
     enum     rte_event_dma_adapter_mode     {	   RTE_EVENT_DMA_ADAPTER_OP_NEW,
	 RTE_EVENT_DMA_ADAPTER_OP_FORWARD }

   Functions
     __rte_experimental  int   rte_event_dma_adapter_create_ext   (uint8_t   id,
	 uint8_t    evdev_id,	 rte_event_dma_adapter_conf_cb	 conf_cb,   enum
	 rte_event_dma_adapter_mode mode, void *conf_arg)
     __rte_experimental int rte_event_dma_adapter_create  (uint8_t  id,  uint8_t
	 evdev_id,     struct	  rte_event_port_conf	  *port_config,     enum
	 rte_event_dma_adapter_mode mode)
     __rte_experimental int rte_event_dma_adapter_free (uint8_t id)
     __rte_experimental int  rte_event_dma_adapter_event_port_get  (uint8_t  id,
	 uint8_t *event_port_id)
     __rte_experimental int rte_event_dma_adapter_vchan_add (uint8_t id, int16_t
	 dmadev_id, uint16_t vchan, const struct rte_event *event)
     __rte_experimental int rte_event_dma_adapter_vchan_del (uint8_t id, int16_t
	 dmadev_id, uint16_t vchan)
     __rte_experimental  int  rte_event_dma_adapter_service_id_get  (uint8_t id,
	 uint32_t *service_id)
     __rte_experimental int rte_event_dma_adapter_start (uint8_t id)
     __rte_experimental int rte_event_dma_adapter_stop (uint8_t id)
     __rte_experimental  int  rte_event_dma_adapter_runtime_params_init  (struct
	 rte_event_dma_adapter_runtime_params *params)
     __rte_experimental  int  rte_event_dma_adapter_runtime_params_set	(uint8_t
	 id, struct rte_event_dma_adapter_runtime_params *params)
     __rte_experimental  int  rte_event_dma_adapter_runtime_params_get	(uint8_t
	 id, struct rte_event_dma_adapter_runtime_params *params)
     __rte_experimental  int rte_event_dma_adapter_stats_get (uint8_t id, struct
	 rte_event_dma_adapter_stats *stats)
     __rte_experimental int rte_event_dma_adapter_stats_reset (uint8_t id)
     __rte_experimental    uint16_t    rte_event_dma_adapter_enqueue	(uint8_t
	 evdev_id, uint8_t port_id, struct rte_event ev[], uint16_t nb_events)

Detailed Description
     Warning
	 EXPERIMENTAL:	All  functions	in  this  file may be changed or removed
	 without prior notice.

     DMA Event Adapter API.

     Eventdev library provides adapters to bridge between various components for
     providing new event source. The event DMA adapter is one of those	adapters
     which is intended to bridge between event devices and DMA devices.

     The  DMA adapter adds support to enqueue / dequeue DMA operations to / from
     event device. The packet flow between DMA device and the event  device  can
     be accomplished using both SW and HW based transfer mechanisms. The adapter
     uses an EAL service core function for SW based packet transfer and uses the
     eventdev  PMD  functions  to configure HW based packet transfer between the
     DMA device and the event device.

     The application can choose to submit a DMA operation directly to an DMA de-
     vice  or  send  it   to   the   DMA   adapter   via   eventdev   based   on
     RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_OP_FWD  capability.  The first mode
     is known as the event new (RTE_EVENT_DMA_ADAPTER_OP_NEW) mode and the  sec-
     ond  as  the  event  forward  (RTE_EVENT_DMA_ADAPTER_OP_FORWARD)  mode. The
     choice of mode can be specified while creating the adapter. In  the  former
     mode,  it	is an application responsibility to enable ingress packet order-
     ing. In the latter mode, it is the adapter  responsibility  to  enable  the
     ingress packet ordering.

     Working model of RTE_EVENT_DMA_ADAPTER_OP_NEW mode:

		+--------------+	 +--------------+
		|	       |	 |   DMA stage	|
		| Application  |---[2]-->| + enqueue to |
		|	       |	 |     dmadev	|
		+--------------+	 +--------------+
		    ^	^			|
		    |	|		       [3]
		   [6] [1]			|
		    |	|			|
		+--------------+		|
		|	       |		|
		| Event device |		|
		|	       |		|
		+--------------+		|
		       ^			|
		       |			|
		      [5]			|
		       |			v
		+--------------+	 +--------------+
		|	       |	 |		|
		|  DMA adapter |<--[4]---|    dmadev	|
		|	       |	 |		|
		+--------------+	 +--------------+

	 [1] Application dequeues events from the previous stage.
	 [2] Application prepares the DMA operations.
	 [3] DMA operations are submitted to dmadev by application.
	 [4] DMA adapter dequeues DMA completions from dmadev.
	 [5] DMA adapter enqueues events to the eventdev.
	 [6] Application dequeues from eventdev for further processing.

      In  the  RTE_EVENT_DMA_ADAPTER_OP_NEW mode, application submits DMA opera-
     tions directly to DMA device. The DMA adapter then dequeues DMA completions
     from DMA device and enqueue events to the event device. This mode does  not
     ensure  ingress  ordering,  if  the application directly enqueues to dmadev
     without going through DMA / atomic stage i.e. removing item [1] and [2].

     Events dequeued from the adapter will be treated as  new  events.	In  this
     mode, application needs to specify event information (response information)
     which is needed to enqueue an event after the DMA operation is completed.

     Working model of RTE_EVENT_DMA_ADAPTER_OP_FORWARD mode:

		+--------------+	 +--------------+
	--[1]-->|	       |---[2]-->|  Application |
		| Event device |	 |	in	|
	<--[8]--|	       |<--[3]---| Ordered stage|
		+--------------+	 +--------------+
		    ^	   |
		    |	  [4]
		   [7]	   |
		    |	   v
	       +----------------+	+--------------+
	       |		|--[5]->|	       |
	       |   DMA adapter	|	|     dmadev   |
	       |		|<-[6]--|	       |
	       +----------------+	+--------------+

	 [1] Events from the previous stage.
	 [2] Application in ordered stage dequeues events from eventdev.
	 [3] Application enqueues DMA operations as events to eventdev.
	 [4] DMA adapter dequeues event from eventdev.
	 [5] DMA adapter submits DMA operations to dmadev (Atomic stage).
	 [6] DMA adapter dequeues DMA completions from dmadev
	 [7] DMA adapter enqueues events to the eventdev
	 [8] Events to the next stage

      In  the  event  forward (RTE_EVENT_DMA_ADAPTER_OP_FORWARD) mode, if the HW
     supports the capability RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_OP_FWD, ap-
     plication can directly submit the DMA operations to the dmadev. If not, ap-
     plication retrieves the event port of the	DMA  adapter  through  the  API,
     rte_event_DMA_adapter_event_port_get(). Then, links its event queue to this
     port  and	starts	enqueuing  DMA operations as events to the eventdev. The
     adapter then dequeues the events and submits  the	DMA  operations  to  the
     dmadev. After the DMA completions, the adapter enqueues events to the event
     device.

     Application  can  use  this  mode,  when ingress packet ordering is needed.
     Events dequeued from the adapter will be treated as  forwarded  events.  In
     this mode, the application needs to specify the dmadev ID and queue pair ID
     (request information) needed to enqueue an DMA operation in addition to the
     event  information  (response information) needed to enqueue an event after
     the DMA operation has completed.

     The event DMA adapter provides common APIs to  configure  the  packet  flow
     from  the	DMA  device to event devices for both SW and HW based transfers.
     The DMA event adapter's functions are:

     * rte_event_dma_adapter_create_ext()

     * rte_event_dma_adapter_create()

     * rte_event_dma_adapter_free()

     * rte_event_dma_adapter_vchan_add()

     * rte_event_dma_adapter_vchan_del()

     * rte_event_dma_adapter_start()

     * rte_event_dma_adapter_stop()

     * rte_event_dma_adapter_stats_get()

     * rte_event_dma_adapter_stats_reset()

     The application creates an instance using rte_event_dma_adapter_create() or
     rte_event_dma_adapter_create_ext().

     dmadev   queue   pair   addition	/   deletion   is   done    using    the
     rte_event_dma_adapter_vchan_add() / rte_event_dma_adapter_vchan_del() APIs.
     If    HW	 supports    the   capability	RTE_EVENT_DMA_ADAPTER_CAP_INTER-
     NAL_PORT_VCHAN_EV_BIND, event information must be passed to the add API.

     Definition in file rte_event_dma_adapter.h.

Typedef Documentation
   typedef int(* rte_event_dma_adapter_conf_cb) (uint8_t id,  uint8_t  evdev_id,
     struct rte_event_dma_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_dma_adapter_conf, this callback
     is invoked when creating a SW service for packet transfer from dmadev vchan
     to the event device.  The	SW  service  is  created  within  the  function,
     rte_event_dma_adapter_vchan_add(), if SW based packet transfers from dmadev
     vchan to the event device are required.

     Parameters
	 id Adapter identifier.
	 evdev_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_dma_adapter_create_ext().

     Definition at line 234 of file rte_event_dma_adapter.h.

Enumeration Type Documentation
   enum rte_event_dma_adapter_mode
     DMA event adapter mode

     Enumerator

     RTE_EVENT_DMA_ADAPTER_OP_NEW
	    Start the DMA adapter in event new mode.

     See also
	 RTE_EVENT_OP_NEW.

     Application submits DMA operations to the dmadev. Adapter only dequeues the
     DMA completions from dmadev and enqueue events to the eventdev.

     RTE_EVENT_DMA_ADAPTER_OP_FORWARD
	    Start the DMA adapter in event forward mode.

     See also
	 RTE_EVENT_OP_FORWARD.

     Application submits DMA requests as events to the DMA adapter or DMA device
     based  on	RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_OP_FWD	capability.  DMA
     completions are enqueued back to the eventdev by DMA adapter.

     Definition at line 157 of file rte_event_dma_adapter.h.

Function Documentation
   __rte_experimental  int rte_event_dma_adapter_create_ext (uint8_t id, uint8_t
     evdev_id,	      rte_event_dma_adapter_conf_cb	   conf_cb,	    enum
     rte_event_dma_adapter_mode mode, void * conf_arg)
     Create a new event DMA adapter with the specified identifier.

     Parameters
	 id Adapter identifier.
	 evdev_id Event device identifier.
	 conf_cb   Callback   function	 that  fills  in  members  of  a  struct
	 rte_event_dma_adapter_conf struct passed into it.
	 mode Flag to indicate the mode of the adapter.

     See also
	 rte_event_dma_adapter_mode

     Parameters
	 conf_arg Argument that is passed to the conf_cb function.

     Returns

	 * 0: Success

	 * <0: Error code on failure

   __rte_experimental  int  rte_event_dma_adapter_create  (uint8_t  id,  uint8_t
     evdev_id,	   struct     rte_event_port_conf     *     port_config,    enum
     rte_event_dma_adapter_mode mode)
     Create a new event DMA adapter with the specified identifier. This function
     uses an internal configuration function that creates an  event  port.  This
     default  function	reconfigures  the  event device with an additional event
     port and set up the event port using the port_config parameter passed  into
     this  function. In case the application needs more control in configuration
     of the service, it should use the	rte_event_dma_adapter_create_ext()  ver-
     sion.

     Parameters
	 id Adapter identifier.
	 evdev_id Event device identifier.
	 port_config  Argument of type rte_event_port_conf that is passed to the
	 conf_cb function.
	 mode Flag to indicate the mode of the adapter.

     See also
	 rte_event_dma_adapter_mode

     Returns

	 * 0: Success

	 * <0: Error code on failure

   __rte_experimental int rte_event_dma_adapter_free (uint8_t id)
     Free an event DMA adapter

     Parameters
	 id Adapter identifier.

     Returns

	 * 0: Success

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

   __rte_experimental  int  rte_event_dma_adapter_event_port_get  (uint8_t   id,
     uint8_t * event_port_id)
     Retrieve the event port of an adapter.

     Parameters
	 id Adapter identifier.
	 event_port_id	Application  links  its event queue to this adapter port
	 which is used in RTE_EVENT_DMA_ADAPTER_OP_FORWARD mode.

     Returns

	 * 0: Success

	 * <0: Error code on failure.

   __rte_experimental int rte_event_dma_adapter_vchan_add (uint8_t  id,  int16_t
     dmadev_id, uint16_t vchan, const struct rte_event * event)
     Add a vchan to an event DMA adapter.

     Parameters
	 id Adapter identifier.
	 dmadev_id dmadev identifier.
	 vchan DMA device vchan identifier. If vchan is set -1, adapter adds all
	 the preconfigured vchan to the instance.
	 event	If  HW supports dmadev vchan to event queue binding, application
	 is expected to fill in event information, else it will be NULL.

     See also
	 RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_VCHAN_EV_BIND

     Returns

	 * 0: Success, vchan added correctly.

	 * <0: Error code on failure.

   __rte_experimental int rte_event_dma_adapter_vchan_del (uint8_t  id,  int16_t
     dmadev_id, uint16_t vchan)
     Delete a vchan from an event DMA adapter.

     Parameters
	 id Adapter identifier.
	 dmadev_id DMA device identifier.
	 vchan DMA device vchan identifier.

     Returns

	 * 0: Success, vchan deleted successfully.

	 * <0: Error code on failure.

   __rte_experimental	int  rte_event_dma_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.

   __rte_experimental int rte_event_dma_adapter_start (uint8_t id)
     Start event DMA adapter

     Parameters
	 id Adapter identifier.

     Returns

	 * 0: Success, adapter started successfully.

	 * <0: Error code on failure.

     Note
	 The  eventdev	and  dmadev  to which the event_dma_adapter is connected
	 should be started before calling rte_event_dma_adapter_start().

   __rte_experimental int rte_event_dma_adapter_stop (uint8_t id)
     Stop event DMA adapter

     Parameters
	 id Adapter identifier.

     Returns

	 * 0: Success, adapter stopped successfully.

	 * <0: Error code on failure.

   __rte_experimental  int   rte_event_dma_adapter_runtime_params_init	 (struct
     rte_event_dma_adapter_runtime_params * params)
     Initialize the adapter runtime configuration parameters

     Parameters
	 params A pointer to structure of type struct rte_event_dma_adapter_run-
	 time_params

     Returns

	 * 0: Success

	 * <0: Error code on failure

   __rte_experimental  int rte_event_dma_adapter_runtime_params_set (uint8_t id,
     struct rte_event_dma_adapter_runtime_params * params)
     Set the adapter runtime configuration parameters

     Parameters
	 id Adapter identifier
	 params A pointer to structure of type struct rte_event_dma_adapter_run-
	 time_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	 struct   can	be   initialized   using
	 rte_event_dma_adapter_runtime_params_init()  API  to  default values or
	 application may reset this struct and update required fields.

     Returns

	 * 0: Success

	 * <0: Error code on failure

   __rte_experimental int rte_event_dma_adapter_runtime_params_get (uint8_t  id,
     struct rte_event_dma_adapter_runtime_params * params)
     Get the adapter runtime configuration parameters

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

     Returns

	 * 0: Success

	 * <0: Error code on failure

   __rte_experimental  int  rte_event_dma_adapter_stats_get  (uint8_t id, struct
     rte_event_dma_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, retrieved successfully.

	 * <0: Error code on failure.

   __rte_experimental int rte_event_dma_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.

   __rte_experimental  uint16_t rte_event_dma_adapter_enqueue (uint8_t evdev_id,
     uint8_t port_id, struct rte_event ev[], uint16_t nb_events)
     Enqueue a burst of DMA operations as event objects  supplied  in  rte_event
     structure	on an event DMA adapter designated by its event evdev_id through
     the event port specified by port_id. This	function  is  supported  if  the
     eventdev  PMD  has the RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_OP_FWD capa-
     bility flag set.

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

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

     Parameters
	 evdev_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.

     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 capa-
	   bilities 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.

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

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

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

home | help