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
6bb14205
Commit
6bb14205
authored
May 07, 2022
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop' into if5_ECPRI_rework
parents
8e579470
d11350c0
Changes
25
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
287 additions
and
157 deletions
+287
-157
ci-scripts/cls_containerize.py
ci-scripts/cls_containerize.py
+3
-0
ci-scripts/conf_files/gnb.sa.band66.fr1.106PRB.usrpn300.conf
ci-scripts/conf_files/gnb.sa.band66.fr1.106PRB.usrpn300.conf
+3
-3
ci-scripts/flatten_image.py
ci-scripts/flatten_image.py
+116
-0
ci-scripts/ran.py
ci-scripts/ran.py
+30
-42
ci-scripts/xml_files/container_5g_fdd_rfsim.xml
ci-scripts/xml_files/container_5g_fdd_rfsim.xml
+3
-5
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+4
-0
openair1/SIMULATION/NR_PHY/prachsim.c
openair1/SIMULATION/NR_PHY/prachsim.c
+4
-0
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+5
-0
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+1
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
+1
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+26
-9
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+30
-20
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
+6
-14
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+13
-15
openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
+0
-1
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+1
-0
openair2/RRC/NR/rrc_gNB_nsa.c
openair2/RRC/NR/rrc_gNB_nsa.c
+15
-17
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+3
-1
openair2/X2AP/x2ap_eNB.c
openair2/X2AP/x2ap_eNB.c
+7
-12
openair3/NAS/UE/EMM/Authentication.c
openair3/NAS/UE/EMM/Authentication.c
+5
-2
openair3/NAS/UE/EMM/Authentication.h
openair3/NAS/UE/EMM/Authentication.h
+2
-0
openair3/SCTP/sctp_common.h
openair3/SCTP/sctp_common.h
+1
-1
openair3/SCTP/sctp_eNB_task.c
openair3/SCTP/sctp_eNB_task.c
+7
-11
targets/PROJECTS/GENERIC-NR-5GC/CONF/cu_gnb.conf
targets/PROJECTS/GENERIC-NR-5GC/CONF/cu_gnb.conf
+0
-2
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.band78.tm1.106PRB.usrpn300.gtp-itti.conf
...-NR-5GC/CONF/gnb.band78.tm1.106PRB.usrpn300.gtp-itti.conf
+1
-0
No files found.
ci-scripts/cls_containerize.py
View file @
6bb14205
...
...
@@ -294,6 +294,9 @@ class Containerize():
if
image
!=
'ran-build'
:
mySSH
.
command
(
'sed -i -e "s#'
+
"ran-build"
+
':latest#'
+
"ran-build"
+
':'
+
imageTag
+
'#" docker/Dockerfile.'
+
pattern
+
self
.
dockerfileprefix
,
'\$'
,
5
)
mySSH
.
command
(
self
.
cli
+
' build '
+
self
.
cliBuildOptions
+
' --target '
+
image
+
' --tag '
+
image
+
':'
+
imageTag
+
' --file docker/Dockerfile.'
+
pattern
+
self
.
dockerfileprefix
+
' . > cmake_targets/log/'
+
image
+
'.log 2>&1'
,
'\$'
,
1200
)
# Flatten Image
if
image
!=
'ran-build'
:
mySSH
.
command
(
'python3 ./ci-scripts/flatten_image.py --tag '
+
image
+
':'
+
imageTag
,
'\$'
,
300
)
# split the log
mySSH
.
command
(
'mkdir -p cmake_targets/log/'
+
image
,
'\$'
,
5
)
mySSH
.
command
(
'python3 ci-scripts/docker_log_split.py --logfilename=cmake_targets/log/'
+
image
+
'.log'
,
'\$'
,
5
)
...
...
ci-scripts/conf_files/gnb.sa.band66.fr1.106PRB.usrpn300.conf
View file @
6bb14205
...
...
@@ -63,8 +63,8 @@ gNBs =
dl_carrierBandwidth
=
106
;
#initialDownlinkBWP
#genericParameters
# this is RBstart=
27,L=48
(275*(L-1))+RBstart
initialDLBWPlocationAndBandwidth
=
13475
;
# 6366 12925 12956 28875 12952
# this is RBstart=
0,L=106
(275*(L-1))+RBstart
initialDLBWPlocationAndBandwidth
=
28875
;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing
=
1
;
...
...
@@ -85,7 +85,7 @@ gNBs =
pMax
=
20
;
#initialUplinkBWP
#genericParameters
initialULBWPlocationAndBandwidth
=
134
75
;
initialULBWPlocationAndBandwidth
=
288
75
;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing
=
1
;
...
...
ci-scripts/flatten_image.py
0 → 100644
View file @
6bb14205
"""
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The OpenAirInterface Software Alliance licenses this file to You under
the OAI Public License, Version 1.1 (the "License"); you may not use this file
except in compliance with the License.
You may obtain a copy of the License at
http://www.openairinterface.org/?page_id=698
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-------------------------------------------------------------------------------
For more information about the OpenAirInterface (OAI) Software Alliance:
contact@openairinterface.org
"""
import
argparse
import
re
import
subprocess
import
sys
def
main
()
->
None
:
args
=
_parse_args
()
status
=
perform_flattening
(
args
.
tag
)
sys
.
exit
(
status
)
def
_parse_args
()
->
argparse
.
Namespace
:
parser
=
argparse
.
ArgumentParser
(
description
=
'Flattening Image'
)
parser
.
add_argument
(
'--tag'
,
'-t'
,
action
=
'store'
,
required
=
True
,
help
=
'Image Tag in image-name:image tag format'
,
)
return
parser
.
parse_args
()
def
perform_flattening
(
tag
):
# First detect which docker/podman command to use
cli
=
''
image_prefix
=
''
cmd
=
'which podman || true'
podman_check
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
universal_newlines
=
True
)
if
re
.
search
(
'podman'
,
podman_check
.
strip
()):
cli
=
'sudo podman'
image_prefix
=
'localhost/'
if
cli
==
''
:
cmd
=
'which docker || true'
docker_check
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
universal_newlines
=
True
)
if
re
.
search
(
'docker'
,
docker_check
.
strip
()):
cli
=
'docker'
image_prefix
=
''
if
cli
==
''
:
print
(
'No docker / podman installed: quitting'
)
return
-
1
print
(
f'Flattening
{
tag
}
'
)
# Creating a container
cmd
=
cli
+
' run --name test-flatten --entrypoint /bin/true -d '
+
tag
print
(
cmd
)
subprocess
.
check_output
(
cmd
,
shell
=
True
,
universal_newlines
=
True
)
# Export / Import trick
cmd
=
cli
+
' export test-flatten | '
+
cli
+
' import '
# Bizarro syntax issue with podman
if
cli
==
'docker'
:
cmd
+=
' --change "ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" '
else
:
cmd
+=
' --change "ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" '
if
re
.
search
(
'oai-enb'
,
tag
):
cmd
+=
' --change "WORKDIR /opt/oai-enb" '
cmd
+=
' --change "EXPOSE 2152/udp" '
cmd
+=
' --change "EXPOSE 36412/udp" '
cmd
+=
' --change "EXPOSE 36422/udp" '
cmd
+=
' --change "CMD [
\\
"/opt/oai-enb/bin/lte-softmodem.Rel15
\\
",
\\
"-O
\\
",
\\
"/opt/oai-enb/etc/enb.conf
\\
"]" '
cmd
+=
' --change "ENTRYPOINT [
\\
"/opt/oai-enb/bin/entrypoint.sh
\\
"]" '
if
re
.
search
(
'oai-gnb'
,
tag
):
cmd
+=
' --change "WORKDIR /opt/oai-gnb" '
cmd
+=
' --change "EXPOSE 2152/udp" '
cmd
+=
' --change "EXPOSE 36422/udp" '
cmd
+=
' --change "CMD [
\\
"/opt/oai-gnb/bin/nr-softmodem.Rel15
\\
",
\\
"-O
\\
",
\\
"/opt/oai-gnb/etc/gnb.conf
\\
"]" '
cmd
+=
' --change "ENTRYPOINT [
\\
"/opt/oai-gnb/bin/entrypoint.sh
\\
"]" '
if
re
.
search
(
'oai-lte-ue'
,
tag
):
cmd
+=
' --change "WORKDIR /opt/oai-lte-ue" '
cmd
+=
' --change "CMD [
\\
"/opt/oai-lte-ue/bin/lte-uesoftmodem.Rel15
\\
"]" '
cmd
+=
' --change "ENTRYPOINT [
\\
"/opt/oai-lte-ue/bin/entrypoint.sh
\\
"]" '
if
re
.
search
(
'oai-nr-ue'
,
tag
):
cmd
+=
' --change "WORKDIR /opt/oai-nr-ue" '
cmd
+=
' --change "CMD [
\\
"/opt/oai-nr-ue/bin/nr-uesoftmodem.Rel15
\\
",
\\
"-O
\\
",
\\
"/opt/oai-nr-ue/etc/nr-ue.conf
\\
"]" '
cmd
+=
' --change "ENTRYPOINT [
\\
"/opt/oai-nr-ue/bin/entrypoint.sh
\\
"]" '
if
re
.
search
(
'oai-lte-ru'
,
tag
):
cmd
+=
' --change "WORKDIR /opt/oai-lte-ru" '
cmd
+=
' --change "CMD [
\\
"/opt/oai-lte-ru/bin/oairu.Rel15
\\
",
\\
"-O
\\
",
\\
"/opt/oai-lte-ru/etc/rru.conf
\\
"]" '
cmd
+=
' --change "ENTRYPOINT [
\\
"/opt/oai-lte-ru/bin/entrypoint.sh
\\
"]" '
if
re
.
search
(
'oai-physim'
,
tag
):
cmd
+=
' --change "WORKDIR /opt/oai-physim" '
cmd
+=
' - '
+
image_prefix
+
tag
print
(
cmd
)
subprocess
.
check_output
(
cmd
,
shell
=
True
,
universal_newlines
=
True
)
# Remove container
cmd
=
cli
+
' rm -f test-flatten'
print
(
cmd
)
subprocess
.
check_output
(
cmd
,
shell
=
True
,
universal_newlines
=
True
)
# At this point the original image is a dangling image.
# CI pipeline will clean up (`image prune --force`)
return
0
if
__name__
==
'__main__'
:
main
()
ci-scripts/ran.py
View file @
6bb14205
...
...
@@ -372,36 +372,28 @@ class RANManagement():
else
:
pcapfile_prefix
=
"gnb_"
mySSH
.
open
(
lIpAddr
,
lUserName
,
lPassWord
)
mySSH
.
command
(
'ip addr show | awk -f /tmp/active_net_interfaces.awk | egrep -v "lo|tun"'
,
'\$'
,
5
)
result
=
re
.
search
(
'interfaceToUse=(?P<eth_interface>[a-zA-Z0-9\-\_]+)done'
,
mySSH
.
getBefore
())
if
result
is
not
None
:
eth_interface
=
result
.
group
(
'eth_interface'
)
fltr
=
'port 38412 or port 36412 or port 36422'
# NGAP, S1AP, X2AP
logging
.
debug
(
'
\u001B
[1m Launching tshark on interface '
+
eth_interface
+
' with filter "'
+
fltr
+
'"
\u001B
[0m'
)
pcapfile
=
pcapfile_prefix
+
self
.
testCase_id
+
'_log.pcap'
mySSH
.
command
(
'echo '
+
lPassWord
+
' | sudo -S rm -f /tmp/'
+
pcapfile
,
'\$'
,
5
)
mySSH
.
command
(
'echo $USER; nohup sudo -E tshark -i '
+
eth_interface
+
' -f "'
+
fltr
+
'" -w /tmp/'
+
pcapfile
+
' > /dev/null 2>&1 &'
,
'\$'
,
5
)
eth_interface
=
'any'
fltr
=
'sctp'
logging
.
debug
(
'
\u001B
[1m Launching tshark on interface '
+
eth_interface
+
' with filter "'
+
fltr
+
'"
\u001B
[0m'
)
pcapfile
=
pcapfile_prefix
+
self
.
testCase_id
+
'_log.pcap'
mySSH
.
command
(
'echo '
+
lPassWord
+
' | sudo -S rm -f /tmp/'
+
pcapfile
,
'\$'
,
5
)
mySSH
.
command
(
'echo $USER; nohup sudo -E tshark -i '
+
eth_interface
+
' -f "'
+
fltr
+
'" -w /tmp/'
+
pcapfile
+
' > /dev/null 2>&1 &'
,
'\$'
,
5
)
mySSH
.
close
()
# If tracer options is on, running tshark on EPC side and capture traffic b/ EPC and eNB
result
=
re
.
search
(
'T_stdout'
,
str
(
self
.
Initialize_eNB_args
))
if
(
result
is
not
None
):
localEpcIpAddr
=
EPC
.
IPAddress
localEpcUserName
=
EPC
.
UserName
localEpcPassword
=
EPC
.
Password
mySSH
.
open
(
localEpcIpAddr
,
localEpcUserName
,
localEpcPassword
)
mySSH
.
command
(
'ip addr show | awk -f /tmp/active_net_interfaces.awk | egrep -v "lo|tun"'
,
'\$'
,
5
)
result
=
re
.
search
(
'interfaceToUse=(?P<eth_interface>[a-zA-Z0-9\-\_]+)done'
,
mySSH
.
getBefore
())
if
result
is
not
None
:
eth_interface
=
result
.
group
(
'eth_interface'
)
fltr
=
'port 38412 or port 36412 or port 36422'
# NGAP, S1AP, X2AP
logging
.
debug
(
'
\u001B
[1m Launching tshark on interface '
+
eth_interface
+
' with filter "'
+
fltr
+
'"
\u001B
[0m'
)
self
.
epcPcapFile
=
'enb_'
+
self
.
testCase_id
+
'_s1log.pcap'
mySSH
.
command
(
'echo '
+
localEpcPassword
+
' | sudo -S rm -f /tmp/'
+
self
.
epcPcapFile
,
'\$'
,
5
)
mySSH
.
command
(
'echo $USER; nohup sudo tshark -f "host '
+
lIpAddr
+
'" -i '
+
eth_interface
+
' -f "'
+
fltr
+
'" -w /tmp/'
+
self
.
epcPcapFile
+
' > /tmp/tshark.log 2>&1 &'
,
localEpcUserName
,
5
)
mySSH
.
close
()
localEpcIpAddr
=
EPC
.
IPAddress
localEpcUserName
=
EPC
.
UserName
localEpcPassword
=
EPC
.
Password
mySSH
.
open
(
localEpcIpAddr
,
localEpcUserName
,
localEpcPassword
)
eth_interface
=
'any'
fltr
=
'sctp'
logging
.
debug
(
'
\u001B
[1m Launching tshark on interface '
+
eth_interface
+
' with filter "'
+
fltr
+
'"
\u001B
[0m'
)
self
.
epcPcapFile
=
'enb_'
+
self
.
testCase_id
+
'_s1log.pcap'
mySSH
.
command
(
'echo '
+
localEpcPassword
+
' | sudo -S rm -f /tmp/'
+
self
.
epcPcapFile
,
'\$'
,
5
)
mySSH
.
command
(
'echo $USER; nohup sudo tshark -f "host '
+
lIpAddr
+
'" -i '
+
eth_interface
+
' -f "'
+
fltr
+
'" -w /tmp/'
+
self
.
epcPcapFile
+
' > /tmp/tshark.log 2>&1 &'
,
localEpcUserName
,
5
)
mySSH
.
close
()
mySSH
.
open
(
lIpAddr
,
lUserName
,
lPassWord
)
mySSH
.
command
(
'cd '
+
lSourcePath
,
'\$'
,
5
)
# Initialize_eNB_args usually start with -O and followed by the location in repository
...
...
@@ -519,23 +511,19 @@ class RANManagement():
logging
.
error
(
'
\u001B
[1;37;41m eNB/gNB/ocp-eNB logging system did not show got sync!
\u001B
[0m'
)
HTML
.
CreateHtmlTestRow
(
self
.
air_interface
[
self
.
eNB_instance
]
+
' -O '
+
config_file
+
extra_options
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
# In case of T tracer recording, we need to kill tshark on EPC side
result
=
re
.
search
(
'T_stdout'
,
str
(
self
.
Initialize_eNB_args
))
if
(
result
is
not
None
):
localEpcIpAddr
=
EPC
.
IPAddress
localEpcUserName
=
EPC
.
UserName
localEpcPassword
=
EPC
.
Password
mySSH
.
open
(
localEpcIpAddr
,
localEpcUserName
,
localEpcPassword
)
logging
.
debug
(
'
\u001B
[1m Stopping tshark
\u001B
[0m'
)
mySSH
.
command
(
'echo '
+
localEpcPassword
+
' | sudo -S killall --signal SIGKILL tshark'
,
'\$'
,
5
)
if
self
.
epcPcapFile
!=
''
:
time
.
sleep
(
0.5
)
mySSH
.
command
(
'echo '
+
localEpcPassword
+
' | sudo -S chmod 666 /tmp/'
+
self
.
epcPcapFile
,
'\$'
,
5
)
mySSH
.
close
()
time
.
sleep
(
1
)
if
self
.
epcPcapFile
!=
''
:
copyin_res
=
mySSH
.
copyin
(
localEpcIpAddr
,
localEpcUserName
,
localEpcPassword
,
'/tmp/'
+
self
.
epcPcapFile
,
'.'
)
if
(
copyin_res
==
0
):
mySSH
.
copyout
(
lIpAddr
,
lUserName
,
lPassWord
,
self
.
epcPcapFile
,
lSourcePath
+
'/cmake_targets/.'
)
localEpcIpAddr
=
EPC
.
IPAddress
localEpcUserName
=
EPC
.
UserName
localEpcPassword
=
EPC
.
Password
mySSH
.
open
(
localEpcIpAddr
,
localEpcUserName
,
localEpcPassword
)
logging
.
debug
(
'
\u001B
[1m Stopping tshark
\u001B
[0m'
)
mySSH
.
command
(
'echo '
+
localEpcPassword
+
' | sudo -S killall --signal SIGKILL tshark'
,
'\$'
,
5
)
if
self
.
epcPcapFile
!=
''
:
mySSH
.
command
(
'echo '
+
localEpcPassword
+
' | sudo -S chmod 666 /tmp/'
+
self
.
epcPcapFile
,
'\$'
,
5
)
mySSH
.
close
()
if
self
.
epcPcapFile
!=
''
:
copyin_res
=
mySSH
.
copyin
(
localEpcIpAddr
,
localEpcUserName
,
localEpcPassword
,
'/tmp/'
+
self
.
epcPcapFile
,
'.'
)
if
(
copyin_res
==
0
):
mySSH
.
copyout
(
lIpAddr
,
lUserName
,
lPassWord
,
self
.
epcPcapFile
,
lSourcePath
+
'/cmake_targets/.'
)
self
.
prematureExit
=
True
return
else
:
...
...
ci-scripts/xml_files/container_5g_fdd_rfsim.xml
View file @
6bb14205
...
...
@@ -33,12 +33,10 @@
000013
020011
020012
100011
</TestCaseRequestedList>
<!-- Not done yet because of code instability
030011
030012
-->
100011
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"000010"
>
...
...
@@ -104,7 +102,7 @@
<server_container_name>
rfsim5g-oai-ext-dn
</server_container_name>
<client_container_name>
rfsim5g-oai-nr-ue
</client_container_name>
<server_options>
-u -i 1 -s
</server_options>
<client_options>
-B 12.1.1.2 -c 192.168.72.135 -u -i 1 -t 30 -b
1
M
</client_options>
<client_options>
-B 12.1.1.2 -c 192.168.72.135 -u -i 1 -t 30 -b
3
M
</client_options>
</testCase>
<testCase
id=
"100011"
>
...
...
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
6bb14205
...
...
@@ -105,6 +105,10 @@ teid_t newGtpuCreateTunnel(instance_t instance, rnti_t rnti, int incoming_bearer
return
0
;
}
int
newGtpuDeleteAllTunnels
(
instance_t
instance
,
rnti_t
rnti
)
{
return
0
;
}
// dummy functions
int
dummy_nr_ue_ul_indication
(
nr_uplink_indication_t
*
ul_info
)
{
return
(
0
);
}
...
...
openair1/SIMULATION/NR_PHY/prachsim.c
View file @
6bb14205
...
...
@@ -97,6 +97,10 @@ teid_t newGtpuCreateTunnel(instance_t instance, rnti_t rnti, int incoming_bearer
return
0
;
}
int
newGtpuDeleteAllTunnels
(
instance_t
instance
,
rnti_t
rnti
)
{
return
0
;
}
void
rrc_data_ind
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
...
...
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
6bb14205
...
...
@@ -100,6 +100,11 @@ teid_t newGtpuCreateTunnel(instance_t instance, rnti_t rnti, int incoming_bearer
transport_layer_addr_t
remoteAddr
,
int
port
,
gtpCallback
callBack
)
{
return
0
;
}
int
newGtpuDeleteAllTunnels
(
instance_t
instance
,
rnti_t
rnti
)
{
return
0
;
}
extern
void
fix_scd
(
NR_ServingCellConfig_t
*
scd
);
// forward declaration
int8_t
nr_mac_rrc_data_ind_ue
(
const
module_id_t
module_id
,
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
6bb14205
...
...
@@ -391,7 +391,7 @@ void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP
const
int16_t
N_RA_RB
=
get_N_RA_RB
(
cfg
->
prach_config
.
prach_sub_c_spacing
.
value
,
mu_pusch
);
uint16_t
*
vrb_map_UL
=
&
cc
->
vrb_map_UL
[
slotP
*
MAX_BWP_SIZE
];
for
(
int
i
=
0
;
i
<
N_RA_RB
*
fdm
;
++
i
)
vrb_map_UL
[
bwp_start
+
rach_ConfigGeneric
->
msg1_FrequencyStart
+
i
]
=
SL_to_bitmap
(
start_symbol
,
N_t_slot
*
N_dur
);
vrb_map_UL
[
bwp_start
+
rach_ConfigGeneric
->
msg1_FrequencyStart
+
i
]
|
=
SL_to_bitmap
(
start_symbol
,
N_t_slot
*
N_dur
);
}
}
}
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
View file @
6bb14205
...
...
@@ -426,7 +426,7 @@ uint32_t schedule_control_sib1(module_id_t module_id,
gNB_mac
->
sched_ctrlCommon
->
cce_index
,
gNB_mac
->
sched_ctrlCommon
->
aggregation_level
);
for
(
int
rb
=
0
;
rb
<
gNB_mac
->
sched_ctrlCommon
->
sched_pdsch
.
rbSize
;
rb
++
)
{
vrb_map
[
rb
+
rbStart
]
=
SL_to_bitmap
(
startSymbolIndex
,
nrOfSymbols
);
vrb_map
[
rb
+
rbStart
]
|
=
SL_to_bitmap
(
startSymbolIndex
,
nrOfSymbols
);
}
return
TBS
;
}
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
View file @
6bb14205
...
...
@@ -576,8 +576,8 @@ bool allocate_dl_retransmission(module_id_t module_id,
rbStart
+=
rbSize
;
/* last iteration rbSize was not enough, skip it */
rbSize
=
0
;
while
(
rbStart
<
bwpSize
&&
!
(
rballoc_mask
[
rbStart
]
&
SL_to_bitmap
(
ps
->
startSymbolIndex
,
ps
->
nrOfSymbols
))
)
const
int
slbitmap
=
SL_to_bitmap
(
ps
->
startSymbolIndex
,
ps
->
nrOfSymbols
);
while
(
rbStart
<
bwpSize
&&
(
rballoc_mask
[
rbStart
]
&
slbitmap
)
!=
slbitmap
)
rbStart
++
;
if
(
rbStart
>=
bwpSize
)
{
...
...
@@ -586,7 +586,7 @@ bool allocate_dl_retransmission(module_id_t module_id,
}
while
(
rbStart
+
rbSize
<
bwpSize
&&
(
rballoc_mask
[
rbStart
+
rbSize
]
&
SL_to_bitmap
(
ps
->
startSymbolIndex
,
ps
->
nrOfSymbols
))
&&
(
rballoc_mask
[
rbStart
+
rbSize
]
&
slbitmap
)
==
slbitmap
&&
rbSize
<
retInfo
->
rbSize
)
rbSize
++
;
}
...
...
@@ -608,13 +608,28 @@ bool allocate_dl_retransmission(module_id_t module_id,
/* the retransmission will use a different time domain allocation, check
* that we have enough resources */
NR_pdsch_semi_static_t
temp_ps
=
*
ps
;
<<<<<<<
HEAD
nr_set_pdsch_semi_static
(
sib1
,
scc
,
cg
,
sched_ctrl
->
active_bwp
,
bwpd
,
tda
,
ps
->
nrOfLayers
,
sched_ctrl
,
&
temp_ps
);
while
(
rbStart
<
bwpSize
&&
!
(
rballoc_mask
[
rbStart
]
&
SL_to_bitmap
(
temp_ps
.
startSymbolIndex
,
temp_ps
.
nrOfSymbols
)))
=======
nr_set_pdsch_semi_static
(
sib1
,
scc
,
cg
,
sched_ctrl
->
active_bwp
,
bwpd
,
tda
,
ps
->
nrOfLayers
,
sched_ctrl
,
&
temp_ps
);
const
uint16_t
slbitmap
=
SL_to_bitmap
(
temp_ps
.
startSymbolIndex
,
temp_ps
.
nrOfSymbols
);
while
(
rbStart
<
bwpSize
&&
(
rballoc_mask
[
rbStart
]
&
slbitmap
)
!=
slbitmap
)
>>>>>>>
origin
/
develop
rbStart
++
;
while
(
rbStart
+
rbSize
<
bwpSize
&&
(
rballoc_mask
[
rbStart
+
rbSize
]
&
SL_to_bitmap
(
temp_ps
.
startSymbolIndex
,
temp_ps
.
nrOfSymbols
)))
while
(
rbStart
+
rbSize
<
bwpSize
&&
(
rballoc_mask
[
rbStart
+
rbSize
]
&
slbitmap
)
==
slbitmap
)
rbSize
++
;
uint32_t
new_tbs
;
...
...
@@ -923,14 +938,12 @@ void pf_dl(module_id_t module_id,
const
uint16_t
slbitmap
=
SL_to_bitmap
(
ps
->
startSymbolIndex
,
ps
->
nrOfSymbols
);
// Freq-demain allocation
while
(
rbStart
<
bwpSize
&&
!
(
rballoc_mask
[
rbStart
]
&
slbitmap
))
while
(
rbStart
<
bwpSize
&&
(
rballoc_mask
[
rbStart
]
&
slbitmap
)
!=
slbitmap
)
rbStart
++
;
uint16_t
max_rbSize
=
1
;
while
(
rbStart
+
max_rbSize
<
bwpSize
&&
(
rballoc_mask
[
rbStart
+
max_rbSize
]
&
slbitmap
))
while
(
rbStart
+
max_rbSize
<
bwpSize
&&
(
rballoc_mask
[
rbStart
+
max_rbSize
]
&
slbitmap
)
==
slbitmap
)
max_rbSize
++
;
sched_pdsch
->
Qm
=
nr_get_Qm_dl
(
sched_pdsch
->
mcs
,
ps
->
mcsTableIdx
);
...
...
@@ -1473,6 +1486,10 @@ void nr_schedule_ue_spec(module_id_t module_id,
header
->
L
=
htons
(
bufEnd
-
buf
);
dlsch_total_bytes
+=
bufEnd
-
buf
;
for
(;
buf
<
bufEnd
-
3
;
buf
+=
4
)
{
uint32_t
*
buf32
=
(
uint32_t
*
)
buf
;
*
buf32
=
lrand48
();
}
for
(;
buf
<
bufEnd
;
buf
++
)
*
buf
=
lrand48
()
&
0xff
;
}
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
6bb14205
...
...
@@ -2829,42 +2829,52 @@ void nr_mac_update_timers(module_id_t module_id,
const
NR_SIB1_t
*
sib1
=
RC
.
nrmac
[
module_id
]
->
common_channels
[
0
].
sib1
?
RC
.
nrmac
[
module_id
]
->
common_channels
[
0
].
sib1
->
message
.
choice
.
c1
->
choice
.
systemInformationBlockType1
:
NULL
;
NR_ServingCellConfigCommon_t
*
scc
=
RC
.
nrmac
[
module_id
]
->
common_channels
[
0
].
ServingCellConfigCommon
;
NR_CellGroupConfig_t
*
cg
=
UE_info
->
CellGroup
[
UE_id
];
NR_BWP_DownlinkDedicated_t
*
bwpd
=
UE_info
->
CellGroup
[
UE_id
]
&&
UE_info
->
CellGroup
[
UE_id
]
->
spCellConfig
&&
UE_info
->
CellGroup
[
UE_id
]
->
spCellConfig
->
spCellConfigDedicated
?
UE_info
->
CellGroup
[
UE_id
]
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
:
NULL
;
NR_BWP_Downlink_t
*
bwp
=
sched_ctrl
->
active_bwp
;
NR_BWP_DownlinkDedicated_t
*
bwpd
=
cg
&&
cg
->
spCellConfig
&&
cg
->
spCellConfig
->
spCellConfigDedicated
?
cg
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
:
NULL
;
int
**
preferred_dl_tda
=
RC
.
nrmac
[
module_id
]
->
preferred_dl_tda
;
NR_pdsch_semi_static_t
*
ps
=
&
sched_ctrl
->
pdsch_semi_static
;
const
uint8_t
layers
=
set_dl_nrOfLayers
(
sched_ctrl
);
const
int
tda
=
RC
.
nrmac
[
module_id
]
->
preferred_dl_tda
[
sched_ctrl
->
active_bwp
?
sched_ctrl
->
active_bwp
->
bwp_Id
:
0
][
slot
];
const
int
tda
=
bwp
&&
preferred_dl_tda
[
bwp
->
bwp_Id
][
slot
]
>=
0
?
preferred_dl_tda
[
bwp
->
bwp_Id
][
slot
]
:
(
ps
->
time_domain_allocation
>=
0
?
ps
->
time_domain_allocation
:
0
);
nr_set_pdsch_semi_static
(
sib1
,
scc
,
UE_info
->
CellGroup
[
UE_id
]
,
sched_ctrl
->
active_
bwp
,
cg
,
bwp
,
bwpd
,
tda
>=
0
?
tda
:
sched_ctrl
->
pdsch_semi_static
.
time_domain_allocation
,
tda
,
layers
,
sched_ctrl
,
&
sched_ctrl
->
pdsch_semi_static
);
ps
);
NR_BWP_UplinkDedicated_t
*
ubwpd
=
UE_info
->
CellGroup
[
UE_id
]
&&
UE_info
->
CellGroup
[
UE_id
]
->
spCellConfig
&&
UE_info
->
CellGroup
[
UE_id
]
->
spCellConfig
->
spCellConfigDedicated
&&
UE_info
->
CellGroup
[
UE_id
]
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
?
UE_info
->
CellGroup
[
UE_id
]
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
:
NULL
;
NR_BWP_Uplink_t
*
ubwp
=
sched_ctrl
->
active_ubwp
;
NR_BWP_UplinkDedicated_t
*
ubwpd
=
cg
&&
cg
->
spCellConfig
&&
cg
->
spCellConfig
->
spCellConfigDedicated
&&
cg
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
?
cg
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
:
NULL
;
int
**
preferred_ul_tda
=
RC
.
nrmac
[
module_id
]
->
preferred_ul_tda
;
NR_pusch_semi_static_t
*
ups
=
&
sched_ctrl
->
pusch_semi_static
;
const
uint8_t
num_dmrs_cdm_grps_no_data
=
(
sched_ctrl
->
active_ubwp
||
ubwpd
)
?
1
:
2
;
int
dci_format
=
get_dci_format
(
sched_ctrl
);
const
int
utda
=
sched_ctrl
->
active_ubwp
?
RC
.
nrmac
[
module_id
]
->
preferred_ul_tda
[
sched_ctrl
->
active_ubwp
->
bwp_Id
][
slot
]
:
0
;
const
uint8_t
num_dmrs_cdm_grps_no_data
=
(
ubwp
||
ubwpd
)
?
1
:
2
;
const
int
utda
=
ubwp
&&
preferred_ul_tda
[
ubwp
->
bwp_Id
][
slot
]
>=
0
?
preferred_ul_tda
[
ubwp
->
bwp_Id
][
slot
]
:
(
ups
->
time_domain_allocation
>=
0
?
ups
->
time_domain_allocation
:
0
);
nr_set_pusch_semi_static
(
sib1
,
scc
,
sched_ctrl
->
active_
ubwp
,
ubwp
,
ubwpd
,
dci_format
,
utda
>=
0
?
utda
:
sched_ctrl
->
pusch_semi_static
.
time_domain_allocation
,
utda
,
num_dmrs_cdm_grps_no_data
,
&
sched_ctrl
->
pusch_semi_static
);
ups
);
}
}
}
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
View file @
6bb14205
...
...
@@ -1621,18 +1621,10 @@ int nr_acknack_scheduling(int mod_id,
const
NR_ServingCellConfigCommon_t
*
scc
=
RC
.
nrmac
[
mod_id
]
->
common_channels
[
CC_id
].
ServingCellConfigCommon
;
const
int
n_slots_frame
=
nr_slots_per_frame
[
*
scc
->
ssbSubcarrierSpacing
];
const
NR_TDD_UL_DL_Pattern_t
*
tdd
=
scc
->
tdd_UL_DL_ConfigurationCommon
?
&
scc
->
tdd_UL_DL_ConfigurationCommon
->
pattern1
:
NULL
;
// initializing the values for FDD
int
nr_slots_period
=
n_slots_frame
;
int
first_ul_slot_tdd
=
slot
+
minfbtime
;
int
first_ul_slot_period
=
0
;
if
(
tdd
){
nr_slots_period
/=
get_nb_periods_per_frame
(
tdd
->
dl_UL_TransmissionPeriodicity
);
first_ul_slot_tdd
=
tdd
->
nrofDownlinkSlots
+
nr_slots_period
*
(
slot
/
nr_slots_period
);
first_ul_slot_period
=
tdd
->
nrofDownlinkSlots
;
}
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_id
]
->
common_channels
[
CC_id
].
frame_type
==
FDD
,
"Dynamic TDD not handled yet
\n
"
);
AssertFatal
(
tdd
||
RC
.
nrmac
[
mod_id
]
->
common_channels
[
CC_id
].
frame_type
==
FDD
,
"Dynamic TDD not handled yet
\n
"
);
const
int
nr_slots_period
=
tdd
?
n_slots_frame
/
get_nb_periods_per_frame
(
tdd
->
dl_UL_TransmissionPeriodicity
)
:
n_slots_frame
;
const
int
next_ul_slot
=
tdd
?
tdd
->
nrofDownlinkSlots
+
nr_slots_period
*
(
slot
/
nr_slots_period
)
:
slot
+
minfbtime
;
const
int
first_ul_slot_period
=
tdd
?
tdd
->
nrofDownlinkSlots
:
0
;
/* for the moment, we consider:
...
...
@@ -1788,8 +1780,8 @@ int nr_acknack_scheduling(int mod_id,
AssertFatal
(
pucch
->
sr_flag
+
pucch
->
dai_c
==
0
,
"expected no SR/AckNack for UE %d in %4d.%2d, but has %d/%d for %4d.%2d
\n
"
,
UE_id
,
frame
,
slot
,
pucch
->
sr_flag
,
pucch
->
dai_c
,
pucch
->
frame
,
pucch
->
ul_slot
);
const
int
s
=
first_ul_slot_tdd
;
pucch
->
frame
=
(
s
<
n_slots_frame
-
1
)
?
frame
:
(
frame
+
1
)
%
1024
;
const
int
s
=
next_ul_slot
;
pucch
->
frame
=
s
<
n_slots_frame
?
frame
:
(
frame
+
1
)
%
1024
;
pucch
->
ul_slot
=
s
%
n_slots_frame
;
}
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
6bb14205
...
...
@@ -1004,8 +1004,8 @@ bool allocate_ul_retransmission(module_id_t module_id,
}
/* Check the resource is enough for retransmission */
while
(
rbStart
<
bwpSize
&&
!
(
rballoc_mask
[
rbStart
]
&
SL_to_bitmap
(
ps
->
startSymbolIndex
,
ps
->
nrOfSymbols
))
)
const
uint16_t
slbitmap
=
SL_to_bitmap
(
ps
->
startSymbolIndex
,
ps
->
nrOfSymbols
);
while
(
rbStart
<
bwpSize
&&
(
rballoc_mask
[
rbStart
]
&
slbitmap
)
!=
slbitmap
)
rbStart
++
;
if
(
rbStart
+
retInfo
->
rbSize
>
bwpSize
)
{
LOG_W
(
NR_MAC
,
"cannot allocate retransmission of UE %d/RNTI %04x: no resources (rbStart %d, retInfo->rbSize %d, bwpSize %d
\n
"
,
UE_id
,
UE_info
->
rnti
[
UE_id
],
rbStart
,
retInfo
->
rbSize
,
bwpSize
);
...
...
@@ -1025,12 +1025,11 @@ bool allocate_ul_retransmission(module_id_t module_id,
&
temp_ps
);
/* the retransmission will use a different time domain allocation, check
* that we have enough resources */
while
(
rbStart
<
bwpSize
&&
!
(
rballoc_mask
[
rbStart
]
&
SL_to_bitmap
(
temp_ps
.
startSymbolIndex
,
temp_ps
.
nrOfSymbols
))
)
const
uint16_t
slbitmap
=
SL_to_bitmap
(
temp_ps
.
startSymbolIndex
,
temp_ps
.
nrOfSymbols
);
while
(
rbStart
<
bwpSize
&&
(
rballoc_mask
[
rbStart
]
&
slbitmap
)
!=
slbitmap
)
rbStart
++
;
int
rbSize
=
0
;
while
(
rbStart
+
rbSize
<
bwpSize
&&
(
rballoc_mask
[
rbStart
+
rbSize
]
&
SL_to_bitmap
(
temp_ps
.
startSymbolIndex
,
temp_ps
.
nrOfSymbols
)))
while
(
rbStart
+
rbSize
<
bwpSize
&&
(
rballoc_mask
[
rbStart
+
rbSize
]
&
slbitmap
)
==
slbitmap
)
rbSize
++
;
uint32_t
new_tbs
;
uint16_t
new_rbSize
;
...
...
@@ -1261,8 +1260,8 @@ void pf_ul(module_id_t module_id,
}
LOG_D
(
NR_MAC
,
"Looking for min_rb %d RBs, starting at %d
\n
"
,
min_rb
,
rbStart
);
while
(
rbStart
<
bwpSize
&&
!
(
rballoc_mask
[
rbStart
]
&
SL_to_bitmap
(
ps
->
startSymbolIndex
,
ps
->
nrOfSymbols
))
)
const
uint16_t
slbitmap
=
SL_to_bitmap
(
ps
->
startSymbolIndex
,
ps
->
nrOfSymbols
);
while
(
rbStart
<
bwpSize
&&
(
rballoc_mask
[
rbStart
]
&
slbitmap
)
!=
slbitmap
)
rbStart
++
;
if
(
rbStart
+
min_rb
>=
bwpSize
)
{
LOG_W
(
NR_MAC
,
"cannot allocate continuous UL data for UE %d/RNTI %04x: no resources (rbStart %d, min_rb %d, bwpSize %d
\n
"
,
...
...
@@ -1295,7 +1294,7 @@ void pf_ul(module_id_t module_id,
/* Mark the corresponding RBs as used */
n_rb_sched
-=
sched_pusch
->
rbSize
;
for
(
int
rb
=
0
;
rb
<
sched_ctrl
->
sched_pusch
.
rbSize
;
rb
++
)
rballoc_mask
[
rb
+
sched_ctrl
->
sched_pusch
.
rbStart
]
^=
SL_to_bitmap
(
ps
->
startSymbolIndex
,
ps
->
nrOfSymbols
)
;
rballoc_mask
[
rb
+
sched_ctrl
->
sched_pusch
.
rbStart
]
^=
slbitmap
;
continue
;
}
...
...
@@ -1397,13 +1396,12 @@ void pf_ul(module_id_t module_id,
}
update_ul_ue_R_Qm
(
sched_pusch
,
ps
);
while
(
rbStart
<
bwpSize
&&
!
(
rballoc_mask
[
rbStart
]
&
SL_to_bitmap
(
ps
->
startSymbolIndex
,
ps
->
nrOfSymbols
))
)
const
uint16_t
slbitmap
=
SL_to_bitmap
(
ps
->
startSymbolIndex
,
ps
->
nrOfSymbols
);
while
(
rbStart
<
bwpSize
&&
(
rballoc_mask
[
rbStart
]
&
slbitmap
)
!=
slbitmap
)
rbStart
++
;
sched_pusch
->
rbStart
=
rbStart
;
uint16_t
max_rbSize
=
1
;
while
(
rbStart
+
max_rbSize
<
bwpSize
&&
(
rballoc_mask
[
rbStart
+
max_rbSize
]
&&
SL_to_bitmap
(
ps
->
startSymbolIndex
,
ps
->
nrOfSymbols
)))
while
(
rbStart
+
max_rbSize
<
bwpSize
&&
(
rballoc_mask
[
rbStart
+
max_rbSize
]
&
slbitmap
)
==
slbitmap
)
max_rbSize
++
;
if
(
rbStart
+
min_rb
>=
bwpSize
)
{
...
...
@@ -1445,7 +1443,7 @@ void pf_ul(module_id_t module_id,
n_rb_sched
-=
sched_pusch
->
rbSize
;
for
(
int
rb
=
0
;
rb
<
sched_ctrl
->
sched_pusch
.
rbSize
;
rb
++
)
rballoc_mask
[
rb
+
sched_ctrl
->
sched_pusch
.
rbStart
]
^=
SL_to_bitmap
(
ps
->
startSymbolIndex
,
ps
->
nrOfSymbols
)
;
rballoc_mask
[
rb
+
sched_ctrl
->
sched_pusch
.
rbStart
]
^=
slbitmap
;
}
}
...
...
@@ -1479,7 +1477,7 @@ bool nr_fr1_ulsch_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t
if
(
tda
<
0
)
return
false
;
int
K2
=
get_K2
(
scc
,
scc_sib1
,
sched_ctrl
->
active_ubwp
,
tda
,
mu
);
const
int
sched_frame
=
(
frame
+
(
slot
+
K2
>=
nr_slots_per_frame
[
mu
]))
&
1023
;
const
int
sched_frame
=
(
frame
+
(
slot
+
K2
>=
nr_slots_per_frame
[
mu
]))
%
1024
;
const
int
sched_slot
=
(
slot
+
K2
)
%
nr_slots_per_frame
[
mu
];
if
(
!
is_xlsch_in_slot
(
nr_mac
->
ulsch_slot_bitmap
[
sched_slot
/
64
],
sched_slot
))
...
...
openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
View file @
6bb14205
...
...
@@ -385,7 +385,6 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t *const ctxt_pP,
rb
->
recv_sdu
(
rb
,
(
char
*
)
sdu_pP
->
data
,
sdu_sizeP
,
muiP
);
}
else
{
LOG_E
(
RLC
,
"%s:%d:%s: fatal: SDU sent to unknown RB
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
exit
(
1
);
}
nr_rlc_manager_unlock
(
nr_rlc_ue_manager
);
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
6bb14205
...
...
@@ -3518,6 +3518,7 @@ void nr_rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id) {
mac_remove_nr_ue
(
ctxt_pP
->
module_id
,
ctxt_pP
->
rnti
);
rrc_rlc_remove_ue
(
ctxt_pP
);
pdcp_remove_UE
(
ctxt_pP
);
newGtpuDeleteAllTunnels
(
ctxt_pP
->
instance
,
ctxt_pP
->
rnti
);
/* remove RRC UE Context */
ue_context_p
=
rrc_gNB_get_ue_context
(
RC
.
nrrrc
[
ctxt_pP
->
module_id
],
ctxt_pP
->
rnti
);
...
...
openair2/RRC/NR/rrc_gNB_nsa.c
View file @
6bb14205
...
...
@@ -338,8 +338,6 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
sizeof
(
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
(
msg
).
rrc_buffer
));
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
(
msg
).
rrc_buffer_size
=
(
enc_rval
.
encoded
+
7
)
>>
3
;
itti_send_msg_to_task
(
TASK_X2AP
,
ENB_MODULE_ID_TO_INSTANCE
(
0
),
msg
);
//Check right id instead of hardcoding
}
else
if
(
get_softmodem_params
()
->
do_ra
||
get_softmodem_params
()
->
sa
)
{
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
rrc
->
module_id
,
GNB_FLAG_YES
,
ue_context_p
->
ue_id_rnti
,
0
,
0
,
rrc
->
module_id
);
}
rrc
->
Nb_ue
++
;
...
...
@@ -372,14 +370,15 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
ue_context_p
->
ue_context
.
secondaryCellGroup
);
}
if
(
m
==
NULL
){
LOG_W
(
RRC
,
"Calling RRC PDCP/RLC ASN1 request functions for protocol context %p with module_id %d, rnti %x, frame %d, subframe %d eNB_index %d
\n
"
,
&
ctxt
,
ctxt
.
module_id
,
ctxt
.
rnti
,
ctxt
.
frame
,
ctxt
.
subframe
,
ctxt
.
eNB_index
);
}
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
rrc
->
module_id
,
GNB_FLAG_YES
,
ue_context_p
->
ue_id_rnti
,
0
,
0
,
rrc
->
module_id
);
LOG_W
(
RRC
,
"Calling RRC PDCP/RLC ASN1 request functions for protocol context %p with module_id %d, rnti %x, frame %d, subframe %d eNB_index %d
\n
"
,
&
ctxt
,
ctxt
.
module_id
,
ctxt
.
rnti
,
ctxt
.
frame
,
ctxt
.
subframe
,
ctxt
.
eNB_index
);
nr_rrc_pdcp_config_asn1_req
(
&
ctxt
,
get_softmodem_params
()
->
sa
?
ue_context_p
->
ue_context
.
rb_config
->
srb_ToAddModList
:
(
NR_SRB_ToAddModList_t
*
)
NULL
,
...
...
@@ -394,15 +393,14 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
NULL
,
ue_context_p
->
ue_context
.
secondaryCellGroup
->
rlc_BearerToAddModList
);
nr_rrc_rlc_config_asn1_req
(
&
ctxt
,
get_softmodem_params
()
->
sa
?
ue_context_p
->
ue_context
.
rb_config
->
srb_ToAddModList
:
(
NR_SRB_ToAddModList_t
*
)
NULL
,
ue_context_p
->
ue_context
.
rb_config
->
drb_ToAddModList
,
ue_context_p
->
ue_context
.
rb_config
->
drb_ToReleaseList
,
(
LTE_PMCH_InfoList_r9_t
*
)
NULL
,
ue_context_p
->
ue_context
.
secondaryCellGroup
->
rlc_BearerToAddModList
);
nr_rrc_rlc_config_asn1_req
(
&
ctxt
,
get_softmodem_params
()
->
sa
?
ue_context_p
->
ue_context
.
rb_config
->
srb_ToAddModList
:
(
NR_SRB_ToAddModList_t
*
)
NULL
,
ue_context_p
->
ue_context
.
rb_config
->
drb_ToAddModList
,
ue_context_p
->
ue_context
.
rb_config
->
drb_ToReleaseList
,
(
LTE_PMCH_InfoList_r9_t
*
)
NULL
,
ue_context_p
->
ue_context
.
secondaryCellGroup
->
rlc_BearerToAddModList
);
LOG_D
(
RRC
,
"%s:%d: done RRC PDCP/RLC ASN1 request for UE rnti %x
\n
"
,
__FUNCTION__
,
__LINE__
,
ctxt
.
rnti
);
}
void
rrc_remove_nsa_user
(
gNB_RRC_INST
*
rrc
,
int
rnti
)
{
...
...
openair2/RRC/NR_UE/rrc_UE.c
View file @
6bb14205
...
...
@@ -359,7 +359,8 @@ void process_nsa_message(NR_UE_RRC_INST_t *rrc, nsa_message_t nsa_message_type,
return
;
}
nr_rrc_ue_process_rrcReconfiguration
(
module_id
,
RRCReconfiguration
);
}
ASN_STRUCT_FREE
(
asn_DEF_NR_RRCReconfiguration
,
RRCReconfiguration
);
}
break
;
case
nr_RadioBearerConfigX_r15
:
...
...
@@ -392,6 +393,7 @@ void process_nsa_message(NR_UE_RRC_INST_t *rrc, nsa_message_t nsa_message_type,
else
if
(
LOG_DEBUGFLAG
(
DEBUG_ASN1
)
)
{
xer_fprint
(
stdout
,
&
asn_DEF_NR_RadioBearerConfig
,
(
const
void
*
)
RadioBearerConfig
);
}
ASN_STRUCT_FREE
(
asn_DEF_NR_RadioBearerConfig
,
RadioBearerConfig
);
}
break
;
...
...
openair2/X2AP/x2ap_eNB.c
View file @
6bb14205
...
...
@@ -70,8 +70,7 @@ void x2ap_eNB_register_eNB(x2ap_eNB_instance_t *instance_p,
net_ip_address_t
*
local_ip_addr
,
uint16_t
in_streams
,
uint16_t
out_streams
,
uint32_t
enb_port_for_X2C
,
int
multi_sd
);
uint32_t
enb_port_for_X2C
);
static
void
x2ap_eNB_handle_handover_req
(
instance_t
instance
,
...
...
@@ -249,20 +248,17 @@ static void x2ap_eNB_register_eNB(x2ap_eNB_instance_t *instance_p,
net_ip_address_t
*
local_ip_addr
,
uint16_t
in_streams
,
uint16_t
out_streams
,
uint32_t
enb_port_for_X2C
,
int
multi_sd
)
{
uint32_t
enb_port_for_X2C
)
{
MessageDef
*
message
=
NULL
;
sctp_new_association_req_multi_t
*
sctp_new_association_req
=
NULL
;
x2ap_eNB_data_t
*
x2ap_enb_data
=
NULL
;
DevAssert
(
instance_p
!=
NULL
);
DevAssert
(
target_eNB_ip_address
!=
NULL
);
message
=
itti_alloc_new_message
(
TASK_X2AP
,
0
,
SCTP_NEW_ASSOCIATION_REQ
_MULTI
);
sctp_new_association_req
=
&
message
->
ittiMsg
.
sctp_new_association_req_multi
;
message
=
itti_alloc_new_message
(
TASK_X2AP
,
0
,
SCTP_NEW_ASSOCIATION_REQ
);
sctp_new_association_req_t
*
sctp_new_association_req
=
&
message
->
ittiMsg
.
sctp_new_association_req
;
sctp_new_association_req
->
port
=
enb_port_for_X2C
;
sctp_new_association_req
->
ppid
=
X2AP_SCTP_PPID
;
sctp_new_association_req
->
in_streams
=
in_streams
;
sctp_new_association_req
->
out_streams
=
out_streams
;
sctp_new_association_req
->
multi_sd
=
multi_sd
;
memcpy
(
&
sctp_new_association_req
->
remote_address
,
target_eNB_ip_address
,
sizeof
(
*
target_eNB_ip_address
));
...
...
@@ -399,8 +395,7 @@ void x2ap_eNB_handle_sctp_init_msg_multi_cnf(
&
instance
->
enb_x2_ip_address
,
instance
->
sctp_in_streams
,
instance
->
sctp_out_streams
,
instance
->
enb_port_for_X2C
,
instance
->
multi_sd
);
instance
->
enb_port_for_X2C
);
}
}
...
...
@@ -645,7 +640,8 @@ void *x2ap_task(void *arg) {
while
(
1
)
{
itti_receive_msg
(
TASK_X2AP
,
&
received_msg
);
LOG_D
(
X2AP
,
"Received message %d:%s
\n
"
,
ITTI_MSG_ID
(
received_msg
),
ITTI_MSG_NAME
(
received_msg
));
switch
(
ITTI_MSG_ID
(
received_msg
))
{
case
TERMINATE_MESSAGE
:
X2AP_WARN
(
" *** Exiting X2AP thread
\n
"
);
...
...
@@ -684,7 +680,6 @@ void *x2ap_task(void *arg) {
case
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
:
x2ap_gNB_trigger_sgNB_add_req_ack
(
ITTI_MSG_DESTINATION_INSTANCE
(
received_msg
),
&
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
(
received_msg
));
LOG_I
(
X2AP
,
"Received elements for X2AP_ENDC_SGNB_ADDITION_REQ_ACK
\n
"
);
break
;
case
X2AP_ENDC_SGNB_RECONF_COMPLETE
:
...
...
openair3/NAS/UE/EMM/Authentication.c
View file @
6bb14205
...
...
@@ -178,12 +178,15 @@ int emm_proc_authentication_request(nas_user_t *user, int native_ksi, int ksi,
OctetString
ik
=
{
AUTH_IK_SIZE
,
authentication_data
->
ik
};
OctetString
res
=
{
AUTH_RES_SIZE
,
authentication_data
->
res
};
if
(
memcmp
(
authentication_data
->
rand
,
rand
->
value
,
AUTH_CK_SIZE
)
!=
0
)
{
if
((
memcmp
(
authentication_data
->
rand
,
rand
->
value
,
AUTH_CK_SIZE
)
!=
0
)
||
(
authentication_data
->
auth_process_started
==
FALSE
))
{
/*
* There is no valid stored RAND in the ME or the stored RAND is
* different from the new received value in the AUTHENTICATION
* REQUEST message
* REQUEST message OR if this is first time UE starting the
* Authentication process
*/
authentication_data
->
auth_process_started
=
TRUE
;
OctetString
auts
;
auts
.
length
=
0
;
auts
.
value
=
(
uint8_t
*
)
malloc
(
AUTH_AUTS_SIZE
);
...
...
openair3/NAS/UE/EMM/Authentication.h
View file @
6bb14205
...
...
@@ -18,6 +18,8 @@ typedef struct {
unsigned
char
mac_count
:
2
;
/* MAC failure counter (#20) */
unsigned
char
umts_count
:
2
;
/* UMTS challenge failure counter (#26) */
unsigned
char
sync_count
:
2
;
/* Sync failure counter (#21) */
unsigned
char
auth_process_started
:
1
;
/* Authentication started */
unsigned
char
reserve
:
1
;
/* For future use, byte aligned */
}
authentication_data_t
;
#endif
openair3/SCTP/sctp_common.h
View file @
6bb14205
...
...
@@ -37,7 +37,7 @@
#if defined(ENB_MODE)
# include "common/utils/LOG/log.h"
# define SCTP_ERROR(x, args...) LOG_E(SCTP, x, ##args)
# define SCTP_DEBUG(x, args...) LOG_
I
(SCTP, x, ##args)
# define SCTP_DEBUG(x, args...) LOG_
D
(SCTP, x, ##args)
# define SCTP_WARN(x, args...) LOG_W(SCTP, x, ##args)
#else
# define SCTP_ERROR(x, args...) do { fprintf(stderr, "[SCTP][E]"x, ##args); } while(0)
...
...
openair3/SCTP/sctp_eNB_task.c
View file @
6bb14205
...
...
@@ -318,7 +318,8 @@ sctp_handle_new_association_req_multi(
assoc_id
,
used_address
);
}
}
else
{
SCTP_DEBUG
(
"sctp_connectx SUCCESS, used %d addresses assoc_id %d
\n
"
,
SCTP_DEBUG
(
"sctp_connectx SUCCESS, socket %d used %d addresses assoc_id %d
\n
"
,
sd
,
used_address
,
assoc_id
);
}
...
...
@@ -750,7 +751,7 @@ static int sctp_create_new_listener(
}
if
(
server_type
)
{
if
((
sd
=
socket
(
P
F_INET
,
SOCK_SEQPACKET
,
IPPROTO_SCTP
))
<
0
)
{
if
((
sd
=
socket
(
A
F_INET
,
SOCK_SEQPACKET
,
IPPROTO_SCTP
))
<
0
)
{
SCTP_ERROR
(
"socket: %s:%d
\n
"
,
strerror
(
errno
),
errno
);
free
(
addr
);
return
-
1
;
...
...
@@ -822,7 +823,7 @@ static int sctp_create_new_listener(
sctp_cnx
=
NULL
;
return
-
1
;
}
SCTP_DEBUG
(
"Created listen socket: %d
\n
"
,
sd
);
/* Insert new element at end of list */
STAILQ_INSERT_TAIL
(
&
sctp_cnx_list
,
sctp_cnx
,
entries
);
sctp_nb_cnx
++
;
...
...
@@ -1110,11 +1111,10 @@ void *sctp_eNB_process_itti_msg(void *notUsed)
/* Check if there is a packet to handle */
if
(
received_msg
!=
NULL
)
{
LOG_D
(
SCTP
,
"Received message %d:%s
\n
"
,
ITTI_MSG_ID
(
received_msg
),
ITTI_MSG_NAME
(
received_msg
));
switch
(
ITTI_MSG_ID
(
received_msg
))
{
case
SCTP_INIT_MSG
:
{
SCTP_DEBUG
(
"Received SCTP_INIT_MSG
\n
"
);
/* We received a new connection request */
if
(
sctp_create_new_listener
(
ITTI_MSG_DESTINATION_INSTANCE
(
received_msg
),
ITTI_MSG_ORIGIN_ID
(
received_msg
),
...
...
@@ -1126,11 +1126,7 @@ void *sctp_eNB_process_itti_msg(void *notUsed)
break
;
case
SCTP_INIT_MSG_MULTI_REQ
:
{
int
multi_sd
;
SCTP_DEBUG
(
"Received SCTP_INIT_MSG_MULTI_REQ
\n
"
);
multi_sd
=
sctp_create_new_listener
(
int
multi_sd
=
sctp_create_new_listener
(
ITTI_MSG_DESTINATION_INSTANCE
(
received_msg
),
ITTI_MSG_ORIGIN_ID
(
received_msg
),
&
received_msg
->
ittiMsg
.
sctp_init_multi
,
1
);
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/cu_gnb.conf
View file @
6bb14205
...
...
@@ -45,8 +45,6 @@ gNBs =
remote_s_portc
=
500
;
remote_s_portd
=
2152
;
ssb_SubcarrierOffset
=
0
;
pdsch_AntennaPorts
=
1
;
pusch_AntennaPorts
=
1
;
min_rxtxtime
=
6
;
pdcch_ConfigSIB1
= (
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.band78.tm1.106PRB.usrpn300.gtp-itti.conf
View file @
6bb14205
...
...
@@ -37,6 +37,7 @@ gNBs =
//////////
Physical
parameters
:
ssb_SubcarrierOffset
=
0
;
servingCellConfigCommon
= (
{
#spCellConfigCommon
...
...
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