From f35d25bc75359fadcb9dda52bdd3b877d72cb68b Mon Sep 17 00:00:00 2001 From: kaltenbe <kaltenbe@mycompany.com> Date: Tue, 23 Jun 2015 10:24:55 +0000 Subject: [PATCH] adding a few vdc signals to debug ue realtime behaviour git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7634 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- openair2/UTIL/LOG/vcd_signal_dumper.c | 6 +++- openair2/UTIL/LOG/vcd_signal_dumper.h | 4 +++ targets/RT/USER/lte-ue.c | 50 +++++++++++++++++++-------- targets/RT/USER/ue_exmimo2.gtkw | 22 +++++++----- 4 files changed, 58 insertions(+), 24 deletions(-) diff --git a/openair2/UTIL/LOG/vcd_signal_dumper.c b/openair2/UTIL/LOG/vcd_signal_dumper.c index 4f34667b64..3775b7e1dc 100644 --- a/openair2/UTIL/LOG/vcd_signal_dumper.c +++ b/openair2/UTIL/LOG/vcd_signal_dumper.c @@ -101,6 +101,8 @@ const char* eurecomVariablesNames[] = { "itti_alloc_msg", "mp_alloc", "mp_free", + "ue_inst_cnt_rx", + "ue_inst_cnt_tx" }; const char* eurecomFunctionsNames[] = { @@ -128,6 +130,8 @@ const char* eurecomFunctionsNames[] = { "eNB_thread_rx8", "eNB_thread_tx9", "eNB_thread_rx9", + "ue_thread_tx", + "ue_thread_rx", /* PHY signals */ "ue_synch", @@ -198,6 +202,7 @@ const char* eurecomFunctionsNames[] = { "mac_dlsch_preprocessor", "mac_schedule_dlsch", "mac_fill_dlsch_dci", + "macxface_out_of_sync_ind", "macxface_ue_decode_si", "macxface_ue_decode_ccch", @@ -210,7 +215,6 @@ const char* eurecomFunctionsNames[] = { "macxface_ue_get_sr", "ue_send_mch_sdu", - "ue_synch", /*RLC signals */ "rlc_data_req", diff --git a/openair2/UTIL/LOG/vcd_signal_dumper.h b/openair2/UTIL/LOG/vcd_signal_dumper.h index 6c9845de6f..2d8560d615 100644 --- a/openair2/UTIL/LOG/vcd_signal_dumper.h +++ b/openair2/UTIL/LOG/vcd_signal_dumper.h @@ -73,6 +73,8 @@ typedef enum { VCD_SIGNAL_DUMPER_VARIABLE_ITTI_ALLOC_MSG, VCD_SIGNAL_DUMPER_VARIABLE_MP_ALLOC, VCD_SIGNAL_DUMPER_VARIABLE_MP_FREE, + VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_RX, + VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_TX, VCD_SIGNAL_DUMPER_VARIABLES_LAST, VCD_SIGNAL_DUMPER_VARIABLES_END = VCD_SIGNAL_DUMPER_VARIABLES_LAST, } vcd_signal_dump_variables; @@ -102,6 +104,8 @@ typedef enum { VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_RX8, VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_TX9, VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_RX9, + VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_TX, + VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_RX, /* PHY signals */ VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SYNCH, diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c index ec6caaa945..3bf63d3653 100644 --- a/targets/RT/USER/lte-ue.c +++ b/targets/RT/USER/lte-ue.c @@ -623,6 +623,7 @@ static void *UE_thread_tx(void *arg) exit_fun("nothing to add"); return &UE_thread_tx_retval; } + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_TX, 1 ); if ((subframe_select( &UE->lte_frame_parms, UE->slot_tx>>1 ) == SF_UL) || (UE->lte_frame_parms.frame_type == FDD)) { @@ -661,6 +662,17 @@ static void *UE_thread_tx(void *arg) } #endif + UE->slot_tx += 2; + + if (UE->slot_tx >= 20) { + UE->slot_tx -= 20; + UE->frame_tx++; + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX_UE, UE->frame_tx ); + } + + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX_UE, UE->slot_tx>>1 ); + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_TX, 0 ); if (pthread_mutex_lock(&UE->mutex_tx) != 0) { LOG_E( PHY, "[SCHED][UE] error locking mutex for UE TX thread\n" ); @@ -669,6 +681,7 @@ static void *UE_thread_tx(void *arg) } UE->instance_cnt_tx--; + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_TX, UE->instance_cnt_tx); if (pthread_mutex_unlock(&UE->mutex_tx) != 0) { LOG_E( PHY, "[SCHED][UE] error unlocking mutex for UE TX thread\n" ); @@ -676,15 +689,6 @@ static void *UE_thread_tx(void *arg) return &UE_thread_tx_retval; } - UE->slot_tx += 2; - - if (UE->slot_tx >= 20) { - UE->slot_tx -= 20; - UE->frame_tx++; - VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX_UE, UE->frame_tx ); - } - - VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX_UE, UE->slot_tx>>1 ); } return &UE_thread_tx_retval; @@ -794,6 +798,7 @@ static void *UE_thread_rx(void *arg) return &UE_thread_rx_retval; } + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_RX, 1 ); for (i=0; i<2; i++) { if ((subframe_select( &UE->lte_frame_parms, UE->slot_rx>>1 ) == SF_DL) || (UE->lte_frame_parms.frame_type == FDD)) { @@ -908,6 +913,8 @@ static void *UE_thread_rx(void *arg) VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX_UE, UE->slot_rx>>1 ); } + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_RX, 0 ); + if (pthread_mutex_lock(&UE->mutex_rx) != 0) { LOG_E( PHY, "[SCHED][UE] error locking mutex for UE RX\n" ); @@ -916,6 +923,7 @@ static void *UE_thread_rx(void *arg) } UE->instance_cnt_rx--; + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_RX, UE->instance_cnt_rx); if (pthread_mutex_unlock(&UE->mutex_rx) != 0) { LOG_E( PHY, "[SCHED][UE] error unlocking mutex for UE RX\n" ); @@ -1110,6 +1118,9 @@ void *UE_thread(void *arg) return &UE_thread_retval; } + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_RX, instance_cnt_rx); + + if (instance_cnt_rx == 0) { if (pthread_cond_signal(&UE->cond_rx) != 0) { LOG_E( PHY, "[SCHED][UE] ERROR pthread_cond_signal for UE RX thread\n" ); @@ -1117,6 +1128,8 @@ void *UE_thread(void *arg) return &UE_thread_retval; } + LOG_D(HW,"signalled rx thread to wake up, hw_frame %d, hw_subframe %d (time %lli)\n", frame, hw_subframe, rt_get_time_ns()-T0 ); + if (UE->mode == rx_calib_ue) { if (frame == 10) { LOG_D(PHY, @@ -1156,6 +1169,8 @@ void *UE_thread(void *arg) exit_fun("nothing to add"); return &UE_thread_retval; } + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_TX, instance_cnt_tx); + if (instance_cnt_tx == 0) { if (pthread_cond_signal(&UE->cond_tx) != 0) { @@ -1163,6 +1178,8 @@ void *UE_thread(void *arg) exit_fun("nothing to add"); return &UE_thread_retval; } + LOG_D(HW,"signalled tx thread to wake up, hw_frame %d, hw_subframe %d (time %lli)\n", frame, hw_subframe, rt_get_time_ns()-T0 ); + } else { LOG_E( PHY, "[SCHED][UE] UE TX thread busy!!\n" ); exit_fun("nothing to add"); @@ -1504,11 +1521,13 @@ void *UE_thread(void *arg) exit_fun("nothing to add"); } else { - UE->instance_cnt_rx++; - //printf("UE_thread: Unlocking UE mutex_rx\n"); + int instance_cnt_rx = ++UE->instance_cnt_rx; + pthread_mutex_unlock(&UE->mutex_rx); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_RX, instance_cnt_rx); + - if (UE->instance_cnt_rx == 0) { + if (instance_cnt_rx == 0) { LOG_D(HW,"Scheduling UE RX for frame %d (hw frame %d), subframe %d (%d), mode %d\n",UE->frame_rx,frame,slot>>1,UE->slot_rx>>1,UE->mode); if (pthread_cond_signal(&UE->cond_rx) != 0) { @@ -1548,11 +1567,12 @@ void *UE_thread(void *arg) exit_fun("nothing to add"); } else { - UE->instance_cnt_tx++; - //printf("UE_thread: Unlocking UE mutex_rx\n"); + int instance_cnt_tx = ++UE->instance_cnt_tx; + pthread_mutex_unlock(&UE->mutex_tx); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_TX, instance_cnt_tx); - if (UE->instance_cnt_tx == 0) { + if (instance_cnt_tx == 0) { LOG_D(HW,"Scheduling UE TX for frame %d (hw frame %d), subframe %d (%d), mode %d\n",UE->frame_tx,frame,slot>>1,UE->slot_tx>>1,UE->mode); if (pthread_cond_signal(&UE->cond_tx) != 0) { diff --git a/targets/RT/USER/ue_exmimo2.gtkw b/targets/RT/USER/ue_exmimo2.gtkw index e9cac85100..5be62a28de 100644 --- a/targets/RT/USER/ue_exmimo2.gtkw +++ b/targets/RT/USER/ue_exmimo2.gtkw @@ -1,15 +1,15 @@ [*] [*] GTKWave Analyzer v3.3.58 (w)1999-2014 BSI -[*] Thu Feb 5 17:45:30 2015 +[*] Tue Jun 23 10:22:38 2015 [*] [dumpfile] "/tmp/openair_dump_UE.vcd" -[dumpfile_mtime] "Thu Feb 5 17:10:05 2015" -[dumpfile_size] 18764854 -[savefile] "/home/ephese/openair4G/targets/RT/USER/ue_exmimo2.gtkw" -[timestart] 4937140000 -[size] 1463 640 +[dumpfile_mtime] "Tue Jun 23 10:21:56 2015" +[dumpfile_size] 15561726 +[savefile] "/home/stevens/openair4G/targets/RT/USER/ue_exmimo2.gtkw" +[timestart] 10448200000 +[size] 1215 640 [pos] 105 102 -*-22.000000 4947033063 -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 +*-23.292629 -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 -1 [sst_width] 224 [signals_width] 262 [sst_expanded] 1 @@ -26,9 +26,15 @@ functions.rt_sleep variables.subframe_number_RX_UE[63:0] variables.subframe_number_TX_UE[63:0] variables.slot_number_RX_UE[63:0] -@25 variables.slot_number_RX_UE[63:0] @28 +functions.ue_thread_rx +functions.ue_thread_tx +@420 +variables.ue_inst_cnt_rx[63:0] +@421 +variables.ue_inst_cnt_tx[63:0] +@28 functions.phy_procedures_ue_rx functions.phy_procedures_ue_tx @24 -- GitLab