* [PATCH v2 0/7] baseband/acc: changes for 23.03
@ 2023-01-06 5:44 Hernan Vargas
2023-01-06 5:44 ` [PATCH v2 1/7] baseband/acc: acc100 free harq layout pointer Hernan Vargas
` (6 more replies)
0 siblings, 7 replies; 18+ messages in thread
From: Hernan Vargas @ 2023-01-06 5:44 UTC (permalink / raw)
To: dev, maxime.coquelin, gakhil, trix
Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas
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 | 64 +++++++++++----------------
1 file changed, 25 insertions(+), 39 deletions(-)
--
2.37.1
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v2 1/7] baseband/acc: acc100 free harq layout pointer
2023-01-06 5:44 [PATCH v2 0/7] baseband/acc: changes for 23.03 Hernan Vargas
@ 2023-01-06 5:44 ` Hernan Vargas
2023-01-06 8:53 ` Maxime Coquelin
2023-01-06 5:44 ` [PATCH v2 2/7] baseband/acc: acc100 fix iteration counter in TB Hernan Vargas
` (5 subsequent siblings)
6 siblings, 1 reply; 18+ messages in thread
From: Hernan Vargas @ 2023-01-06 5:44 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 ba8247d47e..0177a9e0ea 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -622,6 +622,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] 18+ messages in thread
* [PATCH v2 2/7] baseband/acc: acc100 fix iteration counter in TB
2023-01-06 5:44 [PATCH v2 0/7] baseband/acc: changes for 23.03 Hernan Vargas
2023-01-06 5:44 ` [PATCH v2 1/7] baseband/acc: acc100 free harq layout pointer Hernan Vargas
@ 2023-01-06 5:44 ` Hernan Vargas
2023-01-06 8:54 ` Maxime Coquelin
2023-01-06 5:44 ` [PATCH v2 3/7] baseband/acc: acc100 fix multiplexing multiple ops Hernan Vargas
` (4 subsequent siblings)
6 siblings, 1 reply; 18+ messages in thread
From: Hernan Vargas @ 2023-01-06 5:44 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 0177a9e0ea..d77d3b77b5 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -4035,8 +4035,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] 18+ messages in thread
* [PATCH v2 3/7] baseband/acc: acc100 fix multiplexing multiple ops
2023-01-06 5:44 [PATCH v2 0/7] baseband/acc: changes for 23.03 Hernan Vargas
2023-01-06 5:44 ` [PATCH v2 1/7] baseband/acc: acc100 free harq layout pointer Hernan Vargas
2023-01-06 5:44 ` [PATCH v2 2/7] baseband/acc: acc100 fix iteration counter in TB Hernan Vargas
@ 2023-01-06 5:44 ` Hernan Vargas
2023-01-06 8:57 ` Maxime Coquelin
2023-01-06 5:44 ` [PATCH v2 4/7] baseband/acc: acc100 fix queue mapping to 64 bits Hernan Vargas
` (3 subsequent siblings)
6 siblings, 1 reply; 18+ messages in thread
From: Hernan Vargas @ 2023-01-06 5:44 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 d77d3b77b5..2f65f290b5 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -3423,9 +3423,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] 18+ messages in thread
* [PATCH v2 4/7] baseband/acc: acc100 fix queue mapping to 64 bits
2023-01-06 5:44 [PATCH v2 0/7] baseband/acc: changes for 23.03 Hernan Vargas
` (2 preceding siblings ...)
2023-01-06 5:44 ` [PATCH v2 3/7] baseband/acc: acc100 fix multiplexing multiple ops Hernan Vargas
@ 2023-01-06 5:44 ` Hernan Vargas
2023-01-06 9:12 ` Maxime Coquelin
2023-01-06 5:44 ` [PATCH v2 5/7] baseband/acc: acc100 use define constant Hernan Vargas
` (2 subsequent siblings)
6 siblings, 1 reply; 18+ messages in thread
From: Hernan Vargas @ 2023-01-06 5:44 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 2f65f290b5..1ca95f4440 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -664,7 +664,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] 18+ messages in thread
* [PATCH v2 5/7] baseband/acc: acc100 use define constant
2023-01-06 5:44 [PATCH v2 0/7] baseband/acc: changes for 23.03 Hernan Vargas
` (3 preceding siblings ...)
2023-01-06 5:44 ` [PATCH v2 4/7] baseband/acc: acc100 fix queue mapping to 64 bits Hernan Vargas
@ 2023-01-06 5:44 ` Hernan Vargas
2023-01-06 9:13 ` Maxime Coquelin
2023-01-06 5:44 ` [PATCH v2 6/7] baseband/acc: acc100 use desc helper functions Hernan Vargas
2023-01-06 5:44 ` [PATCH v2 7/7] baseband/acc: acc100 ignore missing mempools Hernan Vargas
6 siblings, 1 reply; 18+ messages in thread
From: Hernan Vargas @ 2023-01-06 5:44 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 1ca95f4440..4ac8061ebd 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -1392,7 +1392,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;
@@ -1435,7 +1435,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] 18+ messages in thread
* [PATCH v2 6/7] baseband/acc: acc100 use desc helper functions
2023-01-06 5:44 [PATCH v2 0/7] baseband/acc: changes for 23.03 Hernan Vargas
` (4 preceding siblings ...)
2023-01-06 5:44 ` [PATCH v2 5/7] baseband/acc: acc100 use define constant Hernan Vargas
@ 2023-01-06 5:44 ` Hernan Vargas
2023-01-06 14:11 ` Maxime Coquelin
2023-01-06 5:44 ` [PATCH v2 7/7] baseband/acc: acc100 ignore missing mempools Hernan Vargas
6 siblings, 1 reply; 18+ messages in thread
From: Hernan Vargas @ 2023-01-06 5:44 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 4ac8061ebd..f841b31348 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -2424,9 +2424,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. */
@@ -2615,7 +2614,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;
@@ -2657,16 +2655,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;
}
@@ -3277,7 +3274,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
@@ -3292,9 +3289,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;
@@ -3779,7 +3775,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);
@@ -4025,8 +4020,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);
@@ -4079,8 +4074,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;
@@ -4122,7 +4116,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;
@@ -4130,10 +4123,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;
@@ -4229,8 +4219,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] 18+ messages in thread
* [PATCH v2 7/7] baseband/acc: acc100 ignore missing mempools
2023-01-06 5:44 [PATCH v2 0/7] baseband/acc: changes for 23.03 Hernan Vargas
` (5 preceding siblings ...)
2023-01-06 5:44 ` [PATCH v2 6/7] baseband/acc: acc100 use desc helper functions Hernan Vargas
@ 2023-01-06 5:44 ` Hernan Vargas
2023-01-06 14:39 ` Maxime Coquelin
6 siblings, 1 reply; 18+ messages in thread
From: Hernan Vargas @ 2023-01-06 5:44 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 | 8 --------
1 file changed, 8 deletions(-)
diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
index f841b31348..b4b7418c40 100644
--- a/drivers/baseband/acc/rte_acc100_pmd.c
+++ b/drivers/baseband/acc/rte_acc100_pmd.c
@@ -1832,10 +1832,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;
@@ -2679,10 +2675,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] 18+ messages in thread
* Re: [PATCH v2 1/7] baseband/acc: acc100 free harq layout pointer
2023-01-06 5:44 ` [PATCH v2 1/7] baseband/acc: acc100 free harq layout pointer Hernan Vargas
@ 2023-01-06 8:53 ` Maxime Coquelin
2023-01-11 16:45 ` Vargas, Hernan
0 siblings, 1 reply; 18+ messages in thread
From: Maxime Coquelin @ 2023-01-06 8:53 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang, stable
On 1/6/23 06:44, 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 ba8247d47e..0177a9e0ea 100644
> --- a/drivers/baseband/acc/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
> @@ -622,6 +622,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;
Please set d->harq_layout to NULL for consistency and to prevent double
free.
Maxime
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 2/7] baseband/acc: acc100 fix iteration counter in TB
2023-01-06 5:44 ` [PATCH v2 2/7] baseband/acc: acc100 fix iteration counter in TB Hernan Vargas
@ 2023-01-06 8:54 ` Maxime Coquelin
0 siblings, 0 replies; 18+ messages in thread
From: Maxime Coquelin @ 2023-01-06 8:54 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang, stable
On 1/6/23 06:44, 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 0177a9e0ea..d77d3b77b5 100644
> --- a/drivers/baseband/acc/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
> @@ -4035,8 +4035,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] 18+ messages in thread
* Re: [PATCH v2 3/7] baseband/acc: acc100 fix multiplexing multiple ops
2023-01-06 5:44 ` [PATCH v2 3/7] baseband/acc: acc100 fix multiplexing multiple ops Hernan Vargas
@ 2023-01-06 8:57 ` Maxime Coquelin
0 siblings, 0 replies; 18+ messages in thread
From: Maxime Coquelin @ 2023-01-06 8:57 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang
On 1/6/23 06:44, 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 d77d3b77b5..2f65f290b5 100644
> --- a/drivers/baseband/acc/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
> @@ -3423,9 +3423,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] 18+ messages in thread
* Re: [PATCH v2 4/7] baseband/acc: acc100 fix queue mapping to 64 bits
2023-01-06 5:44 ` [PATCH v2 4/7] baseband/acc: acc100 fix queue mapping to 64 bits Hernan Vargas
@ 2023-01-06 9:12 ` Maxime Coquelin
2023-01-06 9:13 ` Maxime Coquelin
0 siblings, 1 reply; 18+ messages in thread
From: Maxime Coquelin @ 2023-01-06 9:12 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang
On 1/6/23 06:44, 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 2f65f290b5..1ca95f4440 100644
> --- a/drivers/baseband/acc/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
> @@ -664,7 +664,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] 18+ messages in thread
* Re: [PATCH v2 4/7] baseband/acc: acc100 fix queue mapping to 64 bits
2023-01-06 9:12 ` Maxime Coquelin
@ 2023-01-06 9:13 ` Maxime Coquelin
2023-01-06 22:06 ` Vargas, Hernan
0 siblings, 1 reply; 18+ messages in thread
From: Maxime Coquelin @ 2023-01-06 9:13 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang, stable
On 1/6/23 10:12, Maxime Coquelin wrote:
>
>
> On 1/6/23 06:44, 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 2f65f290b5..1ca95f4440 100644
>> --- a/drivers/baseband/acc/rte_acc100_pmd.c
>> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
>> @@ -664,7 +664,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>
Also cc'ing stable since it is in v22.11 at least.
> Thanks,
> Maxime
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 5/7] baseband/acc: acc100 use define constant
2023-01-06 5:44 ` [PATCH v2 5/7] baseband/acc: acc100 use define constant Hernan Vargas
@ 2023-01-06 9:13 ` Maxime Coquelin
0 siblings, 0 replies; 18+ messages in thread
From: Maxime Coquelin @ 2023-01-06 9:13 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang
On 1/6/23 06:44, 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 1ca95f4440..4ac8061ebd 100644
> --- a/drivers/baseband/acc/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
> @@ -1392,7 +1392,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;
> @@ -1435,7 +1435,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] 18+ messages in thread
* Re: [PATCH v2 6/7] baseband/acc: acc100 use desc helper functions
2023-01-06 5:44 ` [PATCH v2 6/7] baseband/acc: acc100 use desc helper functions Hernan Vargas
@ 2023-01-06 14:11 ` Maxime Coquelin
0 siblings, 0 replies; 18+ messages in thread
From: Maxime Coquelin @ 2023-01-06 14:11 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang
On 1/6/23 06:44, 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(-)
>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Thanks,
Maxime
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 7/7] baseband/acc: acc100 ignore missing mempools
2023-01-06 5:44 ` [PATCH v2 7/7] baseband/acc: acc100 ignore missing mempools Hernan Vargas
@ 2023-01-06 14:39 ` Maxime Coquelin
0 siblings, 0 replies; 18+ messages in thread
From: Maxime Coquelin @ 2023-01-06 14:39 UTC (permalink / raw)
To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang
On 1/6/23 06:44, 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 | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/drivers/baseband/acc/rte_acc100_pmd.c b/drivers/baseband/acc/rte_acc100_pmd.c
> index f841b31348..b4b7418c40 100644
> --- a/drivers/baseband/acc/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
> @@ -1832,10 +1832,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;
> @@ -2679,10 +2675,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;
You can also remove the mempool header include, as no mempool API is
called in this file.
^ permalink raw reply [flat|nested] 18+ messages in thread
* RE: [PATCH v2 4/7] baseband/acc: acc100 fix queue mapping to 64 bits
2023-01-06 9:13 ` Maxime Coquelin
@ 2023-01-06 22:06 ` Vargas, Hernan
0 siblings, 0 replies; 18+ messages in thread
From: Vargas, Hernan @ 2023-01-06 22:06 UTC (permalink / raw)
To: Maxime Coquelin, dev, gakhil, trix; +Cc: Chautru, Nicolas, Zhang, Qi Z, stable
Hi Maxime,
aq_idx is uint16_t in the stable branch so I don't think that this fix is needed there.
Thanks,
Hernan
-----Original Message-----
From: Maxime Coquelin <maxime.coquelin@redhat.com>
Sent: Friday, January 6, 2023 3:13 AM
To: Vargas, Hernan <hernan.vargas@intel.com>; dev@dpdk.org; gakhil@marvell.com; trix@redhat.com
Cc: Chautru, Nicolas <nicolas.chautru@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>; stable@dpdk.org
Subject: Re: [PATCH v2 4/7] baseband/acc: acc100 fix queue mapping to 64 bits
On 1/6/23 10:12, Maxime Coquelin wrote:
>
>
> On 1/6/23 06:44, 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 2f65f290b5..1ca95f4440 100644
>> --- a/drivers/baseband/acc/rte_acc100_pmd.c
>> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
>> @@ -664,7 +664,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>
Also cc'ing stable since it is in v22.11 at least.
> Thanks,
> Maxime
^ permalink raw reply [flat|nested] 18+ messages in thread
* RE: [PATCH v2 1/7] baseband/acc: acc100 free harq layout pointer
2023-01-06 8:53 ` Maxime Coquelin
@ 2023-01-11 16:45 ` Vargas, Hernan
0 siblings, 0 replies; 18+ messages in thread
From: Vargas, Hernan @ 2023-01-11 16:45 UTC (permalink / raw)
To: Coquelin, Maxime, dev, gakhil, Rix, Tom
Cc: Chautru, Nicolas, Zhang, Qi Z, stable
Hi Maxime,
d->harq_layout = NULL is already in de acc100_dev_close function.
Thanks,
Hernan
-----Original Message-----
From: Maxime Coquelin <maxime.coquelin@redhat.com>
Sent: Friday, January 6, 2023 2:53 AM
To: Vargas, Hernan <hernan.vargas@intel.com>; dev@dpdk.org; gakhil@marvell.com; trix@redhat.com
Cc: Chautru, Nicolas <nicolas.chautru@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>; stable@dpdk.org
Subject: Re: [PATCH v2 1/7] baseband/acc: acc100 free harq layout pointer
On 1/6/23 06:44, 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 ba8247d47e..0177a9e0ea 100644
> --- a/drivers/baseband/acc/rte_acc100_pmd.c
> +++ b/drivers/baseband/acc/rte_acc100_pmd.c
> @@ -622,6 +622,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;
Please set d->harq_layout to NULL for consistency and to prevent double free.
Maxime
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2023-01-11 16:45 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-06 5:44 [PATCH v2 0/7] baseband/acc: changes for 23.03 Hernan Vargas
2023-01-06 5:44 ` [PATCH v2 1/7] baseband/acc: acc100 free harq layout pointer Hernan Vargas
2023-01-06 8:53 ` Maxime Coquelin
2023-01-11 16:45 ` Vargas, Hernan
2023-01-06 5:44 ` [PATCH v2 2/7] baseband/acc: acc100 fix iteration counter in TB Hernan Vargas
2023-01-06 8:54 ` Maxime Coquelin
2023-01-06 5:44 ` [PATCH v2 3/7] baseband/acc: acc100 fix multiplexing multiple ops Hernan Vargas
2023-01-06 8:57 ` Maxime Coquelin
2023-01-06 5:44 ` [PATCH v2 4/7] baseband/acc: acc100 fix queue mapping to 64 bits Hernan Vargas
2023-01-06 9:12 ` Maxime Coquelin
2023-01-06 9:13 ` Maxime Coquelin
2023-01-06 22:06 ` Vargas, Hernan
2023-01-06 5:44 ` [PATCH v2 5/7] baseband/acc: acc100 use define constant Hernan Vargas
2023-01-06 9:13 ` Maxime Coquelin
2023-01-06 5:44 ` [PATCH v2 6/7] baseband/acc: acc100 use desc helper functions Hernan Vargas
2023-01-06 14:11 ` Maxime Coquelin
2023-01-06 5:44 ` [PATCH v2 7/7] baseband/acc: acc100 ignore missing mempools Hernan Vargas
2023-01-06 14:39 ` 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).