rte_event_eth_tx_adapter.h - Man Page

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:

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 355 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​.

__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​.

__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​.

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

Info

Version 25.11.3 DPDK