The functional scope of the BBDEV library are those functions in relation to
the 3GPP Layer 1 signal processing (channel coding, modulation, ...).
-The framework currently only supports Turbo Code FEC function.
+The framework currently only supports FEC function.
Design Principles
"soft output","soft LLR output buffer (optional)"
"op_flags","bitmask of all active operation capabilities"
"rv_index","redundancy version index [0..3]"
- "iter_max","maximum number of iterations to perofrm in decode all CBs"
+ "iter_max","maximum number of iterations to perform in decode all CBs"
"iter_min","minimum number of iterations to perform in decoding all CBs"
"iter_count","number of iterations to performed in decoding all CBs"
"ext_scale","scale factor on extrinsic info (5 bits)"
|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 code block CRC-16 checking |
++--------------------------------------------------------------------+
|RTE_BBDEV_LDPC_DEINTERLEAVER_BYPASS |
| Set for bit-level de-interleaver bypass on input stream |
+--------------------------------------------------------------------+
+--------------------------------------------------------------------+
|RTE_BBDEV_LDPC_HARQ_6BIT_COMPRESSION |
| Set if a device supports input/output HARQ compression |
+| Data is packed as 6 bits by dropping and saturating the MSBs |
+--------------------------------------------------------------------+
|RTE_BBDEV_LDPC_LLR_COMPRESSION |
| Set if a device supports input LLR compression |
+| Data is packed as 6 bits by dropping and saturating the MSBs |
+--------------------------------------------------------------------+
|RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_IN_ENABLE |
| Set if a device supports HARQ input to device's internal memory |
then the HARQ is stored in memory internal to the device and not visible
to BBDEV.
+.. note::
+
+ More explicitly for a typical usage of HARQ retransmission
+ in a VRAN application using a HW PMD, there will be 2 cases.
+
+ For 1st transmission, only the HARQ output is enabled:
+
+ - the harq_combined_output.offset is provided to a given address.
+ ie. typically an integer index * 32K,
+ where the index is tracked by the application based on code block index
+ for a given UE and HARQ process.
+
+ - the related operation flag would notably include
+ RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE and RTE_BBDEV_LDPC_HARQ_6BIT_COMPRESSION.
+
+ - note that no explicit flush or reset of the memory is required.
+
+ For 2nd transmission, an input is also required to benefit from HARQ combination gain:
+
+ - the changes mentioned above are the same (note that rvIndex may be adjusted).
+
+ - the operation flag would additionally include the LDPC_HQ_COMBINE_IN_ENABLE flag.
+
+ - the harq_combined_input.offset must be set to the address of the related code block
+ (ie. same as the harq_combine_output index above for the same code block, HARQ process, UE).
+
+ - the harq_combined_input.length must be set to the length
+ which was provided back in the related harq_combined_output.length
+ when it has processed and dequeued (previous HARQ iteration).
+
+
The output mbuf data structures are expected to be allocated by the
application with enough room for the output data.
the code block size ``K``.
The first CB Virtual Circular Buffer (VCB) index is given by ``r`` but the
-the number of the remaining CB VCBs is calculated automatically by BBDEV
+number of the remaining CB VCBs is calculated automatically by BBDEV
and passed down to the driver.
The number of remaining CB VCBs should not be confused with ``c``, the