* [PATCH v1 1/2] bbdev: add trace points per operation
2025-05-27 22:36 [PATCH v1 0/2] bbdev: add trace point per operations Nicolas Chautru
@ 2025-05-27 22:36 ` Nicolas Chautru
2025-05-27 22:36 ` [PATCH v1 2/2] baseband/acc: " Nicolas Chautru
1 sibling, 0 replies; 3+ messages in thread
From: Nicolas Chautru @ 2025-05-27 22:36 UTC (permalink / raw)
To: dev, maxime.coquelin; +Cc: hemant.agrawal, hernan.vargas, Nicolas Chautru
Adds trace points for rte_bbdev for each operation
type set of input parameters.
---
lib/bbdev/bbdev_trace.h | 113 +++++++++++++++++++++++++++++++++
lib/bbdev/bbdev_trace_points.c | 12 ++++
lib/bbdev/rte_bbdev.c | 24 +++++++
lib/bbdev/rte_bbdev.h | 14 ++++
4 files changed, 163 insertions(+)
diff --git a/lib/bbdev/bbdev_trace.h b/lib/bbdev/bbdev_trace.h
index 7256d6b703..dbef6efa3b 100644
--- a/lib/bbdev/bbdev_trace.h
+++ b/lib/bbdev/bbdev_trace.h
@@ -62,6 +62,119 @@ RTE_TRACE_POINT(
rte_trace_point_emit_u16(queue_id);
)
+
+RTE_TRACE_POINT(
+ rte_bbdev_trace_op_ldpc_dec,
+ RTE_TRACE_POINT_ARGS(const struct rte_bbdev_op_ldpc_dec ldpc_dec),
+ rte_trace_point_emit_u8(ldpc_dec.code_block_mode);
+ rte_trace_point_emit_u8(ldpc_dec.tb_params.c);
+ rte_trace_point_emit_u8(ldpc_dec.tb_params.cab);
+ rte_trace_point_emit_u32(ldpc_dec.tb_params.ea);
+ rte_trace_point_emit_u32(ldpc_dec.tb_params.eb);
+ rte_trace_point_emit_u8(ldpc_dec.tb_params.r);
+ rte_trace_point_emit_u32(ldpc_dec.cb_params.e);
+ rte_trace_point_emit_u32(ldpc_dec.op_flags);
+ rte_trace_point_emit_u8(ldpc_dec.basegraph);
+ rte_trace_point_emit_u16(ldpc_dec.z_c);
+ rte_trace_point_emit_u16(ldpc_dec.n_cb);
+ rte_trace_point_emit_u8(ldpc_dec.q_m);
+ rte_trace_point_emit_u16(ldpc_dec.n_filler);
+ rte_trace_point_emit_u8(ldpc_dec.rv_index);
+ rte_trace_point_emit_u8(ldpc_dec.iter_max);
+ rte_trace_point_emit_u8(ldpc_dec.iter_count);
+ rte_trace_point_emit_u32(ldpc_dec.harq_combined_input.length);
+)
+
+RTE_TRACE_POINT(
+ rte_bbdev_trace_op_ldpc_enc,
+ RTE_TRACE_POINT_ARGS(const struct rte_bbdev_op_ldpc_enc ldpc_enc),
+ rte_trace_point_emit_u8(ldpc_enc.code_block_mode);
+ rte_trace_point_emit_u8(ldpc_enc.tb_params.c);
+ rte_trace_point_emit_u8(ldpc_enc.tb_params.cab);
+ rte_trace_point_emit_u32(ldpc_enc.tb_params.ea);
+ rte_trace_point_emit_u32(ldpc_enc.tb_params.eb);
+ rte_trace_point_emit_u8(ldpc_enc.tb_params.r);
+ rte_trace_point_emit_u32(ldpc_enc.cb_params.e);
+ rte_trace_point_emit_u32(ldpc_enc.op_flags);
+ rte_trace_point_emit_u8(ldpc_enc.basegraph);
+ rte_trace_point_emit_u16(ldpc_enc.z_c);
+ rte_trace_point_emit_u16(ldpc_enc.n_cb);
+ rte_trace_point_emit_u8(ldpc_enc.q_m);
+ rte_trace_point_emit_u16(ldpc_enc.n_filler);
+ rte_trace_point_emit_u8(ldpc_enc.rv_index);
+)
+
+RTE_TRACE_POINT(
+ rte_bbdev_trace_op_turbo_enc,
+ RTE_TRACE_POINT_ARGS(const struct rte_bbdev_op_turbo_enc turbo_enc),
+ rte_trace_point_emit_u8(turbo_enc.code_block_mode);
+ rte_trace_point_emit_u32(turbo_enc.op_flags);
+ rte_trace_point_emit_u8(turbo_enc.rv_index);
+ rte_trace_point_emit_u16(turbo_enc.tb_params.k_neg);
+ rte_trace_point_emit_u16(turbo_enc.tb_params.k_pos);
+ rte_trace_point_emit_u8(turbo_enc.tb_params.c_neg);
+ rte_trace_point_emit_u8(turbo_enc.tb_params.c);
+ rte_trace_point_emit_u8(turbo_enc.tb_params.cab);
+ rte_trace_point_emit_u32(turbo_enc.tb_params.ea);
+ rte_trace_point_emit_u32(turbo_enc.tb_params.eb);
+ rte_trace_point_emit_u8(turbo_enc.tb_params.r);
+ rte_trace_point_emit_u32(turbo_enc.cb_params.e);
+ rte_trace_point_emit_u16(turbo_enc.cb_params.k);
+)
+
+RTE_TRACE_POINT(
+ rte_bbdev_trace_op_turbo_dec,
+ RTE_TRACE_POINT_ARGS(const struct rte_bbdev_op_turbo_dec turbo_dec),
+ rte_trace_point_emit_u8(turbo_dec.code_block_mode);
+ rte_trace_point_emit_u32(turbo_dec.op_flags);
+ rte_trace_point_emit_u8(turbo_dec.rv_index);
+ rte_trace_point_emit_u8(turbo_dec.iter_count);
+ rte_trace_point_emit_u8(turbo_dec.ext_scale);
+ rte_trace_point_emit_u8(turbo_dec.num_maps);
+ rte_trace_point_emit_u16(turbo_dec.tb_params.k_neg);
+ rte_trace_point_emit_u16(turbo_dec.tb_params.k_pos);
+ rte_trace_point_emit_u8(turbo_dec.tb_params.c_neg);
+ rte_trace_point_emit_u8(turbo_dec.tb_params.c);
+ rte_trace_point_emit_u8(turbo_dec.tb_params.cab);
+ rte_trace_point_emit_u32(turbo_dec.tb_params.ea);
+ rte_trace_point_emit_u32(turbo_dec.tb_params.eb);
+ rte_trace_point_emit_u8(turbo_dec.tb_params.r);
+ rte_trace_point_emit_u32(turbo_dec.cb_params.e);
+ rte_trace_point_emit_u16(turbo_dec.cb_params.k);
+)
+
+RTE_TRACE_POINT(
+ rte_bbdev_trace_op_fft,
+ RTE_TRACE_POINT_ARGS(const struct rte_bbdev_op_fft fft),
+ rte_trace_point_emit_u32(fft.op_flags);
+ rte_trace_point_emit_u16(fft.input_sequence_size);
+ rte_trace_point_emit_u16(fft.input_leading_padding);
+ rte_trace_point_emit_u16(fft.output_sequence_size);
+ rte_trace_point_emit_u16(fft.output_leading_depadding);
+ rte_trace_point_emit_u16(fft.cs_bitmap);
+ rte_trace_point_emit_u8(fft.num_antennas_log2);
+ rte_trace_point_emit_u8(fft.idft_log2);
+ rte_trace_point_emit_u8(fft.dft_log2);
+ rte_trace_point_emit_u8(fft.cs_time_adjustment);
+ rte_trace_point_emit_u8(fft.idft_shift);
+ rte_trace_point_emit_u8(fft.dft_shift);
+ rte_trace_point_emit_u16(fft.ncs_reciprocal);
+ rte_trace_point_emit_u16(fft.power_shift);
+ rte_trace_point_emit_u16(fft.fp16_exp_adjust);
+ rte_trace_point_emit_u8(fft.freq_resample_mode);
+ rte_trace_point_emit_u16(fft.output_depadded_size);
+)
+
+RTE_TRACE_POINT(
+ rte_bbdev_trace_op_mldts,
+ RTE_TRACE_POINT_ARGS(const struct rte_bbdev_op_mldts mldts),
+ rte_trace_point_emit_u32(mldts.op_flags);
+ rte_trace_point_emit_u16(mldts.num_rbs);
+ rte_trace_point_emit_u16(mldts.num_layers);
+ rte_trace_point_emit_u8(mldts.r_rep);
+ rte_trace_point_emit_u8(mldts.c_rep);
+)
+
#ifdef __cplusplus
}
#endif
diff --git a/lib/bbdev/bbdev_trace_points.c b/lib/bbdev/bbdev_trace_points.c
index 942c7be819..23d1164e7d 100644
--- a/lib/bbdev/bbdev_trace_points.c
+++ b/lib/bbdev/bbdev_trace_points.c
@@ -21,6 +21,18 @@ RTE_TRACE_POINT_REGISTER(rte_bbdev_trace_queue_start,
lib.bbdev.queue.start)
RTE_TRACE_POINT_REGISTER(rte_bbdev_trace_queue_stop,
lib.bbdev.queue.stop)
+RTE_TRACE_POINT_REGISTER(rte_bbdev_trace_op_ldpc_dec,
+ lib.bbdev.op.ldpc_dec);
+RTE_TRACE_POINT_REGISTER(rte_bbdev_trace_op_ldpc_enc,
+ lib.bbdev.op.ldpc_enc);
+RTE_TRACE_POINT_REGISTER(rte_bbdev_trace_op_turbo_dec,
+ lib.bbdev.op.turbo_dec);
+RTE_TRACE_POINT_REGISTER(rte_bbdev_trace_op_turbo_enc,
+ lib.bbdev.op.turbo_enc);
+RTE_TRACE_POINT_REGISTER(rte_bbdev_trace_op_fft,
+ lib.bbdev.op.fft);
+RTE_TRACE_POINT_REGISTER(rte_bbdev_trace_op_mldts,
+ lib.bbdev.op.mldts);
RTE_EXPORT_EXPERIMENTAL_SYMBOL(__rte_bbdev_trace_enqueue, 25.03)
RTE_TRACE_POINT_REGISTER(rte_bbdev_trace_enqueue,
diff --git a/lib/bbdev/rte_bbdev.c b/lib/bbdev/rte_bbdev.c
index e0f8c8eb0d..4958a87646 100644
--- a/lib/bbdev/rte_bbdev.c
+++ b/lib/bbdev/rte_bbdev.c
@@ -1281,6 +1281,30 @@ rte_bbdev_queue_ops_dump(uint16_t dev_id, uint16_t queue_id, FILE *f)
return dev->dev_ops->queue_ops_dump(dev, queue_id, f);
}
+RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_bbdev_ops_trace, 25.03)
+void
+rte_bbdev_ops_trace(void *op, enum rte_bbdev_op_type op_type)
+{
+ struct rte_bbdev_dec_op *op_dec = op;
+ struct rte_bbdev_enc_op *op_enc = op;
+ struct rte_bbdev_fft_op *op_fft = op;
+ struct rte_bbdev_mldts_op *op_mldts = op;
+
+ if (op_type == RTE_BBDEV_OP_LDPC_DEC) {
+ rte_bbdev_trace_op_ldpc_dec(op_dec->ldpc_dec);
+ } else if (op_type == RTE_BBDEV_OP_LDPC_ENC) {
+ rte_bbdev_trace_op_ldpc_enc(op_enc->ldpc_enc);
+ } else if (op_type == RTE_BBDEV_OP_FFT) {
+ rte_bbdev_trace_op_fft(op_fft->fft);
+ } else if (op_type == RTE_BBDEV_OP_MLDTS) {
+ rte_bbdev_trace_op_mldts(op_mldts->mldts);
+ } else if (op_type == RTE_BBDEV_OP_TURBO_DEC) {
+ rte_bbdev_trace_op_turbo_dec(op_dec->turbo_dec);
+ } else if (op_type == RTE_BBDEV_OP_TURBO_ENC) {
+ rte_bbdev_trace_op_turbo_enc(op_enc->turbo_enc);
+ }
+}
+
RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_bbdev_ops_param_string, 24.11)
char *
rte_bbdev_ops_param_string(void *op, enum rte_bbdev_op_type op_type, char *str, uint32_t len)
diff --git a/lib/bbdev/rte_bbdev.h b/lib/bbdev/rte_bbdev.h
index 710280f0df..4912bc7b6f 100644
--- a/lib/bbdev/rte_bbdev.h
+++ b/lib/bbdev/rte_bbdev.h
@@ -1147,6 +1147,20 @@ __rte_experimental
char *
rte_bbdev_ops_param_string(void *op, enum rte_bbdev_op_type op_type, char *str, uint32_t len);
+/**
+ * Add a trace with detail of operation.
+ *
+ * @param op
+ * Pointer to an operation.
+ *
+ * @param op_type
+ * Operation type enum.
+ *
+ */
+__rte_experimental
+void
+rte_bbdev_ops_trace(void *op, enum rte_bbdev_op_type op_type);
+
#ifdef __cplusplus
}
#endif
--
2.34.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v1 2/2] baseband/acc: add trace points per operation
2025-05-27 22:36 [PATCH v1 0/2] bbdev: add trace point per operations Nicolas Chautru
2025-05-27 22:36 ` [PATCH v1 1/2] bbdev: add trace points per operation Nicolas Chautru
@ 2025-05-27 22:36 ` Nicolas Chautru
1 sibling, 0 replies; 3+ messages in thread
From: Nicolas Chautru @ 2025-05-27 22:36 UTC (permalink / raw)
To: dev, maxime.coquelin; +Cc: hemant.agrawal, hernan.vargas, Nicolas Chautru
Add the details of the operation parameters into
trace when that operation is rejected by the PMD.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
---
drivers/baseband/acc/acc_common.h | 1 +
drivers/baseband/acc/vrb_trace.h | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/baseband/acc/acc_common.h b/drivers/baseband/acc/acc_common.h
index 4880444450..3d411cd25f 100644
--- a/drivers/baseband/acc/acc_common.h
+++ b/drivers/baseband/acc/acc_common.h
@@ -700,6 +700,7 @@ acc_error_log(struct acc_queue *q, void *op, uint8_t acc_error_idx, const char *
rte_bbdev_vrb_trace_error(0, rte_bbdev_op_type_str(q->op_type),
acc_error_string[acc_error_idx]);
+ rte_bbdev_ops_trace(op, q->op_type);
va_end(args);
}
diff --git a/drivers/baseband/acc/vrb_trace.h b/drivers/baseband/acc/vrb_trace.h
index 0bbfdc47d1..c9ae239fec 100644
--- a/drivers/baseband/acc/vrb_trace.h
+++ b/drivers/baseband/acc/vrb_trace.h
@@ -11,7 +11,7 @@ extern "C" {
#include <rte_trace_point.h>
-RTE_TRACE_POINT_FP(
+RTE_TRACE_POINT(
rte_bbdev_vrb_trace_error,
RTE_TRACE_POINT_ARGS(uint8_t dev_id, const char *op_string, const char *err_string),
rte_trace_point_emit_u8(dev_id);
@@ -19,7 +19,7 @@ RTE_TRACE_POINT_FP(
rte_trace_point_emit_string(err_string);
)
-RTE_TRACE_POINT_FP(
+RTE_TRACE_POINT(
rte_bbdev_vrb_trace_queue_error,
RTE_TRACE_POINT_ARGS(uint8_t qg_id, uint8_t aq_id, const char *str),
rte_trace_point_emit_u8(qg_id);
--
2.34.1
^ permalink raw reply [flat|nested] 3+ messages in thread