From 8f0fd7387b1acf2e9e3b596d4a007db2ba7c9a31 Mon Sep 17 00:00:00 2001 From: Cedric Roux Date: Mon, 14 Jan 2019 16:18:31 +0100 Subject: [PATCH 01/11] CI: adapt parameters for better FDD performances --- ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf | 6 +++--- ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf | 8 ++++---- ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf b/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf index f3cb31f449..2c2ca635a6 100644 --- a/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf +++ b/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf @@ -197,8 +197,8 @@ MACRLCs = ( tr_s_preference = "local_L1"; tr_n_preference = "local_RRC"; phy_test_mode = 0; - puSch10xSnr = 200; - puCch10xSnr = 200; + puSch10xSnr = 160; + puCch10xSnr = 160; } ); @@ -227,7 +227,7 @@ RUs = ( THREAD_STRUCT = ( { #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" - parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + parallel_config = "PARALLEL_SINGLE_THREAD"; #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" worker_config = "WORKER_ENABLE"; } diff --git a/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf b/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf index e33daa7a8a..4dd8c1ee22 100644 --- a/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf +++ b/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf @@ -197,8 +197,8 @@ MACRLCs = ( tr_s_preference = "local_L1"; tr_n_preference = "local_RRC"; phy_test_mode = 0; - puSch10xSnr = 200; - puCch10xSnr = 200; + puSch10xSnr = 160; + puCch10xSnr = 160; } ); @@ -218,7 +218,7 @@ RUs = ( att_rx = 0; bands = [7]; max_pdschReferenceSignalPower = -27; - max_rxgain = 115; + max_rxgain = 125; eNB_instances = [0]; } @@ -227,7 +227,7 @@ RUs = ( THREAD_STRUCT = ( { #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" - parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + parallel_config = "PARALLEL_SINGLE_THREAD"; #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" worker_config = "WORKER_ENABLE"; } diff --git a/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf b/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf index 32e8bb9931..cae47b152c 100644 --- a/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf +++ b/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf @@ -197,8 +197,8 @@ MACRLCs = ( tr_s_preference = "local_L1"; tr_n_preference = "local_RRC"; phy_test_mode = 0; - puSch10xSnr = 200; - puCch10xSnr = 200; + puSch10xSnr = 160; + puCch10xSnr = 160; } ); @@ -218,7 +218,7 @@ RUs = ( att_rx = 0; bands = [7]; max_pdschReferenceSignalPower = -27; - max_rxgain = 115; + max_rxgain = 120; eNB_instances = [0]; } @@ -227,7 +227,7 @@ RUs = ( THREAD_STRUCT = ( { #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" - parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + parallel_config = "PARALLEL_SINGLE_THREAD"; #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" worker_config = "WORKER_ENABLE"; } From 28e4486c07a516309686bdefdaf3dc92404e6c99 Mon Sep 17 00:00:00 2001 From: Raphael Defosseux Date: Tue, 15 Jan 2019 12:12:21 +0100 Subject: [PATCH 02/11] CI: updating the IF4p5 conf files w/ same values as in monolithic also disabling LLL realtime issues as an error until PRACH allocation is fixed Signed-off-by: Raphael Defosseux --- .../conf_files/rcc.band7.tm1.if4p5.lo.100PRB.usrpb210.conf | 6 +++--- .../conf_files/rcc.band7.tm1.if4p5.lo.25PRB.usrpb210.conf | 6 +++--- .../conf_files/rcc.band7.tm1.if4p5.lo.50PRB.usrpb210.conf | 6 +++--- ci-scripts/main.py | 3 ++- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.100PRB.usrpb210.conf b/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.100PRB.usrpb210.conf index fc2f24b8a1..6c80a4f7cf 100644 --- a/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.100PRB.usrpb210.conf +++ b/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.100PRB.usrpb210.conf @@ -200,8 +200,8 @@ MACRLCs = ( tr_s_preference = "local_L1"; tr_n_preference = "local_RRC"; phy_test_mode = 0; - puSch10xSnr = 200; - puCch10xSnr = 200; + puSch10xSnr = 160; + puCch10xSnr = 160; } ); @@ -234,7 +234,7 @@ RUs = ( THREAD_STRUCT = ( { #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" - parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + parallel_config = "PARALLEL_SINGLE_THREAD"; #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" worker_config = "WORKER_ENABLE"; } diff --git a/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.25PRB.usrpb210.conf b/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.25PRB.usrpb210.conf index 010ef28061..f4be50810c 100644 --- a/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.25PRB.usrpb210.conf +++ b/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.25PRB.usrpb210.conf @@ -200,8 +200,8 @@ MACRLCs = ( tr_s_preference = "local_L1"; tr_n_preference = "local_RRC"; phy_test_mode = 0; - puSch10xSnr = 200; - puCch10xSnr = 200; + puSch10xSnr = 160; + puCch10xSnr = 160; } ); @@ -234,7 +234,7 @@ RUs = ( THREAD_STRUCT = ( { #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" - parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + parallel_config = "PARALLEL_SINGLE_THREAD"; #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" worker_config = "WORKER_ENABLE"; } diff --git a/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.50PRB.usrpb210.conf b/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.50PRB.usrpb210.conf index ddf01096cd..48c8370b4b 100644 --- a/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.50PRB.usrpb210.conf +++ b/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.50PRB.usrpb210.conf @@ -200,8 +200,8 @@ MACRLCs = ( tr_s_preference = "local_L1"; tr_n_preference = "local_RRC"; phy_test_mode = 0; - puSch10xSnr = 200; - puCch10xSnr = 200; + puSch10xSnr = 160; + puCch10xSnr = 160; } ); @@ -234,7 +234,7 @@ RUs = ( THREAD_STRUCT = ( { #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" - parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + parallel_config = "PARALLEL_SINGLE_THREAD"; #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" worker_config = "WORKER_ENABLE"; } diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 24475f7eb3..5c371a99ee 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -1504,7 +1504,8 @@ class SSHConnection(): return ENB_PROCESS_ASSERTION if foundRealTimeIssue: logging.debug('\u001B[1;37;41m eNB faced real time issues! \u001B[0m') - return ENB_PROCESS_REALTIME_ISSUE + self.htmleNBFailureMsg += 'eNB faced real time issues!\n' + #return ENB_PROCESS_REALTIME_ISSUE return 0 def TerminateeNB(self): From 4e74773d3c604cf15ceab4edaf2c0343ca10597c Mon Sep 17 00:00:00 2001 From: Raphael Defosseux Date: Tue, 15 Jan 2019 16:36:31 +0100 Subject: [PATCH 03/11] CI: modified also RRU config Signed-off-by: Raphael Defosseux --- ci-scripts/conf_files/rru.fdd.band7.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci-scripts/conf_files/rru.fdd.band7.conf b/ci-scripts/conf_files/rru.fdd.band7.conf index ff5e13908e..dab69e1f1e 100644 --- a/ci-scripts/conf_files/rru.fdd.band7.conf +++ b/ci-scripts/conf_files/rru.fdd.band7.conf @@ -20,7 +20,7 @@ RUs = ( THREAD_STRUCT = ( { #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" - parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + parallel_config = "PARALLEL_SINGLE_THREAD"; #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" worker_config = "WORKER_ENABLE"; } From 612c8632e3c3fe5bc28628030ea4a1ef06064be8 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Thu, 24 Jan 2019 15:23:09 +0100 Subject: [PATCH 04/11] fixing memory leaks in PBCH RX and FAPI adding function dci_req for UE disabling handle_dci for now --- .../nfapi/public_inc/fapi_nr_ue_interface.h | 3 +- openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c | 63 +++++++++---------- openair1/SCHED_NR_UE/fapi_nr_ue_l1.c | 1 + openair1/SCHED_NR_UE/phy_procedures_nr_ue.c | 12 ++-- openair1/SIMULATION/NR_PHY/dlsim.c | 2 +- openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c | 57 ++++++++++++++++- targets/RT/USER/nr-ue.c | 2 +- 7 files changed, 95 insertions(+), 45 deletions(-) diff --git a/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h b/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h index 86dadb249a..838e52dada 100644 --- a/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h +++ b/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h @@ -197,10 +197,11 @@ typedef struct { } fapi_nr_rx_indication_body_t; /// +#define NFAPI_RX_IND_MAX_PDU 100 typedef struct { uint32_t sfn_slot; uint16_t number_pdus; - fapi_nr_rx_indication_body_t *rx_indication_body; + fapi_nr_rx_indication_body_t rx_indication_body[NFAPI_RX_IND_MAX_PDU]; } fapi_nr_rx_indication_t; typedef struct { diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c b/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c index 3e5df2e242..a0b150eda1 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c @@ -51,8 +51,8 @@ uint16_t nr_pbch_extract(int **rxdataF, int **rxdataF_ext, int **dl_ch_estimates_ext, uint32_t symbol, + uint32_t s_offset, uint32_t high_speed_flag, - int is_synchronized, NR_DL_FRAME_PARMS *frame_parms) { @@ -65,18 +65,15 @@ uint16_t nr_pbch_extract(int **rxdataF, unsigned int rx_offset = frame_parms->first_carrier_offset + frame_parms->ssb_start_subcarrier; //and if (rx_offset>= frame_parms->ofdm_symbol_size) rx_offset-=frame_parms->ofdm_symbol_size; - int s_offset=0; AssertFatal(symbol>=1 && symbol<5, "symbol %d illegal for PBCH extraction\n", symbol); - if (is_synchronized==1) s_offset=4; - for (aarx=0; aarxnb_antennas_rx; aarx++) { rxF = &rxdataF[aarx][(symbol+s_offset)*frame_parms->ofdm_symbol_size]; - rxF_ext = &rxdataF_ext[aarx][(symbol+s_offset)*(20*12)]; + rxF_ext = &rxdataF_ext[aarx][symbol*20*12]; #ifdef DEBUG_PBCH printf("extract_rbs (nushift %d): rx_offset=%d, symbol %d\n",frame_parms->nushift, (rx_offset + ((symbol+s_offset)*(frame_parms->ofdm_symbol_size))),symbol); @@ -143,7 +140,7 @@ uint16_t nr_pbch_extract(int **rxdataF, //printf("dl_ch0 addr %p\n",dl_ch0); - dl_ch0_ext = &dl_ch_estimates_ext[aarx][(symbol+s_offset)*(20*12)]; + dl_ch0_ext = &dl_ch_estimates_ext[aarx][symbol*20*12]; for (rb=0; rb<20; rb++) { j=0; @@ -268,8 +265,7 @@ void nr_pbch_channel_compensation(int **rxdataF_ext, int **dl_ch_estimates_ext, int **rxdataF_comp, NR_DL_FRAME_PARMS *frame_parms, - uint8_t symbol, - int is_synchronized, + uint32_t symbol, uint8_t output_shift) { @@ -290,14 +286,11 @@ void nr_pbch_channel_compensation(int **rxdataF_ext, #endif - AssertFatal((symbol > 0 && symbol < 4 && is_synchronized == 0) || - (symbol > 4 && symbol < 8 && is_synchronized == 1), - "symbol %d is illegal for PBCH DM-RS (is_synchronized %d)\n", - symbol,is_synchronized); + AssertFatal((symbol > 0 && symbol < 4), + "symbol %d is illegal for PBCH DM-RS\n", + symbol); - - - if (symbol == 2 || symbol == 6) nb_re = 72; + if (symbol == 2) nb_re = 72; // printf("comp: symbol %d : nb_re %d\n",symbol,nb_re); @@ -559,31 +552,35 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue, // clear LLR buffer memset(nr_ue_pbch_vars->llr,0,NR_POLAR_PBCH_E); - int first_symbol=1; - if (ue->is_synchronized > 0) first_symbol+=4; + int symbol_offset=1; + if (ue->is_synchronized > 0) + symbol_offset=4; + else + symbol_offset=0; #ifdef DEBUG_PBCH //printf("address dataf %p",nr_ue_common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].rxdataF); write_output("rxdataF0_pbch.m","rxF0pbch", - &nr_ue_common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].rxdataF[0][first_symbol*frame_parms->ofdm_symbol_size],frame_parms->ofdm_symbol_size*3,1,1); + &nr_ue_common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].rxdataF[0][(symbol_offset+1)*frame_parms->ofdm_symbol_size],frame_parms->ofdm_symbol_size*3,1,1); #endif - for (symbol=first_symbol; symbol<(first_symbol+3); symbol++) { + // symbol refers to symbol within SSB. symbol_offset is the offset of the SSB wrt start of slot + for (symbol=1; symbol<4; symbol++) { nr_pbch_extract(nr_ue_common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].rxdataF, nr_ue_common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].dl_ch_estimates[eNB_id], nr_ue_pbch_vars->rxdataF_ext, nr_ue_pbch_vars->dl_ch_estimates_ext, - symbol-first_symbol+1, + symbol, + symbol_offset, high_speed_flag, - ue->is_synchronized, frame_parms); #ifdef DEBUG_PBCH LOG_I(PHY,"[PHY] PBCH Symbol %d ofdm size %d\n",symbol, frame_parms->ofdm_symbol_size ); LOG_I(PHY,"[PHY] PBCH starting channel_level\n"); #endif - if (symbol == 1 || symbol == 5) { + if (symbol == 1) { max_h = nr_pbch_channel_level(nr_ue_pbch_vars->dl_ch_estimates_ext, frame_parms, symbol); @@ -599,7 +596,6 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue, nr_ue_pbch_vars->rxdataF_comp, frame_parms, symbol, - ue->is_synchronized, nr_ue_pbch_vars->log2_maxh); // log2_maxh+I0_shift /*if (frame_parms->nb_antennas_rx > 1) @@ -615,7 +611,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue, return(-1); } */ - if (symbol==(first_symbol+1)) { + if (symbol==1) { nr_pbch_quantize(pbch_e_rx, (short*)&(nr_ue_pbch_vars->rxdataF_comp[0][symbol*240]), 144); @@ -633,7 +629,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue, } #ifdef DEBUG_PBCH - write_output("rxdataF_comp.m","rxFcomp",&nr_ue_pbch_vars->rxdataF_comp[0][240*first_symbol],240*3,1,1); + write_output("rxdataF_comp.m","rxFcomp",&nr_ue_pbch_vars->rxdataF_comp[0][240],240*3,1,1); #endif @@ -644,7 +640,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue, #ifdef DEBUG_PBCH //pbch_e_rx = &nr_ue_pbch_vars->llr[0]; - short *p = (short *)&(nr_ue_pbch_vars->rxdataF_comp[0][first_symbol*20*12]); + short *p = (short *)&(nr_ue_pbch_vars->rxdataF_comp[0][20*12]); for (int cnt = 0; cnt < 864 ; cnt++) printf("pbch rx llr %d\n",*(pbch_e_rx+cnt)); @@ -720,14 +716,13 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue, ue->dl_indication.rx_ind = &ue->rx_ind; // hang on rx_ind instance //ue->rx_ind.sfn_slot = 0; //should be set by higher-1-layer, i.e. clean_and_set_if_instance() - ue->rx_ind.number_pdus = ue->rx_ind.number_pdus + 1; - ue->rx_ind.rx_indication_body = (fapi_nr_rx_indication_body_t *)malloc(sizeof(fapi_nr_rx_indication_body_t)); - ue->rx_ind.rx_indication_body->pdu_type = FAPI_NR_RX_PDU_TYPE_MIB; - ue->rx_ind.rx_indication_body->mib_pdu.pdu = &decoded_output[0]; - ue->rx_ind.rx_indication_body->mib_pdu.additional_bits = xtra_byte; - ue->rx_ind.rx_indication_body->mib_pdu.ssb_index = ssb_index; // confirm with TCL - ue->rx_ind.rx_indication_body->mib_pdu.ssb_length = Lmax; // confirm with TCL - ue->rx_ind.rx_indication_body->mib_pdu.cell_id = frame_parms->Nid_cell; // confirm with TCL + ue->rx_ind.rx_indication_body[0].pdu_type = FAPI_NR_RX_PDU_TYPE_MIB; + ue->rx_ind.rx_indication_body[0].mib_pdu.pdu = &decoded_output[0]; + ue->rx_ind.rx_indication_body[0].mib_pdu.additional_bits = xtra_byte; + ue->rx_ind.rx_indication_body[0].mib_pdu.ssb_index = ssb_index; // confirm with TCL + ue->rx_ind.rx_indication_body[0].mib_pdu.ssb_length = Lmax; // confirm with TCL + ue->rx_ind.rx_indication_body[0].mib_pdu.cell_id = frame_parms->Nid_cell; // confirm with TCL + ue->rx_ind.number_pdus = 1; if (ue->if_inst && ue->if_inst->dl_indication) ue->if_inst->dl_indication(&ue->dl_indication); diff --git a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c index b07b72e4cb..1daaf90cd6 100644 --- a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c +++ b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c @@ -254,3 +254,4 @@ int8_t nr_ue_phy_config_request(nr_phy_config_t *phy_config){ return 0; } + diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c index 2188e49643..26516d6e49 100644 --- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c +++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c @@ -56,7 +56,7 @@ //#define DEBUG_PHY_PROC #define NR_PDCCH_SCHED -//#define NR_PDCCH_SCHED_DEBUG +#define NR_PDCCH_SCHED_DEBUG //#define NR_PUCCH_SCHED //#define NR_PUCCH_SCHED_DEBUG @@ -3350,14 +3350,14 @@ int nr_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t * ue->dci_ind.dci_list[i].dci_format = dci_alloc_rx[i].format; ue->dci_ind.dci_list[i].n_CCE = dci_alloc_rx[i].firstCCE; ue->dci_ind.dci_list[i].N_CCE = (int)dci_alloc_rx[i].L; - ue->dci_ind.number_of_dcis = ue->dci_ind.number_of_dcis + 1; - memcpy(&ue->dci_ind.dci_list[i].dci, &nr_dci_info_extracted, sizeof(fapi_nr_dci_pdu_rel15_t) ); + memcpy(&ue->dci_ind.dci_list[i].dci, &nr_dci_info_extracted, sizeof(fapi_nr_dci_pdu_rel15_t) ); - // TODO: check where should we send up this message. - // ue->if_inst->dl_indication(&ue->dl_indication); - } // end for loop dci_cnt + // TODO: check where should we send up this message. + ue->if_inst->dl_indication(&ue->dl_indication); + + #if UE_TIMING_TRACE stop_meas(&ue->dlsch_rx_pdcch_stats); #endif diff --git a/openair1/SIMULATION/NR_PHY/dlsim.c b/openair1/SIMULATION/NR_PHY/dlsim.c index f02180916e..f3a3219d71 100644 --- a/openair1/SIMULATION/NR_PHY/dlsim.c +++ b/openair1/SIMULATION/NR_PHY/dlsim.c @@ -622,7 +622,7 @@ int main(int argc, char **argv) uint32_t number_of_search_space_per_slot=1; uint32_t first_symbol_index=0; - uint32_t search_space_duration; // element of search space + uint32_t search_space_duration=0; // element of search space uint32_t coreset_duration; // element of coreset coreset_duration = num_symbols * number_of_search_space_per_slot; diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c index 42fc99b664..3e0ea44f37 100644 --- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c +++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c @@ -33,6 +33,7 @@ #include "NR_IF_Module.h" #include "mac_proto.h" #include "assertions.h" +#include "LAYER2/NR_MAC_UE/mac_extern.h" #include @@ -134,7 +135,7 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info){ for(i=0; idci_ind->number_of_dcis; ++i){ printf(">>>NR_IF_Module i=%d, dl_info->dci_ind->number_of_dcis=%d\n",i,dl_info->dci_ind->number_of_dcis); fapi_nr_dci_pdu_rel15_t *dci = &dl_info->dci_ind->dci_list[i].dci; - + /* ret_mask |= (handle_dci( dl_info->module_id, dl_info->cc_id, @@ -142,7 +143,7 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info){ dci, (dl_info->dci_ind->dci_list+i)->rnti, (dl_info->dci_ind->dci_list+i)->dci_format)) << FAPI_NR_DCI_IND; - + */ /*switch((dl_info->dci_ind->dci_list+i)->dci_type){ case FAPI_NR_DCI_TYPE_0_0: @@ -224,6 +225,9 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info){ } } + //clean up nr_downlink_indication_t *dl_info + dl_info->rx_ind = NULL; + dl_info->dci_ind = NULL; AssertFatal( nr_ue_if_module_inst[module_id] != NULL, "IF module is void!\n" ); nr_ue_if_module_inst[module_id]->scheduled_response(&mac->scheduled_response); @@ -256,3 +260,52 @@ int nr_ue_if_module_kill(uint32_t module_id) { } return 0; } + +int nr_ue_dcireq(nr_dcireq_t *dcireq) { + + fapi_nr_dl_config_request_t *dl_config=&dcireq->dl_config_req; + + // Type0 PDCCH search space + dl_config->number_pdus = 1; + dl_config->dl_config_list[0].pdu_type = FAPI_NR_DL_CONFIG_TYPE_DCI; + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.rnti = 0; // to be set + + uint64_t mask = 0x0; + uint16_t num_rbs=24; + uint16_t rb_offset=0; + uint16_t cell_id=0; + uint16_t num_symbols=2; + for(int i=0; i<(num_rbs/6); ++i){ // 38.331 Each bit corresponds a group of 6 RBs + mask = mask >> 1; + mask = mask | 0x100000000000; + } + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.coreset.frequency_domain_resource = mask; + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.coreset.rb_offset = rb_offset; // additional parameter other than coreset + + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.coreset.duration = num_symbols; + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.coreset.cce_reg_mapping_type =CCE_REG_MAPPING_TYPE_INTERLEAVED; + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.coreset.cce_reg_interleaved_reg_bundle_size = 6; // L 38.211 7.3.2.2 + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.coreset.cce_reg_interleaved_interleaver_size = 2; // R 38.211 7.3.2.2 + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.coreset.cce_reg_interleaved_shift_index = cell_id; + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.coreset.precoder_granularity = PRECODER_GRANULARITY_SAME_AS_REG_BUNDLE; + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.coreset.pdcch_dmrs_scrambling_id = cell_id; + + uint32_t number_of_search_space_per_slot=1; + uint32_t first_symbol_index=0; + uint32_t search_space_duration=0; // element of search space + uint32_t coreset_duration; // element of coreset + + coreset_duration = num_symbols * number_of_search_space_per_slot; + + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.number_of_candidates[0] = table_38213_10_1_1_c2[0]; + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.number_of_candidates[1] = table_38213_10_1_1_c2[1]; + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.number_of_candidates[2] = table_38213_10_1_1_c2[2]; // CCE aggregation level = 4 + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.number_of_candidates[3] = table_38213_10_1_1_c2[3]; // CCE aggregation level = 8 + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.number_of_candidates[4] = table_38213_10_1_1_c2[4]; // CCE aggregation level = 16 + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.duration = search_space_duration; + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.monitoring_symbols_within_slot = (0x3fff << first_symbol_index) & (0x3fff >> (14-coreset_duration-first_symbol_index)) & 0x3fff; + + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.N_RB_BWP = 106; + + +} diff --git a/targets/RT/USER/nr-ue.c b/targets/RT/USER/nr-ue.c index 940c21b4f4..587514b0d6 100644 --- a/targets/RT/USER/nr-ue.c +++ b/targets/RT/USER/nr-ue.c @@ -687,7 +687,7 @@ static void *UE_thread_rxn_txnp4(void *arg) { UE->dcireq.cc_id = 0; UE->dcireq.frame = proc->frame_rx; UE->dcireq.slot = proc->nr_tti_rx; - //UE->if_inst->dcireq(&UE->dcireq); + nr_ue_dcireq(&UE->dcireq); //to be replaced with function pointer later #ifdef UE_SLOT_PARALLELISATION phy_procedures_slot_parallelization_nrUE_RX( UE, proc, 0, 0, 1, UE->mode, no_relay, NULL ); From 9498f8f6dd0982f35ebfd161822142e8bb418a66 Mon Sep 17 00:00:00 2001 From: Raphael Defosseux Date: Thu, 24 Jan 2019 23:24:18 +0100 Subject: [PATCH 05/11] CI: killing the ethernet-based VM after build Signed-off-by: Raphael Defosseux --- ci-scripts/Jenkinsfile-gitlab | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci-scripts/Jenkinsfile-gitlab b/ci-scripts/Jenkinsfile-gitlab index b371f6af20..6ae75d71ae 100644 --- a/ci-scripts/Jenkinsfile-gitlab +++ b/ci-scripts/Jenkinsfile-gitlab @@ -212,7 +212,7 @@ pipeline { steps { gitlabCommitStatus(name: "Build eNb-ethernet") { timeout (time: 20, unit: 'MINUTES') { - sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant enb-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive" + sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant enb-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID}" } } } @@ -221,7 +221,7 @@ pipeline { steps { gitlabCommitStatus(name: "Build UE-ethernet") { timeout (time: 20, unit: 'MINUTES') { - sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant ue-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive" + sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant ue-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID}" } } } From 9e04a4916f94711479259a2ae4b6a4a9c991dff1 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Sun, 27 Jan 2019 21:37:46 +0100 Subject: [PATCH 06/11] adding nr_ue_scheduled_response to UE and fixed paramters in nr_ue_dcireq. Now DCI decoded again by UE. --- openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c | 8 +- targets/RT/USER/nr-ru.c | 4 +- targets/RT/USER/nr-ue.c | 91 ++++++++------------- 3 files changed, 38 insertions(+), 65 deletions(-) diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c index 3e0ea44f37..1ea888eeb9 100644 --- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c +++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c @@ -268,11 +268,11 @@ int nr_ue_dcireq(nr_dcireq_t *dcireq) { // Type0 PDCCH search space dl_config->number_pdus = 1; dl_config->dl_config_list[0].pdu_type = FAPI_NR_DL_CONFIG_TYPE_DCI; - dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.rnti = 0; // to be set + dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.rnti = 0xaaaa; // to be set uint64_t mask = 0x0; - uint16_t num_rbs=24; - uint16_t rb_offset=0; + uint16_t num_rbs=48; + uint16_t rb_offset=47; uint16_t cell_id=0; uint16_t num_symbols=2; for(int i=0; i<(num_rbs/6); ++i){ // 38.331 Each bit corresponds a group of 6 RBs @@ -292,7 +292,7 @@ int nr_ue_dcireq(nr_dcireq_t *dcireq) { uint32_t number_of_search_space_per_slot=1; uint32_t first_symbol_index=0; - uint32_t search_space_duration=0; // element of search space + uint32_t search_space_duration=1; // element of search space uint32_t coreset_duration; // element of coreset coreset_duration = num_symbols * number_of_search_space_per_slot; diff --git a/targets/RT/USER/nr-ru.c b/targets/RT/USER/nr-ru.c index 73d7c5dae1..b140de0079 100644 --- a/targets/RT/USER/nr-ru.c +++ b/targets/RT/USER/nr-ru.c @@ -1286,7 +1286,7 @@ static void* ru_thread_tx( void* param ) { gNB_L1_rxtx_proc_t *L1_proc; NR_DL_FRAME_PARMS *fp = ru->nr_frame_parms; char filename[40]; - int print_frame = 2; + int print_frame = 8; int i = 0; cpu_set_t cpuset; @@ -1403,7 +1403,7 @@ static void* ru_thread( void* param ) { int slot = fp->slots_per_frame-1; int frame =1023; char filename[40]; - int print_frame = 2; + int print_frame = 8; int i = 0; // set default return value diff --git a/targets/RT/USER/nr-ue.c b/targets/RT/USER/nr-ue.c index 587514b0d6..02cf56e21b 100644 --- a/targets/RT/USER/nr-ue.c +++ b/targets/RT/USER/nr-ue.c @@ -673,6 +673,8 @@ static void *UE_thread_rxn_txnp4(void *arg) { // pickTime(current); // updateTimes(proc->gotIQs, &t2, 10000, "Delay to wake up UE_Thread_Rx (case 2)"); + + // Process Rx data for one sub-frame if (slot_select_nr(&UE->frame_parms, proc->frame_tx, proc->nr_tti_tx) & NR_DOWNLINK_SLOT) { @@ -689,6 +691,10 @@ static void *UE_thread_rxn_txnp4(void *arg) { UE->dcireq.slot = proc->nr_tti_rx; nr_ue_dcireq(&UE->dcireq); //to be replaced with function pointer later + NR_UE_MAC_INST_t *UE_mac = get_mac_inst(0); + UE_mac->scheduled_response.dl_config = &UE->dcireq.dl_config_req; + nr_ue_scheduled_response(&UE_mac->scheduled_response); + #ifdef UE_SLOT_PARALLELISATION phy_procedures_slot_parallelization_nrUE_RX( UE, proc, 0, 0, 1, UE->mode, no_relay, NULL ); #else @@ -707,68 +713,17 @@ static void *UE_thread_rxn_txnp4(void *arg) { // trigger L2 to run ue_scheduler thru IF module // [TODO] mapping right after NR initial sync - if(1) if(UE->if_inst != NULL && UE->if_inst->ul_indication != NULL){ UE->ul_indication.module_id = 0; UE->ul_indication.gNB_index = 0; UE->ul_indication.cc_id = 0; - UE->ul_indication.slot = 0; // to be fill - UE->ul_indication.frame = 0; // to be fill - // [TODO] mapping right after NR initial sync UE->ul_indication.frame = proc->frame_rx; UE->ul_indication.slot = proc->nr_tti_rx; UE->if_inst->ul_indication(&UE->ul_indication); } - - - -#ifdef NEW_MAC - ret = mac_xface->ue_scheduler(UE->Mod_id, - proc->frame_rx, - proc->subframe_rx, - proc->nr_tti_rx, - proc->frame_tx, - proc->subframe_tx, - proc->nr_tti_tx%(UE->frame_parms.ttis_per_subframe), -#ifndef NO_RAT_NR - slot_select_nr(&UE->frame_parms, proc->frame_tx, proc->nr_tti_tx), -#else - subframe_select(&UE->frame_parms,proc->subframe_tx), -#endif - 0, - 0/*FIXME CC_id*/); -#endif - -/*#else - ret = mac_xface->ue_scheduler(UE->Mod_id, - proc->frame_rx, - proc->subframe_rx, - proc->frame_tx, - proc->subframe_tx, - subframe_select(&UE->frame_parms,proc->subframe_tx), - 0, */ -// 0/*FIXME CC_id*/); -//#endif - if ( ret != CONNECTION_OK) { - char *txt; - switch (ret) { - case CONNECTION_LOST: - txt="RRC Connection lost, returning to PRACH"; - break; - case PHY_RESYNCH: - txt="RRC Connection lost, trying to resynch"; - break; - case RESYNCH: - txt="return to PRACH and perform a contention-free access"; - break; - default: - txt="UNKNOWN RETURN CODE"; - }; - LOG_E( PHY, "[UE %"PRIu8"] Frame %"PRIu32", subframe %u %s\n", - UE->Mod_id, proc->frame_rx, proc->subframe_tx,txt ); - } - } + } + #if UE_TIMING_TRACE stop_meas(&UE->generic_stat); #endif @@ -1132,23 +1087,41 @@ void *UE_thread(void *arg) { proc->nr_tti_tx %= NR_NUMBER_OF_SUBFRAMES_PER_FRAME; } proc->subframe_tx=proc->nr_tti_tx; - - printf("Processing subframe %d\n",proc->subframe_rx); + + if (slot_select_nr(&UE->frame_parms, proc->frame_tx, proc->nr_tti_tx) & NR_DOWNLINK_SLOT) { + + //clean previous FAPI MESSAGE + UE->rx_ind.number_pdus = 0; + UE->dci_ind.number_of_dcis = 0; + //clean previous FAPI MESSAGE + + // call L2 for DL_CONFIG (DCI) + UE->dcireq.module_id = UE->Mod_id; + UE->dcireq.gNB_index = 0; + UE->dcireq.cc_id = 0; + UE->dcireq.frame = proc->frame_rx; + UE->dcireq.slot = proc->nr_tti_rx; + nr_ue_dcireq(&UE->dcireq); //to be replaced with function pointer later + + NR_UE_MAC_INST_t *UE_mac = get_mac_inst(0); + UE_mac->scheduled_response.dl_config = &UE->dcireq.dl_config_req; + nr_ue_scheduled_response(&UE_mac->scheduled_response); + + + printf("Processing subframe %d\n",proc->subframe_rx); + phy_procedures_nrUE_RX( UE, proc, 0, 1, UE->mode); + } if(UE->if_inst != NULL && UE->if_inst->ul_indication != NULL){ UE->ul_indication.module_id = 0; UE->ul_indication.gNB_index = 0; UE->ul_indication.cc_id = 0; - UE->ul_indication.slot = 0; // to be fill - UE->ul_indication.frame = 0; // to be fill - // [TODO] mapping right after NR initial sync UE->ul_indication.frame = proc->frame_rx; UE->ul_indication.slot = proc->nr_tti_rx; UE->if_inst->ul_indication(&UE->ul_indication); } - phy_procedures_nrUE_RX( UE, proc, 0, 1, UE->mode); getchar(); } // else loop_through_memory } // start_rx_stream==1 From 463cf306c473b6a784cdfa01a65355871f97136e Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Tue, 29 Jan 2019 16:01:51 +0100 Subject: [PATCH 07/11] temporarily disabling PDSCH decoding while finding the problem that makes nr-ue crash when used in real-time --- openair1/SCHED_NR_UE/phy_procedures_nr_ue.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c index 9603b8716d..4331258b69 100644 --- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c +++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c @@ -5102,7 +5102,7 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN } //set active for testing, to be removed - ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active = 1; + ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active = 0; } else ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active = 0; From de3461c8eeddaec2c02e4a2845fa6f8ec66bb877 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Thu, 31 Jan 2019 09:57:37 +0100 Subject: [PATCH 08/11] fixing dlsim and adding it to build_oai --- cmake_targets/build_oai | 2 +- openair1/SIMULATION/NR_PHY/dlsim.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai index f018e8c422..01ab01f0a7 100755 --- a/cmake_targets/build_oai +++ b/cmake_targets/build_oai @@ -696,7 +696,7 @@ function main() { echo_info "Compiling unitary tests simulators" # TODO: fix: dlsim_tm4 pucchsim prachsim pdcchsim pbchsim mbmssim #simlist="dlsim_tm4 dlsim ulsim pucchsim prachsim pdcchsim pbchsim mbmssim" - simlist="dlsim ulsim polartest ldpctest nr_pbchsim nr_dlschsim" + simlist="dlsim ulsim polartest ldpctest nr_pbchsim nr_dlschsim nr_dlsim" for f in $simlist ; do compilations \ phy_simulators $f \ diff --git a/openair1/SIMULATION/NR_PHY/dlsim.c b/openair1/SIMULATION/NR_PHY/dlsim.c index f3a3219d71..1d440c5d0d 100644 --- a/openair1/SIMULATION/NR_PHY/dlsim.c +++ b/openair1/SIMULATION/NR_PHY/dlsim.c @@ -395,7 +395,7 @@ int main(int argc, char **argv) frame_parms->N_RB_UL = N_RB_DL; // stub to configure frame_parms - nr_phy_config_request_sim(gNB,N_RB_DL,N_RB_DL,mu); + nr_phy_config_request_sim(gNB,N_RB_DL,N_RB_DL,mu,Nid_cell); // call MAC to configure common parameters phy_init_nr_gNB(gNB,0,0); From 89529d601a72af9be58e9b4ba126ce0fc2fbd4e0 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Thu, 31 Jan 2019 09:59:18 +0100 Subject: [PATCH 09/11] chaning SNR computation in nr_pbchsim and changing test_case_list.xml accordingly --- cmake_targets/autotests/test_case_list.xml | 12 ++++++------ openair1/SIMULATION/NR_PHY/pbchsim.c | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml index c54c3e3322..a26191e710 100644 --- a/cmake_targets/autotests/test_case_list.xml +++ b/cmake_targets/autotests/test_case_list.xml @@ -1065,12 +1065,12 @@ $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash $OPENAIR_DIR/targets/bin/nr_pbchsim.Rel15 - -s-11 -S-10 -n1000 -R106 - -s-11 -S-10 -n10 -I -R106 - -s-11 -S-10 -n1000 -R217 -N10 - -s-11 -S-10 -n10 -I -R217 -N10 - -s-11 -S-10 -n1000 -R273 -N20 - -s-11 -S-10 -n10 -I -R273 -N20 + -s0 -S1 -n1000 -R106 + -s0 -S1 -n10 -I -R106 + -s0 -S1 -n1000 -R217 -N10 + -s0 -S1 -n10 -I -R217 -N10 + -s0 -S1 -n1000 -R273 -N20 + -s0 -S1 -n10 -I -R273 -N20 nr_pbchsim.test1 nr_pbchsim.test2 PBCH test OK segmentation fault|assertion|exiting|fatal diff --git a/openair1/SIMULATION/NR_PHY/pbchsim.c b/openair1/SIMULATION/NR_PHY/pbchsim.c index f71cb7d147..595fc52b73 100644 --- a/openair1/SIMULATION/NR_PHY/pbchsim.c +++ b/openair1/SIMULATION/NR_PHY/pbchsim.c @@ -510,9 +510,9 @@ int main(int argc, char **argv) //multipath_channel(gNB2UE,s_re,s_im,r_re,r_im,frame_length_complex_samples,0); //AWGN - sigma2_dB = 10*log10((double)txlev)-SNR; + sigma2_dB = 20*log10((double)AMP/4)-SNR; sigma2 = pow(10,sigma2_dB/10); - // printf("sigma2 %f (%f dB)\n",sigma2,sigma2_dB); + //printf("sigma2 %f (%f dB), tx_lev %f (%f dB)\n",sigma2,sigma2_dB,txlev,10*log10((double)txlev)); for (i=0; isamples_per_subframe; i++) { for (aa=0; aanb_antennas_rx; aa++) { From cfa2f794c1429d381b251a07ad89125452af444f Mon Sep 17 00:00:00 2001 From: Raphael Defosseux Date: Mon, 4 Feb 2019 11:56:16 +0100 Subject: [PATCH 10/11] CI: adding new lib to phy-sim build check Signed-off-by: Raphael Defosseux --- ci-scripts/oai-ci-vm-tool | 4 ++-- ci-scripts/waitBuildOnVM.sh | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ci-scripts/oai-ci-vm-tool b/ci-scripts/oai-ci-vm-tool index dda71d2606..1375fb6194 100755 --- a/ci-scripts/oai-ci-vm-tool +++ b/ci-scripts/oai-ci-vm-tool @@ -252,7 +252,7 @@ case $key in VM_NAME=ci-phy-sim ARCHIVES_LOC=phy_sim LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=7 + NB_PATTERN_FILES=8 BUILD_OPTIONS="--phy_simulators" RUN_OPTIONS="./run_exec_autotests.bash -g \"01510*\" -q -np -b" NBARGS=$[$NBARGS+256] @@ -330,7 +330,7 @@ case $key in VM_NAME=ci-phy-sim ARCHIVES_LOC=phy_sim LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=7 + NB_PATTERN_FILES=8 BUILD_OPTIONS="--phy_simulators" RUN_OPTIONS="./run_exec_autotests.bash -g \"01510*\" -q -np -b" NBARGS=$[$NBARGS+256] diff --git a/ci-scripts/waitBuildOnVM.sh b/ci-scripts/waitBuildOnVM.sh index a6f4edace8..208bf06318 100755 --- a/ci-scripts/waitBuildOnVM.sh +++ b/ci-scripts/waitBuildOnVM.sh @@ -165,6 +165,10 @@ function check_on_vm_build { fi done - if [ $NB_PATTERN_FILES -ne $NB_FOUND_FILES ]; then STATUS=-1; fi + if [ $NB_PATTERN_FILES -ne $NB_FOUND_FILES ] + then + echo "Expecting $NB_PATTERN_FILES log files and found $NB_FOUND_FILES" + STATUS=-1 + fi } From 10ec0d353adc9f04555e41644ad81e673285b02c Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Mon, 4 Feb 2019 15:15:28 +0100 Subject: [PATCH 11/11] N_id_cell also initialized for UE --- openair1/SIMULATION/NR_PHY/pbchsim.c | 1 + 1 file changed, 1 insertion(+) diff --git a/openair1/SIMULATION/NR_PHY/pbchsim.c b/openair1/SIMULATION/NR_PHY/pbchsim.c index 595fc52b73..956c8ecd1f 100644 --- a/openair1/SIMULATION/NR_PHY/pbchsim.c +++ b/openair1/SIMULATION/NR_PHY/pbchsim.c @@ -356,6 +356,7 @@ int main(int argc, char **argv) frame_parms->nb_antennas_rx = n_rx; frame_parms->N_RB_DL = N_RB_DL; frame_parms->N_RB_UL = N_RB_DL; + frame_parms->Nid_cell = Nid_cell; nr_phy_config_request_sim(gNB,N_RB_DL,N_RB_DL,mu,Nid_cell); phy_init_nr_gNB(gNB,0,0);