From: Hernan Vargas <hernan.vargas@intel.com>
To: dev@dpdk.org, gakhil@marvell.com, trix@redhat.com,
maxime.coquelin@redhat.com
Cc: nicolas.chautru@intel.com, qi.z.zhang@intel.com,
Hernan Vargas <hernan.vargas@intel.com>
Subject: [PATCH v4 15/30] baseband/acc100: add enqueue status
Date: Tue, 18 Oct 2022 17:39:03 -0700 [thread overview]
Message-ID: <20221019003918.257506-16-hernan.vargas@intel.com> (raw)
In-Reply-To: <20221019003918.257506-1-hernan.vargas@intel.com>
Add enqueue status as part of rte_bbdev_queue_data.
This is a new feature to update queue status and indicate the reason why
a previous enqueue may or may not have consumed all requested operations.
Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
drivers/baseband/acc/rte_acc100_pmd.c | 56 ++++++++++++++++++++-------
1 file changed, 42 insertions(+), 14 deletions(-)
diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
index fc2fbe5511..ca92ae906f 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -2968,13 +2968,17 @@ acc100_enqueue_enc_cb(struct rte_bbdev_queue_data *q_data,
for (i = 0; i < num; ++i) {
/* Check if there are available space for further processing */
- if (unlikely(avail - 1 < 0))
+ if (unlikely(avail - 1 < 0)) {
+ acc_enqueue_ring_full(q_data);
break;
+ }
avail -= 1;
ret = enqueue_enc_one_op_cb(q, ops[i], i);
- if (ret < 0)
+ if (ret < 0) {
+ acc_enqueue_invalid(q_data);
break;
+ }
}
if (unlikely(i == 0))
@@ -3006,20 +3010,26 @@ acc100_enqueue_ldpc_enc_cb(struct rte_bbdev_queue_data *q_data,
int16_t enq, left = num;
while (left > 0) {
- if (unlikely(avail < 1))
+ if (unlikely(avail < 1)) {
+ acc_enqueue_ring_full(q_data);
break;
+ }
avail--;
enq = RTE_MIN(left, ACC_MUX_5GDL_DESC);
if (check_mux(&ops[i], enq)) {
ret = enqueue_ldpc_enc_n_op_cb(q, &ops[i],
desc_idx, enq);
- if (ret < 0)
+ if (ret < 0) {
+ acc_enqueue_invalid(q_data);
break;
+ }
i += enq;
} else {
ret = enqueue_ldpc_enc_one_op_cb(q, ops[i], desc_idx);
- if (ret < 0)
+ if (ret < 0) {
+ acc_enqueue_invalid(q_data);
break;
+ }
i++;
}
desc_idx++;
@@ -3057,13 +3067,17 @@ acc100_enqueue_enc_tb(struct rte_bbdev_queue_data *q_data,
for (i = 0; i < num; ++i) {
cbs_in_tb = get_num_cbs_in_tb_enc(&ops[i]->turbo_enc);
/* Check if there are available space for further processing */
- if (unlikely(avail - cbs_in_tb < 0))
+ if (unlikely(avail - cbs_in_tb < 0)) {
+ acc_enqueue_ring_full(q_data);
break;
+ }
avail -= cbs_in_tb;
ret = enqueue_enc_one_op_tb(q, ops[i], enqueued_cbs, cbs_in_tb);
- if (ret < 0)
+ if (ret < 0) {
+ acc_enqueue_invalid(q_data);
break;
+ }
enqueued_cbs += ret;
}
if (unlikely(enqueued_cbs == 0))
@@ -3120,13 +3134,17 @@ acc100_enqueue_dec_cb(struct rte_bbdev_queue_data *q_data,
for (i = 0; i < num; ++i) {
/* Check if there are available space for further processing */
- if (unlikely(avail - 1 < 0))
+ if (unlikely(avail - 1 < 0)) {
+ acc_enqueue_ring_full(q_data);
break;
+ }
avail -= 1;
ret = enqueue_dec_one_op_cb(q, ops[i], i);
- if (ret < 0)
+ if (ret < 0) {
+ acc_enqueue_invalid(q_data);
break;
+ }
}
if (unlikely(i == 0))
@@ -3166,8 +3184,10 @@ acc100_enqueue_ldpc_dec_tb(struct rte_bbdev_queue_data *q_data,
ret = enqueue_ldpc_dec_one_op_tb(q, ops[i],
enqueued_cbs, cbs_in_tb);
- if (ret < 0)
+ if (ret < 0) {
+ acc_enqueue_invalid(q_data);
break;
+ }
enqueued_cbs += ret;
}
if (unlikely(enqueued_cbs == 0))
@@ -3194,8 +3214,10 @@ acc100_enqueue_ldpc_dec_cb(struct rte_bbdev_queue_data *q_data,
bool same_op = false;
for (i = 0; i < num; ++i) {
/* Check if there are available space for further processing */
- if (unlikely(avail < 1))
+ if (unlikely(avail < 1)) {
+ acc_enqueue_ring_full(q_data);
break;
+ }
avail -= 1;
if (i > 0)
@@ -3208,8 +3230,10 @@ acc100_enqueue_ldpc_dec_cb(struct rte_bbdev_queue_data *q_data,
ops[i]->ldpc_dec.n_filler, ops[i]->ldpc_dec.cb_params.e,
same_op);
ret = enqueue_ldpc_dec_one_op_cb(q, ops[i], i, same_op);
- if (ret < 0)
+ if (ret < 0) {
+ acc_enqueue_invalid(q_data);
break;
+ }
}
if (unlikely(i == 0))
@@ -3244,13 +3268,17 @@ acc100_enqueue_dec_tb(struct rte_bbdev_queue_data *q_data,
for (i = 0; i < num; ++i) {
cbs_in_tb = get_num_cbs_in_tb_dec(&ops[i]->turbo_dec);
/* Check if there are available space for further processing */
- if (unlikely(avail - cbs_in_tb < 0))
+ if (unlikely(avail - cbs_in_tb < 0)) {
+ acc_enqueue_ring_full(q_data);
break;
+ }
avail -= cbs_in_tb;
ret = enqueue_dec_one_op_tb(q, ops[i], enqueued_cbs, cbs_in_tb);
- if (ret < 0)
+ if (ret < 0) {
+ acc_enqueue_invalid(q_data);
break;
+ }
enqueued_cbs += ret;
}
--
2.37.1
next prev parent reply other threads:[~2022-10-18 16:44 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-19 0:38 [PATCH v4 00/30] baseband/acc100: changes for 22.11 Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 01/30] baseband/acc100: fix ring availability calculation Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 02/30] baseband/acc100: add function to check AQ availability Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 03/30] baseband/acc100: memory leak fix Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 04/30] baseband/acc100: add LDPC encoder padding function Hernan Vargas
2022-10-20 9:58 ` [EXT] " Akhil Goyal
2022-10-19 0:38 ` [PATCH v4 05/30] baseband/acc100: check turbo dec/enc input Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 06/30] baseband/acc100: check for unlikely operation vals Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 07/30] baseband/acc100: enforce additional check on FCW Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 08/30] baseband/acc100: allocate ring/queue mem when NULL Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 09/30] baseband/acc100: reduce input length for CRC24B Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 10/30] baseband/acc100: fix clearing PF IR outside handler Hernan Vargas
2022-10-19 0:38 ` [PATCH v4 11/30] baseband/acc100: set device min alignment to 1 Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 12/30] baseband/acc100: add protection for NULL HARQ input Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 13/30] baseband/acc100: reset pointer after rte_free Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 14/30] baseband/acc100: fix debug print for LDPC FCW Hernan Vargas
2022-10-19 0:39 ` Hernan Vargas [this message]
2022-10-19 0:39 ` [PATCH v4 16/30] baseband/acc100: add scatter-gather support Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 17/30] baseband/acc100: add HARQ index helper function Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 18/30] baseband/acc100: enable input validation by default Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 19/30] baseband/acc100: added LDPC transport block support Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 20/30] baseband/acc100: update validate LDPC enc/dec Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 21/30] baseband/acc100: implement configurable queue depth Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 22/30] baseband/acc100: add queue stop operation Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 23/30] baseband/acc100: update uplink CB input length Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 24/30] baseband/acc100: update log messages Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 25/30] baseband/acc100: store FCW from first CB descriptor Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 26/30] baseband/acc100: update device info Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 27/30] baseband/acc100: add ring companion address Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 28/30] baseband/acc100: add workaround for deRM corner cases Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 29/30] baseband/acc100: configure PMON control registers Hernan Vargas
2022-10-19 0:39 ` [PATCH v4 30/30] baseband/acc100: update guide docs Hernan Vargas
2022-10-20 9:59 ` [EXT] " Akhil Goyal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221019003918.257506-16-hernan.vargas@intel.com \
--to=hernan.vargas@intel.com \
--cc=dev@dpdk.org \
--cc=gakhil@marvell.com \
--cc=maxime.coquelin@redhat.com \
--cc=nicolas.chautru@intel.com \
--cc=qi.z.zhang@intel.com \
--cc=trix@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).