diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c index 73cb0824cab89182362cb506d44713566f92bd4c..4422788c81258b31c327c3ce64520497d17e3847 100755 --- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c +++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c @@ -52,7 +52,6 @@ //#define TRACE_RLC_AM_TX //#define TRACE_RLC_AM_RX //#define TRACE_RLC_AM_BO -#define TRACE_RLC_AM_PDU 1 extern rlc_am_control_pdu_info_t g_rlc_am_control_pdu_info; @@ -942,10 +941,12 @@ rlc_am_data_req (void *rlc_pP, frame_t frameP, mem_block_t * sdu_pP) uint16_t data_offset; uint16_t data_size; uint8_t conf; -#if defined(ENABLE_ITTI) +#if defined(TRACE_RLC_AM_PDU) char message_string[7000]; size_t message_string_size = 0; +#if defined(ENABLE_ITTI) MessageDef *msg_p; +#endif int octet_index, index; #endif @@ -962,7 +963,7 @@ rlc_am_data_req (void *rlc_pP, frame_t frameP, mem_block_t * sdu_pP) data_size = ((struct rlc_am_data_req *) (sdu_pP->data))->data_size; conf = ((struct rlc_am_data_req *) (sdu_pP->data))->conf; -# if defined(ENABLE_ITTI) +#if defined(TRACE_RLC_AM_PDU) message_string_size += sprintf(&message_string[message_string_size], "Bearer : %u\n", l_rlc_p->rb_id); message_string_size += sprintf(&message_string[message_string_size], "SDU size : %u\n", data_size); message_string_size += sprintf(&message_string[message_string_size], "MUI : %u\n", mui); @@ -995,6 +996,7 @@ rlc_am_data_req (void *rlc_pP, frame_t frameP, mem_block_t * sdu_pP) } message_string_size += sprintf(&message_string[message_string_size], " |\n"); +# if defined(ENABLE_ITTI) msg_p = itti_alloc_new_message_sized (l_rlc_p->is_enb > 0 ? TASK_RLC_ENB:TASK_RLC_UE , RLC_AM_SDU_REQ, message_string_size + sizeof (IttiMsgText)); msg_p->ittiMsg.rlc_am_sdu_req.size = message_string_size; memcpy(&msg_p->ittiMsg.rlc_am_sdu_req.text, message_string, message_string_size); @@ -1004,7 +1006,10 @@ rlc_am_data_req (void *rlc_pP, frame_t frameP, mem_block_t * sdu_pP) } else { itti_send_msg_to_task(TASK_UNKNOWN, l_rlc_p->ue_module_id + NB_eNB_INST, msg_p); } +# else + LOG_T(RLC, "%s", message_string); # endif +#endif l_rlc_p->stat_tx_pdcp_sdu += 1; l_rlc_p->stat_tx_pdcp_bytes += data_size; diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c index 25f422bdf99f6096ccac79e2cb1c1b5e2757dce6..fcb12a38bb9ca40ef8ec7decc53eeb1ca853d439 100755 --- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c +++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c @@ -30,6 +30,9 @@ #define RLC_AM_REASSEMBLY_C #include "platform_types.h" //----------------------------------------------------------------------------- +#if defined(ENABLE_ITTI) +# include "intertask_interface.h" +#endif #include "assertions.h" #include "rlc.h" #include "rlc_am.h" @@ -107,6 +110,13 @@ void rlc_am_reassembly (uint8_t * src_pP, int32_t lengthP, rlc_am_entity_t *rlc_ void rlc_am_send_sdu (rlc_am_entity_t *rlc_pP,frame_t frameP, eNB_flag_t eNB_flagP) //----------------------------------------------------------------------------- { +# if defined(TRACE_RLC_UM_PDU) + char message_string[7000]; + size_t message_string_size = 0; + MessageDef *msg_p; + int octet_index, index; +#endif + if ((rlc_pP->output_sdu_in_construction)) { LOG_D(RLC, "\n\n\n[FRAME %5u][%s][RLC_AM][MOD %u/%u][RB %u][SEND_SDU] %d bytes sdu %p\n", frameP, @@ -125,6 +135,55 @@ void rlc_am_send_sdu (rlc_am_entity_t *rlc_pP,frame_t frameP, eNB_flag_t eNB_fla rlc_pP->output_sdu_size_to_write, rlc_pP->output_sdu_in_construction); #else +# if defined(TRACE_RLC_AM_PDU) + message_string_size += sprintf(&message_string[message_string_size], "Bearer : %u\n", rlc_pP->rb_id); + message_string_size += sprintf(&message_string[message_string_size], "SDU size : %u\n", rlc_pP->output_sdu_size_to_write); + + message_string_size += sprintf(&message_string[message_string_size], "\nPayload : \n"); + message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n"); + message_string_size += sprintf(&message_string[message_string_size], " | 0 1 2 3 4 5 6 7 8 9 a b c d e f |\n"); + message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n"); + for (octet_index = 0; octet_index < rlc_pP->output_sdu_size_to_write; octet_index++) { + if ((octet_index % 16) == 0){ + if (octet_index != 0) { + message_string_size += sprintf(&message_string[message_string_size], " |\n"); + } + message_string_size += sprintf(&message_string[message_string_size], " %04d |", octet_index); + } + /* + * Print every single octet in hexadecimal form + */ + message_string_size += sprintf(&message_string[message_string_size], + " %02x", + rlc_pP->output_sdu_in_construction->data[octet_index]); + /* + * Align newline and pipes according to the octets in groups of 2 + */ + } + /* + * Append enough spaces and put final pipe + */ + for (index = octet_index; index < 16; ++index) { + message_string_size += sprintf(&message_string[message_string_size], " "); + } + message_string_size += sprintf(&message_string[message_string_size], " |\n"); + +# if defined(ENABLE_ITTI) + msg_p = itti_alloc_new_message_sized (rlc_pP->is_enb > 0 ? TASK_RLC_ENB:TASK_RLC_UE , + RLC_AM_SDU_IND, + message_string_size + sizeof (IttiMsgText)); + msg_p->ittiMsg.rlc_am_sdu_ind.size = message_string_size; + memcpy(&msg_p->ittiMsg.rlc_am_sdu_ind.text, message_string, message_string_size); + + if (rlc_pP->is_enb) { + itti_send_msg_to_task(TASK_UNKNOWN, rlc_pP->enb_module_id, msg_p); + } else { + itti_send_msg_to_task(TASK_UNKNOWN, rlc_pP->ue_module_id + NB_eNB_INST, msg_p); + } +# else + LOG_T(RLC, "%s", message_string); +# endif +# endif rlc_data_ind ( rlc_pP->enb_module_id, rlc_pP->ue_module_id,