diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml
index 3a02cfe30c..6e96bb3b99 100644
--- a/cmake_targets/autotests/test_case_list.xml
+++ b/cmake_targets/autotests/test_case_list.xml
@@ -1082,15 +1082,13 @@
nr_dlsim Test cases. (Test1: 106 PRB),
(Test2: 217 PRB),
(Test3: 273 PRB),
- (Test4: 106 PRB 12 CSET-Offset),
- (Test5: 217 PRB 48 CSET-Offset),
- (Test6: 106 PRB 25 PDSCH-Offset),
- (Test7: 106 PRB 51 PDSCH-Offset),
- (Test8: 217 PRB 100 PDSCH-PRBs),
- (Test9: 217 PRB 80 PDSCH-Offset),
- (Test10: 217 PRB 100 PDSCH-PRBs 110 PDSCH-Offset),
- (Test11: 106 PRBs 50 PDSCH-PRBs MCS Index 27)
- (Test12: 106 PRBs 50 PDSCH-PRBs MCS Index 16)
+ (Test4: 106 PRB 25 PDSCH-Offset),
+ (Test5: 106 PRB 51 PDSCH-Offset),
+ (Test6: 217 PRB 100 PDSCH-PRBs),
+ (Test7: 217 PRB 80 PDSCH-Offset),
+ (Test8: 217 PRB 100 PDSCH-PRBs 110 PDSCH-Offset),
+ (Test9: 106 PRBs 50 PDSCH-PRBs MCS Index 27)
+ (Test10: 106 PRBs 50 PDSCH-PRBs MCS Index 16)
$OPENAIR_DIR/cmake_targets/build_oai
--phy_simulators -c
@@ -1100,14 +1098,12 @@
-n100 -R106 -b106 -s5
-n100 -R217 -b217 -s5
-n100 -R273 -b273 -s5
- -n100 -R106 -o12 -s5
- -n100 -R217 -o48 -s5
-n100 -R106 -a25 -s5
-n100 -R106 -a51 -s5
-n100 -R217 -b100 -s5
-n100 -R217 -a80 -s5
-n100 -R217 -a110 -s5 -b100
- -n100 -e27 -s20
+ -n100 -e27 -s30
-n100 -e16 -s10
nr_dlsim.test1 nr_dlsim.test2 nr_dlsim.test3 nr_dlsim.test4 nr_dlsim.test5 nr_dlsim.test6 nr_dlsim.test7 nr_dlsim.test8 nr_dlsim.test9 nr_dlsim.test10 nr_dlsim.test11 nr_dlsim.test12
diff --git a/executables/softmodem-common.c b/executables/softmodem-common.c
index 0a4e94571f..f714fa2bd4 100644
--- a/executables/softmodem-common.c
+++ b/executables/softmodem-common.c
@@ -144,4 +144,63 @@ void get_common_options(uint32_t execmask) {
if(worker_config != NULL) set_worker_conf(worker_config);
}
-#endif
+void softmodem_printresources(int sig, telnet_printfunc_t pf) {
+ struct rusage usage;
+ struct timespec stop;
+
+ clock_gettime(CLOCK_BOOTTIME, &stop);
+
+ uint64_t elapse = (stop.tv_sec - start.tv_sec) ; // in seconds
+
+
+ int st = getrusage(RUSAGE_SELF,&usage);
+ if (!st) {
+ pf("\nRun time: %lluh %llus\n",(unsigned long long)elapse/3600,(unsigned long long)(elapse - (elapse/3600)));
+ pf("\tTime executing user inst.: %lds %ldus\n",(long)usage.ru_utime.tv_sec,(long)usage.ru_utime.tv_usec);
+ pf("\tTime executing system inst.: %lds %ldus\n",(long)usage.ru_stime.tv_sec,(long)usage.ru_stime.tv_usec);
+ pf("\tMax. Phy. memory usage: %ldkB\n",(long)usage.ru_maxrss);
+ pf("\tPage fault number (no io): %ld\n",(long)usage.ru_minflt);
+ pf("\tPage fault number (requiring io): %ld\n",(long)usage.ru_majflt);
+ pf("\tNumber of file system read: %ld\n",(long)usage.ru_inblock);
+ pf("\tNumber of filesystem write: %ld\n",(long)usage.ru_oublock);
+ pf("\tNumber of context switch (process origin, io...): %ld\n",(long)usage.ru_nvcsw);
+ pf("\tNumber of context switch (os origin, priority...): %ld\n",(long)usage.ru_nivcsw);
+ }
+}
+
+void signal_handler(int sig) {
+ void *array[10];
+ size_t size;
+
+ if (sig==SIGSEGV) {
+ // get void*'s for all entries on the stack
+ size = backtrace(array, 10);
+ // print out all the frames to stderr
+ fprintf(stderr, "Error: signal %d:\n", sig);
+ backtrace_symbols_fd(array, size, 2);
+ exit(-1);
+ } else {
+ if(sig==SIGINT ||sig==SOFTMODEM_RTSIGNAL)
+ softmodem_printresources(sig,(telnet_printfunc_t)printf);
+ if (sig != SOFTMODEM_RTSIGNAL) {
+ printf("Linux signal %s...\n",strsignal(sig));
+ exit_function(__FILE__, __FUNCTION__, __LINE__,"softmodem starting exit procedure\n");
+ }
+ }
+}
+
+
+
+void set_softmodem_sighandler(void) {
+ struct sigaction act,oldact;
+ clock_gettime(CLOCK_BOOTTIME, &start);
+ memset(&act,0,sizeof(act));
+ act.sa_handler=signal_handler;
+ sigaction(SOFTMODEM_RTSIGNAL,&act,&oldact);
+ printf("Send signal %d to display resource usage...\n",SIGRTMIN+1);
+ signal(SIGSEGV, signal_handler);
+ signal(SIGINT, signal_handler);
+ signal(SIGTERM, signal_handler);
+ signal(SIGABRT, signal_handler);
+}
+
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
index d3003da094..cfdae15b65 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
@@ -581,13 +581,13 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
// Fixme: correct type is unsigned, but nrLDPC_decoder and all called behind use signed int
if (check_crc((uint8_t*)llrProcBuf,length_dec,harq_process->F,crc_type)) {
- LOG_I(PHY,"Segment %u CRC OK\n\033[0m",r);
+ LOG_D(PHY,"Segment %u CRC OK\n\033[0m",r);
//Temporary hack
no_iteration_ldpc = dlsch->max_ldpc_iterations;
ret = no_iteration_ldpc;
}
else {
- LOG_I(PHY,"CRC NOK\n\033[0m");
+ LOG_D(PHY,"CRC NOK\n\033[0m");
ret = 1 + dlsch->max_ldpc_iterations;
}
diff --git a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
index c6a830a8da..69876159d6 100644
--- a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
+++ b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
@@ -51,7 +51,6 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response)
uint8_t cc_id = scheduled_response->CC_id;
uint32_t i;
int slot = scheduled_response->slot;
-
// Note: we have to handle the thread IDs for this. To be revisited completely.
uint8_t thread_id = PHY_vars_UE_g[module_id][cc_id]->current_thread_id[slot];
NR_UE_PDCCH *pdcch_vars = PHY_vars_UE_g[module_id][cc_id]->pdcch_vars[thread_id][0];
diff --git a/openair1/SIMULATION/NR_PHY/dlsim.c b/openair1/SIMULATION/NR_PHY/dlsim.c
index c0976d254f..ebcedbaeb0 100644
--- a/openair1/SIMULATION/NR_PHY/dlsim.c
+++ b/openair1/SIMULATION/NR_PHY/dlsim.c
@@ -80,6 +80,7 @@ int sf_ahead=4 ;
int sl_ahead=0;
uint8_t nfapi_mode = 0;
uint16_t NB_UE_INST = 1;
+uint64_t downlink_frequency[MAX_NUM_CCs][4];
// dummy functions
int dummy_nr_ue_ul_indication(nr_uplink_indication_t *ul_info) { return(0); }
@@ -97,13 +98,17 @@ int8_t nr_mac_rrc_data_ind_ue(const module_id_t module_id,
}
-//Dummy Functions
-
-//lte_subframe_t subframe_select(LTE_DL_FRAME_PARMS *frame_parms, unsigned char subframe) {return(SF_DL);}
-int rlc_module_init (int eNB_id) {return(0);}
-
-
void pdcp_layer_init(void) {}
+boolean_t
+pdcp_data_ind(
+ const protocol_ctxt_t *const ctxt_pP,
+ const srb_flag_t srb_flagP,
+ const MBMS_flag_t MBMS_flagP,
+ const rb_id_t rb_idP,
+ const sdu_size_t sdu_buffer_sizeP,
+ mem_block_t *const sdu_buffer_pP
+) { return(false);}
+
int rrc_init_nr_global_param(void){return(0);}
void config_common(int Mod_idP,
@@ -111,28 +116,6 @@ void config_common(int Mod_idP,
NR_ServingCellConfigCommon_t *scc
);
-mac_rlc_status_resp_t mac_rlc_status_ind(const module_id_t module_idP,
- const rnti_t rntiP,
- const eNB_index_t eNB_index,
- const frame_t frameP,
- const sub_frame_t subframeP,
- const eNB_flag_t enb_flagP,
- const MBMS_flag_t MBMS_flagP,
- const logical_chan_id_t channel_idP,
- const tb_size_t tb_sizeP,
- const uint32_t sourceL2Id,
- const uint32_t destinationL2Id) {mac_rlc_status_resp_t mac_rlc_status_resp = {0}; return mac_rlc_status_resp;}
-tbs_size_t mac_rlc_data_req(const module_id_t module_idP,
- const rnti_t rntiP,
- const eNB_index_t eNB_index,
- const frame_t frameP,
- const eNB_flag_t enb_flagP,
- const MBMS_flag_t MBMS_flagP,
- const logical_chan_id_t channel_idP,
- const tb_size_t tb_sizeP,
- char *buffer_pP,
- const uint32_t sourceL2Id,
- const uint32_t destinationL2Id) {return 0;}
int generate_dlsch_header(unsigned char *mac_header,
unsigned char num_sdus,
unsigned short *sdu_lengths,
@@ -144,19 +127,6 @@ int generate_dlsch_header(unsigned char *mac_header,
unsigned short post_padding){return 0;}
void nr_ip_over_LTE_DRB_preconfiguration(void){}
-void mac_rlc_data_ind (
- const module_id_t module_idP,
- const rnti_t rntiP,
- const eNB_index_t eNB_index,
- const frame_t frameP,
- const eNB_flag_t enb_flagP,
- const MBMS_flag_t MBMS_flagP,
- const logical_chan_id_t channel_idP,
- char *buffer_pP,
- const tb_size_t tb_sizeP,
- num_tb_t num_tbP,
- crc_t *crcs_pP)
-{}
// needed for some functions
openair0_config_t openair0_cfg[MAX_CARDS];
diff --git a/openair1/SIMULATION/NR_PHY/prachsim.c b/openair1/SIMULATION/NR_PHY/prachsim.c
index 1ec18858dc..5c00352515 100644
--- a/openair1/SIMULATION/NR_PHY/prachsim.c
+++ b/openair1/SIMULATION/NR_PHY/prachsim.c
@@ -73,6 +73,10 @@ int8_t nr_ue_get_SR(module_id_t module_idP, int CC_id, frame_t frameP, uint8_t e
return 0;
}
+uint8_t nr_ue_get_sdu(module_id_t module_idP, int CC_id, frame_t frameP,
+ sub_frame_t subframe, uint8_t eNB_index,
+ uint8_t *ulsch_buffer, uint16_t buflen, uint8_t *access_mode) {return(0);}
+
int oai_nfapi_rach_ind(nfapi_rach_indication_t *rach_ind) {return(0);}
openair0_config_t openair0_cfg[MAX_CARDS];
@@ -80,6 +84,9 @@ uint8_t nfapi_mode=0;
NR_IF_Module_t *NR_IF_Module_init(int Mod_id){return(NULL);}
int oai_nfapi_ul_config_req(nfapi_ul_config_request_t *ul_config_req) { return(0); }
+uint64_t get_softmodem_optmask(void) {
+ return 0;
+}
int main(int argc, char **argv)
{
diff --git a/openair1/SIMULATION/NR_PHY/ulsim.c b/openair1/SIMULATION/NR_PHY/ulsim.c
index f43709cac5..f98b9be7c6 100644
--- a/openair1/SIMULATION/NR_PHY/ulsim.c
+++ b/openair1/SIMULATION/NR_PHY/ulsim.c
@@ -67,44 +67,11 @@ int sl_ahead=0;
double cpuf;
uint8_t nfapi_mode = 0;
uint16_t NB_UE_INST = 1;
+uint64_t downlink_frequency[MAX_NUM_CCs][4];
+
int8_t nr_mac_rrc_data_ind_ue(const module_id_t module_id, const int CC_id, const uint8_t gNB_index,
const int8_t channel, const uint8_t* pduP, const sdu_size_t pdu_len) { return 0; }
-void mac_rlc_data_ind ( const module_id_t module_idP,
- const rnti_t rntiP,
- const eNB_index_t eNB_index,
- const frame_t frameP,
- const eNB_flag_t enb_flagP,
- const MBMS_flag_t MBMS_flagP,
- const logical_chan_id_t channel_idP,
- char *buffer_pP,
- const tb_size_t tb_sizeP,
- num_tb_t num_tbP,
- crc_t *crcs_pP){}
-mac_rlc_status_resp_t mac_rlc_status_ind( const module_id_t module_idP,
- const rnti_t rntiP,
- const eNB_index_t eNB_index,
- const frame_t frameP,
- const sub_frame_t subframeP,
- const eNB_flag_t enb_flagP,
- const MBMS_flag_t MBMS_flagP,
- const logical_chan_id_t channel_idP,
- const tb_size_t tb_sizeP,
- const uint32_t sourceL2Id,
- const uint32_t destinationL2Id)
-{mac_rlc_status_resp_t mac_rlc_status_resp = {0}; return mac_rlc_status_resp;}
-tbs_size_t mac_rlc_data_req( const module_id_t module_idP,
- const rnti_t rntiP,
- const eNB_index_t eNB_index,
- const frame_t frameP,
- const eNB_flag_t enb_flagP,
- const MBMS_flag_t MBMS_flagP,
- const logical_chan_id_t channel_idP,
- const tb_size_t tb_sizeP,
- char *buffer_pP,
- const uint32_t sourceL2Id,
- const uint32_t destinationL2Id )
-{return 0;}
int generate_dlsch_header(unsigned char *mac_header,
unsigned char num_sdus,
unsigned short *sdu_lengths,
@@ -114,8 +81,16 @@ int generate_dlsch_header(unsigned char *mac_header,
unsigned char *ue_cont_res_id,
unsigned char short_padding,
unsigned short post_padding){return 0;}
-int rlc_module_init (int enb) {return(0);}
void pdcp_layer_init (void) {}
+boolean_t pdcp_data_ind(
+ const protocol_ctxt_t *const ctxt_pP,
+ const srb_flag_t srb_flagP,
+ const MBMS_flag_t MBMS_flagP,
+ const rb_id_t rb_idP,
+ const sdu_size_t sdu_buffer_sizeP,
+ mem_block_t *const sdu_buffer_pP
+) { return(false);}
+
void pdcp_run (const protocol_ctxt_t *const ctxt_pP) { return;}
void nr_ip_over_LTE_DRB_preconfiguration(void){}
int rrc_init_nr_global_param(void){return(0);}
@@ -395,8 +370,9 @@ int main(int argc, char **argv)
//memset((void *)&gNB->UL_INFO,0,sizeof(gNB->UL_INFO));
gNB->UL_INFO.rx_ind.rx_indication_body.rx_pdu_list = (nfapi_rx_indication_pdu_t *)malloc(NB_UE_INST*sizeof(nfapi_rx_indication_pdu_t));
+ gNB->UL_INFO.crc_ind.crc_indication_body.crc_pdu_list = (nfapi_crc_indication_pdu_t *)malloc(NB_UE_INST*sizeof(nfapi_crc_indication_pdu_t));
gNB->UL_INFO.rx_ind.rx_indication_body.number_of_pdus = 0;
-
+ gNB->UL_INFO.crc_ind.crc_indication_body.number_of_crcs = 0;
frame_parms = &gNB->frame_parms; //to be initialized I suppose (maybe not necessary for PBCH)
frame_parms->nb_antennas_tx = n_tx;
frame_parms->nb_antennas_rx = n_rx;
@@ -675,6 +651,9 @@ int main(int argc, char **argv)
//----------------------------------------------------------
//------------------- gNB phy procedures -------------------
//----------------------------------------------------------
+ gNB->UL_INFO.rx_ind.rx_indication_body.number_of_pdus = 0;
+ gNB->UL_INFO.crc_ind.crc_indication_body.number_of_crcs = 0;
+
phy_procedures_gNB_common_RX(gNB, frame, slot);
if (n_trials==1)
diff --git a/openair2/LAYER2/NR_MAC_UE/mac_defs.h b/openair2/LAYER2/NR_MAC_UE/mac_defs.h
index 4cf39bcfdb..405ea95eb1 100755
--- a/openair2/LAYER2/NR_MAC_UE/mac_defs.h
+++ b/openair2/LAYER2/NR_MAC_UE/mac_defs.h
@@ -167,8 +167,6 @@ typedef struct {
RA_state_t ra_state;
/// RA-rnti
uint16_t ra_rnti;
- uint16_t crnti;
-
/// Temporary CRNTI
uint16_t t_crnti;
/// CRNTI