diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_defs.h b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_defs.h index abab93fb42..940d842550 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_defs.h +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_defs.h @@ -100,23 +100,7 @@ #define NR_LDPC_MAX_NUM_LLR 26112 // ============================================================================== -// GLOBAL VARIABLES - -// Aligned on 32 bytes = 256 bits for AVX2 -/** CN processing buffer */ -//static int8_t cnProcBuf [NR_LDPC_SIZE_CN_PROC_BUF] __attribute__ ((aligned(32))); -/** Buffer for CN processing results */ -//static int8_t cnProcBufRes[NR_LDPC_SIZE_CN_PROC_BUF] __attribute__ ((aligned(32))); - -/** BN processing buffer */ -//static int8_t bnProcBuf [NR_LDPC_SIZE_BN_PROC_BUF] __attribute__ ((aligned(32))); -/** Buffer for BN processing results */ -//static int8_t bnProcBufRes[NR_LDPC_SIZE_BN_PROC_BUF] __attribute__ ((aligned(32))); - -/** Buffer for LLR results */ -//static int8_t llrRes [NR_LDPC_MAX_NUM_LLR] __attribute__ ((aligned(32))); -/** LLR processing buffer */ -//static int8_t llrProcBuf[NR_LDPC_MAX_NUM_LLR] __attribute__ ((aligned(32))); +// GLOBAL CONSTANT VARIABLES /** Start addresses for the cnProcBuf for each CN group in BG1*/ static const uint32_t lut_startAddrCnGroups_BG1[NR_LDPC_NUM_CN_GROUPS_BG1] = {0, 1152, 8832, 43392, 61824, 75264, 81408, 88320, 92160}; diff --git a/openair1/PHY/INIT/nr_init_ue.c b/openair1/PHY/INIT/nr_init_ue.c index f4cb9cef4b..1e8f2bc990 100644 --- a/openair1/PHY/INIT/nr_init_ue.c +++ b/openair1/PHY/INIT/nr_init_ue.c @@ -937,9 +937,6 @@ void init_nr_ue_transport(PHY_VARS_NR_UE *ue,int abstraction_flag) { ue->dlsch_MCH[0] = new_nr_ue_dlsch(1,NUMBER_OF_HARQ_PID_MAX,NSOFT,MAX_LDPC_ITERATIONS_MBSFN,ue->frame_parms.N_RB_DL,0); - // LDPC processing buffer allocation - ue->p_nrLDPC_procBuf[0] = nrLDPC_init_mem(); - ue->p_nrLDPC_procBuf[1] = nrLDPC_init_mem(); } void phy_init_nr_top(PHY_VARS_NR_UE *ue) diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c index 10794c0a3e..295673fdde 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c @@ -81,6 +81,8 @@ void free_nr_ue_dlsch(NR_UE_DLSCH_t *dlsch) } } + nrLDPC_free_mem(dlsch->p_nrLDPC_procBuf); + free16(dlsch,sizeof(NR_UE_DLSCH_t)); dlsch = NULL; } @@ -120,6 +122,7 @@ NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint dlsch->Mdlharq = Mdlharq; dlsch->Nsoft = Nsoft; dlsch->max_ldpc_iterations = max_ldpc_iterations; + dlsch->p_nrLDPC_procBuf = nrLDPC_init_mem(); for (i=0; ip_nrLDPC_procBuf[0]; + t_nrLDPC_procBuf* p_nrLDPC_procBuf = dlsch->p_nrLDPC_procBuf; int16_t z [68*384]; int8_t l [68*384]; @@ -696,8 +698,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue, t_nrLDPC_dec_params* p_decParams = &decParams; t_nrLDPC_time_stats procTime; t_nrLDPC_time_stats* p_procTime =&procTime ; - // Pointer to LDPC processing buffer of thread 0 - t_nrLDPC_procBuf* p_nrLDPC_procBuf = phy_vars_ue->p_nrLDPC_procBuf[0]; + t_nrLDPC_procBuf* p_nrLDPC_procBuf = dlsch->p_nrLDPC_procBuf; int16_t z [68*384]; int8_t l [68*384]; //__m128i l; @@ -1281,8 +1282,7 @@ void *nr_dlsch_decoding_2thread0(void *arg) t_nrLDPC_dec_params* p_decParams = &decParams; t_nrLDPC_time_stats procTime; t_nrLDPC_time_stats* p_procTime =&procTime ; - // Pointer to LDPC processing buffer of thread 0 - t_nrLDPC_procBuf* p_nrLDPC_procBuf = phy_vars_ue->p_nrLDPC_procBuf[0]; + t_nrLDPC_procBuf* p_nrLDPC_procBuf = dlsch->p_nrLDPC_procBuf; int16_t z [68*384]; int8_t l [68*384]; //__m128i l; @@ -1789,8 +1789,7 @@ void *nr_dlsch_decoding_2thread1(void *arg) t_nrLDPC_dec_params* p_decParams = &decParams; t_nrLDPC_time_stats procTime; t_nrLDPC_time_stats* p_procTime =&procTime ; - // Pointer to LDPC processing buffer of thread 1 - t_nrLDPC_procBuf* p_nrLDPC_procBuf = phy_vars_ue->p_nrLDPC_procBuf[1]; + t_nrLDPC_procBuf* p_nrLDPC_procBuf = dlsch->p_nrLDPC_procBuf; int16_t z [68*384]; int8_t l [68*384]; //__m128i l; diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h b/openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h index f89816c782..c8ef70b242 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h @@ -34,7 +34,7 @@ #include #include "PHY/impl_defs_top.h" - +#include "PHY/CODING/nrLDPC_decoder/nrLDPC_types.h" //#include "PHY/defs_nr_UE.h" #include "../NR_TRANSPORT/nr_transport_common_proto.h" @@ -352,10 +352,10 @@ typedef struct { uint32_t Nsoft; /// Maximum number of LDPC iterations uint8_t max_ldpc_iterations; + /// LDPC processing buffers + t_nrLDPC_procBuf* p_nrLDPC_procBuf; /// number of iterations used in last turbo decoding - uint8_t last_iteration_cnt; - - + uint8_t last_iteration_cnt; } NR_UE_DLSCH_t; typedef enum {format0_0, diff --git a/openair1/PHY/defs_nr_UE.h b/openair1/PHY/defs_nr_UE.h index a374aba941..9dfcacb611 100644 --- a/openair1/PHY/defs_nr_UE.h +++ b/openair1/PHY/defs_nr_UE.h @@ -158,7 +158,6 @@ #include "targets/ARCH/COMMON/common_lib.h" #include "NR_IF_Module.h" -#include "PHY/CODING/nrLDPC_decoder/nrLDPC_init_mem.h" /// Context data structure for RX/TX portion of subframe processing typedef struct { @@ -1064,9 +1063,6 @@ typedef struct { #endif t_nrPolar_params *nrPolar_params; - /// LDPC processing buffers for 2 segments in parallel - t_nrLDPC_procBuf* p_nrLDPC_procBuf[2]; - /// PBCH DMRS sequence uint32_t nr_gold_pbch[2][64][NR_PBCH_DMRS_LENGTH_DWORD];