X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=doc%2Fguides%2Fprog_guide%2Fbbdev.rst;h=70fa01ada5360e4da13344424a097e75981618d3;hb=dd22740cc291568f354279f5c38eef4a1d1dd3a0;hp=ef05dcb4ccdce813b701a6cfbdc269213a423769;hpb=3f3f608142cf48048c31fda35bb3b3cc86f006f0;p=dpdk.git diff --git a/doc/guides/prog_guide/bbdev.rst b/doc/guides/prog_guide/bbdev.rst index ef05dcb4cc..70fa01ada5 100644 --- a/doc/guides/prog_guide/bbdev.rst +++ b/doc/guides/prog_guide/bbdev.rst @@ -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 framework currently only supports Turbo Code FEC function. +The framework currently only supports FEC function. 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]" - "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)" @@ -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 | +----------------+------------+-------------------------------------------------------+ -+ +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 | +----------------+------------+-------------------------------------------------------+ @@ -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) -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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -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_16_CHECK | +| Set for code block CRC-16 checking | ++--------------------------------------------------------------------+ |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 | +| 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 | @@ -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. +.. 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. @@ -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 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 @@ -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. -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