* Add PRINT_STATS for oaisim in addition to XFORMS
* Add RLC stats to openair2_proc * fix the autotests failure * some other cleanup git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7699 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -108,6 +108,7 @@ rlc_op_status_t rlc_stat_req (
|
||||
const protocol_ctxt_t* const ctxt_pP,
|
||||
const srb_flag_t srb_flagP,
|
||||
const rb_id_t rb_idP,
|
||||
unsigned int* stat_rlc_mode,
|
||||
unsigned int* stat_tx_pdcp_sdu,
|
||||
unsigned int* stat_tx_pdcp_bytes,
|
||||
unsigned int* stat_tx_pdcp_sdu_discarded,
|
||||
@@ -154,7 +155,7 @@ rlc_op_status_t rlc_stat_req (
|
||||
if (h_rc == HASH_TABLE_OK) {
|
||||
rlc_mode = rlc_union_p->mode;
|
||||
}
|
||||
|
||||
*stat_rlc_mode = rlc_mode;
|
||||
switch (rlc_mode) {
|
||||
case RLC_MODE_NONE:
|
||||
*stat_tx_pdcp_sdu = 0;
|
||||
|
||||
@@ -540,7 +540,8 @@ public_rlc(void rlc_data_conf(
|
||||
const protocol_ctxt_t* const ctxtP,
|
||||
const srb_flag_t srb_flagP,
|
||||
const rb_id_t rb_idP,
|
||||
unsigned int* stat_tx_pdcp_sdu,
|
||||
unsigned int* stat_rlc_mode,
|
||||
unsigned int* stat_tx_pdcp_sdu,
|
||||
unsigned int* stat_tx_pdcp_bytes,
|
||||
unsigned int* stat_tx_pdcp_sdu_discarded,
|
||||
unsigned int* stat_tx_pdcp_bytes_discarded,
|
||||
@@ -572,6 +573,7 @@ public_rlc(void rlc_data_conf(
|
||||
* \param[in] ctxtP Running context.
|
||||
* \param[in] srb_flagP Flag to indicate signalling radio bearer (1) or data radio bearer (0).
|
||||
* \param[in] rb_idP .
|
||||
* \param[out] stat_rlc_mode RLC mode
|
||||
* \param[out] stat_tx_pdcp_sdu Number of SDUs coming from upper layers.
|
||||
* \param[out] stat_tx_pdcp_bytes Number of bytes coming from upper layers.
|
||||
* \param[out] stat_tx_pdcp_sdu_discarded Number of discarded SDUs coming from upper layers.
|
||||
@@ -605,7 +607,8 @@ public_rlc(rlc_op_status_t rlc_stat_req (
|
||||
const protocol_ctxt_t* const ctxtP,
|
||||
const srb_flag_t srb_flagP,
|
||||
const rb_id_t rb_idP,
|
||||
unsigned int* const stat_tx_pdcp_sdu,
|
||||
unsigned int* const stat_rlc_mode,
|
||||
unsigned int* const stat_tx_pdcp_sdu,
|
||||
unsigned int* const stat_tx_pdcp_bytes,
|
||||
unsigned int* const stat_tx_pdcp_sdu_discarded,
|
||||
unsigned int* const stat_tx_pdcp_bytes_discarded,
|
||||
|
||||
+211
-14
@@ -28,12 +28,12 @@
|
||||
*******************************************************************************/
|
||||
/******************************************************************************
|
||||
\file openair2_proc
|
||||
# \brief print openair2 statistics
|
||||
# \brief print openair2 overall statistics
|
||||
# \author Navid Nikaein
|
||||
# \date 2013
|
||||
# \version 0.1
|
||||
# \date 2013-2015
|
||||
# \version 0.2
|
||||
# \email navid.nikaein@eurecom.fr
|
||||
# @ingroup _mac
|
||||
# @ingroup _openair2
|
||||
*/
|
||||
|
||||
#ifdef USER_MODE
|
||||
@@ -59,10 +59,12 @@
|
||||
#include "UTIL/LOG/log.h"
|
||||
|
||||
static mapping rrc_status_names[] = {
|
||||
{"RRC_IDLE", 0},
|
||||
{"RRC_SI_RECEIVED",1},
|
||||
{"RRC_CONNECTED",2},
|
||||
{"RRC_RECONFIGURED",3},
|
||||
{"RRC_INACTIVE", 0},
|
||||
{"RRC_IDLE", 1},
|
||||
{"RRC_SI_RECEIVED",2},
|
||||
{"RRC_CONNECTED",3},
|
||||
{"RRC_RECONFIGURED",4},
|
||||
{"RRC_HO_EXECUTION",5},
|
||||
{NULL, -1}
|
||||
};
|
||||
|
||||
@@ -72,7 +74,37 @@ int dump_eNB_l2_stats(char *buffer, int length)
|
||||
int eNB_id,UE_id,number_of_cards;
|
||||
int len= length;
|
||||
int CC_id=0;
|
||||
int i;
|
||||
int i,j;
|
||||
protocol_ctxt_t ctxt;
|
||||
rlc_op_status_t rlc_status;
|
||||
unsigned int stat_rlc_mode;
|
||||
unsigned int stat_tx_pdcp_sdu;
|
||||
unsigned int stat_tx_pdcp_bytes;
|
||||
unsigned int stat_tx_pdcp_sdu_discarded;
|
||||
unsigned int stat_tx_pdcp_bytes_discarded;
|
||||
unsigned int stat_tx_data_pdu;
|
||||
unsigned int stat_tx_data_bytes;
|
||||
unsigned int stat_tx_retransmit_pdu_by_status;
|
||||
unsigned int stat_tx_retransmit_bytes_by_status;
|
||||
unsigned int stat_tx_retransmit_pdu;
|
||||
unsigned int stat_tx_retransmit_bytes;
|
||||
unsigned int stat_tx_control_pdu;
|
||||
unsigned int stat_tx_control_bytes;
|
||||
unsigned int stat_rx_pdcp_sdu;
|
||||
unsigned int stat_rx_pdcp_bytes;
|
||||
unsigned int stat_rx_data_pdus_duplicate;
|
||||
unsigned int stat_rx_data_bytes_duplicate;
|
||||
unsigned int stat_rx_data_pdu;
|
||||
unsigned int stat_rx_data_bytes;
|
||||
unsigned int stat_rx_data_pdu_dropped;
|
||||
unsigned int stat_rx_data_bytes_dropped;
|
||||
unsigned int stat_rx_data_pdu_out_of_window;
|
||||
unsigned int stat_rx_data_bytes_out_of_window;
|
||||
unsigned int stat_rx_control_pdu;
|
||||
unsigned int stat_rx_control_bytes;
|
||||
unsigned int stat_timer_reordering_timed_out;
|
||||
unsigned int stat_timer_poll_retransmit_timed_out;
|
||||
unsigned int stat_timer_status_prohibit_timed_out;
|
||||
|
||||
#ifdef EXMIMO
|
||||
number_of_cards=1;
|
||||
@@ -141,7 +173,7 @@ int dump_eNB_l2_stats(char *buffer, int length)
|
||||
UE_list->eNB_UE_stats[CC_id][UE_id].ulsch_bitrate=((UE_list->eNB_UE_stats[CC_id][UE_id].ulsch_TBS*8)/((eNB->frame + 1)*10));
|
||||
UE_list->eNB_UE_stats[CC_id][UE_id].total_ulsch_bitrate= ((UE_list->eNB_UE_stats[CC_id][UE_id].total_pdu_bytes_rx*8)/((eNB->frame + 1)*10));
|
||||
|
||||
len += sprintf(&buffer[len],"UE %d %s (DLSCH), RNTI %x : CQI %d, MCS1 %d, MCS2 %d, RB (tx %d, retx %d, total %d), ncce (tx %d, retx %d) \n",
|
||||
len += sprintf(&buffer[len],"[MAC] UE %d (DLSCH),status %s, RNTI %x : CQI %d, MCS1 %d, MCS2 %d, RB (tx %d, retx %d, total %d), ncce (tx %d, retx %d) \n",
|
||||
UE_id,
|
||||
map_int_to_str(rrc_status_names, UE_list->eNB_UE_stats[CC_id][UE_id].rrc_status),
|
||||
UE_list->eNB_UE_stats[CC_id][UE_id].crnti,
|
||||
@@ -169,7 +201,7 @@ int dump_eNB_l2_stats(char *buffer, int length)
|
||||
UE_list->eNB_UE_stats[CC_id][UE_id].avg_overhead_bytes
|
||||
);
|
||||
|
||||
len += sprintf(&buffer[len],"UE %d %s (ULSCH), RNTI %x : rx power (normalized %d, target %d), MCS (pre %d, post %d), RB (rx %d, retx %d, total %d), Current TBS %d \n",
|
||||
len += sprintf(&buffer[len],"[MAC] UE %d (ULSCH), Status %d, RNTI %x : rx power (normalized %d, target %d), MCS (pre %d, post %d), RB (rx %d, retx %d, total %d), Current TBS %d \n",
|
||||
UE_id,
|
||||
map_int_to_str(rrc_status_names, UE_list->eNB_UE_stats[CC_id][UE_id].rrc_status),
|
||||
UE_list->eNB_UE_stats[CC_id][UE_id].crnti,
|
||||
@@ -192,17 +224,182 @@ int dump_eNB_l2_stats(char *buffer, int length)
|
||||
UE_list->eNB_UE_stats[CC_id][UE_id].total_num_pdus_rx,
|
||||
UE_list->eNB_UE_stats[CC_id][UE_id].num_errors_rx);
|
||||
|
||||
len+= sprintf(&buffer[len],"Received PHR PH = %d (db)\n", UE_list->UE_template[CC_id][UE_id].phr_info);
|
||||
len+= sprintf(&buffer[len],"Received BSR LCGID[0][1][2][3] = %u %u %u %u\n",
|
||||
len+= sprintf(&buffer[len],"[MAC] Received PHR PH = %d (db)\n", UE_list->UE_template[CC_id][UE_id].phr_info);
|
||||
len+= sprintf(&buffer[len],"[MAC] Received BSR LCGID[0][1][2][3] = %u %u %u %u\n",
|
||||
UE_list->UE_template[CC_id][UE_id].bsr_info[LCGID0],
|
||||
UE_list->UE_template[CC_id][UE_id].bsr_info[LCGID1],
|
||||
UE_list->UE_template[CC_id][UE_id].bsr_info[LCGID2],
|
||||
UE_list->UE_template[CC_id][UE_id].bsr_info[LCGID3]
|
||||
);
|
||||
}
|
||||
|
||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt,
|
||||
eNB_id,
|
||||
ENB_FLAG_YES,
|
||||
UE_list->eNB_UE_stats[UE_PCCID(eNB_id,UE_id)][UE_id].crnti,
|
||||
eNB->frame,
|
||||
eNB->subframe,
|
||||
eNB_id);
|
||||
|
||||
rlc_status = rlc_stat_req(&ctxt,
|
||||
SRB_FLAG_YES,
|
||||
DCCH,
|
||||
&stat_rlc_mode,
|
||||
&stat_tx_pdcp_sdu,
|
||||
&stat_tx_pdcp_bytes,
|
||||
&stat_tx_pdcp_sdu_discarded,
|
||||
&stat_tx_pdcp_bytes_discarded,
|
||||
&stat_tx_data_pdu,
|
||||
&stat_tx_data_bytes,
|
||||
&stat_tx_retransmit_pdu_by_status,
|
||||
&stat_tx_retransmit_bytes_by_status,
|
||||
&stat_tx_retransmit_pdu,
|
||||
&stat_tx_retransmit_bytes,
|
||||
&stat_tx_control_pdu,
|
||||
&stat_tx_control_bytes,
|
||||
&stat_rx_pdcp_sdu,
|
||||
&stat_rx_pdcp_bytes,
|
||||
&stat_rx_data_pdus_duplicate,
|
||||
&stat_rx_data_bytes_duplicate,
|
||||
&stat_rx_data_pdu,
|
||||
&stat_rx_data_bytes,
|
||||
&stat_rx_data_pdu_dropped,
|
||||
&stat_rx_data_bytes_dropped,
|
||||
&stat_rx_data_pdu_out_of_window,
|
||||
&stat_rx_data_bytes_out_of_window,
|
||||
&stat_rx_control_pdu,
|
||||
&stat_rx_control_bytes,
|
||||
&stat_timer_reordering_timed_out,
|
||||
&stat_timer_poll_retransmit_timed_out,
|
||||
&stat_timer_status_prohibit_timed_out);
|
||||
|
||||
if (rlc_status == RLC_OP_STATUS_OK) {
|
||||
len+=sprintf(&buffer[len],"[RLC] DCCH Mode %s, NB_SDU_TO_TX = %d (bytes %d)\tNB_SDU_TO_TX_DISC %d (bytes %d)\n",
|
||||
(stat_rlc_mode==RLC_MODE_AM)? "AM": (stat_rlc_mode==RLC_MODE_UM)?"UM":"NONE",
|
||||
stat_tx_pdcp_sdu,
|
||||
stat_tx_pdcp_bytes,
|
||||
stat_tx_pdcp_sdu_discarded,
|
||||
stat_tx_pdcp_bytes_discarded);
|
||||
|
||||
len+=sprintf(&buffer[len],"[RLC] DCCH Mode %s, NB_TX_DATA = %d (bytes %d)\tNB_TX_CONTROL %d (bytes %d)\tNB_TX_RETX %d (bytes %d)\tNB_TX_RETX_BY_STATUS = %d (bytes %d)\n",
|
||||
(stat_rlc_mode==RLC_MODE_AM)? "AM": (stat_rlc_mode==RLC_MODE_UM)?"UM":"NONE",
|
||||
stat_tx_data_pdu,
|
||||
stat_tx_data_bytes,
|
||||
stat_tx_control_pdu,
|
||||
stat_tx_control_bytes,
|
||||
stat_tx_retransmit_pdu,
|
||||
stat_tx_retransmit_bytes,
|
||||
stat_tx_retransmit_pdu_by_status,
|
||||
stat_tx_retransmit_bytes_by_status);
|
||||
|
||||
|
||||
len+=sprintf(&buffer[len],"[RLC] DCCH Mode %s, NB_RX_DATA = %d (bytes %d)\tNB_RX_CONTROL %d (bytes %d)\tNB_RX_DUPL %d (bytes %d)\tNB_RX_DROP = %d (bytes %d)\tNB_RX_OUT_OF_WINDOW = %d (bytes %d)\n",
|
||||
(stat_rlc_mode==RLC_MODE_AM)? "AM": (stat_rlc_mode==RLC_MODE_UM)?"UM":"NONE",
|
||||
stat_rx_data_pdu,
|
||||
stat_rx_data_bytes,
|
||||
stat_rx_control_pdu,
|
||||
stat_rx_control_bytes,
|
||||
stat_rx_data_pdus_duplicate,
|
||||
stat_rx_data_bytes_duplicate,
|
||||
stat_rx_data_pdu_dropped,
|
||||
stat_rx_data_bytes_dropped,
|
||||
stat_rx_data_pdu_out_of_window,
|
||||
stat_rx_data_bytes_out_of_window);
|
||||
|
||||
|
||||
len+=sprintf(&buffer[len],"[RLC] DCCH Mode %s, RX_REODERING_TIMEOUT = %d\tRX_POLL_RET_TIMEOUT %d\tRX_PROHIBIT_TIME_OUT %d\n",
|
||||
(stat_rlc_mode==RLC_MODE_AM)? "AM": (stat_rlc_mode==RLC_MODE_UM)?"UM":"NONE",
|
||||
stat_timer_reordering_timed_out,
|
||||
stat_timer_poll_retransmit_timed_out,
|
||||
stat_timer_status_prohibit_timed_out);
|
||||
|
||||
len+=sprintf(&buffer[len],"[RLC] DCCH Mode %s, NB_SDU_TO_RX = %d (bytes %d)\n",
|
||||
(stat_rlc_mode==RLC_MODE_AM)? "AM": (stat_rlc_mode==RLC_MODE_UM)?"UM":"NONE",
|
||||
stat_rx_pdcp_sdu,
|
||||
stat_rx_pdcp_bytes);
|
||||
}
|
||||
|
||||
rlc_status = rlc_stat_req(&ctxt,
|
||||
SRB_FLAG_NO,
|
||||
DTCH-2, // DRB_IDENTITY
|
||||
&stat_rlc_mode,
|
||||
&stat_tx_pdcp_sdu,
|
||||
&stat_tx_pdcp_bytes,
|
||||
&stat_tx_pdcp_sdu_discarded,
|
||||
&stat_tx_pdcp_bytes_discarded,
|
||||
&stat_tx_data_pdu,
|
||||
&stat_tx_data_bytes,
|
||||
&stat_tx_retransmit_pdu_by_status,
|
||||
&stat_tx_retransmit_bytes_by_status,
|
||||
&stat_tx_retransmit_pdu,
|
||||
&stat_tx_retransmit_bytes,
|
||||
&stat_tx_control_pdu,
|
||||
&stat_tx_control_bytes,
|
||||
&stat_rx_pdcp_sdu,
|
||||
&stat_rx_pdcp_bytes,
|
||||
&stat_rx_data_pdus_duplicate,
|
||||
&stat_rx_data_bytes_duplicate,
|
||||
&stat_rx_data_pdu,
|
||||
&stat_rx_data_bytes,
|
||||
&stat_rx_data_pdu_dropped,
|
||||
&stat_rx_data_bytes_dropped,
|
||||
&stat_rx_data_pdu_out_of_window,
|
||||
&stat_rx_data_bytes_out_of_window,
|
||||
&stat_rx_control_pdu,
|
||||
&stat_rx_control_bytes,
|
||||
&stat_timer_reordering_timed_out,
|
||||
&stat_timer_poll_retransmit_timed_out,
|
||||
&stat_timer_status_prohibit_timed_out);
|
||||
|
||||
if (rlc_status == RLC_OP_STATUS_OK) {
|
||||
len+=sprintf(&buffer[len],"[RLC] DTCH Mode %s, NB_SDU_TO_TX = %d (bytes %d)\tNB_SDU_TO_TX_DISC %d (bytes %d)\n",
|
||||
(stat_rlc_mode==RLC_MODE_AM)? "AM": (stat_rlc_mode==RLC_MODE_UM)?"UM":"NONE",
|
||||
stat_tx_pdcp_sdu,
|
||||
stat_tx_pdcp_bytes,
|
||||
stat_tx_pdcp_sdu_discarded,
|
||||
stat_tx_pdcp_bytes_discarded);
|
||||
|
||||
len+=sprintf(&buffer[len],"[RLC] DTCH Mode %s, NB_TX_DATA = %d (bytes %d)\tNB_TX_CONTROL %d (bytes %d)\tNB_TX_RETX %d (bytes %d)\tNB_TX_RETX_BY_STATUS = %d (bytes %d)\n",
|
||||
(stat_rlc_mode==RLC_MODE_AM)? "AM": (stat_rlc_mode==RLC_MODE_UM)?"UM":"NONE",
|
||||
stat_tx_data_pdu,
|
||||
stat_tx_data_bytes,
|
||||
stat_tx_control_pdu,
|
||||
stat_tx_control_bytes,
|
||||
stat_tx_retransmit_pdu,
|
||||
stat_tx_retransmit_bytes,
|
||||
stat_tx_retransmit_pdu_by_status,
|
||||
stat_tx_retransmit_bytes_by_status);
|
||||
|
||||
|
||||
len+=sprintf(&buffer[len],"[RLC] DTCH Mode %s, NB_RX_DATA = %d (bytes %d)\tNB_RX_CONTROL %d (bytes %d)\tNB_RX_DUPL %d (bytes %d)\tNB_RX_DROP = %d (bytes %d)\tNB_RX_OUT_OF_WINDOW = %d (bytes %d)\n",
|
||||
(stat_rlc_mode==RLC_MODE_AM)? "AM": (stat_rlc_mode==RLC_MODE_UM)?"UM":"NONE",
|
||||
stat_rx_data_pdu,
|
||||
stat_rx_data_bytes,
|
||||
stat_rx_control_pdu,
|
||||
stat_rx_control_bytes,
|
||||
stat_rx_data_pdus_duplicate,
|
||||
stat_rx_data_bytes_duplicate,
|
||||
stat_rx_data_pdu_dropped,
|
||||
stat_rx_data_bytes_dropped,
|
||||
stat_rx_data_pdu_out_of_window,
|
||||
stat_rx_data_bytes_out_of_window);
|
||||
|
||||
|
||||
len+=sprintf(&buffer[len],"[RLC] DTCH Mode %s, RX_REODERING_TIMEOUT = %d\tRX_POLL_RET_TIMEOUT %d\tRX_PROHIBIT_TIME_OUT %d\n",
|
||||
(stat_rlc_mode==RLC_MODE_AM)? "AM": (stat_rlc_mode==RLC_MODE_UM)?"UM":"NONE",
|
||||
stat_timer_reordering_timed_out,
|
||||
stat_timer_poll_retransmit_timed_out,
|
||||
stat_timer_status_prohibit_timed_out);
|
||||
|
||||
len+=sprintf(&buffer[len],"[RLC] DTCH Mode %s, NB_SDU_TO_RX = %d (bytes %d)\n",
|
||||
(stat_rlc_mode==RLC_MODE_AM)? "AM": (stat_rlc_mode==RLC_MODE_UM)?"UM":"NONE",
|
||||
stat_rx_pdcp_sdu,
|
||||
stat_rx_pdcp_bytes);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return len + 1 /* SR: for trailing \0 */;
|
||||
}
|
||||
|
||||
|
||||
@@ -134,6 +134,7 @@ place_static_node (node_struct * node)
|
||||
LOG_I (OMG,
|
||||
"[STATIC] Initial position of node ID: %d type(%d: %s): (X = %.2f, Y = %.2f) speed = 0.0\n",
|
||||
node->id, node->type, (node->type==eNB)?"eNB":(node->type==UE)?"UE":"Relay", node->x_pos, node->y_pos);
|
||||
|
||||
node_vector_end[node->type] =
|
||||
(node_list *) add_entry (node, node_vector_end[node->type]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user