ethdev: introduce shared Rx queue
[dpdk.git] / doc / guides / prog_guide / bbdev.rst
index ef05dcb..70fa01a 100644 (file)
@@ -13,7 +13,7 @@ optimized libraries to appear as virtual bbdev devices.
 The functional scope of the BBDEV library are those functions in relation to
 the 3GPP Layer 1 signal processing (channel coding, modulation, ...).
 
 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
 
 
 Design Principles
@@ -639,7 +639,7 @@ optionally the ``soft_output`` mbuf data pointers.
    "soft output","soft LLR output buffer (optional)"
    "op_flags","bitmask of all active operation capabilities"
    "rv_index","redundancy version index [0..3]"
    "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)"
    "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)"
@@ -809,7 +809,7 @@ The LDPC encode parameters are set out in the table below.
 +----------------+------------+-------------------------------------------------------+
 |                |r           |index of the first CB in the inbound mbuf data         |
 +----------------+------------+-------------------------------------------------------+
 +----------------+------------+-------------------------------------------------------+
 |                |r           |index of the first CB in the inbound mbuf data         |
 +----------------+------------+-------------------------------------------------------+
-+                +c_ab        +number of CBs that use Ea before switching to Eb       |
+|                |c_ab        |number of CBs that use Ea before switching to Eb       |
 +----------------+------------+-------------------------------------------------------+
 |                |ea          |Ea, length of the RM output sequence in bits, r < cab  |
 +----------------+------------+-------------------------------------------------------+
 +----------------+------------+-------------------------------------------------------+
 |                |ea          |Ea, length of the RM output sequence in bits, r < cab  |
 +----------------+------------+-------------------------------------------------------+
@@ -865,8 +865,9 @@ calculated by BBDEV before signalling to the driver.
 The number of CBs in the group should not be confused with ``c``, the
 total number of CBs in the full TB (``C`` as per 3GPP TS 38.212 section 5.2.2)
 
 The number of CBs in the group should not be confused with ``c``, the
 total number of CBs in the full TB (``C`` as per 3GPP TS 38.212 section 5.2.2)
 
-Figure 13.1 above showing the Turbo encoding of CBs using BBDEV
-interface in TB-mode is also valid for LDPC encode.
+Figure :numref:`figure_turbo_tb_encode` above
+showing the Turbo encoding of CBs using BBDEV interface in TB-mode
+is also valid for LDPC encode.
 
 BBDEV LDPC Decode Operation
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 BBDEV LDPC Decode Operation
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -890,6 +891,9 @@ given below.
 |RTE_BBDEV_LDPC_CRC_TYPE_24B_DROP                                    |
 | Set to drop the last CRC bits decoding output                      |
 +--------------------------------------------------------------------+
 |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_DEINTERLEAVER_BYPASS                                 |
 | Set for bit-level de-interleaver bypass on input stream            |
 +--------------------------------------------------------------------+
@@ -926,9 +930,11 @@ given below.
 +--------------------------------------------------------------------+
 |RTE_BBDEV_LDPC_HARQ_6BIT_COMPRESSION                                |
 | Set if a device supports input/output HARQ compression             |
 +--------------------------------------------------------------------+
 |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                     |
 +--------------------------------------------------------------------+
 |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    |
 +--------------------------------------------------------------------+
 |RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_IN_ENABLE                       |
 | Set if a device supports HARQ input to device's internal memory    |
@@ -1048,6 +1054,37 @@ capability RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_OUT_ENABLE is set
 then the HARQ is stored in memory internal to the device and not visible
 to BBDEV.
 
 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 output mbuf data structures are expected to be allocated by the
 application with enough room for the output data.
 
@@ -1068,7 +1105,7 @@ The mbuf ``length`` is inclusive of CRC24A/B where present and is equal
 the code block size ``K``.
 
 The first CB Virtual Circular Buffer (VCB) index is given by ``r`` but the
 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
 and passed down to the driver.
 
 The number of remaining CB VCBs should not be confused with ``c``, the
@@ -1077,8 +1114,9 @@ total number of CBs in the full TB (``C`` as per 3GPP TS 38.212 section 5.2.2)
 The ``length`` is total size of the CBs inclusive of any CRC24A and CRC24B in
 case they were appended by the application.
 
 The ``length`` is total size of the CBs inclusive of any CRC24A and CRC24B in
 case they were appended by the application.
 
-Figure 13.2 above showing the Turbo decoding of CBs using BBDEV
-interface in TB-mode is also valid for LDPC decode.
+Figure :numref:`figure_turbo_tb_decode` above
+showing the Turbo decoding of CBs using BBDEV interface in TB-mode
+is also valid for LDPC decode.
 
 
 Sample code
 
 
 Sample code