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
772dc508
Commit
772dc508
authored
Apr 24, 2019
by
Konstantinos Alexandris
Committed by
Robert Schmidt
Jun 24, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix: Segfault error, free properly measurement info struct, add rsrp/rsrq filter coefficient
parent
b7530528
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
40 additions
and
13 deletions
+40
-13
openair2/ENB_APP/flexran_agent_ran_api.c
openair2/ENB_APP/flexran_agent_ran_api.c
+16
-0
openair2/ENB_APP/flexran_agent_ran_api.h
openair2/ENB_APP/flexran_agent_ran_api.h
+6
-0
openair2/RRC/LTE/rrc_defs.h
openair2/RRC/LTE/rrc_defs.h
+3
-1
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+15
-12
No files found.
openair2/ENB_APP/flexran_agent_ran_api.c
View file @
772dc508
...
@@ -1597,6 +1597,22 @@ long flexran_get_rrc_ocn(mid_t mod_id, rnti_t rnti, long cell_id) {
...
@@ -1597,6 +1597,22 @@ long flexran_get_rrc_ocn(mid_t mod_id, rnti_t rnti, long cell_id) {
return
ue_context_p
->
ue_context
.
measurement_info
->
cellIndividualOffset
[
cell_id
+
1
];
return
ue_context_p
->
ue_context
.
measurement_info
->
cellIndividualOffset
[
cell_id
+
1
];
}
}
long
flexran_get_filter_coeff_rsrp
(
mid_t
mod_id
,
rnti_t
rnti
)
{
if
(
!
rrc_is_present
(
mod_id
))
return
-
1
;
struct
rrc_eNB_ue_context_s
*
ue_context_p
=
rrc_eNB_get_ue_context
(
RC
.
rrc
[
mod_id
],
rnti
);
if
(
!
ue_context_p
)
return
-
1
;
if
(
!
ue_context_p
->
ue_context
.
measurement_info
)
return
-
1
;
return
ue_context_p
->
ue_context
.
measurement_info
->
filterCoefficientRSRP
;
}
long
flexran_get_filter_coeff_rsrq
(
mid_t
mod_id
,
rnti_t
rnti
)
{
if
(
!
rrc_is_present
(
mod_id
))
return
-
1
;
struct
rrc_eNB_ue_context_s
*
ue_context_p
=
rrc_eNB_get_ue_context
(
RC
.
rrc
[
mod_id
],
rnti
);
if
(
!
ue_context_p
)
return
-
1
;
if
(
!
ue_context_p
->
ue_context
.
measurement_info
)
return
-
1
;
return
ue_context_p
->
ue_context
.
measurement_info
->
filterCoefficientRSRQ
;
}
/* Periodic event */
/* Periodic event */
long
flexran_get_rrc_per_event_maxReportCells
(
mid_t
mod_id
,
rnti_t
rnti
)
{
long
flexran_get_rrc_per_event_maxReportCells
(
mid_t
mod_id
,
rnti_t
rnti
)
{
...
...
openair2/ENB_APP/flexran_agent_ran_api.h
View file @
772dc508
...
@@ -570,6 +570,12 @@ long flexran_get_rrc_a3_event_a3_offset(mid_t mod_id, rnti_t rnti);
...
@@ -570,6 +570,12 @@ long flexran_get_rrc_a3_event_a3_offset(mid_t mod_id, rnti_t rnti);
/* Get A3 Event report on leave */
/* Get A3 Event report on leave */
int
flexran_get_rrc_a3_event_reportOnLeave
(
mid_t
mod_id
,
rnti_t
rnti
);
int
flexran_get_rrc_a3_event_reportOnLeave
(
mid_t
mod_id
,
rnti_t
rnti
);
/* Get filter coefficient for rsrp */
long
flexran_get_filter_coeff_rsrp
(
mid_t
mod_id
,
rnti_t
rnti
);
/* Get filter coefficient for rsrq */
long
flexran_get_filter_coeff_rsrq
(
mid_t
mod_id
,
rnti_t
rnti
);
/* Get number of PLMNs that is broadcasted in SIB1 */
/* Get number of PLMNs that is broadcasted in SIB1 */
uint8_t
flexran_get_rrc_num_plmn_ids
(
mid_t
mod_id
);
uint8_t
flexran_get_rrc_num_plmn_ids
(
mid_t
mod_id
);
...
...
openair2/RRC/LTE/rrc_defs.h
View file @
772dc508
...
@@ -538,8 +538,10 @@ typedef struct EVENTS_s {
...
@@ -538,8 +538,10 @@ typedef struct EVENTS_s {
typedef
struct
MEASUREMENT_INFO_s
{
typedef
struct
MEASUREMENT_INFO_s
{
//TODO: Extend to multiple meas objects for OFP/OFN offsets
//TODO: Extend to multiple meas objects for OFP/OFN offsets
long
offsetFreq
;
long
offsetFreq
;
//TODO: extend to multiple c
ell
s for OCP/OCN offsets
//TODO: extend to multiple c
arrier
s for OCP/OCN offsets
long
cellIndividualOffset
[
MAX_NUM_NEIGH_CELLs
+
1
];
long
cellIndividualOffset
[
MAX_NUM_NEIGH_CELLs
+
1
];
long
filterCoefficientRSRP
;
long
filterCoefficientRSRQ
;
EVENTS_t
*
events
;
EVENTS_t
*
events
;
}
MEASUREMENT_INFO
;
}
MEASUREMENT_INFO
;
...
...
openair2/RRC/LTE/rrc_eNB.c
View file @
772dc508
...
@@ -977,20 +977,16 @@ rrc_eNB_free_mem_UE_context(
...
@@ -977,20 +977,16 @@ rrc_eNB_free_mem_UE_context(
ue_context_pP
->
ue_context
.
handover_info
=
NULL
;
ue_context_pP
->
ue_context
.
handover_info
=
NULL
;
}
}
if
(
ue_context_pP
->
ue_context
.
measurement_info
->
events
->
a3_event
)
{
/* TODO: be sure free is enough here (check memory leaks) */
free
(
ue_context_pP
->
ue_context
.
measurement_info
->
events
->
a3_event
);
ue_context_pP
->
ue_context
.
measurement_info
->
events
->
a3_event
=
NULL
;
}
if
(
ue_context_pP
->
ue_context
.
measurement_info
->
events
)
{
/* TODO: be sure free is enough here (check memory leaks) */
free
(
ue_context_pP
->
ue_context
.
measurement_info
->
events
);
ue_context_pP
->
ue_context
.
measurement_info
->
events
=
NULL
;
}
if
(
ue_context_pP
->
ue_context
.
measurement_info
)
{
if
(
ue_context_pP
->
ue_context
.
measurement_info
)
{
/* TODO: be sure free is enough here (check memory leaks) */
/* TODO: be sure free is enough here (check memory leaks) */
if
(
ue_context_pP
->
ue_context
.
measurement_info
->
events
)
{
if
(
ue_context_pP
->
ue_context
.
measurement_info
->
events
->
a3_event
)
{
free
(
ue_context_pP
->
ue_context
.
measurement_info
->
events
->
a3_event
);
ue_context_pP
->
ue_context
.
measurement_info
->
events
->
a3_event
=
NULL
;
}
free
(
ue_context_pP
->
ue_context
.
measurement_info
->
events
);
ue_context_pP
->
ue_context
.
measurement_info
->
events
=
NULL
;
}
free
(
ue_context_pP
->
ue_context
.
measurement_info
);
free
(
ue_context_pP
->
ue_context
.
measurement_info
);
ue_context_pP
->
ue_context
.
measurement_info
=
NULL
;
ue_context_pP
->
ue_context
.
measurement_info
=
NULL
;
}
}
...
@@ -3486,6 +3482,9 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
...
@@ -3486,6 +3482,9 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRP
=
LTE_FilterCoefficient_fc4
;
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRP
=
LTE_FilterCoefficient_fc4
;
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
=
LTE_FilterCoefficient_fc4
;
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
=
LTE_FilterCoefficient_fc4
;
ue_context_pP
->
ue_context
.
measurement_info
->
filterCoefficientRSRP
=
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRP
;
ue_context_pP
->
ue_context
.
measurement_info
->
filterCoefficientRSRQ
=
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
;
/* Initialize NAS list */
/* Initialize NAS list */
dedicatedInfoNASList
=
CALLOC
(
1
,
sizeof
(
struct
LTE_RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList
));
dedicatedInfoNASList
=
CALLOC
(
1
,
sizeof
(
struct
LTE_RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList
));
...
@@ -5542,6 +5541,10 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
...
@@ -5542,6 +5541,10 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
CALLOC
(
1
,
sizeof
(
*
(
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
)));
CALLOC
(
1
,
sizeof
(
*
(
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
)));
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRP
=
LTE_FilterCoefficient_fc4
;
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRP
=
LTE_FilterCoefficient_fc4
;
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
=
LTE_FilterCoefficient_fc4
;
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
=
LTE_FilterCoefficient_fc4
;
ue_context_pP
->
ue_context
.
measurement_info
->
filterCoefficientRSRP
=
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRP
;
ue_context_pP
->
ue_context
.
measurement_info
->
filterCoefficientRSRQ
=
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
;
/* mobilityinfo */
/* mobilityinfo */
mobilityInfo
=
ue_context_pP
->
ue_context
.
mobilityInfo
;
mobilityInfo
=
ue_context_pP
->
ue_context
.
mobilityInfo
;
...
...
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