|
DPDK 25.03.0
|
#include <stdint.h>#include <stdbool.h>#include <rte_compat.h>#include <rte_cpuflags.h>#include "rte_bbdev_op.h"#include "rte_bbdev_trace_fp.h"Go to the source code of this file.
Data Structures | |
| struct | rte_bbdev_queue_conf |
| struct | rte_bbdev_stats |
| struct | rte_bbdev_driver_info |
| struct | rte_bbdev_info |
| struct | rte_bbdev_queue_info |
Macros | |
| #define | RTE_BBDEV_MAX_DEVS 128 |
| #define | RTE_BBDEV_FOREACH(i) |
| #define | RTE_BBDEV_END_OF_CAPABILITIES_LIST() { RTE_BBDEV_OP_NONE } |
| #define | RTE_BBDEV_NAME_MAX_LEN 64 |
Typedefs | |
| typedef void(* | rte_bbdev_cb_fn) (uint16_t dev_id, enum rte_bbdev_event_type event, void *cb_arg, void *ret_param) |
Functions | |
| uint16_t | rte_bbdev_count (void) |
| bool | rte_bbdev_is_valid (uint16_t dev_id) |
| uint16_t | rte_bbdev_find_next (uint16_t dev_id) |
| int | rte_bbdev_setup_queues (uint16_t dev_id, uint16_t num_queues, int socket_id) |
| int | rte_bbdev_intr_enable (uint16_t dev_id) |
| int | rte_bbdev_queue_configure (uint16_t dev_id, uint16_t queue_id, const struct rte_bbdev_queue_conf *conf) |
| int | rte_bbdev_start (uint16_t dev_id) |
| int | rte_bbdev_stop (uint16_t dev_id) |
| int | rte_bbdev_close (uint16_t dev_id) |
| int | rte_bbdev_queue_start (uint16_t dev_id, uint16_t queue_id) |
| int | rte_bbdev_queue_stop (uint16_t dev_id, uint16_t queue_id) |
| int | rte_bbdev_stats_get (uint16_t dev_id, struct rte_bbdev_stats *stats) |
| int | rte_bbdev_stats_reset (uint16_t dev_id) |
| int | rte_bbdev_info_get (uint16_t dev_id, struct rte_bbdev_info *dev_info) |
| int | rte_bbdev_queue_info_get (uint16_t dev_id, uint16_t queue_id, struct rte_bbdev_queue_info *queue_info) |
| RTE_TAILQ_HEAD (rte_bbdev_cb_list, rte_bbdev_callback) | |
| static uint16_t | rte_bbdev_enqueue_enc_ops (uint16_t dev_id, uint16_t queue_id, struct rte_bbdev_enc_op **ops, uint16_t num_ops) |
| static uint16_t | rte_bbdev_enqueue_dec_ops (uint16_t dev_id, uint16_t queue_id, struct rte_bbdev_dec_op **ops, uint16_t num_ops) |
| static uint16_t | rte_bbdev_enqueue_ldpc_enc_ops (uint16_t dev_id, uint16_t queue_id, struct rte_bbdev_enc_op **ops, uint16_t num_ops) |
| static uint16_t | rte_bbdev_enqueue_ldpc_dec_ops (uint16_t dev_id, uint16_t queue_id, struct rte_bbdev_dec_op **ops, uint16_t num_ops) |
| static uint16_t | rte_bbdev_enqueue_fft_ops (uint16_t dev_id, uint16_t queue_id, struct rte_bbdev_fft_op **ops, uint16_t num_ops) |
| static uint16_t | rte_bbdev_enqueue_mldts_ops (uint16_t dev_id, uint16_t queue_id, struct rte_bbdev_mldts_op **ops, uint16_t num_ops) |
| static uint16_t | rte_bbdev_dequeue_enc_ops (uint16_t dev_id, uint16_t queue_id, struct rte_bbdev_enc_op **ops, uint16_t num_ops) |
| static uint16_t | rte_bbdev_dequeue_dec_ops (uint16_t dev_id, uint16_t queue_id, struct rte_bbdev_dec_op **ops, uint16_t num_ops) |
| static uint16_t | rte_bbdev_dequeue_ldpc_enc_ops (uint16_t dev_id, uint16_t queue_id, struct rte_bbdev_enc_op **ops, uint16_t num_ops) |
| static uint16_t | rte_bbdev_dequeue_ldpc_dec_ops (uint16_t dev_id, uint16_t queue_id, struct rte_bbdev_dec_op **ops, uint16_t num_ops) |
| static uint16_t | rte_bbdev_dequeue_fft_ops (uint16_t dev_id, uint16_t queue_id, struct rte_bbdev_fft_op **ops, uint16_t num_ops) |
| static uint16_t | rte_bbdev_dequeue_mldts_ops (uint16_t dev_id, uint16_t queue_id, struct rte_bbdev_mldts_op **ops, uint16_t num_ops) |
| int | rte_bbdev_callback_register (uint16_t dev_id, enum rte_bbdev_event_type event, rte_bbdev_cb_fn cb_fn, void *cb_arg) |
| int | rte_bbdev_callback_unregister (uint16_t dev_id, enum rte_bbdev_event_type event, rte_bbdev_cb_fn cb_fn, void *cb_arg) |
| int | rte_bbdev_queue_intr_enable (uint16_t dev_id, uint16_t queue_id) |
| int | rte_bbdev_queue_intr_disable (uint16_t dev_id, uint16_t queue_id) |
| int | rte_bbdev_queue_intr_ctl (uint16_t dev_id, uint16_t queue_id, int epfd, int op, void *data) |
| const char * | rte_bbdev_device_status_str (enum rte_bbdev_device_status status) |
| const char * | rte_bbdev_enqueue_status_str (enum rte_bbdev_enqueue_status status) |
| __rte_experimental int | rte_bbdev_queue_ops_dump (uint16_t dev_id, uint16_t queue_index, FILE *file) |
| __rte_experimental char * | rte_bbdev_ops_param_string (void *op, enum rte_bbdev_op_type op_type, char *str, uint32_t len) |
Wireless base band device abstraction APIs.
This API allows an application to discover, configure and use a device to process operations. An asynchronous API (enqueue, followed by later dequeue) is used for processing operations.
The functions in this API are not thread-safe when called on the same target object (a device, or a queue on a device), with the exception that one thread can enqueue operations to a queue while another thread dequeues from the same queue.
Definition in file rte_bbdev.h.
| #define RTE_BBDEV_MAX_DEVS 128 |
Max number of devices
Definition at line 38 of file rte_bbdev.h.
| #define RTE_BBDEV_FOREACH | ( | i | ) |
Iterate through all enabled devices
Definition at line 89 of file rte_bbdev.h.
| #define RTE_BBDEV_END_OF_CAPABILITIES_LIST | ( | ) | { RTE_BBDEV_OP_NONE } |
Macro used at end of bbdev PMD list
Definition at line 364 of file rte_bbdev.h.
| #define RTE_BBDEV_NAME_MAX_LEN 64 |
Max length of device name
Definition at line 479 of file rte_bbdev.h.
| typedef void(* rte_bbdev_cb_fn) (uint16_t dev_id, enum rte_bbdev_event_type event, void *cb_arg, void *ret_param) |
Typedef for application callback function registered by application software for notification of device events
| dev_id | Device identifier |
| event | Device event to register for notification of. |
| cb_arg | User specified parameter to be passed to user's callback function. |
| ret_param | To pass data back to user application. |
Definition at line 968 of file rte_bbdev.h.
| enum rte_bbdev_state |
Flags indicate current state of BBDEV device
Definition at line 49 of file rte_bbdev.h.
Flags to indicate the reason why a previous enqueue may not have consumed all requested operations. In case of multiple reasons the latter supersedes a previous one. The related macro RTE_BBDEV_ENQ_STATUS_SIZE_MAX can be used as an absolute maximum for notably sizing array while allowing for future enumeration insertion.
Definition at line 244 of file rte_bbdev.h.
Flags to indicate the status of the device.
Definition at line 255 of file rte_bbdev.h.
| enum rte_bbdev_event_type |
Definitions of device event types
| Enumerator | |
|---|---|
| RTE_BBDEV_EVENT_UNKNOWN | unknown event type |
| RTE_BBDEV_EVENT_ERROR | error interrupt event |
| RTE_BBDEV_EVENT_DEQUEUE | dequeue event |
| RTE_BBDEV_EVENT_MAX | max value of this enum |
Definition at line 948 of file rte_bbdev.h.
| uint16_t rte_bbdev_count | ( | void | ) |
Get the total number of devices that have been successfully initialised.
| bool rte_bbdev_is_valid | ( | uint16_t | dev_id | ) |
Check if a device is valid.
| dev_id | The identifier of the device. |
| uint16_t rte_bbdev_find_next | ( | uint16_t | dev_id | ) |
Get the next enabled device.
| dev_id | The current device |
| int rte_bbdev_setup_queues | ( | uint16_t | dev_id, |
| uint16_t | num_queues, | ||
| int | socket_id | ||
| ) |
Setup up device queues. This function must be called on a device before setting up the queues and starting the device. It can also be called when a device is in the stopped state. If any device queues have been configured their configuration will be cleared by a call to this function.
| dev_id | The identifier of the device. |
| num_queues | Number of queues to configure on device. |
| socket_id | ID of a socket which will be used to allocate memory. |
| int rte_bbdev_intr_enable | ( | uint16_t | dev_id | ) |
Enable interrupts. This function may be called before starting the device to enable the interrupts if they are available.
| dev_id | The identifier of the device. |
| int rte_bbdev_queue_configure | ( | uint16_t | dev_id, |
| uint16_t | queue_id, | ||
| const struct rte_bbdev_queue_conf * | conf | ||
| ) |
Configure a queue on a device. This function can be called after device configuration, and before starting. It can also be called when the device or the queue is in the stopped state.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| conf | The queue configuration. If NULL, a default configuration will be used. |
| int rte_bbdev_start | ( | uint16_t | dev_id | ) |
Start a device. This is the last step needed before enqueueing operations is possible.
| dev_id | The identifier of the device. |
| int rte_bbdev_stop | ( | uint16_t | dev_id | ) |
Stop a device. The device can be reconfigured, and restarted after being stopped.
| dev_id | The identifier of the device. |
| int rte_bbdev_close | ( | uint16_t | dev_id | ) |
Close a device. The device cannot be restarted without reconfiguration!
| dev_id | The identifier of the device. |
| int rte_bbdev_queue_start | ( | uint16_t | dev_id, |
| uint16_t | queue_id | ||
| ) |
Start a specified queue on a device. This is only needed if the queue has been stopped, or if the deferred_start flag has been set when configuring the queue.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| int rte_bbdev_queue_stop | ( | uint16_t | dev_id, |
| uint16_t | queue_id | ||
| ) |
Stop a specified queue on a device, to allow re configuration.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| int rte_bbdev_stats_get | ( | uint16_t | dev_id, |
| struct rte_bbdev_stats * | stats | ||
| ) |
Retrieve the general I/O statistics of a device.
| dev_id | The identifier of the device. |
| stats | Pointer to structure to where statistics will be copied. On error, this location may or may not have been modified. |
| int rte_bbdev_stats_reset | ( | uint16_t | dev_id | ) |
Reset the statistics of a device.
| dev_id | The identifier of the device. |
| int rte_bbdev_info_get | ( | uint16_t | dev_id, |
| struct rte_bbdev_info * | dev_info | ||
| ) |
Retrieve information about a device.
| dev_id | The identifier of the device. |
| dev_info | Pointer to structure to where information will be copied. On error, this location may or may not have been modified. |
| int rte_bbdev_queue_info_get | ( | uint16_t | dev_id, |
| uint16_t | queue_id, | ||
| struct rte_bbdev_queue_info * | queue_info | ||
| ) |
Retrieve information about a specific queue on a device.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| queue_info | Pointer to structure to where information will be copied. On error, this location may or may not have been modified. |
| RTE_TAILQ_HEAD | ( | rte_bbdev_cb_list | , |
| rte_bbdev_callback | |||
| ) |
Structure to keep track of registered callbacks
|
inlinestatic |
Enqueue a burst of processed encode operations to a queue of the device. This functions only enqueues as many operations as currently possible and does not block until num_ops entries in the queue are available. This function does not provide any error notification to avoid the corresponding overhead.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| ops | Pointer array containing operations to be enqueued Must have at least num_ops entries |
| num_ops | The maximum number of operations to enqueue. |
ops array). Definition at line 569 of file rte_bbdev.h.
|
inlinestatic |
Enqueue a burst of processed decode operations to a queue of the device. This functions only enqueues as many operations as currently possible and does not block until num_ops entries in the queue are available. This function does not provide any error notification to avoid the corresponding overhead.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| ops | Pointer array containing operations to be enqueued Must have at least num_ops entries |
| num_ops | The maximum number of operations to enqueue. |
ops array). Definition at line 601 of file rte_bbdev.h.
|
inlinestatic |
Enqueue a burst of processed encode operations to a queue of the device. This functions only enqueues as many operations as currently possible and does not block until num_ops entries in the queue are available. This function does not provide any error notification to avoid the corresponding overhead.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| ops | Pointer array containing operations to be enqueued Must have at least num_ops entries |
| num_ops | The maximum number of operations to enqueue. |
ops array). Definition at line 633 of file rte_bbdev.h.
|
inlinestatic |
Enqueue a burst of processed decode operations to a queue of the device. This functions only enqueues as many operations as currently possible and does not block until num_ops entries in the queue are available. This function does not provide any error notification to avoid the corresponding overhead.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| ops | Pointer array containing operations to be enqueued Must have at least num_ops entries |
| num_ops | The maximum number of operations to enqueue. |
ops array). Definition at line 665 of file rte_bbdev.h.
|
inlinestatic |
Enqueue a burst of FFT operations to a queue of the device. This functions only enqueues as many operations as currently possible and does not block until num_ops entries in the queue are available. This function does not provide any error notification to avoid the corresponding overhead.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| ops | Pointer array containing operations to be enqueued. Must have at least num_ops entries. |
| num_ops | The maximum number of operations to enqueue. |
ops array.) Definition at line 697 of file rte_bbdev.h.
|
inlinestatic |
Enqueue a burst of MLDTS operations to a queue of the device. This functions only enqueues as many operations as currently possible and does not block until num_ops entries in the queue are available. This function does not provide any error notification to avoid the corresponding overhead.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| ops | Pointer array containing operations to be enqueued Must have at least num_ops entries |
| num_ops | The maximum number of operations to enqueue. |
ops array). Definition at line 729 of file rte_bbdev.h.
|
inlinestatic |
Dequeue a burst of processed encode operations from a queue of the device. This functions returns only the current contents of the queue, and does not block until @ num_ops is available. This function does not provide any error notification to avoid the corresponding overhead.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| ops | Pointer array where operations will be dequeued to. Must have at least num_ops entries, i.e. a pointer to a table of void * pointers (ops) that will be filled. |
| num_ops | The maximum number of operations to dequeue. |
ops array.) Definition at line 762 of file rte_bbdev.h.
|
inlinestatic |
Dequeue a burst of processed decode operations from a queue of the device. This functions returns only the current contents of the queue, and does not block until @ num_ops is available. This function does not provide any error notification to avoid the corresponding overhead.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| ops | Pointer array where operations will be dequeued to. Must have at least num_ops entries ie. A pointer to a table of void * pointers (ops) that will be filled. |
| num_ops | The maximum number of operations to dequeue. |
ops array). Definition at line 798 of file rte_bbdev.h.
|
inlinestatic |
Dequeue a burst of processed encode operations from a queue of the device. This functions returns only the current contents of the queue, and does not block until @ num_ops is available. This function does not provide any error notification to avoid the corresponding overhead.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| ops | Pointer array where operations will be dequeued to. Must have at least num_ops entries |
| num_ops | The maximum number of operations to dequeue. |
ops array). Definition at line 833 of file rte_bbdev.h.
|
inlinestatic |
Dequeue a burst of processed decode operations from a queue of the device. This functions returns only the current contents of the queue, and does not block until @ num_ops is available. This function does not provide any error notification to avoid the corresponding overhead.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| ops | Pointer array where operations will be dequeued to. Must have at least num_ops entries |
| num_ops | The maximum number of operations to dequeue. |
ops array). Definition at line 867 of file rte_bbdev.h.
|
inlinestatic |
Dequeue a burst of FFT operations from a queue of the device. This functions returns only the current contents of the queue, and does not block until @ num_ops is available. This function does not provide any error notification to avoid the corresponding overhead.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| ops | Pointer array where operations will be dequeued to. Must have at least num_ops entries |
| num_ops | The maximum number of operations to dequeue. |
ops array). Definition at line 901 of file rte_bbdev.h.
|
inlinestatic |
Dequeue a burst of MLDTS operations from a queue of the device. This functions returns only the current contents of the queue, and does not block until num_ops is available. This function does not provide any error notification to avoid the corresponding overhead.
| dev_id | The identifier of the device. |
| queue_id | The index of the queue. |
| ops | Pointer array where operations will be dequeued to. Must have at least num_ops entries |
| num_ops | The maximum number of operations to dequeue. |
ops array). Definition at line 935 of file rte_bbdev.h.
| int rte_bbdev_callback_register | ( | uint16_t | dev_id, |
| enum rte_bbdev_event_type | event, | ||
| rte_bbdev_cb_fn | cb_fn, | ||
| void * | cb_arg | ||
| ) |
Register a callback function for specific device id. Multiple callbacks can be added and will be called in the order they are added when an event is triggered. Callbacks are called in a separate thread created by the DPDK EAL.
| dev_id | Device id. |
| event | The event that the callback will be registered for. |
| cb_fn | User supplied callback function to be called. |
| cb_arg | Pointer to parameter that will be passed to the callback. |
| int rte_bbdev_callback_unregister | ( | uint16_t | dev_id, |
| enum rte_bbdev_event_type | event, | ||
| rte_bbdev_cb_fn | cb_fn, | ||
| void * | cb_arg | ||
| ) |
Unregister a callback function for specific device id.
| dev_id | The device identifier. |
| event | The event that the callback will be unregistered for. |
| cb_fn | User supplied callback function to be unregistered. |
| cb_arg | Pointer to the parameter supplied when registering the callback. (void *)-1 means to remove all registered callbacks with the specified function address. |
| int rte_bbdev_queue_intr_enable | ( | uint16_t | dev_id, |
| uint16_t | queue_id | ||
| ) |
Enable a one-shot interrupt on the next operation enqueued to a particular queue. The interrupt will be triggered when the operation is ready to be dequeued. To handle the interrupt, an epoll file descriptor must be registered using rte_bbdev_queue_intr_ctl(), and then an application thread/lcore can wait for the interrupt using rte_epoll_wait().
| dev_id | The device identifier. |
| queue_id | The index of the queue. |
| int rte_bbdev_queue_intr_disable | ( | uint16_t | dev_id, |
| uint16_t | queue_id | ||
| ) |
Disable a one-shot interrupt on the next operation enqueued to a particular queue (if it has been enabled).
| dev_id | The device identifier. |
| queue_id | The index of the queue. |
| int rte_bbdev_queue_intr_ctl | ( | uint16_t | dev_id, |
| uint16_t | queue_id, | ||
| int | epfd, | ||
| int | op, | ||
| void * | data | ||
| ) |
Control interface for per-queue interrupts.
| dev_id | The device identifier. |
| queue_id | The index of the queue. |
| epfd | Epoll file descriptor that will be associated with the interrupt source. If the special value RTE_EPOLL_PER_THREAD is provided, a per thread epoll file descriptor created by the EAL is used (RTE_EPOLL_PER_THREAD can also be used when calling rte_epoll_wait()). |
| op | The operation be performed for the vector.RTE_INTR_EVENT_ADD or RTE_INTR_EVENT_DEL. |
| data | User context, that will be returned in the epdata.data field of the rte_epoll_event structure filled in by rte_epoll_wait(). |
| const char * rte_bbdev_device_status_str | ( | enum rte_bbdev_device_status | status | ) |
Convert device status from enum to string.
| status | Device status as enum. |
| const char * rte_bbdev_enqueue_status_str | ( | enum rte_bbdev_enqueue_status | status | ) |
Convert queue status from enum to string.
| status | Queue status as enum. |
| __rte_experimental int rte_bbdev_queue_ops_dump | ( | uint16_t | dev_id, |
| uint16_t | queue_index, | ||
| FILE * | file | ||
| ) |
Dump operations info from device to a file. This API is used for debugging provided input operations, not a dataplane API.
| dev_id | The device identifier. |
| queue_index | Index of queue. |
| file | A pointer to a file for output. |
| __rte_experimental char * rte_bbdev_ops_param_string | ( | void * | op, |
| enum rte_bbdev_op_type | op_type, | ||
| char * | str, | ||
| uint32_t | len | ||
| ) |
String of parameters related to the parameters of an operation of a given type.
| op | Pointer to an operation. |
| op_type | Operation type enum. |
| str | String being describing the operations. |
| len | Size of the string buffer. |