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
8b0ad24d
Commit
8b0ad24d
authored
Mar 10, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/f1ap-minor-fixes' into integration_2023_w10b
parents
a6bd14c2
742800b8
Changes
34
Hide whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
304 additions
and
424 deletions
+304
-424
ci-scripts/conf_files/gNB_SA_CU.conf
ci-scripts/conf_files/gNB_SA_CU.conf
+1
-1
ci-scripts/conf_files/gNB_SA_DU.conf
ci-scripts/conf_files/gNB_SA_DU.conf
+1
-1
ci-scripts/conf_files/gNB_SA_n78_106PRB.2x2_usrpn310.conf
ci-scripts/conf_files/gNB_SA_n78_106PRB.2x2_usrpn310.conf
+1
-1
ci-scripts/conf_files/gNB_SA_n78_133PRB.2x2_usrpn310.conf
ci-scripts/conf_files/gNB_SA_n78_133PRB.2x2_usrpn310.conf
+1
-1
ci-scripts/conf_files/gnb-cucp.sa.f1.conf
ci-scripts/conf_files/gnb-cucp.sa.f1.conf
+1
-1
ci-scripts/conf_files/gnb-cuup.sa.f1.conf
ci-scripts/conf_files/gnb-cuup.sa.f1.conf
+1
-1
ci-scripts/conf_files/gnb-du.band78.106prb.rfsim.conf
ci-scripts/conf_files/gnb-du.band78.106prb.rfsim.conf
+1
-1
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.asue.conf
...onf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.asue.conf
+1
-1
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.conf
...pts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.conf
+1
-1
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.ddsuu.2x2.usrpn310.conf
...nf_files/gnb.band78.sa.fr1.106PRB.ddsuu.2x2.usrpn310.conf
+1
-1
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.usrpn310.conf
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.usrpn310.conf
+1
-1
ci-scripts/conf_files/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf
...pts/conf_files/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf
+1
-1
ci-scripts/conf_files/gnb.sa.band66.u0.25prb.rfsim.conf
ci-scripts/conf_files/gnb.sa.band66.u0.25prb.rfsim.conf
+1
-1
ci-scripts/conf_files/gnb.sa.band78.106prb.rfsim.2x2.conf
ci-scripts/conf_files/gnb.sa.band78.106prb.rfsim.2x2.conf
+1
-1
ci-scripts/conf_files/gnb.sa.band78.fr1.51PRB.usrpb210.conf
ci-scripts/conf_files/gnb.sa.band78.fr1.51PRB.usrpb210.conf
+1
-1
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+4
-4
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+3
-3
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
+3
-4
openair2/F1AP/f1ap_cu_task.c
openair2/F1AP/f1ap_cu_task.c
+1
-1
openair2/F1AP/f1ap_decoder.c
openair2/F1AP/f1ap_decoder.c
+16
-18
openair2/F1AP/f1ap_du_rrc_message_transfer.c
openair2/F1AP/f1ap_du_rrc_message_transfer.c
+9
-14
openair2/F1AP/f1ap_du_task.c
openair2/F1AP/f1ap_du_task.c
+1
-1
openair2/F1AP/f1ap_handlers.c
openair2/F1AP/f1ap_handlers.c
+1
-1
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+0
-24
openair2/LAYER2/NR_MAC_gNB/config.c
openair2/LAYER2/NR_MAC_gNB/config.c
+192
-181
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+5
-5
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+1
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+1
-1
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+15
-18
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
+4
-16
openair2/LAYER2/NR_MAC_gNB/main.c
openair2/LAYER2/NR_MAC_gNB/main.c
+2
-2
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+25
-91
openair2/RRC/NR/rrc_gNB_NGAP.c
openair2/RRC/NR/rrc_gNB_NGAP.c
+0
-1
openair2/RRC/NR/rrc_gNB_nsa.c
openair2/RRC/NR/rrc_gNB_nsa.c
+6
-23
No files found.
ci-scripts/conf_files/gNB_SA_CU.conf
View file @
8b0ad24d
...
@@ -213,7 +213,7 @@ security = {
...
@@ -213,7 +213,7 @@ security = {
rlc_log_level
=
"debug"
;
rlc_log_level
=
"debug"
;
pdcp_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
rrc_log_level
=
"info"
;
f1ap_log_level
=
"
debug
"
;
f1ap_log_level
=
"
info
"
;
ngap_log_level
=
"debug"
;
ngap_log_level
=
"debug"
;
};
};
ci-scripts/conf_files/gNB_SA_DU.conf
View file @
8b0ad24d
...
@@ -233,7 +233,7 @@ serveraddr = "server";
...
@@ -233,7 +233,7 @@ serveraddr = "server";
rlc_log_level
=
"info"
;
rlc_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
rrc_log_level
=
"info"
;
f1ap_log_level
=
"
debug
"
;
f1ap_log_level
=
"
info
"
;
ngap_log_level
=
"debug"
;
ngap_log_level
=
"debug"
;
};
};
ci-scripts/conf_files/gNB_SA_n78_106PRB.2x2_usrpn310.conf
View file @
8b0ad24d
...
@@ -274,5 +274,5 @@ security = {
...
@@ -274,5 +274,5 @@ security = {
rlc_log_level
=
"info"
;
rlc_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
rrc_log_level
=
"info"
;
f1ap_log_level
=
"debug
"
;
f1ap_log_level
=
"info
"
;
};
};
ci-scripts/conf_files/gNB_SA_n78_133PRB.2x2_usrpn310.conf
View file @
8b0ad24d
...
@@ -270,5 +270,5 @@ security = {
...
@@ -270,5 +270,5 @@ security = {
rlc_log_level
=
"info"
;
rlc_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
rrc_log_level
=
"info"
;
f1ap_log_level
=
"
debug
"
;
f1ap_log_level
=
"
info
"
;
};
};
ci-scripts/conf_files/gnb-cucp.sa.f1.conf
View file @
8b0ad24d
...
@@ -222,7 +222,7 @@ security = {
...
@@ -222,7 +222,7 @@ security = {
rlc_log_level
=
"debug"
;
rlc_log_level
=
"debug"
;
pdcp_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
rrc_log_level
=
"info"
;
f1ap_log_level
=
"
debug
"
;
f1ap_log_level
=
"
info
"
;
ngap_log_level
=
"debug"
;
ngap_log_level
=
"debug"
;
};
};
ci-scripts/conf_files/gnb-cuup.sa.f1.conf
View file @
8b0ad24d
...
@@ -81,7 +81,7 @@ security = {
...
@@ -81,7 +81,7 @@ security = {
rlc_log_level
=
"debug"
;
rlc_log_level
=
"debug"
;
pdcp_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
rrc_log_level
=
"info"
;
f1ap_log_level
=
"
debug
"
;
f1ap_log_level
=
"
info
"
;
ngap_log_level
=
"debug"
;
ngap_log_level
=
"debug"
;
};
};
ci-scripts/conf_files/gnb-du.band78.106prb.rfsim.conf
View file @
8b0ad24d
...
@@ -233,6 +233,6 @@ log_config :
...
@@ -233,6 +233,6 @@ log_config :
rlc_log_level
=
"info"
;
rlc_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
rrc_log_level
=
"info"
;
f1ap_log_level
=
"
debug
"
;
f1ap_log_level
=
"
info
"
;
ngap_log_level
=
"debug"
;
ngap_log_level
=
"debug"
;
};
};
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.asue.conf
View file @
8b0ad24d
...
@@ -278,5 +278,5 @@ security = {
...
@@ -278,5 +278,5 @@ security = {
rlc_log_level
=
"info"
;
rlc_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
rrc_log_level
=
"info"
;
f1ap_log_level
=
"debug
"
;
f1ap_log_level
=
"info
"
;
};
};
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.conf
View file @
8b0ad24d
...
@@ -276,5 +276,5 @@ security = {
...
@@ -276,5 +276,5 @@ security = {
rlc_log_level
=
"info"
;
rlc_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
rrc_log_level
=
"info"
;
f1ap_log_level
=
"
debug
"
;
f1ap_log_level
=
"
info
"
;
};
};
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.ddsuu.2x2.usrpn310.conf
View file @
8b0ad24d
...
@@ -277,5 +277,5 @@ security = {
...
@@ -277,5 +277,5 @@ security = {
rlc_log_level
=
"info"
;
rlc_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
rrc_log_level
=
"info"
;
f1ap_log_level
=
"
debug
"
;
f1ap_log_level
=
"
info
"
;
};
};
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.usrpn310.conf
View file @
8b0ad24d
...
@@ -280,5 +280,5 @@ security = {
...
@@ -280,5 +280,5 @@ security = {
rlc_log_level
=
"info"
;
rlc_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
rrc_log_level
=
"info"
;
f1ap_log_level
=
"
debug
"
;
f1ap_log_level
=
"
info
"
;
};
};
ci-scripts/conf_files/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf
View file @
8b0ad24d
...
@@ -279,5 +279,5 @@ security = {
...
@@ -279,5 +279,5 @@ security = {
rlc_log_level
=
"info"
;
rlc_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
rrc_log_level
=
"info"
;
f1ap_log_level
=
"debug
"
;
f1ap_log_level
=
"info
"
;
};
};
ci-scripts/conf_files/gnb.sa.band66.u0.25prb.rfsim.conf
View file @
8b0ad24d
...
@@ -280,5 +280,5 @@ log_config :
...
@@ -280,5 +280,5 @@ log_config :
pdcp_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
rrc_log_level
=
"info"
;
ngap_log_level
=
"debug"
;
ngap_log_level
=
"debug"
;
f1ap_log_level
=
"
debug
"
;
f1ap_log_level
=
"
info
"
;
};
};
ci-scripts/conf_files/gnb.sa.band78.106prb.rfsim.2x2.conf
View file @
8b0ad24d
...
@@ -331,5 +331,5 @@ log_config :
...
@@ -331,5 +331,5 @@ log_config :
pdcp_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
rrc_log_level
=
"info"
;
ngap_log_level
=
"debug"
;
ngap_log_level
=
"debug"
;
f1ap_log_level
=
"
debug
"
;
f1ap_log_level
=
"
info
"
;
};
};
ci-scripts/conf_files/gnb.sa.band78.fr1.51PRB.usrpb210.conf
View file @
8b0ad24d
...
@@ -262,6 +262,6 @@ log_config :
...
@@ -262,6 +262,6 @@ log_config :
pdcp_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
rrc_log_level
=
"info"
;
ngap_log_level
=
"debug"
;
ngap_log_level
=
"debug"
;
f1ap_log_level
=
"
debug
"
;
f1ap_log_level
=
"
info
"
;
};
};
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
8b0ad24d
...
@@ -720,11 +720,11 @@ int main(int argc, char **argv)
...
@@ -720,11 +720,11 @@ int main(int argc, char **argv)
gNB
->
if_inst
->
NR_PHY_config_req
=
nr_phy_config_request
;
gNB
->
if_inst
->
NR_PHY_config_req
=
nr_phy_config_request
;
// common configuration
// common configuration
rrc_mac_config_req_gNB
(
0
,
pdsch_AntennaPorts
,
n_tx
,
0
,
6
,
scc
,
NULL
,
NULL
,
0
,
0
,
NULL
);
nr_mac_config_scc
(
RC
.
nrmac
[
0
],
pdsch_AntennaPorts
,
n_tx
,
0
,
6
,
scc
);
// UE dedicated configuration
// UE dedicated configuration
rrc_mac_config_req_gNB
(
0
,
pdsch_AntennaPorts
,
n_tx
,
0
,
6
,
scc
,
NULL
,
NULL
,
1
,
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
newUE_Identity
,
secondaryCellGroup
);
nr_mac_add_test_ue
(
RC
.
nrmac
[
0
],
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
newUE_Identity
,
secondaryCellGroup
);
// reset preprocessor to the one of DLSIM after it has been set during
// reset preprocessor to the one of DLSIM after it has been set during
//
rrc_mac_config_req_gNB
//
nr_mac_config_scc()
gNB_mac
->
pre_processor_dl
=
nr_dlsim_preprocessor
;
gNB_mac
->
pre_processor_dl
=
nr_dlsim_preprocessor
;
phy_init_nr_gNB
(
gNB
);
phy_init_nr_gNB
(
gNB
);
N_RB_DL
=
gNB
->
frame_parms
.
N_RB_DL
;
N_RB_DL
=
gNB
->
frame_parms
.
N_RB_DL
;
...
@@ -736,7 +736,7 @@ int main(int argc, char **argv)
...
@@ -736,7 +736,7 @@ int main(int argc, char **argv)
// nr_phy_config_request_sim(gNB,N_RB_DL,N_RB_DL,mu,Nid_cell,SSB_positions);
// nr_phy_config_request_sim(gNB,N_RB_DL,N_RB_DL,mu,Nid_cell,SSB_positions);
// call MAC to configure common parameters
// call MAC to configure common parameters
/*
rrc_mac_config_req_gNB
() has created one user, so set the scheduling
/*
nr_mac_add_test_ue
() has created one user, so set the scheduling
* parameters from command line in global variables that will be picked up by
* parameters from command line in global variables that will be picked up by
* scheduling preprocessor */
* scheduling preprocessor */
if
(
g_mcsIndex
<
0
)
g_mcsIndex
=
9
;
if
(
g_mcsIndex
<
0
)
g_mcsIndex
=
9
;
...
...
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
8b0ad24d
...
@@ -654,10 +654,10 @@ int main(int argc, char **argv)
...
@@ -654,10 +654,10 @@ int main(int argc, char **argv)
gNB
->
if_inst
->
NR_PHY_config_req
=
nr_phy_config_request
;
gNB
->
if_inst
->
NR_PHY_config_req
=
nr_phy_config_request
;
// common configuration
// common configuration
rrc_mac_config_req_gNB
(
0
,
conf
.
pdsch_AntennaPorts
,
n_rx
,
0
,
6
,
scc
,
&
rrc
.
carrier
.
mib
,
rrc
.
carrier
.
siblock1
,
0
,
0
,
NULL
);
nr_mac_config_scc
(
RC
.
nrmac
[
0
],
conf
.
pdsch_AntennaPorts
,
n_tx
,
0
,
6
,
scc
);
nr_mac_config_mib
(
RC
.
nrmac
[
0
],
&
rrc
.
carrier
.
mib
);
// UE dedicated configuration
// UE dedicated configuration
rrc_mac_config_req_gNB
(
0
,
conf
.
pdsch_AntennaPorts
,
n_rx
,
0
,
6
,
scc
,
&
rrc
.
carrier
.
mib
,
rrc
.
carrier
.
siblock1
,
1
,
nr_mac_add_test_ue
(
RC
.
nrmac
[
0
],
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
newUE_Identity
,
secondaryCellGroup
);
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
newUE_Identity
,
secondaryCellGroup
);
frame_parms
->
nb_antennas_tx
=
1
;
frame_parms
->
nb_antennas_tx
=
1
;
frame_parms
->
nb_antennas_rx
=
n_rx
;
frame_parms
->
nb_antennas_rx
=
n_rx
;
nfapi_nr_config_request_scf_t
*
cfg
=
&
gNB
->
gNB_config
;
nfapi_nr_config_request_scf_t
*
cfg
=
&
gNB
->
gNB_config
;
...
...
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
View file @
8b0ad24d
...
@@ -163,7 +163,7 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
...
@@ -163,7 +163,7 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
ie1
->
criticality
=
F1AP_Criticality_reject
;
ie1
->
criticality
=
F1AP_Criticality_reject
;
ie1
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_GNB_CU_UE_F1AP_ID
;
ie1
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_GNB_CU_UE_F1AP_ID
;
ie1
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
f1ap_get_cu_ue_f1ap_id
(
CUtype
,
instance
,
f1ap_dl_rrc
->
rnti
);
ie1
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
f1ap_get_cu_ue_f1ap_id
(
CUtype
,
instance
,
f1ap_dl_rrc
->
rnti
);
LOG_
I
(
F1AP
,
"Setting GNB_CU_UE_F1AP_ID %llu associated with UE RNTI %x (instance %ld)
\n
"
,
LOG_
D
(
F1AP
,
"Setting GNB_CU_UE_F1AP_ID %llu associated with UE RNTI %x (instance %ld)
\n
"
,
(
unsigned
long
long
int
)
ie1
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
,
f1ap_dl_rrc
->
rnti
,
instance
);
(
unsigned
long
long
int
)
ie1
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
,
f1ap_dl_rrc
->
rnti
,
instance
);
/* mandatory */
/* mandatory */
/* c2. GNB_DU_UE_F1AP_ID */
/* c2. GNB_DU_UE_F1AP_ID */
...
@@ -172,7 +172,7 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
...
@@ -172,7 +172,7 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
ie2
->
criticality
=
F1AP_Criticality_reject
;
ie2
->
criticality
=
F1AP_Criticality_reject
;
ie2
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie2
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_get_du_ue_f1ap_id
(
CUtype
,
instance
,
f1ap_dl_rrc
->
rnti
);
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_get_du_ue_f1ap_id
(
CUtype
,
instance
,
f1ap_dl_rrc
->
rnti
);
LOG_
I
(
F1AP
,
"GNB_DU_UE_F1AP_ID %llu associated with UE RNTI %x
\n
"
,
(
unsigned
long
long
int
)
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
,
f1ap_dl_rrc
->
rnti
);
LOG_
D
(
F1AP
,
"GNB_DU_UE_F1AP_ID %llu associated with UE RNTI %x
\n
"
,
(
unsigned
long
long
int
)
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
,
f1ap_dl_rrc
->
rnti
);
/* optional */
/* optional */
/* c3. oldgNB_DU_UE_F1AP_ID */
/* c3. oldgNB_DU_UE_F1AP_ID */
/* if (f1ap_dl_rrc->old_gNB_DU_ue_id != 0xFFFFFFFF) {
/* if (f1ap_dl_rrc->old_gNB_DU_ue_id != 0xFFFFFFFF) {
...
@@ -300,8 +300,7 @@ int CU_handle_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
...
@@ -300,8 +300,7 @@ int CU_handle_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
ctxt
.
eNB_index
=
0
;
ctxt
.
eNB_index
=
0
;
mem_block_t
*
mb
=
get_free_mem_block
(
ie
->
value
.
choice
.
RRCContainer
.
size
,
__func__
);
mem_block_t
*
mb
=
get_free_mem_block
(
ie
->
value
.
choice
.
RRCContainer
.
size
,
__func__
);
memcpy
((
void
*
)
mb
->
data
,(
void
*
)
ie
->
value
.
choice
.
RRCContainer
.
buf
,
ie
->
value
.
choice
.
RRCContainer
.
size
);
memcpy
((
void
*
)
mb
->
data
,(
void
*
)
ie
->
value
.
choice
.
RRCContainer
.
buf
,
ie
->
value
.
choice
.
RRCContainer
.
size
);
LOG_I
(
F1AP
,
"Calling pdcp_data_ind for UE RNTI %lx srb_id %lu with size %ld (DCCH)
\n
"
,
ctxt
.
rntiMaybeUEid
,
srb_id
,
ie
->
value
.
choice
.
RRCContainer
.
size
);
LOG_D
(
F1AP
,
"Calling pdcp_data_ind for UE RNTI %lx srb_id %lu with size %ld (DCCH)
\n
"
,
ctxt
.
rntiMaybeUEid
,
srb_id
,
ie
->
value
.
choice
.
RRCContainer
.
size
);
//LOG_I(F1AP, "%s() RRCContainer size %lu: ", __func__, ie->value.choice.RRCContainer.size);
//for (int i = 0; i < ie->value.choice.RRCContainer.size; i++)
//for (int i = 0; i < ie->value.choice.RRCContainer.size; i++)
// printf("%02x ", mb->data[i]);
// printf("%02x ", mb->data[i]);
//printf("\n");
//printf("\n");
...
...
openair2/F1AP/f1ap_cu_task.c
View file @
8b0ad24d
...
@@ -129,7 +129,7 @@ void *F1AP_CU_task(void *arg) {
...
@@ -129,7 +129,7 @@ void *F1AP_CU_task(void *arg) {
while
(
1
)
{
while
(
1
)
{
itti_receive_msg
(
TASK_CU_F1
,
&
received_msg
);
itti_receive_msg
(
TASK_CU_F1
,
&
received_msg
);
LOG_
I
(
F1AP
,
"CU Task Received %s for instance %ld
\n
"
,
LOG_
D
(
F1AP
,
"CU Task Received %s for instance %ld
\n
"
,
ITTI_MSG_NAME
(
received_msg
),
ITTI_MSG_DESTINATION_INSTANCE
(
received_msg
));
ITTI_MSG_NAME
(
received_msg
),
ITTI_MSG_DESTINATION_INSTANCE
(
received_msg
));
switch
(
ITTI_MSG_ID
(
received_msg
))
{
switch
(
ITTI_MSG_ID
(
received_msg
))
{
case
SCTP_NEW_ASSOCIATION_IND
:
case
SCTP_NEW_ASSOCIATION_IND
:
...
...
openair2/F1AP/f1ap_decoder.c
View file @
8b0ad24d
...
@@ -44,47 +44,47 @@ static int f1ap_decode_initiating_message(F1AP_F1AP_PDU_t *pdu) {
...
@@ -44,47 +44,47 @@ static int f1ap_decode_initiating_message(F1AP_F1AP_PDU_t *pdu) {
switch
(
pdu
->
choice
.
initiatingMessage
->
procedureCode
)
{
switch
(
pdu
->
choice
.
initiatingMessage
->
procedureCode
)
{
case
F1AP_ProcedureCode_id_F1Setup
:
case
F1AP_ProcedureCode_id_F1Setup
:
//res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_F1AP_F1AP_PDU, pdu);
//res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_F1AP_F1AP_PDU, pdu);
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_F1Setup
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_F1Setup
\n
"
,
__func__
);
break
;
break
;
case
F1AP_ProcedureCode_id_gNBCUConfigurationUpdate
:
case
F1AP_ProcedureCode_id_gNBCUConfigurationUpdate
:
//res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_F1AP_F1AP_PDU, pdu);
//res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_F1AP_F1AP_PDU, pdu);
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_gNBCUConfigurationUpdate
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_gNBCUConfigurationUpdate
\n
"
,
__func__
);
break
;
break
;
case
F1AP_ProcedureCode_id_InitialULRRCMessageTransfer
:
case
F1AP_ProcedureCode_id_InitialULRRCMessageTransfer
:
//res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_F1AP_F1AP_PDU, pdu);
//res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_F1AP_F1AP_PDU, pdu);
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_InitialULRRCMessageTransfer
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_InitialULRRCMessageTransfer
\n
"
,
__func__
);
break
;
break
;
case
F1AP_ProcedureCode_id_DLRRCMessageTransfer
:
case
F1AP_ProcedureCode_id_DLRRCMessageTransfer
:
//res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_F1AP_F1AP_PDU, pdu);
//res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_F1AP_F1AP_PDU, pdu);
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_DLRRCMessageTransfer
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_DLRRCMessageTransfer
\n
"
,
__func__
);
break
;
break
;
case
F1AP_ProcedureCode_id_ULRRCMessageTransfer
:
case
F1AP_ProcedureCode_id_ULRRCMessageTransfer
:
//res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_F1AP_F1AP_PDU, pdu);
//res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_F1AP_F1AP_PDU, pdu);
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_ULRRCMessageTransfer
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_ULRRCMessageTransfer
\n
"
,
__func__
);
break
;
break
;
case
F1AP_ProcedureCode_id_UEContextRelease
:
case
F1AP_ProcedureCode_id_UEContextRelease
:
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextRelease
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextRelease
\n
"
,
__func__
);
break
;
break
;
case
F1AP_ProcedureCode_id_UEContextReleaseRequest
:
case
F1AP_ProcedureCode_id_UEContextReleaseRequest
:
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextReleaseRequest
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextReleaseRequest
\n
"
,
__func__
);
break
;
break
;
case
F1AP_ProcedureCode_id_UEContextSetup
:
case
F1AP_ProcedureCode_id_UEContextSetup
:
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextSetup
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextSetup
\n
"
,
__func__
);
break
;
break
;
case
F1AP_ProcedureCode_id_UEContextModification
:
case
F1AP_ProcedureCode_id_UEContextModification
:
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextModification
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextModification
\n
"
,
__func__
);
break
;
break
;
case
F1AP_ProcedureCode_id_Paging
:
case
F1AP_ProcedureCode_id_Paging
:
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_Paging
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_Paging
\n
"
,
__func__
);
break
;
break
;
// case F1AP_ProcedureCode_id_InitialContextSetup:
// case F1AP_ProcedureCode_id_InitialContextSetup:
...
@@ -116,23 +116,23 @@ static int f1ap_decode_successful_outcome(F1AP_F1AP_PDU_t *pdu) {
...
@@ -116,23 +116,23 @@ static int f1ap_decode_successful_outcome(F1AP_F1AP_PDU_t *pdu) {
switch
(
pdu
->
choice
.
successfulOutcome
->
procedureCode
)
{
switch
(
pdu
->
choice
.
successfulOutcome
->
procedureCode
)
{
case
F1AP_ProcedureCode_id_F1Setup
:
case
F1AP_ProcedureCode_id_F1Setup
:
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_F1Setup
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_F1Setup
\n
"
,
__func__
);
break
;
break
;
case
F1AP_ProcedureCode_id_gNBCUConfigurationUpdate
:
case
F1AP_ProcedureCode_id_gNBCUConfigurationUpdate
:
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_gNBCUConfigurationUpdate
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_gNBCUConfigurationUpdate
\n
"
,
__func__
);
break
;
break
;
case
F1AP_ProcedureCode_id_UEContextRelease
:
case
F1AP_ProcedureCode_id_UEContextRelease
:
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextRelease
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextRelease
\n
"
,
__func__
);
break
;
break
;
case
F1AP_ProcedureCode_id_UEContextSetup
:
case
F1AP_ProcedureCode_id_UEContextSetup
:
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextSetup
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextSetup
\n
"
,
__func__
);
break
;
break
;
case
F1AP_ProcedureCode_id_UEContextModification
:
case
F1AP_ProcedureCode_id_UEContextModification
:
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextModification
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextModification
\n
"
,
__func__
);
break
;
break
;
default:
default:
...
@@ -149,7 +149,7 @@ static int f1ap_decode_unsuccessful_outcome(F1AP_F1AP_PDU_t *pdu) {
...
@@ -149,7 +149,7 @@ static int f1ap_decode_unsuccessful_outcome(F1AP_F1AP_PDU_t *pdu) {
switch
(
pdu
->
choice
.
unsuccessfulOutcome
->
procedureCode
)
{
switch
(
pdu
->
choice
.
unsuccessfulOutcome
->
procedureCode
)
{
case
F1AP_ProcedureCode_id_F1Setup
:
case
F1AP_ProcedureCode_id_F1Setup
:
LOG_
I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_F1Setup
\n
"
,
__func__
);
LOG_
D
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_F1Setup
\n
"
,
__func__
);
break
;
break
;
default:
default:
...
@@ -181,8 +181,6 @@ int f1ap_decode_pdu(F1AP_F1AP_PDU_t *pdu, const uint8_t *const buffer, uint32_t
...
@@ -181,8 +181,6 @@ int f1ap_decode_pdu(F1AP_F1AP_PDU_t *pdu, const uint8_t *const buffer, uint32_t
LOG_E
(
F1AP
,
"----------------- ASN1 DECODER PRINT END -----------------
\n
"
);
LOG_E
(
F1AP
,
"----------------- ASN1 DECODER PRINT END -----------------
\n
"
);
}
}
//LOG_I(F1AP, "f1ap_decode_pdu.dec_ret.code = %d\n", dec_ret.code);
if
(
dec_ret
.
code
!=
RC_OK
)
{
if
(
dec_ret
.
code
!=
RC_OK
)
{
AssertFatal
(
1
==
0
,
"Failed to decode pdu
\n
"
);
AssertFatal
(
1
==
0
,
"Failed to decode pdu
\n
"
);
return
-
1
;
return
-
1
;
...
...
openair2/F1AP/f1ap_du_rrc_message_transfer.c
View file @
8b0ad24d
...
@@ -169,9 +169,8 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
...
@@ -169,9 +169,8 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
F1AP_ULRRCMessageTransferIEs_t
*
ie
;
F1AP_ULRRCMessageTransferIEs_t
*
ie
;
uint8_t
*
buffer
=
NULL
;
uint8_t
*
buffer
=
NULL
;
uint32_t
len
;
uint32_t
len
;
LOG_
I
(
F1AP
,
"[DU %ld] %s: size %d UE RNTI %x in SRB %d
\n
"
,
LOG_
D
(
F1AP
,
"[DU %ld] %s: size %d UE RNTI %x in SRB %d
\n
"
,
instance
,
__func__
,
msg
->
rrc_container_length
,
rnti
,
msg
->
srb_id
);
instance
,
__func__
,
msg
->
rrc_container_length
,
rnti
,
msg
->
srb_id
);
//LOG_I(F1AP, "%s() RRCContainer size %d: ", __func__, msg->rrc_container_length);
//for (int i = 0;i < msg->rrc_container_length; i++)
//for (int i = 0;i < msg->rrc_container_length; i++)
// printf("%02x ", msg->rrc_container[i]);
// printf("%02x ", msg->rrc_container[i]);
//printf("\n");
//printf("\n");
...
@@ -232,9 +231,6 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
...
@@ -232,9 +231,6 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
if
((
dec_rval
.
code
!=
RC_OK
)
&&
(
dec_rval
.
consumed
==
0
))
if
((
dec_rval
.
code
!=
RC_OK
)
&&
(
dec_rval
.
consumed
==
0
))
LOG_E
(
F1AP
,
" Failed to decode UL-DCCH (%zu bytes)
\n
"
,
dec_rval
.
consumed
);
LOG_E
(
F1AP
,
" Failed to decode UL-DCCH (%zu bytes)
\n
"
,
dec_rval
.
consumed
);
else
LOG_I
(
F1AP
,
"Received message: present %d and c1 present %d
\n
"
,
ul_dcch_msg
->
message
.
present
,
ul_dcch_msg
->
message
.
choice
.
c1
.
present
);
if
(
ul_dcch_msg
->
message
.
present
==
LTE_UL_DCCH_MessageType_PR_c1
)
{
if
(
ul_dcch_msg
->
message
.
present
==
LTE_UL_DCCH_MessageType_PR_c1
)
{
switch
(
ul_dcch_msg
->
message
.
choice
.
c1
.
present
)
{
switch
(
ul_dcch_msg
->
message
.
choice
.
c1
.
present
)
{
...
@@ -248,7 +244,7 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
...
@@ -248,7 +244,7 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
break
;
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_rrcConnectionReconfigurationComplete
:
case
LTE_UL_DCCH_MessageType__c1_PR_rrcConnectionReconfigurationComplete
:
LOG_
I
(
F1AP
,
"[MSG] RRC UL rrcConnectionReconfigurationComplete
\n
"
);
LOG_
D
(
F1AP
,
"[MSG] RRC UL rrcConnectionReconfigurationComplete
\n
"
);
/* CDRX: activated when RRC Connection Reconfiguration Complete is received */
/* CDRX: activated when RRC Connection Reconfiguration Complete is received */
int
UE_id_mac
=
find_UE_id
(
instance
,
rnti
);
int
UE_id_mac
=
find_UE_id
(
instance
,
rnti
);
...
@@ -262,7 +258,7 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
...
@@ -262,7 +258,7 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
if
(
UE_scheduling_control
->
cdrx_waiting_ack
==
true
)
{
if
(
UE_scheduling_control
->
cdrx_waiting_ack
==
true
)
{
UE_scheduling_control
->
cdrx_waiting_ack
=
false
;
UE_scheduling_control
->
cdrx_waiting_ack
=
false
;
UE_scheduling_control
->
cdrx_configured
=
true
;
// Set to TRUE when RRC Connection Reconfiguration Complete is received
UE_scheduling_control
->
cdrx_configured
=
true
;
// Set to TRUE when RRC Connection Reconfiguration Complete is received
LOG_
I
(
F1AP
,
"CDRX configuration activated after RRC Connection Reconfiguration Complete reception
\n
"
);
LOG_
D
(
F1AP
,
"CDRX configuration activated after RRC Connection Reconfiguration Complete reception
\n
"
);
}
}
/* End of CDRX processing */
/* End of CDRX processing */
...
@@ -272,33 +268,33 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
...
@@ -272,33 +268,33 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
break
;
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_rrcConnectionSetupComplete
:
case
LTE_UL_DCCH_MessageType__c1_PR_rrcConnectionSetupComplete
:
LOG_
I
(
F1AP
,
"[MSG] RRC UL rrcConnectionSetupComplete
\n
"
);
LOG_
D
(
F1AP
,
"[MSG] RRC UL rrcConnectionSetupComplete
\n
"
);
if
(
!
ue_context_p
)
{
if
(
!
ue_context_p
)
{
LOG_E
(
F1AP
,
"Did not find the UE context associated with UE RNTOI %x, ue_context_p is NULL
\n
"
,
rnti
);
LOG_E
(
F1AP
,
"Did not find the UE context associated with UE RNTOI %x, ue_context_p is NULL
\n
"
,
rnti
);
}
else
{
}
else
{
LOG_
I
(
F1AP
,
"Processing RRCConnectionSetupComplete UE %x
\n
"
,
rnti
);
LOG_
D
(
F1AP
,
"Processing RRCConnectionSetupComplete UE %x
\n
"
,
rnti
);
ue_context_p
->
ue_context
.
StatusRrc
=
RRC_CONNECTED
;
ue_context_p
->
ue_context
.
StatusRrc
=
RRC_CONNECTED
;
}
}
break
;
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_securityModeComplete
:
case
LTE_UL_DCCH_MessageType__c1_PR_securityModeComplete
:
LOG_
I
(
F1AP
,
"[MSG] RRC securityModeComplete
\n
"
);
LOG_
D
(
F1AP
,
"[MSG] RRC securityModeComplete
\n
"
);
break
;
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_securityModeFailure
:
case
LTE_UL_DCCH_MessageType__c1_PR_securityModeFailure
:
break
;
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_ueCapabilityInformation
:
case
LTE_UL_DCCH_MessageType__c1_PR_ueCapabilityInformation
:
LOG_
I
(
F1AP
,
"[MSG] RRC ueCapabilityInformation
\n
"
);
LOG_
D
(
F1AP
,
"[MSG] RRC ueCapabilityInformation
\n
"
);
break
;
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_ulHandoverPreparationTransfer
:
case
LTE_UL_DCCH_MessageType__c1_PR_ulHandoverPreparationTransfer
:
break
;
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_ulInformationTransfer
:
case
LTE_UL_DCCH_MessageType__c1_PR_ulInformationTransfer
:
LOG_
I
(
F1AP
,
"[MSG] RRC UL Information Transfer
\n
"
);
LOG_
D
(
F1AP
,
"[MSG] RRC UL Information Transfer
\n
"
);
break
;
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_counterCheckResponse
:
case
LTE_UL_DCCH_MessageType__c1_PR_counterCheckResponse
:
...
@@ -428,9 +424,8 @@ int DU_send_UL_NR_RRC_MESSAGE_TRANSFER(instance_t instance,
...
@@ -428,9 +424,8 @@ int DU_send_UL_NR_RRC_MESSAGE_TRANSFER(instance_t instance,
F1AP_ULRRCMessageTransfer_t
*
out
;
F1AP_ULRRCMessageTransfer_t
*
out
;
uint8_t
*
buffer
=
NULL
;
uint8_t
*
buffer
=
NULL
;
uint32_t
len
;
uint32_t
len
;
LOG_
I
(
F1AP
,
"[DU %ld] %s: size %d UE RNTI %x in SRB %d
\n
"
,
LOG_
D
(
F1AP
,
"[DU %ld] %s: size %d UE RNTI %x in SRB %d
\n
"
,
instance
,
__func__
,
msg
->
rrc_container_length
,
rnti
,
msg
->
srb_id
);
instance
,
__func__
,
msg
->
rrc_container_length
,
rnti
,
msg
->
srb_id
);
//LOG_I(F1AP, "%s() RRCContainer size %d: ", __func__, msg->rrc_container_length);
//for (int i = 0;i < msg->rrc_container_length; i++)
//for (int i = 0;i < msg->rrc_container_length; i++)
// printf("%02x ", msg->rrc_container[i]);
// printf("%02x ", msg->rrc_container[i]);
//printf("\n");
//printf("\n");
...
...
openair2/F1AP/f1ap_du_task.c
View file @
8b0ad24d
...
@@ -107,7 +107,7 @@ void *F1AP_DU_task(void *arg) {
...
@@ -107,7 +107,7 @@ void *F1AP_DU_task(void *arg) {
MessageDef
*
msg
=
NULL
;
MessageDef
*
msg
=
NULL
;
itti_receive_msg
(
TASK_DU_F1
,
&
msg
);
itti_receive_msg
(
TASK_DU_F1
,
&
msg
);
instance_t
myInstance
=
ITTI_MSG_DESTINATION_INSTANCE
(
msg
);
instance_t
myInstance
=
ITTI_MSG_DESTINATION_INSTANCE
(
msg
);
LOG_
I
(
F1AP
,
"DU Task Received %s for instance %ld
\n
"
,
LOG_
D
(
F1AP
,
"DU Task Received %s for instance %ld
\n
"
,
ITTI_MSG_NAME
(
msg
),
myInstance
);
ITTI_MSG_NAME
(
msg
),
myInstance
);
switch
(
ITTI_MSG_ID
(
msg
))
{
switch
(
ITTI_MSG_ID
(
msg
))
{
case
F1AP_SETUP_REQ
:
{
case
F1AP_SETUP_REQ
:
{
...
...
openair2/F1AP/f1ap_handlers.c
View file @
8b0ad24d
...
@@ -110,7 +110,7 @@ int f1ap_handle_message(instance_t instance, uint32_t assoc_id, int32_t stream,
...
@@ -110,7 +110,7 @@ int f1ap_handle_message(instance_t instance, uint32_t assoc_id, int32_t stream,
ret
=-
1
;
ret
=-
1
;
}
else
{
}
else
{
/* Calling the right handler */
/* Calling the right handler */
LOG_
I
(
F1AP
,
"Calling handler with instance %ld
\n
"
,
instance
);
LOG_
D
(
F1AP
,
"Calling handler with instance %ld
\n
"
,
instance
);
ret
=
(
*
f1ap_messages_processing
[
pdu
.
choice
.
initiatingMessage
->
procedureCode
][
pdu
.
present
-
1
])
ret
=
(
*
f1ap_messages_processing
[
pdu
.
choice
.
initiatingMessage
->
procedureCode
][
pdu
.
present
-
1
])
(
instance
,
assoc_id
,
stream
,
&
pdu
);
(
instance
,
assoc_id
,
stream
,
&
pdu
);
}
}
...
...
openair2/GNB_APP/gnb_config.c
View file @
8b0ad24d
...
@@ -2084,24 +2084,6 @@ void du_extract_and_decode_SI(int inst, int si_ind, uint8_t *si_container, int s
...
@@ -2084,24 +2084,6 @@ void du_extract_and_decode_SI(int inst, int si_ind, uint8_t *si_container, int s
}
else
AssertFatal
(
1
==
0
,
"No SI messages
\n
"
);
}
else
AssertFatal
(
1
==
0
,
"No SI messages
\n
"
);
}
}
void
configure_gnb_du_mac
(
int
inst
)
{
gNB_RRC_INST
*
rrc
=
RC
.
nrrrc
[
inst
];
// LOG_I(GNB_APP,"Configuring MAC/L1 %d, carrier->sib2 %p\n", inst, &carrier->sib2->radioResourceConfigCommon);
LOG_I
(
GNB_APP
,
"Configuring gNB DU MAC/L1 %d
\n
"
,
inst
);
rrc_mac_config_req_gNB
(
rrc
->
module_id
,
rrc
->
configuration
.
pdsch_AntennaPorts
,
rrc
->
configuration
.
pusch_AntennaPorts
,
rrc
->
configuration
.
sib1_tda
,
rrc
->
configuration
.
minRXTXTIME
,
rrc
->
configuration
.
scc
,
NULL
,
NULL
,
0
,
0
,
// rnti
NULL
);
}
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
i
,
j
,
si_ind
;
int
i
,
j
,
si_ind
;
int
ret
=
0
;
int
ret
=
0
;
...
@@ -2126,9 +2108,6 @@ int gNB_app_handle_f1ap_setup_resp(f1ap_setup_resp_t *resp) {
...
@@ -2126,9 +2108,6 @@ int gNB_app_handle_f1ap_setup_resp(f1ap_setup_resp_t *resp) {
resp
->
cells_to_activate
[
j
].
SI_container
[
si_ind
],
resp
->
cells_to_activate
[
j
].
SI_container
[
si_ind
],
resp
->
cells_to_activate
[
j
].
SI_container_length
[
si_ind
]);
resp
->
cells_to_activate
[
j
].
SI_container_length
[
si_ind
]);
}
}
// perform MAC/L1 common configuration
configure_gnb_du_mac
(
i
);
ret
++
;
ret
++
;
}
else
{
}
else
{
LOG_E
(
GNB_APP
,
"F1 Setup Response not matching
\n
"
);
LOG_E
(
GNB_APP
,
"F1 Setup Response not matching
\n
"
);
...
@@ -2161,9 +2140,6 @@ int gNB_app_handle_f1ap_gnb_cu_configuration_update(f1ap_gnb_cu_configuration_up
...
@@ -2161,9 +2140,6 @@ int gNB_app_handle_f1ap_gnb_cu_configuration_update(f1ap_gnb_cu_configuration_up
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
SI_container
[
si_ind
],
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
SI_container
[
si_ind
],
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
SI_container_length
[
si_ind
]);
gnb_cu_cfg_update
->
cells_to_activate
[
j
].
SI_container_length
[
si_ind
]);
}
}
// perform MAC/L1 common configuration
configure_gnb_du_mac
(
i
);
ret
++
;
ret
++
;
}
else
{
}
else
{
LOG_E
(
GNB_APP
,
"GNB_CU_CONFIGURATION_UPDATE not matching
\n
"
);
LOG_E
(
GNB_APP
,
"GNB_CU_CONFIGURATION_UPDATE not matching
\n
"
);
...
...
openair2/LAYER2/NR_MAC_gNB/config.c
View file @
8b0ad24d
...
@@ -160,10 +160,10 @@ void process_CellGroup(NR_CellGroupConfig_t *CellGroup, NR_UE_sched_ctrl_t *sche
...
@@ -160,10 +160,10 @@ void process_CellGroup(NR_CellGroupConfig_t *CellGroup, NR_UE_sched_ctrl_t *sche
}
}
void
config_common
(
int
Mod_idP
,
int
pdsch_AntennaPorts
,
int
pusch_AntennaPorts
,
NR_ServingCellConfigCommon_t
*
scc
)
{
void
config_common
(
gNB_MAC_INST
*
nrmac
,
int
pdsch_AntennaPorts
,
int
pusch_AntennaPorts
,
NR_ServingCellConfigCommon_t
*
scc
)
{
nfapi_nr_config_request_scf_t
*
cfg
=
&
RC
.
nrmac
[
Mod_idP
]
->
config
[
0
];
nfapi_nr_config_request_scf_t
*
cfg
=
&
nrmac
->
config
[
0
];
RC
.
nrmac
[
Mod_idP
]
->
common_channels
[
0
].
ServingCellConfigCommon
=
scc
;
nrmac
->
common_channels
[
0
].
ServingCellConfigCommon
=
scc
;
// Carrier configuration
// Carrier configuration
...
@@ -233,7 +233,7 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, int pusch_AntennaPorts,
...
@@ -233,7 +233,7 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, int pusch_AntennaPorts,
frequency_range_t
frequency_range
=
band
<
100
?
FR1
:
FR2
;
frequency_range_t
frequency_range
=
band
<
100
?
FR1
:
FR2
;
frame_type_t
frame_type
=
get_frame_type
(
*
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
frequencyBandList
.
list
.
array
[
0
],
*
scc
->
ssbSubcarrierSpacing
);
frame_type_t
frame_type
=
get_frame_type
(
*
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
frequencyBandList
.
list
.
array
[
0
],
*
scc
->
ssbSubcarrierSpacing
);
RC
.
nrmac
[
Mod_idP
]
->
common_channels
[
0
].
frame_type
=
frame_type
;
nrmac
->
common_channels
[
0
].
frame_type
=
frame_type
;
// Cell configuration
// Cell configuration
cfg
->
cell_config
.
phy_cell_id
.
value
=
*
scc
->
physCellId
;
cfg
->
cell_config
.
phy_cell_id
.
value
=
*
scc
->
physCellId
;
...
@@ -351,8 +351,8 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, int pusch_AntennaPorts,
...
@@ -351,8 +351,8 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, int pusch_AntennaPorts,
cfg
->
ssb_table
.
ssb_subcarrier_offset
.
tl
.
tag
=
NFAPI_NR_CONFIG_SSB_SUBCARRIER_OFFSET_TAG
;
cfg
->
ssb_table
.
ssb_subcarrier_offset
.
tl
.
tag
=
NFAPI_NR_CONFIG_SSB_SUBCARRIER_OFFSET_TAG
;
cfg
->
num_tlv
++
;
cfg
->
num_tlv
++
;
RC
.
nrmac
[
Mod_idP
]
->
ssb_SubcarrierOffset
=
cfg
->
ssb_table
.
ssb_subcarrier_offset
.
value
;
nrmac
->
ssb_SubcarrierOffset
=
cfg
->
ssb_table
.
ssb_subcarrier_offset
.
value
;
RC
.
nrmac
[
Mod_idP
]
->
ssb_OffsetPointA
=
cfg
->
ssb_table
.
ssb_offset_point_a
.
value
;
nrmac
->
ssb_OffsetPointA
=
cfg
->
ssb_table
.
ssb_offset_point_a
.
value
;
switch
(
scc
->
ssb_PositionsInBurst
->
present
)
{
switch
(
scc
->
ssb_PositionsInBurst
->
present
)
{
case
1
:
case
1
:
...
@@ -434,7 +434,7 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, int pusch_AntennaPorts,
...
@@ -434,7 +434,7 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, int pusch_AntennaPorts,
LOG_E
(
NR_MAC
,
"TDD configuration can not be done
\n
"
);
LOG_E
(
NR_MAC
,
"TDD configuration can not be done
\n
"
);
else
{
else
{
LOG_I
(
NR_MAC
,
"TDD has been properly configurated
\n
"
);
LOG_I
(
NR_MAC
,
"TDD has been properly configurated
\n
"
);
RC
.
nrmac
[
Mod_idP
]
->
tdd_beam_association
=
(
int16_t
*
)
malloc16
(
periods_per_frame
*
sizeof
(
int16_t
));
nrmac
->
tdd_beam_association
=
(
int16_t
*
)
malloc16
(
periods_per_frame
*
sizeof
(
int16_t
));
}
}
}
}
...
@@ -459,190 +459,201 @@ int nr_mac_enable_ue_rrc_processing_timer(module_id_t Mod_idP, rnti_t rnti, NR_S
...
@@ -459,190 +459,201 @@ int nr_mac_enable_ue_rrc_processing_timer(module_id_t Mod_idP, rnti_t rnti, NR_S
return
0
;
return
0
;
}
}
int
rrc_mac_config_req_gNB
(
module_id_t
Mod_idP
,
void
nr_mac_config_scc
(
gNB_MAC_INST
*
nrmac
,
rrc_pdsch_AntennaPorts_t
pdsch_AntennaPorts
,
rrc_pdsch_AntennaPorts_t
pdsch_AntennaPorts
,
int
pusch_AntennaPorts
,
int
pusch_AntennaPorts
,
int
sib1_tda
,
int
sib1_tda
,
int
minRXTXTIMEpdsch
,
int
minRXTXTIMEpdsch
,
NR_ServingCellConfigCommon_t
*
scc
,
NR_ServingCellConfigCommon_t
*
scc
)
NR_BCCH_BCH_Message_t
*
mib
,
{
NR_BCCH_DL_SCH_Message_t
*
sib1
,
DevAssert
(
nrmac
!=
NULL
);
int
add_ue
,
AssertFatal
(
nrmac
->
common_channels
[
0
].
ServingCellConfigCommon
==
NULL
,
"logic error: multiple configurations of SCC
\n
"
);
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
)
{
DevAssert
(
scc
!=
NULL
);
AssertFatal
(
scc
->
ssb_PositionsInBurst
->
present
>
0
&&
scc
->
ssb_PositionsInBurst
->
present
<
4
,
if
(
scc
!=
NULL
)
{
"SSB Bitmap type %d is not valid
\n
"
,
AssertFatal
((
scc
->
ssb_PositionsInBurst
->
present
>
0
)
&&
(
scc
->
ssb_PositionsInBurst
->
present
<
4
),
"SSB Bitmap type %d is not valid
\n
"
,
scc
->
ssb_PositionsInBurst
->
present
);
scc
->
ssb_PositionsInBurst
->
present
);
int
n
=
nr_slots_per_frame
[
*
scc
->
ssbSubcarrierSpacing
];
int
n
=
nr_slots_per_frame
[
*
scc
->
ssbSubcarrierSpacing
];
if
(
*
scc
->
ssbSubcarrierSpacing
==
0
)
if
(
*
scc
->
ssbSubcarrierSpacing
==
0
)
n
<<=
1
;
// to have enough room for feedback possibly beyond the frame we need a larger array at 15kHz SCS
n
<<=
1
;
// to have enough room for feedback possibly beyond the frame we need a larger array at 15kHz SCS
RC
.
nrmac
[
Mod_idP
]
->
common_channels
[
0
].
vrb_map_UL
=
calloc
(
n
*
MAX_BWP_SIZE
,
sizeof
(
uint16_t
));
nrmac
->
common_channels
[
0
].
vrb_map_UL
=
calloc
(
n
*
MAX_BWP_SIZE
,
sizeof
(
uint16_t
));
RC
.
nrmac
[
Mod_idP
]
->
vrb_map_UL_size
=
n
;
nrmac
->
vrb_map_UL_size
=
n
;
AssertFatal
(
RC
.
nrmac
[
Mod_idP
]
->
common_channels
[
0
].
vrb_map_UL
,
AssertFatal
(
nrmac
->
common_channels
[
0
].
vrb_map_UL
,
"could not allocate memory for RC.nrmac[]->common_channels[0].vrb_map_UL
\n
"
);
"could not allocate memory for RC.nrmac[]->common_channels[0].vrb_map_UL
\n
"
);
LOG_I
(
NR_MAC
,
"Configuring common parameters from NR ServingCellConfig
\n
"
);
LOG_I
(
NR_MAC
,
"Configuring common parameters from NR ServingCellConfig
\n
"
);
int
num_pdsch_antenna_ports
=
pdsch_AntennaPorts
.
N1
*
pdsch_AntennaPorts
.
N2
*
pdsch_AntennaPorts
.
XP
;
int
num_pdsch_antenna_ports
=
pdsch_AntennaPorts
.
N1
*
pdsch_AntennaPorts
.
N2
*
pdsch_AntennaPorts
.
XP
;
RC
.
nrmac
[
Mod_idP
]
->
xp_pdsch_antenna_ports
=
pdsch_AntennaPorts
.
XP
;
nrmac
->
xp_pdsch_antenna_ports
=
pdsch_AntennaPorts
.
XP
;
config_common
(
Mod_idP
,
config_common
(
nrmac
,
num_pdsch_antenna_ports
,
pusch_AntennaPorts
,
scc
);
num_pdsch_antenna_ports
,
pusch_AntennaPorts
,
if
(
NFAPI_MODE
==
NFAPI_MODE_PNF
||
NFAPI_MODE
==
NFAPI_MODE_VNF
)
{
scc
);
// fake that the gNB is configured in nFAPI mode, which would normally be
LOG_D
(
NR_MAC
,
"%s() %s:%d RC.nrmac[Mod_idP]->if_inst->NR_PHY_config_req:%p
\n
"
,
__FUNCTION__
,
__FILE__
,
__LINE__
,
RC
.
nrmac
[
Mod_idP
]
->
if_inst
->
NR_PHY_config_req
);
// done in a NR_PHY_config_req, but in this mode, there is no PHY
RC
.
gNB
[
0
]
->
configured
=
1
;
if
(
NFAPI_MODE
==
NFAPI_MODE_PNF
||
NFAPI_MODE
==
NFAPI_MODE_VNF
)
{
}
else
{
// fake that the gNB is configured in nFAPI mode, which would normally be
NR_PHY_Config_t
phycfg
=
{.
Mod_id
=
0
,
.
CC_id
=
0
,
.
cfg
=
&
nrmac
->
config
[
0
]};
// done in a NR_PHY_config_req, but in this mode, there is no PHY
DevAssert
(
nrmac
->
if_inst
->
NR_PHY_config_req
);
RC
.
gNB
[
Mod_idP
]
->
configured
=
1
;
nrmac
->
if_inst
->
NR_PHY_config_req
(
&
phycfg
);
}
else
{
}
NR_PHY_Config_t
phycfg
=
{
.
Mod_id
=
Mod_idP
,
.
CC_id
=
0
,
.
cfg
=
&
RC
.
nrmac
[
Mod_idP
]
->
config
[
0
]
};
DevAssert
(
RC
.
nrmac
[
Mod_idP
]
->
if_inst
->
NR_PHY_config_req
);
RC
.
nrmac
[
Mod_idP
]
->
if_inst
->
NR_PHY_config_req
(
&
phycfg
);
}
RC
.
nrmac
[
Mod_idP
]
->
minRXTXTIMEpdsch
=
minRXTXTIMEpdsch
;
nrmac
->
minRXTXTIMEpdsch
=
minRXTXTIMEpdsch
;
find_SSB_and_RO_available
(
Mod_idP
);
find_SSB_and_RO_available
(
nrmac
);
const
NR_TDD_UL_DL_Pattern_t
*
tdd
=
scc
->
tdd_UL_DL_ConfigurationCommon
?
&
scc
->
tdd_UL_DL_ConfigurationCommon
->
pattern1
:
NULL
;
int
nr_slots_period
=
n
;
int
nr_dl_slots
=
n
;
int
nr_ulstart_slot
=
0
;
if
(
tdd
)
{
nr_dl_slots
=
tdd
->
nrofDownlinkSlots
+
(
tdd
->
nrofDownlinkSymbols
!=
0
);
nr_ulstart_slot
=
get_first_ul_slot
(
tdd
->
nrofDownlinkSlots
,
tdd
->
nrofDownlinkSymbols
,
tdd
->
nrofUplinkSymbols
);
nr_slots_period
/=
get_nb_periods_per_frame
(
tdd
->
dl_UL_TransmissionPeriodicity
);
}
else
{
// if TDD configuration is not present and the band is not FDD, it means it is a dynamic TDD configuration
AssertFatal
(
nrmac
->
common_channels
[
0
].
frame_type
==
FDD
,
"Dynamic TDD not handled yet
\n
"
);
}
const
NR_TDD_UL_DL_Pattern_t
*
tdd
=
scc
->
tdd_UL_DL_ConfigurationCommon
?
&
scc
->
tdd_UL_DL_ConfigurationCommon
->
pattern1
:
NULL
;
for
(
int
slot
=
0
;
slot
<
n
;
++
slot
)
{
nrmac
->
dlsch_slot_bitmap
[
slot
/
64
]
|=
(
uint64_t
)((
slot
%
nr_slots_period
)
<
nr_dl_slots
)
<<
(
slot
%
64
);
nrmac
->
ulsch_slot_bitmap
[
slot
/
64
]
|=
(
uint64_t
)((
slot
%
nr_slots_period
)
>=
nr_ulstart_slot
)
<<
(
slot
%
64
);
int
nr_slots_period
=
n
;
LOG_I
(
NR_MAC
,
int
nr_dl_slots
=
n
;
"slot %d DL %d UL %d
\n
"
,
int
nr_ulstart_slot
=
0
;
slot
,
if
(
tdd
)
{
(
nrmac
->
dlsch_slot_bitmap
[
slot
/
64
]
&
((
uint64_t
)
1
<<
(
slot
%
64
)))
!=
0
,
nr_dl_slots
=
tdd
->
nrofDownlinkSlots
+
(
tdd
->
nrofDownlinkSymbols
!=
0
);
(
nrmac
->
ulsch_slot_bitmap
[
slot
/
64
]
&
((
uint64_t
)
1
<<
(
slot
%
64
)))
!=
0
);
nr_ulstart_slot
=
get_first_ul_slot
(
tdd
->
nrofDownlinkSlots
,
tdd
->
nrofDownlinkSymbols
,
tdd
->
nrofUplinkSymbols
);
}
nr_slots_period
/=
get_nb_periods_per_frame
(
tdd
->
dl_UL_TransmissionPeriodicity
);
}
else
// if TDD configuration is not present and the band is not FDD, it means it is a dynamic TDD configuration
AssertFatal
(
RC
.
nrmac
[
Mod_idP
]
->
common_channels
[
0
].
frame_type
==
FDD
,
"Dynamic TDD not handled yet
\n
"
);
for
(
int
slot
=
0
;
slot
<
n
;
++
slot
)
{
RC
.
nrmac
[
Mod_idP
]
->
dlsch_slot_bitmap
[
slot
/
64
]
|=
(
uint64_t
)((
slot
%
nr_slots_period
)
<
nr_dl_slots
)
<<
(
slot
%
64
);
RC
.
nrmac
[
Mod_idP
]
->
ulsch_slot_bitmap
[
slot
/
64
]
|=
(
uint64_t
)((
slot
%
nr_slots_period
)
>=
nr_ulstart_slot
)
<<
(
slot
%
64
);
LOG_I
(
NR_MAC
,
"In %s: slot %d DL %d UL %d
\n
"
,
__FUNCTION__
,
slot
,
(
RC
.
nrmac
[
Mod_idP
]
->
dlsch_slot_bitmap
[
slot
/
64
]
&
((
uint64_t
)
1
<<
(
slot
%
64
)))
!=
0
,
(
RC
.
nrmac
[
Mod_idP
]
->
ulsch_slot_bitmap
[
slot
/
64
]
&
((
uint64_t
)
1
<<
(
slot
%
64
)))
!=
0
);
}
if
(
get_softmodem_params
()
->
phy_test
)
{
if
(
get_softmodem_params
()
->
phy_test
)
{
RC
.
nrmac
[
Mod_idP
]
->
pre_processor_dl
=
nr_preprocessor_phytest
;
nrmac
->
pre_processor_dl
=
nr_preprocessor_phytest
;
RC
.
nrmac
[
Mod_idP
]
->
pre_processor_ul
=
nr_ul_preprocessor_phytest
;
nrmac
->
pre_processor_ul
=
nr_ul_preprocessor_phytest
;
}
else
{
}
else
{
RC
.
nrmac
[
Mod_idP
]
->
pre_processor_dl
=
nr_init_fr1_dlsch_preprocessor
(
Mod_idP
,
0
);
nrmac
->
pre_processor_dl
=
nr_init_fr1_dlsch_preprocessor
(
0
);
RC
.
nrmac
[
Mod_idP
]
->
pre_processor_ul
=
nr_init_fr1_ulsch_preprocessor
(
Mod_idP
,
0
);
nrmac
->
pre_processor_ul
=
nr_init_fr1_ulsch_preprocessor
(
0
);
}
if
(
get_softmodem_params
()
->
sa
>
0
)
{
NR_COMMON_channels_t
*
cc
=
&
nrmac
->
common_channels
[
0
];
nrmac
->
sib1_tda
=
sib1_tda
;
for
(
int
n
=
0
;
n
<
NR_NB_RA_PROC_MAX
;
n
++
)
{
NR_RA_t
*
ra
=
&
cc
->
ra
[
n
];
ra
->
cfra
=
false
;
ra
->
msg3_dcch_dtch
=
false
;
ra
->
rnti
=
0
;
ra
->
preambles
.
num_preambles
=
MAX_NUM_NR_PRACH_PREAMBLES
;
ra
->
preambles
.
preamble_list
=
malloc
(
MAX_NUM_NR_PRACH_PREAMBLES
*
sizeof
(
*
ra
->
preambles
.
preamble_list
));
for
(
int
i
=
0
;
i
<
MAX_NUM_NR_PRACH_PREAMBLES
;
i
++
)
ra
->
preambles
.
preamble_list
[
i
]
=
i
;
}
}
}
}
void
nr_mac_config_mib
(
gNB_MAC_INST
*
nrmac
,
NR_BCCH_BCH_Message_t
*
mib
)
{
DevAssert
(
nrmac
!=
NULL
);
DevAssert
(
mib
!=
NULL
);
NR_COMMON_channels_t
*
cc
=
&
nrmac
->
common_channels
[
0
];
AssertFatal
(
cc
->
mib
==
NULL
,
"logic bug: updated MIB multiple times
\n
"
);
cc
->
mib
=
mib
;
}
void
nr_mac_config_sib1
(
gNB_MAC_INST
*
nrmac
,
NR_BCCH_DL_SCH_Message_t
*
sib1
)
{
DevAssert
(
nrmac
!=
NULL
);
DevAssert
(
sib1
!=
NULL
);
NR_COMMON_channels_t
*
cc
=
&
nrmac
->
common_channels
[
0
];
AssertFatal
(
cc
->
sib1
==
NULL
,
"logic bug: updated SIB1 multiple times
\n
"
);
cc
->
sib1
=
sib1
;
}
if
(
get_softmodem_params
()
->
sa
>
0
)
{
bool
nr_mac_add_test_ue
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
)
NR_COMMON_channels_t
*
cc
=
&
RC
.
nrmac
[
Mod_idP
]
->
common_channels
[
0
];
{
RC
.
nrmac
[
Mod_idP
]
->
sib1_tda
=
sib1_tda
;
DevAssert
(
nrmac
!=
NULL
);
for
(
int
n
=
0
;
n
<
NR_NB_RA_PROC_MAX
;
n
++
)
{
DevAssert
(
CellGroup
!=
NULL
);
cc
->
ra
[
n
].
cfra
=
false
;
DevAssert
(
get_softmodem_params
()
->
phy_test
);
cc
->
ra
[
n
].
msg3_dcch_dtch
=
false
;
cc
->
ra
[
n
].
rnti
=
0
;
NR_UE_info_t
*
UE
=
add_new_nr_ue
(
nrmac
,
rnti
,
CellGroup
);
cc
->
ra
[
n
].
preambles
.
num_preambles
=
MAX_NUM_NR_PRACH_PREAMBLES
;
if
(
UE
)
{
cc
->
ra
[
n
].
preambles
.
preamble_list
=
(
uint8_t
*
)
malloc
(
MAX_NUM_NR_PRACH_PREAMBLES
*
sizeof
(
uint8_t
));
LOG_I
(
NR_MAC
,
"Force-added new UE %x with initial CellGroup
\n
"
,
rnti
);
for
(
int
i
=
0
;
i
<
MAX_NUM_NR_PRACH_PREAMBLES
;
i
++
)
}
else
{
cc
->
ra
[
n
].
preambles
.
preamble_list
[
i
]
=
i
;
LOG_E
(
NR_MAC
,
"Error adding UE %04x
\n
"
,
rnti
);
return
false
;
}
process_CellGroup
(
CellGroup
,
&
UE
->
UE_sched_ctrl
);
return
true
;
}
bool
nr_mac_prepare_ra_nsa_ue
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
)
{
DevAssert
(
nrmac
!=
NULL
);
DevAssert
(
CellGroup
!=
NULL
);
DevAssert
(
!
get_softmodem_params
()
->
phy_test
);
// NSA case: need to pre-configure CFRA
const
int
CC_id
=
0
;
NR_COMMON_channels_t
*
cc
=
&
nrmac
->
common_channels
[
CC_id
];
uint8_t
ra_index
=
0
;
/* checking for free RA process */
for
(;
ra_index
<
NR_NB_RA_PROC_MAX
;
ra_index
++
)
{
if
((
cc
->
ra
[
ra_index
].
state
==
RA_IDLE
)
&&
(
!
cc
->
ra
[
ra_index
].
cfra
))
break
;
}
if
(
ra_index
==
NR_NB_RA_PROC_MAX
)
{
LOG_E
(
NR_MAC
,
"RA processes are not available for CFRA RNTI %04x
\n
"
,
rnti
);
return
false
;
}
NR_RA_t
*
ra
=
&
cc
->
ra
[
ra_index
];
ra
->
CellGroup
=
CellGroup
;
AssertFatal
(
CellGroup
->
spCellConfig
&&
CellGroup
->
spCellConfig
->
reconfigurationWithSync
&&
CellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
!=
NULL
&&
CellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
!=
NULL
,
"invalid CellGroup for RNTI %04x, cannot create RA occasion
\n
"
,
rnti
);
ra
->
cfra
=
true
;
ra
->
rnti
=
rnti
;
struct
NR_CFRA
*
cfra
=
CellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
;
uint8_t
num_preamble
=
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
.
count
;
AssertFatal
(
ra
->
preambles
.
num_preambles
==
0
&&
ra
->
preambles
.
preamble_list
==
NULL
,
"preamble_list already configured means logic bug, list is allocated here
\n
"
);
ra
->
preambles
.
num_preambles
=
num_preamble
;
ra
->
preambles
.
preamble_list
=
calloc
(
ra
->
preambles
.
num_preambles
,
sizeof
(
*
ra
->
preambles
.
preamble_list
));
for
(
int
i
=
0
;
i
<
cc
->
num_active_ssb
;
i
++
)
{
for
(
int
j
=
0
;
j
<
num_preamble
;
j
++
)
{
if
(
cc
->
ssb_index
[
i
]
==
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
.
array
[
j
]
->
ssb
)
{
// one dedicated preamble for each beam
ra
->
preambles
.
preamble_list
[
i
]
=
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
.
array
[
j
]
->
ra_PreambleIndex
;
break
;
}
}
}
}
}
}
ra
->
msg3_dcch_dtch
=
false
;
if
(
mib
)
RC
.
nrmac
[
Mod_idP
]
->
common_channels
[
0
].
mib
=
mib
;
LOG_I
(
NR_MAC
,
"Added new RA process for UE RNTI %04x with initial CellGroup
\n
"
,
rnti
);
if
(
sib1
)
RC
.
nrmac
[
Mod_idP
]
->
common_channels
[
0
].
sib1
=
sib1
;
return
true
;
}
if
(
CellGroup
)
{
if
(
add_ue
==
1
&&
get_softmodem_params
()
->
phy_test
)
{
NR_UE_info_t
*
UE
=
add_new_nr_ue
(
RC
.
nrmac
[
Mod_idP
],
rnti
,
CellGroup
);
if
(
UE
)
{
LOG_I
(
NR_MAC
,
"Added new UE %x with initial CellGroup
\n
"
,
rnti
);
}
else
{
LOG_E
(
NR_MAC
,
"Error adding UE %04x
\n
"
,
rnti
);
return
-
1
;
}
process_CellGroup
(
CellGroup
,
&
UE
->
UE_sched_ctrl
);
}
else
if
(
add_ue
==
1
&&
!
get_softmodem_params
()
->
phy_test
)
{
const
int
CC_id
=
0
;
NR_COMMON_channels_t
*
cc
=
&
RC
.
nrmac
[
Mod_idP
]
->
common_channels
[
CC_id
];
uint8_t
ra_index
=
0
;
/* checking for free RA process */
for
(;
ra_index
<
NR_NB_RA_PROC_MAX
;
ra_index
++
)
{
if
((
cc
->
ra
[
ra_index
].
state
==
RA_IDLE
)
&&
(
!
cc
->
ra
[
ra_index
].
cfra
))
break
;
}
if
(
ra_index
==
NR_NB_RA_PROC_MAX
)
{
LOG_E
(
NR_MAC
,
"%s() %s:%d RA processes are not available for CFRA RNTI :%x
\n
"
,
__FUNCTION__
,
__FILE__
,
__LINE__
,
rnti
);
return
-
1
;
}
NR_RA_t
*
ra
=
&
cc
->
ra
[
ra_index
];
ra
->
CellGroup
=
CellGroup
;
if
(
CellGroup
->
spCellConfig
&&
CellGroup
->
spCellConfig
->
reconfigurationWithSync
&&
CellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
!=
NULL
)
{
if
(
CellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
!=
NULL
)
{
ra
->
cfra
=
true
;
ra
->
rnti
=
rnti
;
struct
NR_CFRA
*
cfra
=
CellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
;
uint8_t
num_preamble
=
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
.
count
;
ra
->
preambles
.
num_preambles
=
num_preamble
;
ra
->
preambles
.
preamble_list
=
(
uint8_t
*
)
malloc
(
num_preamble
*
sizeof
(
uint8_t
));
for
(
int
i
=
0
;
i
<
cc
->
num_active_ssb
;
i
++
)
{
for
(
int
j
=
0
;
j
<
num_preamble
;
j
++
)
{
if
(
cc
->
ssb_index
[
i
]
==
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
.
array
[
j
]
->
ssb
)
{
// one dedicated preamble for each beam
ra
->
preambles
.
preamble_list
[
i
]
=
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
.
array
[
j
]
->
ra_PreambleIndex
;
break
;
}
}
}
}
}
else
{
ra
->
cfra
=
false
;
ra
->
rnti
=
0
;
ra
->
preambles
.
num_preambles
=
MAX_NUM_NR_PRACH_PREAMBLES
;
ra
->
preambles
.
preamble_list
=
(
uint8_t
*
)
malloc
(
MAX_NUM_NR_PRACH_PREAMBLES
*
sizeof
(
uint8_t
));
for
(
int
i
=
0
;
i
<
MAX_NUM_NR_PRACH_PREAMBLES
;
i
++
)
ra
->
preambles
.
preamble_list
[
i
]
=
i
;
}
ra
->
msg3_dcch_dtch
=
false
;
LOG_I
(
NR_MAC
,
"Added new RA process for UE RNTI %04x with initial CellGroup
\n
"
,
rnti
);
}
else
{
// CellGroup has been updated
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
RC
.
nrmac
[
Mod_idP
]
->
UE_info
,
rnti
);
if
(
!
UE
)
{
LOG_E
(
NR_MAC
,
"Can't find UE %04x
\n
"
,
rnti
);
return
-
1
;
}
/* copy CellGroup by calling asn1c encode
bool
nr_mac_update_cellgroup
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
)
this is a temporary hack to avoid the gNB having
{
a pointer to RRC CellGroup structure
DevAssert
(
nrmac
!=
NULL
);
(otherwise it would be applied to early)
DevAssert
(
CellGroup
!=
NULL
);
TODO remove once we have a proper implementation */
UE
->
enc_rval
=
uper_encode_to_buffer
(
&
asn_DEF_NR_CellGroupConfig
,
NULL
,
(
void
*
)
CellGroup
,
UE
->
cg_buf
,
32768
);
if
(
UE
->
enc_rval
.
encoded
==
-
1
)
{
LOG_E
(
NR_MAC
,
"ASN1 message CellGroupConfig encoding failed (%s, %lu)!
\n
"
,
UE
->
enc_rval
.
failed_type
->
name
,
UE
->
enc_rval
.
encoded
);
exit
(
1
);
}
process_CellGroup
(
CellGroup
,
&
UE
->
UE_sched_ctrl
);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
nrmac
->
UE_info
,
rnti
);
}
AssertFatal
(
UE
!=
NULL
,
"Can't find UE %04x for CellGroup update
\n
"
,
rnti
);
/* copy CellGroup by calling asn1c encode this is a temporary hack to avoid the gNB having a pointer to RRC CellGroup structure
* (otherwise it would be applied to early)
* TODO remove once we have a proper implementation */
UE
->
enc_rval
=
uper_encode_to_buffer
(
&
asn_DEF_NR_CellGroupConfig
,
NULL
,
(
void
*
)
CellGroup
,
UE
->
cg_buf
,
32768
);
if
(
UE
->
enc_rval
.
encoded
==
-
1
)
{
LOG_E
(
NR_MAC
,
"ASN1 message CellGroupConfig encoding failed (%s, %lu)!
\n
"
,
UE
->
enc_rval
.
failed_type
->
name
,
UE
->
enc_rval
.
encoded
);
exit
(
1
);
}
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_MAC_CONFIG
,
VCD_FUNCTION_OUT
);
return
0
;
process_CellGroup
(
CellGroup
,
&
UE
->
UE_sched_ctrl
);
}
// END rrc_mac_config_req_gNB
return
true
;
}
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
8b0ad24d
...
@@ -141,12 +141,11 @@ int16_t ssb_index_from_prach(module_id_t module_idP,
...
@@ -141,12 +141,11 @@ int16_t ssb_index_from_prach(module_id_t module_idP,
//Compute Total active SSBs and RO available
//Compute Total active SSBs and RO available
void
find_SSB_and_RO_available
(
module_id_t
module_idP
)
{
void
find_SSB_and_RO_available
(
gNB_MAC_INST
*
nrmac
)
{
gNB_MAC_INST
*
gNB
=
RC
.
nrmac
[
module_idP
];
NR_COMMON_channels_t
*
cc
=
&
nrmac
->
common_channels
[
0
];
NR_COMMON_channels_t
*
cc
=
&
gNB
->
common_channels
[
0
];
NR_ServingCellConfigCommon_t
*
scc
=
cc
->
ServingCellConfigCommon
;
NR_ServingCellConfigCommon_t
*
scc
=
cc
->
ServingCellConfigCommon
;
nfapi_nr_config_request_scf_t
*
cfg
=
&
RC
.
nrmac
[
module_idP
]
->
config
[
0
];
nfapi_nr_config_request_scf_t
*
cfg
=
&
nrmac
->
config
[
0
];
uint8_t
config_index
=
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
rach_ConfigGeneric
.
prach_ConfigurationIndex
;
uint8_t
config_index
=
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
rach_ConfigGeneric
.
prach_ConfigurationIndex
;
uint8_t
mu
,
N_dur
=
0
,
N_t_slot
=
0
,
start_symbol
=
0
,
N_RA_slot
=
0
;
uint8_t
mu
,
N_dur
=
0
,
N_t_slot
=
0
,
start_symbol
=
0
,
N_RA_slot
=
0
;
...
@@ -1573,6 +1572,7 @@ void nr_generate_Msg4(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
...
@@ -1573,6 +1572,7 @@ void nr_generate_Msg4(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
if
(
harq
->
round
==
0
&&
ra
->
msg3_dcch_dtch
)
{
if
(
harq
->
round
==
0
&&
ra
->
msg3_dcch_dtch
)
{
mac_remove_nr_ue
(
nr_mac
,
tc_rnti
);
mac_remove_nr_ue
(
nr_mac
,
tc_rnti
);
}
}
UE
->
mac_stats
.
dl
.
rounds
[
harq
->
round
]
++
;
NR_sched_pucch_t
*
pucch
=
&
sched_ctrl
->
sched_pucch
[
alloc
];
NR_sched_pucch_t
*
pucch
=
&
sched_ctrl
->
sched_pucch
[
alloc
];
harq
->
feedback_slot
=
pucch
->
ul_slot
;
harq
->
feedback_slot
=
pucch
->
ul_slot
;
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
View file @
8b0ad24d
...
@@ -844,7 +844,7 @@ void nr_fr1_dlsch_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t
...
@@ -844,7 +844,7 @@ void nr_fr1_dlsch_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t
rballoc_mask
);
rballoc_mask
);
}
}
nr_pp_impl_dl
nr_init_fr1_dlsch_preprocessor
(
module_id_t
module_id
,
int
CC_id
)
{
nr_pp_impl_dl
nr_init_fr1_dlsch_preprocessor
(
int
CC_id
)
{
/* in the PF algorithm, we have to use the TBsize to compute the coefficient.
/* in the PF algorithm, we have to use the TBsize to compute the coefficient.
* This would include the number of DMRS symbols, which in turn depends on
* This would include the number of DMRS symbols, which in turn depends on
* the time domain allocation. In case we are in a mixed slot, we do not want
* the time domain allocation. In case we are in a mixed slot, we do not want
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
8b0ad24d
...
@@ -1944,7 +1944,7 @@ bool nr_fr1_ulsch_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t
...
@@ -1944,7 +1944,7 @@ bool nr_fr1_ulsch_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t
return
true
;
return
true
;
}
}
nr_pp_impl_ul
nr_init_fr1_ulsch_preprocessor
(
module_id_t
module_id
,
int
CC_id
)
nr_pp_impl_ul
nr_init_fr1_ulsch_preprocessor
(
int
CC_id
)
{
{
/* in the PF algorithm, we have to use the TBsize to compute the coefficient.
/* in the PF algorithm, we have to use the TBsize to compute the coefficient.
* This would include the number of DMRS symbols, which in turn depends on
* This would include the number of DMRS symbols, which in turn depends on
...
...
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
8b0ad24d
...
@@ -40,27 +40,24 @@ void set_cset_offset(uint16_t);
...
@@ -40,27 +40,24 @@ void set_cset_offset(uint16_t);
void
mac_top_init_gNB
(
ngran_node_t
node_type
);
void
mac_top_init_gNB
(
ngran_node_t
node_type
);
void
config_common
(
int
Mod_idP
,
void
config_common
(
gNB_MAC_INST
*
nrmac
,
int
pdsch_AntennaPorts
,
int
pusch_AntennaPorts
,
NR_ServingCellConfigCommon_t
*
scc
);
int
pdsch_AntennaPorts
,
int
pusch_AntennaPorts
,
NR_ServingCellConfigCommon_t
*
scc
);
int
nr_mac_enable_ue_rrc_processing_timer
(
module_id_t
Mod_idP
,
int
nr_mac_enable_ue_rrc_processing_timer
(
module_id_t
Mod_idP
,
rnti_t
rnti
,
rnti_t
rnti
,
NR_SubcarrierSpacing_t
subcarrierSpacing
,
NR_SubcarrierSpacing_t
subcarrierSpacing
,
uint32_t
rrc_reconfiguration_delay
);
uint32_t
rrc_reconfiguration_delay
);
int
rrc_mac_config_req_gNB
(
module_id_t
Mod_idP
,
void
nr_mac_config_scc
(
gNB_MAC_INST
*
nrmac
,
rrc_pdsch_AntennaPorts_t
pdsch_AntennaPorts
,
rrc_pdsch_AntennaPorts_t
pdsch_AntennaPorts
,
int
pusch_AntennaPorts
,
int
pusch_AntennaPorts
,
int
sib1_tda
,
int
sib1_tda
,
int
minRXTXTIMEpdsch
,
int
minRXTXTIMEpdsch
,
NR_ServingCellConfigCommon_t
*
scc
,
NR_ServingCellConfigCommon_t
*
scc
);
NR_BCCH_BCH_Message_t
*
mib
,
void
nr_mac_config_mib
(
gNB_MAC_INST
*
nrmac
,
NR_BCCH_BCH_Message_t
*
mib
);
NR_BCCH_DL_SCH_Message_t
*
sib1
,
void
nr_mac_config_sib1
(
gNB_MAC_INST
*
nrmac
,
NR_BCCH_DL_SCH_Message_t
*
sib1
);
int
add_ue
,
bool
nr_mac_add_test_ue
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
);
uint32_t
rnti
,
bool
nr_mac_prepare_ra_nsa_ue
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
);
NR_CellGroupConfig_t
*
CellGroup
);
bool
nr_mac_update_cellgroup
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
);
void
clear_nr_nfapi_information
(
gNB_MAC_INST
*
gNB
,
void
clear_nr_nfapi_information
(
gNB_MAC_INST
*
gNB
,
int
CC_idP
,
int
CC_idP
,
...
@@ -95,7 +92,7 @@ uint32_t schedule_control_sib1(module_id_t module_id,
...
@@ -95,7 +92,7 @@ uint32_t schedule_control_sib1(module_id_t module_id,
uint16_t
num_total_bytes
);
uint16_t
num_total_bytes
);
/* \brief default FR1 DL preprocessor init routine, returns preprocessor to call */
/* \brief default FR1 DL preprocessor init routine, returns preprocessor to call */
nr_pp_impl_dl
nr_init_fr1_dlsch_preprocessor
(
module_id_t
module_id
,
int
CC_id
);
nr_pp_impl_dl
nr_init_fr1_dlsch_preprocessor
(
int
CC_id
);
void
schedule_nr_sib1
(
module_id_t
module_idP
,
frame_t
frameP
,
sub_frame_t
subframeP
);
void
schedule_nr_sib1
(
module_id_t
module_idP
,
frame_t
frameP
,
sub_frame_t
subframeP
);
...
@@ -107,7 +104,7 @@ void schedule_nr_mib(module_id_t module_idP, frame_t frameP, sub_frame_t slotP);
...
@@ -107,7 +104,7 @@ void schedule_nr_mib(module_id_t module_idP, frame_t frameP, sub_frame_t slotP);
void
nr_schedule_ulsch
(
module_id_t
module_id
,
frame_t
frame
,
sub_frame_t
slot
);
void
nr_schedule_ulsch
(
module_id_t
module_id
,
frame_t
frame
,
sub_frame_t
slot
);
/* \brief default FR1 UL preprocessor init routine, returns preprocessor to call */
/* \brief default FR1 UL preprocessor init routine, returns preprocessor to call */
nr_pp_impl_ul
nr_init_fr1_ulsch_preprocessor
(
module_id_t
module_id
,
int
CC_id
);
nr_pp_impl_ul
nr_init_fr1_ulsch_preprocessor
(
int
CC_id
);
/////// Random Access MAC-PHY interface functions and primitives ///////
/////// Random Access MAC-PHY interface functions and primitives ///////
...
@@ -425,7 +422,7 @@ int16_t ssb_index_from_prach(module_id_t module_idP,
...
@@ -425,7 +422,7 @@ int16_t ssb_index_from_prach(module_id_t module_idP,
uint8_t
freq_index
,
uint8_t
freq_index
,
uint8_t
symbol
);
uint8_t
symbol
);
void
find_SSB_and_RO_available
(
module_id_t
module_idP
);
void
find_SSB_and_RO_available
(
gNB_MAC_INST
*
nrmac
);
NR_pdsch_dmrs_t
get_dl_dmrs_params
(
const
NR_ServingCellConfigCommon_t
*
scc
,
NR_pdsch_dmrs_t
get_dl_dmrs_params
(
const
NR_ServingCellConfigCommon_t
*
scc
,
const
NR_UE_DL_BWP_t
*
BWP
,
const
NR_UE_DL_BWP_t
*
BWP
,
...
...
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
View file @
8b0ad24d
...
@@ -36,7 +36,7 @@ int dl_rrc_message(module_id_t module_id, const f1ap_dl_rrc_message_t *dl_rrc)
...
@@ -36,7 +36,7 @@ int dl_rrc_message(module_id_t module_id, const f1ap_dl_rrc_message_t *dl_rrc)
/* dispatch message to dl_rrc_message_rrcSetup() and others, similar to as is
/* dispatch message to dl_rrc_message_rrcSetup() and others, similar to as is
* done in the DU (should be the same here) */
* done in the DU (should be the same here) */
LOG_
I
(
NR_MAC
,
"DL RRC Message Transfer with %d bytes for RNTI %04x SRB %d
\n
"
,
dl_rrc
->
rrc_container_length
,
dl_rrc
->
rnti
,
dl_rrc
->
srb_id
);
LOG_
D
(
NR_MAC
,
"DL RRC Message Transfer with %d bytes for RNTI %04x SRB %d
\n
"
,
dl_rrc
->
rrc_container_length
,
dl_rrc
->
rnti
,
dl_rrc
->
srb_id
);
if
(
dl_rrc
->
srb_id
==
CCCH
)
{
// SRB 0
if
(
dl_rrc
->
srb_id
==
CCCH
)
{
// SRB 0
...
@@ -59,7 +59,7 @@ int dl_rrc_message(module_id_t module_id, const f1ap_dl_rrc_message_t *dl_rrc)
...
@@ -59,7 +59,7 @@ int dl_rrc_message(module_id_t module_id, const f1ap_dl_rrc_message_t *dl_rrc)
AssertFatal
(
0
,
"rrcReject not implemented yet
\n
"
);
AssertFatal
(
0
,
"rrcReject not implemented yet
\n
"
);
break
;
break
;
case
NR_DL_CCCH_MessageType__c1_PR_rrcSetup
:
case
NR_DL_CCCH_MessageType__c1_PR_rrcSetup
:
LOG_
I
(
NR_MAC
,
"DL-CCCH/SRB0, received rrcSetup for RNTI %04x
\n
"
,
dl_rrc
->
rnti
);
LOG_
D
(
NR_MAC
,
"DL-CCCH/SRB0, received rrcSetup for RNTI %04x
\n
"
,
dl_rrc
->
rnti
);
return
dl_rrc_message_rrcSetup
(
module_id
,
dl_rrc
,
dl_ccch_msg
->
message
.
choice
.
c1
->
choice
.
rrcSetup
);
return
dl_rrc_message_rrcSetup
(
module_id
,
dl_rrc
,
dl_ccch_msg
->
message
.
choice
.
c1
->
choice
.
rrcSetup
);
break
;
break
;
case
NR_DL_CCCH_MessageType__c1_PR_spare2
:
case
NR_DL_CCCH_MessageType__c1_PR_spare2
:
...
@@ -101,20 +101,8 @@ int dl_rrc_message_rrcSetup(module_id_t module_id, const f1ap_dl_rrc_message_t *
...
@@ -101,20 +101,8 @@ int dl_rrc_message_rrcSetup(module_id_t module_id, const f1ap_dl_rrc_message_t *
AssertFatal
(
dec_rval
.
code
==
RC_OK
,
"could not decode masterCellGroup
\n
"
);
AssertFatal
(
dec_rval
.
code
==
RC_OK
,
"could not decode masterCellGroup
\n
"
);
/* there might be a memory leak for the cell group if we call this multiple
/* there might be a memory leak for the cell group if we call this multiple
* times. Also, the first parameters of rrc_mac_config_req_gNB() are only
* times. */
* relevant when setting the scc, which we don't do (and cannot do) here. */
nr_mac_update_cellgroup
(
RC
.
nrmac
[
module_id
],
dl_rrc
->
rnti
,
cellGroup
);
rrc_pdsch_AntennaPorts_t
pap
=
{
0
};
rrc_mac_config_req_gNB
(
module_id
,
pap
,
/* only when scc != NULL */
0
,
/* only when scc != NULL */
0
,
/* only when scc != NULL */
0
,
/* only when scc != NULL */
NULL
,
/* scc */
NULL
,
/* mib */
NULL
,
/* sib1 */
0
,
/* add_ue */
dl_rrc
->
rnti
,
cellGroup
);
/* TODO: drop the RRC context */
/* TODO: drop the RRC context */
gNB_RRC_INST
*
rrc
=
RC
.
nrrrc
[
module_id
];
gNB_RRC_INST
*
rrc
=
RC
.
nrrrc
[
module_id
];
...
...
openair2/LAYER2/NR_MAC_gNB/main.c
View file @
8b0ad24d
...
@@ -239,8 +239,8 @@ void mac_top_init_gNB(ngran_node_t node_type)
...
@@ -239,8 +239,8 @@ void mac_top_init_gNB(ngran_node_t node_type)
RC
.
nrmac
[
i
]
->
pre_processor_dl
=
nr_preprocessor_phytest
;
RC
.
nrmac
[
i
]
->
pre_processor_dl
=
nr_preprocessor_phytest
;
RC
.
nrmac
[
i
]
->
pre_processor_ul
=
nr_ul_preprocessor_phytest
;
RC
.
nrmac
[
i
]
->
pre_processor_ul
=
nr_ul_preprocessor_phytest
;
}
else
{
}
else
{
RC
.
nrmac
[
i
]
->
pre_processor_dl
=
nr_init_fr1_dlsch_preprocessor
(
i
,
0
);
RC
.
nrmac
[
i
]
->
pre_processor_dl
=
nr_init_fr1_dlsch_preprocessor
(
0
);
RC
.
nrmac
[
i
]
->
pre_processor_ul
=
nr_init_fr1_ulsch_preprocessor
(
i
,
0
);
RC
.
nrmac
[
i
]
->
pre_processor_ul
=
nr_init_fr1_ulsch_preprocessor
(
0
);
}
}
if
(
!
IS_SOFTMODEM_NOSTATS_BIT
)
if
(
!
IS_SOFTMODEM_NOSTATS_BIT
)
threadCreate
(
&
RC
.
nrmac
[
i
]
->
stats_thread
,
nrmac_stats_thread
,
(
void
*
)
RC
.
nrmac
[
i
],
"MAC_STATS"
,
-
1
,
sched_get_priority_min
(
SCHED_OAI
)
+
1
);
threadCreate
(
&
RC
.
nrmac
[
i
]
->
stats_thread
,
nrmac_stats_thread
,
(
void
*
)
RC
.
nrmac
[
i
],
"MAC_STATS"
,
-
1
,
sched_get_priority_min
(
SCHED_OAI
)
+
1
);
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
8b0ad24d
...
@@ -176,17 +176,16 @@ static void init_NR_SI(gNB_RRC_INST *rrc, gNB_RrcConfigurationReq *configuration
...
@@ -176,17 +176,16 @@ static void init_NR_SI(gNB_RRC_INST *rrc, gNB_RrcConfigurationReq *configuration
LOG_I
(
NR_RRC
,
"Done init_NR_SI
\n
"
);
LOG_I
(
NR_RRC
,
"Done init_NR_SI
\n
"
);
if
(
NODE_IS_MONOLITHIC
(
rrc
->
node_type
)
||
NODE_IS_DU
(
rrc
->
node_type
)){
if
(
NODE_IS_MONOLITHIC
(
rrc
->
node_type
)
||
NODE_IS_DU
(
rrc
->
node_type
)){
rrc_mac_config_req_gNB
(
rrc
->
module_id
,
// update SI info
rrc
->
configuration
.
pdsch_AntennaPorts
,
nr_mac_config_scc
(
RC
.
nrmac
[
rrc
->
module_id
],
rrc
->
configuration
.
pusch_AntennaPorts
,
rrc
->
configuration
.
pdsch_AntennaPorts
,
rrc
->
configuration
.
sib1_tda
,
rrc
->
configuration
.
pusch_AntennaPorts
,
rrc
->
configuration
.
minRXTXTIME
,
rrc
->
configuration
.
sib1_tda
,
rrc
->
carrier
.
servingcellconfigcommon
,
rrc
->
configuration
.
minRXTXTIME
,
&
rrc
->
carrier
.
mib
,
rrc
->
carrier
.
servingcellconfigcommon
);
rrc
->
carrier
.
siblock1
,
nr_mac_config_mib
(
RC
.
nrmac
[
rrc
->
module_id
],
&
rrc
->
carrier
.
mib
);
0
,
if
(
get_softmodem_params
()
->
sa
)
0
,
// WIP hardcoded rnti
nr_mac_config_sib1
(
RC
.
nrmac
[
rrc
->
module_id
],
rrc
->
carrier
.
siblock1
);
NULL
);
}
}
/* set flag to indicate that cell information is configured. This is required
/* set flag to indicate that cell information is configured. This is required
...
@@ -306,17 +305,7 @@ unsigned int rrc_gNB_get_next_transaction_identifier(module_id_t gnb_mod_idP)
...
@@ -306,17 +305,7 @@ unsigned int rrc_gNB_get_next_transaction_identifier(module_id_t gnb_mod_idP)
static
void
apply_macrlc_config
(
gNB_RRC_INST
*
rrc
,
rrc_gNB_ue_context_t
*
const
ue_context_pP
,
const
protocol_ctxt_t
*
const
ctxt_pP
)
static
void
apply_macrlc_config
(
gNB_RRC_INST
*
rrc
,
rrc_gNB_ue_context_t
*
const
ue_context_pP
,
const
protocol_ctxt_t
*
const
ctxt_pP
)
{
{
NR_CellGroupConfig_t
*
cgc
=
get_softmodem_params
()
->
sa
?
ue_context_pP
->
ue_context
.
masterCellGroup
:
NULL
;
NR_CellGroupConfig_t
*
cgc
=
get_softmodem_params
()
->
sa
?
ue_context_pP
->
ue_context
.
masterCellGroup
:
NULL
;
rrc_mac_config_req_gNB
(
rrc
->
module_id
,
nr_mac_update_cellgroup
(
RC
.
nrmac
[
rrc
->
module_id
],
ue_context_pP
->
ue_context
.
rnti
,
cgc
);
rrc
->
configuration
.
pdsch_AntennaPorts
,
rrc
->
configuration
.
pusch_AntennaPorts
,
rrc
->
configuration
.
sib1_tda
,
rrc
->
configuration
.
minRXTXTIME
,
NULL
,
NULL
,
NULL
,
0
,
ue_context_pP
->
ue_context
.
rnti
,
cgc
);
nr_rrc_rlc_config_asn1_req
(
ctxt_pP
,
nr_rrc_rlc_config_asn1_req
(
ctxt_pP
,
ue_context_pP
->
ue_context
.
SRB_configList
,
ue_context_pP
->
ue_context
.
SRB_configList
,
...
@@ -327,17 +316,7 @@ static void apply_macrlc_config(gNB_RRC_INST *rrc, rrc_gNB_ue_context_t *const u
...
@@ -327,17 +316,7 @@ static void apply_macrlc_config(gNB_RRC_INST *rrc, rrc_gNB_ue_context_t *const u
void
apply_macrlc_config_reest
(
gNB_RRC_INST
*
rrc
,
rrc_gNB_ue_context_t
*
const
ue_context_pP
,
const
protocol_ctxt_t
*
const
ctxt_pP
,
ue_id_t
ue_id
)
void
apply_macrlc_config_reest
(
gNB_RRC_INST
*
rrc
,
rrc_gNB_ue_context_t
*
const
ue_context_pP
,
const
protocol_ctxt_t
*
const
ctxt_pP
,
ue_id_t
ue_id
)
{
{
rrc_mac_config_req_gNB
(
rrc
->
module_id
,
nr_mac_update_cellgroup
(
RC
.
nrmac
[
rrc
->
module_id
],
ue_context_pP
->
ue_context
.
rnti
,
ue_context_pP
->
ue_context
.
masterCellGroup
);
rrc
->
configuration
.
pdsch_AntennaPorts
,
rrc
->
configuration
.
pusch_AntennaPorts
,
rrc
->
configuration
.
sib1_tda
,
rrc
->
configuration
.
minRXTXTIME
,
NULL
,
NULL
,
NULL
,
0
,
ue_id
,
get_softmodem_params
()
->
sa
?
ue_context_pP
->
ue_context
.
masterCellGroup
:
NULL
);
nr_rrc_rlc_config_asn1_req
(
ctxt_pP
,
nr_rrc_rlc_config_asn1_req
(
ctxt_pP
,
ue_context_pP
->
ue_context
.
SRB_configList
,
ue_context_pP
->
ue_context
.
SRB_configList
,
...
@@ -430,17 +409,15 @@ static void rrc_gNB_generate_RRCSetup_for_RRCReestablishmentRequest(const protoc
...
@@ -430,17 +409,15 @@ static void rrc_gNB_generate_RRCSetup_for_RRCReestablishmentRequest(const protoc
PROTOCOL_NR_RRC_CTXT_UE_FMT
" RRC_gNB --- MAC_CONFIG_REQ (SRB1) ---> MAC_gNB
\n
"
,
PROTOCOL_NR_RRC_CTXT_UE_FMT
" RRC_gNB --- MAC_CONFIG_REQ (SRB1) ---> MAC_gNB
\n
"
,
PROTOCOL_NR_RRC_CTXT_UE_ARGS
(
ctxt_pP
));
PROTOCOL_NR_RRC_CTXT_UE_ARGS
(
ctxt_pP
));
rrc_mac_config_req_gNB
(
rrc_instance_p
->
module_id
,
// update SCC and MIB/SIB (two calls)
rrc_instance_p
->
configuration
.
pdsch_AntennaPorts
,
nr_mac_config_scc
(
RC
.
nrmac
[
rrc_instance_p
->
module_id
],
rrc_instance_p
->
configuration
.
pusch_AntennaPorts
,
rrc_instance_p
->
configuration
.
pdsch_AntennaPorts
,
rrc_instance_p
->
configuration
.
sib1_tda
,
rrc_instance_p
->
configuration
.
pusch_AntennaPorts
,
rrc_instance_p
->
configuration
.
minRXTXTIME
,
rrc_instance_p
->
configuration
.
sib1_tda
,
rrc_instance_p
->
carrier
.
servingcellconfigcommon
,
rrc_instance_p
->
configuration
.
minRXTXTIME
,
&
rrc_instance_p
->
carrier
.
mib
,
rrc_instance_p
->
carrier
.
servingcellconfigcommon
);
rrc_instance_p
->
carrier
.
siblock1
,
nr_mac_config_mib
(
RC
.
nrmac
[
rrc_instance_p
->
module_id
],
&
rrc_instance_p
->
carrier
.
mib
);
0
,
nr_mac_config_sib1
(
RC
.
nrmac
[
rrc_instance_p
->
module_id
],
rrc_instance_p
->
carrier
.
siblock1
);
ue_context_pP
->
ue_context
.
rnti
,
NULL
);
LOG_I
(
NR_RRC
,
LOG_I
(
NR_RRC
,
PROTOCOL_NR_RRC_CTXT_UE_FMT
" [RAPROC] Logical Channel DL-CCCH, Generating RRCSetup (bytes %d)
\n
"
,
PROTOCOL_NR_RRC_CTXT_UE_FMT
" [RAPROC] Logical Channel DL-CCCH, Generating RRCSetup (bytes %d)
\n
"
,
...
@@ -639,17 +616,7 @@ static void rrc_gNB_generate_defaultRRCReconfiguration(const protocol_ctxt_t *co
...
@@ -639,17 +616,7 @@ static void rrc_gNB_generate_defaultRRCReconfiguration(const protocol_ctxt_t *co
if
(
NODE_IS_DU
(
rrc
->
node_type
)
||
NODE_IS_MONOLITHIC
(
rrc
->
node_type
))
{
if
(
NODE_IS_DU
(
rrc
->
node_type
)
||
NODE_IS_MONOLITHIC
(
rrc
->
node_type
))
{
gNB_RRC_UE_t
*
ue_p
=
&
ue_context_pP
->
ue_context
;
gNB_RRC_UE_t
*
ue_p
=
&
ue_context_pP
->
ue_context
;
rrc_mac_config_req_gNB
(
rrc
->
module_id
,
nr_mac_update_cellgroup
(
RC
.
nrmac
[
rrc
->
module_id
],
ue_p
->
rnti
,
ue_p
->
masterCellGroup
);
rrc
->
configuration
.
pdsch_AntennaPorts
,
rrc
->
configuration
.
pusch_AntennaPorts
,
rrc
->
configuration
.
sib1_tda
,
rrc
->
configuration
.
minRXTXTIME
,
NULL
,
NULL
,
NULL
,
0
,
ue_p
->
rnti
,
ue_p
->
masterCellGroup
);
uint32_t
delay_ms
=
ue_context_pP
->
ue_context
.
masterCellGroup
&&
uint32_t
delay_ms
=
ue_context_pP
->
ue_context
.
masterCellGroup
&&
ue_context_pP
->
ue_context
.
masterCellGroup
->
spCellConfig
&&
ue_context_pP
->
ue_context
.
masterCellGroup
->
spCellConfig
&&
...
@@ -909,17 +876,7 @@ rrc_gNB_generate_dedicatedRRCReconfiguration(
...
@@ -909,17 +876,7 @@ rrc_gNB_generate_dedicatedRRCReconfiguration(
PDCP_TRANSMISSION_MODE_CONTROL
);
PDCP_TRANSMISSION_MODE_CONTROL
);
if
(
NODE_IS_DU
(
rrc
->
node_type
)
||
NODE_IS_MONOLITHIC
(
rrc
->
node_type
))
{
if
(
NODE_IS_DU
(
rrc
->
node_type
)
||
NODE_IS_MONOLITHIC
(
rrc
->
node_type
))
{
rrc_mac_config_req_gNB
(
rrc
->
module_id
,
nr_mac_update_cellgroup
(
RC
.
nrmac
[
rrc
->
module_id
],
ue_context_pP
->
ue_context
.
rnti
,
ue_context_pP
->
ue_context
.
masterCellGroup
);
rrc
->
configuration
.
pdsch_AntennaPorts
,
rrc
->
configuration
.
pusch_AntennaPorts
,
rrc
->
configuration
.
sib1_tda
,
rrc
->
configuration
.
minRXTXTIME
,
NULL
,
NULL
,
NULL
,
0
,
ue_context_pP
->
ue_context
.
rnti
,
ue_context_pP
->
ue_context
.
masterCellGroup
);
uint32_t
delay_ms
=
ue_context_pP
->
ue_context
.
masterCellGroup
&&
uint32_t
delay_ms
=
ue_context_pP
->
ue_context
.
masterCellGroup
&&
ue_context_pP
->
ue_context
.
masterCellGroup
->
spCellConfig
&&
ue_context_pP
->
ue_context
.
masterCellGroup
->
spCellConfig
&&
...
@@ -1726,19 +1683,7 @@ void rrc_gNB_process_RRCReestablishmentComplete(const protocol_ctxt_t *const ctx
...
@@ -1726,19 +1683,7 @@ void rrc_gNB_process_RRCReestablishmentComplete(const protocol_ctxt_t *const ctx
ctxt_pP
->
module_id
,
ctxt_pP
->
module_id
,
DCCH
);
DCCH
);
gNB_RrcConfigurationReq
*
configuration
=
&
RC
.
nrrrc
[
ctxt_pP
->
module_id
]
->
configuration
;
nr_mac_update_cellgroup
(
RC
.
nrmac
[
rrc
->
module_id
],
ue_context_pP
->
ue_context
.
rnti
,
cellGroupConfig
);
rrc_mac_config_req_gNB
(
ctxt_pP
->
module_id
,
configuration
->
pdsch_AntennaPorts
,
configuration
->
pusch_AntennaPorts
,
configuration
->
sib1_tda
,
configuration
->
minRXTXTIME
,
NULL
,
NULL
,
NULL
,
0
,
ue_context_pP
->
ue_context
.
rnti
,
cellGroupConfig
);
nr_rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_gNB_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
nr_rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_gNB_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
}
}
...
@@ -1791,18 +1736,7 @@ int nr_rrc_reconfiguration_req(rrc_gNB_ue_context_t *const ue_context_pP
...
@@ -1791,18 +1736,7 @@ int nr_rrc_reconfiguration_req(rrc_gNB_ue_context_t *const ue_context_pP
NULL
,
NULL
,
masterCellGroup
);
masterCellGroup
);
gNB_RrcConfigurationReq
*
configuration
=
&
RC
.
nrrrc
[
ctxt_pP
->
module_id
]
->
configuration
;
nr_mac_update_cellgroup
(
RC
.
nrmac
[
ctxt_pP
->
module_id
],
ue_context_pP
->
ue_context
.
rnti
,
masterCellGroup
);
rrc_mac_config_req_gNB
(
ctxt_pP
->
module_id
,
configuration
->
pdsch_AntennaPorts
,
configuration
->
pusch_AntennaPorts
,
configuration
->
sib1_tda
,
configuration
->
minRXTXTIME
,
NULL
,
NULL
,
NULL
,
0
,
ue_context_pP
->
ue_context
.
rnti
,
masterCellGroup
);
nr_rrc_data_req
(
ctxt_pP
,
nr_rrc_data_req
(
ctxt_pP
,
DCCH
,
DCCH
,
...
...
openair2/RRC/NR/rrc_gNB_NGAP.c
View file @
8b0ad24d
...
@@ -821,7 +821,6 @@ rrc_gNB_process_NGAP_DOWNLINK_NAS(
...
@@ -821,7 +821,6 @@ rrc_gNB_process_NGAP_DOWNLINK_NAS(
case
ngran_gNB
:
case
ngran_gNB
:
{
{
// rrc_mac_config_req_gNB
/* Transfer data to PDCP */
/* Transfer data to PDCP */
nr_rrc_data_req
(
nr_rrc_data_req
(
&
ctxt
,
&
ctxt
,
...
...
openair2/RRC/NR/rrc_gNB_nsa.c
View file @
8b0ad24d
...
@@ -348,31 +348,14 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
...
@@ -348,31 +348,14 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
rrc
->
Nb_ue
++
;
rrc
->
Nb_ue
++
;
// configure MAC and RLC
// configure MAC and RLC
if
(
NODE_IS_DU
(
rrc
->
node_type
))
{
bool
ret
=
false
;
rrc_mac_config_req_gNB
(
rrc
->
module_id
,
if
(
get_softmodem_params
()
->
phy_test
)
{
rrc
->
configuration
.
pdsch_AntennaPorts
,
// phytest mode: we don't set up RA, etc
rrc
->
configuration
.
pusch_AntennaPorts
,
ret
=
nr_mac_add_test_ue
(
RC
.
nrmac
[
rrc
->
module_id
],
ue_context_p
->
ue_id_rnti
,
ue_context_p
->
ue_context
.
secondaryCellGroup
);
rrc
->
configuration
.
sib1_tda
,
rrc
->
configuration
.
minRXTXTIME
,
rrc
->
carrier
.
servingcellconfigcommon
,
&
rrc
->
carrier
.
mib
,
NULL
,
1
,
// add_ue flag
ue_context_p
->
ue_id_rnti
,
ue_context_p
->
ue_context
.
secondaryCellGroup
);
}
else
{
}
else
{
rrc_mac_config_req_gNB
(
rrc
->
module_id
,
ret
=
nr_mac_prepare_ra_nsa_ue
(
RC
.
nrmac
[
rrc
->
module_id
],
ue_context_p
->
ue_id_rnti
,
ue_context_p
->
ue_context
.
secondaryCellGroup
);
rrc
->
configuration
.
pdsch_AntennaPorts
,
rrc
->
configuration
.
pusch_AntennaPorts
,
rrc
->
configuration
.
sib1_tda
,
rrc
->
configuration
.
minRXTXTIME
,
NULL
,
NULL
,
NULL
,
1
,
// add_ue flag
ue_context_p
->
ue_id_rnti
,
ue_context_p
->
ue_context
.
secondaryCellGroup
);
}
}
AssertFatal
(
ret
,
"cannot add NSA UE in MAC, aborting
\n
"
);
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
rrc
->
module_id
,
GNB_FLAG_YES
,
ue_context_p
->
ue_id_rnti
,
0
,
0
,
rrc
->
module_id
);
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
rrc
->
module_id
,
GNB_FLAG_YES
,
ue_context_p
->
ue_id_rnti
,
0
,
0
,
rrc
->
module_id
);
if
(
get_softmodem_params
()
->
do_ra
)
ctxt
.
enb_flag
=
0
;
if
(
get_softmodem_params
()
->
do_ra
)
ctxt
.
enb_flag
=
0
;
...
...
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