logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

rte_event_dma_adapter.h

Author

       Generated automatically by Doxygen for DPDK from the source code.

DPDK                                             Version 24.11.2                      rte_event_dma_adapter.h(3)

Detailed Description

WarningEXPERIMENTAL: 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 device 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 second 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 ordering. 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 operations 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, application can directly submit the DMA operations to the
       dmadev. If not, application 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_INTERNAL_PORT_VCHAN_EV_BIND, event information must be passed to the add API.

       Definition in file rte_event_dma_adapter.h.

Enumeration Type Documentation

enumrte_event_dma_adapter_mode
       DMA event adapter mode

       EnumeratorRTE_EVENT_DMA_ADAPTER_OP_NEW
              Start the DMA adapter in event new mode.

       SeealsoRTE_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.

       SeealsoRTE_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 214 of file rte_event_dma_adapter.h.

Function Documentation

__rte_experimentalintrte_event_dma_adapter_create_ext(uint8_tid,uint8_tevdev_id,rte_event_dma_adapter_conf_cbconf_cb,enumrte_event_dma_adapter_modemode,void*conf_arg)
       Create a new event DMA adapter with the specified identifier.

       Parametersid 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.

       Seealsorte_event_dma_adapter_modeParametersconf_arg Argument that is passed to the conf_cb function.

       Returns

           • 0: Success

           • <0: Error code on failure

   __rte_experimentalintrte_event_dma_adapter_create(uint8_tid,uint8_tevdev_id,structrte_event_port_conf*port_config,enumrte_event_dma_adapter_modemode)
       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() version.

       Parametersid Adapter identifier.
           evdev_id Event device identifier.
           port_config Argument of type rte_event_port_confthatispassedtotheconf_cbfunction.modeFlagtoindicatethemodeoftheadapter.Seealsorte_event_dma_adapter_modeReturns

           • 0: Success

           • <0: Error code on failure

   __rte_experimentalintrte_event_dma_adapter_free(uint8_tid)
       Free an event DMA adapter

       Parametersid 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_experimentalintrte_event_dma_adapter_event_port_get(uint8_tid,uint8_t*event_port_id)
       Retrieve the event port of an adapter.

       Parametersid 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_experimentalintrte_event_dma_adapter_vchan_add(uint8_tid,int16_tdmadev_id,uint16_tvchan,conststructrte_event*event)
       Add a vchan to an event DMA adapter.

       Parametersid 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.

       SeealsoRTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_VCHAN_EV_BINDReturns

           • 0: Success, vchan added correctly.

           • <0: Error code on failure.

   __rte_experimentalintrte_event_dma_adapter_vchan_del(uint8_tid,int16_tdmadev_id,uint16_tvchan)
       Delete a vchan from an event DMA adapter.

       Parametersid Adapter identifier.
           dmadev_id DMA device identifier.
           vchan DMA device vchan identifier.

       Returns

           • 0: Success, vchan deleted successfully.

           • <0: Error code on failure.

   __rte_experimentalintrte_event_dma_adapter_service_id_get(uint8_tid,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.

       Parametersid 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_experimentalintrte_event_dma_adapter_start(uint8_tid)
       Start event DMA adapter

       Parametersid 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_experimentalintrte_event_dma_adapter_stop(uint8_tid)
       Stop event DMA adapter

       Parametersid Adapter identifier.

       Returns

           • 0: Success, adapter stopped successfully.

           • <0: Error code on failure.

   __rte_experimentalintrte_event_dma_adapter_runtime_params_init(structrte_event_dma_adapter_runtime_params*params)
       Initialize the adapter runtime configuration parameters

       Parametersparams A pointer to structure of type struct rte_event_dma_adapter_runtime_paramsReturns

           • 0: Success

           • <0: Error code on failure

   __rte_experimentalintrte_event_dma_adapter_runtime_params_set(uint8_tid,structrte_event_dma_adapter_runtime_params*params)
       Set the adapter runtime configuration parameters

       Parametersid Adapter identifier
           params  A pointer to structure of type struct rte_event_dma_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   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_experimentalintrte_event_dma_adapter_runtime_params_get(uint8_tid,structrte_event_dma_adapter_runtime_params*params)
       Get the adapter runtime configuration parameters

       Parametersid Adapter identifier
           params A pointer to structure of type struct  rte_event_dma_adapter_runtime_params  containing  valid
           adapter parameters when return value is 0.

       Returns

           • 0: Success

           • <0: Error code on failure

   __rte_experimentalintrte_event_dma_adapter_stats_get(uint8_tid,structrte_event_dma_adapter_stats*stats)
       Retrieve statistics for an adapter

       Parametersid 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_experimentalintrte_event_dma_adapter_stats_reset(uint8_tid)
       Reset statistics for an adapter.

       Parametersid Adapter identifier.

       Returns

           • 0: Success, statistics reset successfully.

           • <0: Error code on failure.

   __rte_experimentaluint16_trte_event_dma_adapter_enqueue(uint8_tevdev_id,uint8_tport_id,structrte_eventev[],uint16_tnb_events)
       Enqueue  a  burst  of  DMA  operations  as  event objects supplied in rte_eventstructureonaneventDMAadapterdesignatedbyitseventevdev_idthroughtheeventportspecifiedbyport_id.ThisfunctionissupportediftheeventdevPMDhastheRTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_OP_FWDcapabilityflagset.

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

       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.

       Parametersevdev_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_eventstructurewhichcontaintheeventobjectenqueueoperationstobeprocessed.nb_eventsThenumberofeventobjectstoenqueue,typicallynumberofrte_event_port_attr_get(...RTE_EVENT_PORT_ATTR_ENQ_DEPTH...)availableforthisport.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.Ifthereturnvalueislessthannb_events,theremainingeventsattheendofev[]arenotconsumedandthecallerhastotakecareofthem,andrte_errnoissetaccordingly.Possibleerrnovaluesinclude:

           • 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.

Name

       rte_event_dma_adapter.h

Synopsis

       #include <stdint.h>
       #include <rte_common.h>
       #include <rte_dmadev_pmd.h>
       #include <rte_eventdev.h>

   DataStructures
       struct rte_event_dma_adapter_op
       struct rte_event_dma_adapter_conf
       struct rte_event_dma_adapter_runtime_params
       struct rte_event_dma_adapter_statsTypedefstypedef 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)

Typedef Documentation

typedefint(*rte_event_dma_adapter_conf_cb)(uint8_tid,uint8_tevdev_id,structrte_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.

       Parametersid 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 291 of file rte_event_dma_adapter.h.

See Also