From 7c5b94576612ef556b3dd999f9f56ae187cff94a Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Thu, 16 Nov 2023 07:59:30 +0100 Subject: [PATCH] Set RTE_BBDEV_LDPC_HQ_COMBINE_IN_ENABLE based on harq_to_be_cleared value --- .../CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c | 12 ++++++------ openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h | 2 ++ openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c index 9c08f10f10..a77fdfc2f7 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c @@ -538,13 +538,13 @@ set_ldpc_dec_op(struct rte_bbdev_dec_op **ops, unsigned int n, RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_IN_ENABLE | RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_OUT_ENABLE | RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE; - if (ops[i]->ldpc_dec.rv_index != 0) { - ops[i]->ldpc_dec.op_flags |= RTE_BBDEV_LDPC_HQ_COMBINE_IN_ENABLE; + if (p_offloadParams->setCombIn) { + ops[i]->ldpc_dec.op_flags |= RTE_BBDEV_LDPC_HQ_COMBINE_IN_ENABLE; } + LOG_D(PHY,"ULSCH %02d HARQPID %02d R %02d COMBIN %d RV %d NCB %05d \n", ulsch_id, harq_pid, r, p_offloadParams->setCombIn, p_offloadParams->rv, p_offloadParams->n_cb); ops[i]->ldpc_dec.code_block_mode = 1; // ldpc_dec->code_block_mode; ops[i]->ldpc_dec.harq_combined_input.offset = ulsch_id * (32 * 1024 * 1024) + harq_pid * (2 * 1024 * 1024) + r * (1024 * 32); ops[i]->ldpc_dec.harq_combined_output.offset = ulsch_id * (32 * 1024 * 1024) + harq_pid * (2 * 1024 * 1024) + r * (1024 * 32); - if (bufs->hard_outputs != NULL) ops[i]->ldpc_dec.hard_output = bufs->hard_outputs[start_idx + i]; if (bufs->inputs != NULL) @@ -1042,8 +1042,8 @@ int32_t LDPCdecoder(struct nrLDPC_dec_params *p_decParams, decode_abort_t *ab) { pthread_mutex_lock(&decode_mutex); - // hardcoded we use first device + struct active_device *ad = active_devs; t_nrLDPCoffload_params offloadParams = {.E = p_decParams->E, .n_cb = (p_decParams->BG == 1) ? (66 * p_decParams->Z) : (50 * p_decParams->Z), @@ -1051,8 +1051,8 @@ int32_t LDPCdecoder(struct nrLDPC_dec_params *p_decParams, .Z = p_decParams->Z, .rv = p_decParams->rv, .F = p_decParams->F, - .Qm = p_decParams->Qm}; - LOG_D(PHY,"E %d\n",p_decParams->E); + .Qm = p_decParams->Qm, + .setCombIn = p_decParams->setCombIn}; struct rte_bbdev_info info; rte_bbdev_info_get(ad->dev_id, &info); int socket_id = GET_SOCKET(info.socket_id); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h index 8183743747..63a96645c3 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h @@ -93,6 +93,7 @@ typedef struct nrLDPC_dec_params { e_nrLDPC_outMode outMode; /**< Output format */ int crc_type; int (*check_crc)(uint8_t* decoded_bytes, uint32_t n, uint8_t crc_type); + uint8_t setCombIn; } t_nrLDPC_dec_params; typedef struct nrLDPCoffload_params { @@ -104,6 +105,7 @@ typedef struct nrLDPCoffload_params { uint16_t n_cb; uint16_t F; /**< Filler bits */ uint8_t Qm; /**< Modulation */ + uint8_t setCombIn; } t_nrLDPCoffload_params; /** diff --git a/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c b/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c index 79e09a58da..a3041838b9 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c +++ b/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c @@ -420,7 +420,7 @@ int nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, decParams.Z = harq_process->Z; decParams.numMaxIter = ulsch->max_ldpc_iterations; decParams.outMode = 0; - + decParams.setCombIn = !harq_process->harq_to_be_cleared; if (harq_process->harq_to_be_cleared) { for (int r = 0; r < harq_process->C; r++) harq_process->d_to_be_cleared[r] = true;