DPDK 22.11.5
Data Structures | Enumerations | Functions
rte_bbdev_op.h File Reference
#include <stdint.h>
#include <rte_compat.h>
#include <rte_common.h>
#include <rte_mbuf.h>
#include <rte_memory.h>
#include <rte_mempool.h>

Go to the source code of this file.

Data Structures

struct  rte_bbdev_op_data
 
struct  rte_bbdev_op_dec_turbo_cb_params
 
struct  rte_bbdev_op_dec_ldpc_cb_params
 
struct  rte_bbdev_op_dec_turbo_tb_params
 
struct  rte_bbdev_op_dec_ldpc_tb_params
 
struct  rte_bbdev_op_turbo_dec
 
struct  rte_bbdev_op_ldpc_dec
 
struct  rte_bbdev_op_enc_turbo_cb_params
 
struct  rte_bbdev_op_enc_turbo_tb_params
 
struct  rte_bbdev_op_enc_ldpc_cb_params
 
struct  rte_bbdev_op_enc_ldpc_tb_params
 
struct  rte_bbdev_op_turbo_enc
 
struct  rte_bbdev_op_ldpc_enc
 
struct  rte_bbdev_op_fft
 
struct  rte_bbdev_op_cap_turbo_dec
 
struct  rte_bbdev_op_cap_turbo_enc
 
struct  rte_bbdev_op_cap_ldpc_dec
 
struct  rte_bbdev_op_cap_ldpc_enc
 
struct  rte_bbdev_op_cap_fft
 
struct  rte_bbdev_enc_op
 
struct  rte_bbdev_dec_op
 
struct  rte_bbdev_fft_op
 
struct  rte_bbdev_op_cap
 

Enumerations

enum  rte_bbdev_op_td_flag_bitmasks {
  RTE_BBDEV_TURBO_SUBBLOCK_DEINTERLEAVE = (1ULL << 0) , RTE_BBDEV_TURBO_CRC_TYPE_24B = (1ULL << 1) , RTE_BBDEV_TURBO_EQUALIZER = (1ULL << 2) , RTE_BBDEV_TURBO_SOFT_OUT_SATURATE = (1ULL << 3) ,
  RTE_BBDEV_TURBO_HALF_ITERATION_EVEN = (1ULL << 4) , RTE_BBDEV_TURBO_CONTINUE_CRC_MATCH = (1ULL << 5) , RTE_BBDEV_TURBO_SOFT_OUTPUT = (1ULL << 6) , RTE_BBDEV_TURBO_EARLY_TERMINATION = (1ULL << 7) ,
  RTE_BBDEV_TURBO_DEC_INTERRUPTS = (1ULL << 9) , RTE_BBDEV_TURBO_POS_LLR_1_BIT_IN = (1ULL << 10) , RTE_BBDEV_TURBO_NEG_LLR_1_BIT_IN = (1ULL << 11) , RTE_BBDEV_TURBO_POS_LLR_1_BIT_SOFT_OUT = (1ULL << 12) ,
  RTE_BBDEV_TURBO_NEG_LLR_1_BIT_SOFT_OUT = (1ULL << 13) , RTE_BBDEV_TURBO_MAP_DEC = (1ULL << 14) , RTE_BBDEV_TURBO_DEC_SCATTER_GATHER = (1ULL << 15) , RTE_BBDEV_TURBO_DEC_TB_CRC_24B_KEEP = (1ULL << 16) ,
  RTE_BBDEV_TURBO_DEC_CRC_24B_DROP = (1ULL << 17)
}
 
enum  rte_bbdev_op_te_flag_bitmasks {
  RTE_BBDEV_TURBO_RV_INDEX_BYPASS = (1ULL << 0) , RTE_BBDEV_TURBO_RATE_MATCH = (1ULL << 1) , RTE_BBDEV_TURBO_CRC_24B_ATTACH = (1ULL << 2) , RTE_BBDEV_TURBO_CRC_24A_ATTACH = (1ULL << 3) ,
  RTE_BBDEV_TURBO_ENC_INTERRUPTS = (1ULL << 4) , RTE_BBDEV_TURBO_ENC_SCATTER_GATHER = (1ULL << 5)
}
 
enum  rte_bbdev_op_ldpcdec_flag_bitmasks {
  RTE_BBDEV_LDPC_CRC_TYPE_24A_CHECK = (1ULL << 0) , RTE_BBDEV_LDPC_CRC_TYPE_24B_CHECK = (1ULL << 1) , RTE_BBDEV_LDPC_CRC_TYPE_24B_DROP = (1ULL << 2) , RTE_BBDEV_LDPC_CRC_TYPE_16_CHECK = (1ULL << 3) ,
  RTE_BBDEV_LDPC_DEINTERLEAVER_BYPASS = (1ULL << 4) , RTE_BBDEV_LDPC_HQ_COMBINE_IN_ENABLE = (1ULL << 5) , RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE = (1ULL << 6) , RTE_BBDEV_LDPC_DECODE_BYPASS = (1ULL << 7) ,
  RTE_BBDEV_LDPC_SOFT_OUT_ENABLE = (1ULL << 8) , RTE_BBDEV_LDPC_SOFT_OUT_RM_BYPASS = (1ULL << 9) , RTE_BBDEV_LDPC_SOFT_OUT_DEINTERLEAVER_BYPASS = (1ULL << 10) , RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE = (1ULL << 11) ,
  RTE_BBDEV_LDPC_DEC_INTERRUPTS = (1ULL << 12) , RTE_BBDEV_LDPC_DEC_SCATTER_GATHER = (1ULL << 13) , RTE_BBDEV_LDPC_HARQ_6BIT_COMPRESSION = (1ULL << 14) , RTE_BBDEV_LDPC_LLR_COMPRESSION = (1ULL << 15) ,
  RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_IN_ENABLE = (1ULL << 16) , RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_OUT_ENABLE = (1ULL << 17) , RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_LOOPBACK = (1ULL << 18) , RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_FILLERS = (1ULL << 19)
}
 
enum  rte_bbdev_op_ldpcenc_flag_bitmasks {
  RTE_BBDEV_LDPC_INTERLEAVER_BYPASS = (1ULL << 0) , RTE_BBDEV_LDPC_RATE_MATCH = (1ULL << 1) , RTE_BBDEV_LDPC_CRC_24A_ATTACH = (1ULL << 2) , RTE_BBDEV_LDPC_CRC_24B_ATTACH = (1ULL << 3) ,
  RTE_BBDEV_LDPC_CRC_16_ATTACH = (1ULL << 4) , RTE_BBDEV_LDPC_ENC_INTERRUPTS = (1ULL << 5) , RTE_BBDEV_LDPC_ENC_SCATTER_GATHER = (1ULL << 6) , RTE_BBDEV_LDPC_ENC_CONCATENATION = (1ULL << 7)
}
 
enum  rte_bbdev_op_fft_flag_bitmasks {
  RTE_BBDEV_FFT_WINDOWING = (1ULL << 0) , RTE_BBDEV_FFT_CS_ADJUSTMENT = (1ULL << 1) , RTE_BBDEV_FFT_DFT_BYPASS = (1ULL << 2) , RTE_BBDEV_FFT_IDFT_BYPASS = (1ULL << 3) ,
  RTE_BBDEV_FFT_WINDOWING_BYPASS = (1ULL << 4) , RTE_BBDEV_FFT_POWER_MEAS = (1ULL << 5) , RTE_BBDEV_FFT_FP16_INPUT = (1ULL << 6) , RTE_BBDEV_FFT_FP16_OUTPUT = (1ULL << 7)
}
 
enum  rte_bbdev_op_cb_mode { RTE_BBDEV_TRANSPORT_BLOCK = 0 , RTE_BBDEV_CODE_BLOCK = 1 }
 
enum  rte_bbdev_op_type {
  RTE_BBDEV_OP_NONE , RTE_BBDEV_OP_TURBO_DEC , RTE_BBDEV_OP_TURBO_ENC , RTE_BBDEV_OP_LDPC_DEC ,
  RTE_BBDEV_OP_LDPC_ENC , RTE_BBDEV_OP_FFT
}
 
enum  
 

Functions

const char * rte_bbdev_op_type_str (enum rte_bbdev_op_type op_type)
 
struct rte_mempoolrte_bbdev_op_pool_create (const char *name, enum rte_bbdev_op_type type, unsigned int num_elements, unsigned int cache_size, int socket_id)
 
static int rte_bbdev_enc_op_alloc_bulk (struct rte_mempool *mempool, struct rte_bbdev_enc_op **ops, uint16_t num_ops)
 
static int rte_bbdev_dec_op_alloc_bulk (struct rte_mempool *mempool, struct rte_bbdev_dec_op **ops, uint16_t num_ops)
 
static __rte_experimental int rte_bbdev_fft_op_alloc_bulk (struct rte_mempool *mempool, struct rte_bbdev_fft_op **ops, uint16_t num_ops)
 
static void rte_bbdev_dec_op_free_bulk (struct rte_bbdev_dec_op **ops, unsigned int num_ops)
 
static void rte_bbdev_enc_op_free_bulk (struct rte_bbdev_enc_op **ops, unsigned int num_ops)
 
static __rte_experimental void rte_bbdev_fft_op_free_bulk (struct rte_bbdev_fft_op **ops, unsigned int num_ops)
 

Detailed Description

Defines wireless base band layer 1 operations and capabilities

Definition in file rte_bbdev_op.h.

Enumeration Type Documentation

◆ rte_bbdev_op_td_flag_bitmasks

Flags for turbo decoder operation and capability structure

Enumerator
RTE_BBDEV_TURBO_SUBBLOCK_DEINTERLEAVE 

If sub block de-interleaving is to be performed.

RTE_BBDEV_TURBO_CRC_TYPE_24B 

To use CRC Type 24B (otherwise use CRC Type 24A).

RTE_BBDEV_TURBO_EQUALIZER 

If turbo equalization is to be performed.

RTE_BBDEV_TURBO_SOFT_OUT_SATURATE 

If set, saturate soft output to +/-127

RTE_BBDEV_TURBO_HALF_ITERATION_EVEN 

Set to 1 to start iteration from even, else odd; one iteration = max_iteration + 0.5

RTE_BBDEV_TURBO_CONTINUE_CRC_MATCH 

If 0, TD stops after CRC matches; else if 1, runs to end of next odd iteration after CRC matches

RTE_BBDEV_TURBO_SOFT_OUTPUT 

Set if soft output is required to be output

RTE_BBDEV_TURBO_EARLY_TERMINATION 

Set to enable early termination mode

RTE_BBDEV_TURBO_DEC_INTERRUPTS 

Set if a device supports decoder dequeue interrupts

RTE_BBDEV_TURBO_POS_LLR_1_BIT_IN 

Set if positive LLR encoded input is supported. Positive LLR value represents the level of confidence for bit '1', and vice versa for bit '0'. This is mutually exclusive with RTE_BBDEV_TURBO_NEG_LLR_1_BIT_IN when used to formalize the input data format.

RTE_BBDEV_TURBO_NEG_LLR_1_BIT_IN 

Set if negative LLR encoded input is supported. Negative LLR value represents the level of confidence for bit '1', and vice versa for bit '0'. This is mutually exclusive with RTE_BBDEV_TURBO_POS_LLR_1_BIT_IN when used to formalize the input data format.

RTE_BBDEV_TURBO_POS_LLR_1_BIT_SOFT_OUT 

Set if positive LLR soft output is supported. Positive LLR value represents the level of confidence for bit '1', and vice versa for bit '0'. This is mutually exclusive with RTE_BBDEV_TURBO_NEG_LLR_1_BIT_SOFT_OUT when used to formalize the input data format.

RTE_BBDEV_TURBO_NEG_LLR_1_BIT_SOFT_OUT 

Set if negative LLR soft output is supported. Negative LLR value represents the level of confidence for bit '1', and vice versa for bit '0'. This is mutually exclusive with RTE_BBDEV_TURBO_POS_LLR_1_BIT_SOFT_OUT when used to formalize the input data format.

RTE_BBDEV_TURBO_MAP_DEC 

Set if driver supports flexible parallel MAP engine decoding. If not supported, num_maps (number of MAP engines) argument is unusable.

RTE_BBDEV_TURBO_DEC_SCATTER_GATHER 

Set if a device supports scatter-gather functionality

RTE_BBDEV_TURBO_DEC_TB_CRC_24B_KEEP 

Set to keep CRC24B bits appended while decoding. Only usable when decoding Transport Block mode.

RTE_BBDEV_TURBO_DEC_CRC_24B_DROP 

Set to drop CRC24B bits not to be appended while decoding.

Definition at line 62 of file rte_bbdev_op.h.

◆ rte_bbdev_op_te_flag_bitmasks

Flags for turbo encoder operation and capability structure

Enumerator
RTE_BBDEV_TURBO_RV_INDEX_BYPASS 

Ignore rv_index and set K0 = 0

RTE_BBDEV_TURBO_RATE_MATCH 

If rate matching is to be performed

RTE_BBDEV_TURBO_CRC_24B_ATTACH 

This bit must be set to enable CRC-24B generation

RTE_BBDEV_TURBO_CRC_24A_ATTACH 

This bit must be set to enable CRC-24A generation

RTE_BBDEV_TURBO_ENC_INTERRUPTS 

Set if a device supports encoder dequeue interrupts

RTE_BBDEV_TURBO_ENC_SCATTER_GATHER 

Set if a device supports scatter-gather functionality

Definition at line 132 of file rte_bbdev_op.h.

◆ rte_bbdev_op_ldpcdec_flag_bitmasks

Flags for LDPC decoder operation and capability structure

Enumerator
RTE_BBDEV_LDPC_CRC_TYPE_24A_CHECK 

Set for transport block CRC-24A checking

RTE_BBDEV_LDPC_CRC_TYPE_24B_CHECK 

Set for code block CRC-24B checking

RTE_BBDEV_LDPC_CRC_TYPE_24B_DROP 

Set to drop the last CRC bits decoding output

RTE_BBDEV_LDPC_CRC_TYPE_16_CHECK 

Set for transport block CRC-16 checking

RTE_BBDEV_LDPC_DEINTERLEAVER_BYPASS 

Set for bit-level de-interleaver bypass on Rx stream.

RTE_BBDEV_LDPC_HQ_COMBINE_IN_ENABLE 

Set for HARQ combined input stream enable.

RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE 

Set for HARQ combined output stream enable.

RTE_BBDEV_LDPC_DECODE_BYPASS 

Set for LDPC decoder bypass. RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE must be set.

RTE_BBDEV_LDPC_SOFT_OUT_ENABLE 

Set for soft-output stream enable

RTE_BBDEV_LDPC_SOFT_OUT_RM_BYPASS 

Set for Rate-Matching bypass on soft-out stream.

RTE_BBDEV_LDPC_SOFT_OUT_DEINTERLEAVER_BYPASS 

Set for bit-level de-interleaver bypass on soft-output stream.

RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE 

Set for iteration stopping on successful decode condition i.e. a successful syndrome check.

RTE_BBDEV_LDPC_DEC_INTERRUPTS 

Set if a device supports decoder dequeue interrupts.

RTE_BBDEV_LDPC_DEC_SCATTER_GATHER 

Set if a device supports scatter-gather functionality.

RTE_BBDEV_LDPC_HARQ_6BIT_COMPRESSION 

Set if a device supports input/output HARQ compression.

RTE_BBDEV_LDPC_LLR_COMPRESSION 

Set if a device supports input LLR compression.

RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_IN_ENABLE 

Set if a device supports HARQ input from device's internal memory.

RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_OUT_ENABLE 

Set if a device supports HARQ output to device's internal memory.

RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_LOOPBACK 

Set if a device supports loop-back access to HARQ internal memory. Intended for troubleshooting.

RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_FILLERS 

Set if a device includes LLR filler bits in the circular buffer for HARQ memory. If not set, it is assumed the filler bits are not in HARQ memory and handled directly by the LDPC decoder.

Definition at line 148 of file rte_bbdev_op.h.

◆ rte_bbdev_op_ldpcenc_flag_bitmasks

Flags for LDPC encoder operation and capability structure

Enumerator
RTE_BBDEV_LDPC_INTERLEAVER_BYPASS 

Set for bit-level interleaver bypass on output stream.

RTE_BBDEV_LDPC_RATE_MATCH 

If rate matching is to be performed

RTE_BBDEV_LDPC_CRC_24A_ATTACH 

Set for transport block CRC-24A attach

RTE_BBDEV_LDPC_CRC_24B_ATTACH 

Set for code block CRC-24B attach

RTE_BBDEV_LDPC_CRC_16_ATTACH 

Set for code block CRC-16 attach

RTE_BBDEV_LDPC_ENC_INTERRUPTS 

Set if a device supports encoder dequeue interrupts.

RTE_BBDEV_LDPC_ENC_SCATTER_GATHER 

Set if a device supports scatter-gather functionality.

RTE_BBDEV_LDPC_ENC_CONCATENATION 

Set if a device supports concatenation of non byte aligned output

Definition at line 205 of file rte_bbdev_op.h.

◆ rte_bbdev_op_fft_flag_bitmasks

Flags for FFT operation and capability structure.

Enumerator
RTE_BBDEV_FFT_WINDOWING 

Flexible windowing capability.

RTE_BBDEV_FFT_CS_ADJUSTMENT 

Flexible adjustment of Cyclic Shift time offset.

RTE_BBDEV_FFT_DFT_BYPASS 

Set for bypass the DFT and get directly into iDFT input.

RTE_BBDEV_FFT_IDFT_BYPASS 

Set for bypass the IDFT and get directly the DFT output.

RTE_BBDEV_FFT_WINDOWING_BYPASS 

Set for bypass time domain windowing.

RTE_BBDEV_FFT_POWER_MEAS 

Set for optional power measurement on DFT output.

RTE_BBDEV_FFT_FP16_INPUT 

Set if the input data used FP16 format.

RTE_BBDEV_FFT_FP16_OUTPUT 

Set if the output data uses FP16 format.

Definition at line 225 of file rte_bbdev_op.h.

◆ rte_bbdev_op_cb_mode

Flags for the Code Block/Transport block mode

Enumerator
RTE_BBDEV_TRANSPORT_BLOCK 

One operation is one or fraction of one transport block

RTE_BBDEV_CODE_BLOCK 

One operation is one code block mode

Definition at line 245 of file rte_bbdev_op.h.

◆ rte_bbdev_op_type

Different operation types supported by the device. The related macro RTE_BBDEV_OP_TYPE_SIZE_MAX can be used as an absolute maximum for notably sizing array while allowing for future enumeration insertion.

Enumerator
RTE_BBDEV_OP_NONE 

Dummy operation that does nothing

RTE_BBDEV_OP_TURBO_DEC 

Turbo decode

RTE_BBDEV_OP_TURBO_ENC 

Turbo encode

RTE_BBDEV_OP_LDPC_DEC 

LDPC decode

RTE_BBDEV_OP_LDPC_ENC 

LDPC encode

RTE_BBDEV_OP_FFT 

FFT

Definition at line 852 of file rte_bbdev_op.h.

◆ anonymous enum

anonymous enum

Bit indexes of possible errors reported through status field

Definition at line 863 of file rte_bbdev_op.h.

Function Documentation

◆ rte_bbdev_op_type_str()

const char * rte_bbdev_op_type_str ( enum rte_bbdev_op_type  op_type)

Converts queue operation type from enum to string

Parameters
op_typeOperation type as enum
Returns
Operation type as string or NULL if op_type is invalid

◆ rte_bbdev_op_pool_create()

struct rte_mempool * rte_bbdev_op_pool_create ( const char *  name,
enum rte_bbdev_op_type  type,
unsigned int  num_elements,
unsigned int  cache_size,
int  socket_id 
)

Creates a bbdev operation mempool

Parameters
namePool name.
typeOperation type, use RTE_BBDEV_OP_NONE for a pool which supports all operation types.
num_elementsNumber of elements in the pool.
cache_sizeNumber of elements to cache on an lcore, see rte_mempool_create() for further details about cache size.
socket_idSocket to allocate memory on.
Returns
  • Pointer to a mempool on success,
  • NULL pointer on failure.
Examples
examples/bbdev_app/main.c.

◆ rte_bbdev_enc_op_alloc_bulk()

static int rte_bbdev_enc_op_alloc_bulk ( struct rte_mempool mempool,
struct rte_bbdev_enc_op **  ops,
uint16_t  num_ops 
)
inlinestatic

Bulk allocate encode operations from a mempool with parameter defaults reset.

Parameters
mempoolOperation mempool, created by rte_bbdev_op_pool_create().
opsOutput array to place allocated operations
num_opsNumber of operations to allocate
Returns
  • 0 on success
  • EINVAL if invalid mempool is provided
Examples
examples/bbdev_app/main.c.

Definition at line 984 of file rte_bbdev_op.h.

◆ rte_bbdev_dec_op_alloc_bulk()

static int rte_bbdev_dec_op_alloc_bulk ( struct rte_mempool mempool,
struct rte_bbdev_dec_op **  ops,
uint16_t  num_ops 
)
inlinestatic

Bulk allocate decode operations from a mempool with parameter defaults reset.

Parameters
mempoolOperation mempool, created by rte_bbdev_op_pool_create().
opsOutput array to place allocated operations
num_opsNumber of operations to allocate
Returns
  • 0 on success
  • EINVAL if invalid mempool is provided
Examples
examples/bbdev_app/main.c.

Definition at line 1015 of file rte_bbdev_op.h.

◆ rte_bbdev_fft_op_alloc_bulk()

static __rte_experimental int rte_bbdev_fft_op_alloc_bulk ( struct rte_mempool mempool,
struct rte_bbdev_fft_op **  ops,
uint16_t  num_ops 
)
inlinestatic

Bulk allocate FFT operations from a mempool with default parameters.

Parameters
mempoolOperation mempool, created by rte_bbdev_op_pool_create.
opsOutput array to place allocated operations.
num_opsNumber of operations to allocate.
Returns
  • 0 on success.
  • EINVAL if invalid mempool is provided.

Definition at line 1047 of file rte_bbdev_op.h.

◆ rte_bbdev_dec_op_free_bulk()

static void rte_bbdev_dec_op_free_bulk ( struct rte_bbdev_dec_op **  ops,
unsigned int  num_ops 
)
inlinestatic

Free decode operation structures that were allocated by rte_bbdev_dec_op_alloc_bulk(). All structures must belong to the same mempool.

Parameters
opsOperation structures
num_opsNumber of structures
Examples
examples/bbdev_app/main.c.

Definition at line 1072 of file rte_bbdev_op.h.

◆ rte_bbdev_enc_op_free_bulk()

static void rte_bbdev_enc_op_free_bulk ( struct rte_bbdev_enc_op **  ops,
unsigned int  num_ops 
)
inlinestatic

Free encode operation structures that were allocated by rte_bbdev_enc_op_alloc_bulk(). All structures must belong to the same mempool.

Parameters
opsOperation structures
num_opsNumber of structures
Examples
examples/bbdev_app/main.c.

Definition at line 1089 of file rte_bbdev_op.h.

◆ rte_bbdev_fft_op_free_bulk()

static __rte_experimental void rte_bbdev_fft_op_free_bulk ( struct rte_bbdev_fft_op **  ops,
unsigned int  num_ops 
)
inlinestatic

Free encode operation structures that were allocated by rte_bbdev_fft_op_alloc_bulk. All structures must belong to the same mempool.

Parameters
opsOperation structures.
num_opsNumber of structures.

Definition at line 1107 of file rte_bbdev_op.h.