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

FreeBSD Manual Pages

  
 
  

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_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 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()
       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 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
       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
	   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 (enqueue/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_compressdev_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
       calling this function, in order to use the device again,	it is required
       to configure 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_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
	   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_UNSPECIFIED.

   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
	   : 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
	   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
	   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
	   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
	   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
       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
	   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 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
	   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 Jun	11 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_get_feature_name&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help