rte_bbdev_op.h(3)

πŸ’– rte_bbdev_op.h πŸ’–

okay so this one is <pink>rte_bbdev_op.h</pink> from the Library Functions Manual, section 3, and bestie… sit down, grab a boba, hydrate. This is the header that defines the wireless base band layer 1 operations and capabilities. It's a big one. We're taking it slow. 🫢


✨ NAME ✨

rte_bbdev_op.h β€” the header of all headers for base band ops πŸ’…


✨ SYNOPSIS ✨

first things first, the includes, because obviously:

#include <stdint.h>
#include <rte_compat.h>
#include <rte_common.h>
#include <rte_mbuf.h>
#include <rte_memory.h>
#include <rte_mempool.h>

πŸŽ€ Data Structures πŸŽ€

the way this file is stacked with structs?? not me counting them, but there's literally twenty-five of them, periodt:

  • 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_mldts
  • 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_op_cap_mld
  • struct rte_bbdev_enc_op
  • struct rte_bbdev_dec_op
  • struct rte_bbdev_fft_op
  • struct rte_bbdev_mldts_op
  • struct rte_bbdev_op_cap

like… the turbo ones, the ldpc ones, the fft one, the mldts one. it's giving full coverage and I'm obsessed. 🌸


🧚 Enumerations 🧚

okay this is the part where the flags live and every single one matters, so I'm listing them ALL. no skipping. we do not skip here. πŸŽ€

  • enum rte_bbdev_op_td_flag_bitmasks β€” the turbo decode flag bits, bestie, and yeah there's no (1ULL << 8) in there, that's on purpose, iykyk:
    • 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 β€” turbo encode flags, the lil sister of the one above πŸ’œ:
    • 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 β€” LDPC decode flags, and there's twenty-one of them so buckle up πŸ¦‹:
    • 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)
    • RTE_BBDEV_LDPC_HARQ_4BIT_COMPRESSION = (1ULL << 20)
  • enum rte_bbdev_op_ldpcenc_flag_bitmasks β€” LDPC encode flags, all eight of them, slay ✨:
    • 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 β€” FFT flags, twelve of them, all the vibes 🌈:
    • 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)
    • RTE_BBDEV_FFT_TIMING_OFFSET_PER_CS = (1ULL << 8)
    • RTE_BBDEV_FFT_TIMING_ERROR = (1ULL << 9)
    • RTE_BBDEV_FFT_DEWINDOWING = (1ULL << 10)
    • RTE_BBDEV_FFT_FREQ_RESAMPLING = (1ULL << 11)
  • enum rte_bbdev_op_mldts_flag_bitmasks β€” just the one flag, she's lowkey minimal and I respect it πŸ™ˆ:
    • RTE_BBDEV_MLDTS_REP = (1ULL << 0)
  • enum rte_bbdev_op_cb_mode β€” code block mode, two moods only:
    • RTE_BBDEV_TRANSPORT_BLOCK = 0
    • RTE_BBDEV_CODE_BLOCK = 1
  • enum rte_bbdev_op_type β€” the operation types, no values assigned so they just vibe in order πŸ‘‘:
    • 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
    • RTE_BBDEV_OP_MLDTS
  • enum β€” and then there's literally just… an unnamed enum. no name, no members listed. she's mysterious. she's that girl. πŸ’€

πŸ’… Functions πŸ’…

the actual doing-things part, bestie. here's every single one:

  • const char * rte_bbdev_op_type_str(enum rte_bbdev_op_type op_type)
  • 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)
  • static int rte_bbdev_enc_op_alloc_bulk(struct rte_mempool *mempool, struct rte_bbdev_enc_op **ops, unsigned int num_ops)
  • static int rte_bbdev_dec_op_alloc_bulk(struct rte_mempool *mempool, struct rte_bbdev_dec_op **ops, unsigned int num_ops)
  • static int rte_bbdev_fft_op_alloc_bulk(struct rte_mempool *mempool, struct rte_bbdev_fft_op **ops, unsigned int num_ops)
  • static int rte_bbdev_mldts_op_alloc_bulk(struct rte_mempool *mempool, struct rte_bbdev_mldts_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 void rte_bbdev_fft_op_free_bulk(struct rte_bbdev_fft_op **ops, unsigned int num_ops)
  • static void rte_bbdev_mldts_op_free_bulk(struct rte_bbdev_mldts_op **ops, unsigned int num_ops)

notice how the mldts ones take uint16_t num_ops while everybody else is on unsigned int?? yeah. that's just how she is. 🫢


🌸 Detailed Description 🌸

Defines wireless base band layer 1 operations and capabilities

and that's the whole description. short, sweet, iconic. also, for the record:

Definition in file rte_bbdev_op.h. πŸŽ€


and we're only just getting started, because the structs themselves are…

✨ Enumeration Type Documentation ✨


enum rte_bbdev_op_td_flag_bitmasks πŸ¦‹

Flags for turbo decoder operation and capability structure

✨ Enumerator ✨

  • RTE_BBDEV_TURBO_SUBBLOCK_DEINTERLEAVE β€” set when sub block de-interleaving needs to be performed. πŸ’«
  • RTE_BBDEV_TURBO_CRC_TYPE_24B β€” go with CRC Type 24B; if not, it's CRC Type 24A. πŸŽ€
  • RTE_BBDEV_TURBO_EQUALIZER β€” set when turbo equalization needs to be performed. 🌸
  • RTE_BBDEV_TURBO_SOFT_OUT_SATURATE β€” if set, soft output gets saturated 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, it runs to the end of the 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. A 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. A 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. A 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. A 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 it's not supported, the 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 so they're not appended while decoding. πŸ—‘οΈ

Definition at line 67 of file rte_bbdev_op.h.


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


enum 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. 🧩
  • RTE_BBDEV_LDPC_HARQ_4BIT_COMPRESSION β€” set if a device supports input/output HARQ 4bits compression. πŸ—œοΈ

Definition at line 153 of file rte_bbdev_op.h.


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


enum 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. πŸ“€
  • RTE_BBDEV_FFT_TIMING_OFFSET_PER_CS β€” flexible adjustment of Timing offset adjustment per CS. ⏱️
  • RTE_BBDEV_FFT_TIMING_ERROR β€” flexible adjustment of Timing error correction per CS. πŸ› οΈ
  • RTE_BBDEV_FFT_DEWINDOWING β€” set for optional frequency domain dewindowing. πŸͺŸ
  • RTE_BBDEV_FFT_FREQ_RESAMPLING β€” flexible adjustment of frequency resampling mode. πŸŽ›οΈ

Definition at line 232 of file rte_bbdev_op.h.


enum rte_bbdev_op_mldts_flag_bitmasks πŸ¦‹

Flags for MLDTS operation and capability structure

✨ Enumerator ✨

  • RTE_BBDEV_MLDTS_REP β€” set if the device supports C/R repetition options. πŸ”

Definition at line 260 of file rte_bbdev_op.h.


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


enum 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. 🌈
  • RTE_BBDEV_OP_MLDTS β€” MLD-TS. πŸ›°οΈ

Definition at line 930 of file rte_bbdev_op.h.


anonymous enum 🫢

Bit indexes of possible errors reported through status field

Definition at line 942 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)

okay so bestie, this one is your little translator bestie πŸ’… it takes a queue operation type and turns that enum into a string, so you can actually print it and be like "oh THAT'S what it was" instead of staring at a number like πŸ‘οΈπŸ‘„πŸ‘οΈ

Parameters

  • op_type β€” the operation type, but as an enum obviously

Returns

  • The operation type as a string ✨ β€” OR NULL if op_type is invalid πŸ™ˆ like it literally cannot find that enum's vibe, so it just hands you back nothing

✨ 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)

this creates a bbdev operation mempool πŸŽ€ it's the pool your ops live in, and honestly every other function in this section is obsessed with it because they ALL need one. main character energy, no cap.

Parameters

  • name β€” the pool's name 🏷️
  • type β€” the operation type. here's the trick bestie: use RTE_BBDEV_OP_NONE if you want a pool that supports all operation types ✨ (yes, all of them, she's versatile)
  • num_elements β€” how many elements fit in the pool
  • cache_size β€” how many elements get cached on an lcore 🧚 for further details about cache size, go check rte_mempool_create() β€” that's where the tea is
  • socket_id β€” which socket to allocate the memory on

Returns

  • Pointer to a mempool on success 🫢
  • NULL pointer on failure πŸ’€

✨ rte_bbdev_enc_op_alloc_bulk ✨

int rte_bbdev_enc_op_alloc_bulk (struct rte_mempool * mempool, struct rte_bbdev_enc_op ** ops, unsigned int num_ops)

[inline], [static]

bulk allocates encode operations from a mempool, with parameter defaults reset 🧼 like a fresh start, a clean slate, a little reset moment for your ops

Parameters

  • mempool β€” operation mempool, and it has to be one created by rte_bbdev_op_pool_create()
  • ops β€” output array where the allocated operations get dropped
  • num_ops β€” how many operations you wanna allocate

Returns

  • 0 on success ✨
  • EINVAL if an invalid mempool is provided 😭

Definition at line 1076 of file rte_bbdev_op.h.


✨ rte_bbdev_dec_op_alloc_bulk ✨

int rte_bbdev_dec_op_alloc_bulk (struct rte_mempool * mempool, struct rte_bbdev_dec_op ** ops, unsigned int num_ops)

[inline], [static]

same energy as above bestie, but this one's for decode operations πŸ’… bulk allocate decode ops from a mempool, parameter defaults fully reset

Parameters

  • mempool β€” operation mempool, created by rte_bbdev_op_pool_create()
  • ops β€” output array to place the allocated operations
  • num_ops β€” number of operations to allocate

Returns

  • 0 on success ✨
  • EINVAL if invalid mempool is provided πŸ™ˆ

Definition at line 1107 of file rte_bbdev_op.h.


✨ rte_bbdev_fft_op_alloc_bulk ✨

int rte_bbdev_fft_op_alloc_bulk (struct rte_mempool * mempool, struct rte_bbdev_fft_op ** ops, unsigned int num_ops)

[inline], [static]

and now for the FFT girlies 🌸 bulk allocate FFT operations from a mempool, with default parameters πŸ¦‹

Parameters

  • mempool β€” operation mempool, created by rte_bbdev_op_pool_create.
  • ops β€” output array to place allocated operations.
  • num_ops β€” number of operations to allocate.
watch the punctuation bestie, the originals here end with periods and I am NOT about to lose them on my watch πŸ’–

Returns

  • 0 on success.
  • EINVAL if invalid mempool is provided.

Definition at line 1138 of file rte_bbdev_op.h.


✨ rte_bbdev_mldts_op_alloc_bulk ✨

int rte_bbdev_mldts_op_alloc_bulk (struct rte_mempool * mempool, struct rte_bbdev_mldts_op ** ops, uint16_t num_ops)

[inline], [static]

MLD operations, bulk allocated from a mempool, parameter defaults reset πŸŽ€ (and yes, num_ops here is a uint16_t β€” she's built different, literally, check the signature iykyk)

Parameters

  • mempool β€” operation mempool, created by rte_bbdev_op_pool_create.
  • ops β€” output array to place allocated operations.
  • num_ops β€” number of operations to allocate.

Returns

  • 0 on success.
  • EINVAL if invalid mempool is provided.

Definition at line 1167 of file rte_bbdev_op.h.


✨ rte_bbdev_dec_op_free_bulk ✨

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

[inline], [static]

free those decode operation structures that were allocated by rte_bbdev_dec_op_alloc_bulk() 🫢

⚠️ real talk: all structures must belong to the same mempool. not some of them. all of them. don't mix pools bestie, that's not a vibe πŸ’€

Parameters

  • ops β€” operation structures
  • num_ops β€” number of structures

Definition at line 1192 of file rte_bbdev_op.h.


✨ rte_bbdev_enc_op_free_bulk ✨

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

[inline], [static]

frees the encode operation structures that were allocated by rte_bbdev_enc_op_alloc_bulk() ✨ and again: all structures must belong to the same mempool πŸ‘‘

Parameters

  • ops β€” operation structures
  • num_ops β€” number of structures

Definition at line 1209 of file rte_bbdev_op.h.


✨ rte_bbdev_fft_op_free_bulk ✨

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

[inline], [static]

frees encode operation structures that were allocated by rte_bbdev_fft_op_alloc_bulk 🌈 (yes bestie, the original literally says "encode operation structures" here β€” I'm not fixing it, I'm reporting it 😭) and all structures must belong to the same mempool, as always πŸ’…

Parameters

  • ops β€” operation structures.
  • num_ops β€” number of structures.

Definition at line 1226 of file rte_bbdev_op.h.


✨ rte_bbdev_mldts_op_free_bulk ✨

void rte_bbdev_mldts_op_free_bulk (struct rte_bbdev_mldts_op ** ops, unsigned int num_ops)

[inline], [static]

frees encode operation structures that were allocated by rte_bbdev_mldts_op_alloc_bulk() 🧚 (again with the "encode" wording, I'm just the messenger πŸ“) β€” and obviously, all structures must belong to the same mempool πŸ’œ

Parameters

  • ops β€” operation structures
  • num_ops β€” number of structures

Definition at line 1243 of file rte_bbdev_op.h.


πŸ‘‘ Author πŸ‘‘

Generated automatically by Doxygen for DPDK from the source code πŸ€–βœ¨ like it literally wrote itself, iconic behaviour, we love a self-aware doc


aaaand that's the whole thing bestie, you made it to the end of part 3 πŸŽ‰πŸ¦‹ this page is from DPDK Version 25.11.3 and it's the rte_bbdev_op.h(3) manual page, so yeah β€” go forth, allocate your ops in bulk, free them in bulk, and keep every single one of them in the same mempool. periodt πŸ’…πŸ’–πŸŒΈ

πŸ“¦ where this page comes from