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
zzha zzha
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
Show 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
)
{
/* 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
);
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