From ebd95c5b831c484c330ba689d381b5642aff5f96 Mon Sep 17 00:00:00 2001 From: Cedric Roux <cedric.roux@eurecom.fr> Date: Wed, 3 Jun 2015 15:53:55 +0000 Subject: [PATCH] remove global variable prach_ifft, make it local (was a problem with multiple CCs) git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7525 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- openair1/PHY/INIT/lte_init.c | 10 +++++++++- openair1/PHY/LTE_TRANSPORT/prach.c | 3 +-- openair1/PHY/impl_defs_lte.h | 4 ++++ openair1/SCHED/phy_procedures_lte_eNb.c | 3 --- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/openair1/PHY/INIT/lte_init.c b/openair1/PHY/INIT/lte_init.c index 3ce1eb2040..9adbe31916 100644 --- a/openair1/PHY/INIT/lte_init.c +++ b/openair1/PHY/INIT/lte_init.c @@ -1346,7 +1346,6 @@ int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNB, /* number of elements of an array X is computed as sizeof(X) / sizeof(X[0]) */ AssertFatal(frame_parms->nb_antennas_rx <= sizeof(eNB_prach_vars->rxsigF) / sizeof(eNB_prach_vars->rxsigF[0]), "nb_antennas_rx too large"); - for (i=0; i<frame_parms->nb_antennas_rx; i++) { eNB_prach_vars->rxsigF[i] = (int16_t*)malloc16_clear( frame_parms->ofdm_symbol_size*12*2*sizeof(int16_t) ); #ifdef DEBUG_PHY @@ -1354,6 +1353,15 @@ int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNB, #endif } + AssertFatal(frame_parms->nb_antennas_rx <= sizeof(eNB_prach_vars->prach_ifft) / sizeof(eNB_prach_vars->prach_ifft[0]), + "nb_antennas_rx too large"); + for (i=0; i<frame_parms->nb_antennas_rx; i++) { + eNB_prach_vars->prach_ifft[i] = (int16_t*)malloc16_clear(1024*2*sizeof(int16_t)); +#ifdef DEBUG_PHY + msg("[openair][LTE_PHY][INIT] prach_vars->prach_ifft[%d] = %p\n",i,eNB_prach_vars->prach_ifft[i]); +#endif + } + for (UE_id=0; UE_id<NUMBER_OF_UE_MAX; UE_id++) { //FIXME diff --git a/openair1/PHY/LTE_TRANSPORT/prach.c b/openair1/PHY/LTE_TRANSPORT/prach.c index db21c8bd4f..4749598616 100644 --- a/openair1/PHY/LTE_TRANSPORT/prach.c +++ b/openair1/PHY/LTE_TRANSPORT/prach.c @@ -1002,8 +1002,6 @@ int32_t generate_prach( PHY_VARS_UE *phy_vars_ue, uint8_t eNB_id, uint8_t subfra __m128i mmtmpX0,mmtmpX1,mmtmpX2,mmtmpX3; -int16_t prach_ifft[4][1024*2]; - void rx_prach(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe,uint16_t *preamble_energy_list, uint16_t *preamble_delay_list, uint16_t Nf, uint8_t tdd_mapindex) { @@ -1019,6 +1017,7 @@ void rx_prach(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe,uint16_t *preamble_ene uint8_t n_ra_prboffset = phy_vars_eNB->lte_frame_parms.prach_config_common.prach_ConfigInfo.prach_FreqOffset; int16_t *prachF = phy_vars_eNB->lte_eNB_prach_vars.prachF; int16_t **rxsigF = phy_vars_eNB->lte_eNB_prach_vars.rxsigF; + int16_t **prach_ifft = phy_vars_eNB->lte_eNB_prach_vars.prach_ifft; int16_t *prach[4]; int16_t *prach2; uint8_t n_ra_prb; diff --git a/openair1/PHY/impl_defs_lte.h b/openair1/PHY/impl_defs_lte.h index 55ce81cac6..47c32d87c8 100644 --- a/openair1/PHY/impl_defs_lte.h +++ b/openair1/PHY/impl_defs_lte.h @@ -1003,6 +1003,10 @@ typedef struct { /// first index: rx antenna [0..3] (hard coded) \note Hard coded array size indexed by \c nb_antennas_rx. /// second index: ? [0..ofdm_symbol_size*12[ int16_t *rxsigF[4]; + /// \brief local buffer to compute prach_ifft (necessary in case of multiple CCs) + /// first index: rx antenna [0..3] (hard coded) \note Hard coded array size indexed by \c nb_antennas_rx. + /// second index: ? [0..2047] (hard coded) + int16_t *prach_ifft[4]; } LTE_eNB_PRACH; typedef struct { diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c index b6bed6591e..3828a9be72 100755 --- a/openair1/SCHED/phy_procedures_lte_eNb.c +++ b/openair1/SCHED/phy_procedures_lte_eNb.c @@ -3034,9 +3034,6 @@ void get_n1_pucch_eNB(PHY_VARS_eNB *phy_vars_eNB, } } - -extern int16_t prach_ifft[4][1024*4]; - void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t abstraction_flag) { -- GitLab