Commit 20a333d8 authored by Lionel Gauthier's avatar Lionel Gauthier

VCD measurements, removed some interresting logs for better RT behaviour

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@6135 818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent 8928b29c
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#include "list.h" #include "list.h"
#include "MAC_INTERFACE/extern.h" #include "MAC_INTERFACE/extern.h"
#include "UTIL/LOG/log.h" #include "UTIL/LOG/log.h"
#include "UTIL/LOG/vcd_signal_dumper.h"
//#define TRACE_RLC_UM_DAR 1 //#define TRACE_RLC_UM_DAR 1
//#define TRACE_RLC_UM_RX 1 //#define TRACE_RLC_UM_RX 1
...@@ -178,6 +179,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e ...@@ -178,6 +179,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e
int i = 0; int i = 0;
int reassembly_start_index = 0; int reassembly_start_index = 0;
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_UM_TRY_REASSEMBLY,VCD_FUNCTION_IN);
if (end_snP < 0) end_snP = end_snP + rlc_pP->rx_sn_modulo; if (end_snP < 0) end_snP = end_snP + rlc_pP->rx_sn_modulo;
if (start_snP < 0) start_snP = start_snP + rlc_pP->rx_sn_modulo; if (start_snP < 0) start_snP = start_snP + rlc_pP->rx_sn_modulo;
...@@ -196,6 +198,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e ...@@ -196,6 +198,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e
#endif #endif
// nothing to be reassemblied // nothing to be reassemblied
if (start_snP == end_snP) { if (start_snP == end_snP) {
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_UM_TRY_REASSEMBLY,VCD_FUNCTION_OUT);
return; return;
} }
continue_reassembly = 1; continue_reassembly = 1;
...@@ -208,7 +211,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e ...@@ -208,7 +211,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e
if ((pdu_mem_p = rlc_pP->dar_buffer[sn])) { if ((pdu_mem_p = rlc_pP->dar_buffer[sn])) {
if ((rlc_pP->last_reassemblied_sn+1)%rlc_pP->rx_sn_modulo != sn) { if ((rlc_pP->last_reassemblied_sn+1)%rlc_pP->rx_sn_modulo != sn) {
//#if defined (TRACE_RLC_UM_DAR) #if defined (TRACE_RLC_UM_DAR)
LOG_W(RLC, "[FRAME %05u][%s][RLC_UM][MOD %u/%u][%s %u] Line %u FINDING a HOLE in RLC UM SN: CLEARING OUTPUT SDU BECAUSE NEW SN (%03d) TO REASSEMBLY NOT CONTIGUOUS WITH LAST REASSEMBLIED SN (%03d)\n", LOG_W(RLC, "[FRAME %05u][%s][RLC_UM][MOD %u/%u][%s %u] Line %u FINDING a HOLE in RLC UM SN: CLEARING OUTPUT SDU BECAUSE NEW SN (%03d) TO REASSEMBLY NOT CONTIGUOUS WITH LAST REASSEMBLIED SN (%03d)\n",
frameP, frameP,
(rlc_pP->is_enb) ? "eNB" : "UE", (rlc_pP->is_enb) ? "eNB" : "UE",
...@@ -219,7 +222,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e ...@@ -219,7 +222,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e
__LINE__, __LINE__,
sn, sn,
rlc_pP->last_reassemblied_sn); rlc_pP->last_reassemblied_sn);
//#endif #endif
rlc_um_clear_rx_sdu(rlc_pP); rlc_um_clear_rx_sdu(rlc_pP);
} }
rlc_pP->last_reassemblied_sn = sn; rlc_pP->last_reassemblied_sn = sn;
...@@ -347,7 +350,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e ...@@ -347,7 +350,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e
// one whole segment of SDU in PDU // one whole segment of SDU in PDU
rlc_um_reassembly (data_p, size, rlc_pP,frameP); rlc_um_reassembly (data_p, size, rlc_pP,frameP);
} else { } else {
//#if defined (TRACE_RLC_UM_DAR) #if defined (TRACE_RLC_UM_DAR)
LOG_W(RLC, "[FRAME %05u][%s][RLC_UM][MOD %u/%u][%s %u] Line %u TRY REASSEMBLY PDU NO E_LI FI=00 (11) MISSING SN DETECTED\n", LOG_W(RLC, "[FRAME %05u][%s][RLC_UM][MOD %u/%u][%s %u] Line %u TRY REASSEMBLY PDU NO E_LI FI=00 (11) MISSING SN DETECTED\n",
frameP, frameP,
(rlc_pP->is_enb) ? "eNB" : "UE", (rlc_pP->is_enb) ? "eNB" : "UE",
...@@ -356,7 +359,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e ...@@ -356,7 +359,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e
(rlc_pP->is_data_plane) ? "DRB" : "SRB", (rlc_pP->is_data_plane) ? "DRB" : "SRB",
rlc_pP->rb_id, rlc_pP->rb_id,
__LINE__); __LINE__);
//#endif #endif
//LOG_D(RLC, "[MSC_NBOX][FRAME %05u][%s][RLC_UM][MOD %u/%u][RB %u][Missing SN detected][RLC_UM][MOD %u/%u][RB %u]\n", //LOG_D(RLC, "[MSC_NBOX][FRAME %05u][%s][RLC_UM][MOD %u/%u][RB %u][Missing SN detected][RLC_UM][MOD %u/%u][RB %u]\n",
// frameP, rlc_pP->module_id,rlc_pP->rb_id, rlc_pP->module_id,rlc_pP->rb_id); // frameP, rlc_pP->module_id,rlc_pP->rb_id, rlc_pP->module_id,rlc_pP->rb_id);
rlc_pP->reassembly_missing_sn_detected = 1; // not necessary but for readability of the code rlc_pP->reassembly_missing_sn_detected = 1; // not necessary but for readability of the code
...@@ -501,7 +504,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e ...@@ -501,7 +504,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e
LOG_D(RLC, " remaining size %d\n",size); LOG_D(RLC, " remaining size %d\n",size);
#endif #endif
if (rlc_pP->reassembly_missing_sn_detected) { if (rlc_pP->reassembly_missing_sn_detected) {
//#if defined (TRACE_RLC_UM_DAR) #if defined (TRACE_RLC_UM_DAR)
LOG_D(RLC, "[FRAME %05u][%s][RLC_UM][MOD %u/%u][%s %u] Line %u DISCARD FIRST LI %d", LOG_D(RLC, "[FRAME %05u][%s][RLC_UM][MOD %u/%u][%s %u] Line %u DISCARD FIRST LI %d",
frameP, frameP,
(rlc_pP->is_enb) ? "eNB" : "UE", (rlc_pP->is_enb) ? "eNB" : "UE",
...@@ -511,7 +514,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e ...@@ -511,7 +514,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e
rlc_pP->rb_id, rlc_pP->rb_id,
__LINE__, __LINE__,
li_array[0]); li_array[0]);
//#endif #endif
reassembly_start_index = 1; reassembly_start_index = 1;
data_p = &data_p[li_array[0]]; data_p = &data_p[li_array[0]];
//rlc_pP->stat_rx_data_pdu_dropped += 1; //rlc_pP->stat_rx_data_pdu_dropped += 1;
...@@ -542,7 +545,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e ...@@ -542,7 +545,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e
rlc_pP->reassembly_missing_sn_detected = 0; rlc_pP->reassembly_missing_sn_detected = 0;
break; break;
default: default:
//#if defined (TRACE_RLC_UM_DAR) #if defined (TRACE_RLC_UM_DAR)
LOG_W(RLC, "[FRAME %05u][%s][RLC_UM][MOD %u/%u][%s %u] Line %u Missing SN detected\n", LOG_W(RLC, "[FRAME %05u][%s][RLC_UM][MOD %u/%u][%s %u] Line %u Missing SN detected\n",
frameP, frameP,
(rlc_pP->is_enb) ? "eNB" : "UE", (rlc_pP->is_enb) ? "eNB" : "UE",
...@@ -551,7 +554,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e ...@@ -551,7 +554,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e
(rlc_pP->is_data_plane) ? "DRB" : "SRB", (rlc_pP->is_data_plane) ? "DRB" : "SRB",
rlc_pP->rb_id, rlc_pP->rb_id,
__LINE__); __LINE__);
//#endif #endif
rlc_pP->stat_rx_data_pdu_dropped += 1; rlc_pP->stat_rx_data_pdu_dropped += 1;
rlc_pP->stat_rx_data_bytes_dropped += tb_ind_p->size; rlc_pP->stat_rx_data_bytes_dropped += tb_ind_p->size;
...@@ -584,7 +587,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e ...@@ -584,7 +587,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e
rlc_pP->dar_buffer[sn] = NULL; rlc_pP->dar_buffer[sn] = NULL;
} else { } else {
rlc_pP->last_reassemblied_missing_sn = sn; rlc_pP->last_reassemblied_missing_sn = sn;
//#if defined (TRACE_RLC_UM_DAR) #if defined (TRACE_RLC_UM_DAR)
LOG_D(RLC, "[FRAME %05u][%s][RLC_UM][MOD %u/%u][%s %u] Line %u Missing SN %04d detected, clearing RX SDU\n", LOG_D(RLC, "[FRAME %05u][%s][RLC_UM][MOD %u/%u][%s %u] Line %u Missing SN %04d detected, clearing RX SDU\n",
frameP, frameP,
(rlc_pP->is_enb) ? "eNB" : "UE", (rlc_pP->is_enb) ? "eNB" : "UE",
...@@ -594,7 +597,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e ...@@ -594,7 +597,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e
rlc_pP->rb_id, rlc_pP->rb_id,
__LINE__, __LINE__,
sn); sn);
//#endif #endif
rlc_pP->reassembly_missing_sn_detected = 1; rlc_pP->reassembly_missing_sn_detected = 1;
rlc_um_clear_rx_sdu(rlc_pP); rlc_um_clear_rx_sdu(rlc_pP);
#if defined(RLC_STOP_ON_LOST_PDU) #if defined(RLC_STOP_ON_LOST_PDU)
...@@ -627,6 +630,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e ...@@ -627,6 +630,7 @@ void rlc_um_try_reassembly(rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t e
rlc_pP->vr_uh); rlc_pP->vr_uh);
#endif #endif
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_UM_TRY_REASSEMBLY,VCD_FUNCTION_OUT);
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void rlc_um_stop_and_reset_timer_reordering(rlc_um_entity_t *rlc_pP,frame_t frameP) void rlc_um_stop_and_reset_timer_reordering(rlc_um_entity_t *rlc_pP,frame_t frameP)
...@@ -680,6 +684,9 @@ void rlc_um_check_timer_dar_time_out(rlc_um_entity_t *rlc_pP, frame_t frameP, eN ...@@ -680,6 +684,9 @@ void rlc_um_check_timer_dar_time_out(rlc_um_entity_t *rlc_pP, frame_t frameP, eN
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
signed int in_window; signed int in_window;
rlc_usn_t old_vr_ur; rlc_usn_t old_vr_ur;
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_UM_CHECK_TIMER_DAR_TIME_OUT,VCD_FUNCTION_IN);
if ((rlc_pP->t_reordering.running)) { if ((rlc_pP->t_reordering.running)) {
if ( if (
// CASE 1: start time out // CASE 1: start time out
...@@ -763,9 +770,10 @@ void rlc_um_check_timer_dar_time_out(rlc_um_entity_t *rlc_pP, frame_t frameP, eN ...@@ -763,9 +770,10 @@ void rlc_um_check_timer_dar_time_out(rlc_um_entity_t *rlc_pP, frame_t frameP, eN
while (rlc_um_get_pdu_from_dar_buffer(rlc_pP, rlc_pP->vr_ur)) { while (rlc_um_get_pdu_from_dar_buffer(rlc_pP, rlc_pP->vr_ur)) {
rlc_pP->vr_ur = (rlc_pP->vr_ur+1)%rlc_pP->rx_sn_modulo; rlc_pP->vr_ur = (rlc_pP->vr_ur+1)%rlc_pP->rx_sn_modulo;
} }
#if defined (TRACE_RLC_UM_DAR)
LOG_D(RLC, " %d", rlc_pP->vr_ur); LOG_D(RLC, " %d", rlc_pP->vr_ur);
LOG_D(RLC, "\n"); LOG_D(RLC, "\n");
#endif
rlc_um_try_reassembly(rlc_pP,frameP,eNB_flagP,old_vr_ur, rlc_pP->vr_ur); rlc_um_try_reassembly(rlc_pP,frameP,eNB_flagP,old_vr_ur, rlc_pP->vr_ur);
in_window = rlc_um_in_window(rlc_pP, frameP, rlc_pP->vr_ur, rlc_pP->vr_uh, rlc_pP->vr_uh); in_window = rlc_um_in_window(rlc_pP, frameP, rlc_pP->vr_ur, rlc_pP->vr_uh, rlc_pP->vr_uh);
...@@ -797,6 +805,7 @@ void rlc_um_check_timer_dar_time_out(rlc_um_entity_t *rlc_pP, frame_t frameP, eN ...@@ -797,6 +805,7 @@ void rlc_um_check_timer_dar_time_out(rlc_um_entity_t *rlc_pP, frame_t frameP, eN
} }
} }
} }
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_UM_CHECK_TIMER_DAR_TIME_OUT,VCD_FUNCTION_OUT);
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
inline mem_block_t * inline mem_block_t *
...@@ -1038,6 +1047,7 @@ rlc_um_receive_process_dar (rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t ...@@ -1038,6 +1047,7 @@ rlc_um_receive_process_dar (rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t
rlc_sn_t sn = -1; rlc_sn_t sn = -1;
signed int in_window; signed int in_window;
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_UM_RECEIVE_PROCESS_DAR, VCD_FUNCTION_IN);
if (rlc_pP->rx_sn_length == 10) { if (rlc_pP->rx_sn_length == 10) {
sn = ((pdu_pP->b1 & 0x00000003) << 8) + pdu_pP->b2; sn = ((pdu_pP->b1 & 0x00000003) << 8) + pdu_pP->b2;
} else if (rlc_pP->rx_sn_length == 5) { } else if (rlc_pP->rx_sn_length == 5) {
...@@ -1072,6 +1082,7 @@ rlc_um_receive_process_dar (rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t ...@@ -1072,6 +1082,7 @@ rlc_um_receive_process_dar (rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t
rlc_pP->stat_rx_data_bytes_out_of_window += tb_sizeP; rlc_pP->stat_rx_data_bytes_out_of_window += tb_sizeP;
free_mem_block(pdu_mem_pP); free_mem_block(pdu_mem_pP);
pdu_mem_pP = NULL; pdu_mem_pP = NULL;
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_UM_RECEIVE_PROCESS_DAR, VCD_FUNCTION_OUT);
return; return;
} }
if ((rlc_um_get_pdu_from_dar_buffer(rlc_pP, sn))) { if ((rlc_um_get_pdu_from_dar_buffer(rlc_pP, sn))) {
...@@ -1092,6 +1103,7 @@ rlc_um_receive_process_dar (rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t ...@@ -1092,6 +1103,7 @@ rlc_um_receive_process_dar (rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t
rlc_pP->stat_rx_data_bytes_duplicate += tb_sizeP; rlc_pP->stat_rx_data_bytes_duplicate += tb_sizeP;
free_mem_block(pdu_mem_pP); free_mem_block(pdu_mem_pP);
pdu_mem_pP = NULL; pdu_mem_pP = NULL;
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_UM_RECEIVE_PROCESS_DAR, VCD_FUNCTION_OUT);
return; return;
} }
// 2 lines to avoid memory leaks // 2 lines to avoid memory leaks
...@@ -1240,4 +1252,5 @@ rlc_um_receive_process_dar (rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t ...@@ -1240,4 +1252,5 @@ rlc_um_receive_process_dar (rlc_um_entity_t *rlc_pP, frame_t frameP, eNB_flag_t
#endif #endif
} }
} }
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_UM_RECEIVE_PROCESS_DAR, VCD_FUNCTION_OUT);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment