Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
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_UNSPECI-
	 FIED }
     #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  *de-
	 vices, uint8_t nb_devices)
     int  rte_compressdev_configure (uint8_t dev_id, struct rte_compressdev_con-
	 fig *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   *pri-
	 vate_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 48 of file rte_compressdev.h.

   #define RTE_COMPDEV_FF_HW_ACCELERATED   (1ULL << 0)
     compression device supported feature flags

     Note
	 New features flags should be added to the end of the list

     Keep these flags synchronised with rte_compressdev_get_feature_name() Oper-
     ations 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 de-
     queue. It should leave it cleared if the processing is done during the  en-
     queue (default). Applications can use this as a hint for tuning.

     Definition at line 79 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
	 flag The mask describing the flag

     Returns
	 The name of this flag, or NULL if it's not a valid feature flag.

   int rte_compressdev_get_dev_id (const char * name)
     Get the device identifier for the named compress device.

     Parameters
	 name Device name to select the device structure

     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
	 dev_id Compress device identifier

     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 ini-
     tialised.

     Returns

	 * The total number of usable compress devices.

   uint8_t rte_compressdev_devices_get (const char * driver_name, uint8_t *  de-
     vices, uint8_t nb_devices)
     Get  number and identifiers of attached comp devices that use the same com-
     press driver.

     Parameters
	 driver_name Driver name
	 devices Output devices identifiers
	 nb_devices Maximal number of devices

     Returns
	 Returns number of attached compress devices.

   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
	 dev_id Compress device identifier
	 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  (en-
     queue/dequeue, etc) can be invoked.

     Parameters
	 dev_id Compress device identifier

     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_compress-
     dev_start()

     Parameters
	 dev_id Compress device identifier

   int rte_compressdev_close (uint8_t dev_id)
     Close an device. The memory allocated in the device gets freed. After call-
     ing this function, in order to use the device again, it is required to con-
     figure the device again.

     Parameters
	 dev_id Compress device identifier

     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
	 dev_id Compress device identifier
	 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_com-
	 pressdev_configure()
	 max_inflight_ops Max number of ops which the qp will have  to	accommo-
	 date 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
	 dev_id Compress device identifier

     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
	 dev_id The identifier of the device
	 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
	 dev_id The identifier of the device.

   void  rte_compressdev_info_get (uint8_t dev_id, struct rte_compressdev_info *
     dev_info)
     Retrieve the contextual information of a device.

     Parameters
	 dev_id Compress device identifier
	 dev_info A pointer to a structure of type  rte_compressdev_info  to  be
	 filled with the contextual information of the device

     Note
	 The capabilities field of dev_info is set to point to the first element
	 of  an  array of struct rte_compressdev_capabilities. The element after
	 the last valid element has it's op field set to  RTE_COMP_ALGO_UNSPECI-
	 FIED.

   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  ac-
     tually  dequeued, which is the number of rte_comp_op data structures effec-
     tively 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 oper-
     ations remain in the devices output queue. Applications implementing a 're-
     trieve as many processed operations as possible' policy can check this spe-
     cific  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 no-
     tification to avoid the corresponding overhead.

     Note
	 : operation ordering is not maintained within the queue pair.

	 : 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
	 dev_id Compress device identifier
	 qp_id	The index of the queue pair from which to retrieve processed op-
	 erations. The value must be in the range [0, nb_queue_pair - 1]  previ-
	 ously 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 oper-
     ations 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 sup-
     plied in the ops array of rte_comp_op structures.

     The rte_compressdev_enqueue_burst() function returns the number  of  opera-
     tions  it	actually enqueued for processing. A return value equal to nb_ops
     means that all packets have been enqueued.

     Note
	 All compression operations are Out-of-place (OOP)  operations,  as  the
	 size of the output data is different to the size of the input data.

	 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
	 dev_id Compress device identifier
	 qp_id	The  index  of	the queue pair on which operations are to be en-
	 queued  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 struc-
	 tures which contain the operations to be processed
	 nb_ops The number of operations to process

     Returns
	 The number of operations actually enqueued on the  device.  The  return
	 value	can be less than the value of the nb_ops parameter when the comp
	 devices queue is full or if  invalid  parameters  are	specified  in  a
	 rte_comp_op.

   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	process-
     ing  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
	 dev_id Compress device identifier
	 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
	 dev_id Compress device identifier
	 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 pro-
     cessing  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
	 dev_id Compress device identifier
	 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
	 dev_id Compress device identifier
	 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.

Version 25.11.0 		 Thu Aug 27 2026	    rte_compressdev.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=rte_compressdev_private_xform_create&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help