Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lizhongxiao
OpenXG-RAN
Commits
eacf5525
Commit
eacf5525
authored
Mar 14, 2016
by
Navid Nikaein
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add ho stats
parent
080405f6
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
73 additions
and
13 deletions
+73
-13
openair1/PHY/TOOLS/time_meas.h
openair1/PHY/TOOLS/time_meas.h
+7
-3
openair2/LAYER2/MAC/main.c
openair2/LAYER2/MAC/main.c
+4
-0
openair2/RRC/LITE/defs.h
openair2/RRC/LITE/defs.h
+11
-1
openair2/RRC/LITE/rrc_UE.c
openair2/RRC/LITE/rrc_UE.c
+15
-5
openair2/RRC/LITE/rrc_common.c
openair2/RRC/LITE/rrc_common.c
+28
-2
openair2/RRC/LITE/rrc_eNB.c
openair2/RRC/LITE/rrc_eNB.c
+7
-1
targets/SIMU/EXAMPLES/OSD/WEBXML/template_42.xml
targets/SIMU/EXAMPLES/OSD/WEBXML/template_42.xml
+1
-1
No files found.
openair1/PHY/TOOLS/time_meas.h
View file @
eacf5525
...
...
@@ -48,6 +48,7 @@ typedef struct {
long
long
p_time
;
/*!< \brief absolute process duration */
long
long
diff_square
;
/*!< \brief process duration square */
long
long
max
;
long
long
min
;
int
trials
;
}
time_stats_t
;
#elif defined(__arm__)
...
...
@@ -58,6 +59,7 @@ typedef struct {
uint32_t
p_time
;
/*!< \brief absolute process duration */
uint32_t
diff_square
;
/*!< \brief process duration square */
uint32_t
max
;
uint32_t
min
;
int
trials
;
}
time_stats_t
;
...
...
@@ -124,9 +126,11 @@ static inline void stop_meas(time_stats_t *ts)
if
((
out
-
ts
->
in
)
>
ts
->
max
)
ts
->
max
=
out
-
ts
->
in
;
if
((
out
-
ts
->
in
)
<
ts
->
min
)
ts
->
min
=
out
-
ts
->
in
;
}
}
}
static
inline
void
reset_meas
(
time_stats_t
*
ts
)
{
...
...
@@ -136,7 +140,7 @@ static inline void reset_meas(time_stats_t *ts) {
ts
->
p_time
=
0
;
ts
->
diff_square
=
0
;
ts
->
max
=
0
;
ts
->
min
=
0xFFFFFFFF
;
}
static
inline
void
copy_meas
(
time_stats_t
*
dst_ts
,
time_stats_t
*
src_ts
)
...
...
openair2/LAYER2/MAC/main.c
View file @
eacf5525
...
...
@@ -433,7 +433,11 @@ void mac_top_cleanup(void)
free
(
eNB_mac_inst
);
}
rrc_top_cleanup
();
free
(
Mac_rlc_xface
);
}
int
l2_init
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
int
eMBMS_active
,
char
*
uecap_xer
,
uint8_t
cba_group_active
,
uint8_t
HO_active
)
...
...
openair2/RRC/LITE/defs.h
View file @
eacf5525
...
...
@@ -55,6 +55,8 @@
#include "COMMON/mac_rrc_primitives.h"
#include "LAYER2/MAC/defs.h"
//#include "PHY/TOOLS/time_meas.h"
#include "UTIL/LISTS/list.h"
//#include "COMMON/openair_defs.h"
#ifndef USER_MODE
#include <rtai.h>
...
...
@@ -158,7 +160,7 @@ typedef enum UE_STATE_e {
RRC_SI_RECEIVED
,
RRC_CONNECTED
,
RRC_RECONFIGURED
,
RRC_HO_EXECUTION
RRC_HO_EXECUTION
// oai specific intermediate state == idle state
}
UE_STATE_t
;
typedef
enum
HO_STATE_e
{
...
...
@@ -363,6 +365,7 @@ typedef struct eNB_RRC_UE_s {
transport_layer_addr_t
enb_gtp_addrs
[
S1AP_MAX_E_RAB
];
rb_id_t
enb_gtp_ebi
[
S1AP_MAX_E_RAB
];
#endif
}
eNB_RRC_UE_t
;
typedef
uid_t
ue_uid_t
;
...
...
@@ -527,6 +530,13 @@ typedef struct UE_RRC_INST_s {
/* Used integrity/ciphering algorithms */
e_SecurityAlgorithmConfig__cipheringAlgorithm
ciphering_algorithm
;
e_SecurityAlgorithmConfig__integrityProtAlgorithm
integrity_algorithm
;
// X2 HO stats and measurments
uint8_t
rrc_ue_do_meas
;
// flag to start the meas only once
time_stats_t
rrc_ue_x2_src_enb
;
// form connected to idle : include x2 delay
struct
list
rrc_ue_x2_src_enb_list
;
time_stats_t
rrc_ue_x2_target_enb
;
// from idle to connected
struct
list
rrc_ue_x2_target_enb_list
;
}
UE_RRC_INST
;
#include "proto.h"
...
...
openair2/RRC/LITE/rrc_UE.c
View file @
eacf5525
...
...
@@ -1967,14 +1967,19 @@ rrc_ue_decode_dcch(
eNB_indexP
);
if
(
target_eNB_index
!=
0xFF
)
{
init_meas_timers
(
ctxt_pP
);
// Initialize handover measurement timers
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_do_meas
=
0
;
stop_meas
(
&
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_src_enb
);
double
t_x2_src_enb
=
(
double
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_src_enb
.
p_time
/
get_cpu_freq_GHz
()
/
1000
.
0
;
push_front
(
&
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_src_enb_list
,
t_x2_src_enb
);
start_meas
(
&
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_target_enb
);
init_meas_timers
(
ctxt_pP
);
// Initialize handover measurement timers
rrc_ue_generate_RRCConnectionReconfigurationComplete
(
ctxt_pP
,
target_eNB_index
,
dl_dcch_msg
->
message
.
choice
.
c1
.
choice
.
rrcConnectionReconfiguration
.
rrc_TransactionIdentifier
);
UE_rrc_inst
[
ctxt_pP
->
module_id
].
Info
[
eNB_indexP
].
State
=
RRC_HO_EXECUTION
;
if
(
eNB_indexP
!=
target_eNB_index
){
UE_rrc_inst
[
ctxt_pP
->
module_id
].
Info
[
target_eNB_index
].
State
=
RRC_RECONFIGURED
;
UE_rrc_inst
[
ctxt_pP
->
module_id
].
Info
[
target_eNB_index
].
State
=
RRC_RECONFIGURED
;
}
LOG_I
(
RRC
,
"[UE %d] State = RRC_RECONFIGURED during HO (eNB %d)
\n
"
,
ctxt_pP
->
module_id
,
target_eNB_index
);
...
...
@@ -3686,9 +3691,14 @@ void ue_measurement_report_triggering( const protocol_ctxt_t* const ctxt_pP, con
UE_rrc_inst
[
ctxt_pP
->
module_id
].
measReportList
[
i
][
j
]
->
measId
=
UE_rrc_inst
[
ctxt_pP
->
module_id
].
MeasId
[
i
][
j
]
->
measId
;
UE_rrc_inst
[
ctxt_pP
->
module_id
].
measReportList
[
i
][
j
]
->
numberOfReportsSent
=
0
;
rrc_ue_generate_MeasurementReport
(
ctxt_pP
,
eNB_index
);
if
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_do_meas
==
0
){
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_do_meas
=
1
;
start_meas
(
&
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_src_enb
);
}
rrc_ue_generate_MeasurementReport
(
ctxt_pP
,
eNB_index
);
//UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag = 1;
LOG_I
(
RRC
,
"[UE %d] Frame %d: A3 event detected, state: %d
\n
"
,
ctxt_pP
->
module_id
,
ctxt_pP
->
frame
,
UE_rrc_inst
[
ctxt_pP
->
module_id
].
Info
[
0
].
State
);
...
...
openair2/RRC/LITE/rrc_common.c
View file @
eacf5525
...
...
@@ -82,7 +82,9 @@ openair_rrc_on(
}
else
{
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_FMT
" OPENAIR RRC IN....
\n
"
,
PROTOCOL_RRC_CTXT_ARGS
(
ctxt_pP
));
reset_meas
(
&
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_src_enb
);
reset_meas
(
&
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_target_enb
);
for
(
i
=
0
;
i
<
NB_eNB_INST
;
i
++
)
{
LOG_D
(
RRC
,
PROTOCOL_RRC_CTXT_FMT
" Activating CCCH (eNB %d)
\n
"
,
PROTOCOL_RRC_CTXT_ARGS
(
ctxt_pP
),
i
);
...
...
@@ -95,6 +97,7 @@ openair_rrc_on(
}
}
//-----------------------------------------------------------------------------
int
rrc_init_global_param
(
...
...
@@ -356,7 +359,30 @@ rrc_top_cleanup(
if
(
NB_eNB_INST
>
0
)
{
free
(
eNB_rrc_inst
);
}
uint8_t
module_id
=
0
;
LOG_I
(
RRC
,
"[SRC]median;q1;q3;min;max;
\n
"
);
for
(
module_id
=
0
;
module_id
<
NB_UE_INST
;
module_id
++
)
{
double
x2_src_table
[
UE_rrc_inst
[
module_id
].
rrc_ue_x2_src_enb_list
.
size
];
totable
(
x2_src_table
,
&
UE_rrc_inst
[
module_id
].
rrc_ue_x2_src_enb_list
);
qsort
(
x2_src_table
,
UE_rrc_inst
[
module_id
].
rrc_ue_x2_src_enb_list
.
size
,
sizeof
(
double
),
&
compare
);
// create stats
double
x2_src_median
=
x2_src_table
[
UE_rrc_inst
[
module_id
].
rrc_ue_x2_src_enb_list
.
size
/
2
];
double
x2_src_q1
=
x2_src_table
[
UE_rrc_inst
[
module_id
].
rrc_ue_x2_src_enb_list
.
size
/
4
];
// Q1
double
x2_src_q3
=
x2_src_table
[
3
*
UE_rrc_inst
[
module_id
].
rrc_ue_x2_src_enb_list
.
size
/
4
];
// Q3
LOG_I
(
RRC
,
"%lf;%lf;%lf;%d;%d;
\n
"
,
x2_src_median
,
x2_src_q1
,
x2_src_q3
,
UE_rrc_inst
[
module_id
].
rrc_ue_x2_src_enb
.
min
,
UE_rrc_inst
[
module_id
].
rrc_ue_x2_src_enb
.
max
);
}
LOG_I
(
RRC
,
"[DST]median;q1;q3;min;max;
\n
"
);
for
(
module_id
=
0
;
module_id
<
NB_UE_INST
;
module_id
++
)
{
double
x2_target_table
[
UE_rrc_inst
[
module_id
].
rrc_ue_x2_target_enb_list
.
size
];
totable
(
x2_target_table
,
&
UE_rrc_inst
[
module_id
].
rrc_ue_x2_target_enb_list
);
qsort
(
x2_target_table
,
UE_rrc_inst
[
module_id
].
rrc_ue_x2_target_enb_list
.
size
,
sizeof
(
double
),
&
compare
);
// create stats
double
x2_target_median
=
x2_target_table
[
UE_rrc_inst
[
module_id
].
rrc_ue_x2_target_enb_list
.
size
/
2
];
double
x2_target_q1
=
x2_target_table
[
UE_rrc_inst
[
module_id
].
rrc_ue_x2_target_enb_list
.
size
/
4
];
// Q1
double
x2_target_q3
=
x2_target_table
[
3
*
UE_rrc_inst
[
module_id
].
rrc_ue_x2_target_enb_list
.
size
/
4
];
// Q3
LOG_I
(
RRC
,
"%lf;%lf;%lf;%d;%d;
\n
"
,
x2_target_median
,
x2_target_q1
,
x2_target_q3
,
UE_rrc_inst
[
module_id
].
rrc_ue_x2_target_enb
.
min
,
UE_rrc_inst
[
module_id
].
rrc_ue_x2_target_enb
.
max
);
}
}
...
...
openair2/RRC/LITE/rrc_eNB.c
View file @
eacf5525
...
...
@@ -4292,7 +4292,13 @@ rrc_eNB_decode_dcch(
rrcConnectionReconfigurationComplete
.
criticalExtensions
.
choice
.
rrcConnectionReconfigurationComplete_r8
);
ue_context_p
->
ue_context
.
Status
=
RRC_RECONFIGURED
;
if
(
ue_context_p
->
ue_context
.
Status
==
RRC_HO_EXECUTION
){
stop_meas
(
&
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_target_enb
);
double
t_x2_target_enb
=
(
double
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_target_enb
.
p_time
/
get_cpu_freq_GHz
()
/
1000
.
0
;
push_front
(
&
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_target_enb_list
,
t_x2_target_enb
);
}
ue_context_p
->
ue_context
.
Status
=
RRC_RECONFIGURED
;
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" UE State = RRC_RECONFIGURED
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
));
...
...
targets/SIMU/EXAMPLES/OSD/WEBXML/template_42.xml
View file @
eacf5525
...
...
@@ -281,7 +281,7 @@
</APPLICATION_CONFIG>
<EMULATION_CONFIG>
<EMULATION_TIME_ms>
17
000
</EMULATION_TIME_ms>
<EMULATION_TIME_ms>
6
000
</EMULATION_TIME_ms>
<CURVE>
disable
</CURVE>
<!-- option: enabled, disabled. If CURVE is enabled, graphes
are ploted in real time (UL and DL) of WOD and throughput measurement for each packet -->
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment