|
DPDK
18.05.1
|
#include <stdint.h>#include <stdbool.h>#include <string.h>#include <rte_compat.h>#include <rte_atomic.h>#include <rte_bus.h>#include <rte_cpuflags.h>#include <rte_memory.h>#include "rte_bbdev_op.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) |
Enumerations | |
| enum | rte_bbdev_state |
| enum | rte_bbdev_event_type { RTE_BBDEV_EVENT_UNKNOWN, RTE_BBDEV_EVENT_ERROR, RTE_BBDEV_EVENT_DEQUEUE, RTE_BBDEV_EVENT_MAX } |
Functions | |
| uint16_t __rte_experimental | rte_bbdev_count (void) |
| bool __rte_experimental | rte_bbdev_is_valid (uint16_t dev_id) |
| uint16_t __rte_experimental | rte_bbdev_find_next (uint16_t dev_id) |
| int __rte_experimental | rte_bbdev_setup_queues (uint16_t dev_id, uint16_t num_queues, int socket_id) |
| int __rte_experimental | rte_bbdev_intr_enable (uint16_t dev_id) |
| int __rte_experimental | rte_bbdev_queue_configure (uint16_t dev_id, uint16_t queue_id, const struct rte_bbdev_queue_conf *conf) |
| int __rte_experimental | rte_bbdev_start (uint16_t dev_id) |
| int __rte_experimental | rte_bbdev_stop (uint16_t dev_id) |
| int __rte_experimental | rte_bbdev_close (uint16_t dev_id) |
| int __rte_experimental | rte_bbdev_queue_start (uint16_t dev_id, uint16_t queue_id) |
| int __rte_experimental | rte_bbdev_queue_stop (uint16_t dev_id, uint16_t queue_id) |
| int __rte_experimental | rte_bbdev_stats_get (uint16_t dev_id, struct rte_bbdev_stats *stats) |
| int __rte_experimental | rte_bbdev_stats_reset (uint16_t dev_id) |
| int __rte_experimental | rte_bbdev_info_get (uint16_t dev_id, struct rte_bbdev_info *dev_info) |
| int __rte_experimental | rte_bbdev_queue_info_get (uint16_t dev_id, uint16_t queue_id, struct rte_bbdev_queue_info *queue_info) |
| 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_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) |
| int __rte_experimental | 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_experimental | 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_experimental | rte_bbdev_queue_intr_enable (uint16_t dev_id, uint16_t queue_id) |
| int __rte_experimental | rte_bbdev_queue_intr_disable (uint16_t dev_id, uint16_t queue_id) |
| int __rte_experimental | rte_bbdev_queue_intr_ctl (uint16_t dev_id, uint16_t queue_id, int epfd, int op, void *data) |
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 43 of file rte_bbdev.h.
| #define RTE_BBDEV_FOREACH | ( | i | ) |
Iterate through all enabled devices
Definition at line 87 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 301 of file rte_bbdev.h.
| #define RTE_BBDEV_NAME_MAX_LEN 64 |
Max length of device name
Definition at line 390 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 585 of file rte_bbdev.h.
| enum rte_bbdev_state |
Flags indiciate current state of BBDEV device
Definition at line 47 of file rte_bbdev.h.
| enum rte_bbdev_event_type |
Definitions of device event types
| 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 565 of file rte_bbdev.h.
| uint16_t __rte_experimental rte_bbdev_count | ( | void | ) |
Get the total number of devices that have been successfully initialised.
| bool __rte_experimental rte_bbdev_is_valid | ( | uint16_t | dev_id | ) |
Check if a device is valid.
| dev_id | The identifier of the device. |
| uint16_t __rte_experimental rte_bbdev_find_next | ( | uint16_t | dev_id | ) |
Get the next enabled device.
| dev_id | The current device |
| int __rte_experimental 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_experimental 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_experimental 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_experimental 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_experimental 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_experimental 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_experimental 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_experimental 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_experimental 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_experimental rte_bbdev_stats_reset | ( | uint16_t | dev_id | ) |
Reset the statistics of a device.
| dev_id | The identifier of the device. |
| int __rte_experimental 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_experimental 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. |
| 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 465 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 495 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 525 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 556 of file rte_bbdev.h.
| int __rte_experimental 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_experimental 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_experimental 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_experimental 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_experimental 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(). |
1.8.1.2