rte_event_..._adapter.h(3)

🌸 rte_event_eth_rx_adapter.h 🌸

okay bestie, buckle up πŸ’– you've landed in the rte_event_eth_rx_adapter.h manual page (section 3, Library Functions Manual), and it's giving very iconic eventdev energy. this is part 1 of 3 so don't go anywhere, there's more coming πŸ‘‘


✨ NAME ✨

rte_event_eth_rx_adapter.h β€” literally the whole header, girlie πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

so first, the include vibe:

#include <stdint.h>
#include <rte_compat.h>
#include <rte_service.h>
#include 'rte_eventdev.h'

πŸ’… Data Structures

  • struct rte_event_eth_rx_adapter_conf
  • struct rte_event_eth_rx_adapter_queue_conf
  • struct rte_event_eth_rx_adapter_queue_stats
  • struct rte_event_eth_rx_adapter_stats
  • struct rte_event_eth_rx_adapter_vector_limits
  • struct rte_event_eth_rx_adapter_params
  • struct rte_event_eth_rx_adapter_runtime_params

πŸ’… Macros

#define RTE_EVENT_ETH_RX_ADAPTER_QUEUE_FLOW_ID_VALID   0x1
#define RTE_EVENT_ETH_RX_ADAPTER_QUEUE_EVENT_VECTOR   0x2

πŸ’… Typedefs

typedef int(* rte_event_eth_rx_adapter_conf_cb) (uint8_t id, uint8_t
    dev_id, struct rte_event_eth_rx_adapter_conf *conf, void *arg)
typedef uint16_t(* rte_event_eth_rx_adapter_cb_fn) (uint16_t eth_dev_id,
    uint16_t queue_id, uint32_t enqueue_buf_size, uint32_t
    enqueue_buf_count, struct rte_event *ev, uint16_t nb_event, void
    *cb_arg, uint16_t *nb_dropped)

πŸ’… Functions

int rte_event_eth_rx_adapter_create_ext (uint8_t id, uint8_t dev_id,
    rte_event_eth_rx_adapter_conf_cb conf_cb, void *conf_arg)
int rte_event_eth_rx_adapter_create (uint8_t id, uint8_t dev_id, struct
    rte_event_port_conf *port_config)
int rte_event_eth_rx_adapter_create_with_params (uint8_t id, uint8_t
    dev_id, struct rte_event_port_conf *port_config, struct
    rte_event_eth_rx_adapter_params *rxa_params)
__rte_experimental int rte_event_eth_rx_adapter_create_ext_with_params
    (uint8_t id, uint8_t dev_id, rte_event_eth_rx_adapter_conf_cb
    conf_cb, void *conf_arg, struct rte_event_eth_rx_adapter_params
    *rxa_params)
int rte_event_eth_rx_adapter_free (uint8_t id)
int rte_event_eth_rx_adapter_queue_add (uint8_t id, uint16_t eth_dev_id,
    int32_t rx_queue_id, const struct
    rte_event_eth_rx_adapter_queue_conf *conf)
__rte_experimental int rte_event_eth_rx_adapter_queues_add (uint8_t id,
    uint16_t eth_dev_id, int32_t rx_queue_id[], const struct
    rte_event_eth_rx_adapter_queue_conf conf[], uint16_t nb_rx_queues)
int rte_event_eth_rx_adapter_queue_del (uint8_t id, uint16_t eth_dev_id,
    int32_t rx_queue_id)
int rte_event_eth_rx_adapter_start (uint8_t id)
int rte_event_eth_rx_adapter_stop (uint8_t id)
int rte_event_eth_rx_adapter_stats_get (uint8_t id, struct
    rte_event_eth_rx_adapter_stats *stats)
int rte_event_eth_rx_adapter_stats_reset (uint8_t id)
int rte_event_eth_rx_adapter_service_id_get (uint8_t id, uint32_t
    *service_id)
int rte_event_eth_rx_adapter_cb_register (uint8_t id, uint16_t
    eth_dev_id, rte_event_eth_rx_adapter_cb_fn cb_fn, void *cb_arg)
int rte_event_eth_rx_adapter_vector_limits_get (uint8_t dev_id, uint16_t
    eth_port_id, struct rte_event_eth_rx_adapter_vector_limits *limits)
int rte_event_eth_rx_adapter_queue_conf_get (uint8_t id, uint16_t
    eth_dev_id, uint16_t rx_queue_id, struct
    rte_event_eth_rx_adapter_queue_conf *queue_conf)
int rte_event_eth_rx_adapter_queue_stats_get (uint8_t id, uint16_t
    eth_dev_id, uint16_t rx_queue_id, struct
    rte_event_eth_rx_adapter_queue_stats *stats)
int rte_event_eth_rx_adapter_queue_stats_reset (uint8_t id, uint16_t
    eth_dev_id, uint16_t rx_queue_id)
int rte_event_eth_rx_adapter_event_port_get (uint8_t id, uint8_t
    *event_port_id)
int rte_event_eth_rx_adapter_instance_get (uint16_t eth_dev_id, uint16_t
    rx_queue_id, uint8_t *rxa_inst_id)
__rte_experimental int rte_event_eth_rx_adapter_runtime_params_init
    (struct rte_event_eth_rx_adapter_runtime_params *params)
__rte_experimental int rte_event_eth_rx_adapter_runtime_params_set
    (uint8_t id, struct rte_event_eth_rx_adapter_runtime_params *params)
__rte_experimental int rte_event_eth_rx_adapter_runtime_params_get
    (uint8_t id, struct rte_event_eth_rx_adapter_runtime_params *params)

🧚 Detailed Description 🧚

RTE Event Ethernet Rx Adapter

okay so picture this: an eventdev-based packet processing application is enqueuing and dequeuing mbufs to and from the event device. the way that packets flow from the ethernet device over to the event device can happen via either HW or SW mechanisms, depending on the platform and on the particular glow-up combo of ethernet device + event device you've got going on. the event ethernet Rx adapter is the baddie that provides common APIs to configure that packet flow from ethernet devices to event devices across both of those transfer mechanisms ✨

the adapter uses a EAL service core function for SW based packet transfer, and it uses the eventdev PMD functions to configure HW based packet transfer between the ethernet device and the event device. two paths, one slay πŸ’…

the ethernet Rx event adapter's functions are β€” and yes, we're listing every single one because nobody gets left behind:

  • rte_event_eth_rx_adapter_create_ext()
  • rte_event_eth_rx_adapter_create()
  • rte_event_eth_rx_adapter_create_with_params()
  • rte_event_eth_rx_adapter_create_ext_with_params()
  • rte_event_eth_rx_adapter_free()
  • rte_event_eth_rx_adapter_queue_add()
  • rte_event_eth_rx_adapter_queue_del()
  • rte_event_eth_rx_adapter_start()
  • rte_event_eth_rx_adapter_stop()
  • rte_event_eth_rx_adapter_stats_get()
  • rte_event_eth_rx_adapter_stats_reset()
  • rte_event_eth_rx_adapter_queue_conf_get()
  • rte_event_eth_rx_adapter_queue_stats_get()
  • rte_event_eth_rx_adapter_queue_stats_reset()
  • rte_event_eth_rx_adapter_event_port_get()
  • rte_event_eth_rx_adapter_instance_get()
  • rte_event_eth_rx_adapter_runtime_params_get()
  • rte_event_eth_rx_adapter_runtime_params_init()
  • rte_event_eth_rx_adapter_runtime_params_set()

so the application creates an ethernet-to-event adapter using one of these girlies: rte_event_eth_rx_adapter_create_ext(), or rte_event_eth_rx_adapter_create(), or rte_event_eth_rx_adapter_create_with_params(), or rte_event_eth_rx_adapter_create_ext_with_params() functions.

the adapter needs to know which ethernet rx queues to poll for mbufs, plus the event device parameters such as the event queue identifier, event priority, and scheduling type that it should use when constructing events. that's literally what rte_event_eth_rx_adapter_queue_add() is for, bestie 🫢

the servicing weight parameter in the rte_event_eth_rx_adapter_queue_conf applies when the Rx adapter uses a service core function β€” its whole purpose is giving the application control over how often the ethernet device receive queues get polled. like, you might want to poll higher priority queues more frequently without completely starving the lower priority queues, y'know? balance is key πŸ’–

and here's the important part: if this parameter is zero and the receive interrupt is enabled when configuring the device, the receive queue is interrupt driven. otherwise, the queue gets assigned a servicing weight of one.

the application can start and stop the adapter with rte_event_eth_rx_adapter_start() and rte_event_eth_rx_adapter_stop(). if the adapter uses an rte_service function, then the application is also required to assign a core to the service function and control that service core using the rte_service APIs. in that case, rte_event_eth_rx_adapter_service_id_get() is the function you call to retrieve the service function ID of the adapter πŸ‘‘

for SW based packet transfers β€” that's when RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT is not set in the adapter's capabilities flags for a particular ethernet device β€” the service function temporarily enqueues events into an event buffer before batch enqueuing them to the event device. if that buffer fills all the way up, the service function stops dequeuing packets from the ethernet device. so yeah, that's a real thing to watch for 😭

the application might want to monitor the buffer fill level and tell the service function to selectively buffer events. it might also use some other criteria to decide which packets should enter the event device even when the buffer fill level is low, or it might want to enqueue packets to an internal event port. rte_event_eth_rx_adapter_cb_register() is the function that lets the application register a callback selecting which packets the SW adapter enqueues to the event device. and because the callback interface is event based, that callback can also modify the event data if it needs to. flexible queen 🌈

Definition in file rte_event_eth_rx_adapter.h.


πŸ‘‘ Macro Definition Documentation πŸ‘‘

πŸ“Œ #define RTE_EVENT_ETH_RX_ADAPTER_QUEUE_FLOW_ID_VALID 0x1

this flag says the flow identifier is valid βœ…

See also: rte_event_eth_rx_adapter_queue_conf::rx_queue_flags

Definition at line 104 of file rte_event_eth_rx_adapter.h.


πŸ“Œ #define RTE_EVENT_ETH_RX_ADAPTER_QUEUE_EVENT_VECTOR 0x2

this flag says the mbufs arriving on the queue need to be vectorized ⚑

See also: rte_event_eth_rx_adapter_queue_conf::rx_queue_flags

Definition at line 108 of file rte_event_eth_rx_adapter.h.

✨ Typedef Documentation ✨

πŸŽ€ rte_event_eth_rx_adapter_conf_cb

typedef int(* rte_event_eth_rx_adapter_conf_cb) (uint8_t id, uint8_t dev_id,
    struct rte_event_eth_rx_adapter_conf *conf, void *arg)

Okay so bestie, this is the function type used for the adapter configuration callback. This callback is literally there to fill in members of the struct rte_event_eth_rx_adapter_conf, and it gets invoked when creating a SW service for packet transfer from ethdev queues to the event device. That SW service is created inside the rte_event_eth_rx_adapter_queue_add() function if SW based packet transfers from ethdev queues to the event device are required. No cap.

Parameters

  • id β€” Adapter identifier. iconic little id tbh
  • dev_id β€” Event device identifier. the event device's main character number
  • conf β€” Structure that needs to be populated by this callback. you fill it in, bestie
  • arg β€” Argument to the callback. This is the same as the conf_arg passed to the rte_event_eth_rx_adapter_create_ext(). same energy, same arg

Definition at line 151 of file rte_event_eth_rx_adapter.h.


πŸ¦‹ rte_event_eth_rx_adapter_cb_fn

typedef uint16_t(* rte_event_eth_rx_adapter_cb_fn) (uint16_t eth_dev_id,
    uint16_t queue_id, uint32_t enqueue_buf_size, uint32_t
    enqueue_buf_count, struct rte_event *ev, uint16_t nb_event, void
    *cb_arg, uint16_t *nb_dropped)

This callback function is invoked by the SW adapter before it continues to process events. The callback is passed the size of the enqueue buffer in the SW adapter and the occupancy of the buffer. The callback can use these values to decide which events are enqueued to the event device by the SW adapter. The callback may also enqueue events internally using its own event port. The SW adapter populates the event information based on the Rx queue configuration in the adapter. The callback can modify this event information for the events to be enqueued by the SW adapter. Periodt.

The callback return value is the number of events from the beginning of the event array that are to be enqueued by the SW adapter. It is the callback's responsibility to arrange these events at the beginning of the array, if these events are not contiguous in the original array. The nb_dropped parameter is a pointer to the number of events dropped by the callback, this number is used by the adapter to indicate the number of dropped packets as part of its statistics. so like, don't forget to set it, fr fr

Parameters

  • eth_dev_id β€” Port identifier of the Ethernet device. eth port go brrr
  • queue_id β€” Receive queue index. rx queue vibes
  • enqueue_buf_size β€” Total enqueue buffer size. the whole capacity
  • enqueue_buf_count β€” Event count in enqueue buffer. how full it is rn
  • ev β€” Event array. the event lineup
  • nb_event β€” Event array length. how many events we're talking about
  • cb_arg β€” Callback argument. your lil helper arg
  • nb_dropped β€” Packets dropped by callback. rip dropped packets

Returns

  • The number of events to be enqueued by the SW adapter. slay

Definition at line 373 of file rte_event_eth_rx_adapter.h.


πŸ”₯ Function Documentation πŸ”₯

πŸ‘‘ rte_event_eth_rx_adapter_create_ext

int rte_event_eth_rx_adapter_create_ext (uint8_t id, uint8_t dev_id,
    rte_event_eth_rx_adapter_conf_cb conf_cb, void * conf_arg)

Create a new ethernet Rx event adapter with the specified identifier. new adapter, who dis?

Parameters

  • id β€” The identifier of the ethernet Rx event adapter. her name
  • dev_id β€” The identifier of the device to configure. the device getting the glow-up
  • conf_cb β€” Callback function that fills in members of a struct rte_event_eth_rx_adapter_conf struct passed into it. you hand it the struct, it fills it in
  • conf_arg β€” Argument that is passed to the conf_cb function. passed straight through

Returns

  • 0: Success ate
  • <0: Error code on failure not the vibe

πŸ’… rte_event_eth_rx_adapter_create

int rte_event_eth_rx_adapter_create (uint8_t id, uint8_t dev_id, struct
    rte_event_port_conf * port_config)

Create a new ethernet Rx event 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 setup 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_eth_rx_adapter_create_ext() version. iykyk, ext gives you more control

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. it's giving automatic setup energy

Application no longer needs to account for rte_event_dev_config::nb_event_ports and rte_event_dev_config::nb_single_link_event_port_queues parameters required for eth Rx adapter in the event device configuration when the adapter is created with this API. less math for you, bestie

Parameters

  • id β€” The identifier of the ethernet Rx event adapter. id check
  • dev_id β€” The identifier of the device to configure. device id, obviously
  • port_config β€” Argument of type rte_event_port_conf that is passed to the conf_cb function. port config goes in, callback gets it

Returns

  • 0: Success we love a success
  • <0: Error code on failure uh oh

🌸 rte_event_eth_rx_adapter_create_with_params

int rte_event_eth_rx_adapter_create_with_params (uint8_t id, uint8_t dev_id,
    struct rte_event_port_conf * port_config, struct
    rte_event_eth_rx_adapter_params * rxa_params)

This is a variant of rte_event_eth_rx_adapter_create() with additional adapter params specified in struct rte_event_eth_rx_adapter_params. same thing, but with extra params bestie

Parameters

  • id β€” The identifier of the ethernet Rx event adapter. adapter id
  • dev_id β€” The identifier of the event device to configure. event device id
  • port_config β€” Argument of type rte_event_port_conf that is passed to the conf_cb function. port config
  • rxa_params β€” Pointer to struct rte_event_eth_rx_adapter_params. In case of NULL, default values are used. NULL means defaults, no cap

Returns

  • 0: Success slay
  • <0: Error code on failure sad

🧚 rte_event_eth_rx_adapter_create_ext_with_params

__rte_experimental int rte_event_eth_rx_adapter_create_ext_with_params
    (uint8_t id, uint8_t dev_id, rte_event_eth_rx_adapter_conf_cb conf_cb,
    void * conf_arg, struct rte_event_eth_rx_adapter_params * rxa_params)

This is a variant of rte_event_eth_rx_adapter_create_ext() with additional adapter params specified in struct rte_event_eth_rx_adapter_params. notice the __rte_experimental, bestie β€” she's fancy

Parameters

  • id β€” The identifier of the ethernet Rx event adapter. adapter id
  • dev_id β€” The identifier of the event device to configure. device id
  • conf_cb β€” Callback function that fills in members of a struct rte_event_eth_rx_adapter_conf struct passed into it. callback fills the struct
  • conf_arg β€” Argument that is passed to the conf_cb function. arg for the callback
  • rxa_params β€” Pointer to struct rte_event_eth_rx_adapter_params. In case of NULL, default values are used. NULL = defaults

Returns

  • 0: Success ate
  • <0: Error code on failure not it

πŸ“ rte_event_eth_rx_adapter_free

int rte_event_eth_rx_adapter_free (uint8_t id)

Free an event adapter. release her, she's done

Parameters

  • id β€” Adapter identifier. the adapter id

Returns

  • 0: Success clean exit
  • <0: Error code on failure, If the adapter still has Rx queues added to it, the function returns -EBUSY. she's busy bestie, remove the Rx queues first

🌈 rte_event_eth_rx_adapter_queue_add

int rte_event_eth_rx_adapter_queue_add (uint8_t id, uint16_t eth_dev_id,
    int32_t rx_queue_id, const struct rte_event_eth_rx_adapter_queue_conf *
    conf)

Add receive queue to an event adapter. After a queue has been added to the event adapter, the result of the application calling rte_eth_rx_burst(eth_dev_id, rx_queue_id, ..) is undefined. UNDEFINED, bestie β€” do not do that, I'm serious it's giving "don't touch it after adding" energy

Parameters

  • id β€” Adapter identifier. adapter id
  • eth_dev_id β€” Port identifier of Ethernet device. eth port id
  • rx_queue_id β€” Ethernet device receive queue index. If rx_queue_id is -1, then all Rx queues configured for the device are added. If the ethdev Rx queues can only be connected to a single event queue then rx_queue_id is required to be -1. one queue, all queues, or forced -1 for single event queue
See also: RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ

Parameters

  • conf β€” Additional configuration structure of type rte_event_eth_rx_adapter_queue_conf. queue conf goes here

Returns

  • 0: Success, Receive queue added correctly. queue added, slay
  • <0: Error code on failure. failure vibes
  • (-EIO) device reconfiguration and restart error. The adapter reconfigures the event device with an additional port if it is required to use a service function for packet transfer from the ethernet device to the event device. If the device had been started before this call, this error code indicates an error in restart following an error in reconfiguration, i.e., a combination of the two error codes. reconfig + restart went sideways, it's a double error situation

πŸŽ€ rte_event_eth_rx_adapter_queues_add

__rte_experimental int rte_event_eth_rx_adapter_queues_add (uint8_t id,
    uint16_t eth_dev_id, int32_t rx_queue_id[], const struct
    rte_event_eth_rx_adapter_queue_conf conf[], uint16_t nb_rx_queues)

Add multiple receive queues to an event adapter. plural queues, plural slay also __rte_experimental, so bestie be aware

Parameters

  • id β€” Adapter identifier. adapter id
  • eth_dev_id β€” Port identifier of Ethernet device. eth port id
  • rx_queue_id β€” Array of Ethernet device receive queue indices. If nb_rx_queues is 0, then rx_queue_id is ignored. zero queues means this array gets ignored
  • conf β€” Array of additional configuration structures of type rte_event_eth_rx_adapter_queue_conf. conf[i] is used for rx_queue_id[i]. If nb_rx_queues is 0, then conf[0] is used for all Rx queues. pair them up, or use conf[0] for all if zero
  • nb_rx_queues β€” Number of receive queues to add. If nb_rx_queues is 0, then all Rx queues configured for the device are added with the same configuration in conf[0]. zero means all queues with conf[0]
See also: RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ

Returns

  • 0: Success, Receive queues added correctly. queues added, periodt
  • <0: Error code on failure. it happens

πŸ’œ rte_event_eth_rx_adapter_queue_del

int rte_event_eth_rx_adapter_queue_del (uint8_t id, uint16_t eth_dev_id,
    int32_t rx_queue_id)

Delete receive queue from an event adapter. bye bye queue

Parameters

  • id β€” Adapter identifier. adapter id
  • eth_dev_id β€” Port identifier of Ethernet device. eth port id
  • rx_queue_id β€” Ethernet device receive queue index. If rx_queue_id is -1, then all Rx queues configured for the device are deleted. If the ethdev Rx queues can only be connected to a single event queue then rx_queue_id is required to be -1. -1 deletes all, and single event queue setups require -1
See also: RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ

Returns

  • 0: Success, Receive queue deleted correctly. deleted, clean
  • <0: Error code on failure. couldn't delete, sad

✨ rte_event_eth_rx_adapter_start

int rte_event_eth_rx_adapter_start (uint8_t id)

Start ethernet Rx event adapter. let's goooo

Parameters

  • id β€” Adapter identifier. adapter id

Returns

  • 0: Success, Adapter started correctly. started, iconic
  • <0: Error code on failure. didn't start
Note: The eventdev to which the event_eth_rx_adapter is connected needs to be started before calling rte_event_eth_rx_adapter_start(). start the eventdev FIRST, bestie, order matters

πŸ¦‹ rte_event_eth_rx_adapter_stop

int rte_event_eth_rx_adapter_stop (uint8_t id)

Stop ethernet Rx event adapter. okay she's done for now

Parameters

  • id β€” Adapter identifier. adapter id

Returns

  • 0: Success, Adapter started correctly. yes, it says "started" here too, that's what the original says, no cap
  • <0: Error code on failure. stopping didn't go as planned

🌟 rte_event_eth_rx_adapter_stats_get

int rte_event_eth_rx_adapter_stats_get (uint8_t id, struct
    rte_event_eth_rx_adapter_stats * stats)

Retrieve statistics for an adapter. stats time, bestie

Parameters

  • id β€” Adapter identifier. adapter id
  • stats β€” A pointer to structure used to retrieve statistics for an adapter. your stats struct goes here

Returns

  • 0: Success, retrieved successfully. stats acquired
  • <0: Error code on failure. no stats for you

✨ int rte_event_eth_rx_adapter_stats_reset (uint8_t id)

Okay so this one resets the stats for an adapter. Like, clean slate energy. 🧼✨

Parameters

  • id β€” Adapter identifier. Bestie, you gotta tell it which adapter.

Returns

  • 0: Success, statistics reset successfully. Slay.
  • <0: Error code on failure. 😭

🌸 int rte_event_eth_rx_adapter_service_id_get (uint8_t id, uint32_t * service_id)

Retrieve the service ID of an adapter. But lowkey if the adapter doesn't use a rte_service function, this function returns -ESRCH. Not me being dramatic, that's just the rules. πŸ’…

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_rx_adapter_cb_register (uint8_t id, uint16_t eth_dev_id, rte_event_eth_rx_adapter_cb_fn cb_fn, void * cb_arg)

Register callback to process Rx packets, this is supported for SW based packet transfers. Main character callback energy fr fr. πŸ‘‘

See also: rte_event_eth_rx_cb_fn

Parameters

  • id β€” Adapter identifier.
  • eth_dev_id β€” Port identifier of Ethernet device.
  • cb_fn β€” Callback function.
  • cb_arg β€” Callback arg.

Returns

  • 0: Success πŸ’–
  • <0: Error code on failure.

πŸ¦‹ int rte_event_eth_rx_adapter_vector_limits_get (uint8_t dev_id, uint16_t eth_port_id, struct rte_event_eth_rx_adapter_vector_limits * limits)

Retrieve vector limits for a given event dev and eth dev pair. It's giving "matching vibes only". ✨

See also: rte_event_eth_rx_adapter_vector_limits

Parameters

  • dev_id β€” Event device identifier.
  • eth_port_id β€” Port identifier of the ethernet device.
  • limits β€” A pointer to rte_event_eth_rx_adapter_vector_limits structure that has to be filled.

Returns

  • 0: Success. 🌈
  • <0: Error code on failure.

πŸ’œ int rte_event_eth_rx_adapter_queue_conf_get (uint8_t id, uint16_t eth_dev_id, uint16_t rx_queue_id, struct rte_event_eth_rx_adapter_queue_conf * queue_conf)

Retrieve Rx queue config information. Like, spill the config tea bestie. 🍡

Parameters

  • id β€” Adapter identifier.
  • eth_dev_id β€” Port identifier of Ethernet device.
  • rx_queue_id β€” Ethernet device receive queue index.
  • queue_conf β€” Pointer to struct rte_event_eth_rx_adapter_queue_conf

Returns

  • 0: Success, Receive queue added correctly. Iconic.
  • <0: Error code on failure.

🌟 int rte_event_eth_rx_adapter_queue_stats_get (uint8_t id, uint16_t eth_dev_id, uint16_t rx_queue_id, struct rte_event_eth_rx_adapter_queue_stats * stats)

Retrieve Rx queue statistics. Numbers? Obsessed. πŸ“ŠπŸ’…

Parameters

  • id β€” Adapter identifier.
  • eth_dev_id β€” Port identifier of Ethernet device.
  • rx_queue_id β€” Ethernet device receive queue index.
  • stats β€” Pointer to struct rte_event_eth_rx_adapter_queue_stats

Returns

  • 0: Success, queue buffer stats retrieved. πŸŽ‰
  • <0: Error code on failure.

🧚 int rte_event_eth_rx_adapter_queue_stats_reset (uint8_t id, uint16_t eth_dev_id, uint16_t rx_queue_id)

Reset Rx queue statistics. Time to wipe the slate clean, bestie. 🧽✨

Parameters

  • id β€” Adapter identifier.
  • eth_dev_id β€” Port identifier of Ethernet device.
  • rx_queue_id β€” Ethernet device receive queue index.

Returns

  • 0: Success, queue buffer stats retrieved. (yes, the original says "retrieved" even though it's a reset β€” not me, that's the manpage 😭)
  • <0: Error code on failure.

πŸ‘‘ int rte_event_eth_rx_adapter_event_port_get (uint8_t id, uint8_t * event_port_id)

Retrieve the event port ID of an adapter. If the adapter doesn't use a rte_service function, this function returns -ESRCH. The audacity, honestly. πŸ’€

Parameters

  • id β€” Adapter identifier.
  • event_port_id β€” A pointer to a uint8_t, to be filled in with the port 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_rx_adapter_instance_get (uint16_t eth_dev_id, uint16_t rx_queue_id, uint8_t * rxa_inst_id)

Get RX adapter instance ID for a RX queue. It's giving "who am I? where do I belong?" πŸ¦‹

Parameters

  • eth_dev_id β€” Port identifier of Ethernet device.
  • rx_queue_id β€” Ethernet device receive queue index.
  • rxa_inst_id β€” Pointer to store RX adapter instance identifier. Contains valid Rx adapter instance id when return value is 0.

Returns

  • 0: Success 🌟
  • <0: Error code on failure

πŸ§ͺ __rte_experimental int rte_event_eth_rx_adapter_runtime_params_init (struct rte_event_eth_rx_adapter_runtime_params * params)

Initialize the adapter runtime configuration parameters with default values. Experimental, so you know it's spicy. 🌢️✨

Parameters

  • params β€” A pointer to structure of type struct rte_event_eth_rx_adapter_runtime_params

Returns

  • 0: Success πŸ’–
  • <0: Error code on failure

πŸ§ͺπŸ’… __rte_experimental int rte_event_eth_rx_adapter_runtime_params_set (uint8_t id, struct rte_event_eth_rx_adapter_runtime_params * params)

Set the adapter runtime configuration parameters. You're literally customizing the vibe. 🎨

Parameters

  • id β€” Adapter identifier
  • params β€” A pointer to structure of type struct rte_event_eth_rx_adapter_runtime_params with configuration parameter values. The reserved fields of the structure must be initialized to zero and the valid fields need to be set appropriately. This structure can be initialized using rte_event_eth_rx_adapter_runtime_params_init() to default values or application may reset this structure and update the required fields.

Returns

  • 0: Success πŸŽ€
  • <0: Error code on failure

πŸ§ͺπŸ¦‹ __rte_experimental int rte_event_eth_rx_adapter_runtime_params_get (uint8_t id, struct rte_event_eth_rx_adapter_runtime_params * params)

Get the adapter runtime configuration parameters. Spill the runtime tea. β˜•πŸ‘‘

Parameters

  • id β€” Adapter identifier
  • params β€” A pointer to structure of type struct rte_event_eth_rx_adapter_runtime_params containing valid 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. Not me writing this by hand, it's the robot. πŸ€–βœ¨


And that's a wrap on rte_event_..._adapter.h(3) bestie! This was DPDK Version 25.11.3, page rte_event_..._adapter.h(3) β€” go forth and event-dev slay. πŸ’…πŸŒˆπŸ’–

πŸ“¦ where this page comes from