* [PATCH v2 0/5] bbdev: API extension for 23.11
@ 2023-06-15 16:48 Nicolas Chautru
2023-06-15 16:48 ` [PATCH v2 1/5] bbdev: add operation type for MLDTS procession Nicolas Chautru
` (8 more replies)
0 siblings, 9 replies; 22+ messages in thread
From: Nicolas Chautru @ 2023-06-15 16:48 UTC (permalink / raw)
To: dev, maxime.coquelin
Cc: trix, hemant.agrawal, david.marchand, hernan.vargas, Nicolas Chautru
v2: moving the new mld functions at the end of struct rte_bbdev to avoid
ABI offset changes based on feedback with Maxime.
Adding a commit to waive the FFT ABI warning since that experimental function
could break ABI (let me know if preferred to be merged with the FFT
commit causing the FFT change).
Including v1 for extending the bbdev api for 23.11.
The new MLD-TS is expected to be non ABI compatible, the other ones
should not break ABI.
I will send a deprecation notice in parallel.
This introduces a new operation (on top of FEC and FFT) to support
equalization for MLD-TS. There also more modular API extension for
existing FFT and FEC operation.
Thanks
Nic
Nicolas Chautru (5):
bbdev: add operation type for MLDTS procession
bbdev: add new capabilities for FFT processing
bbdev: add new capability for FEC 5G UL processing
bbdev: improving error handling for queue configuration
devtools: ignore changes into bbdev experimental API
devtools/libabigail.abignore | 4 +-
doc/guides/prog_guide/bbdev.rst | 83 ++++++++++++++++++
lib/bbdev/rte_bbdev.c | 26 +++---
lib/bbdev/rte_bbdev.h | 76 +++++++++++++++++
lib/bbdev/rte_bbdev_op.h | 143 +++++++++++++++++++++++++++++++-
lib/bbdev/version.map | 5 ++
6 files changed, 323 insertions(+), 14 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v2 1/5] bbdev: add operation type for MLDTS procession
2023-06-15 16:48 [PATCH v2 0/5] bbdev: API extension for 23.11 Nicolas Chautru
@ 2023-06-15 16:48 ` Nicolas Chautru
2023-09-18 15:03 ` Maxime Coquelin
2023-06-15 16:48 ` [PATCH v2 2/5] bbdev: add new capabilities for FFT processing Nicolas Chautru
` (7 subsequent siblings)
8 siblings, 1 reply; 22+ messages in thread
From: Nicolas Chautru @ 2023-06-15 16:48 UTC (permalink / raw)
To: dev, maxime.coquelin
Cc: trix, hemant.agrawal, david.marchand, hernan.vargas, Nicolas Chautru
Extended bbdev operations to support MLDTS based operations.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
---
doc/guides/prog_guide/bbdev.rst | 53 +++++++++++++++
lib/bbdev/rte_bbdev.c | 11 ++-
lib/bbdev/rte_bbdev.h | 76 +++++++++++++++++++++
lib/bbdev/rte_bbdev_op.h | 116 +++++++++++++++++++++++++++++++-
lib/bbdev/version.map | 5 ++
5 files changed, 259 insertions(+), 2 deletions(-)
diff --git a/doc/guides/prog_guide/bbdev.rst b/doc/guides/prog_guide/bbdev.rst
index 549f1d002a..8e384015ee 100644
--- a/doc/guides/prog_guide/bbdev.rst
+++ b/doc/guides/prog_guide/bbdev.rst
@@ -1165,6 +1165,59 @@ either as 2 INT16 or as 2 FP16 based when the option supported.
The data layout is based on contiguous concatenation of output data
first by cyclic shift then by antenna.
+BBDEV MLD-TS Operation
+~~~~~~~~~~~~~~~~~~~~~~
+
+This operation allows to run the Tree Search (TS) portion of a Maximum Likelihood processing (MLD).
+
+This alternate equalization option accelerates the exploration of the best combination of
+transmitted symbols across layers minimizing the Euclidean distance between the received and
+reconstructed signal, then generates the LLRs to be used by the LDPC Decoder.
+The input is the results of the Q R decomposition: Q^Hy signal and R matrix.
+
+The structure passed for each MLD-TS operation is given below,
+with the operation flags forming a bitmask in the ``op_flags`` field.
+
+ **NOTE:** The actual operation flags that may be used with a specific
+ bbdev PMD are dependent on the driver capabilities as reported via
+ ``rte_bbdev_info_get()``, and may be a subset of those below.
+
+.. literalinclude:: ../../../lib/bbdev/rte_bbdev_op.h
+ :language: c
+ :start-after: Structure rte_bbdev_op_mldts 8<
+ :end-before: >8 End of structure rte_bbdev_op_mldts.
+
++--------------------------------------------------------------------+
+|Description of MLD-TS capability flags |
++====================================================================+
+|RTE_BBDEV_MLDTS_REP |
+| Set if the option to use repeated data from R channel is supported |
++--------------------------------------------------------------------+
+
+The MLD-TS parameters are set out in the table below.
+
++-------------------------+--------------------------------------------------------------+
+|Parameter |Description |
++=========================+==============================================================+
+|qhy_input |input data qHy |
++-------------------------+--------------------------------------------------------------+
+|r_input |input data R triangular matrix |
++-------------------------+--------------------------------------------------------------+
+|output |output data (LLRs) |
++-------------------------+--------------------------------------------------------------+
+|op_flags |bitmask of all active operation capabilities |
++-------------------------+--------------------------------------------------------------+
+|num_rbs |number of Resource Blocks |
++-------------------------+--------------------------------------------------------------+
+|num_layers |number of overlapping layers |
++-------------------------+--------------------------------------------------------------+
+|q_m |array of modulation order for each layer |
++-------------------------+--------------------------------------------------------------+
+|r_rep |optional row repetition for the R matrix (subcarriers) |
++-------------------------+--------------------------------------------------------------+
+|c_rep |optional column repetition for the R matrix (symbols) |
++-------------------------+--------------------------------------------------------------+
+
Sample code
-----------
diff --git a/lib/bbdev/rte_bbdev.c b/lib/bbdev/rte_bbdev.c
index 1521cdbc53..26fc077bdc 100644
--- a/lib/bbdev/rte_bbdev.c
+++ b/lib/bbdev/rte_bbdev.c
@@ -24,7 +24,7 @@
#define DEV_NAME "BBDEV"
/* Number of supported operation types in *rte_bbdev_op_type*. */
-#define BBDEV_OP_TYPE_COUNT 6
+#define BBDEV_OP_TYPE_COUNT 7
/* BBDev library logging ID */
RTE_LOG_REGISTER_DEFAULT(bbdev_logtype, NOTICE);
@@ -857,6 +857,9 @@ get_bbdev_op_size(enum rte_bbdev_op_type type)
case RTE_BBDEV_OP_FFT:
result = sizeof(struct rte_bbdev_fft_op);
break;
+ case RTE_BBDEV_OP_MLDTS:
+ result = sizeof(struct rte_bbdev_mldts_op);
+ break;
default:
break;
}
@@ -884,6 +887,10 @@ bbdev_op_init(struct rte_mempool *mempool, void *arg, void *element,
struct rte_bbdev_fft_op *op = element;
memset(op, 0, mempool->elt_size);
op->mempool = mempool;
+ } else if (type == RTE_BBDEV_OP_MLDTS) {
+ struct rte_bbdev_mldts_op *op = element;
+ memset(op, 0, mempool->elt_size);
+ op->mempool = mempool;
}
}
@@ -1135,6 +1142,7 @@ rte_bbdev_op_type_str(enum rte_bbdev_op_type op_type)
"RTE_BBDEV_OP_LDPC_DEC",
"RTE_BBDEV_OP_LDPC_ENC",
"RTE_BBDEV_OP_FFT",
+ "RTE_BBDEV_OP_MLDTS",
};
if (op_type < BBDEV_OP_TYPE_COUNT)
@@ -1184,3 +1192,4 @@ rte_bbdev_enqueue_status_str(enum rte_bbdev_enqueue_status status)
rte_bbdev_log(ERR, "Invalid enqueue status");
return NULL;
}
+
diff --git a/lib/bbdev/rte_bbdev.h b/lib/bbdev/rte_bbdev.h
index 52f6ed9b01..a5bcc09f10 100644
--- a/lib/bbdev/rte_bbdev.h
+++ b/lib/bbdev/rte_bbdev.h
@@ -438,6 +438,12 @@ typedef uint16_t (*rte_bbdev_enqueue_fft_ops_t)(
struct rte_bbdev_fft_op **ops,
uint16_t num);
+/** @internal Enqueue MLD-TS operations for processing on queue of a device. */
+typedef uint16_t (*rte_bbdev_enqueue_mldts_ops_t)(
+ struct rte_bbdev_queue_data *q_data,
+ struct rte_bbdev_mldts_op **ops,
+ uint16_t num);
+
/** @internal Dequeue encode operations from a queue of a device. */
typedef uint16_t (*rte_bbdev_dequeue_enc_ops_t)(
struct rte_bbdev_queue_data *q_data,
@@ -453,6 +459,11 @@ typedef uint16_t (*rte_bbdev_dequeue_fft_ops_t)(
struct rte_bbdev_queue_data *q_data,
struct rte_bbdev_fft_op **ops, uint16_t num);
+/** @internal Dequeue MLDTS operations from a queue of a device. */
+typedef uint16_t (*rte_bbdev_dequeue_mldts_ops_t)(
+ struct rte_bbdev_queue_data *q_data,
+ struct rte_bbdev_mldts_op **ops, uint16_t num);
+
#define RTE_BBDEV_NAME_MAX_LEN 64 /**< Max length of device name */
/**
@@ -512,6 +523,10 @@ struct __rte_cache_aligned rte_bbdev {
/** User application callback for interrupts if present */
struct rte_bbdev_cb_list list_cbs;
struct rte_intr_handle *intr_handle; /**< Device interrupt handle */
+ /** Enqueue MLD-TS function */
+ rte_bbdev_enqueue_mldts_ops_t enqueue_mldts_ops;
+ /** Dequeue MLD-TS function */
+ rte_bbdev_dequeue_mldts_ops_t dequeue_mldts_ops;
};
/** @internal array of all devices */
@@ -668,6 +683,36 @@ rte_bbdev_enqueue_fft_ops(uint16_t dev_id, uint16_t queue_id,
return dev->enqueue_fft_ops(q_data, ops, num_ops);
}
+/**
+ * Enqueue a burst of MLDTS operations to a queue of the device.
+ * This functions only enqueues as many operations as currently possible and
+ * does not block until @p num_ops entries in the queue are available.
+ * This function does not provide any error notification to avoid the
+ * corresponding overhead.
+ *
+ * @param dev_id
+ * The identifier of the device.
+ * @param queue_id
+ * The index of the queue.
+ * @param ops
+ * Pointer array containing operations to be enqueued Must have at least
+ * @p num_ops entries
+ * @param num_ops
+ * The maximum number of operations to enqueue.
+ *
+ * @return
+ * The number of operations actually enqueued (this is the number of processed
+ * entries in the @p ops array).
+ */
+static inline uint16_t
+rte_bbdev_enqueue_mldts_ops(uint16_t dev_id, uint16_t queue_id,
+ struct rte_bbdev_mldts_op **ops, uint16_t num_ops)
+{
+ struct rte_bbdev *dev = &rte_bbdev_devices[dev_id];
+ struct rte_bbdev_queue_data *q_data = &dev->data->queues[queue_id];
+ return dev->enqueue_mldts_ops(q_data, ops, num_ops);
+}
+
/**
* Dequeue a burst of processed encode operations from a queue of the device.
* This functions returns only the current contents of the queue,
@@ -823,6 +868,37 @@ rte_bbdev_dequeue_fft_ops(uint16_t dev_id, uint16_t queue_id,
return dev->dequeue_fft_ops(q_data, ops, num_ops);
}
+/**
+ * Dequeue a burst of MLDTS operations from a queue of the device.
+ * This functions returns only the current contents of the queue, and does not
+ * block until @p num_ops is available.
+ * This function does not provide any error notification to avoid the
+ * corresponding overhead.
+ *
+ * @param dev_id
+ * The identifier of the device.
+ * @param queue_id
+ * The index of the queue.
+ * @param ops
+ * Pointer array where operations will be dequeued to. Must have at least
+ * @p num_ops entries
+ * @param num_ops
+ * The maximum number of operations to dequeue.
+ *
+ * @return
+ * The number of operations actually dequeued (this is the number of entries
+ * copied into the @p ops array).
+ */
+__rte_experimental
+static inline uint16_t
+rte_bbdev_dequeue_mldts_ops(uint16_t dev_id, uint16_t queue_id,
+ struct rte_bbdev_mldts_op **ops, uint16_t num_ops)
+{
+ struct rte_bbdev *dev = &rte_bbdev_devices[dev_id];
+ struct rte_bbdev_queue_data *q_data = &dev->data->queues[queue_id];
+ return dev->dequeue_mldts_ops(q_data, ops, num_ops);
+}
+
/** Definitions of device event types */
enum rte_bbdev_event_type {
RTE_BBDEV_EVENT_UNKNOWN, /**< unknown event type */
diff --git a/lib/bbdev/rte_bbdev_op.h b/lib/bbdev/rte_bbdev_op.h
index 96a390cd9b..990d110fa7 100644
--- a/lib/bbdev/rte_bbdev_op.h
+++ b/lib/bbdev/rte_bbdev_op.h
@@ -50,6 +50,10 @@ extern "C" {
#define RTE_BBDEV_LDPC_MAX_CODE_BLOCKS (256)
/* 12 CS maximum */
#define RTE_BBDEV_MAX_CS_2 (6)
+/* MLD-TS up to 4 layers */
+#define RTE_BBDEV_MAX_MLD_LAYERS (4)
+/* 12 SB per RB */
+#define RTE_BBDEV_SCPERRB (12)
/*
* Maximum size to be used to manage the enum rte_bbdev_op_type
@@ -241,6 +245,12 @@ enum rte_bbdev_op_fft_flag_bitmasks {
RTE_BBDEV_FFT_FP16_OUTPUT = (1ULL << 7)
};
+/** Flags for MLDTS operation and capability structure */
+enum rte_bbdev_op_mldts_flag_bitmasks {
+ /** Set if the device supports C/R repetition options. */
+ RTE_BBDEV_MLDTS_REP = (1ULL << 0),
+};
+
/** Flags for the Code Block/Transport block mode */
enum rte_bbdev_op_cb_mode {
/** One operation is one or fraction of one transport block */
@@ -783,6 +793,36 @@ struct rte_bbdev_op_fft {
};
/* >8 End of structure rte_bbdev_op_fft. */
+/** Operation structure for MLDTS processing.
+ *
+ * The output mbuf data structure is expected to be allocated by the
+ * application with enough room for the output data.
+ */
+
+/* Structure rte_bbdev_op_mldts 8< */
+struct rte_bbdev_op_mldts {
+ /** Input data QHy from QR decomposition. */
+ struct rte_bbdev_op_data qhy_input;
+ /** Input data R from QR decomposition. */
+ struct rte_bbdev_op_data r_input;
+ /** Output data post MLD-TS. */
+ struct rte_bbdev_op_data output;
+ /** Flags from *rte_bbdev_op_MLDTS_flag_bitmasks*. */
+ uint32_t op_flags;
+ /** Number of RBs. */
+ uint16_t num_rbs;
+ /** Number of layers 2->4. */
+ uint16_t num_layers;
+ /** Modulation order (2->8 QPSK to 256QAM). */
+ uint8_t q_m[RTE_BBDEV_MAX_MLD_LAYERS];
+ /** Row repetition for the same R matrix - subcarriers. */
+ uint8_t r_rep;
+ /** Column repetition for the same R matrix - symbols. */
+ uint8_t c_rep;
+};
+/* >8 End of structure rte_bbdev_op_mldts. */
+
+
/** List of the capabilities for the Turbo Decoder */
struct rte_bbdev_op_cap_turbo_dec {
/** Flags from rte_bbdev_op_td_flag_bitmasks */
@@ -839,6 +879,16 @@ struct rte_bbdev_op_cap_ldpc_enc {
struct rte_bbdev_op_cap_fft {
/** Flags from *rte_bbdev_op_fft_flag_bitmasks*. */
uint32_t capability_flags;
+ /** Num input code block buffers. */
+ uint16_t num_buffers_src;
+ /** Num output code block buffers. */
+ uint16_t num_buffers_dst;
+};
+
+/** List of the capabilities for the MLD */
+struct rte_bbdev_op_cap_mld {
+ /** Flags from rte_bbdev_op_mldts_flag_bitmasks */
+ uint32_t capability_flags;
/** Number of input code block buffers. */
uint16_t num_buffers_src;
/** Number of output code block buffers. */
@@ -856,6 +906,7 @@ enum rte_bbdev_op_type {
RTE_BBDEV_OP_LDPC_DEC, /**< LDPC decode */
RTE_BBDEV_OP_LDPC_ENC, /**< LDPC encode */
RTE_BBDEV_OP_FFT, /**< FFT */
+ RTE_BBDEV_OP_MLDTS, /**< MLD-TS */
/* Note: RTE_BBDEV_OP_TYPE_SIZE_MAX must be larger or equal to maximum enum value */
};
@@ -864,7 +915,8 @@ enum {
RTE_BBDEV_DRV_ERROR,
RTE_BBDEV_DATA_ERROR,
RTE_BBDEV_CRC_ERROR,
- RTE_BBDEV_SYNDROME_ERROR
+ RTE_BBDEV_SYNDROME_ERROR,
+ RTE_BBDEV_ENGINE_ERROR
};
/** Structure specifying a single encode operation */
@@ -911,6 +963,18 @@ struct rte_bbdev_fft_op {
struct rte_bbdev_op_fft fft;
};
+/** Structure specifying a single mldts operation */
+struct rte_bbdev_mldts_op {
+ /** Status of operation that was performed. */
+ int status;
+ /** Mempool which op instance is in. */
+ struct rte_mempool *mempool;
+ /** Opaque pointer for user data. */
+ void *opaque_data;
+ /** Contains turbo decoder specific parameters. */
+ struct rte_bbdev_op_mldts mldts;
+};
+
/** Operation capabilities supported by a device */
struct rte_bbdev_op_cap {
enum rte_bbdev_op_type type; /**< Type of operation */
@@ -920,6 +984,7 @@ struct rte_bbdev_op_cap {
struct rte_bbdev_op_cap_ldpc_dec ldpc_dec;
struct rte_bbdev_op_cap_ldpc_enc ldpc_enc;
struct rte_bbdev_op_cap_fft fft;
+ struct rte_bbdev_op_cap_mld mld;
} cap; /**< Operation-type specific capabilities */
};
@@ -1058,6 +1123,36 @@ rte_bbdev_fft_op_alloc_bulk(struct rte_mempool *mempool,
return rte_mempool_get_bulk(mempool, (void **)ops, num_ops);
}
+/**
+ * Bulk allocate MLD operations from a mempool with parameter defaults reset.
+ *
+ * @param mempool
+ * Operation mempool, created by *rte_bbdev_op_pool_create*.
+ * @param ops
+ * Output array to place allocated operations.
+ * @param num_ops
+ * Number of operations to allocate.
+ *
+ * @returns
+ * - 0 on success.
+ * - EINVAL if invalid mempool is provided.
+ */
+__rte_experimental
+static inline int
+rte_bbdev_mldts_op_alloc_bulk(struct rte_mempool *mempool,
+ struct rte_bbdev_mldts_op **ops, uint16_t num_ops)
+{
+ struct rte_bbdev_op_pool_private *priv;
+
+ /* Check type */
+ priv = (struct rte_bbdev_op_pool_private *)rte_mempool_get_priv(mempool);
+ if (unlikely(priv->type != RTE_BBDEV_OP_MLDTS))
+ return -EINVAL;
+
+ /* Get elements */
+ return rte_mempool_get_bulk(mempool, (void **)ops, num_ops);
+}
+
/**
* Free decode operation structures that were allocated by
* rte_bbdev_dec_op_alloc_bulk().
@@ -1110,6 +1205,25 @@ rte_bbdev_fft_op_free_bulk(struct rte_bbdev_fft_op **ops, unsigned int num_ops)
rte_mempool_put_bulk(ops[0]->mempool, (void **)ops, num_ops);
}
+/**
+ * Free encode operation structures that were allocated by
+ * rte_bbdev_mldts_op_alloc_bulk().
+ * All structures must belong to the same mempool.
+ *
+ * @param ops
+ * Operation structures
+ * @param num_ops
+ * Number of structures
+ */
+__rte_experimental
+static inline void
+rte_bbdev_mldts_op_free_bulk(struct rte_bbdev_mldts_op **ops, unsigned int num_ops)
+{
+ if (num_ops > 0)
+ rte_mempool_put_bulk(ops[0]->mempool, (void **)ops, num_ops);
+}
+
+
#ifdef __cplusplus
}
#endif
diff --git a/lib/bbdev/version.map b/lib/bbdev/version.map
index d0bb835255..8f28ae7c68 100644
--- a/lib/bbdev/version.map
+++ b/lib/bbdev/version.map
@@ -50,4 +50,9 @@ EXPERIMENTAL {
rte_bbdev_enqueue_status_str;
rte_bbdev_fft_op_alloc_bulk;
rte_bbdev_fft_op_free_bulk;
+ #added in 23.11
+ rte_bbdev_dequeue_mldts_ops;
+ rte_bbdev_enqueue_mldts_ops;
+ rte_bbdev_mldts_op_alloc_bulk;
+ rte_bbdev_mldts_op_free_bulk;
};
--
2.34.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v2 2/5] bbdev: add new capabilities for FFT processing
2023-06-15 16:48 [PATCH v2 0/5] bbdev: API extension for 23.11 Nicolas Chautru
2023-06-15 16:48 ` [PATCH v2 1/5] bbdev: add operation type for MLDTS procession Nicolas Chautru
@ 2023-06-15 16:48 ` Nicolas Chautru
2023-09-18 15:08 ` Maxime Coquelin
2023-06-15 16:48 ` [PATCH v2 3/5] bbdev: add new capability for FEC 5G UL processing Nicolas Chautru
` (6 subsequent siblings)
8 siblings, 1 reply; 22+ messages in thread
From: Nicolas Chautru @ 2023-06-15 16:48 UTC (permalink / raw)
To: dev, maxime.coquelin
Cc: trix, hemant.agrawal, david.marchand, hernan.vargas, Nicolas Chautru
Extending existing FFT operation for new capabilities.
Optional frequency domain dewindowing, frequency resampling,
timing error correction and time offset per CS.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
---
doc/guides/prog_guide/bbdev.rst | 24 ++++++++++++++++++++++++
lib/bbdev/rte_bbdev_op.h | 23 ++++++++++++++++++++++-
2 files changed, 46 insertions(+), 1 deletion(-)
diff --git a/doc/guides/prog_guide/bbdev.rst b/doc/guides/prog_guide/bbdev.rst
index 8e384015ee..95b33562fe 100644
--- a/doc/guides/prog_guide/bbdev.rst
+++ b/doc/guides/prog_guide/bbdev.rst
@@ -1111,6 +1111,18 @@ with the operation flags forming a bitmask in the ``op_flags`` field.
|RTE_BBDEV_FFT_FP16_OUTPUT |
| Set if the output data shall use FP16 format instead of INT16 |
+--------------------------------------------------------------------+
+|RTE_BBDEV_FFT_TIMING_OFFSET_PER_CS |
+| Set if device supports adjusting time offset per CS |
++--------------------------------------------------------------------+
+|RTE_BBDEV_FFT_TIMING_ERROR |
+| Set if device supports correcting for timing error |
++--------------------------------------------------------------------+
+|RTE_BBDEV_FFT_DEWINDOWING |
+| Set if enabling the option FFT Dewindowing in Frequency domain |
++--------------------------------------------------------------------+
+|RTE_BBDEV_FFT_FREQ_RESAMPLING |
+| Set if device supports the optional frequency resampling |
++--------------------------------------------------------------------+
The FFT parameters are set out in the table below.
@@ -1121,6 +1133,8 @@ The FFT parameters are set out in the table below.
+-------------------------+--------------------------------------------------------------+
|base_output |output data |
+-------------------------+--------------------------------------------------------------+
+|dewindowing_input |optional frequency domain dewindowing input data |
++-------------------------+--------------------------------------------------------------+
|power_meas_output |optional output data with power measurement on DFT output |
+-------------------------+--------------------------------------------------------------+
|op_flags |bitmask of all active operation capabilities |
@@ -1155,6 +1169,16 @@ The FFT parameters are set out in the table below.
+-------------------------+--------------------------------------------------------------+
|fp16_exp_adjust |value added to FP16 exponent at conversion from INT16 |
+-------------------------+--------------------------------------------------------------+
+|freq_resample_mode |frequency ressampling mode (0:transparent, 1-2: resample) |
++-------------------------+--------------------------------------------------------------+
+| output_depadded_size |output depadded size prior to frequency resampling |
++-------------------------+--------------------------------------------------------------+
+|cs_theta_0 |timing error correction initial phase |
++-------------------------+--------------------------------------------------------------+
+|cs_theta_d |timing error correction phase increment |
++-------------------------+--------------------------------------------------------------+
+|time_offset |time offset per CS of time domain samples |
++-------------------------+--------------------------------------------------------------+
The mbuf input ``base_input`` is mandatory for all bbdev PMDs and
is the incoming data for the processing. Its size may not fit into an actual mbuf,
diff --git a/lib/bbdev/rte_bbdev_op.h b/lib/bbdev/rte_bbdev_op.h
index 990d110fa7..682e265327 100644
--- a/lib/bbdev/rte_bbdev_op.h
+++ b/lib/bbdev/rte_bbdev_op.h
@@ -50,6 +50,7 @@ extern "C" {
#define RTE_BBDEV_LDPC_MAX_CODE_BLOCKS (256)
/* 12 CS maximum */
#define RTE_BBDEV_MAX_CS_2 (6)
+#define RTE_BBDEV_MAX_CS (12)
/* MLD-TS up to 4 layers */
#define RTE_BBDEV_MAX_MLD_LAYERS (4)
/* 12 SB per RB */
@@ -242,7 +243,15 @@ enum rte_bbdev_op_fft_flag_bitmasks {
/** Set if the input data used FP16 format. */
RTE_BBDEV_FFT_FP16_INPUT = (1ULL << 6),
/** Set if the output data uses FP16 format. */
- RTE_BBDEV_FFT_FP16_OUTPUT = (1ULL << 7)
+ RTE_BBDEV_FFT_FP16_OUTPUT = (1ULL << 7),
+ /** Flexible adjustment of Timing offset adjustment per CS. */
+ RTE_BBDEV_FFT_TIMING_OFFSET_PER_CS = (1ULL << 8),
+ /** Flexible adjustment of Timing error correction per CS. */
+ RTE_BBDEV_FFT_TIMING_ERROR = (1ULL << 9),
+ /** Set for optional frequency domain dewindowing. */
+ RTE_BBDEV_FFT_DEWINDOWING = (1ULL << 10),
+ /** Flexible adjustment of frequency resampling mode. */
+ RTE_BBDEV_FFT_FREQ_RESAMPLING = (1ULL << 11)
};
/** Flags for MLDTS operation and capability structure */
@@ -756,6 +765,8 @@ struct rte_bbdev_op_fft {
struct rte_bbdev_op_data base_input;
/** Output data starting from first antenna and first cyclic shift. */
struct rte_bbdev_op_data base_output;
+ /** Optional frequency window input data. */
+ struct rte_bbdev_op_data dewindowing_input;
/** Optional power measurement output data. */
struct rte_bbdev_op_data power_meas_output;
/** Flags from rte_bbdev_op_fft_flag_bitmasks. */
@@ -790,6 +801,16 @@ struct rte_bbdev_op_fft {
uint16_t power_shift;
/** Adjust the FP6 exponent for INT<->FP16 conversion. */
uint16_t fp16_exp_adjust;
+ /** Frequency resampling : 0: Transparent Mode1: 4/3 Resample2: 2/3 Resample. */
+ int8_t freq_resample_mode;
+ /** Output depadded size prior to frequency resampling. */
+ uint16_t output_depadded_size;
+ /** Time error correction initial phase. */
+ uint16_t cs_theta_0[RTE_BBDEV_MAX_CS];
+ /** Time error correction phase increment. */
+ uint32_t cs_theta_d[RTE_BBDEV_MAX_CS];
+ /* Time offset per CS of time domain samples. */
+ int8_t time_offset[RTE_BBDEV_MAX_CS];
};
/* >8 End of structure rte_bbdev_op_fft. */
--
2.34.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v2 3/5] bbdev: add new capability for FEC 5G UL processing
2023-06-15 16:48 [PATCH v2 0/5] bbdev: API extension for 23.11 Nicolas Chautru
2023-06-15 16:48 ` [PATCH v2 1/5] bbdev: add operation type for MLDTS procession Nicolas Chautru
2023-06-15 16:48 ` [PATCH v2 2/5] bbdev: add new capabilities for FFT processing Nicolas Chautru
@ 2023-06-15 16:48 ` Nicolas Chautru
2023-09-18 15:09 ` Maxime Coquelin
2023-06-15 16:49 ` [PATCH v2 4/5] bbdev: improving error handling for queue configuration Nicolas Chautru
` (5 subsequent siblings)
8 siblings, 1 reply; 22+ messages in thread
From: Nicolas Chautru @ 2023-06-15 16:48 UTC (permalink / raw)
To: dev, maxime.coquelin
Cc: trix, hemant.agrawal, david.marchand, hernan.vargas, Nicolas Chautru
Extending existing LDPC UL operation for new capability.
Option to compress HARQ memory to 4 bits per LLR.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
---
doc/guides/prog_guide/bbdev.rst | 6 ++++++
lib/bbdev/rte_bbdev_op.h | 4 +++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/doc/guides/prog_guide/bbdev.rst b/doc/guides/prog_guide/bbdev.rst
index 95b33562fe..c43e478eda 100644
--- a/doc/guides/prog_guide/bbdev.rst
+++ b/doc/guides/prog_guide/bbdev.rst
@@ -903,6 +903,12 @@ given below.
|RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_LOOPBACK |
| Set if a device supports loopback access to HARQ internal memory |
+--------------------------------------------------------------------+
+|RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_FILLERS |
+| Set if a device includes LLR filler bits in HARQ circular buffer |
++--------------------------------------------------------------------+
+|RTE_BBDEV_LDPC_HARQ_4BIT_COMPRESSION |
+|Set if a device supports input/output 4 bits HARQ compression |
++--------------------------------------------------------------------+
The structure passed for each LDPC decode operation is given below,
with the 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
index 682e265327..a4a2ae1440 100644
--- a/lib/bbdev/rte_bbdev_op.h
+++ b/lib/bbdev/rte_bbdev_op.h
@@ -203,7 +203,9 @@ 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 << 19)
+ RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_FILLERS = (1ULL << 19),
+ /** Set if a device supports input/output HARQ 4bits compression. */
+ RTE_BBDEV_LDPC_HARQ_4BIT_COMPRESSION = (1ULL << 20)
};
/** Flags for LDPC encoder operation and capability structure */
--
2.34.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v2 4/5] bbdev: improving error handling for queue configuration
2023-06-15 16:48 [PATCH v2 0/5] bbdev: API extension for 23.11 Nicolas Chautru
` (2 preceding siblings ...)
2023-06-15 16:48 ` [PATCH v2 3/5] bbdev: add new capability for FEC 5G UL processing Nicolas Chautru
@ 2023-06-15 16:49 ` Nicolas Chautru
2023-09-18 15:20 ` Maxime Coquelin
2023-06-15 16:49 ` [PATCH v2 5/5] devtools: ignore changes into bbdev experimental API Nicolas Chautru
` (4 subsequent siblings)
8 siblings, 1 reply; 22+ messages in thread
From: Nicolas Chautru @ 2023-06-15 16:49 UTC (permalink / raw)
To: dev, maxime.coquelin
Cc: trix, hemant.agrawal, david.marchand, hernan.vargas, Nicolas Chautru
Refactor of the error handling based on available priority
queue to be more generic.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
---
lib/bbdev/rte_bbdev.c | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/lib/bbdev/rte_bbdev.c b/lib/bbdev/rte_bbdev.c
index 26fc077bdc..589b796ea3 100644
--- a/lib/bbdev/rte_bbdev.c
+++ b/lib/bbdev/rte_bbdev.c
@@ -441,6 +441,7 @@ rte_bbdev_queue_configure(uint16_t dev_id, uint16_t queue_id,
const struct rte_bbdev_op_cap *p;
struct rte_bbdev_queue_conf *stored_conf;
const char *op_type_str;
+ unsigned int max_priority;
VALID_DEV_OR_RET_ERR(dev, dev_id);
VALID_DEV_OPS_OR_RET_ERR(dev, dev_id);
@@ -494,20 +495,16 @@ rte_bbdev_queue_configure(uint16_t dev_id, uint16_t queue_id,
conf->queue_size, queue_id, dev_id);
return -EINVAL;
}
- if (conf->op_type == RTE_BBDEV_OP_TURBO_DEC &&
- conf->priority > dev_info.max_ul_queue_priority) {
+ if ((uint8_t)conf->op_type >= RTE_BBDEV_OP_TYPE_SIZE_MAX) {
rte_bbdev_log(ERR,
- "Priority (%u) of queue %u of bbdev %u must be <= %u",
- conf->priority, queue_id, dev_id,
- dev_info.max_ul_queue_priority);
+ "Invalid operation type (%u) ", conf->op_type);
return -EINVAL;
}
- if (conf->op_type == RTE_BBDEV_OP_TURBO_ENC &&
- conf->priority > dev_info.max_dl_queue_priority) {
+ max_priority = dev_info.queue_priority[conf->op_type];
+ if (conf->priority > max_priority) {
rte_bbdev_log(ERR,
"Priority (%u) of queue %u of bbdev %u must be <= %u",
- conf->priority, queue_id, dev_id,
- dev_info.max_dl_queue_priority);
+ conf->priority, queue_id, dev_id, max_priority);
return -EINVAL;
}
}
--
2.34.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v2 5/5] devtools: ignore changes into bbdev experimental API
2023-06-15 16:48 [PATCH v2 0/5] bbdev: API extension for 23.11 Nicolas Chautru
` (3 preceding siblings ...)
2023-06-15 16:49 ` [PATCH v2 4/5] bbdev: improving error handling for queue configuration Nicolas Chautru
@ 2023-06-15 16:49 ` Nicolas Chautru
2023-09-06 6:17 ` Hemant Agrawal
2023-09-18 15:22 ` Maxime Coquelin
2023-07-17 22:28 ` [PATCH v2 0/5] bbdev: API extension for 23.11 Chautru, Nicolas
` (3 subsequent siblings)
8 siblings, 2 replies; 22+ messages in thread
From: Nicolas Chautru @ 2023-06-15 16:49 UTC (permalink / raw)
To: dev, maxime.coquelin
Cc: trix, hemant.agrawal, david.marchand, hernan.vargas, Nicolas Chautru
Developpers are warned that the related fft experimental functions
do not preserve ABI, hence these can be waived.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
---
devtools/libabigail.abignore | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/devtools/libabigail.abignore b/devtools/libabigail.abignore
index 7a93de3ba1..09b8f156b5 100644
--- a/devtools/libabigail.abignore
+++ b/devtools/libabigail.abignore
@@ -30,7 +30,9 @@
[suppress_type]
type_kind = enum
changed_enumerators = RTE_CRYPTO_ASYM_XFORM_ECPM, RTE_CRYPTO_ASYM_XFORM_TYPE_LIST_END
-
+; Ignore changes to bbdev FFT API which is experimental
+[suppress_type]
+ name = rte_bbdev_fft_op
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Temporary exceptions till next major ABI version ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
--
2.34.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* RE: [PATCH v2 0/5] bbdev: API extension for 23.11
2023-06-15 16:48 [PATCH v2 0/5] bbdev: API extension for 23.11 Nicolas Chautru
` (4 preceding siblings ...)
2023-06-15 16:49 ` [PATCH v2 5/5] devtools: ignore changes into bbdev experimental API Nicolas Chautru
@ 2023-07-17 22:28 ` Chautru, Nicolas
2023-08-04 16:14 ` Vargas, Hernan
2023-07-18 9:18 ` Hemant Agrawal
` (2 subsequent siblings)
8 siblings, 1 reply; 22+ messages in thread
From: Chautru, Nicolas @ 2023-07-17 22:28 UTC (permalink / raw)
To: dev, maxime.coquelin
Cc: Rix, Tom, hemant.agrawal, david.marchand, Vargas, Hernan
Hi Maxime, Hemant,
Can I get some review/ack for this serie please.
Thanks
Nic
> -----Original Message-----
> From: Chautru, Nicolas <nicolas.chautru@intel.com>
> Sent: Thursday, June 15, 2023 9:49 AM
> To: dev@dpdk.org; maxime.coquelin@redhat.com
> Cc: Rix, Tom <trix@redhat.com>; hemant.agrawal@nxp.com;
> david.marchand@redhat.com; Vargas, Hernan <hernan.vargas@intel.com>;
> Chautru, Nicolas <nicolas.chautru@intel.com>
> Subject: [PATCH v2 0/5] bbdev: API extension for 23.11
>
> v2: moving the new mld functions at the end of struct rte_bbdev to avoid
> ABI offset changes based on feedback with Maxime.
> Adding a commit to waive the FFT ABI warning since that experimental
> function could break ABI (let me know if preferred to be merged with the
> FFT commit causing the FFT change).
>
>
> Including v1 for extending the bbdev api for 23.11.
> The new MLD-TS is expected to be non ABI compatible, the other ones
> should not break ABI.
> I will send a deprecation notice in parallel.
>
> This introduces a new operation (on top of FEC and FFT) to support
> equalization for MLD-TS. There also more modular API extension for
> existing FFT and FEC operation.
>
> Thanks
> Nic
>
>
> Nicolas Chautru (5):
> bbdev: add operation type for MLDTS procession
> bbdev: add new capabilities for FFT processing
> bbdev: add new capability for FEC 5G UL processing
> bbdev: improving error handling for queue configuration
> devtools: ignore changes into bbdev experimental API
>
> devtools/libabigail.abignore | 4 +-
> doc/guides/prog_guide/bbdev.rst | 83 ++++++++++++++++++
> lib/bbdev/rte_bbdev.c | 26 +++---
> lib/bbdev/rte_bbdev.h | 76 +++++++++++++++++
> lib/bbdev/rte_bbdev_op.h | 143
> +++++++++++++++++++++++++++++++-
> lib/bbdev/version.map | 5 ++
> 6 files changed, 323 insertions(+), 14 deletions(-)
>
> --
> 2.34.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v2 0/5] bbdev: API extension for 23.11
2023-06-15 16:48 [PATCH v2 0/5] bbdev: API extension for 23.11 Nicolas Chautru
` (5 preceding siblings ...)
2023-07-17 22:28 ` [PATCH v2 0/5] bbdev: API extension for 23.11 Chautru, Nicolas
@ 2023-07-18 9:18 ` Hemant Agrawal
2023-09-06 6:20 ` Hemant Agrawal
2023-09-21 7:35 ` Maxime Coquelin
8 siblings, 0 replies; 22+ messages in thread
From: Hemant Agrawal @ 2023-07-18 9:18 UTC (permalink / raw)
To: Nicolas Chautru, dev, maxime.coquelin
Cc: trix, hemant.agrawal, david.marchand, hernan.vargas
Series-
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
On 15-Jun-23 10:18 PM, Nicolas Chautru wrote:
> Caution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button
>
>
> v2: moving the new mld functions at the end of struct rte_bbdev to avoid
> ABI offset changes based on feedback with Maxime.
> Adding a commit to waive the FFT ABI warning since that experimental function
> could break ABI (let me know if preferred to be merged with the FFT
> commit causing the FFT change).
>
>
> Including v1 for extending the bbdev api for 23.11.
> The new MLD-TS is expected to be non ABI compatible, the other ones
> should not break ABI.
> I will send a deprecation notice in parallel.
>
> This introduces a new operation (on top of FEC and FFT) to support
> equalization for MLD-TS. There also more modular API extension for
> existing FFT and FEC operation.
>
> Thanks
> Nic
>
>
> Nicolas Chautru (5):
> bbdev: add operation type for MLDTS procession
> bbdev: add new capabilities for FFT processing
> bbdev: add new capability for FEC 5G UL processing
> bbdev: improving error handling for queue configuration
> devtools: ignore changes into bbdev experimental API
>
> devtools/libabigail.abignore | 4 +-
> doc/guides/prog_guide/bbdev.rst | 83 ++++++++++++++++++
> lib/bbdev/rte_bbdev.c | 26 +++---
> lib/bbdev/rte_bbdev.h | 76 +++++++++++++++++
> lib/bbdev/rte_bbdev_op.h | 143 +++++++++++++++++++++++++++++++-
> lib/bbdev/version.map | 5 ++
> 6 files changed, 323 insertions(+), 14 deletions(-)
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 22+ messages in thread
* RE: [PATCH v2 0/5] bbdev: API extension for 23.11
2023-07-17 22:28 ` [PATCH v2 0/5] bbdev: API extension for 23.11 Chautru, Nicolas
@ 2023-08-04 16:14 ` Vargas, Hernan
2023-09-05 17:48 ` Chautru, Nicolas
0 siblings, 1 reply; 22+ messages in thread
From: Vargas, Hernan @ 2023-08-04 16:14 UTC (permalink / raw)
To: Chautru, Nicolas, dev, maxime.coquelin
Cc: Rix, Tom, hemant.agrawal, david.marchand
Hi Maxime,
Kind reminder to get a review on this series:
https://patchwork.dpdk.org/project/dpdk/list/?series=28544
Thanks,
Hernan
> -----Original Message-----
> From: Chautru, Nicolas <nicolas.chautru@intel.com>
> Sent: Monday, July 17, 2023 5:29 PM
> To: dev@dpdk.org; maxime.coquelin@redhat.com
> Cc: Rix, Tom <trix@redhat.com>; hemant.agrawal@nxp.com;
> david.marchand@redhat.com; Vargas, Hernan <hernan.vargas@intel.com>
> Subject: RE: [PATCH v2 0/5] bbdev: API extension for 23.11
>
> Hi Maxime, Hemant,
> Can I get some review/ack for this serie please.
> Thanks
> Nic
>
> > -----Original Message-----
> > From: Chautru, Nicolas <nicolas.chautru@intel.com>
> > Sent: Thursday, June 15, 2023 9:49 AM
> > To: dev@dpdk.org; maxime.coquelin@redhat.com
> > Cc: Rix, Tom <trix@redhat.com>; hemant.agrawal@nxp.com;
> > david.marchand@redhat.com; Vargas, Hernan <hernan.vargas@intel.com>;
> > Chautru, Nicolas <nicolas.chautru@intel.com>
> > Subject: [PATCH v2 0/5] bbdev: API extension for 23.11
> >
> > v2: moving the new mld functions at the end of struct rte_bbdev to
> > avoid ABI offset changes based on feedback with Maxime.
> > Adding a commit to waive the FFT ABI warning since that experimental
> > function could break ABI (let me know if preferred to be merged with
> > the FFT commit causing the FFT change).
> >
> >
> > Including v1 for extending the bbdev api for 23.11.
> > The new MLD-TS is expected to be non ABI compatible, the other ones
> > should not break ABI.
> > I will send a deprecation notice in parallel.
> >
> > This introduces a new operation (on top of FEC and FFT) to support
> > equalization for MLD-TS. There also more modular API extension for
> > existing FFT and FEC operation.
> >
> > Thanks
> > Nic
> >
> >
> > Nicolas Chautru (5):
> > bbdev: add operation type for MLDTS procession
> > bbdev: add new capabilities for FFT processing
> > bbdev: add new capability for FEC 5G UL processing
> > bbdev: improving error handling for queue configuration
> > devtools: ignore changes into bbdev experimental API
> >
> > devtools/libabigail.abignore | 4 +-
> > doc/guides/prog_guide/bbdev.rst | 83 ++++++++++++++++++
> > lib/bbdev/rte_bbdev.c | 26 +++---
> > lib/bbdev/rte_bbdev.h | 76 +++++++++++++++++
> > lib/bbdev/rte_bbdev_op.h | 143
> > +++++++++++++++++++++++++++++++-
> > lib/bbdev/version.map | 5 ++
> > 6 files changed, 323 insertions(+), 14 deletions(-)
> >
> > --
> > 2.34.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* RE: [PATCH v2 0/5] bbdev: API extension for 23.11
2023-08-04 16:14 ` Vargas, Hernan
@ 2023-09-05 17:48 ` Chautru, Nicolas
0 siblings, 0 replies; 22+ messages in thread
From: Chautru, Nicolas @ 2023-09-05 17:48 UTC (permalink / raw)
To: Vargas, Hernan, dev, maxime.coquelin, hemant.agrawal
Cc: Rix, Tom, david.marchand
Hi Maxime, Hemant,
Can we please get some extra review/ack for this bbdev serie. I would be good to apply on the baseband repo soon towards 23.11.
Much appreciated!
Nic
> -----Original Message-----
> From: Vargas, Hernan <hernan.vargas@intel.com>
> Sent: Friday, August 4, 2023 9:14 AM
> To: Chautru, Nicolas <nicolas.chautru@intel.com>; dev@dpdk.org;
> maxime.coquelin@redhat.com
> Cc: Rix, Tom <trix@redhat.com>; hemant.agrawal@nxp.com;
> david.marchand@redhat.com
> Subject: RE: [PATCH v2 0/5] bbdev: API extension for 23.11
>
> Hi Maxime,
>
> Kind reminder to get a review on this series:
> https://patchwork.dpdk.org/project/dpdk/list/?series=28544
>
> Thanks,
> Hernan
>
> > -----Original Message-----
> > From: Chautru, Nicolas <nicolas.chautru@intel.com>
> > Sent: Monday, July 17, 2023 5:29 PM
> > To: dev@dpdk.org; maxime.coquelin@redhat.com
> > Cc: Rix, Tom <trix@redhat.com>; hemant.agrawal@nxp.com;
> > david.marchand@redhat.com; Vargas, Hernan
> <hernan.vargas@intel.com>
> > Subject: RE: [PATCH v2 0/5] bbdev: API extension for 23.11
> >
> > Hi Maxime, Hemant,
> > Can I get some review/ack for this serie please.
> > Thanks
> > Nic
> >
> > > -----Original Message-----
> > > From: Chautru, Nicolas <nicolas.chautru@intel.com>
> > > Sent: Thursday, June 15, 2023 9:49 AM
> > > To: dev@dpdk.org; maxime.coquelin@redhat.com
> > > Cc: Rix, Tom <trix@redhat.com>; hemant.agrawal@nxp.com;
> > > david.marchand@redhat.com; Vargas, Hernan
> <hernan.vargas@intel.com>;
> > > Chautru, Nicolas <nicolas.chautru@intel.com>
> > > Subject: [PATCH v2 0/5] bbdev: API extension for 23.11
> > >
> > > v2: moving the new mld functions at the end of struct rte_bbdev to
> > > avoid ABI offset changes based on feedback with Maxime.
> > > Adding a commit to waive the FFT ABI warning since that experimental
> > > function could break ABI (let me know if preferred to be merged with
> > > the FFT commit causing the FFT change).
> > >
> > >
> > > Including v1 for extending the bbdev api for 23.11.
> > > The new MLD-TS is expected to be non ABI compatible, the other ones
> > > should not break ABI.
> > > I will send a deprecation notice in parallel.
> > >
> > > This introduces a new operation (on top of FEC and FFT) to support
> > > equalization for MLD-TS. There also more modular API extension for
> > > existing FFT and FEC operation.
> > >
> > > Thanks
> > > Nic
> > >
> > >
> > > Nicolas Chautru (5):
> > > bbdev: add operation type for MLDTS procession
> > > bbdev: add new capabilities for FFT processing
> > > bbdev: add new capability for FEC 5G UL processing
> > > bbdev: improving error handling for queue configuration
> > > devtools: ignore changes into bbdev experimental API
> > >
> > > devtools/libabigail.abignore | 4 +-
> > > doc/guides/prog_guide/bbdev.rst | 83 ++++++++++++++++++
> > > lib/bbdev/rte_bbdev.c | 26 +++---
> > > lib/bbdev/rte_bbdev.h | 76 +++++++++++++++++
> > > lib/bbdev/rte_bbdev_op.h | 143
> > > +++++++++++++++++++++++++++++++-
> > > lib/bbdev/version.map | 5 ++
> > > 6 files changed, 323 insertions(+), 14 deletions(-)
> > >
> > > --
> > > 2.34.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v2 5/5] devtools: ignore changes into bbdev experimental API
2023-06-15 16:49 ` [PATCH v2 5/5] devtools: ignore changes into bbdev experimental API Nicolas Chautru
@ 2023-09-06 6:17 ` Hemant Agrawal
2023-09-12 20:32 ` Vargas, Hernan
2023-09-18 15:22 ` Maxime Coquelin
1 sibling, 1 reply; 22+ messages in thread
From: Hemant Agrawal @ 2023-09-06 6:17 UTC (permalink / raw)
To: Nicolas Chautru, dev, maxime.coquelin
Cc: trix, hemant.agrawal, david.marchand, hernan.vargas
On 15-Jun-23 10:19 PM, Nicolas Chautru wrote:
> Caution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button
>
>
> Developpers are warned that the related fft experimental functions
> do not preserve ABI, hence these can be waived.
%s/Developpers/Developers
>
> Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
> ---
> devtools/libabigail.abignore | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/devtools/libabigail.abignore b/devtools/libabigail.abignore
> index 7a93de3ba1..09b8f156b5 100644
> --- a/devtools/libabigail.abignore
> +++ b/devtools/libabigail.abignore
> @@ -30,7 +30,9 @@
> [suppress_type]
> type_kind = enum
> changed_enumerators = RTE_CRYPTO_ASYM_XFORM_ECPM, RTE_CRYPTO_ASYM_XFORM_TYPE_LIST_END
> -
> +; Ignore changes to bbdev FFT API which is experimental
> +[suppress_type]
> + name = rte_bbdev_fft_op
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> ; Temporary exceptions till next major ABI version ;
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v2 0/5] bbdev: API extension for 23.11
2023-06-15 16:48 [PATCH v2 0/5] bbdev: API extension for 23.11 Nicolas Chautru
` (6 preceding siblings ...)
2023-07-18 9:18 ` Hemant Agrawal
@ 2023-09-06 6:20 ` Hemant Agrawal
2023-09-21 7:35 ` Maxime Coquelin
8 siblings, 0 replies; 22+ messages in thread
From: Hemant Agrawal @ 2023-09-06 6:20 UTC (permalink / raw)
To: Nicolas Chautru, dev, maxime.coquelin
Cc: trix, hemant.agrawal, david.marchand, hernan.vargas
Hi Nic,
One small comment in the commit message.
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Regards
Hemant
On 15-Jun-23 10:18 PM, Nicolas Chautru wrote:
> Caution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button
>
>
> v2: moving the new mld functions at the end of struct rte_bbdev to avoid
> ABI offset changes based on feedback with Maxime.
> Adding a commit to waive the FFT ABI warning since that experimental function
> could break ABI (let me know if preferred to be merged with the FFT
> commit causing the FFT change).
>
>
> Including v1 for extending the bbdev api for 23.11.
> The new MLD-TS is expected to be non ABI compatible, the other ones
> should not break ABI.
> I will send a deprecation notice in parallel.
>
> This introduces a new operation (on top of FEC and FFT) to support
> equalization for MLD-TS. There also more modular API extension for
> existing FFT and FEC operation.
>
> Thanks
> Nic
>
>
> Nicolas Chautru (5):
> bbdev: add operation type for MLDTS procession
> bbdev: add new capabilities for FFT processing
> bbdev: add new capability for FEC 5G UL processing
> bbdev: improving error handling for queue configuration
> devtools: ignore changes into bbdev experimental API
>
> devtools/libabigail.abignore | 4 +-
> doc/guides/prog_guide/bbdev.rst | 83 ++++++++++++++++++
> lib/bbdev/rte_bbdev.c | 26 +++---
> lib/bbdev/rte_bbdev.h | 76 +++++++++++++++++
> lib/bbdev/rte_bbdev_op.h | 143 +++++++++++++++++++++++++++++++-
> lib/bbdev/version.map | 5 ++
> 6 files changed, 323 insertions(+), 14 deletions(-)
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 22+ messages in thread
* RE: [PATCH v2 5/5] devtools: ignore changes into bbdev experimental API
2023-09-06 6:17 ` Hemant Agrawal
@ 2023-09-12 20:32 ` Vargas, Hernan
2023-09-13 9:31 ` Hemant Agrawal
0 siblings, 1 reply; 22+ messages in thread
From: Vargas, Hernan @ 2023-09-12 20:32 UTC (permalink / raw)
To: hemant.agrawal, Chautru, Nicolas, dev, maxime.coquelin
Cc: Rix, Tom, david.marchand
Hi Hemant,
Your previous ack was under the [PATCH v2 0/5] email.
Could you please place your ack for the patch under this email?
Thanks,
Hernan
Acked-by: Hernan Vargas <hernan.vargas@intel.com>
> -----Original Message-----
> From: Hemant Agrawal <hemant.agrawal@oss.nxp.com>
> Sent: Wednesday, September 6, 2023 1:17 AM
> To: Chautru, Nicolas <nicolas.chautru@intel.com>; dev@dpdk.org;
> maxime.coquelin@redhat.com
> Cc: Rix, Tom <trix@redhat.com>; hemant.agrawal@nxp.com;
> david.marchand@redhat.com; Vargas, Hernan <hernan.vargas@intel.com>
> Subject: Re: [PATCH v2 5/5] devtools: ignore changes into bbdev experimental
> API
>
>
> On 15-Jun-23 10:19 PM, Nicolas Chautru wrote:
> > Caution: This is an external email. Please take care when clicking
> > links or opening attachments. When in doubt, report the message using
> > the 'Report this email' button
> >
> >
> > Developpers are warned that the related fft experimental functions do
> > not preserve ABI, hence these can be waived.
> %s/Developpers/Developers
> >
> > Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
> > ---
> > devtools/libabigail.abignore | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/devtools/libabigail.abignore
> > b/devtools/libabigail.abignore index 7a93de3ba1..09b8f156b5 100644
> > --- a/devtools/libabigail.abignore
> > +++ b/devtools/libabigail.abignore
> > @@ -30,7 +30,9 @@
> > [suppress_type]
> > type_kind = enum
> > changed_enumerators = RTE_CRYPTO_ASYM_XFORM_ECPM,
> > RTE_CRYPTO_ASYM_XFORM_TYPE_LIST_END
> > -
> > +; Ignore changes to bbdev FFT API which is experimental
> > +[suppress_type]
> > + name = rte_bbdev_fft_op
> > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> > ; Temporary exceptions till next major ABI version ;
> > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> > --
> > 2.34.1
> >
^ permalink raw reply [flat|nested] 22+ messages in thread
* RE: [PATCH v2 5/5] devtools: ignore changes into bbdev experimental API
2023-09-12 20:32 ` Vargas, Hernan
@ 2023-09-13 9:31 ` Hemant Agrawal
0 siblings, 0 replies; 22+ messages in thread
From: Hemant Agrawal @ 2023-09-13 9:31 UTC (permalink / raw)
To: Vargas, Hernan, Chautru, Nicolas, dev, maxime.coquelin
Cc: Rix, Tom, david.marchand
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
> -----Original Message-----
> From: Vargas, Hernan <hernan.vargas@intel.com>
> Sent: Wednesday, September 13, 2023 2:03 AM
> To: Hemant Agrawal <hemant.agrawal@nxp.com>; Chautru, Nicolas
> <nicolas.chautru@intel.com>; dev@dpdk.org; maxime.coquelin@redhat.com
> Cc: Rix, Tom <trix@redhat.com>; david.marchand@redhat.com
> Subject: RE: [PATCH v2 5/5] devtools: ignore changes into bbdev experimental
> API
> Importance: High
>
> Hi Hemant,
>
> Your previous ack was under the [PATCH v2 0/5] email.
> Could you please place your ack for the patch under this email?
>
> Thanks,
> Hernan
>
> Acked-by: Hernan Vargas <hernan.vargas@intel.com>
>
> > -----Original Message-----
> > From: Hemant Agrawal <hemant.agrawal@oss.nxp.com>
> > Sent: Wednesday, September 6, 2023 1:17 AM
> > To: Chautru, Nicolas <nicolas.chautru@intel.com>; dev@dpdk.org;
> > maxime.coquelin@redhat.com
> > Cc: Rix, Tom <trix@redhat.com>; hemant.agrawal@nxp.com;
> > david.marchand@redhat.com; Vargas, Hernan <hernan.vargas@intel.com>
> > Subject: Re: [PATCH v2 5/5] devtools: ignore changes into bbdev
> > experimental API
> >
> >
> > On 15-Jun-23 10:19 PM, Nicolas Chautru wrote:
> > > Caution: This is an external email. Please take care when clicking
> > > links or opening attachments. When in doubt, report the message
> > > using the 'Report this email' button
> > >
> > >
> > > Developpers are warned that the related fft experimental functions
> > > do not preserve ABI, hence these can be waived.
> > %s/Developpers/Developers
> > >
> > > Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
> > > ---
> > > devtools/libabigail.abignore | 4 +++-
> > > 1 file changed, 3 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/devtools/libabigail.abignore
> > > b/devtools/libabigail.abignore index 7a93de3ba1..09b8f156b5 100644
> > > --- a/devtools/libabigail.abignore
> > > +++ b/devtools/libabigail.abignore
> > > @@ -30,7 +30,9 @@
> > > [suppress_type]
> > > type_kind = enum
> > > changed_enumerators = RTE_CRYPTO_ASYM_XFORM_ECPM,
> > > RTE_CRYPTO_ASYM_XFORM_TYPE_LIST_END
> > > -
> > > +; Ignore changes to bbdev FFT API which is experimental
> > > +[suppress_type]
> > > + name = rte_bbdev_fft_op
> > > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> > > ; Temporary exceptions till next major ABI version ;
> > > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> > > --
> > > 2.34.1
> > >
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v2 1/5] bbdev: add operation type for MLDTS procession
2023-06-15 16:48 ` [PATCH v2 1/5] bbdev: add operation type for MLDTS procession Nicolas Chautru
@ 2023-09-18 15:03 ` Maxime Coquelin
0 siblings, 0 replies; 22+ messages in thread
From: Maxime Coquelin @ 2023-09-18 15:03 UTC (permalink / raw)
To: Nicolas Chautru, dev; +Cc: trix, hemant.agrawal, david.marchand, hernan.vargas
On 6/15/23 18:48, Nicolas Chautru wrote:
> Extended bbdev operations to support MLDTS based operations.
>
> Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
> ---
> doc/guides/prog_guide/bbdev.rst | 53 +++++++++++++++
> lib/bbdev/rte_bbdev.c | 11 ++-
> lib/bbdev/rte_bbdev.h | 76 +++++++++++++++++++++
> lib/bbdev/rte_bbdev_op.h | 116 +++++++++++++++++++++++++++++++-
> lib/bbdev/version.map | 5 ++
> 5 files changed, 259 insertions(+), 2 deletions(-)
>
> diff --git a/doc/guides/prog_guide/bbdev.rst b/doc/guides/prog_guide/bbdev.rst
> index 549f1d002a..8e384015ee 100644
> --- a/doc/guides/prog_guide/bbdev.rst
> +++ b/doc/guides/prog_guide/bbdev.rst
> @@ -1165,6 +1165,59 @@ either as 2 INT16 or as 2 FP16 based when the option supported.
> The data layout is based on contiguous concatenation of output data
> first by cyclic shift then by antenna.
>
> +BBDEV MLD-TS Operation
> +~~~~~~~~~~~~~~~~~~~~~~
> +
> +This operation allows to run the Tree Search (TS) portion of a Maximum Likelihood processing (MLD).
> +
> +This alternate equalization option accelerates the exploration of the best combination of
> +transmitted symbols across layers minimizing the Euclidean distance between the received and
> +reconstructed signal, then generates the LLRs to be used by the LDPC Decoder.
> +The input is the results of the Q R decomposition: Q^Hy signal and R matrix.
> +
> +The structure passed for each MLD-TS operation is given below,
> +with the operation flags forming a bitmask in the ``op_flags`` field.
> +
> + **NOTE:** The actual operation flags that may be used with a specific
> + bbdev PMD are dependent on the driver capabilities as reported via
> + ``rte_bbdev_info_get()``, and may be a subset of those below.
> +
> +.. literalinclude:: ../../../lib/bbdev/rte_bbdev_op.h
> + :language: c
> + :start-after: Structure rte_bbdev_op_mldts 8<
> + :end-before: >8 End of structure rte_bbdev_op_mldts.
> +
> ++--------------------------------------------------------------------+
> +|Description of MLD-TS capability flags |
> ++====================================================================+
> +|RTE_BBDEV_MLDTS_REP |
> +| Set if the option to use repeated data from R channel is supported |
> ++--------------------------------------------------------------------+
> +
> +The MLD-TS parameters are set out in the table below.
> +
> ++-------------------------+--------------------------------------------------------------+
> +|Parameter |Description |
> ++=========================+==============================================================+
> +|qhy_input |input data qHy |
> ++-------------------------+--------------------------------------------------------------+
> +|r_input |input data R triangular matrix |
> ++-------------------------+--------------------------------------------------------------+
> +|output |output data (LLRs) |
> ++-------------------------+--------------------------------------------------------------+
> +|op_flags |bitmask of all active operation capabilities |
> ++-------------------------+--------------------------------------------------------------+
> +|num_rbs |number of Resource Blocks |
> ++-------------------------+--------------------------------------------------------------+
> +|num_layers |number of overlapping layers |
> ++-------------------------+--------------------------------------------------------------+
> +|q_m |array of modulation order for each layer |
> ++-------------------------+--------------------------------------------------------------+
> +|r_rep |optional row repetition for the R matrix (subcarriers) |
> ++-------------------------+--------------------------------------------------------------+
> +|c_rep |optional column repetition for the R matrix (symbols) |
> ++-------------------------+--------------------------------------------------------------+
> +
> Sample code
> -----------
>
> diff --git a/lib/bbdev/rte_bbdev.c b/lib/bbdev/rte_bbdev.c
> index 1521cdbc53..26fc077bdc 100644
> --- a/lib/bbdev/rte_bbdev.c
> +++ b/lib/bbdev/rte_bbdev.c
> @@ -24,7 +24,7 @@
> #define DEV_NAME "BBDEV"
>
> /* Number of supported operation types in *rte_bbdev_op_type*. */
> -#define BBDEV_OP_TYPE_COUNT 6
> +#define BBDEV_OP_TYPE_COUNT 7
>
> /* BBDev library logging ID */
> RTE_LOG_REGISTER_DEFAULT(bbdev_logtype, NOTICE);
> @@ -857,6 +857,9 @@ get_bbdev_op_size(enum rte_bbdev_op_type type)
> case RTE_BBDEV_OP_FFT:
> result = sizeof(struct rte_bbdev_fft_op);
> break;
> + case RTE_BBDEV_OP_MLDTS:
> + result = sizeof(struct rte_bbdev_mldts_op);
> + break;
> default:
> break;
> }
> @@ -884,6 +887,10 @@ bbdev_op_init(struct rte_mempool *mempool, void *arg, void *element,
> struct rte_bbdev_fft_op *op = element;
> memset(op, 0, mempool->elt_size);
> op->mempool = mempool;
> + } else if (type == RTE_BBDEV_OP_MLDTS) {
> + struct rte_bbdev_mldts_op *op = element;
> + memset(op, 0, mempool->elt_size);
> + op->mempool = mempool;
> }
> }
>
> @@ -1135,6 +1142,7 @@ rte_bbdev_op_type_str(enum rte_bbdev_op_type op_type)
> "RTE_BBDEV_OP_LDPC_DEC",
> "RTE_BBDEV_OP_LDPC_ENC",
> "RTE_BBDEV_OP_FFT",
> + "RTE_BBDEV_OP_MLDTS",
> };
>
> if (op_type < BBDEV_OP_TYPE_COUNT)
> @@ -1184,3 +1192,4 @@ rte_bbdev_enqueue_status_str(enum rte_bbdev_enqueue_status status)
> rte_bbdev_log(ERR, "Invalid enqueue status");
> return NULL;
> }
> +
> diff --git a/lib/bbdev/rte_bbdev.h b/lib/bbdev/rte_bbdev.h
> index 52f6ed9b01..a5bcc09f10 100644
> --- a/lib/bbdev/rte_bbdev.h
> +++ b/lib/bbdev/rte_bbdev.h
> @@ -438,6 +438,12 @@ typedef uint16_t (*rte_bbdev_enqueue_fft_ops_t)(
> struct rte_bbdev_fft_op **ops,
> uint16_t num);
>
> +/** @internal Enqueue MLD-TS operations for processing on queue of a device. */
> +typedef uint16_t (*rte_bbdev_enqueue_mldts_ops_t)(
> + struct rte_bbdev_queue_data *q_data,
> + struct rte_bbdev_mldts_op **ops,
> + uint16_t num);
> +
> /** @internal Dequeue encode operations from a queue of a device. */
> typedef uint16_t (*rte_bbdev_dequeue_enc_ops_t)(
> struct rte_bbdev_queue_data *q_data,
> @@ -453,6 +459,11 @@ typedef uint16_t (*rte_bbdev_dequeue_fft_ops_t)(
> struct rte_bbdev_queue_data *q_data,
> struct rte_bbdev_fft_op **ops, uint16_t num);
>
> +/** @internal Dequeue MLDTS operations from a queue of a device. */
> +typedef uint16_t (*rte_bbdev_dequeue_mldts_ops_t)(
> + struct rte_bbdev_queue_data *q_data,
> + struct rte_bbdev_mldts_op **ops, uint16_t num);
> +
> #define RTE_BBDEV_NAME_MAX_LEN 64 /**< Max length of device name */
>
> /**
> @@ -512,6 +523,10 @@ struct __rte_cache_aligned rte_bbdev {
> /** User application callback for interrupts if present */
> struct rte_bbdev_cb_list list_cbs;
> struct rte_intr_handle *intr_handle; /**< Device interrupt handle */
> + /** Enqueue MLD-TS function */
> + rte_bbdev_enqueue_mldts_ops_t enqueue_mldts_ops;
> + /** Dequeue MLD-TS function */
> + rte_bbdev_dequeue_mldts_ops_t dequeue_mldts_ops;
> };
>
> /** @internal array of all devices */
> @@ -668,6 +683,36 @@ rte_bbdev_enqueue_fft_ops(uint16_t dev_id, uint16_t queue_id,
> return dev->enqueue_fft_ops(q_data, ops, num_ops);
> }
>
> +/**
> + * Enqueue a burst of MLDTS operations to a queue of the device.
> + * This functions only enqueues as many operations as currently possible and
> + * does not block until @p num_ops entries in the queue are available.
> + * This function does not provide any error notification to avoid the
> + * corresponding overhead.
> + *
> + * @param dev_id
> + * The identifier of the device.
> + * @param queue_id
> + * The index of the queue.
> + * @param ops
> + * Pointer array containing operations to be enqueued Must have at least
> + * @p num_ops entries
> + * @param num_ops
> + * The maximum number of operations to enqueue.
> + *
> + * @return
> + * The number of operations actually enqueued (this is the number of processed
> + * entries in the @p ops array).
> + */
> +static inline uint16_t
> +rte_bbdev_enqueue_mldts_ops(uint16_t dev_id, uint16_t queue_id,
> + struct rte_bbdev_mldts_op **ops, uint16_t num_ops)
> +{
> + struct rte_bbdev *dev = &rte_bbdev_devices[dev_id];
> + struct rte_bbdev_queue_data *q_data = &dev->data->queues[queue_id];
> + return dev->enqueue_mldts_ops(q_data, ops, num_ops);
> +}
> +
> /**
> * Dequeue a burst of processed encode operations from a queue of the device.
> * This functions returns only the current contents of the queue,
> @@ -823,6 +868,37 @@ rte_bbdev_dequeue_fft_ops(uint16_t dev_id, uint16_t queue_id,
> return dev->dequeue_fft_ops(q_data, ops, num_ops);
> }
>
> +/**
> + * Dequeue a burst of MLDTS operations from a queue of the device.
> + * This functions returns only the current contents of the queue, and does not
> + * block until @p num_ops is available.
> + * This function does not provide any error notification to avoid the
> + * corresponding overhead.
> + *
> + * @param dev_id
> + * The identifier of the device.
> + * @param queue_id
> + * The index of the queue.
> + * @param ops
> + * Pointer array where operations will be dequeued to. Must have at least
> + * @p num_ops entries
> + * @param num_ops
> + * The maximum number of operations to dequeue.
> + *
> + * @return
> + * The number of operations actually dequeued (this is the number of entries
> + * copied into the @p ops array).
> + */
> +__rte_experimental
> +static inline uint16_t
> +rte_bbdev_dequeue_mldts_ops(uint16_t dev_id, uint16_t queue_id,
> + struct rte_bbdev_mldts_op **ops, uint16_t num_ops)
> +{
> + struct rte_bbdev *dev = &rte_bbdev_devices[dev_id];
> + struct rte_bbdev_queue_data *q_data = &dev->data->queues[queue_id];
> + return dev->dequeue_mldts_ops(q_data, ops, num_ops);
> +}
> +
> /** Definitions of device event types */
> enum rte_bbdev_event_type {
> RTE_BBDEV_EVENT_UNKNOWN, /**< unknown event type */
> diff --git a/lib/bbdev/rte_bbdev_op.h b/lib/bbdev/rte_bbdev_op.h
> index 96a390cd9b..990d110fa7 100644
> --- a/lib/bbdev/rte_bbdev_op.h
> +++ b/lib/bbdev/rte_bbdev_op.h
> @@ -50,6 +50,10 @@ extern "C" {
> #define RTE_BBDEV_LDPC_MAX_CODE_BLOCKS (256)
> /* 12 CS maximum */
> #define RTE_BBDEV_MAX_CS_2 (6)
> +/* MLD-TS up to 4 layers */
> +#define RTE_BBDEV_MAX_MLD_LAYERS (4)
> +/* 12 SB per RB */
> +#define RTE_BBDEV_SCPERRB (12)
>
> /*
> * Maximum size to be used to manage the enum rte_bbdev_op_type
> @@ -241,6 +245,12 @@ enum rte_bbdev_op_fft_flag_bitmasks {
> RTE_BBDEV_FFT_FP16_OUTPUT = (1ULL << 7)
> };
>
> +/** Flags for MLDTS operation and capability structure */
> +enum rte_bbdev_op_mldts_flag_bitmasks {
> + /** Set if the device supports C/R repetition options. */
> + RTE_BBDEV_MLDTS_REP = (1ULL << 0),
> +};
> +
> /** Flags for the Code Block/Transport block mode */
> enum rte_bbdev_op_cb_mode {
> /** One operation is one or fraction of one transport block */
> @@ -783,6 +793,36 @@ struct rte_bbdev_op_fft {
> };
> /* >8 End of structure rte_bbdev_op_fft. */
>
> +/** Operation structure for MLDTS processing.
> + *
> + * The output mbuf data structure is expected to be allocated by the
> + * application with enough room for the output data.
> + */
> +
> +/* Structure rte_bbdev_op_mldts 8< */
> +struct rte_bbdev_op_mldts {
> + /** Input data QHy from QR decomposition. */
> + struct rte_bbdev_op_data qhy_input;
> + /** Input data R from QR decomposition. */
> + struct rte_bbdev_op_data r_input;
> + /** Output data post MLD-TS. */
> + struct rte_bbdev_op_data output;
> + /** Flags from *rte_bbdev_op_MLDTS_flag_bitmasks*. */
> + uint32_t op_flags;
> + /** Number of RBs. */
> + uint16_t num_rbs;
> + /** Number of layers 2->4. */
> + uint16_t num_layers;
> + /** Modulation order (2->8 QPSK to 256QAM). */
> + uint8_t q_m[RTE_BBDEV_MAX_MLD_LAYERS];
> + /** Row repetition for the same R matrix - subcarriers. */
> + uint8_t r_rep;
> + /** Column repetition for the same R matrix - symbols. */
> + uint8_t c_rep;
> +};
> +/* >8 End of structure rte_bbdev_op_mldts. */
> +
> +
> /** List of the capabilities for the Turbo Decoder */
> struct rte_bbdev_op_cap_turbo_dec {
> /** Flags from rte_bbdev_op_td_flag_bitmasks */
> @@ -839,6 +879,16 @@ struct rte_bbdev_op_cap_ldpc_enc {
> struct rte_bbdev_op_cap_fft {
> /** Flags from *rte_bbdev_op_fft_flag_bitmasks*. */
> uint32_t capability_flags;
> + /** Num input code block buffers. */
> + uint16_t num_buffers_src;
> + /** Num output code block buffers. */
> + uint16_t num_buffers_dst;
> +};
> +
> +/** List of the capabilities for the MLD */
> +struct rte_bbdev_op_cap_mld {
> + /** Flags from rte_bbdev_op_mldts_flag_bitmasks */
> + uint32_t capability_flags;
> /** Number of input code block buffers. */
> uint16_t num_buffers_src;
> /** Number of output code block buffers. */
> @@ -856,6 +906,7 @@ enum rte_bbdev_op_type {
> RTE_BBDEV_OP_LDPC_DEC, /**< LDPC decode */
> RTE_BBDEV_OP_LDPC_ENC, /**< LDPC encode */
> RTE_BBDEV_OP_FFT, /**< FFT */
> + RTE_BBDEV_OP_MLDTS, /**< MLD-TS */
> /* Note: RTE_BBDEV_OP_TYPE_SIZE_MAX must be larger or equal to maximum enum value */
> };
>
> @@ -864,7 +915,8 @@ enum {
> RTE_BBDEV_DRV_ERROR,
> RTE_BBDEV_DATA_ERROR,
> RTE_BBDEV_CRC_ERROR,
> - RTE_BBDEV_SYNDROME_ERROR
> + RTE_BBDEV_SYNDROME_ERROR,
> + RTE_BBDEV_ENGINE_ERROR
> };
>
> /** Structure specifying a single encode operation */
> @@ -911,6 +963,18 @@ struct rte_bbdev_fft_op {
> struct rte_bbdev_op_fft fft;
> };
>
> +/** Structure specifying a single mldts operation */
> +struct rte_bbdev_mldts_op {
> + /** Status of operation that was performed. */
> + int status;
> + /** Mempool which op instance is in. */
> + struct rte_mempool *mempool;
> + /** Opaque pointer for user data. */
> + void *opaque_data;
> + /** Contains turbo decoder specific parameters. */
> + struct rte_bbdev_op_mldts mldts;
> +};
> +
> /** Operation capabilities supported by a device */
> struct rte_bbdev_op_cap {
> enum rte_bbdev_op_type type; /**< Type of operation */
> @@ -920,6 +984,7 @@ struct rte_bbdev_op_cap {
> struct rte_bbdev_op_cap_ldpc_dec ldpc_dec;
> struct rte_bbdev_op_cap_ldpc_enc ldpc_enc;
> struct rte_bbdev_op_cap_fft fft;
> + struct rte_bbdev_op_cap_mld mld;
> } cap; /**< Operation-type specific capabilities */
> };
>
> @@ -1058,6 +1123,36 @@ rte_bbdev_fft_op_alloc_bulk(struct rte_mempool *mempool,
> return rte_mempool_get_bulk(mempool, (void **)ops, num_ops);
> }
>
> +/**
> + * Bulk allocate MLD operations from a mempool with parameter defaults reset.
> + *
> + * @param mempool
> + * Operation mempool, created by *rte_bbdev_op_pool_create*.
> + * @param ops
> + * Output array to place allocated operations.
> + * @param num_ops
> + * Number of operations to allocate.
> + *
> + * @returns
> + * - 0 on success.
> + * - EINVAL if invalid mempool is provided.
> + */
> +__rte_experimental
> +static inline int
> +rte_bbdev_mldts_op_alloc_bulk(struct rte_mempool *mempool,
> + struct rte_bbdev_mldts_op **ops, uint16_t num_ops)
> +{
> + struct rte_bbdev_op_pool_private *priv;
> +
> + /* Check type */
> + priv = (struct rte_bbdev_op_pool_private *)rte_mempool_get_priv(mempool);
> + if (unlikely(priv->type != RTE_BBDEV_OP_MLDTS))
> + return -EINVAL;
> +
> + /* Get elements */
> + return rte_mempool_get_bulk(mempool, (void **)ops, num_ops);
> +}
> +
> /**
> * Free decode operation structures that were allocated by
> * rte_bbdev_dec_op_alloc_bulk().
> @@ -1110,6 +1205,25 @@ rte_bbdev_fft_op_free_bulk(struct rte_bbdev_fft_op **ops, unsigned int num_ops)
> rte_mempool_put_bulk(ops[0]->mempool, (void **)ops, num_ops);
> }
>
> +/**
> + * Free encode operation structures that were allocated by
> + * rte_bbdev_mldts_op_alloc_bulk().
> + * All structures must belong to the same mempool.
> + *
> + * @param ops
> + * Operation structures
> + * @param num_ops
> + * Number of structures
> + */
> +__rte_experimental
> +static inline void
> +rte_bbdev_mldts_op_free_bulk(struct rte_bbdev_mldts_op **ops, unsigned int num_ops)
> +{
> + if (num_ops > 0)
> + rte_mempool_put_bulk(ops[0]->mempool, (void **)ops, num_ops);
> +}
> +
> +
> #ifdef __cplusplus
> }
> #endif
> diff --git a/lib/bbdev/version.map b/lib/bbdev/version.map
> index d0bb835255..8f28ae7c68 100644
> --- a/lib/bbdev/version.map
> +++ b/lib/bbdev/version.map
> @@ -50,4 +50,9 @@ EXPERIMENTAL {
> rte_bbdev_enqueue_status_str;
> rte_bbdev_fft_op_alloc_bulk;
> rte_bbdev_fft_op_free_bulk;
> + #added in 23.11
> + rte_bbdev_dequeue_mldts_ops;
> + rte_bbdev_enqueue_mldts_ops;
> + rte_bbdev_mldts_op_alloc_bulk;
> + rte_bbdev_mldts_op_free_bulk;
> };
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v2 2/5] bbdev: add new capabilities for FFT processing
2023-06-15 16:48 ` [PATCH v2 2/5] bbdev: add new capabilities for FFT processing Nicolas Chautru
@ 2023-09-18 15:08 ` Maxime Coquelin
2023-09-18 15:42 ` Maxime Coquelin
0 siblings, 1 reply; 22+ messages in thread
From: Maxime Coquelin @ 2023-09-18 15:08 UTC (permalink / raw)
To: Nicolas Chautru, dev; +Cc: trix, hemant.agrawal, david.marchand, hernan.vargas
On 6/15/23 18:48, Nicolas Chautru wrote:
> Extending existing FFT operation for new capabilities.
> Optional frequency domain dewindowing, frequency resampling,
> timing error correction and time offset per CS.
>
> Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
> ---
> doc/guides/prog_guide/bbdev.rst | 24 ++++++++++++++++++++++++
> lib/bbdev/rte_bbdev_op.h | 23 ++++++++++++++++++++++-
> 2 files changed, 46 insertions(+), 1 deletion(-)
>
> diff --git a/doc/guides/prog_guide/bbdev.rst b/doc/guides/prog_guide/bbdev.rst
> index 8e384015ee..95b33562fe 100644
> --- a/doc/guides/prog_guide/bbdev.rst
> +++ b/doc/guides/prog_guide/bbdev.rst
> @@ -1111,6 +1111,18 @@ with the operation flags forming a bitmask in the ``op_flags`` field.
> |RTE_BBDEV_FFT_FP16_OUTPUT |
> | Set if the output data shall use FP16 format instead of INT16 |
> +--------------------------------------------------------------------+
> +|RTE_BBDEV_FFT_TIMING_OFFSET_PER_CS |
> +| Set if device supports adjusting time offset per CS |
> ++--------------------------------------------------------------------+
> +|RTE_BBDEV_FFT_TIMING_ERROR |
> +| Set if device supports correcting for timing error |
> ++--------------------------------------------------------------------+
> +|RTE_BBDEV_FFT_DEWINDOWING |
> +| Set if enabling the option FFT Dewindowing in Frequency domain |
> ++--------------------------------------------------------------------+
> +|RTE_BBDEV_FFT_FREQ_RESAMPLING |
> +| Set if device supports the optional frequency resampling |
> ++--------------------------------------------------------------------+
>
> The FFT parameters are set out in the table below.
>
> @@ -1121,6 +1133,8 @@ The FFT parameters are set out in the table below.
> +-------------------------+--------------------------------------------------------------+
> |base_output |output data |
> +-------------------------+--------------------------------------------------------------+
> +|dewindowing_input |optional frequency domain dewindowing input data |
> ++-------------------------+--------------------------------------------------------------+
> |power_meas_output |optional output data with power measurement on DFT output |
> +-------------------------+--------------------------------------------------------------+
> |op_flags |bitmask of all active operation capabilities |
> @@ -1155,6 +1169,16 @@ The FFT parameters are set out in the table below.
> +-------------------------+--------------------------------------------------------------+
> |fp16_exp_adjust |value added to FP16 exponent at conversion from INT16 |
> +-------------------------+--------------------------------------------------------------+
> +|freq_resample_mode |frequency ressampling mode (0:transparent, 1-2: resample) |
> ++-------------------------+--------------------------------------------------------------+
> +| output_depadded_size |output depadded size prior to frequency resampling |
> ++-------------------------+--------------------------------------------------------------+
> +|cs_theta_0 |timing error correction initial phase |
> ++-------------------------+--------------------------------------------------------------+
> +|cs_theta_d |timing error correction phase increment |
> ++-------------------------+--------------------------------------------------------------+
> +|time_offset |time offset per CS of time domain samples |
> ++-------------------------+--------------------------------------------------------------+
>
> The mbuf input ``base_input`` is mandatory for all bbdev PMDs and
> is the incoming data for the processing. Its size may not fit into an actual mbuf,
> diff --git a/lib/bbdev/rte_bbdev_op.h b/lib/bbdev/rte_bbdev_op.h
> index 990d110fa7..682e265327 100644
> --- a/lib/bbdev/rte_bbdev_op.h
> +++ b/lib/bbdev/rte_bbdev_op.h
> @@ -50,6 +50,7 @@ extern "C" {
> #define RTE_BBDEV_LDPC_MAX_CODE_BLOCKS (256)
> /* 12 CS maximum */
> #define RTE_BBDEV_MAX_CS_2 (6)
> +#define RTE_BBDEV_MAX_CS (12)
> /* MLD-TS up to 4 layers */
> #define RTE_BBDEV_MAX_MLD_LAYERS (4)
> /* 12 SB per RB */
> @@ -242,7 +243,15 @@ enum rte_bbdev_op_fft_flag_bitmasks {
> /** Set if the input data used FP16 format. */
> RTE_BBDEV_FFT_FP16_INPUT = (1ULL << 6),
> /** Set if the output data uses FP16 format. */
> - RTE_BBDEV_FFT_FP16_OUTPUT = (1ULL << 7)
> + RTE_BBDEV_FFT_FP16_OUTPUT = (1ULL << 7),
> + /** Flexible adjustment of Timing offset adjustment per CS. */
> + RTE_BBDEV_FFT_TIMING_OFFSET_PER_CS = (1ULL << 8),
> + /** Flexible adjustment of Timing error correction per CS. */
> + RTE_BBDEV_FFT_TIMING_ERROR = (1ULL << 9),
> + /** Set for optional frequency domain dewindowing. */
> + RTE_BBDEV_FFT_DEWINDOWING = (1ULL << 10),
> + /** Flexible adjustment of frequency resampling mode. */
> + RTE_BBDEV_FFT_FREQ_RESAMPLING = (1ULL << 11)
> };
>
> /** Flags for MLDTS operation and capability structure */
> @@ -756,6 +765,8 @@ struct rte_bbdev_op_fft {
> struct rte_bbdev_op_data base_input;
> /** Output data starting from first antenna and first cyclic shift. */
> struct rte_bbdev_op_data base_output;
> + /** Optional frequency window input data. */
> + struct rte_bbdev_op_data dewindowing_input;
> /** Optional power measurement output data. */
> struct rte_bbdev_op_data power_meas_output;
> /** Flags from rte_bbdev_op_fft_flag_bitmasks. */
> @@ -790,6 +801,16 @@ struct rte_bbdev_op_fft {
> uint16_t power_shift;
> /** Adjust the FP6 exponent for INT<->FP16 conversion. */
> uint16_t fp16_exp_adjust;
> + /** Frequency resampling : 0: Transparent Mode1: 4/3 Resample2: 2/3 Resample. */
> + int8_t freq_resample_mode;
> + /** Output depadded size prior to frequency resampling. */
> + uint16_t output_depadded_size;
> + /** Time error correction initial phase. */
> + uint16_t cs_theta_0[RTE_BBDEV_MAX_CS];
> + /** Time error correction phase increment. */
> + uint32_t cs_theta_d[RTE_BBDEV_MAX_CS];
> + /* Time offset per CS of time domain samples. */
> + int8_t time_offset[RTE_BBDEV_MAX_CS];
> };
> /* >8 End of structure rte_bbdev_op_fft. */
>
I think you need to document ABI change in:
doc/guides/rel_notes/release_23_11.rst
Once done, please add my:
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Maxime
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v2 3/5] bbdev: add new capability for FEC 5G UL processing
2023-06-15 16:48 ` [PATCH v2 3/5] bbdev: add new capability for FEC 5G UL processing Nicolas Chautru
@ 2023-09-18 15:09 ` Maxime Coquelin
0 siblings, 0 replies; 22+ messages in thread
From: Maxime Coquelin @ 2023-09-18 15:09 UTC (permalink / raw)
To: Nicolas Chautru, dev; +Cc: trix, hemant.agrawal, david.marchand, hernan.vargas
On 6/15/23 18:48, Nicolas Chautru wrote:
> Extending existing LDPC UL operation for new capability.
> Option to compress HARQ memory to 4 bits per LLR.
>
> Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
> ---
> doc/guides/prog_guide/bbdev.rst | 6 ++++++
> lib/bbdev/rte_bbdev_op.h | 4 +++-
> 2 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/doc/guides/prog_guide/bbdev.rst b/doc/guides/prog_guide/bbdev.rst
> index 95b33562fe..c43e478eda 100644
> --- a/doc/guides/prog_guide/bbdev.rst
> +++ b/doc/guides/prog_guide/bbdev.rst
> @@ -903,6 +903,12 @@ given below.
> |RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_LOOPBACK |
> | Set if a device supports loopback access to HARQ internal memory |
> +--------------------------------------------------------------------+
> +|RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_FILLERS |
> +| Set if a device includes LLR filler bits in HARQ circular buffer |
> ++--------------------------------------------------------------------+
> +|RTE_BBDEV_LDPC_HARQ_4BIT_COMPRESSION |
> +|Set if a device supports input/output 4 bits HARQ compression |
> ++--------------------------------------------------------------------+
>
> The structure passed for each LDPC decode operation is given below,
> with the 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
> index 682e265327..a4a2ae1440 100644
> --- a/lib/bbdev/rte_bbdev_op.h
> +++ b/lib/bbdev/rte_bbdev_op.h
> @@ -203,7 +203,9 @@ 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 << 19)
> + RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_FILLERS = (1ULL << 19),
> + /** Set if a device supports input/output HARQ 4bits compression. */
> + RTE_BBDEV_LDPC_HARQ_4BIT_COMPRESSION = (1ULL << 20)
> };
>
> /** Flags for LDPC encoder operation and capability structure */
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Maxime
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v2 4/5] bbdev: improving error handling for queue configuration
2023-06-15 16:49 ` [PATCH v2 4/5] bbdev: improving error handling for queue configuration Nicolas Chautru
@ 2023-09-18 15:20 ` Maxime Coquelin
0 siblings, 0 replies; 22+ messages in thread
From: Maxime Coquelin @ 2023-09-18 15:20 UTC (permalink / raw)
To: Nicolas Chautru, dev; +Cc: trix, hemant.agrawal, david.marchand, hernan.vargas
On 6/15/23 18:49, Nicolas Chautru wrote:
> Refactor of the error handling based on available priority
> queue to be more generic.
>
> Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
> ---
> lib/bbdev/rte_bbdev.c | 15 ++++++---------
> 1 file changed, 6 insertions(+), 9 deletions(-)
>
> diff --git a/lib/bbdev/rte_bbdev.c b/lib/bbdev/rte_bbdev.c
> index 26fc077bdc..589b796ea3 100644
> --- a/lib/bbdev/rte_bbdev.c
> +++ b/lib/bbdev/rte_bbdev.c
> @@ -441,6 +441,7 @@ rte_bbdev_queue_configure(uint16_t dev_id, uint16_t queue_id,
> const struct rte_bbdev_op_cap *p;
> struct rte_bbdev_queue_conf *stored_conf;
> const char *op_type_str;
> + unsigned int max_priority;
> VALID_DEV_OR_RET_ERR(dev, dev_id);
>
> VALID_DEV_OPS_OR_RET_ERR(dev, dev_id);
> @@ -494,20 +495,16 @@ rte_bbdev_queue_configure(uint16_t dev_id, uint16_t queue_id,
> conf->queue_size, queue_id, dev_id);
> return -EINVAL;
> }
> - if (conf->op_type == RTE_BBDEV_OP_TURBO_DEC &&
> - conf->priority > dev_info.max_ul_queue_priority) {
> + if ((uint8_t)conf->op_type >= RTE_BBDEV_OP_TYPE_SIZE_MAX) {
> rte_bbdev_log(ERR,
> - "Priority (%u) of queue %u of bbdev %u must be <= %u",
> - conf->priority, queue_id, dev_id,
> - dev_info.max_ul_queue_priority);
> + "Invalid operation type (%u) ", conf->op_type);
> return -EINVAL;
> }
> - if (conf->op_type == RTE_BBDEV_OP_TURBO_ENC &&
> - conf->priority > dev_info.max_dl_queue_priority) {
> + max_priority = dev_info.queue_priority[conf->op_type];
> + if (conf->priority > max_priority) {
> rte_bbdev_log(ERR,
> "Priority (%u) of queue %u of bbdev %u must be <= %u",
> - conf->priority, queue_id, dev_id,
> - dev_info.max_dl_queue_priority);
> + conf->priority, queue_id, dev_id, max_priority);
> return -EINVAL;
> }
> }
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Maxime
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v2 5/5] devtools: ignore changes into bbdev experimental API
2023-06-15 16:49 ` [PATCH v2 5/5] devtools: ignore changes into bbdev experimental API Nicolas Chautru
2023-09-06 6:17 ` Hemant Agrawal
@ 2023-09-18 15:22 ` Maxime Coquelin
1 sibling, 0 replies; 22+ messages in thread
From: Maxime Coquelin @ 2023-09-18 15:22 UTC (permalink / raw)
To: Nicolas Chautru, dev; +Cc: trix, hemant.agrawal, david.marchand, hernan.vargas
On 6/15/23 18:49, Nicolas Chautru wrote:
> Developpers are warned that the related fft experimental functions
> do not preserve ABI, hence these can be waived.
>
> Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
> ---
> devtools/libabigail.abignore | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/devtools/libabigail.abignore b/devtools/libabigail.abignore
> index 7a93de3ba1..09b8f156b5 100644
> --- a/devtools/libabigail.abignore
> +++ b/devtools/libabigail.abignore
> @@ -30,7 +30,9 @@
> [suppress_type]
> type_kind = enum
> changed_enumerators = RTE_CRYPTO_ASYM_XFORM_ECPM, RTE_CRYPTO_ASYM_XFORM_TYPE_LIST_END
> -
> +; Ignore changes to bbdev FFT API which is experimental
> +[suppress_type]
> + name = rte_bbdev_fft_op
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> ; Temporary exceptions till next major ABI version ;
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
With Hemmant's typo fix suggestion:
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v2 2/5] bbdev: add new capabilities for FFT processing
2023-09-18 15:08 ` Maxime Coquelin
@ 2023-09-18 15:42 ` Maxime Coquelin
2023-09-18 20:50 ` Chautru, Nicolas
0 siblings, 1 reply; 22+ messages in thread
From: Maxime Coquelin @ 2023-09-18 15:42 UTC (permalink / raw)
To: Nicolas Chautru, dev; +Cc: trix, hemant.agrawal, david.marchand, hernan.vargas
On 9/18/23 17:08, Maxime Coquelin wrote:
>
>
> On 6/15/23 18:48, Nicolas Chautru wrote:
>> Extending existing FFT operation for new capabilities.
>> Optional frequency domain dewindowing, frequency resampling,
>> timing error correction and time offset per CS.
>>
>> Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
>> ---
>> doc/guides/prog_guide/bbdev.rst | 24 ++++++++++++++++++++++++
>> lib/bbdev/rte_bbdev_op.h | 23 ++++++++++++++++++++++-
>> 2 files changed, 46 insertions(+), 1 deletion(-)
>>
>> diff --git a/doc/guides/prog_guide/bbdev.rst
>> b/doc/guides/prog_guide/bbdev.rst
>> index 8e384015ee..95b33562fe 100644
>> --- a/doc/guides/prog_guide/bbdev.rst
>> +++ b/doc/guides/prog_guide/bbdev.rst
>> @@ -1111,6 +1111,18 @@ with the operation flags forming a bitmask in
>> the ``op_flags`` field.
>> |RTE_BBDEV_FFT_FP16_OUTPUT |
>> | Set if the output data shall use FP16 format instead of INT16 |
>> +--------------------------------------------------------------------+
>> +|RTE_BBDEV_FFT_TIMING_OFFSET_PER_CS |
>> +| Set if device supports adjusting time offset per CS |
>> ++--------------------------------------------------------------------+
>> +|RTE_BBDEV_FFT_TIMING_ERROR |
>> +| Set if device supports correcting for timing error |
>> ++--------------------------------------------------------------------+
>> +|RTE_BBDEV_FFT_DEWINDOWING |
>> +| Set if enabling the option FFT Dewindowing in Frequency domain |
>> ++--------------------------------------------------------------------+
>> +|RTE_BBDEV_FFT_FREQ_RESAMPLING |
>> +| Set if device supports the optional frequency resampling |
>> ++--------------------------------------------------------------------+
>> The FFT parameters are set out in the table below.
>> @@ -1121,6 +1133,8 @@ The FFT parameters are set out in the table below.
>>
>> +-------------------------+--------------------------------------------------------------+
>> |base_output |output
>> data |
>>
>> +-------------------------+--------------------------------------------------------------+
>> +|dewindowing_input |optional frequency domain dewindowing
>> input data |
>> ++-------------------------+--------------------------------------------------------------+
>> |power_meas_output |optional output data with power
>> measurement on DFT output |
>>
>> +-------------------------+--------------------------------------------------------------+
>> |op_flags |bitmask of all active operation
>> capabilities |
>> @@ -1155,6 +1169,16 @@ The FFT parameters are set out in the table below.
>>
>> +-------------------------+--------------------------------------------------------------+
>> |fp16_exp_adjust |value added to FP16 exponent at
>> conversion from INT16 |
>>
>> +-------------------------+--------------------------------------------------------------+
>> +|freq_resample_mode |frequency ressampling mode (0:transparent,
>> 1-2: resample) |
>> ++-------------------------+--------------------------------------------------------------+
>> +| output_depadded_size |output depadded size prior to frequency
>> resampling |
>> ++-------------------------+--------------------------------------------------------------+
>> +|cs_theta_0 |timing error correction initial
>> phase |
>> ++-------------------------+--------------------------------------------------------------+
>> +|cs_theta_d |timing error correction phase
>> increment |
>> ++-------------------------+--------------------------------------------------------------+
>> +|time_offset |time offset per CS of time domain
>> samples |
>> ++-------------------------+--------------------------------------------------------------+
>> The mbuf input ``base_input`` is mandatory for all bbdev PMDs and
>> is the incoming data for the processing. Its size may not fit into
>> an actual mbuf,
>> diff --git a/lib/bbdev/rte_bbdev_op.h b/lib/bbdev/rte_bbdev_op.h
>> index 990d110fa7..682e265327 100644
>> --- a/lib/bbdev/rte_bbdev_op.h
>> +++ b/lib/bbdev/rte_bbdev_op.h
>> @@ -50,6 +50,7 @@ extern "C" {
>> #define RTE_BBDEV_LDPC_MAX_CODE_BLOCKS (256)
>> /* 12 CS maximum */
>> #define RTE_BBDEV_MAX_CS_2 (6)
>> +#define RTE_BBDEV_MAX_CS (12)
>> /* MLD-TS up to 4 layers */
>> #define RTE_BBDEV_MAX_MLD_LAYERS (4)
>> /* 12 SB per RB */
>> @@ -242,7 +243,15 @@ enum rte_bbdev_op_fft_flag_bitmasks {
>> /** Set if the input data used FP16 format. */
>> RTE_BBDEV_FFT_FP16_INPUT = (1ULL << 6),
>> /** Set if the output data uses FP16 format. */
>> - RTE_BBDEV_FFT_FP16_OUTPUT = (1ULL << 7)
>> + RTE_BBDEV_FFT_FP16_OUTPUT = (1ULL << 7),
>> + /** Flexible adjustment of Timing offset adjustment per CS. */
>> + RTE_BBDEV_FFT_TIMING_OFFSET_PER_CS = (1ULL << 8),
>> + /** Flexible adjustment of Timing error correction per CS. */
>> + RTE_BBDEV_FFT_TIMING_ERROR = (1ULL << 9),
>> + /** Set for optional frequency domain dewindowing. */
>> + RTE_BBDEV_FFT_DEWINDOWING = (1ULL << 10),
>> + /** Flexible adjustment of frequency resampling mode. */
>> + RTE_BBDEV_FFT_FREQ_RESAMPLING = (1ULL << 11)
>> };
>> /** Flags for MLDTS operation and capability structure */
>> @@ -756,6 +765,8 @@ struct rte_bbdev_op_fft {
>> struct rte_bbdev_op_data base_input;
>> /** Output data starting from first antenna and first cyclic
>> shift. */
>> struct rte_bbdev_op_data base_output;
>> + /** Optional frequency window input data. */
>> + struct rte_bbdev_op_data dewindowing_input;
>> /** Optional power measurement output data. */
>> struct rte_bbdev_op_data power_meas_output;
>> /** Flags from rte_bbdev_op_fft_flag_bitmasks. */
>> @@ -790,6 +801,16 @@ struct rte_bbdev_op_fft {
>> uint16_t power_shift;
>> /** Adjust the FP6 exponent for INT<->FP16 conversion. */
>> uint16_t fp16_exp_adjust;
>> + /** Frequency resampling : 0: Transparent Mode1: 4/3 Resample2:
>> 2/3 Resample. */
>> + int8_t freq_resample_mode;
>> + /** Output depadded size prior to frequency resampling. */
>> + uint16_t output_depadded_size;
>> + /** Time error correction initial phase. */
>> + uint16_t cs_theta_0[RTE_BBDEV_MAX_CS];
>> + /** Time error correction phase increment. */
>> + uint32_t cs_theta_d[RTE_BBDEV_MAX_CS];
>> + /* Time offset per CS of time domain samples. */
>> + int8_t time_offset[RTE_BBDEV_MAX_CS];
>> };
>> /* >8 End of structure rte_bbdev_op_fft. */
>
> I think you need to document ABI change in:
> doc/guides/rel_notes/release_23_11.rst
Nevermind, I forgot the FFT API was still experimental.
No need to submit a new revision, I will fix the typos in patch 5.
Maxime
> Once done, please add my:
> Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
>
> Maxime
>
>
^ permalink raw reply [flat|nested] 22+ messages in thread
* RE: [PATCH v2 2/5] bbdev: add new capabilities for FFT processing
2023-09-18 15:42 ` Maxime Coquelin
@ 2023-09-18 20:50 ` Chautru, Nicolas
0 siblings, 0 replies; 22+ messages in thread
From: Chautru, Nicolas @ 2023-09-18 20:50 UTC (permalink / raw)
To: Maxime Coquelin, dev
Cc: Rix, Tom, hemant.agrawal, david.marchand, Vargas, Hernan
Thanks Maxime.
> -----Original Message-----
> From: Maxime Coquelin <maxime.coquelin@redhat.com>
> Sent: Monday, September 18, 2023 8:43 AM
> To: Chautru, Nicolas <nicolas.chautru@intel.com>; dev@dpdk.org
> Cc: Rix, Tom <trix@redhat.com>; hemant.agrawal@nxp.com;
> david.marchand@redhat.com; Vargas, Hernan <hernan.vargas@intel.com>
> Subject: Re: [PATCH v2 2/5] bbdev: add new capabilities for FFT processing
>
>
>
> On 9/18/23 17:08, Maxime Coquelin wrote:
> >
> >
> > On 6/15/23 18:48, Nicolas Chautru wrote:
> >> Extending existing FFT operation for new capabilities.
> >> Optional frequency domain dewindowing, frequency resampling, timing
> >> error correction and time offset per CS.
> >>
> >> Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
> >> ---
> >> doc/guides/prog_guide/bbdev.rst | 24 ++++++++++++++++++++++++
> >> lib/bbdev/rte_bbdev_op.h | 23 ++++++++++++++++++++++-
> >> 2 files changed, 46 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/doc/guides/prog_guide/bbdev.rst
> >> b/doc/guides/prog_guide/bbdev.rst index 8e384015ee..95b33562fe
> 100644
> >> --- a/doc/guides/prog_guide/bbdev.rst
> >> +++ b/doc/guides/prog_guide/bbdev.rst
> >> @@ -1111,6 +1111,18 @@ with the operation flags forming a bitmask in
> >> the ``op_flags`` field.
> >> |RTE_BBDEV_FFT_FP16_OUTPUT
> >> |
> >> | Set if the output data shall use FP16 format instead of INT16
> >> |
> >>
> >> +--------------------------------------------------------------------
> >> +
> >> +|RTE_BBDEV_FFT_TIMING_OFFSET_PER_CS
> >> +|| Set if device supports adjusting time offset per CS
> >> +||
> >> ++--------------------------------------------------------------------+
> >> +|RTE_BBDEV_FFT_TIMING_ERROR
> >> +|| Set if device supports correcting for timing error
> >> +||
> >> ++--------------------------------------------------------------------+
> >> +|RTE_BBDEV_FFT_DEWINDOWING
> >> +|| Set if enabling the option FFT Dewindowing in Frequency domain
> >> +||
> >> ++--------------------------------------------------------------------+
> >> +|RTE_BBDEV_FFT_FREQ_RESAMPLING
> >> +|| Set if device supports the optional frequency resampling
> >> +||
> >> ++--------------------------------------------------------------------+
> >> The FFT parameters are set out in the table below.
> >> @@ -1121,6 +1133,8 @@ The FFT parameters are set out in the table
> below.
> >>
> >> +-------------------------+--------------------------------------------------------------+
> >> |base_output |output
> >> data |
> >>
> >> +-------------------------+--------------------------------------------------------------+
> >> +|dewindowing_input |optional frequency domain dewindowing
> >> input data |
> >> ++-------------------------+--------------------------------------------------------------+
> >> |power_meas_output |optional output data with power
> >> measurement on DFT output |
> >>
> >> +-------------------------+--------------------------------------------------------------+
> >> |op_flags |bitmask of all active operation
> >> capabilities | @@ -1155,6 +1169,16 @@ The FFT
> >> parameters are set out in the table below.
> >>
> >> +-------------------------+--------------------------------------------------------------+
> >> |fp16_exp_adjust |value added to FP16 exponent at
> >> conversion from INT16 |
> >>
> >> +-------------------------+--------------------------------------------------------------+
> >> +|freq_resample_mode |frequency ressampling mode
> >> +|(0:transparent,
> >> 1-2: resample) |
> >> ++-------------------------+--------------------------------------------------------------+
> >> +| output_depadded_size |output depadded size prior to frequency
> >> resampling |
> >> ++-------------------------+--------------------------------------------------------------+
> >> +|cs_theta_0 |timing error correction initial
> >> phase |
> >> ++-------------------------+--------------------------------------------------------------+
> >> +|cs_theta_d |timing error correction phase
> >> increment |
> >> ++-------------------------+--------------------------------------------------------------+
> >> +|time_offset |time offset per CS of time domain
> >> samples |
> >> ++-------------------------+--------------------------------------------------------------+
> >> The mbuf input ``base_input`` is mandatory for all bbdev PMDs and
> >> is the incoming data for the processing. Its size may not fit into
> >> an actual mbuf, diff --git a/lib/bbdev/rte_bbdev_op.h
> >> b/lib/bbdev/rte_bbdev_op.h index 990d110fa7..682e265327 100644
> >> --- a/lib/bbdev/rte_bbdev_op.h
> >> +++ b/lib/bbdev/rte_bbdev_op.h
> >> @@ -50,6 +50,7 @@ extern "C" {
> >> #define RTE_BBDEV_LDPC_MAX_CODE_BLOCKS (256)
> >> /* 12 CS maximum */
> >> #define RTE_BBDEV_MAX_CS_2 (6)
> >> +#define RTE_BBDEV_MAX_CS (12)
> >> /* MLD-TS up to 4 layers */
> >> #define RTE_BBDEV_MAX_MLD_LAYERS (4)
> >> /* 12 SB per RB */
> >> @@ -242,7 +243,15 @@ enum rte_bbdev_op_fft_flag_bitmasks {
> >> /** Set if the input data used FP16 format. */
> >> RTE_BBDEV_FFT_FP16_INPUT = (1ULL << 6),
> >> /** Set if the output data uses FP16 format. */
> >> - RTE_BBDEV_FFT_FP16_OUTPUT = (1ULL << 7)
> >> + RTE_BBDEV_FFT_FP16_OUTPUT = (1ULL << 7),
> >> + /** Flexible adjustment of Timing offset adjustment per CS. */
> >> + RTE_BBDEV_FFT_TIMING_OFFSET_PER_CS = (1ULL << 8),
> >> + /** Flexible adjustment of Timing error correction per CS. */
> >> + RTE_BBDEV_FFT_TIMING_ERROR = (1ULL << 9),
> >> + /** Set for optional frequency domain dewindowing. */
> >> + RTE_BBDEV_FFT_DEWINDOWING = (1ULL << 10),
> >> + /** Flexible adjustment of frequency resampling mode. */
> >> + RTE_BBDEV_FFT_FREQ_RESAMPLING = (1ULL << 11)
> >> };
> >> /** Flags for MLDTS operation and capability structure */ @@ -756,6
> >> +765,8 @@ struct rte_bbdev_op_fft {
> >> struct rte_bbdev_op_data base_input;
> >> /** Output data starting from first antenna and first cyclic
> >> shift. */
> >> struct rte_bbdev_op_data base_output;
> >> + /** Optional frequency window input data. */
> >> + struct rte_bbdev_op_data dewindowing_input;
> >> /** Optional power measurement output data. */
> >> struct rte_bbdev_op_data power_meas_output;
> >> /** Flags from rte_bbdev_op_fft_flag_bitmasks. */ @@ -790,6
> >> +801,16 @@ struct rte_bbdev_op_fft {
> >> uint16_t power_shift;
> >> /** Adjust the FP6 exponent for INT<->FP16 conversion. */
> >> uint16_t fp16_exp_adjust;
> >> + /** Frequency resampling : 0: Transparent Mode1: 4/3 Resample2:
> >> 2/3 Resample. */
> >> + int8_t freq_resample_mode;
> >> + /** Output depadded size prior to frequency resampling. */
> >> + uint16_t output_depadded_size;
> >> + /** Time error correction initial phase. */
> >> + uint16_t cs_theta_0[RTE_BBDEV_MAX_CS];
> >> + /** Time error correction phase increment. */
> >> + uint32_t cs_theta_d[RTE_BBDEV_MAX_CS];
> >> + /* Time offset per CS of time domain samples. */
> >> + int8_t time_offset[RTE_BBDEV_MAX_CS];
> >> };
> >> /* >8 End of structure rte_bbdev_op_fft. */
> >
> > I think you need to document ABI change in:
> > doc/guides/rel_notes/release_23_11.rst
>
> Nevermind, I forgot the FFT API was still experimental.
> No need to submit a new revision, I will fix the typos in patch 5.
>
> Maxime
>
> > Once done, please add my:
> > Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
> >
> > Maxime
> >
> >
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v2 0/5] bbdev: API extension for 23.11
2023-06-15 16:48 [PATCH v2 0/5] bbdev: API extension for 23.11 Nicolas Chautru
` (7 preceding siblings ...)
2023-09-06 6:20 ` Hemant Agrawal
@ 2023-09-21 7:35 ` Maxime Coquelin
8 siblings, 0 replies; 22+ messages in thread
From: Maxime Coquelin @ 2023-09-21 7:35 UTC (permalink / raw)
To: Nicolas Chautru, dev; +Cc: trix, hemant.agrawal, david.marchand, hernan.vargas
On 6/15/23 18:48, Nicolas Chautru wrote:
> v2: moving the new mld functions at the end of struct rte_bbdev to avoid
> ABI offset changes based on feedback with Maxime.
> Adding a commit to waive the FFT ABI warning since that experimental function
> could break ABI (let me know if preferred to be merged with the FFT
> commit causing the FFT change).
>
>
> Including v1 for extending the bbdev api for 23.11.
> The new MLD-TS is expected to be non ABI compatible, the other ones
> should not break ABI.
> I will send a deprecation notice in parallel.
>
> This introduces a new operation (on top of FEC and FFT) to support
> equalization for MLD-TS. There also more modular API extension for
> existing FFT and FEC operation.
>
> Thanks
> Nic
>
>
> Nicolas Chautru (5):
> bbdev: add operation type for MLDTS procession
> bbdev: add new capabilities for FFT processing
> bbdev: add new capability for FEC 5G UL processing
> bbdev: improving error handling for queue configuration
> devtools: ignore changes into bbdev experimental API
>
> devtools/libabigail.abignore | 4 +-
> doc/guides/prog_guide/bbdev.rst | 83 ++++++++++++++++++
> lib/bbdev/rte_bbdev.c | 26 +++---
> lib/bbdev/rte_bbdev.h | 76 +++++++++++++++++
> lib/bbdev/rte_bbdev_op.h | 143 +++++++++++++++++++++++++++++++-
> lib/bbdev/version.map | 5 ++
> 6 files changed, 323 insertions(+), 14 deletions(-)
>
Applied to next-baseband/for-main.
Thanks,
Maxime
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2023-09-21 7:35 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-15 16:48 [PATCH v2 0/5] bbdev: API extension for 23.11 Nicolas Chautru
2023-06-15 16:48 ` [PATCH v2 1/5] bbdev: add operation type for MLDTS procession Nicolas Chautru
2023-09-18 15:03 ` Maxime Coquelin
2023-06-15 16:48 ` [PATCH v2 2/5] bbdev: add new capabilities for FFT processing Nicolas Chautru
2023-09-18 15:08 ` Maxime Coquelin
2023-09-18 15:42 ` Maxime Coquelin
2023-09-18 20:50 ` Chautru, Nicolas
2023-06-15 16:48 ` [PATCH v2 3/5] bbdev: add new capability for FEC 5G UL processing Nicolas Chautru
2023-09-18 15:09 ` Maxime Coquelin
2023-06-15 16:49 ` [PATCH v2 4/5] bbdev: improving error handling for queue configuration Nicolas Chautru
2023-09-18 15:20 ` Maxime Coquelin
2023-06-15 16:49 ` [PATCH v2 5/5] devtools: ignore changes into bbdev experimental API Nicolas Chautru
2023-09-06 6:17 ` Hemant Agrawal
2023-09-12 20:32 ` Vargas, Hernan
2023-09-13 9:31 ` Hemant Agrawal
2023-09-18 15:22 ` Maxime Coquelin
2023-07-17 22:28 ` [PATCH v2 0/5] bbdev: API extension for 23.11 Chautru, Nicolas
2023-08-04 16:14 ` Vargas, Hernan
2023-09-05 17:48 ` Chautru, Nicolas
2023-07-18 9:18 ` Hemant Agrawal
2023-09-06 6:20 ` Hemant Agrawal
2023-09-21 7:35 ` Maxime Coquelin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).