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
a315f995
Commit
a315f995
authored
Mar 15, 2016
by
Anta Huang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
eNB ho stats
parent
e38d2c4a
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
75 additions
and
24 deletions
+75
-24
openair2/RRC/LITE/defs.h
openair2/RRC/LITE/defs.h
+5
-3
openair2/RRC/LITE/rrc_UE.c
openair2/RRC/LITE/rrc_UE.c
+5
-1
openair2/RRC/LITE/rrc_common.c
openair2/RRC/LITE/rrc_common.c
+56
-17
openair2/RRC/LITE/rrc_eNB.c
openair2/RRC/LITE/rrc_eNB.c
+8
-2
targets/SIMU/EXAMPLES/OSD/WEBXML/template_42.xml
targets/SIMU/EXAMPLES/OSD/WEBXML/template_42.xml
+1
-1
No files found.
openair2/RRC/LITE/defs.h
View file @
a315f995
...
...
@@ -439,6 +439,10 @@ typedef struct eNB_RRC_INST_s {
/// localization list for aggregated measurements from PHY
struct
list
loc_list
;
#endif
// X2 HO stats and measurements
uint32_t
rrc_enb_x2_ms
;
// from idle to connected
struct
list
rrc_enb_x2_list
;
}
eNB_RRC_INST
;
#define MAX_UE_CAPABILITY_SIZE 255
...
...
@@ -531,12 +535,10 @@ typedef struct UE_RRC_INST_s {
e_SecurityAlgorithmConfig__cipheringAlgorithm
ciphering_algorithm
;
e_SecurityAlgorithmConfig__integrityProtAlgorithm
integrity_algorithm
;
// X2 HO stats and measur
ments
// X2 HO stats and measur
ements
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
uint32_t
rrc_ue_x2_src_enb_ms
;
// 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
uint32_t
rrc_ue_x2_target_enb_ms
;
// from idle to connected
struct
list
rrc_ue_x2_target_enb_list
;
}
UE_RRC_INST
;
...
...
openair2/RRC/LITE/rrc_UE.c
View file @
a315f995
...
...
@@ -1968,10 +1968,13 @@ rrc_ue_decode_dcch(
if
(
target_eNB_index
!=
0xFF
)
{
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_do_meas
=
0
;
// Stop to measure (delay to the UE-->source)
//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;
double
t_x2_src_enb
=
(
double
)
ctxt_pP
->
frame
*
10
+
ctxt_pP
->
subframe
-
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_src_enb_ms
;
push_front
(
&
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_src_enb_list
,
t_x2_src_enb
);
// Start to measure (delay to the UE-->target)
//start_meas(&UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_target_enb);
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_target_enb_ms
=
ctxt_pP
->
frame
*
10
+
ctxt_pP
->
subframe
;
init_meas_timers
(
ctxt_pP
);
// Initialize handover measurement timers
...
...
@@ -3696,8 +3699,9 @@ void ue_measurement_report_triggering( const protocol_ctxt_t* const ctxt_pP, con
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 to measure (delay to the UE-->source)
//start_meas(&UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_src_enb);
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_src_enb_ms
=
ctxt_pP
->
frame
*
10
+
ctxt_pP
->
subframe
;
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_src_enb_ms
=
ctxt_pP
->
frame
*
10
+
ctxt_pP
->
subframe
;
}
rrc_ue_generate_MeasurementReport
(
ctxt_pP
,
...
...
openair2/RRC/LITE/rrc_common.c
View file @
a315f995
...
...
@@ -82,9 +82,7 @@ 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
);
...
...
@@ -361,33 +359,74 @@ rrc_top_cleanup(
free
(
eNB_rrc_inst
);
}
uint8_t
module_id
=
0
;
LOG_I
(
RRC
,
"[SRC]median;q1;q3;min;max;
\n
"
);
uint8_t
i
=
0
;
double
x2_src_avg
;
double
x2_src_median
=
0
.
0
;
double
x2_src_q1
=
0
.
0
;
double
x2_src_q3
=
0
.
0
;
double
x2_src_min
=
0
.
0
;
double
x2_src_max
=
0
.
0
;
double
x2_target_avg
;
double
x2_target_median
=
0
.
0
;
double
x2_target_q1
=
0
.
0
;
double
x2_target_q3
=
0
.
0
;
double
x2_target_min
=
0
.
0
;
double
x2_target_max
=
0
.
0
;
LOG_I
(
RRC
,
"[SRC]median;q1;q3;min;max;avg;
\n
"
);
for
(
module_id
=
0
;
module_id
<
NB_UE_INST
;
module_id
++
)
{
x2_src_avg
=
0
.
0
;
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
double
x2_src_min
=
x2_src_table
[
0
];
// Q3
double
x2_src_max
=
x2_src_table
[
UE_rrc_inst
[
module_id
].
rrc_ue_x2_src_enb_list
.
size
-
1
];
// Q3
x2_src_median
=
x2_src_table
[
UE_rrc_inst
[
module_id
].
rrc_ue_x2_src_enb_list
.
size
/
2
];
x2_src_q1
=
x2_src_table
[
UE_rrc_inst
[
module_id
].
rrc_ue_x2_src_enb_list
.
size
/
4
];
// Q1
x2_src_q3
=
x2_src_table
[
3
*
UE_rrc_inst
[
module_id
].
rrc_ue_x2_src_enb_list
.
size
/
4
];
// Q3
x2_src_min
=
x2_src_table
[
0
];
// Q3
x2_src_max
=
x2_src_table
[
UE_rrc_inst
[
module_id
].
rrc_ue_x2_src_enb_list
.
size
-
1
];
// Q3
LOG_I
(
RRC
,
"%lf;%lf;%lf;%d;%d;
\n
"
,
x2_src_median
,
x2_src_q1
,
x2_src_q3
,
x2_src_min
,
x2_src_max
);
for
(
i
=
0
;
i
<
UE_rrc_inst
[
module_id
].
rrc_ue_x2_src_enb_list
.
size
;
i
++
){
x2_src_avg
+=
x2_src_table
[
i
];
}
x2_src_avg
/=
UE_rrc_inst
[
module_id
].
rrc_ue_x2_src_enb_list
.
size
;
LOG_I
(
RRC
,
"[SRC]%lf;%lf;%lf;%lf;%lf;%lf
\n
"
,
x2_src_median
,
x2_src_q1
,
x2_src_q3
,
x2_src_min
,
x2_src_max
,
x2_src_avg
);
}
LOG_I
(
RRC
,
"[DST]median;q1;q3;min;max;
\n
"
);
for
(
module_id
=
0
;
module_id
<
NB_UE_INST
;
module_id
++
)
{
x2_target_avg
=
0
.
0
;
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
double
x2_target_min
=
x2_target_table
[
0
];
// MIN
double
x2_target_max
=
x2_target_table
[
UE_rrc_inst
[
module_id
].
rrc_ue_x2_target_enb_list
.
size
-
1
];
// mAX
LOG_I
(
RRC
,
"%lf;%lf;%lf;%d;%d;
\n
"
,
x2_target_median
,
x2_target_q1
,
x2_target_q3
,
x2_target_min
,
x2_target_max
);
x2_target_median
=
x2_target_table
[
UE_rrc_inst
[
module_id
].
rrc_ue_x2_target_enb_list
.
size
/
2
];
x2_target_q1
=
x2_target_table
[
UE_rrc_inst
[
module_id
].
rrc_ue_x2_target_enb_list
.
size
/
4
];
// Q1
x2_target_q3
=
x2_target_table
[
3
*
UE_rrc_inst
[
module_id
].
rrc_ue_x2_target_enb_list
.
size
/
4
];
// Q3
x2_target_min
=
x2_target_table
[
0
];
// MIN
x2_target_max
=
x2_target_table
[
UE_rrc_inst
[
module_id
].
rrc_ue_x2_target_enb_list
.
size
-
1
];
// mAX
for
(
i
=
0
;
i
<
UE_rrc_inst
[
module_id
].
rrc_ue_x2_target_enb_list
.
size
;
i
++
){
x2_target_avg
+=
x2_target_table
[
i
];
}
x2_target_avg
/=
UE_rrc_inst
[
module_id
].
rrc_ue_x2_target_enb_list
.
size
;
LOG_I
(
RRC
,
"[DST]%lf;%lf;%lf;%lf;%lf;%lf
\n
"
,
x2_target_median
,
x2_target_q1
,
x2_target_q3
,
x2_target_min
,
x2_target_max
,
x2_target_avg
);
}
LOG_I
(
RRC
,
"[X2]median;q1;q3;min;max;
\n
"
);
for
(
module_id
=
0
;
module_id
<
NB_eNB_INST
;
module_id
++
)
{
double
x2_table
[
eNB_rrc_inst
[
module_id
].
rrc_enb_x2_list
.
size
];
totable
(
x2_table
,
&
eNB_rrc_inst
[
module_id
].
rrc_enb_x2_list
);
qsort
(
x2_table
,
eNB_rrc_inst
[
module_id
].
rrc_enb_x2_list
.
size
,
sizeof
(
double
),
&
compare
);
// create stats
double
x2_median
=
x2_table
[
eNB_rrc_inst
[
module_id
].
rrc_enb_x2_list
.
size
/
2
];
double
x2_q1
=
x2_table
[
eNB_rrc_inst
[
module_id
].
rrc_enb_x2_list
.
size
/
4
];
// Q1
double
x2_q3
=
x2_table
[
3
*
eNB_rrc_inst
[
module_id
].
rrc_enb_x2_list
.
size
/
4
];
// Q3
double
x2_min
=
x2_table
[
0
];
// MIN
double
x2_max
=
x2_table
[
eNB_rrc_inst
[
module_id
].
rrc_enb_x2_list
.
size
-
1
];
// mAX
LOG_I
(
RRC
,
"[X2]%lf;%lf;%lf;%d;%d;
\n
"
,
x2_median
,
x2_q1
,
x2_q3
,
x2_min
,
x2_max
);
}
}
...
...
openair2/RRC/LITE/rrc_eNB.c
View file @
a315f995
...
...
@@ -1485,7 +1485,7 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(
}
else
{
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
timeToTrigger
=
TimeToTrigger_ms
4
0
;
TimeToTrigger_ms
8
0
;
//LOG_D(RRC,"Time to trigger for eNB %d is set to %d\n",ctxt_pP->module_id,TimeToTrigger_ms40);
}
ASN_SEQUENCE_ADD
(
&
ReportConfig_list
->
list
,
ReportConfig_A3
);
...
...
@@ -2140,6 +2140,9 @@ check_handovers(
X2AP_HANDOVER_RESP
(
msg
).
target_mod_id
=
1
-
ctxt_pP
->
module_id
;
X2AP_HANDOVER_RESP
(
msg
).
source_x2id
=
ue_context_p
->
ue_context
.
handover_info
->
source_x2id
;
itti_send_msg_to_task
(
TASK_X2AP
,
ENB_MODULE_ID_TO_INSTANCE
(
ctxt_pP
->
module_id
),
msg
);
// Stop to measure (x2 delay)
double
t_x2_enb
=
(
double
)
ctxt_pP
->
frame
*
10
+
ctxt_pP
->
subframe
-
eNB_rrc_inst
[
ue_context_p
->
ue_context
.
handover_info
->
modid_s
].
rrc_enb_x2_ms
;
push_front
(
&
eNB_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_enb_x2_list
,
t_x2_enb
);
}
...
...
@@ -2925,7 +2928,7 @@ rv[1] = (global_rnti>>8) & 255;
}
else
{
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
timeToTrigger
=
TimeToTrigger_ms
4
0
;
TimeToTrigger_ms
8
0
;
//LOG_D(RRC,"Time to trigger for eNB %d is set to %d\n",ctxt_pP->module_id,TimeToTrigger_ms40);
}
...
...
@@ -4248,6 +4251,8 @@ rrc_eNB_decode_dcch(
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
DCCH
,
sdu_sizeP
);
// Start to measure (x2 delay)
eNB_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_enb_x2_ms
=
ctxt_pP
->
frame
*
10
+
ctxt_pP
->
subframe
;
rrc_eNB_process_MeasurementReport
(
ctxt_pP
,
ue_context_p
,
...
...
@@ -4294,6 +4299,7 @@ rrc_eNB_decode_dcch(
rrcConnectionReconfigurationComplete_r8
);
if
(
ue_context_p
->
ue_context
.
Status
==
RRC_HO_EXECUTION
){
// Stop to measure (delay to the UE-->target)
//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;
double
t_x2_target_enb
=
(
double
)
ctxt_pP
->
frame
*
10
+
ctxt_pP
->
subframe
-
UE_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_x2_target_enb_ms
;
...
...
targets/SIMU/EXAMPLES/OSD/WEBXML/template_42.xml
View file @
a315f995
...
...
@@ -281,7 +281,7 @@
</APPLICATION_CONFIG>
<EMULATION_CONFIG>
<EMULATION_TIME_ms>
6
000
</EMULATION_TIME_ms>
<EMULATION_TIME_ms>
11
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