From e035bc3e1c45a5aa386535a0ebac661961c1e778 Mon Sep 17 00:00:00 2001 From: Raymond Knopp Date: Sun, 24 Jul 2016 17:37:22 +0200 Subject: [PATCH 1/4] Result of testing as eNodeB. modifications for .vcd logging, bugfix in eNB_thread_FH (subframe counter), update of .conf file for new threading parameters. Updates to gtkwave configuration file for new threading. --- openair1/SCHED/phy_procedures_lte_eNb.c | 12 +++--- openair2/UTIL/LOG/vcd_signal_dumper.c | 24 +++++++----- openair2/UTIL/LOG/vcd_signal_dumper.h | 18 +++++---- .../CONF/enb.band7.tm1.50PRB.usrpb210.conf | 3 ++ targets/RT/USER/eNB_usrp.gtkw | 37 +++++++++++-------- targets/RT/USER/lte-enb.c | 29 +++++++-------- targets/RT/USER/lte-softmodem.c | 1 + 7 files changed, 70 insertions(+), 54 deletions(-) diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c index ca7b5ec559..6966c3cb90 100755 --- a/openair1/SCHED/phy_procedures_lte_eNb.c +++ b/openair1/SCHED/phy_procedures_lte_eNb.c @@ -1105,7 +1105,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, uint8_t smbv_alloc_cnt = 1; #endif - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX,1); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX+(subframe&1),1); start_meas(&eNB->phy_proc_tx); for (i=0; iphy_proc_tx); } @@ -2515,7 +2515,7 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl uint8_t seqno=0; - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_COMMON, 1 ); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_COMMON+(subframe&1), 1 ); start_meas(&eNB->phy_proc_rx); @@ -2602,7 +2602,7 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl } - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_COMMON, 0 ); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_COMMON+(subframe&1), 0 ); } @@ -2621,7 +2621,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const const int subframe = proc->subframe_rx; const int frame = proc->frame_rx; - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC, 1 ); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC+(subframe&1), 1 ); start_meas(&eNB->phy_proc_rx); #ifdef DEBUG_PHY_PROC LOG_D(PHY,"[eNB %d] Frame %d: Doing phy_procedures_eNB_uespec_RX(%d)\n",eNB->Mod_id,frame, subframe); @@ -3183,7 +3183,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const phy_procedures_emos_eNB_RX(subframe,eNB); #endif - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC, 0 ); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC+(subframe&1), 0 ); stop_meas(&eNB->phy_proc_rx); diff --git a/openair2/UTIL/LOG/vcd_signal_dumper.c b/openair2/UTIL/LOG/vcd_signal_dumper.c index a643874444..db00a8c35f 100644 --- a/openair2/UTIL/LOG/vcd_signal_dumper.c +++ b/openair2/UTIL/LOG/vcd_signal_dumper.c @@ -75,10 +75,14 @@ struct vcd_module_s { } vcd_module_s; const char* eurecomVariablesNames[] = { - "frame_number_TX_eNB", - "frame_number_RX_eNB", - "subframe_number_TX_eNB", - "subframe_number_RX_eNB", + "frame_number_TX0_eNB", + "frame_number_TX1_eNB", + "frame_number_RX0_eNB", + "frame_number_RX1_eNB", + "subframe_number_TX0_eNB", + "subframe_number_TX1_eNB", + "subframe_number_RX0_eNB", + "subframe_number_RX1_eNB", "runtime_TX_eNB", "runtime_RX_eNB", "frame_number_TX0_UE", @@ -187,8 +191,6 @@ const char* eurecomFunctionsNames[] = { "trx_write", "eNB_thread_rxtx0", "eNB_thread_rxtx1", - "eNB_thread_rx", - "eNB_thread_prach", "ue_thread_synch", "ue_thread_rxtx0", "ue_thread_rxtx1", @@ -213,10 +215,12 @@ const char* eurecomFunctionsNames[] = { "lte_ue_measurement_procedures", "lte_ue_pdcch_procedures", "lte_ue_pbch_procedures", - "phy_procedures_eNb_tx", - "phy_procedures_eNb_rx", - "phy_procedures_eNb_rx_common", - "phy_procedures_eNb_rx_uespec", + "phy_procedures_eNb_tx0", + "phy_procedures_eNb_tx1", + "phy_procedures_eNb_rx_common0", + "phy_procedures_eNb_rx_common1", + "phy_procedures_eNb_rx_uespec0", + "phy_procedures_eNb_rx_uespec1", "phy_eNB_slot_fep", "phy_procedures_ue_tx", "phy_procedures_ue_rx", diff --git a/openair2/UTIL/LOG/vcd_signal_dumper.h b/openair2/UTIL/LOG/vcd_signal_dumper.h index 1b72002f25..433d155a6c 100644 --- a/openair2/UTIL/LOG/vcd_signal_dumper.h +++ b/openair2/UTIL/LOG/vcd_signal_dumper.h @@ -47,10 +47,14 @@ /* WARNING: if you edit the enums below, update also string definitions in vcd_signal_dumper.c */ typedef enum { - VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX_ENB = 0, - VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX_ENB, - VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX_ENB, - VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX_ENB, + VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_ENB = 0, + VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX1_ENB, + VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX0_ENB, + VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX1_ENB, + VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX0_ENB, + VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX1_ENB, + VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX0_ENB, + VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX1_ENB, VCD_SIGNAL_DUMPER_VARIABLES_RUNTIME_TX_ENB, VCD_SIGNAL_DUMPER_VARIABLES_RUNTIME_RX_ENB, VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_UE, @@ -161,8 +165,6 @@ typedef enum { VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE, VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_RXTX0, VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_RXTX1, - VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_RX, - VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_PRACH, VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_SYNCH, VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_RXTX0, VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_RXTX1, @@ -188,9 +190,11 @@ typedef enum { VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PDCCH_PROCEDURES, VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PBCH_PROCEDURES, VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX, - VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX, + VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX1, VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_COMMON, + VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_COMMON1, VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC, + VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC1, VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_SLOT_FEP, VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX, VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_RX, diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf index d00482edca..b6ba5213ef 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf @@ -23,6 +23,9 @@ eNBs = component_carriers = ( { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; frame_type = "FDD"; tdd_config = 3; tdd_config_s = 0; diff --git a/targets/RT/USER/eNB_usrp.gtkw b/targets/RT/USER/eNB_usrp.gtkw index 474d2d1cf3..44401bd25e 100644 --- a/targets/RT/USER/eNB_usrp.gtkw +++ b/targets/RT/USER/eNB_usrp.gtkw @@ -1,17 +1,17 @@ [*] [*] GTKWave Analyzer v3.3.58 (w)1999-2014 BSI -[*] Sun May 29 20:10:01 2016 +[*] Sun Jul 24 14:21:37 2016 [*] [dumpfile] "/tmp/openair_dump_eNB.vcd" -[dumpfile_mtime] "Sun May 29 20:07:25 2016" -[dumpfile_size] 16398004 +[dumpfile_mtime] "Sun Jul 24 14:18:00 2016" +[dumpfile_size] 7104337 [savefile] "/home/papillon/openairinterface5g/targets/RT/USER/eNB_usrp.gtkw" -[timestart] 10806270000 +[timestart] 10621768000 [size] 1535 724 [pos] 309 0 -*-18.793451 10806918339 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 +*-19.793451 29026062100 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 [sst_width] 284 -[signals_width] 254 +[signals_width] 262 [sst_expanded] 1 [sst_vpaned_height] 294 @28 @@ -20,19 +20,24 @@ functions.trx_write @24 variables.trx_ts[63:0] variables.trx_tst[63:0] -variables.frame_number_TX_eNB[63:0] -variables.frame_number_RX_eNB[63:0] -variables.subframe_number_TX_eNB[63:0] -variables.subframe_number_RX_eNB[63:0] @28 -functions.eNB_thread_rx0 -functions.eNB_thread_tx0 -functions.phy_procedures_eNb_tx +functions.eNB_thread_rxtx0 +@24 +variables.frame_number_RX0_eNB[63:0] +variables.subframe_number_RX0_eNB[63:0] +variables.frame_number_TX0_eNB[63:0] +variables.subframe_number_TX0_eNB[63:0] +@28 +functions.eNB_thread_rxtx1 +@24 +variables.frame_number_RX1_eNB[63:0] +variables.subframe_number_RX1_eNB[63:0] +variables.frame_number_TX1_eNB[63:0] +@25 +variables.subframe_number_TX1_eNB[63:0] +@28 functions.phy_enb_sfgen -@29 functions.phy_eNB_slot_fep -@28 -functions.phy_procedures_eNb_rx functions.phy_enb_prach_rx @24 variables.dci_info[63:0] diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c index 177291596b..ff302ec80d 100644 --- a/targets/RT/USER/lte-enb.c +++ b/targets/RT/USER/lte-enb.c @@ -435,6 +435,9 @@ static void* eNB_thread_rxtx( void* param ) { if (oai_exit) break; + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX0_ENB+(proc->subframe_rx&1), proc->frame_rx ); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX0_ENB+(proc->subframe_rx&1), proc->subframe_rx ); + // Common procedures phy_procedures_eNB_common_RX(PHY_vars_eNB_g[0][proc->CC_id], 0); @@ -473,8 +476,8 @@ static void* eNB_thread_rxtx( void* param ) { exit_fun("nothing to add"); } - VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX_ENB, proc->frame_tx ); - VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX_ENB, proc->subframe_tx ); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_ENB+(proc->subframe_tx&1), proc->frame_tx ); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX0_ENB+(proc->subframe_tx&1), proc->subframe_tx ); if (oai_exit) break; @@ -1004,6 +1007,14 @@ static void* eNB_thread_FH( void* param ) { if (oai_exit) break; + if (subframe==9) { + subframe=0; + frame++; + frame&=1023; + } else { + subframe++; + } + // This case is for synchronization to another thread if ((eNB->node_timing == synch_to_other) && ((eNB->node_function == NGFI_RCC_IF4) || @@ -1037,13 +1048,7 @@ static void* eNB_thread_FH( void* param ) { VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ, 1 ); - if (subframe==9) { - subframe=0; - frame++; - frame&=1023; - } else { - subframe++; - } + rxs = eNB->rfdevice.trx_read_func(&eNB->rfdevice, &proc->timestamp_rx, @@ -1073,8 +1078,6 @@ static void* eNB_thread_FH( void* param ) { //printf("timestamp_rx %lu, frame %d(%d), subframe %d(%d)\n",proc->timestamp_rx,proc->frame_rx,frame,proc->subframe_rx,subframe); VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS, proc->timestamp_rx&0xffffffff ); - VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX_ENB, proc->frame_rx ); - VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX_ENB, proc->subframe_rx ); if (rxs != fp->samples_per_tti) exit_fun( "problem receiving samples" ); @@ -1107,8 +1110,6 @@ static void* eNB_thread_FH( void* param ) { } VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS, proc->timestamp_rx&0xffffffff ); - VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX_ENB, proc->frame_rx ); - VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX_ENB, proc->subframe_rx ); } // eNodeB_3GPP_BBU && node_timing == synch_to_ext_device else if ((eNB->node_timing == synch_to_ext_device) && @@ -1150,8 +1151,6 @@ static void* eNB_thread_FH( void* param ) { } VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS, proc->timestamp_rx&0xffffffff ); - VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX_ENB, proc->frame_rx ); - VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX_ENB, proc->subframe_rx ); } // node_timing == synch_to_externs, node_function = NGFI_IF4 else { // should not get here diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c index 8d073d310b..5db0451c4c 100644 --- a/targets/RT/USER/lte-softmodem.c +++ b/targets/RT/USER/lte-softmodem.c @@ -526,6 +526,7 @@ static void *scope_thread(void *arg) for(UE_id=0; UE_iddlsch[UE_id][0]->rnti>0) && (ue_cnt Date: Mon, 25 Jul 2016 12:04:25 +0200 Subject: [PATCH 2/4] if4 tx works again with FH thread changes --- targets/RT/USER/lte-enb.c | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c index ff302ec80d..427f69180f 100644 --- a/targets/RT/USER/lte-enb.c +++ b/targets/RT/USER/lte-enb.c @@ -301,6 +301,7 @@ static void* eNB_thread_rxtx( void* param ) { uint16_t packet_type; uint32_t symbol_number=0; + uint32_t symbol_mask, symbol_mask_full; uint8_t seqno=0; @@ -502,10 +503,16 @@ static void* eNB_thread_rxtx( void* param ) { } } else if (PHY_vars_eNB_g[0][proc->CC_id]->node_function == NGFI_RRU_IF4) { /// **** recv_IF4 of txdataF from RCC **** /// + symbol_number = 0; + symbol_mask = 0; + symbol_mask_full = (1<CC_id]->frame_parms.symbols_per_tti)-1; + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 1 ); do { recv_IF4(PHY_vars_eNB_g[0][proc->CC_id], &proc->frame_tx, &proc->subframe_tx, &packet_type, &symbol_number); - } while (symbol_number < PHY_vars_eNB_g[0][proc->CC_id]->frame_parms.symbols_per_tti-1); + symbol_mask = symbol_mask | (1<frame_rx, proc->subframe_rx)>0) ? 1 : 0; } else if (packet_type == IF4_PRACH) { - // wake up thread for PRACH RX - prach_rx = 1; + prach_rx = 0; } - } while( (symbol_mask != symbol_mask_full) && (prach_rx == 0)); + } while( (symbol_mask != symbol_mask_full) || (prach_rx == 1)); if (proc->first_rx == 0) { if (subframe_rx < proc->subframe_rx+2){ @@ -1122,32 +1128,33 @@ static void* eNB_thread_FH( void* param ) { symbol_mask = 0; symbol_mask_full = (1<symbols_per_tti)-1; prach_rx = 0; - + do { // Blocking, we need a timeout on this !!!!!!!!!!!!!!!!!!!!!!! VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 1 ); recv_IF4(eNB, &proc->frame_rx, &proc->subframe_rx, &packet_type, &symbol_number); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 0 ); if (packet_type == IF4_PULFFT) { - symbol_mask = symbol_mask | (1<frame_rx, proc->subframe_rx)>0) ? 1 : 0; } else if (packet_type == IF4_PRACH) { - // wake up thread for PRACH RX - prach_rx = 1; - } - } while( (symbol_mask != symbol_mask_full) && (prach_rx == 0)); + prach_rx = 0; + } + } while( (symbol_mask != symbol_mask_full) || (prach_rx == 1)); if (proc->first_rx == 0) { if (proc->subframe_rx != subframe){ LOG_E(PHY,"Received Timestamp doesn't correspond to the time we think it is (proc->subframe_rx %d, subframe %d)\n",proc->subframe_rx,subframe); - //exit_fun("Exiting"); + exit_fun("Exiting"); } if (proc->frame_rx != frame) { LOG_E(PHY,"Received Timestamp doesn't correspond to the time we think it is (proc->frame_rx %d frame %d)\n",proc->frame_rx,frame); - //exit_fun("Exiting"); + exit_fun("Exiting"); } } else { proc->first_rx = 0; + frame = proc->frame_rx; + subframe = proc->subframe_rx; } VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS, proc->timestamp_rx&0xffffffff ); From 81506be64c4e8876ac46f0fc48ccba6ae855613a Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Date: Mon, 25 Jul 2016 17:40:46 +0200 Subject: [PATCH 3/4] if4 working --- openair1/PHY/LTE_TRANSPORT/if4_tools.c | 4 ++-- openair1/PHY/LTE_TRANSPORT/prach.c | 21 +-------------------- targets/RT/USER/lte-enb.c | 2 +- 3 files changed, 4 insertions(+), 23 deletions(-) diff --git a/openair1/PHY/LTE_TRANSPORT/if4_tools.c b/openair1/PHY/LTE_TRANSPORT/if4_tools.c index 572bcd73b7..d492af16a7 100644 --- a/openair1/PHY/LTE_TRANSPORT/if4_tools.c +++ b/openair1/PHY/LTE_TRANSPORT/if4_tools.c @@ -96,7 +96,7 @@ void send_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t packet_type, } else if (packet_type == IF4_PULFFT) { db_fulllength = 12*fp->N_RB_UL; db_halflength = (db_fulllength)>>1; - slotoffsetF = (subframe)*(fp->ofdm_symbol_size)*((fp->Ncp==1) ? 12 : 14) + 1; + slotoffsetF = 1; blockoffsetF = slotoffsetF + fp->ofdm_symbol_size - db_halflength - 1; IF4_header_t *ul_header = (IF4_header_t *)(tx_buffer + MAC_HEADER_SIZE_BYTES); @@ -212,7 +212,7 @@ void recv_IF4(PHY_VARS_eNB *eNB, int *frame, int *subframe, uint16_t *packet_typ } else if (*packet_type == IF4_PULFFT) { *symbol_number = ((packet_header->frame_status)>>26)&0x000f; - slotoffsetF = (*symbol_number)*(fp->ofdm_symbol_size) + (*subframe)*(fp->ofdm_symbol_size)*((fp->Ncp==1) ? 12 : 14) + 1; + slotoffsetF = (*symbol_number)*(fp->ofdm_symbol_size) + 1; blockoffsetF = slotoffsetF + fp->ofdm_symbol_size - db_halflength - 1; for (element_id=0; element_idcommon_vars.rxdata[0][aa][subframe*eNB->frame_parms.samples_per_tti-eNB->N_TA_offset]; } - - int energy = dB_fixed(signal_energy(prach[0], eNB->frame_parms.samples_per_tti)); - //if (energy >= 45) { - // printf("prach subframe energy %d\n",energy); - //} - + // First compute physical root sequence if (restricted_set == 0) { if (Ncs_config>15) { @@ -1290,13 +1285,6 @@ void rx_prach(PHY_VARS_eNB *eNB, send_IF4(eNB, eNB->proc.frame_rx, eNB->proc.subframe_rx, IF4_PRACH, k); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4, 0 ); - energy = dB_fixed(signal_energy(&rxsigF[0][k], 839)); - if (energy >=45) { - printf(" prach freq-domain energy %d\n",eNB->proc.frame_rx, energy); - //write_output("beforecomp.m","rxF",&rxsigF[0][k],839*2,1,0); - //exit(1); - } - return; } else if (eNB->node_function == NGFI_RCC_IF4) { k = (12*n_ra_prb) - 6*eNB->frame_parms.N_RB_UL; @@ -1313,13 +1301,6 @@ void rx_prach(PHY_VARS_eNB *eNB, memmove((&rxsigF[0][k]), (&rxsigF[0][0]), 839*2*sizeof(int16_t)); - - energy = dB_fixed(signal_energy(&rxsigF[0][k], 839)); - if (energy >=45) { - printf(" prach freq-domain energy %d\n",eNB->proc.frame_rx, energy); - //write_output("aftercomp.m","rxF",&rxsigF[0][k],839*2,1,0); - //exit(1); - } } // in case of RCC and prach received rx_thread wakes up prach diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c index 427f69180f..6ed97c0f65 100644 --- a/targets/RT/USER/lte-enb.c +++ b/targets/RT/USER/lte-enb.c @@ -976,7 +976,7 @@ static void* eNB_thread_FH( void* param ) { pthread_mutex_unlock(&sync_mutex); - printf( "got sync (eNB_thread FH)\n" ); + printf( "got sync (eNB_thread_FH)\n" ); #if defined(ENABLE_ITTI) wait_system_ready ("Waiting for eNB application to be ready %s\r", &start_eNB); From fb2a4529d556ea7db50aa36884260c363594c7a1 Mon Sep 17 00:00:00 2001 From: Rohit Gupta Date: Mon, 25 Jul 2016 21:17:05 +0200 Subject: [PATCH 4/4] updated config files for NGFI RRH interface --- .../CONF/enb.band7.tm1.bladerfx40.conf | 3 +++ .../CONF/enb.band7.tm1.exmimo2.conf | 3 +++ .../CONF/enb.band7.tm1.lmssdr.conf | 3 +++ .../CONF/enb.band7.tm1.usrpb210.conf | 17 ++++++++++------- .../CONF/enb.band7.tm1.usrpx310.conf | 3 +++ 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.bladerfx40.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.bladerfx40.conf index 5a6a9a462b..8ae0ddeb06 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.bladerfx40.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.bladerfx40.conf @@ -23,6 +23,9 @@ eNBs = component_carriers = ( { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; frame_type = "FDD"; tdd_config = 3; tdd_config_s = 0; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf index f1160e78ca..7bf097875d 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf @@ -23,6 +23,9 @@ eNBs = component_carriers = ( { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; frame_type = "FDD"; tdd_config = 3; tdd_config_s = 0; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.lmssdr.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.lmssdr.conf index 47e2179d18..a407aaecf1 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.lmssdr.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.lmssdr.conf @@ -23,6 +23,9 @@ eNBs = component_carriers = ( { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; frame_type = "FDD"; tdd_config = 3; tdd_config_s = 0; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf index ae2b076a49..21c1a80efc 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf @@ -17,12 +17,15 @@ eNBs = mobile_country_code = "208"; - mobile_network_code = "93"; + mobile_network_code = "92"; ////////// Physical parameters: component_carriers = ( { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; frame_type = "FDD"; tdd_config = 3; tdd_config_s = 0; @@ -31,7 +34,7 @@ eNBs = downlink_frequency = 2660000000L; uplink_frequency_offset = -120000000; Nid_cell = 0; - N_RB_DL = 25; + N_RB_DL = 50; Nid_cell_mbsfn = 0; nb_antennas_tx = 1; nb_antennas_rx = 1; @@ -130,7 +133,7 @@ eNBs = }; ////////// MME parameters: - mme_ip_address = ( { ipv4 = "127.0.0.3"; + mme_ip_address = ( { ipv4 = "192.168.12.26"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -139,11 +142,11 @@ eNBs = NETWORK_INTERFACES : { - ENB_INTERFACE_NAME_FOR_S1_MME = "lo"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24"; + ENB_INTERFACE_NAME_FOR_S1_MME = "eth1"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.147/24"; - ENB_INTERFACE_NAME_FOR_S1U = "lo"; - ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.4/24"; + ENB_INTERFACE_NAME_FOR_S1U = "eth1"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.147/24"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 }; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpx310.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpx310.conf index d4b88383e2..65f58fe33f 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpx310.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpx310.conf @@ -22,6 +22,9 @@ eNBs = component_carriers = ( { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; frame_type = "FDD"; tdd_config = 3; tdd_config_s = 0;