bbdev: add capability for CRC16 check

Adding a missing operation when CRC16
is being used for TB CRC check.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Tom Rix <trix@redhat.com>
This commit is contained in:
Nicolas Chautru 2021-09-07 18:15:36 -07:00 committed by Akhil Goyal
parent 2e7abb8bb8
commit cc360fd3f2
4 changed files with 26 additions and 16 deletions

View File

@ -167,6 +167,8 @@ op_ldpc_decoder_flag_strtoul(char *token, uint32_t *op_flag_value)
*op_flag_value = RTE_BBDEV_LDPC_CRC_TYPE_24B_CHECK; *op_flag_value = RTE_BBDEV_LDPC_CRC_TYPE_24B_CHECK;
else if (!strcmp(token, "RTE_BBDEV_LDPC_CRC_TYPE_24B_DROP")) else if (!strcmp(token, "RTE_BBDEV_LDPC_CRC_TYPE_24B_DROP"))
*op_flag_value = RTE_BBDEV_LDPC_CRC_TYPE_24B_DROP; *op_flag_value = RTE_BBDEV_LDPC_CRC_TYPE_24B_DROP;
else if (!strcmp(token, "RTE_BBDEV_LDPC_CRC_TYPE_16_CHECK"))
*op_flag_value = RTE_BBDEV_LDPC_CRC_TYPE_16_CHECK;
else if (!strcmp(token, "RTE_BBDEV_LDPC_DEINTERLEAVER_BYPASS")) else if (!strcmp(token, "RTE_BBDEV_LDPC_DEINTERLEAVER_BYPASS"))
*op_flag_value = RTE_BBDEV_LDPC_DEINTERLEAVER_BYPASS; *op_flag_value = RTE_BBDEV_LDPC_DEINTERLEAVER_BYPASS;
else if (!strcmp(token, "RTE_BBDEV_LDPC_HQ_COMBINE_IN_ENABLE")) else if (!strcmp(token, "RTE_BBDEV_LDPC_HQ_COMBINE_IN_ENABLE"))

View File

@ -891,6 +891,9 @@ given below.
|RTE_BBDEV_LDPC_CRC_TYPE_24B_DROP | |RTE_BBDEV_LDPC_CRC_TYPE_24B_DROP |
| Set to drop the last CRC bits decoding output | | 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 | |RTE_BBDEV_LDPC_DEINTERLEAVER_BYPASS |
| Set for bit-level de-interleaver bypass on input stream | | Set for bit-level de-interleaver bypass on input stream |
+--------------------------------------------------------------------+ +--------------------------------------------------------------------+

View File

@ -249,6 +249,9 @@ ABI Changes
``rte_security_ipsec_xform`` to allow applications to configure SA soft ``rte_security_ipsec_xform`` to allow applications to configure SA soft
and hard expiry limits. Limits can be either in number of packets or bytes. and hard expiry limits. Limits can be either in number of packets or bytes.
* bbdev: Added capability related to more comprehensive CRC options,
shifting values of the ``enum rte_bbdev_op_ldpcdec_flag_bitmasks``.
Known Issues Known Issues
------------ ------------

View File

@ -142,51 +142,53 @@ enum rte_bbdev_op_ldpcdec_flag_bitmasks {
RTE_BBDEV_LDPC_CRC_TYPE_24B_CHECK = (1ULL << 1), RTE_BBDEV_LDPC_CRC_TYPE_24B_CHECK = (1ULL << 1),
/** Set to drop the last CRC bits decoding output */ /** Set to drop the last CRC bits decoding output */
RTE_BBDEV_LDPC_CRC_TYPE_24B_DROP = (1ULL << 2), RTE_BBDEV_LDPC_CRC_TYPE_24B_DROP = (1ULL << 2),
/** Set for transport block CRC-16 checking */
RTE_BBDEV_LDPC_CRC_TYPE_16_CHECK = (1ULL << 3),
/** Set for bit-level de-interleaver bypass on Rx stream. */ /** Set for bit-level de-interleaver bypass on Rx stream. */
RTE_BBDEV_LDPC_DEINTERLEAVER_BYPASS = (1ULL << 3), RTE_BBDEV_LDPC_DEINTERLEAVER_BYPASS = (1ULL << 4),
/** Set for HARQ combined input stream enable. */ /** Set for HARQ combined input stream enable. */
RTE_BBDEV_LDPC_HQ_COMBINE_IN_ENABLE = (1ULL << 4), RTE_BBDEV_LDPC_HQ_COMBINE_IN_ENABLE = (1ULL << 5),
/** Set for HARQ combined output stream enable. */ /** Set for HARQ combined output stream enable. */
RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE = (1ULL << 5), RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE = (1ULL << 6),
/** Set for LDPC decoder bypass. /** Set for LDPC decoder bypass.
* RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE must be set. * RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE must be set.
*/ */
RTE_BBDEV_LDPC_DECODE_BYPASS = (1ULL << 6), RTE_BBDEV_LDPC_DECODE_BYPASS = (1ULL << 7),
/** Set for soft-output stream enable */ /** Set for soft-output stream enable */
RTE_BBDEV_LDPC_SOFT_OUT_ENABLE = (1ULL << 7), RTE_BBDEV_LDPC_SOFT_OUT_ENABLE = (1ULL << 8),
/** Set for Rate-Matching bypass on soft-out stream. */ /** Set for Rate-Matching bypass on soft-out stream. */
RTE_BBDEV_LDPC_SOFT_OUT_RM_BYPASS = (1ULL << 8), RTE_BBDEV_LDPC_SOFT_OUT_RM_BYPASS = (1ULL << 9),
/** Set for bit-level de-interleaver bypass on soft-output stream. */ /** Set for bit-level de-interleaver bypass on soft-output stream. */
RTE_BBDEV_LDPC_SOFT_OUT_DEINTERLEAVER_BYPASS = (1ULL << 9), RTE_BBDEV_LDPC_SOFT_OUT_DEINTERLEAVER_BYPASS = (1ULL << 10),
/** Set for iteration stopping on successful decode condition /** Set for iteration stopping on successful decode condition
* i.e. a successful syndrome check. * i.e. a successful syndrome check.
*/ */
RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE = (1ULL << 10), RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE = (1ULL << 11),
/** Set if a device supports decoder dequeue interrupts. */ /** Set if a device supports decoder dequeue interrupts. */
RTE_BBDEV_LDPC_DEC_INTERRUPTS = (1ULL << 11), RTE_BBDEV_LDPC_DEC_INTERRUPTS = (1ULL << 12),
/** Set if a device supports scatter-gather functionality. */ /** Set if a device supports scatter-gather functionality. */
RTE_BBDEV_LDPC_DEC_SCATTER_GATHER = (1ULL << 12), RTE_BBDEV_LDPC_DEC_SCATTER_GATHER = (1ULL << 13),
/** Set if a device supports input/output HARQ compression. */ /** Set if a device supports input/output HARQ compression. */
RTE_BBDEV_LDPC_HARQ_6BIT_COMPRESSION = (1ULL << 13), RTE_BBDEV_LDPC_HARQ_6BIT_COMPRESSION = (1ULL << 14),
/** Set if a device supports input LLR compression. */ /** Set if a device supports input LLR compression. */
RTE_BBDEV_LDPC_LLR_COMPRESSION = (1ULL << 14), RTE_BBDEV_LDPC_LLR_COMPRESSION = (1ULL << 15),
/** Set if a device supports HARQ input from /** Set if a device supports HARQ input from
* device's internal memory. * device's internal memory.
*/ */
RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_IN_ENABLE = (1ULL << 15), RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_IN_ENABLE = (1ULL << 16),
/** Set if a device supports HARQ output to /** Set if a device supports HARQ output to
* device's internal memory. * device's internal memory.
*/ */
RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_OUT_ENABLE = (1ULL << 16), RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_OUT_ENABLE = (1ULL << 17),
/** Set if a device supports loop-back access to /** Set if a device supports loop-back access to
* HARQ internal memory. Intended for troubleshooting. * HARQ internal memory. Intended for troubleshooting.
*/ */
RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_LOOPBACK = (1ULL << 17), RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_LOOPBACK = (1ULL << 18),
/** Set if a device includes LLR filler bits in the circular buffer /** 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 * for HARQ memory. If not set, it is assumed the filler bits are not
* in HARQ memory and handled directly by the LDPC decoder. * in HARQ memory and handled directly by the LDPC decoder.
*/ */
RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_FILLERS = (1ULL << 18) RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_FILLERS = (1ULL << 19)
}; };
/** Flags for LDPC encoder operation and capability structure */ /** Flags for LDPC encoder operation and capability structure */