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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
7506d634
Commit
7506d634
authored
Mar 10, 2025
by
francescomani
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/f1-handover-minor-fixes' into integration_2025_w10
parents
46031d5f
501ac2c7
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
102 additions
and
32 deletions
+102
-32
ci-scripts/xml_files/container_5g_f1_rfsim.xml
ci-scripts/xml_files/container_5g_f1_rfsim.xml
+38
-2
ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml
ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml
+39
-5
openair2/RRC/NR/MESSAGES/asn1_msg.c
openair2/RRC/NR/MESSAGES/asn1_msg.c
+3
-6
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+15
-7
openair2/RRC/NR/rrc_gNB_mobility.c
openair2/RRC/NR/rrc_gNB_mobility.c
+7
-11
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-cu.sa.f1.conf
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-cu.sa.f1.conf
+0
-1
No files found.
ci-scripts/xml_files/container_5g_f1_rfsim.xml
View file @
7506d634
...
@@ -45,6 +45,10 @@
...
@@ -45,6 +45,10 @@
040023
040023
020022
020022
040024
040024
000024
040025
000031
030021
100021
100021
222222
222222
</TestCaseRequestedList>
</TestCaseRequestedList>
...
@@ -73,9 +77,9 @@
...
@@ -73,9 +77,9 @@
<testCase
id=
"000022"
>
<testCase
id=
"000022"
>
<class>
Deploy_Object
</class>
<class>
Deploy_Object
</class>
<desc>
Deploy OAI 5G CU
+DU+
UE RF sim SA
</desc>
<desc>
Deploy OAI 5G CU
+ DU-PCI0 +
UE RF sim SA
</desc>
<yaml_path>
ci-scripts/yaml_files/5g_f1_rfsimulator
</yaml_path>
<yaml_path>
ci-scripts/yaml_files/5g_f1_rfsimulator
</yaml_path>
<services>
oai-cu oai-du oai-nr-ue
</services>
<services>
oai-cu oai-du
-pci0
oai-nr-ue
</services>
<eNB_instance>
0
</eNB_instance>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
<eNB_serverId>
0
</eNB_serverId>
</testCase>
</testCase>
...
@@ -86,6 +90,12 @@
...
@@ -86,6 +90,12 @@
<idle_sleep_time_in_sec>
5
</idle_sleep_time_in_sec>
<idle_sleep_time_in_sec>
5
</idle_sleep_time_in_sec>
</testCase>
</testCase>
<testCase
id=
"000031"
>
<class>
IdleSleep
</class>
<desc>
Sleep
</desc>
<idle_sleep_time_in_sec>
2
</idle_sleep_time_in_sec>
</testCase>
<testCase
id=
"000023"
>
<testCase
id=
"000023"
>
<class>
Attach_UE
</class>
<class>
Attach_UE
</class>
<desc>
Attach OAI UE (Wait for IP)
</desc>
<desc>
Attach OAI UE (Wait for IP)
</desc>
...
@@ -93,6 +103,15 @@
...
@@ -93,6 +103,15 @@
<nodes>
cacofonix
</nodes>
<nodes>
cacofonix
</nodes>
</testCase>
</testCase>
<testCase
id=
"000024"
>
<class>
Deploy_Object
</class>
<desc>
Deploy OAI 5G (target) DU-PCI1 RF sim SA
</desc>
<yaml_path>
ci-scripts/yaml_files/5g_f1_rfsimulator
</yaml_path>
<services>
oai-du-pci1
</services>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
</testCase>
<testCase
id=
"020021"
>
<testCase
id=
"020021"
>
<class>
Ping
</class>
<class>
Ping
</class>
<desc>
Ping ext-dn from all NR-UEs
</desc>
<desc>
Ping ext-dn from all NR-UEs
</desc>
...
@@ -151,6 +170,15 @@
...
@@ -151,6 +170,15 @@
<ping_packetloss_threshold>
80
</ping_packetloss_threshold>
<ping_packetloss_threshold>
80
</ping_packetloss_threshold>
</testCase>
</testCase>
<testCase
id=
"020023"
>
<class>
Ping
</class>
<desc>
Ping ext-dn from all NR-UEs
</desc>
<id>
rfsim5g_ue
</id>
<nodes>
cacofonix
</nodes>
<ping_args>
-c 5 192.168.72.135 -i0.5 -w25
</ping_args>
<ping_packetloss_threshold>
80
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040002"
>
<testCase
id=
"040002"
>
<class>
Custom_Command
</class>
<class>
Custom_Command
</class>
<desc>
Verify Reestablishment
</desc>
<desc>
Verify Reestablishment
</desc>
...
@@ -191,6 +219,14 @@
...
@@ -191,6 +219,14 @@
<command_fail>
yes
</command_fail>
<command_fail>
yes
</command_fail>
</testCase>
</testCase>
<testCase
id=
"040025"
>
<class>
Custom_Command
</class>
<desc>
Trigger Handover
</desc>
<node>
cacofonix
</node>
<command>
echo ci trigger_f1_ho | nc 192.168.71.150 9090
</command>
<command_fail>
yes
</command_fail>
</testCase>
<testCase
id=
"100021"
>
<testCase
id=
"100021"
>
<class>
Undeploy_Object
</class>
<class>
Undeploy_Object
</class>
<always_exec>
true
</always_exec>
<always_exec>
true
</always_exec>
...
...
ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml
View file @
7506d634
...
@@ -90,6 +90,7 @@ services:
...
@@ -90,6 +90,7 @@ services:
environment
:
environment
:
USE_ADDITIONAL_OPTIONS
:
--log_config.global_log_options level,nocolor,time
USE_ADDITIONAL_OPTIONS
:
--log_config.global_log_options level,nocolor,time
--rfsimulator.options chanmod
--rfsimulator.options chanmod
--gNBs.[0].remote_s_address 0.0.0.0
--telnetsrv --telnetsrv.listenaddr 192.168.71.150
--telnetsrv --telnetsrv.listenaddr 192.168.71.150
--telnetsrv.shrmod ci
--telnetsrv.shrmod ci
ASAN_OPTIONS
:
detect_leaks=0:detect_odr_violation=0
ASAN_OPTIONS
:
detect_leaks=0:detect_odr_violation=0
...
@@ -106,9 +107,9 @@ services:
...
@@ -106,9 +107,9 @@ services:
timeout
:
5s
timeout
:
5s
retries
:
5
retries
:
5
oai-du
:
oai-du
-pci0
:
image
:
${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
image
:
${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
container_name
:
rfsim5g-oai-du
container_name
:
rfsim5g-oai-du
-pci0
cap_drop
:
cap_drop
:
-
ALL
-
ALL
environment
:
environment
:
...
@@ -117,9 +118,11 @@ services:
...
@@ -117,9 +118,11 @@ services:
--rfsimulator.options chanmod
--rfsimulator.options chanmod
--telnetsrv --telnetsrv.listenaddr 192.168.71.171
--telnetsrv --telnetsrv.listenaddr 192.168.71.171
--telnetsrv.shrmod ci
--telnetsrv.shrmod ci
--rfsimulator.serveraddr 192.168.71.181
ASAN_OPTIONS
:
detect_leaks=0:detect_odr_violation=0
ASAN_OPTIONS
:
detect_leaks=0:detect_odr_violation=0
depends_on
:
depends_on
:
-
oai-cu
-
oai-cu
-
oai-nr-ue
networks
:
networks
:
public_net
:
public_net
:
ipv4_address
:
192.168.71.171
ipv4_address
:
192.168.71.171
...
@@ -131,6 +134,37 @@ services:
...
@@ -131,6 +134,37 @@ services:
timeout
:
5s
timeout
:
5s
retries
:
5
retries
:
5
oai-du-pci1
:
image
:
${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
container_name
:
rfsim5g-oai-du-pci1
cap_drop
:
-
ALL
environment
:
USE_ADDITIONAL_OPTIONS
:
--rfsim
--log_config.global_log_options level,nocolor,time
--gNBs.[0].gNB_DU_ID
3585
--gNBs.[0].nr_cellid
11111111
--gNBs.[0].servingCellConfigCommon.[0].physCellId
1
--gNBs.[0].servingCellConfigCommon.[0].absoluteFrequencySSB
643296
--gNBs.[0].servingCellConfigCommon.[0].dl_absoluteFrequencyPointA
642024
--gNBs.[0].servingCellConfigCommon.[0].ssb_PositionsInBurst_Bitmap
3
--MACRLCs.[0].local_n_address 192.168.71.172
--rfsimulator.serveraddr 192.168.71.181
ASAN_OPTIONS
:
detect_leaks=0:detect_odr_violation=0
depends_on
:
-
oai-cu
-
oai-nr-ue
networks
:
public_net
:
ipv4_address
:
192.168.71.172
volumes
:
-
../../conf_files/gnb-du.sa.band78.106prb.rfsim.conf:/opt/oai-gnb/etc/gnb.conf
healthcheck
:
test
:
/bin/bash -c "pgrep nr-softmodem"
interval
:
10s
timeout
:
5s
retries
:
5
oai-nr-ue
:
oai-nr-ue
:
image
:
${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop}
image
:
${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop}
container_name
:
rfsim5g-oai-nr-ue
container_name
:
rfsim5g-oai-nr-ue
...
@@ -143,12 +177,12 @@ services:
...
@@ -143,12 +177,12 @@ services:
USE_ADDITIONAL_OPTIONS
:
--rfsim --log_config.global_log_options level,nocolor,time
USE_ADDITIONAL_OPTIONS
:
--rfsim --log_config.global_log_options level,nocolor,time
-r 106 --numerology 1 -C
3619200000
-r 106 --numerology 1 -C
3619200000
--uicc0.imsi
208990100001100
--uicc0.imsi
208990100001100
--rfsimulator.serveraddr 192.168.71.171
--rfsimulator.options chanmod
--rfsimulator.options chanmod
--rfsimulator.serveraddr server
--telnetsrv --telnetsrv.shrmod ciUE --telnetsrv.listenaddr 192.168.71.181 --telnetsrv.listenport
8091
--telnetsrv --telnetsrv.shrmod ciUE --telnetsrv.listenaddr 192.168.71.181 --telnetsrv.listenport
8091
--channelmod.modellist_rfsimu_1.[0].model_name rfsimu_channel_ue0
--channelmod.modellist_rfsimu_1.[1].model_name rfsimu_channel_ue1
ASAN_OPTIONS
:
detect_odr_violation=0
ASAN_OPTIONS
:
detect_odr_violation=0
depends_on
:
-
oai-du
networks
:
networks
:
public_net
:
public_net
:
ipv4_address
:
192.168.71.181
ipv4_address
:
192.168.71.181
...
...
openair2/RRC/NR/MESSAGES/asn1_msg.c
View file @
7506d634
...
@@ -1415,15 +1415,12 @@ int do_NR_Paging(uint8_t Mod_id, uint8_t *buffer, uint32_t tmsi)
...
@@ -1415,15 +1415,12 @@ int do_NR_Paging(uint8_t Mod_id, uint8_t *buffer, uint32_t tmsi)
* in encoded form which we decode + add to the handoverPreparationInformation */
* in encoded form which we decode + add to the handoverPreparationInformation */
int
do_NR_HandoverPreparationInformation
(
const
uint8_t
*
uecap_buf
,
int
uecap_buf_size
,
uint8_t
*
buf
,
int
buf_size
)
int
do_NR_HandoverPreparationInformation
(
const
uint8_t
*
uecap_buf
,
int
uecap_buf_size
,
uint8_t
*
buf
,
int
buf_size
)
{
{
NR_HandoverPreparationInformation_t
*
hpi
=
calloc
(
1
,
sizeof
(
*
hpi
));
NR_HandoverPreparationInformation_t
*
hpi
=
calloc_or_fail
(
1
,
sizeof
(
*
hpi
));
AssertFatal
(
hpi
!=
NULL
,
"out of memory
\n
"
);
hpi
->
criticalExtensions
.
present
=
NR_HandoverPreparationInformation__criticalExtensions_PR_c1
;
hpi
->
criticalExtensions
.
present
=
NR_HandoverPreparationInformation__criticalExtensions_PR_c1
;
hpi
->
criticalExtensions
.
choice
.
c1
=
calloc
(
1
,
sizeof
(
*
hpi
->
criticalExtensions
.
choice
.
c1
));
hpi
->
criticalExtensions
.
choice
.
c1
=
calloc_or_fail
(
1
,
sizeof
(
*
hpi
->
criticalExtensions
.
choice
.
c1
));
AssertFatal
(
hpi
->
criticalExtensions
.
choice
.
c1
!=
NULL
,
"out of memory
\n
"
);
hpi
->
criticalExtensions
.
choice
.
c1
->
present
=
hpi
->
criticalExtensions
.
choice
.
c1
->
present
=
NR_HandoverPreparationInformation__criticalExtensions__c1_PR_handoverPreparationInformation
;
NR_HandoverPreparationInformation__criticalExtensions__c1_PR_handoverPreparationInformation
;
NR_HandoverPreparationInformation_IEs_t
*
hpi_ie
=
calloc
(
1
,
sizeof
(
*
hpi_ie
));
NR_HandoverPreparationInformation_IEs_t
*
hpi_ie
=
calloc_or_fail
(
1
,
sizeof
(
*
hpi_ie
));
AssertFatal
(
hpi_ie
!=
NULL
,
"out of memory
\n
"
);
hpi
->
criticalExtensions
.
choice
.
c1
->
choice
.
handoverPreparationInformation
=
hpi_ie
;
hpi
->
criticalExtensions
.
choice
.
c1
->
choice
.
handoverPreparationInformation
=
hpi_ie
;
NR_UE_CapabilityRAT_ContainerList_t
*
list
=
NULL
;
NR_UE_CapabilityRAT_ContainerList_t
*
list
=
NULL
;
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
7506d634
...
@@ -1276,7 +1276,11 @@ static void process_Event_Based_Measurement_Report(gNB_RRC_UE_t *ue, NR_ReportCo
...
@@ -1276,7 +1276,11 @@ static void process_Event_Based_Measurement_Report(gNB_RRC_UE_t *ue, NR_ReportCo
break
;
break
;
case
NR_EventTriggerConfig__eventId_PR_eventA3
:
{
case
NR_EventTriggerConfig__eventId_PR_eventA3
:
{
LOG_W
(
NR_RRC
,
"HO LOG: Event A3 Report - Neighbour Becomes Better than Serving!
\n
"
);
LOG_W
(
NR_RRC
,
"HO LOG: Event A3 Report for UE %d - Neighbour Becomes Better than Serving!
\n
"
,
ue
->
rrc_ue_id
);
if
(
!
measurementReport
->
criticalExtensions
.
choice
.
measurementReport
)
{
LOG_E
(
NR_RRC
,
"HO LOG: Event A3 Report: measurementReport is null
\n
"
);
break
;
}
const
NR_MeasResults_t
*
measResults
=
&
measurementReport
->
criticalExtensions
.
choice
.
measurementReport
->
measResults
;
const
NR_MeasResults_t
*
measResults
=
&
measurementReport
->
criticalExtensions
.
choice
.
measurementReport
->
measResults
;
for
(
int
serving_cell_idx
=
0
;
serving_cell_idx
<
measResults
->
measResultServingMOList
.
list
.
count
;
serving_cell_idx
++
)
{
for
(
int
serving_cell_idx
=
0
;
serving_cell_idx
<
measResults
->
measResultServingMOList
.
list
.
count
;
serving_cell_idx
++
)
{
...
@@ -1290,11 +1294,11 @@ static void process_Event_Based_Measurement_Report(gNB_RRC_UE_t *ue, NR_ReportCo
...
@@ -1290,11 +1294,11 @@ static void process_Event_Based_Measurement_Report(gNB_RRC_UE_t *ue, NR_ReportCo
LOG_D
(
NR_RRC
,
"Serving Cell RSRP: %d
\n
"
,
servingCellRSRP
);
LOG_D
(
NR_RRC
,
"Serving Cell RSRP: %d
\n
"
,
servingCellRSRP
);
}
}
if
(
measResults
->
measResultNeighCells
==
NULL
)
if
(
measResults
->
measResultNeighCells
==
NULL
||
break
;
measResults
->
measResultNeighCells
->
present
!=
NR_MeasResults__measResultNeighCells_PR_measResultListNR
)
{
LOG_D
(
NR_RRC
,
"HO LOG: No neighbor cell measurements available
\n
"
);
if
(
measResults
->
measResultNeighCells
->
present
!=
NR_MeasResults__measResultNeighCells_PR_measResultListNR
)
break
;
break
;
}
const
NR_MeasResultListNR_t
*
measResultListNR
=
measResults
->
measResultNeighCells
->
choice
.
measResultListNR
;
const
NR_MeasResultListNR_t
*
measResultListNR
=
measResults
->
measResultNeighCells
->
choice
.
measResultListNR
;
for
(
int
neigh_meas_idx
=
0
;
neigh_meas_idx
<
measResultListNR
->
list
.
count
;
neigh_meas_idx
++
)
{
for
(
int
neigh_meas_idx
=
0
;
neigh_meas_idx
<
measResultListNR
->
list
.
count
;
neigh_meas_idx
++
)
{
...
@@ -1392,7 +1396,7 @@ static void rrc_gNB_process_MeasurementReport(gNB_RRC_UE_t *UE, NR_MeasurementRe
...
@@ -1392,7 +1396,7 @@ static void rrc_gNB_process_MeasurementReport(gNB_RRC_UE_t *UE, NR_MeasurementRe
}
}
}
}
if
(
report_config
==
NULL
)
{
if
(
report_config
==
NULL
||
report_config
->
choice
.
reportConfigNR
==
NULL
)
{
LOG_E
(
NR_RRC
,
"There is no related report configuration for this measId!
\n
"
);
LOG_E
(
NR_RRC
,
"There is no related report configuration for this measId!
\n
"
);
return
;
return
;
}
}
...
@@ -1741,7 +1745,11 @@ static int rrc_gNB_decode_dcch(gNB_RRC_INST *rrc, const f1ap_ul_rrc_message_t *m
...
@@ -1741,7 +1745,11 @@ static int rrc_gNB_decode_dcch(gNB_RRC_INST *rrc, const f1ap_ul_rrc_message_t *m
break
;
break
;
case
NR_UL_DCCH_MessageType__c1_PR_measurementReport
:
case
NR_UL_DCCH_MessageType__c1_PR_measurementReport
:
if
(
ul_dcch_msg
->
message
.
choice
.
c1
->
choice
.
measurementReport
!=
NULL
)
{
rrc_gNB_process_MeasurementReport
(
UE
,
ul_dcch_msg
->
message
.
choice
.
c1
->
choice
.
measurementReport
);
rrc_gNB_process_MeasurementReport
(
UE
,
ul_dcch_msg
->
message
.
choice
.
c1
->
choice
.
measurementReport
);
}
else
{
LOG_E
(
NR_RRC
,
"UE %d: No measurementReport CHOICE is given
\n
"
,
ue_context_p
->
ue_context
.
rrc_ue_id
);
}
break
;
break
;
case
NR_UL_DCCH_MessageType__c1_PR_ulInformationTransfer
:
case
NR_UL_DCCH_MessageType__c1_PR_ulInformationTransfer
:
...
...
openair2/RRC/NR/rrc_gNB_mobility.c
View file @
7506d634
...
@@ -39,15 +39,12 @@
...
@@ -39,15 +39,12 @@
typedef
enum
{
HO_CTX_BOTH
,
HO_CTX_SOURCE
,
HO_CTX_TARGET
}
ho_ctx_type_t
;
typedef
enum
{
HO_CTX_BOTH
,
HO_CTX_SOURCE
,
HO_CTX_TARGET
}
ho_ctx_type_t
;
static
nr_handover_context_t
*
alloc_ho_ctx
(
ho_ctx_type_t
type
)
static
nr_handover_context_t
*
alloc_ho_ctx
(
ho_ctx_type_t
type
)
{
{
nr_handover_context_t
*
ho_ctx
=
calloc
(
1
,
sizeof
(
*
ho_ctx
));
nr_handover_context_t
*
ho_ctx
=
calloc_or_fail
(
1
,
sizeof
(
*
ho_ctx
));
AssertFatal
(
ho_ctx
!=
NULL
,
"out of memory
\n
"
);
if
(
type
==
HO_CTX_SOURCE
||
type
==
HO_CTX_BOTH
)
{
if
(
type
==
HO_CTX_SOURCE
||
type
==
HO_CTX_BOTH
)
{
ho_ctx
->
source
=
calloc
(
1
,
sizeof
(
*
ho_ctx
->
source
));
ho_ctx
->
source
=
calloc_or_fail
(
1
,
sizeof
(
*
ho_ctx
->
source
));
AssertFatal
(
ho_ctx
->
source
!=
NULL
,
"out of memory
\n
"
);
}
}
if
(
type
==
HO_CTX_TARGET
||
type
==
HO_CTX_BOTH
)
{
if
(
type
==
HO_CTX_TARGET
||
type
==
HO_CTX_BOTH
)
{
ho_ctx
->
target
=
calloc
(
1
,
sizeof
(
*
ho_ctx
->
target
));
ho_ctx
->
target
=
calloc_or_fail
(
1
,
sizeof
(
*
ho_ctx
->
target
));
AssertFatal
(
ho_ctx
->
target
!=
NULL
,
"out of memory
\n
"
);
}
}
return
ho_ctx
;
return
ho_ctx
;
}
}
...
@@ -132,9 +129,9 @@ static void nr_initiate_handover(const gNB_RRC_INST *rrc,
...
@@ -132,9 +129,9 @@ static void nr_initiate_handover(const gNB_RRC_INST *rrc,
.
handoverPreparationInfo_length
=
ho_prep_len
,
.
handoverPreparationInfo_length
=
ho_prep_len
,
};
};
f1ap_drb_to_be_setup_t
drbs
[
32
]
=
{
0
};
// maximum DRB can be 32
f1ap_drb_to_be_setup_t
drbs
[
MAX_DRBS_PER_UE
]
=
{
0
};
int
nb_drb
=
0
;
int
nb_drb
=
0
;
for
(
int
i
=
0
;
i
<
32
;
++
i
)
{
/* for each DRB */
for
(
int
i
=
0
;
i
<
sizeofArray
(
drbs
);
++
i
)
{
drb_t
*
rrc_drb
=
&
ue
->
established_drbs
[
i
];
drb_t
*
rrc_drb
=
&
ue
->
established_drbs
[
i
];
if
(
rrc_drb
->
status
==
DRB_INACTIVE
)
if
(
rrc_drb
->
status
==
DRB_INACTIVE
)
continue
;
continue
;
...
@@ -157,8 +154,7 @@ static void nr_initiate_handover(const gNB_RRC_INST *rrc,
...
@@ -157,8 +154,7 @@ static void nr_initiate_handover(const gNB_RRC_INST *rrc,
// this changes
// this changes
AssertFatal
(
pdu
->
param
.
nb_qos
==
1
,
"only 1 Qos flow supported
\n
"
);
AssertFatal
(
pdu
->
param
.
nb_qos
==
1
,
"only 1 Qos flow supported
\n
"
);
drb
->
drb_info
.
flows_to_be_setup_length
=
1
;
drb
->
drb_info
.
flows_to_be_setup_length
=
1
;
drb
->
drb_info
.
flows_mapped_to_drb
=
calloc
(
1
,
sizeof
(
f1ap_flows_mapped_to_drb_t
));
drb
->
drb_info
.
flows_mapped_to_drb
=
calloc_or_fail
(
1
,
sizeof
(
f1ap_flows_mapped_to_drb_t
));
AssertFatal
(
drb
->
drb_info
.
flows_mapped_to_drb
,
"could not allocate memory
\n
"
);
int
qfi
=
rrc_drb
->
cnAssociation
.
sdap_config
.
mappedQoS_FlowsToAdd
[
0
];
int
qfi
=
rrc_drb
->
cnAssociation
.
sdap_config
.
mappedQoS_FlowsToAdd
[
0
];
DevAssert
(
qfi
>
0
);
DevAssert
(
qfi
>
0
);
drb
->
drb_info
.
flows_mapped_to_drb
[
0
].
qfi
=
qfi
;
drb
->
drb_info
.
flows_mapped_to_drb
[
0
].
qfi
=
qfi
;
...
@@ -283,7 +279,7 @@ static void nr_rrc_f1_ho_complete(gNB_RRC_INST *rrc, gNB_RRC_UE_t *UE)
...
@@ -283,7 +279,7 @@ static void nr_rrc_f1_ho_complete(gNB_RRC_INST *rrc, gNB_RRC_UE_t *UE)
f1ap_ue_context_release_cmd_t
cmd
=
{
f1ap_ue_context_release_cmd_t
cmd
=
{
.
gNB_CU_ue_id
=
UE
->
rrc_ue_id
,
.
gNB_CU_ue_id
=
UE
->
rrc_ue_id
,
.
gNB_DU_ue_id
=
source_ctx
->
du_ue_id
,
.
gNB_DU_ue_id
=
source_ctx
->
du_ue_id
,
.
cause
=
F1AP_CAUSE_RADIO_NETWORK
,
// better
.
cause
=
F1AP_CAUSE_RADIO_NETWORK
,
.
cause_value
=
5
,
// 5 = F1AP_CauseRadioNetwork_interaction_with_other_procedure
.
cause_value
=
5
,
// 5 = F1AP_CauseRadioNetwork_interaction_with_other_procedure
.
srb_id
=
DL_SCH_LCID_DCCH
,
.
srb_id
=
DL_SCH_LCID_DCCH
,
};
};
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-cu.sa.f1.conf
View file @
7506d634
Active_gNBs
= (
"cu-rfsim"
);
Active_gNBs
= (
"cu-rfsim"
);
# Asn1_verbosity, choice in: none, info, annoying
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity
=
"none"
;
Asn1_verbosity
=
"none"
;
Num_Threads_PUSCH
=
8
;
gNBs
=
gNBs
=
(
(
...
...
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