table of contents
rte_compressdev.h(3) | DPDK | rte_compressdev.h(3) |
NAME¶
rte_compressdev.h
SYNOPSIS¶
#include 'rte_comp.h'
Data Structures¶
struct rte_param_log2_range
struct rte_compressdev_capabilities
struct rte_compressdev_info
struct rte_compressdev_stats
struct rte_compressdev_config
Macros¶
#define RTE_COMP_END_OF_CAPABILITIES_LIST() {
RTE_COMP_ALGO_UNSPECIFIED }
#define RTE_COMPDEV_FF_HW_ACCELERATED (1ULL << 0)
#define RTE_COMPDEV_FF_CPU_SSE (1ULL << 1)
#define RTE_COMPDEV_FF_CPU_AVX (1ULL << 2)
#define RTE_COMPDEV_FF_CPU_AVX2 (1ULL << 3)
#define RTE_COMPDEV_FF_CPU_AVX512 (1ULL << 4)
#define RTE_COMPDEV_FF_CPU_NEON (1ULL << 5)
#define RTE_COMPDEV_FF_OP_DONE_IN_DEQUEUE (1ULL << 6)
Functions¶
const char * rte_compressdev_get_feature_name (uint64_t
flag)
int rte_compressdev_get_dev_id (const char *name)
const char * rte_compressdev_name_get (uint8_t dev_id)
uint8_t rte_compressdev_count (void)
uint8_t rte_compressdev_devices_get (const char *driver_name, uint8_t
*devices, uint8_t nb_devices)
int rte_compressdev_configure (uint8_t dev_id, struct
rte_compressdev_config *config)
int rte_compressdev_start (uint8_t dev_id)
void rte_compressdev_stop (uint8_t dev_id)
int rte_compressdev_close (uint8_t dev_id)
int rte_compressdev_queue_pair_setup (uint8_t dev_id, uint16_t
queue_pair_id, uint32_t max_inflight_ops, int socket_id)
uint16_t rte_compressdev_queue_pair_count (uint8_t dev_id)
int rte_compressdev_stats_get (uint8_t dev_id, struct
rte_compressdev_stats *stats)
void rte_compressdev_stats_reset (uint8_t dev_id)
void rte_compressdev_info_get (uint8_t dev_id, struct
rte_compressdev_info *dev_info)
uint16_t rte_compressdev_dequeue_burst (uint8_t dev_id, uint16_t qp_id,
struct rte_comp_op **ops, uint16_t nb_ops)
uint16_t rte_compressdev_enqueue_burst (uint8_t dev_id, uint16_t qp_id,
struct rte_comp_op **ops, uint16_t nb_ops)
int rte_compressdev_stream_create (uint8_t dev_id, const struct
rte_comp_xform *xform, void **stream)
int rte_compressdev_stream_free (uint8_t dev_id, void *stream)
int rte_compressdev_private_xform_create (uint8_t dev_id, const struct
rte_comp_xform *xform, void **private_xform)
int rte_compressdev_private_xform_free (uint8_t dev_id, void
*private_xform)
Detailed Description¶
RTE Compression Device APIs.
Defines comp device APIs for the provisioning of compression operations.
Definition in file rte_compressdev.h.
Macro Definition Documentation¶
#define RTE_COMP_END_OF_CAPABILITIES_LIST() { RTE_COMP_ALGO_UNSPECIFIED }¶
Macro used at end of comp PMD list
Definition at line 49 of file rte_compressdev.h.
#define RTE_COMPDEV_FF_HW_ACCELERATED (1ULL << 0)¶
compression device supported feature flags
Note:
Keep these flags synchronised with rte_compressdev_get_feature_name()Operations are off-loaded to an external hardware accelerator
Definition at line 63 of file rte_compressdev.h.
#define RTE_COMPDEV_FF_CPU_SSE (1ULL << 1)¶
Utilises CPU SIMD SSE instructions
Definition at line 65 of file rte_compressdev.h.
#define RTE_COMPDEV_FF_CPU_AVX (1ULL << 2)¶
Utilises CPU SIMD AVX instructions
Definition at line 67 of file rte_compressdev.h.
#define RTE_COMPDEV_FF_CPU_AVX2 (1ULL << 3)¶
Utilises CPU SIMD AVX2 instructions
Definition at line 69 of file rte_compressdev.h.
#define RTE_COMPDEV_FF_CPU_AVX512 (1ULL << 4)¶
Utilises CPU SIMD AVX512 instructions
Definition at line 71 of file rte_compressdev.h.
#define RTE_COMPDEV_FF_CPU_NEON (1ULL << 5)¶
Utilises CPU NEON instructions
Definition at line 73 of file rte_compressdev.h.
#define RTE_COMPDEV_FF_OP_DONE_IN_DEQUEUE (1ULL << 6)¶
A PMD should set this if the bulk of the processing is done during the dequeue. It should leave it cleared if the processing is done during the enqueue (default). Applications can use this as a hint for tuning.
Definition at line 75 of file rte_compressdev.h.
Function Documentation¶
const char* rte_compressdev_get_feature_name (uint64_t flag)¶
Get the name of a compress device feature flag.
Parameters:
Returns:
int rte_compressdev_get_dev_id (const char * name)¶
Get the device identifier for the named compress device.
Parameters:
Returns:
- Returns compress device identifier on success.
- Return -1 on failure to find named compress device.
const char* rte_compressdev_name_get (uint8_t dev_id)¶
Get the compress device name given a device identifier.
Parameters:
Returns:
- Returns compress device name.
- Returns NULL if compress device is not present.
uint8_t rte_compressdev_count (void)¶
Get the total number of compress devices that have been successfully initialised.
Returns:
- •
- The total number of usable compress devices.
uint8_t rte_compressdev_devices_get (const char * driver_name, uint8_t * devices, uint8_t nb_devices)¶
Get number and identifiers of attached comp devices that use the same compress driver.
Parameters:
devices Output devices identifiers
nb_devices Maximal number of devices
Returns:
int rte_compressdev_configure (uint8_t dev_id, struct rte_compressdev_config * config)¶
Configure a device.
This function must be invoked first before any other function in the API. This function can also be re-invoked when a device is in the stopped state.
Parameters:
config The compress device configuration
Returns:
- 0: Success, device configured.
- <0: Error code returned by the driver configuration function.
int rte_compressdev_start (uint8_t dev_id)¶
Start a device.
The device start step is called after configuring the device and setting up its queue pairs. On success, data-path functions exported by the API (enqueue/dequeue, etc) can be invoked.
Parameters:
Returns:
- 0: Success, device started.
- <0: Error code of the driver device start function.
void rte_compressdev_stop (uint8_t dev_id)¶
Stop a device. The device can be restarted with a call to rte_compressdev_start()
Parameters:
int rte_compressdev_close (uint8_t dev_id)¶
Close an device. The memory allocated in the device gets freed. After calling this function, in order to use the device again, it is required to configure the device again.
Parameters:
Returns:
- 0 on successfully closing device
- <0 on failure to close device
int rte_compressdev_queue_pair_setup (uint8_t dev_id, uint16_t queue_pair_id, uint32_t max_inflight_ops, int socket_id)¶
Allocate and set up a receive queue pair for a device. This should only be called when the device is stopped.
Parameters:
queue_pair_id The index of the queue pairs to set up. The value must be in the range [0, nb_queue_pair - 1] previously supplied to rte_compressdev_configure()
max_inflight_ops Max number of ops which the qp will have to accommodate simultaneously
socket_id The socket_id argument is the socket identifier in case of NUMA. The value can be SOCKET_ID_ANY if there is no NUMA constraint for the DMA memory allocated for the receive queue pair
Returns:
- 0: Success, queue pair correctly set up.
- <0: Queue pair configuration failed
uint16_t rte_compressdev_queue_pair_count (uint8_t dev_id)¶
Get the number of queue pairs on a specific comp device
Parameters:
Returns:
- •
- The number of configured queue pairs.
int rte_compressdev_stats_get (uint8_t dev_id, struct rte_compressdev_stats * stats)¶
Retrieve the general I/O statistics of a device.
Parameters:
stats A pointer to a structure of type rte_compressdev_stats to be filled with the values of device counters
Returns:
- Zero if successful.
- Non-zero otherwise.
void rte_compressdev_stats_reset (uint8_t dev_id)¶
Reset the general I/O statistics of a device.
Parameters:
void rte_compressdev_info_get (uint8_t dev_id, struct rte_compressdev_info * dev_info)¶
Retrieve the contextual information of a device.
Parameters:
dev_info A pointer to a structure of type rte_compressdev_info to be filled with the contextual information of the device
Note:
uint16_t rte_compressdev_dequeue_burst (uint8_t dev_id, uint16_t qp_id, struct rte_comp_op ** ops, uint16_t nb_ops)¶
Dequeue a burst of processed compression operations from a queue on the comp device. The dequeued operation are stored in rte_comp_op structures whose pointers are supplied in the ops array.
The rte_compressdev_dequeue_burst() function returns the number of ops actually dequeued, which is the number of rte_comp_op data structures effectively supplied into the ops array.
A return value equal to nb_ops indicates that the queue contained at least nb_ops operations, and this is likely to signify that other processed operations remain in the devices output queue. Applications implementing a 'retrieve as many processed operations as possible' policy can check this specific case and keep invoking the rte_compressdev_dequeue_burst() function until a value less than nb_ops is returned.
The rte_compressdev_dequeue_burst() function does not provide any error notification to avoid the corresponding overhead.
Note:
: In case op status = OUT_OF_SPACE_TERMINATED, op.consumed=0 and the op must be resubmitted with the same input data and a larger output buffer. op.produced is usually 0, but in decompression cases a PMD may return > 0 and the application may find it useful to inspect that data. This status is only returned on STATELESS ops.
: In case op status = OUT_OF_SPACE_RECOVERABLE, op.produced can be used and next op in stream should continue on from op.consumed+1 with a fresh output buffer. Consumed=0, produced=0 is an unusual but allowed case. There may be useful state/history stored in the PMD, even though no output was produced yet.
Parameters:
qp_id The index of the queue pair from which to retrieve processed operations. The value must be in the range [0, nb_queue_pair - 1] previously supplied to rte_compressdev_configure()
ops The address of an array of pointers to rte_comp_op structures that must be large enough to store nb_ops pointers in it
nb_ops The maximum number of operations to dequeue
Returns:
- •
- The number of operations actually dequeued, which is the number of pointers to rte_comp_op structures effectively supplied to the ops array.
uint16_t rte_compressdev_enqueue_burst (uint8_t dev_id, uint16_t qp_id, struct rte_comp_op ** ops, uint16_t nb_ops)¶
Enqueue a burst of operations for processing on a compression device.
The rte_compressdev_enqueue_burst() function is invoked to place comp operations on the queue qp_id of the device designated by its dev_id.
The nb_ops parameter is the number of operations to process which are supplied in the ops array of rte_comp_op structures.
The rte_compressdev_enqueue_burst() function returns the number of operations it actually enqueued for processing. A return value equal to nb_ops means that all packets have been enqueued.
Note:
The rte_comp_op contains both input and output parameters and is the vehicle for the application to pass data into and out of the PMD. While an op is inflight, i.e. once it has been enqueued, the private_xform or stream attached to it and any mbufs or memory referenced by it should not be altered or freed by the application. The PMD may use or change some of this data at any time until it has been returned in a dequeue operation.
The flush flag only applies to operations which return SUCCESS. In OUT_OF_SPACE cases whether STATEFUL or STATELESS, data in dest buffer is as if flush flag was FLUSH_NONE.
flush flag only applies in compression direction. It has no meaning for decompression.
: operation ordering is not maintained within the queue pair.
Parameters:
qp_id The index of the queue pair on which operations are to be enqueued for processing. The value must be in the range [0, nb_queue_pairs - 1] previously supplied to rte_compressdev_configure
ops The address of an array of nb_ops pointers to rte_comp_op structures which contain the operations to be processed
nb_ops The number of operations to process
Returns:
int rte_compressdev_stream_create (uint8_t dev_id, const struct rte_comp_xform * xform, void ** stream)¶
This should alloc a stream from the device's mempool and initialise it. The application should call this API when setting up for the stateful processing of a set of data on a device. The API can be called multiple times to set up a stream for each data set. The handle returned is only for use with ops of op_type STATEFUL and must be passed to the PMD with every op in the data stream
Parameters:
xform xform data
stream Pointer to where PMD's private stream handle should be stored
Returns:
- 0 if successful and valid stream handle
- <0 in error cases
- Returns -EINVAL if input parameters are invalid.
- Returns -ENOTSUP if comp device does not support STATEFUL operations.
- Returns -ENOTSUP if comp device does not support the comp transform.
- Returns -ENOMEM if the private stream could not be allocated.
int rte_compressdev_stream_free (uint8_t dev_id, void * stream)¶
This should clear the stream and return it to the device's mempool.
Parameters:
stream PMD's private stream data
Returns:
- 0 if successful
- <0 in error cases
- Returns -EINVAL if input parameters are invalid.
- Returns -ENOTSUP if comp device does not support STATEFUL operations.
- Returns -EBUSY if can't free stream as there are inflight operations
int rte_compressdev_private_xform_create (uint8_t dev_id, const struct rte_comp_xform * xform, void ** private_xform)¶
This should alloc a private_xform from the device's mempool and initialise it. The application should call this API when setting up for stateless processing on a device. If it returns non-shareable, then the appl cannot share this handle with multiple in-flight ops and should call this API again to get a separate handle for every in-flight op. The handle returned is only valid for use with ops of op_type STATELESS.
Parameters:
xform xform data
private_xform Pointer to where PMD's private_xform handle should be stored
Returns:
- if successful returns 0 and valid private_xform handle
- <0 in error cases
- Returns -EINVAL if input parameters are invalid.
- Returns -ENOTSUP if comp device does not support the comp transform.
- Returns -ENOMEM if the private_xform could not be allocated.
int rte_compressdev_private_xform_free (uint8_t dev_id, void * private_xform)¶
This should clear the private_xform and return it to the device's mempool. It is the application's responsibility to ensure that private_xform data is not cleared while there are still in-flight operations using it.
Parameters:
private_xform PMD's private_xform data
Returns:
- 0 if successful
- <0 in error cases
- Returns -EINVAL if input parameters are invalid.
Author¶
Generated automatically by Doxygen for DPDK from the source code.
Thu May 23 2024 | Version 23.11.0 |