| rte_event_eth_tx_adapter.h(3) | Library Functions Manual | rte_event_eth_tx_adapter.h(3) |
rte_event_eth_tx_adapter.h
#include <stdint.h>
#include <rte_compat.h>
#include <rte_mbuf.h>
#include 'rte_eventdev.h'
struct rte_event_eth_tx_adapter_conf
struct rte_event_eth_tx_adapter_runtime_params
struct rte_event_eth_tx_adapter_stats
#define RTE_EVENT_ETH_TX_ADAPTER_ENQUEUE_SAME_DEST 0x1
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)
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)
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.
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.
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
Returns
Definition at line 160 of file rte_event_eth_tx_adapter.h.
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
Returns
Create a new ethernet Tx adapter with the specified identifier.
Parameters
Returns
Free an ethernet Tx adapter
Parameters
Returns
Start ethernet Tx adapter
Parameters
Returns
Stop ethernet Tx adapter
Parameters
Returns
Add a Tx queue to the adapter. A queue value of -1 is used to indicate all queues within the device.
Parameters
Returns
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
Returns
Set Tx queue in the mbuf. This queue is used by the adapter to transmit the mbuf.
Parameters
Definition at line 318 of file rte_event_eth_tx_adapter.h.
Retrieve Tx queue from the mbuf.
Parameters
Returns
See also
Definition at line 334 of file rte_event_eth_tx_adapter.h.
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
Returns
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
Returns
Definition at line 404 of file rte_event_eth_tx_adapter.h.
Retrieve statistics for an adapter
Parameters
Returns
Reset statistics for an adapter.
Parameters
Returns
Retrieve the service ID of an adapter. If the adapter doesn't use a rte_service function, this function returns -ESRCH.
Parameters
Returns
Get TX adapter instance id for TX queue
Parameters
Returns
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
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
Returns
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
Parameters
Returns
Initialize the adapter runtime configuration parameters with default values
Parameters
Returns
Set the runtime configuration parameters for adapter.
Parameters
Returns
Get the runtime configuration parameters of adapter.
Parameters
Returns
Generated automatically by Doxygen for DPDK from the source code.
| Version 24.11.3 | DPDK |