nrLDPC_coding_t2: allocate array of rte_bbdev_dec_op pointers on stack instead of heap

This commit is contained in:
Thomas Schlichter
2025-05-20 08:00:36 +00:00
parent 2df487fc8b
commit 944ac15ab5
@@ -627,10 +627,8 @@ pmd_lcore_ldpc_dec(void *arg)
int time_out = 0;
const uint16_t queue_id = tp->queue_id;
const uint16_t num_segments = nb_segments_decoding(nrLDPC_slot_decoding_parameters);
struct rte_bbdev_dec_op **ops_enq;
struct rte_bbdev_dec_op **ops_deq;
ops_enq = (struct rte_bbdev_dec_op **)rte_calloc("struct rte_bbdev_dec_op **ops_enq", num_segments, sizeof(struct rte_bbdev_dec_op *), RTE_CACHE_LINE_SIZE);
ops_deq = (struct rte_bbdev_dec_op **)rte_calloc("struct rte_bbdev_dec_op **ops_dec", num_segments, sizeof(struct rte_bbdev_dec_op *), RTE_CACHE_LINE_SIZE);
struct rte_bbdev_dec_op *ops_enq[num_segments];
struct rte_bbdev_dec_op *ops_deq[num_segments];
struct data_buffers *bufs = tp->data_buffers;
uint16_t h, i, j;
struct rte_bbdev_info info;
@@ -698,8 +696,6 @@ pmd_lcore_ldpc_dec(void *arg)
}
rte_bbdev_dec_op_free_bulk(ops_enq, num_segments);
rte_free(ops_enq);
rte_free(ops_deq);
// Return the worst decoding number of iterations for all segments
return tp->iter_count;
}
@@ -713,10 +709,8 @@ static int pmd_lcore_ldpc_enc(void *arg)
int time_out = 0;
const uint16_t queue_id = tp->queue_id;
const uint16_t num_segments = nb_segments_encoding(nrLDPC_slot_encoding_parameters);
struct rte_bbdev_enc_op **ops_enq;
struct rte_bbdev_enc_op **ops_deq;
ops_enq = (struct rte_bbdev_enc_op **)rte_calloc("struct rte_bbdev_dec_op **ops_enq", num_segments, sizeof(struct rte_bbdev_enc_op *), RTE_CACHE_LINE_SIZE);
ops_deq = (struct rte_bbdev_enc_op **)rte_calloc("struct rte_bbdev_dec_op **ops_dec", num_segments, sizeof(struct rte_bbdev_enc_op *), RTE_CACHE_LINE_SIZE);
struct rte_bbdev_enc_op *ops_enq[num_segments];
struct rte_bbdev_enc_op *ops_deq[num_segments];
struct rte_bbdev_info info;
struct data_buffers *bufs = tp->data_buffers;
uint16_t num_to_enq;
@@ -758,8 +752,6 @@ static int pmd_lcore_ldpc_enc(void *arg)
if (nrLDPC_slot_encoding_parameters->toutput != NULL)
stop_meas(nrLDPC_slot_encoding_parameters->toutput);
rte_bbdev_enc_op_free_bulk(ops_enq, num_segments);
rte_free(ops_enq);
rte_free(ops_deq);
return ret;
}