DPDK  21.02.0
Data Structures | Enumerations | Functions
rte_bbdev_op.h File Reference
#include <stdint.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_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_enc_op
 
struct  rte_bbdev_dec_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)
}
 
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_DEINTERLEAVER_BYPASS = (1ULL << 3),
  RTE_BBDEV_LDPC_HQ_COMBINE_IN_ENABLE = (1ULL << 4), RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE = (1ULL << 5), RTE_BBDEV_LDPC_DECODE_BYPASS = (1ULL << 6), RTE_BBDEV_LDPC_SOFT_OUT_ENABLE = (1ULL << 7),
  RTE_BBDEV_LDPC_SOFT_OUT_RM_BYPASS = (1ULL << 8), RTE_BBDEV_LDPC_SOFT_OUT_DEINTERLEAVER_BYPASS = (1ULL << 9), RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE = (1ULL << 10), RTE_BBDEV_LDPC_DEC_INTERRUPTS = (1ULL << 11),
  RTE_BBDEV_LDPC_DEC_SCATTER_GATHER = (1ULL << 12), RTE_BBDEV_LDPC_HARQ_6BIT_COMPRESSION = (1ULL << 13), RTE_BBDEV_LDPC_LLR_COMPRESSION = (1ULL << 14), RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_IN_ENABLE = (1ULL << 15),
  RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_OUT_ENABLE = (1ULL << 16), RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_LOOPBACK = (1ULL << 17), RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_FILLERS = (1ULL << 18)
}
 
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_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_TYPE_COUNT
}
 
enum  
 

Functions

__rte_experimental const char * rte_bbdev_op_type_str (enum rte_bbdev_op_type op_type)
 
__rte_experimental 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 __rte_experimental int rte_bbdev_enc_op_alloc_bulk (struct rte_mempool *mempool, struct rte_bbdev_enc_op **ops, uint16_t num_ops)
 
static __rte_experimental int rte_bbdev_dec_op_alloc_bulk (struct rte_mempool *mempool, struct rte_bbdev_dec_op **ops, uint16_t num_ops)
 
static __rte_experimental void rte_bbdev_dec_op_free_bulk (struct rte_bbdev_dec_op **ops, unsigned int num_ops)
 
static __rte_experimental void rte_bbdev_enc_op_free_bulk (struct rte_bbdev_enc_op **ops, unsigned int num_ops)
 

Detailed Description

Defines wireless base band layer 1 operations and capabilities

Warning
EXPERIMENTAL: this API may change without prior notice

Definition in file rte_bbdev_op.h.

Enumeration Type Documentation

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 Blocks (code_block_mode = 0).

Definition at line 55 of file rte_bbdev_op.h.

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 122 of file rte_bbdev_op.h.

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_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 138 of file rte_bbdev_op.h.

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 193 of file rte_bbdev_op.h.

Different operation types supported by the device

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_TYPE_COUNT 

Count of different op types

Definition at line 735 of file rte_bbdev_op.h.

anonymous enum

Bit indexes of possible errors reported through status field

Definition at line 745 of file rte_bbdev_op.h.

Function Documentation

__rte_experimental 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_experimental 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.
static __rte_experimental 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 856 of file rte_bbdev_op.h.

static __rte_experimental 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 893 of file rte_bbdev_op.h.

static __rte_experimental 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 926 of file rte_bbdev_op.h.

static __rte_experimental 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 944 of file rte_bbdev_op.h.