Re: [dpdk-dev] [PATCH v5 1/9] bbdev: add big endian processing data capability
From: Chautru, Nicolas <hidden>
Date: 2021-09-13 18:39:55
-----Original Message----- From: Nipun Gupta <redacted> Sent: Sunday, September 12, 2021 5:15 AM To: dev@dpdk.org; gakhil@marvell.com; Chautru, Nicolas [off-list ref] Cc: david.marchand@redhat.com; hemant.agrawal@nxp.com; Nipun Gupta [off-list ref] Subject: [PATCH v5 1/9] bbdev: add big endian processing data capability This patch intoduces a new capability of the bbdev device to process the LDPC data in big endian order.
Hi Gupta, As mentioned in previous patch iteration earlier this year I believe this is not really an operation flag but more a different device capability. ie. you would have the same formalism for all operation (5GDL, 5GUL, 4GDL, ...) for that PMD/hw and that is not something you will change dynamically as an option. I would suggest to add this under "struct rte_bbdev_driver_info" which can be used to capture device specific capability and information. In term of processing and operation, everything is the same except endianness assumption for the input/output data.
quoted hunk ↗ jump to hunk
Signed-off-by: Hemant Agrawal <redacted> Signed-off-by: Nipun Gupta <redacted> --- doc/guides/bbdevs/features/default.ini | 1 + doc/guides/prog_guide/bbdev.rst | 6 ++++++ lib/bbdev/rte_bbdev_op.h | 14 ++++++++++++-- 3 files changed, 19 insertions(+), 2 deletions(-)diff --git a/doc/guides/bbdevs/features/default.inib/doc/guides/bbdevs/features/default.ini index 5fe267a625..ae5aacf8f7 100644--- a/doc/guides/bbdevs/features/default.ini +++ b/doc/guides/bbdevs/features/default.ini@@ -14,3 +14,4 @@ LLR/HARQ Compression = External DDR Access = HW Accelerated = BBDEV API = +Big Endian Processing =diff --git a/doc/guides/prog_guide/bbdev.rstb/doc/guides/prog_guide/bbdev.rst index 9619280ffc..6540b514bb 100644--- a/doc/guides/prog_guide/bbdev.rst +++ b/doc/guides/prog_guide/bbdev.rst@@ -747,6 +747,9 @@ given below. |RTE_BBDEV_LDPC_ENC_CONCATENATION | | Set if a device supports concatenation of non byte aligned output | +------ --------------------------------------------------------------+ +|RTE_BBDEV_LDPC_ENC_BIG_ENDIAN | +| Set if a device supports Big Endian data processing | ++--------------------------------------------------------------------+ The structure passed for each LDPC encode operation is given below, withthe operation flags forming a bitmask in the ``op_flags`` field.@@ -942,6 +945,9 @@ given below. |RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_LOOPBACK | | Set if a device supports loopback access to HARQ internal memory | +--------------------------------------------------------------------+ +|RTE_BBDEV_LDPC_DEC_BIG_ENDIAN | +| Set if a device supports Big Endian data processing | ++--------------------------------------------------------------------+ The structure passed for each LDPC decode operation is given below, withthe operation flags forming a bitmask in the ``op_flags`` field.diff --git a/lib/bbdev/rte_bbdev_op.h b/lib/bbdev/rte_bbdev_op.h indexf946842727..9e9b5be81f 100644--- a/lib/bbdev/rte_bbdev_op.h +++ b/lib/bbdev/rte_bbdev_op.h@@ -186,7 +186,12 @@ enum rte_bbdev_op_ldpcdec_flag_bitmasks { * 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_INTERNAL_HARQ_MEMORY_FILLERS = (1ULL <<18) + RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_FILLERS = (1ULL << 18), + /** Set if a device supports Big Endian data processing. + * If not set Little Endian data processing is supported by + * default. + */ + RTE_BBDEV_LDPC_DEC_BIG_ENDIAN = (1ULL << 8) }; /** Flags for LDPC encoder operation and capability structure */ @@ -206,7 +211,12 @@ enum rte_bbdev_op_ldpcenc_flag_bitmasks { /** Set if a device supports scatter-gather functionality. */ RTE_BBDEV_LDPC_ENC_SCATTER_GATHER = (1ULL << 6), /** Set if a device supports concatenation of non byte aligned output */ - RTE_BBDEV_LDPC_ENC_CONCATENATION = (1ULL << 7) + RTE_BBDEV_LDPC_ENC_CONCATENATION = (1ULL << 7), + /** Set if a device supports Big Endian data processing + * If not set Little Endian data processing is supported by + * default. + */ + RTE_BBDEV_LDPC_ENC_BIG_ENDIAN = (1ULL << 8) }; /** Flags for the Code Block/Transport block mode */ -- 2.17.1