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
d092788a
Commit
d092788a
authored
Jul 06, 2022
by
laurent
Committed by
Sakthivel Velumani
Sep 13, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix regression with F1, some basic cleaning in NGAP
parent
41a13573
Changes
6
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
162 additions
and
213 deletions
+162
-213
openair2/GNB_APP/gnb_app.c
openair2/GNB_APP/gnb_app.c
+8
-3
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+12
-12
openair2/GNB_APP/gnb_config.h
openair2/GNB_APP/gnb_config.h
+1
-1
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
+0
-1
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+0
-44
openair2/RRC/NR/rrc_gNB_NGAP.c
openair2/RRC/NR/rrc_gNB_NGAP.c
+141
-152
No files found.
openair2/GNB_APP/gnb_app.c
View file @
d092788a
...
@@ -68,7 +68,7 @@ static void configure_nr_rrc(uint32_t gnb_id)
...
@@ -68,7 +68,7 @@ static void configure_nr_rrc(uint32_t gnb_id)
msg_p
=
itti_alloc_new_message
(
TASK_GNB_APP
,
0
,
NRRRC_CONFIGURATION_REQ
);
msg_p
=
itti_alloc_new_message
(
TASK_GNB_APP
,
0
,
NRRRC_CONFIGURATION_REQ
);
if
(
RC
.
nrrrc
[
gnb_id
])
{
if
(
RC
.
nrrrc
[
gnb_id
])
{
set_node_type
();
RC
.
nrrrc
[
gnb_id
]
->
node_type
=
set_node_type
();
RCconfig_NRRRC
(
msg_p
,
gnb_id
,
RC
.
nrrrc
[
gnb_id
]);
RCconfig_NRRRC
(
msg_p
,
gnb_id
,
RC
.
nrrrc
[
gnb_id
]);
LOG_I
(
GNB_APP
,
"RRC starting with node type %d
\n
"
,
RC
.
nrrrc
[
gnb_id
]
->
node_type
);
LOG_I
(
GNB_APP
,
"RRC starting with node type %d
\n
"
,
RC
.
nrrrc
[
gnb_id
]
->
node_type
);
...
@@ -196,8 +196,11 @@ void *gNB_app_task(void *args_p)
...
@@ -196,8 +196,11 @@ void *gNB_app_task(void *args_p)
}
}
if
(
RC
.
nb_nr_inst
>
0
)
{
if
(
RC
.
nb_nr_inst
>
0
)
{
if
(
RC
.
nrrrc
[
0
]
->
node_type
==
ngran_gNB_CUCP
||
RC
.
nrrrc
[
0
]
->
node_type
==
ngran_gNB_CU
||
RC
.
nrrrc
[
0
]
->
node_type
==
ngran_eNB_CU
||
RC
.
nrrrc
[
0
]
->
node_type
==
ngran_ng_eNB_CU
)
{
if
(
NODE_IS_CU
(
RC
.
nrrrc
[
0
]
->
node_type
))
{
if
(
itti_create_task
(
TASK_CU_F1
,
F1AP_CU_task
,
NULL
)
<
0
)
{
if
(
itti_create_task
(
TASK_CU_F1
,
F1AP_CU_task
,
NULL
)
<
0
)
{
LOG_E
(
F1AP
,
"Create task for F1AP CU failed
\n
"
);
LOG_E
(
F1AP
,
"Create task for F1AP CU failed
\n
"
);
AssertFatal
(
1
==
0
,
"exiting"
);
AssertFatal
(
1
==
0
,
"exiting"
);
...
@@ -216,7 +219,9 @@ void *gNB_app_task(void *args_p)
...
@@ -216,7 +219,9 @@ void *gNB_app_task(void *args_p)
itti_send_msg_to_task
(
TASK_CUCP_E1
,
GNB_MODULE_ID_TO_INSTANCE
(
0
),
msg_p
);
itti_send_msg_to_task
(
TASK_CUCP_E1
,
GNB_MODULE_ID_TO_INSTANCE
(
0
),
msg_p
);
}
else
if
(
RC
.
nrrrc
[
0
]
->
node_type
==
ngran_gNB_CUUP
)
{
}
if
(
RC
.
nrrrc
[
0
]
->
node_type
==
ngran_gNB_CUUP
)
{
if
(
itti_create_task
(
TASK_CUUP_E1
,
E1AP_CUUP_task
,
NULL
)
<
0
)
{
if
(
itti_create_task
(
TASK_CUUP_E1
,
E1AP_CUUP_task
,
NULL
)
<
0
)
{
LOG_E
(
E1AP
,
"Create task for E1AP UP failed
\n
"
);
LOG_E
(
E1AP
,
"Create task for E1AP UP failed
\n
"
);
AssertFatal
(
1
==
0
,
"exiting"
);
AssertFatal
(
1
==
0
,
"exiting"
);
...
...
openair2/GNB_APP/gnb_config.c
View file @
d092788a
...
@@ -1149,7 +1149,8 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
...
@@ -1149,7 +1149,8 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
printf
(
"NRRRC %d: Southbound Transport %s
\n
"
,
i
,
*
(
GNBParamList
.
paramarray
[
i
][
GNB_TRANSPORT_S_PREFERENCE_IDX
].
strptr
));
printf
(
"NRRRC %d: Southbound Transport %s
\n
"
,
i
,
*
(
GNBParamList
.
paramarray
[
i
][
GNB_TRANSPORT_S_PREFERENCE_IDX
].
strptr
));
if
(
strcmp
(
*
(
GNBParamList
.
paramarray
[
i
][
GNB_TRANSPORT_S_PREFERENCE_IDX
].
strptr
),
"f1"
)
==
0
)
{
rrc
->
node_type
=
set_node_type
();
if
(
NODE_IS_CU
(
rrc
->
node_type
))
{
paramdef_t
SCTPParams
[]
=
GNBSCTPPARAMS_DESC
;
paramdef_t
SCTPParams
[]
=
GNBSCTPPARAMS_DESC
;
char
aprefix
[
MAX_OPTNAME_SIZE
*
2
+
8
];
char
aprefix
[
MAX_OPTNAME_SIZE
*
2
+
8
];
sprintf
(
aprefix
,
"%s.[%u].%s"
,
GNB_CONFIG_STRING_GNB_LIST
,
i
,
GNB_CONFIG_STRING_SCTP_CONFIG
);
sprintf
(
aprefix
,
"%s.[%u].%s"
,
GNB_CONFIG_STRING_GNB_LIST
,
i
,
GNB_CONFIG_STRING_SCTP_CONFIG
);
...
@@ -1170,7 +1171,7 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
...
@@ -1170,7 +1171,7 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
rrc
->
sctp_out_streams
=
(
uint16_t
)
*
(
SCTPParams
[
GNB_SCTP_OUTSTREAMS_IDX
].
uptr
);
rrc
->
sctp_out_streams
=
(
uint16_t
)
*
(
SCTPParams
[
GNB_SCTP_OUTSTREAMS_IDX
].
uptr
);
}
}
rrc
->
node_type
=
node_type
;
rrc
->
nr_cellid
=
(
uint64_t
)
*
(
GNBParamList
.
paramarray
[
i
][
GNB_NRCELLID_IDX
].
u64ptr
);
rrc
->
nr_cellid
=
(
uint64_t
)
*
(
GNBParamList
.
paramarray
[
i
][
GNB_NRCELLID_IDX
].
u64ptr
);
...
@@ -2330,15 +2331,14 @@ static ngran_node_t get_node_type(void)
...
@@ -2330,15 +2331,14 @@ static ngran_node_t get_node_type(void)
}
}
}
}
if
((
strcmp
(
*
(
GNBParamList
.
paramarray
[
0
][
GNB_TRANSPORT_S_PREFERENCE_IDX
].
strptr
),
"f1"
)
==
0
)
&&
if
(
strcmp
(
*
(
GNBParamList
.
paramarray
[
0
][
GNB_TRANSPORT_S_PREFERENCE_IDX
].
strptr
),
"f1"
)
==
0
)
{
(
strcmp
(
*
(
GNBE1ParamList
.
paramarray
[
0
][
GNB_CONFIG_E1_CU_TYPE_IDX
].
strptr
),
"cp"
)
==
0
))
if
(
GNBE1ParamList
.
paramarray
==
NULL
||
GNBE1ParamList
.
numelt
==
0
)
return
ngran_gNB_CU
;
if
(
strcmp
(
*
(
GNBE1ParamList
.
paramarray
[
0
][
GNB_CONFIG_E1_CU_TYPE_IDX
].
strptr
),
"cp"
)
==
0
)
return
ngran_gNB_CUCP
;
return
ngran_gNB_CUCP
;
else
if
((
strcmp
(
*
(
GNBParamList
.
paramarray
[
0
][
GNB_TRANSPORT_S_PREFERENCE_IDX
].
strptr
),
"f1"
)
==
0
)
&&
if
(
strcmp
(
*
(
GNBE1ParamList
.
paramarray
[
0
][
GNB_CONFIG_E1_CU_TYPE_IDX
].
strptr
),
"up"
)
==
0
)
(
strcmp
(
*
(
GNBE1ParamList
.
paramarray
[
0
][
GNB_CONFIG_E1_CU_TYPE_IDX
].
strptr
),
"up"
)
==
0
))
return
ngran_gNB_CUUP
;
return
ngran_gNB_CUUP
;
else
if
(
strcmp
(
*
(
GNBParamList
.
paramarray
[
0
][
GNB_TRANSPORT_S_PREFERENCE_IDX
].
strptr
),
"f1"
)
==
0
)
}
else
if
(
macrlc_has_f1
==
0
)
return
ngran_gNB_CU
;
else
if
(
macrlc_has_f1
==
0
)
return
ngran_gNB
;
return
ngran_gNB
;
else
else
return
ngran_gNB_DU
;
return
ngran_gNB_DU
;
...
@@ -2373,7 +2373,7 @@ void nr_read_config_and_init(void) {
...
@@ -2373,7 +2373,7 @@ void nr_read_config_and_init(void) {
RCconfig_NRRRC
(
msg_p
,
gnb_id
,
RC
.
nrrrc
[
gnb_id
]);
RCconfig_NRRRC
(
msg_p
,
gnb_id
,
RC
.
nrrrc
[
gnb_id
]);
}
}
if
(
NODE_IS_CU
(
RC
.
nrrrc
[
0
]
->
node_type
))
{
if
(
NODE_IS_CU
(
RC
.
nrrrc
[
0
]
->
node_type
)
&&
RC
.
nrrrc
[
0
]
->
node_type
!=
ngran_gNB_CUCP
)
{
pdcp_layer_init
();
pdcp_layer_init
();
// nr_DRB_preconfiguration(0x1234);
// nr_DRB_preconfiguration(0x1234);
rrc_init_nr_global_param
();
rrc_init_nr_global_param
();
...
...
openair2/GNB_APP/gnb_config.h
View file @
d092788a
...
@@ -108,7 +108,7 @@ int RCconfig_NR_DU_F1(MessageDef *msg_p, uint32_t i);
...
@@ -108,7 +108,7 @@ int RCconfig_NR_DU_F1(MessageDef *msg_p, uint32_t i);
int
gNB_app_handle_f1ap_setup_resp
(
f1ap_setup_resp_t
*
resp
);
int
gNB_app_handle_f1ap_setup_resp
(
f1ap_setup_resp_t
*
resp
);
int
gNB_app_handle_f1ap_gnb_cu_configuration_update
(
f1ap_gnb_cu_configuration_update_t
*
gnb_cu_cfg_update
);
int
gNB_app_handle_f1ap_gnb_cu_configuration_update
(
f1ap_gnb_cu_configuration_update_t
*
gnb_cu_cfg_update
);
void
nr_read_config_and_init
(
void
);
void
nr_read_config_and_init
(
void
);
void
set_node_type
(
void
);
ngran_node_t
set_node_type
(
void
);
int
RCconfig_NR_CU_E1
(
MessageDef
*
msg_p
,
uint32_t
i
);
int
RCconfig_NR_CU_E1
(
MessageDef
*
msg_p
,
uint32_t
i
);
#endif
/* GNB_CONFIG_H_ */
#endif
/* GNB_CONFIG_H_ */
...
...
openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
View file @
d092788a
...
@@ -54,7 +54,6 @@ static int nr_pdcp_current_time_last_subframe;
...
@@ -54,7 +54,6 @@ static int nr_pdcp_current_time_last_subframe;
hash_table_t
*
pdcp_coll_p
;
hash_table_t
*
pdcp_coll_p
;
static
uint64_t
pdcp_optmask
;
static
uint64_t
pdcp_optmask
;
ngran_node_t
node_type
=
ngran_gNB
;
uint8_t
first_dcch
=
0
;
uint8_t
first_dcch
=
0
;
uint8_t
proto_agent_flag
=
0
;
uint8_t
proto_agent_flag
=
0
;
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
d092788a
...
@@ -369,54 +369,10 @@ rrc_gNB_generate_RRCSetup(
...
@@ -369,54 +369,10 @@ rrc_gNB_generate_RRCSetup(
ue_p
->
Srb0
.
Tx_buffer
.
payload_size
,
ue_p
->
Srb0
.
Tx_buffer
.
payload_size
,
"[MSG] RRC Setup
\n
"
);
"[MSG] RRC Setup
\n
"
);
<<<<<<<
HEAD
// activate release timer, if RRCSetupComplete not received after 100 frames, remove UE
// activate release timer, if RRCSetupComplete not received after 100 frames, remove UE
ue_context_pP
->
ue_context
.
ue_release_timer
=
1
;
ue_context_pP
->
ue_context
.
ue_release_timer
=
1
;
// remove UE after 10 frames after RRCConnectionRelease is triggered
// remove UE after 10 frames after RRCConnectionRelease is triggered
ue_context_pP
->
ue_context
.
ue_release_timer_thres
=
1000
;
ue_context_pP
->
ue_context
.
ue_release_timer_thres
=
1000
;
=======
switch
(
rrc
->
node_type
)
{
case
ngran_gNB_CU
:
// create an ITTI message
/* TODO: F1 IDs ar missing in RRC */
nr_rrc_pdcp_config_asn1_req
(
ctxt_pP
,
ue_context_pP
->
ue_context
.
SRB_configList
,
NULL
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
);
message_p
=
itti_alloc_new_message
(
TASK_RRC_GNB
,
0
,
F1AP_DL_RRC_MESSAGE
);
F1AP_DL_RRC_MESSAGE
(
message_p
).
rrc_container
=
(
uint8_t
*
)
ue_p
->
Srb0
.
Tx_buffer
.
Payload
;
F1AP_DL_RRC_MESSAGE
(
message_p
).
rrc_container_length
=
ue_p
->
Srb0
.
Tx_buffer
.
payload_size
;
F1AP_DL_RRC_MESSAGE
(
message_p
).
gNB_CU_ue_id
=
0
;
F1AP_DL_RRC_MESSAGE
(
message_p
).
gNB_DU_ue_id
=
0
;
F1AP_DL_RRC_MESSAGE
(
message_p
).
old_gNB_DU_ue_id
=
0xFFFFFFFF
;
// unknown
F1AP_DL_RRC_MESSAGE
(
message_p
).
rnti
=
ue_p
->
rnti
;
F1AP_DL_RRC_MESSAGE
(
message_p
).
srb_id
=
CCCH
;
F1AP_DL_RRC_MESSAGE
(
message_p
).
execute_duplication
=
1
;
F1AP_DL_RRC_MESSAGE
(
message_p
).
RAT_frequency_priority_information
.
en_dc
=
0
;
itti_send_msg_to_task
(
TASK_CU_F1
,
ctxt_pP
->
module_id
,
message_p
);
LOG_D
(
NR_RRC
,
"Send F1AP_DL_RRC_MESSAGE with ITTI
\n
"
);
break
;
case
ngran_gNB_DU
:
case
ngran_gNB_CUCP
:
case
ngran_gNB_CUUP
:
// nothing to do for DU
AssertFatal
(
1
==
0
,
"nothing to do for DU
\n
"
);
break
;
case
ngran_gNB
:
{
// rrc_mac_config_req_gNB
>>>>>>>
build
,
run
in
F1
mode
until
UE
connect
but
pdu
session
still
fails
/* TODO: this should go through the E1 interface */
/* TODO: this should go through the E1 interface */
apply_pdcp_config
(
ue_context_pP
,
ctxt_pP
);
apply_pdcp_config
(
ue_context_pP
,
ctxt_pP
);
...
...
openair2/RRC/NR/rrc_gNB_NGAP.c
View file @
d092788a
This diff is collapsed.
Click to expand it.
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