* [PATCH v3 1/7] baseband/acc: acc100 free harq layout pointer
2023-01-12 19:36 [PATCH v3 0/7] baseband/acc: changes for 23.03 Hernan Vargas
@ 2023-01-12 19:36 ` Hernan Vargas
2023-01-17 10:49 ` Maxime Coquelin
2023-01-12 19:36 ` [PATCH v3 2/7] baseband/acc: acc100 fix iteration counter in TB Hernan Vargas
` (7 subsequent siblings)
8 siblings, 1 reply; 17+ messages in thread
From: Hernan Vargas @ 2023-01-12 19:36 UTC (permalink / raw)
To: dev, maxime.coquelin, gakhil, trix
Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas, stable
Explicitly call rte_free for harq_layout pointer in dev_close function
to prevent memory leak.
Fixes: ba2262fe16c ("baseband/acc100: fix close cleanup")
Cc: stable@dpdk.org
Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
---
drivers/baseband/acc/rte_acc100_pmd.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
index b3164529dd..146a22bd64 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -620,6 +620,7 @@ acc100_dev_close(struct rte_bbdev *dev)
rte_free(d->tail_ptrs);
rte_free(d->info_ring);
rte_free(d->sw_rings_base);
+ rte_free(d->harq_layout);
d->sw_rings_base = NULL;
d->tail_ptrs = NULL;
d->info_ring = NULL;
--
2.37.1
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v3 1/7] baseband/acc: acc100 free harq layout pointer
2023-01-12 19:36 ` [PATCH v3 1/7] baseband/acc: acc100 free harq layout pointer Hernan Vargas
@ 2023-01-17 10:49 ` Maxime Coquelin
0 siblings, 0 replies; 17+ messages in thread
From: Maxime Coquelin @ 2023-01-17 10:49 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang, stable
On 1/12/23 20:36, Hernan Vargas wrote:
> Explicitly call rte_free for harq_layout pointer in dev_close function
> to prevent memory leak.
>
> Fixes: ba2262fe16c ("baseband/acc100: fix close cleanup")
> Cc: stable@dpdk.org
>
> Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
> ---
> drivers/baseband/acc/rte_acc100_pmd.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
> index b3164529dd..146a22bd64 100644
> --- a/drivers/baseband/acc/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
> @@ -620,6 +620,7 @@ acc100_dev_close(struct rte_bbdev *dev)
> rte_free(d->tail_ptrs);
> rte_free(d->info_ring);
> rte_free(d->sw_rings_base);
> + rte_free(d->harq_layout);
> d->sw_rings_base = NULL;
> d->tail_ptrs = NULL;
> d->info_ring = NULL;
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Thanks,
Maxime
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v3 2/7] baseband/acc: acc100 fix iteration counter in TB
2023-01-12 19:36 [PATCH v3 0/7] baseband/acc: changes for 23.03 Hernan Vargas
2023-01-12 19:36 ` [PATCH v3 1/7] baseband/acc: acc100 free harq layout pointer Hernan Vargas
@ 2023-01-12 19:36 ` Hernan Vargas
2023-01-17 10:49 ` Maxime Coquelin
2023-01-12 19:36 ` [PATCH v3 3/7] baseband/acc: acc100 fix multiplexing multiple ops Hernan Vargas
` (6 subsequent siblings)
8 siblings, 1 reply; 17+ messages in thread
From: Hernan Vargas @ 2023-01-12 19:36 UTC (permalink / raw)
To: dev, maxime.coquelin, gakhil, trix
Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas, stable
Use ldpc or turbo iteration counter based on the operation type.
Fixes: 5ad5060f8f7 ("baseband/acc100: add LDPC processing functions")
Cc: stable@dpdk.org
Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
---
drivers/baseband/acc/rte_acc100_pmd.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
index 146a22bd64..a00314c957 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -4033,8 +4033,12 @@ dequeue_dec_one_op_tb(struct acc_queue *q, struct rte_bbdev_dec_op **ref_op,
/* CRC invalid if error exists */
if (!op->status)
op->status |= rsp.crc_status << RTE_BBDEV_CRC_ERROR;
- op->turbo_dec.iter_count = RTE_MAX((uint8_t) rsp.iter_cnt,
- op->turbo_dec.iter_count);
+ if (q->op_type == RTE_BBDEV_OP_LDPC_DEC)
+ op->ldpc_dec.iter_count = RTE_MAX((uint8_t) rsp.iter_cnt,
+ op->ldpc_dec.iter_count);
+ else
+ op->turbo_dec.iter_count = RTE_MAX((uint8_t) rsp.iter_cnt,
+ op->turbo_dec.iter_count);
/* Check if this is the last desc in batch (Atomic Queue) */
if (desc->req.last_desc_in_batch) {
--
2.37.1
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v3 2/7] baseband/acc: acc100 fix iteration counter in TB
2023-01-12 19:36 ` [PATCH v3 2/7] baseband/acc: acc100 fix iteration counter in TB Hernan Vargas
@ 2023-01-17 10:49 ` Maxime Coquelin
0 siblings, 0 replies; 17+ messages in thread
From: Maxime Coquelin @ 2023-01-17 10:49 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang, stable
On 1/12/23 20:36, Hernan Vargas wrote:
> Use ldpc or turbo iteration counter based on the operation type.
>
> Fixes: 5ad5060f8f7 ("baseband/acc100: add LDPC processing functions")
> Cc: stable@dpdk.org
>
> Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
> ---
> drivers/baseband/acc/rte_acc100_pmd.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
> index 146a22bd64..a00314c957 100644
> --- a/drivers/baseband/acc/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
> @@ -4033,8 +4033,12 @@ dequeue_dec_one_op_tb(struct acc_queue *q, struct rte_bbdev_dec_op **ref_op,
> /* CRC invalid if error exists */
> if (!op->status)
> op->status |= rsp.crc_status << RTE_BBDEV_CRC_ERROR;
> - op->turbo_dec.iter_count = RTE_MAX((uint8_t) rsp.iter_cnt,
> - op->turbo_dec.iter_count);
> + if (q->op_type == RTE_BBDEV_OP_LDPC_DEC)
> + op->ldpc_dec.iter_count = RTE_MAX((uint8_t) rsp.iter_cnt,
> + op->ldpc_dec.iter_count);
> + else
> + op->turbo_dec.iter_count = RTE_MAX((uint8_t) rsp.iter_cnt,
> + op->turbo_dec.iter_count);
>
> /* Check if this is the last desc in batch (Atomic Queue) */
> if (desc->req.last_desc_in_batch) {
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Thanks,
Maxime
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v3 3/7] baseband/acc: acc100 fix multiplexing multiple ops
2023-01-12 19:36 [PATCH v3 0/7] baseband/acc: changes for 23.03 Hernan Vargas
2023-01-12 19:36 ` [PATCH v3 1/7] baseband/acc: acc100 free harq layout pointer Hernan Vargas
2023-01-12 19:36 ` [PATCH v3 2/7] baseband/acc: acc100 fix iteration counter in TB Hernan Vargas
@ 2023-01-12 19:36 ` Hernan Vargas
2023-01-17 10:49 ` Maxime Coquelin
2023-01-12 19:36 ` [PATCH v3 4/7] baseband/acc: acc100 fix queue mapping to 64 bits Hernan Vargas
` (5 subsequent siblings)
8 siblings, 1 reply; 17+ messages in thread
From: Hernan Vargas @ 2023-01-12 19:36 UTC (permalink / raw)
To: dev, maxime.coquelin, gakhil, trix
Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas
Function to check if multiplexing is possible for multiple operations in
one descriptor returns number of enqueued ops.
Fixes: 32e8b7ea35d ("baseband/acc100: refactor to segregate common code")
Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
---
drivers/baseband/acc/rte_acc100_pmd.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
index a00314c957..eb18cc2215 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -3421,9 +3421,9 @@ acc100_enqueue_ldpc_enc_cb(struct rte_bbdev_queue_data *q_data,
}
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);
+ enq = check_mux(&ops[i], enq);
+ if (enq > 1) {
+ ret = enqueue_ldpc_enc_n_op_cb(q, &ops[i], desc_idx, enq);
if (ret < 0) {
acc_enqueue_invalid(q_data);
break;
--
2.37.1
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v3 3/7] baseband/acc: acc100 fix multiplexing multiple ops
2023-01-12 19:36 ` [PATCH v3 3/7] baseband/acc: acc100 fix multiplexing multiple ops Hernan Vargas
@ 2023-01-17 10:49 ` Maxime Coquelin
0 siblings, 0 replies; 17+ messages in thread
From: Maxime Coquelin @ 2023-01-17 10:49 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang
On 1/12/23 20:36, Hernan Vargas wrote:
> Function to check if multiplexing is possible for multiple operations in
> one descriptor returns number of enqueued ops.
>
> Fixes: 32e8b7ea35d ("baseband/acc100: refactor to segregate common code")
>
> Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
> ---
> drivers/baseband/acc/rte_acc100_pmd.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
> index a00314c957..eb18cc2215 100644
> --- a/drivers/baseband/acc/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
> @@ -3421,9 +3421,9 @@ acc100_enqueue_ldpc_enc_cb(struct rte_bbdev_queue_data *q_data,
> }
> 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);
> + enq = check_mux(&ops[i], enq);
> + if (enq > 1) {
> + ret = enqueue_ldpc_enc_n_op_cb(q, &ops[i], desc_idx, enq);
> if (ret < 0) {
> acc_enqueue_invalid(q_data);
> break;
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Thanks,
Maxime
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v3 4/7] baseband/acc: acc100 fix queue mapping to 64 bits
2023-01-12 19:36 [PATCH v3 0/7] baseband/acc: changes for 23.03 Hernan Vargas
` (2 preceding siblings ...)
2023-01-12 19:36 ` [PATCH v3 3/7] baseband/acc: acc100 fix multiplexing multiple ops Hernan Vargas
@ 2023-01-12 19:36 ` Hernan Vargas
2023-01-17 10:49 ` Maxime Coquelin
2023-01-12 19:36 ` [PATCH v3 5/7] baseband/acc: acc100 use define constant Hernan Vargas
` (4 subsequent siblings)
8 siblings, 1 reply; 17+ messages in thread
From: Hernan Vargas @ 2023-01-12 19:36 UTC (permalink / raw)
To: dev, maxime.coquelin, gakhil, trix
Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas
Fix potential overflow for Q mapping extension to 64 bits.
Fixes: 32e8b7ea35d ("baseband/acc100: refactor to segregate common code")
Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
---
drivers/baseband/acc/rte_acc100_pmd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
index eb18cc2215..3660d3b240 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -662,7 +662,7 @@ acc100_find_free_queue_idx(struct rte_bbdev *dev,
for (aq_idx = 0; aq_idx < qtop->num_aqs_per_groups; aq_idx++) {
if (((d->q_assigned_bit_map[group_idx] >> aq_idx) & 0x1) == 0) {
/* Mark the Queue as assigned */
- d->q_assigned_bit_map[group_idx] |= (1 << aq_idx);
+ d->q_assigned_bit_map[group_idx] |= (1ULL << aq_idx);
/* Report the AQ Index */
return (group_idx << ACC100_GRP_ID_SHIFT) + aq_idx;
}
--
2.37.1
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v3 4/7] baseband/acc: acc100 fix queue mapping to 64 bits
2023-01-12 19:36 ` [PATCH v3 4/7] baseband/acc: acc100 fix queue mapping to 64 bits Hernan Vargas
@ 2023-01-17 10:49 ` Maxime Coquelin
0 siblings, 0 replies; 17+ messages in thread
From: Maxime Coquelin @ 2023-01-17 10:49 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang
On 1/12/23 20:36, Hernan Vargas wrote:
> Fix potential overflow for Q mapping extension to 64 bits.
>
> Fixes: 32e8b7ea35d ("baseband/acc100: refactor to segregate common code")
>
> Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
> ---
> drivers/baseband/acc/rte_acc100_pmd.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
> index eb18cc2215..3660d3b240 100644
> --- a/drivers/baseband/acc/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
> @@ -662,7 +662,7 @@ acc100_find_free_queue_idx(struct rte_bbdev *dev,
> for (aq_idx = 0; aq_idx < qtop->num_aqs_per_groups; aq_idx++) {
> if (((d->q_assigned_bit_map[group_idx] >> aq_idx) & 0x1) == 0) {
> /* Mark the Queue as assigned */
> - d->q_assigned_bit_map[group_idx] |= (1 << aq_idx);
> + d->q_assigned_bit_map[group_idx] |= (1ULL << aq_idx);
> /* Report the AQ Index */
> return (group_idx << ACC100_GRP_ID_SHIFT) + aq_idx;
> }
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Thanks,
Maxime
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v3 5/7] baseband/acc: acc100 use define constant
2023-01-12 19:36 [PATCH v3 0/7] baseband/acc: changes for 23.03 Hernan Vargas
` (3 preceding siblings ...)
2023-01-12 19:36 ` [PATCH v3 4/7] baseband/acc: acc100 fix queue mapping to 64 bits Hernan Vargas
@ 2023-01-12 19:36 ` Hernan Vargas
2023-01-17 10:50 ` Maxime Coquelin
2023-01-12 19:36 ` [PATCH v3 6/7] baseband/acc: acc100 use desc helper functions Hernan Vargas
` (3 subsequent siblings)
8 siblings, 1 reply; 17+ messages in thread
From: Hernan Vargas @ 2023-01-12 19:36 UTC (permalink / raw)
To: dev, maxime.coquelin, gakhil, trix
Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas
Use define constant ACC_HARQ_ALIGN_64B instead of hardcoded number.
No functional impact.
Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
---
drivers/baseband/acc/rte_acc100_pmd.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
index 3660d3b240..ef1c488a1c 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -1390,7 +1390,7 @@ acc101_fcw_ld_fill(struct rte_bbdev_dec_op *op, struct acc_fcw_ld *fcw,
harq_in_length = RTE_MIN(harq_in_length, op->ldpc_dec.n_cb
- op->ldpc_dec.n_filler);
/* Alignment on next 64B - Already enforced from HC output */
- harq_in_length = RTE_ALIGN_FLOOR(harq_in_length, 64);
+ harq_in_length = RTE_ALIGN_FLOOR(harq_in_length, ACC_HARQ_ALIGN_64B);
fcw->hcin_size0 = harq_in_length;
fcw->hcin_offset = 0;
fcw->hcin_size1 = 0;
@@ -1433,7 +1433,7 @@ acc101_fcw_ld_fill(struct rte_bbdev_dec_op *op, struct acc_fcw_ld *fcw,
/* Cannot exceed the pruned Ncb circular buffer */
harq_out_length = RTE_MIN(harq_out_length, ncb_p);
/* Alignment on next 64B */
- harq_out_length = RTE_ALIGN_CEIL(harq_out_length, 64);
+ harq_out_length = RTE_ALIGN_CEIL(harq_out_length, ACC_HARQ_ALIGN_64B);
fcw->hcout_size0 = harq_out_length;
fcw->hcout_size1 = 0;
fcw->hcout_offset = 0;
--
2.37.1
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v3 5/7] baseband/acc: acc100 use define constant
2023-01-12 19:36 ` [PATCH v3 5/7] baseband/acc: acc100 use define constant Hernan Vargas
@ 2023-01-17 10:50 ` Maxime Coquelin
0 siblings, 0 replies; 17+ messages in thread
From: Maxime Coquelin @ 2023-01-17 10:50 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang
On 1/12/23 20:36, Hernan Vargas wrote:
> Use define constant ACC_HARQ_ALIGN_64B instead of hardcoded number.
> No functional impact.
>
> Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
> ---
> drivers/baseband/acc/rte_acc100_pmd.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
> index 3660d3b240..ef1c488a1c 100644
> --- a/drivers/baseband/acc/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
> @@ -1390,7 +1390,7 @@ acc101_fcw_ld_fill(struct rte_bbdev_dec_op *op, struct acc_fcw_ld *fcw,
> harq_in_length = RTE_MIN(harq_in_length, op->ldpc_dec.n_cb
> - op->ldpc_dec.n_filler);
> /* Alignment on next 64B - Already enforced from HC output */
> - harq_in_length = RTE_ALIGN_FLOOR(harq_in_length, 64);
> + harq_in_length = RTE_ALIGN_FLOOR(harq_in_length, ACC_HARQ_ALIGN_64B);
> fcw->hcin_size0 = harq_in_length;
> fcw->hcin_offset = 0;
> fcw->hcin_size1 = 0;
> @@ -1433,7 +1433,7 @@ acc101_fcw_ld_fill(struct rte_bbdev_dec_op *op, struct acc_fcw_ld *fcw,
> /* Cannot exceed the pruned Ncb circular buffer */
> harq_out_length = RTE_MIN(harq_out_length, ncb_p);
> /* Alignment on next 64B */
> - harq_out_length = RTE_ALIGN_CEIL(harq_out_length, 64);
> + harq_out_length = RTE_ALIGN_CEIL(harq_out_length, ACC_HARQ_ALIGN_64B);
> fcw->hcout_size0 = harq_out_length;
> fcw->hcout_size1 = 0;
> fcw->hcout_offset = 0;
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Thanks,
Maxime
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v3 6/7] baseband/acc: acc100 use desc helper functions
2023-01-12 19:36 [PATCH v3 0/7] baseband/acc: changes for 23.03 Hernan Vargas
` (4 preceding siblings ...)
2023-01-12 19:36 ` [PATCH v3 5/7] baseband/acc: acc100 use define constant Hernan Vargas
@ 2023-01-12 19:36 ` Hernan Vargas
2023-01-17 10:50 ` Maxime Coquelin
2023-01-12 19:36 ` [PATCH v3 7/7] baseband/acc: acc100 ignore missing mempools Hernan Vargas
` (2 subsequent siblings)
8 siblings, 1 reply; 17+ messages in thread
From: Hernan Vargas @ 2023-01-12 19:36 UTC (permalink / raw)
To: dev, maxime.coquelin, gakhil, trix
Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas
Use the designated descriptor helper functions for descriptor address
calculations.
No functional impact.
Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
---
drivers/baseband/acc/rte_acc100_pmd.c | 35 +++++++++------------------
1 file changed, 12 insertions(+), 23 deletions(-)
diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
index ef1c488a1c..d3aaeb8f2c 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -2422,9 +2422,8 @@ enqueue_ldpc_enc_part_tb(struct acc_queue *q, struct rte_bbdev_enc_op *op,
struct rte_mbuf *output_head, *output;
int i, next_triplet;
struct rte_bbdev_op_ldpc_enc *enc = &op->ldpc_enc;
- uint16_t desc_idx = ((q->sw_ring_head + total_enqueued_descs) & q->sw_ring_wrap_mask);
- desc = q->ring_addr + desc_idx;
+ desc = acc_desc(q, total_enqueued_descs);
acc_fcw_le_fill(op, &desc->req.fcw_le, num_cbs, e);
/* This could be done at polling. */
@@ -2613,7 +2612,6 @@ enqueue_ldpc_enc_one_op_tb(struct acc_queue *q, struct rte_bbdev_enc_op *op,
}
#endif
uint8_t num_a, num_b;
- uint16_t desc_idx;
uint8_t r = op->ldpc_enc.tb_params.r;
uint8_t cab = op->ldpc_enc.tb_params.cab;
union acc_dma_desc *desc;
@@ -2655,16 +2653,15 @@ enqueue_ldpc_enc_one_op_tb(struct acc_queue *q, struct rte_bbdev_enc_op *op,
return_descs = enq_descs - init_enq_descs;
/* Keep total number of CBs in first TB. */
- desc_idx = ((q->sw_ring_head + init_enq_descs) & q->sw_ring_wrap_mask);
- desc = q->ring_addr + desc_idx;
+ desc = acc_desc(q, init_enq_descs);
desc->req.cbs_in_tb = return_descs; /** Actual number of descriptors. */
desc->req.op_addr = op;
/* Set SDone on last CB descriptor for TB mode. */
- desc_idx = ((q->sw_ring_head + enq_descs - 1) & q->sw_ring_wrap_mask);
- desc = q->ring_addr + desc_idx;
+ desc = acc_desc(q, enq_descs - 1);
desc->req.sdone_enable = 1;
desc->req.op_addr = op;
+
return return_descs;
}
@@ -3275,7 +3272,7 @@ enqueue_dec_one_op_tb(struct acc_queue *q, struct rte_bbdev_dec_op *op,
h_out_length, mbuf_total_left, seg_total_left;
struct rte_mbuf *input, *h_output_head, *h_output,
*s_output_head, *s_output;
- uint16_t desc_idx, current_enqueued_cbs = 0;
+ uint16_t current_enqueued_cbs = 0;
uint64_t fcw_offset;
#ifndef RTE_LIBRTE_BBDEV_SKIP_VALIDATE
@@ -3290,9 +3287,8 @@ enqueue_dec_one_op_tb(struct acc_queue *q, struct rte_bbdev_dec_op *op,
}
#endif
- desc_idx = acc_desc_idx(q, total_enqueued_cbs);
- desc = q->ring_addr + desc_idx;
- fcw_offset = (desc_idx << 8) + ACC_DESC_FCW_OFFSET;
+ desc = acc_desc(q, total_enqueued_cbs);
+ fcw_offset = (acc_desc_idx(q, total_enqueued_cbs) << 8) + ACC_DESC_FCW_OFFSET;
acc100_fcw_td_fill(op, &desc->req.fcw_td);
input = op->turbo_dec.input.data;
@@ -3777,7 +3773,6 @@ dequeue_enc_one_op_cb(struct acc_queue *q, struct rte_bbdev_enc_op **ref_op,
/* Clearing status, it will be set based on response */
op->status = 0;
-
op->status |= ((rsp.dma_err) ? (1 << RTE_BBDEV_DRV_ERROR) : 0);
op->status |= ((rsp.fcw_err) ? (1 << RTE_BBDEV_DRV_ERROR) : 0);
@@ -4023,8 +4018,8 @@ dequeue_dec_one_op_tb(struct acc_queue *q, struct rte_bbdev_dec_op **ref_op,
atom_desc.atom_hdr = __atomic_load_n((uint64_t *)desc,
__ATOMIC_RELAXED);
rsp.val = atom_desc.rsp.val;
- rte_bbdev_log_debug("Resp. desc %p: %x", desc,
- rsp.val);
+ rte_bbdev_log_debug("Resp. desc %p: %x r %d c %d\n",
+ desc, rsp.val, cb_idx, cbs_in_tb);
op->status |= ((rsp.input_err) ? (1 << RTE_BBDEV_DATA_ERROR) : 0);
op->status |= ((rsp.dma_err) ? (1 << RTE_BBDEV_DRV_ERROR) : 0);
@@ -4077,8 +4072,7 @@ acc100_dequeue_enc(struct rte_bbdev_queue_data *q_data,
return 0;
}
#endif
- op = (q->ring_addr + (q->sw_ring_tail &
- q->sw_ring_wrap_mask))->req.op_addr;
+ op = acc_op_tail(q, 0);
if (unlikely(ops == NULL || op == NULL))
return 0;
cbm = op->turbo_enc.code_block_mode;
@@ -4120,7 +4114,6 @@ acc100_dequeue_ldpc_enc(struct rte_bbdev_queue_data *q_data,
uint16_t i, dequeued_ops = 0, dequeued_descs = 0;
int ret, cbm;
struct rte_bbdev_enc_op *op;
- union acc_dma_desc *desc;
if (q == NULL)
return 0;
@@ -4128,10 +4121,7 @@ acc100_dequeue_ldpc_enc(struct rte_bbdev_queue_data *q_data,
if (unlikely(ops == 0))
return 0;
#endif
- desc = q->ring_addr + (q->sw_ring_tail & q->sw_ring_wrap_mask);
- if (unlikely(desc == NULL))
- return 0;
- op = desc->req.op_addr;
+ op = acc_op_tail(q, 0);
if (unlikely(ops == NULL || op == NULL))
return 0;
cbm = op->ldpc_enc.code_block_mode;
@@ -4227,8 +4217,7 @@ acc100_dequeue_ldpc_dec(struct rte_bbdev_queue_data *q_data,
dequeue_num = RTE_MIN(avail, num);
for (i = 0; i < dequeue_num; ++i) {
- op = (q->ring_addr + ((q->sw_ring_tail + dequeued_cbs)
- & q->sw_ring_wrap_mask))->req.op_addr;
+ op = acc_op_tail(q, dequeued_cbs);
if (unlikely(op == NULL))
break;
if (op->ldpc_dec.code_block_mode == RTE_BBDEV_TRANSPORT_BLOCK)
--
2.37.1
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v3 6/7] baseband/acc: acc100 use desc helper functions
2023-01-12 19:36 ` [PATCH v3 6/7] baseband/acc: acc100 use desc helper functions Hernan Vargas
@ 2023-01-17 10:50 ` Maxime Coquelin
0 siblings, 0 replies; 17+ messages in thread
From: Maxime Coquelin @ 2023-01-17 10:50 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang
On 1/12/23 20:36, Hernan Vargas wrote:
> Use the designated descriptor helper functions for descriptor address
> calculations.
> No functional impact.
>
> Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
> ---
> drivers/baseband/acc/rte_acc100_pmd.c | 35 +++++++++------------------
> 1 file changed, 12 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
> index ef1c488a1c..d3aaeb8f2c 100644
> --- a/drivers/baseband/acc/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
> @@ -2422,9 +2422,8 @@ enqueue_ldpc_enc_part_tb(struct acc_queue *q, struct rte_bbdev_enc_op *op,
> struct rte_mbuf *output_head, *output;
> int i, next_triplet;
> struct rte_bbdev_op_ldpc_enc *enc = &op->ldpc_enc;
> - uint16_t desc_idx = ((q->sw_ring_head + total_enqueued_descs) & q->sw_ring_wrap_mask);
>
> - desc = q->ring_addr + desc_idx;
> + desc = acc_desc(q, total_enqueued_descs);
> acc_fcw_le_fill(op, &desc->req.fcw_le, num_cbs, e);
>
> /* This could be done at polling. */
> @@ -2613,7 +2612,6 @@ enqueue_ldpc_enc_one_op_tb(struct acc_queue *q, struct rte_bbdev_enc_op *op,
> }
> #endif
> uint8_t num_a, num_b;
> - uint16_t desc_idx;
> uint8_t r = op->ldpc_enc.tb_params.r;
> uint8_t cab = op->ldpc_enc.tb_params.cab;
> union acc_dma_desc *desc;
> @@ -2655,16 +2653,15 @@ enqueue_ldpc_enc_one_op_tb(struct acc_queue *q, struct rte_bbdev_enc_op *op,
>
> return_descs = enq_descs - init_enq_descs;
> /* Keep total number of CBs in first TB. */
> - desc_idx = ((q->sw_ring_head + init_enq_descs) & q->sw_ring_wrap_mask);
> - desc = q->ring_addr + desc_idx;
> + desc = acc_desc(q, init_enq_descs);
> desc->req.cbs_in_tb = return_descs; /** Actual number of descriptors. */
> desc->req.op_addr = op;
>
> /* Set SDone on last CB descriptor for TB mode. */
> - desc_idx = ((q->sw_ring_head + enq_descs - 1) & q->sw_ring_wrap_mask);
> - desc = q->ring_addr + desc_idx;
> + desc = acc_desc(q, enq_descs - 1);
> desc->req.sdone_enable = 1;
> desc->req.op_addr = op;
> +
> return return_descs;
> }
>
> @@ -3275,7 +3272,7 @@ enqueue_dec_one_op_tb(struct acc_queue *q, struct rte_bbdev_dec_op *op,
> h_out_length, mbuf_total_left, seg_total_left;
> struct rte_mbuf *input, *h_output_head, *h_output,
> *s_output_head, *s_output;
> - uint16_t desc_idx, current_enqueued_cbs = 0;
> + uint16_t current_enqueued_cbs = 0;
> uint64_t fcw_offset;
>
> #ifndef RTE_LIBRTE_BBDEV_SKIP_VALIDATE
> @@ -3290,9 +3287,8 @@ enqueue_dec_one_op_tb(struct acc_queue *q, struct rte_bbdev_dec_op *op,
> }
> #endif
>
> - desc_idx = acc_desc_idx(q, total_enqueued_cbs);
> - desc = q->ring_addr + desc_idx;
> - fcw_offset = (desc_idx << 8) + ACC_DESC_FCW_OFFSET;
> + desc = acc_desc(q, total_enqueued_cbs);
> + fcw_offset = (acc_desc_idx(q, total_enqueued_cbs) << 8) + ACC_DESC_FCW_OFFSET;
> acc100_fcw_td_fill(op, &desc->req.fcw_td);
>
> input = op->turbo_dec.input.data;
> @@ -3777,7 +3773,6 @@ dequeue_enc_one_op_cb(struct acc_queue *q, struct rte_bbdev_enc_op **ref_op,
>
> /* Clearing status, it will be set based on response */
> op->status = 0;
> -
> op->status |= ((rsp.dma_err) ? (1 << RTE_BBDEV_DRV_ERROR) : 0);
> op->status |= ((rsp.fcw_err) ? (1 << RTE_BBDEV_DRV_ERROR) : 0);
>
> @@ -4023,8 +4018,8 @@ dequeue_dec_one_op_tb(struct acc_queue *q, struct rte_bbdev_dec_op **ref_op,
> atom_desc.atom_hdr = __atomic_load_n((uint64_t *)desc,
> __ATOMIC_RELAXED);
> rsp.val = atom_desc.rsp.val;
> - rte_bbdev_log_debug("Resp. desc %p: %x", desc,
> - rsp.val);
> + rte_bbdev_log_debug("Resp. desc %p: %x r %d c %d\n",
> + desc, rsp.val, cb_idx, cbs_in_tb);
>
> op->status |= ((rsp.input_err) ? (1 << RTE_BBDEV_DATA_ERROR) : 0);
> op->status |= ((rsp.dma_err) ? (1 << RTE_BBDEV_DRV_ERROR) : 0);
> @@ -4077,8 +4072,7 @@ acc100_dequeue_enc(struct rte_bbdev_queue_data *q_data,
> return 0;
> }
> #endif
> - op = (q->ring_addr + (q->sw_ring_tail &
> - q->sw_ring_wrap_mask))->req.op_addr;
> + op = acc_op_tail(q, 0);
> if (unlikely(ops == NULL || op == NULL))
> return 0;
> cbm = op->turbo_enc.code_block_mode;
> @@ -4120,7 +4114,6 @@ acc100_dequeue_ldpc_enc(struct rte_bbdev_queue_data *q_data,
> uint16_t i, dequeued_ops = 0, dequeued_descs = 0;
> int ret, cbm;
> struct rte_bbdev_enc_op *op;
> - union acc_dma_desc *desc;
>
> if (q == NULL)
> return 0;
> @@ -4128,10 +4121,7 @@ acc100_dequeue_ldpc_enc(struct rte_bbdev_queue_data *q_data,
> if (unlikely(ops == 0))
> return 0;
> #endif
> - desc = q->ring_addr + (q->sw_ring_tail & q->sw_ring_wrap_mask);
> - if (unlikely(desc == NULL))
> - return 0;
> - op = desc->req.op_addr;
> + op = acc_op_tail(q, 0);
> if (unlikely(ops == NULL || op == NULL))
> return 0;
> cbm = op->ldpc_enc.code_block_mode;
> @@ -4227,8 +4217,7 @@ acc100_dequeue_ldpc_dec(struct rte_bbdev_queue_data *q_data,
> dequeue_num = RTE_MIN(avail, num);
>
> for (i = 0; i < dequeue_num; ++i) {
> - op = (q->ring_addr + ((q->sw_ring_tail + dequeued_cbs)
> - & q->sw_ring_wrap_mask))->req.op_addr;
> + op = acc_op_tail(q, dequeued_cbs);
> if (unlikely(op == NULL))
> break;
> if (op->ldpc_dec.code_block_mode == RTE_BBDEV_TRANSPORT_BLOCK)
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Thanks,
Maxime
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v3 7/7] baseband/acc: acc100 ignore missing mempools
2023-01-12 19:36 [PATCH v3 0/7] baseband/acc: changes for 23.03 Hernan Vargas
` (5 preceding siblings ...)
2023-01-12 19:36 ` [PATCH v3 6/7] baseband/acc: acc100 use desc helper functions Hernan Vargas
@ 2023-01-12 19:36 ` Hernan Vargas
2023-01-17 10:50 ` Maxime Coquelin
2023-01-17 10:49 ` [PATCH v3 0/7] baseband/acc: changes for 23.03 Maxime Coquelin
2023-01-19 10:06 ` Maxime Coquelin
8 siblings, 1 reply; 17+ messages in thread
From: Hernan Vargas @ 2023-01-12 19:36 UTC (permalink / raw)
To: dev, maxime.coquelin, gakhil, trix
Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas
Mempool not strictly required to be present in op for processing.
Previous criteria too strict. No functional impact.
Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
---
drivers/baseband/acc/rte_acc100_pmd.c | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
index d3aaeb8f2c..0992cb5d1e 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -8,7 +8,6 @@
#include <rte_log.h>
#include <dev_driver.h>
#include <rte_malloc.h>
-#include <rte_mempool.h>
#include <rte_byteorder.h>
#include <rte_errno.h>
#include <rte_branch_prediction.h>
@@ -1830,10 +1829,6 @@ validate_enc_op(struct rte_bbdev_enc_op *op, struct acc_queue *q)
if (!validate_op_required(q))
return 0;
- if (op->mempool == NULL) {
- rte_bbdev_log(ERR, "Invalid mempool pointer");
- return -1;
- }
if (turbo_enc->input.data == NULL) {
rte_bbdev_log(ERR, "Invalid input pointer");
return -1;
@@ -2677,10 +2672,6 @@ validate_dec_op(struct rte_bbdev_dec_op *op, struct acc_queue *q)
if (!validate_op_required(q))
return 0;
- if (op->mempool == NULL) {
- rte_bbdev_log(ERR, "Invalid mempool pointer");
- return -1;
- }
if (turbo_dec->input.data == NULL) {
rte_bbdev_log(ERR, "Invalid input pointer");
return -1;
--
2.37.1
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v3 7/7] baseband/acc: acc100 ignore missing mempools
2023-01-12 19:36 ` [PATCH v3 7/7] baseband/acc: acc100 ignore missing mempools Hernan Vargas
@ 2023-01-17 10:50 ` Maxime Coquelin
0 siblings, 0 replies; 17+ messages in thread
From: Maxime Coquelin @ 2023-01-17 10:50 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang
On 1/12/23 20:36, Hernan Vargas wrote:
> Mempool not strictly required to be present in op for processing.
> Previous criteria too strict. No functional impact.
>
> Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
> ---
> drivers/baseband/acc/rte_acc100_pmd.c | 9 ---------
> 1 file changed, 9 deletions(-)
>
> diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
> index d3aaeb8f2c..0992cb5d1e 100644
> --- a/drivers/baseband/acc/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
> @@ -8,7 +8,6 @@
> #include <rte_log.h>
> #include <dev_driver.h>
> #include <rte_malloc.h>
> -#include <rte_mempool.h>
> #include <rte_byteorder.h>
> #include <rte_errno.h>
> #include <rte_branch_prediction.h>
> @@ -1830,10 +1829,6 @@ validate_enc_op(struct rte_bbdev_enc_op *op, struct acc_queue *q)
> if (!validate_op_required(q))
> return 0;
>
> - if (op->mempool == NULL) {
> - rte_bbdev_log(ERR, "Invalid mempool pointer");
> - return -1;
> - }
> if (turbo_enc->input.data == NULL) {
> rte_bbdev_log(ERR, "Invalid input pointer");
> return -1;
> @@ -2677,10 +2672,6 @@ validate_dec_op(struct rte_bbdev_dec_op *op, struct acc_queue *q)
> if (!validate_op_required(q))
> return 0;
>
> - if (op->mempool == NULL) {
> - rte_bbdev_log(ERR, "Invalid mempool pointer");
> - return -1;
> - }
> if (turbo_dec->input.data == NULL) {
> rte_bbdev_log(ERR, "Invalid input pointer");
> return -1;
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Thanks,
Maxime
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v3 0/7] baseband/acc: changes for 23.03
2023-01-12 19:36 [PATCH v3 0/7] baseband/acc: changes for 23.03 Hernan Vargas
` (6 preceding siblings ...)
2023-01-12 19:36 ` [PATCH v3 7/7] baseband/acc: acc100 ignore missing mempools Hernan Vargas
@ 2023-01-17 10:49 ` Maxime Coquelin
2023-01-19 10:06 ` Maxime Coquelin
8 siblings, 0 replies; 17+ messages in thread
From: Maxime Coquelin @ 2023-01-17 10:49 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang
Hi Hernan,
On 1/12/23 20:36, Hernan Vargas wrote:
> v3: Remove unused mempool header.
> v2: Reordered commits and added one more fix.
> v1: Upstreaming ACC100 changes for 23.03.
>
> Hernan Vargas (7):
> baseband/acc: acc100 free harq layout pointer
> baseband/acc: acc100 fix iteration counter in TB
> baseband/acc: acc100 fix multiplexing multiple ops
> baseband/acc: acc100 fix queue mapping to 64 bits
> baseband/acc: acc100 use define constant
> baseband/acc: acc100 use desc helper functions
> baseband/acc: acc100 ignore missing mempools
>
> drivers/baseband/acc/rte_acc100_pmd.c | 65 +++++++++++----------------
> 1 file changed, 25 insertions(+), 40 deletions(-)
>
As I mentioned in the first v3 sent, next time please include the R-by's
that were given on previous versions on patches that did changed.
For this time, I will handle it myself.
Regards,
Maxime
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v3 0/7] baseband/acc: changes for 23.03
2023-01-12 19:36 [PATCH v3 0/7] baseband/acc: changes for 23.03 Hernan Vargas
` (7 preceding siblings ...)
2023-01-17 10:49 ` [PATCH v3 0/7] baseband/acc: changes for 23.03 Maxime Coquelin
@ 2023-01-19 10:06 ` Maxime Coquelin
8 siblings, 0 replies; 17+ messages in thread
From: Maxime Coquelin @ 2023-01-19 10:06 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang
On 1/12/23 20:36, Hernan Vargas wrote:
> v3: Remove unused mempool header.
> v2: Reordered commits and added one more fix.
> v1: Upstreaming ACC100 changes for 23.03.
>
> Hernan Vargas (7):
> baseband/acc: acc100 free harq layout pointer
> baseband/acc: acc100 fix iteration counter in TB
> baseband/acc: acc100 fix multiplexing multiple ops
> baseband/acc: acc100 fix queue mapping to 64 bits
> baseband/acc: acc100 use define constant
> baseband/acc: acc100 use desc helper functions
> baseband/acc: acc100 ignore missing mempools
>
> drivers/baseband/acc/rte_acc100_pmd.c | 65 +++++++++++----------------
> 1 file changed, 25 insertions(+), 40 deletions(-)
>
Applied to dpdk-next-baseband/for-main.
Thanks,
Maxime
^ permalink raw reply [flat|nested] 17+ messages in thread