[v2,19/37] baseband/acc100: add queue stop operation

Message ID 20220820023157.189047-20-hernan.vargas@intel.com (mailing list archive)
State Superseded, archived
Delegated to: akhil goyal
Headers
Series baseband/acc100: changes for 22.11 |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Vargas, Hernan Aug. 20, 2022, 2:31 a.m. UTC
  Implement new feature queue stop operation.

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
---
 drivers/baseband/acc100/rte_acc100_pmd.c | 58 ++++++++++++++++++++++++
 1 file changed, 58 insertions(+)
  

Comments

Maxime Coquelin Sept. 15, 2022, 9:55 a.m. UTC | #1
On 8/20/22 04:31, Hernan Vargas wrote:
> Implement new feature queue stop operation.

Implement new feature to stop queue operation?

> 
> Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
> ---
>   drivers/baseband/acc100/rte_acc100_pmd.c | 58 ++++++++++++++++++++++++
>   1 file changed, 58 insertions(+)
> 
> diff --git a/drivers/baseband/acc100/rte_acc100_pmd.c b/drivers/baseband/acc100/rte_acc100_pmd.c
> index 460233a499..deb2cb6d36 100644
> --- a/drivers/baseband/acc100/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc100/rte_acc100_pmd.c
> @@ -990,6 +990,63 @@ acc100_queue_setup(struct rte_bbdev *dev, uint16_t queue_id,
>   	return 0;
>   }
>   
> +static inline void
> +acc100_print_op(struct rte_bbdev_dec_op *op, enum rte_bbdev_op_type op_type,
> +		uint16_t index)
> +{
> +	if (op == NULL)
> +		return;
> +	if (op_type == RTE_BBDEV_OP_LDPC_DEC)
> +		rte_bbdev_log(INFO,

Info level might be a bit too much, maybe put this as debug log?

> +			"  Op 5GUL %d %d %d %d %d %d %d %d %d %d %d %d",
> +			index,
> +			op->ldpc_dec.basegraph, op->ldpc_dec.z_c,
> +			op->ldpc_dec.n_cb, op->ldpc_dec.q_m,
> +			op->ldpc_dec.n_filler, op->ldpc_dec.cb_params.e,
> +			op->ldpc_dec.op_flags, op->ldpc_dec.rv_index,
> +			op->ldpc_dec.iter_max, op->ldpc_dec.iter_count,
> +			op->ldpc_dec.harq_combined_input.length
> +			);
> +	else if (op_type == RTE_BBDEV_OP_LDPC_ENC) {
> +		struct rte_bbdev_enc_op *op_dl = (struct rte_bbdev_enc_op *) op;
> +		rte_bbdev_log(INFO,
> +			"  Op 5GDL %d %d %d %d %d %d %d %d %d",
> +			index,
> +			op_dl->ldpc_enc.basegraph, op_dl->ldpc_enc.z_c,
> +			op_dl->ldpc_enc.n_cb, op_dl->ldpc_enc.q_m,
> +			op_dl->ldpc_enc.n_filler, op_dl->ldpc_enc.cb_params.e,
> +			op_dl->ldpc_enc.op_flags, op_dl->ldpc_enc.rv_index
> +			);
> +	}
> +}
> +
> +static int
> +acc100_queue_stop(struct rte_bbdev *dev, uint16_t queue_id)
> +{
> +	struct acc100_queue *q;
> +	struct rte_bbdev_dec_op *op;
> +	uint16_t i;

New line here.

> +	q = dev->data->queues[queue_id].queue_private;
> +	rte_bbdev_log(INFO, "Queue Stop %d H/T/D %d %d %x OpType %d",
> +			queue_id, q->sw_ring_head, q->sw_ring_tail,
> +			q->sw_ring_depth, q->op_type);
> +	for (i = 0; i < q->sw_ring_depth; ++i) {
> +		op = (q->ring_addr + i)->req.op_addr;
> +		acc100_print_op(op, q->op_type, i);
> +	}
> +	/* ignore all operations in flight and clear counters */
> +	q->sw_ring_tail = q->sw_ring_head;
> +	q->aq_enqueued = 0;
> +	q->aq_dequeued = 0;
> +	dev->data->queues[queue_id].queue_stats.enqueued_count = 0;
> +	dev->data->queues[queue_id].queue_stats.dequeued_count = 0;
> +	dev->data->queues[queue_id].queue_stats.enqueue_err_count = 0;
> +	dev->data->queues[queue_id].queue_stats.dequeue_err_count = 0;
> +	dev->data->queues[queue_id].queue_stats.enqueue_warn_count = 0;
> +	dev->data->queues[queue_id].queue_stats.dequeue_warn_count = 0;

New line here.

> +	return 0;
> +}
> +
>   /* Release ACC100 queue */
>   static int
>   acc100_queue_release(struct rte_bbdev *dev, uint16_t q_id)
> @@ -1184,6 +1241,7 @@ static const struct rte_bbdev_ops acc100_bbdev_ops = {
>   	.info_get = acc100_dev_info_get,
>   	.queue_setup = acc100_queue_setup,
>   	.queue_release = acc100_queue_release,
> +	.queue_stop = acc100_queue_stop,
>   	.queue_intr_enable = acc100_queue_intr_enable,
>   	.queue_intr_disable = acc100_queue_intr_disable
>   };

With minor comments fixed:
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Thanks,
Maxime
  

Patch

diff --git a/drivers/baseband/acc100/rte_acc100_pmd.c b/drivers/baseband/acc100/rte_acc100_pmd.c
index 460233a499..deb2cb6d36 100644
--- a/drivers/baseband/acc100/rte_acc100_pmd.c
+++ b/drivers/baseband/acc100/rte_acc100_pmd.c
@@ -990,6 +990,63 @@  acc100_queue_setup(struct rte_bbdev *dev, uint16_t queue_id,
 	return 0;
 }
 
+static inline void
+acc100_print_op(struct rte_bbdev_dec_op *op, enum rte_bbdev_op_type op_type,
+		uint16_t index)
+{
+	if (op == NULL)
+		return;
+	if (op_type == RTE_BBDEV_OP_LDPC_DEC)
+		rte_bbdev_log(INFO,
+			"  Op 5GUL %d %d %d %d %d %d %d %d %d %d %d %d",
+			index,
+			op->ldpc_dec.basegraph, op->ldpc_dec.z_c,
+			op->ldpc_dec.n_cb, op->ldpc_dec.q_m,
+			op->ldpc_dec.n_filler, op->ldpc_dec.cb_params.e,
+			op->ldpc_dec.op_flags, op->ldpc_dec.rv_index,
+			op->ldpc_dec.iter_max, op->ldpc_dec.iter_count,
+			op->ldpc_dec.harq_combined_input.length
+			);
+	else if (op_type == RTE_BBDEV_OP_LDPC_ENC) {
+		struct rte_bbdev_enc_op *op_dl = (struct rte_bbdev_enc_op *) op;
+		rte_bbdev_log(INFO,
+			"  Op 5GDL %d %d %d %d %d %d %d %d %d",
+			index,
+			op_dl->ldpc_enc.basegraph, op_dl->ldpc_enc.z_c,
+			op_dl->ldpc_enc.n_cb, op_dl->ldpc_enc.q_m,
+			op_dl->ldpc_enc.n_filler, op_dl->ldpc_enc.cb_params.e,
+			op_dl->ldpc_enc.op_flags, op_dl->ldpc_enc.rv_index
+			);
+	}
+}
+
+static int
+acc100_queue_stop(struct rte_bbdev *dev, uint16_t queue_id)
+{
+	struct acc100_queue *q;
+	struct rte_bbdev_dec_op *op;
+	uint16_t i;
+	q = dev->data->queues[queue_id].queue_private;
+	rte_bbdev_log(INFO, "Queue Stop %d H/T/D %d %d %x OpType %d",
+			queue_id, q->sw_ring_head, q->sw_ring_tail,
+			q->sw_ring_depth, q->op_type);
+	for (i = 0; i < q->sw_ring_depth; ++i) {
+		op = (q->ring_addr + i)->req.op_addr;
+		acc100_print_op(op, q->op_type, i);
+	}
+	/* ignore all operations in flight and clear counters */
+	q->sw_ring_tail = q->sw_ring_head;
+	q->aq_enqueued = 0;
+	q->aq_dequeued = 0;
+	dev->data->queues[queue_id].queue_stats.enqueued_count = 0;
+	dev->data->queues[queue_id].queue_stats.dequeued_count = 0;
+	dev->data->queues[queue_id].queue_stats.enqueue_err_count = 0;
+	dev->data->queues[queue_id].queue_stats.dequeue_err_count = 0;
+	dev->data->queues[queue_id].queue_stats.enqueue_warn_count = 0;
+	dev->data->queues[queue_id].queue_stats.dequeue_warn_count = 0;
+	return 0;
+}
+
 /* Release ACC100 queue */
 static int
 acc100_queue_release(struct rte_bbdev *dev, uint16_t q_id)
@@ -1184,6 +1241,7 @@  static const struct rte_bbdev_ops acc100_bbdev_ops = {
 	.info_get = acc100_dev_info_get,
 	.queue_setup = acc100_queue_setup,
 	.queue_release = acc100_queue_release,
+	.queue_stop = acc100_queue_stop,
 	.queue_intr_enable = acc100_queue_intr_enable,
 	.queue_intr_disable = acc100_queue_intr_disable
 };