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
spbro
OpenXG-RAN
Commits
02504ef7
Commit
02504ef7
authored
Apr 04, 2021
by
hardy
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/fix-x2-without-gnb' into integration_2021_wk14_a
parents
7ed03d50
6c6b4698
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
30 additions
and
18 deletions
+30
-18
openair2/RRC/LTE/rrc_defs.h
openair2/RRC/LTE/rrc_defs.h
+8
-1
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+18
-13
openair2/X2AP/x2ap_eNB.c
openair2/X2AP/x2ap_eNB.c
+1
-3
openair2/X2AP/x2ap_eNB_handler.c
openair2/X2AP/x2ap_eNB_handler.c
+3
-1
No files found.
openair2/RRC/LTE/rrc_defs.h
View file @
02504ef7
...
@@ -67,6 +67,8 @@
...
@@ -67,6 +67,8 @@
#define MAX_NUM_NEIGH_CELLs 6
/* maximum neighbouring cells number */
#define MAX_NUM_NEIGH_CELLs 6
/* maximum neighbouring cells number */
#define MAX_NUM_GNB_CELLs 1
/* maximum gNB cells number */
#define UE_STATE_NOTIFICATION_INTERVAL 50
#define UE_STATE_NOTIFICATION_INTERVAL 50
#define IPV4_ADDR "%u.%u.%u.%u"
#define IPV4_ADDR "%u.%u.%u.%u"
...
@@ -804,8 +806,13 @@ typedef struct eNB_RRC_INST_s {
...
@@ -804,8 +806,13 @@ typedef struct eNB_RRC_INST_s {
int
num_neigh_cells_cc
[
MAX_NUM_CCs
];
int
num_neigh_cells_cc
[
MAX_NUM_CCs
];
uint32_t
neigh_cells_id
[
MAX_NUM_NEIGH_CELLs
][
MAX_NUM_CCs
];
uint32_t
neigh_cells_id
[
MAX_NUM_NEIGH_CELLs
][
MAX_NUM_CCs
];
// gNB cells connected to this eNB
int
num_gnb_cells
;
int
num_gnb_cells_cc
[
MAX_NUM_GNB_CELLs
];
uint32_t
gnb_cells_id
[
MAX_NUM_GNB_CELLs
][
MAX_NUM_CCs
];
// Nr scc freq band and SSB absolute frequency
// Nr scc freq band and SSB absolute frequency
uint32_t
nr_
neigh_freq_band
[
MAX_NUM_NEIGH
_CELLs
][
MAX_NUM_CCs
];
uint32_t
nr_
gnb_freq_band
[
MAX_NUM_GNB
_CELLs
][
MAX_NUM_CCs
];
int
nr_scg_ssb_freq
;
int
nr_scg_ssb_freq
;
// other RAN parameters
// other RAN parameters
...
...
openair2/RRC/LTE/rrc_eNB.c
View file @
02504ef7
...
@@ -1283,7 +1283,7 @@ rrc_eNB_generate_UECapabilityEnquiry(
...
@@ -1283,7 +1283,7 @@ rrc_eNB_generate_UECapabilityEnquiry(
T(T_ENB_RRC_UE_CAPABILITY_ENQUIRY, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T(T_ENB_RRC_UE_CAPABILITY_ENQUIRY, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
int16_t eutra_band = RC.rrc[ctxt_pP->module_id]->configuration.eutra_band[0];
int16_t eutra_band = RC.rrc[ctxt_pP->module_id]->configuration.eutra_band[0];
uint32_t
nr_band
=
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
nr_
neigh
_freq_band
[
0
][
0
];
uint32_t nr_band = RC.rrc[ctxt_pP->module_id]->nr_
gnb
_freq_band[0][0];
size = do_UECapabilityEnquiry(
size = do_UECapabilityEnquiry(
ctxt_pP,
ctxt_pP,
buffer,
buffer,
...
@@ -1333,7 +1333,7 @@ rrc_eNB_generate_NR_UECapabilityEnquiry(
...
@@ -1333,7 +1333,7 @@ rrc_eNB_generate_NR_UECapabilityEnquiry(
T(T_ENB_RRC_UE_CAPABILITY_ENQUIRY, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T(T_ENB_RRC_UE_CAPABILITY_ENQUIRY, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
int16_t eutra_band = RC.rrc[ctxt_pP->module_id]->configuration.eutra_band[0];
int16_t eutra_band = RC.rrc[ctxt_pP->module_id]->configuration.eutra_band[0];
uint32_t
nr_band
=
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
nr_
neigh
_freq_band
[
0
][
0
];
uint32_t nr_band = RC.rrc[ctxt_pP->module_id]->nr_
gnb
_freq_band[0][0];
size = do_NR_UECapabilityEnquiry(
size = do_NR_UECapabilityEnquiry(
ctxt_pP,
ctxt_pP,
buffer,
buffer,
...
@@ -7588,8 +7588,8 @@ is_en_dc_supported(
...
@@ -7588,8 +7588,8 @@ is_en_dc_supported(
)
)
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
{
{
/* to be refined - check that the
eNB is connected to a gNB, check that
/* to be refined - check that the
bands supported by the UE include
* the band
s supported by the UE include the band
of the gNB
* the band of the gNB
*/
*/
#define NCE nonCriticalExtension
#define NCE nonCriticalExtension
return c != NULL
return c != NULL
...
@@ -8289,8 +8289,13 @@ rrc_eNB_decode_dcch(
...
@@ -8289,8 +8289,13 @@ rrc_eNB_decode_dcch(
ue_context_p->ue_context.UE_Capability = 0;
ue_context_p->ue_context.UE_Capability = 0;
}
}
if
(
dec_rval
.
code
==
RC_OK
)
if (dec_rval.code == RC_OK) {
ue_context_p
->
ue_context
.
does_nr
=
is_en_dc_supported
(
ue_context_p
->
ue_context
.
UE_Capability
);
/* do NR only if at least one gNB connected */
if (RC.rrc[ctxt_pP->module_id]->num_gnb_cells != 0)
ue_context_p->ue_context.does_nr = is_en_dc_supported(ue_context_p->ue_context.UE_Capability);
else
ue_context_p->ue_context.does_nr = 0;
}
if (EPC_MODE_ENABLED) {
if (EPC_MODE_ENABLED) {
rrc_eNB_send_S1AP_UE_CAPABILITIES_IND(ctxt_pP,
rrc_eNB_send_S1AP_UE_CAPABILITIES_IND(ctxt_pP,
...
@@ -9029,22 +9034,22 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id) {
...
@@ -9029,22 +9034,22 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id) {
}
}
void rrc_eNB_process_ENDC_x2_setup_request(int mod_id, x2ap_ENDC_setup_req_t *m) {
void rrc_eNB_process_ENDC_x2_setup_request(int mod_id, x2ap_ENDC_setup_req_t *m) {
if
(
RC
.
rrc
[
mod_id
]
->
num_
neigh_cells
>
MAX_NUM_NEIGH
_CELLs
)
{
if (RC.rrc[mod_id]->num_
gnb_cells >= MAX_NUM_GNB
_CELLs) {
LOG_E
(
RRC
,
"Error: number of
neighbouring cells is exceeded
\n
"
);
LOG_E(RRC, "Error: number of
gNB cells is exceeded
\n");
return;
return;
}
}
if (m->num_cc > MAX_NUM_CCs) {
if (m->num_cc > MAX_NUM_CCs) {
LOG_E
(
RRC
,
"Error: number of
neighbouring
cells carriers is exceeded
\n
"
);
LOG_E(RRC, "Error: number of
gNB
cells carriers is exceeded \n");
return;
return;
}
}
RC
.
rrc
[
mod_id
]
->
num_
neigh
_cells
++
;
RC.rrc[mod_id]->num_
gnb
_cells++;
RC
.
rrc
[
mod_id
]
->
num_
neigh_cells_cc
[
RC
.
rrc
[
mod_id
]
->
num_neigh
_cells
-
1
]
=
m
->
num_cc
;
RC.rrc[mod_id]->num_
gnb_cells_cc[RC.rrc[mod_id]->num_gnb
_cells-1] = m->num_cc;
for (int i=0; i<m->num_cc; i++) {
for (int i=0; i<m->num_cc; i++) {
RC
.
rrc
[
mod_id
]
->
neigh_cells_id
[
RC
.
rrc
[
mod_id
]
->
num_neigh
_cells
-
1
][
i
]
=
m
->
Nid_cell
[
i
];
RC.rrc[mod_id]->
gnb_cells_id[RC.rrc[mod_id]->num_gnb
_cells-1][i] = m->Nid_cell[i];
RC
.
rrc
[
mod_id
]
->
nr_
neigh_freq_band
[
RC
.
rrc
[
mod_id
]
->
num_neigh
_cells
-
1
][
i
]
=
m
->
servedNrCell_band
[
i
];
RC.rrc[mod_id]->nr_
gnb_freq_band[RC.rrc[mod_id]->num_gnb
_cells-1][i] = m->servedNrCell_band[i];
}
}
}
}
...
...
openair2/X2AP/x2ap_eNB.c
View file @
02504ef7
...
@@ -116,9 +116,7 @@ void x2ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa
...
@@ -116,9 +116,7 @@ void x2ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa
/* some sanity check - to be refined at some point */
/* some sanity check - to be refined at some point */
if
(
sctp_new_association_resp
->
sctp_state
!=
SCTP_STATE_ESTABLISHED
)
{
if
(
sctp_new_association_resp
->
sctp_state
!=
SCTP_STATE_ESTABLISHED
)
{
X2AP_ERROR
(
"x2ap_enb_data_p not NULL and sctp state not SCTP_STATE_ESTABLISHED, what to do?
\n
"
);
X2AP_ERROR
(
"x2ap_enb_data_p not NULL and sctp state not SCTP_STATE_ESTABLISHED, what to do?
\n
"
);
// Allow for a gracious exit when we kill first the gNB, then the eNB
exit
(
1
);
//abort();
return
;
}
}
x2ap_enb_data_p
->
in_streams
=
sctp_new_association_resp
->
in_streams
;
x2ap_enb_data_p
->
in_streams
=
sctp_new_association_resp
->
in_streams
;
...
...
openair2/X2AP/x2ap_eNB_handler.c
View file @
02504ef7
...
@@ -690,9 +690,11 @@ int x2ap_eNB_handle_x2_setup_failure(instance_t instance,
...
@@ -690,9 +690,11 @@ int x2ap_eNB_handle_x2_setup_failure(instance_t instance,
// need a FSM to handle all cases
// need a FSM to handle all cases
if
((
ie
->
value
.
choice
.
Cause
.
present
==
X2AP_Cause_PR_misc
)
&&
if
((
ie
->
value
.
choice
.
Cause
.
present
==
X2AP_Cause_PR_misc
)
&&
(
ie
->
value
.
choice
.
Cause
.
choice
.
misc
==
X2AP_CauseMisc_unspecified
))
{
(
ie
->
value
.
choice
.
Cause
.
choice
.
misc
==
X2AP_CauseMisc_unspecified
))
{
X2AP_WARN
(
"Received X2 setup failure for eNB ... eNB is not ready
\n
"
);
X2AP_ERROR
(
"Received X2 setup failure for eNB ... eNB is not ready
\n
"
);
exit
(
1
);
}
else
{
}
else
{
X2AP_ERROR
(
"Received x2 setup failure for eNB... please check your parameters
\n
"
);
X2AP_ERROR
(
"Received x2 setup failure for eNB... please check your parameters
\n
"
);
exit
(
1
);
}
}
x2ap_eNB_data
->
state
=
X2AP_ENB_STATE_WAITING
;
x2ap_eNB_data
->
state
=
X2AP_ENB_STATE_WAITING
;
...
...
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