Commit 842a4bbf authored by francescomani's avatar francescomani

Merge remote-tracking branch 'origin/develop' into NR_pdcch_improvements

parents bdf5d26b ee3a256b
...@@ -606,6 +606,9 @@ class Containerize(): ...@@ -606,6 +606,9 @@ class Containerize():
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', logStatus) HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', logStatus)
else: else:
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK) HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK)
# all the xNB run logs shall be on the server 0 for logCollecting
if self.eNB_serverId[self.eNB_instance] != '0':
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './' + self.eNB_logFile[self.eNB_instance], self.eNBSourceCodePath + '/cmake_targets/')
logging.info('\u001B[1m Undeploying OAI Object Pass\u001B[0m') logging.info('\u001B[1m Undeploying OAI Object Pass\u001B[0m')
def DeployGenObject(self, HTML): def DeployGenObject(self, HTML):
...@@ -638,7 +641,7 @@ class Containerize(): ...@@ -638,7 +641,7 @@ class Containerize():
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml up -d ' + self.services[0] cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml up -d ' + self.services[0]
logging.debug(cmd) logging.debug(cmd)
try: try:
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30) deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
except Exception as e: except Exception as e:
self.exitStatus = 1 self.exitStatus = 1
logging.error('Could not deploy') logging.error('Could not deploy')
...@@ -651,7 +654,7 @@ class Containerize(): ...@@ -651,7 +654,7 @@ class Containerize():
healthy = 0 healthy = 0
while (count < 10): while (count < 10):
count += 1 count += 1
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
healthy = 0 healthy = 0
for state in deployStatus.split('\n'): for state in deployStatus.split('\n'):
res = re.search('Up \(healthy\)', state) res = re.search('Up \(healthy\)', state)
...@@ -683,7 +686,7 @@ class Containerize(): ...@@ -683,7 +686,7 @@ class Containerize():
# if the containers are running, recover the logs! # if the containers are running, recover the logs!
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps --all' cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps --all'
logging.debug(cmd) logging.debug(cmd)
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
anyLogs = False anyLogs = False
for state in deployStatus.split('\n'): for state in deployStatus.split('\n'):
res = re.search('Name|----------', state) res = re.search('Name|----------', state)
...@@ -697,7 +700,7 @@ class Containerize(): ...@@ -697,7 +700,7 @@ class Containerize():
cName = res.group('container_name') cName = res.group('container_name')
cmd = 'cd ' + self.yamlPath[0] + ' && docker logs ' + cName + ' > ' + cName + '.log 2>&1' cmd = 'cd ' + self.yamlPath[0] + ' && docker logs ' + cName + ' > ' + cName + '.log 2>&1'
logging.debug(cmd) logging.debug(cmd)
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
if anyLogs: if anyLogs:
cmd = 'mkdir -p ../cmake_targets/log && mv ' + self.yamlPath[0] + '/*.log ../cmake_targets/log' cmd = 'mkdir -p ../cmake_targets/log && mv ' + self.yamlPath[0] + '/*.log ../cmake_targets/log'
logging.debug(cmd) logging.debug(cmd)
...@@ -805,7 +808,7 @@ class Containerize(): ...@@ -805,7 +808,7 @@ class Containerize():
time.sleep(5) time.sleep(5)
cmd = 'docker cp ' + self.svrContName + ':/tmp/iperf_server.log ../cmake_targets/log/iperf_server_' + HTML.testCase_id + '.log' cmd = 'docker cp ' + self.svrContName + ':/tmp/iperf_server.log ../cmake_targets/log/iperf_server_' + HTML.testCase_id + '.log'
logging.debug(cmd) logging.debug(cmd)
serverStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) serverStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
# Analyze client output # Analyze client output
result = re.search('Server Report:', clientStatus) result = re.search('Server Report:', clientStatus)
......
...@@ -51,7 +51,6 @@ ...@@ -51,7 +51,6 @@
#include <dlfcn.h> #include <dlfcn.h>
#include <sys/time.h> #include <sys/time.h>
#include <sys/resource.h> #include <sys/resource.h>
#include <form.h>
#include "common/utils/load_module_shlib.h" #include "common/utils/load_module_shlib.h"
#include "common/config/config_userapi.h" #include "common/config/config_userapi.h"
#include "common/utils/threadPool/thread-pool.h" #include "common/utils/threadPool/thread-pool.h"
......
...@@ -307,8 +307,10 @@ The following features are valid for the gNB and the 5G-NR UE. ...@@ -307,8 +307,10 @@ The following features are valid for the gNB and the 5G-NR UE.
- MAC <-> PHY data interface using FAPI P7 interface for BCH PDU, DCI PDU, PDSCH PDU - MAC <-> PHY data interface using FAPI P7 interface for BCH PDU, DCI PDU, PDSCH PDU
- Scheduler procedures for SIB1 - Scheduler procedures for SIB1
- Scheduler procedures for RA - Scheduler procedures for RA
- Contention free RA procedure - Contention Free RA procedure
- Contention based RA procedure - Contention Based RA procedure
- Msg3 can transfer uplink CCCH, DTCH or DCCH messages
- CBRA can be performed using MAC CE or C-RNTI
- Scheduler procedures for CSI-RS - Scheduler procedures for CSI-RS
- MAC downlink scheduler - MAC downlink scheduler
- phy-test scheduler (fixed allocation and usable also without UE) - phy-test scheduler (fixed allocation and usable also without UE)
......
...@@ -37,7 +37,8 @@ RUN /bin/sh oaienv && \ ...@@ -37,7 +37,8 @@ RUN /bin/sh oaienv && \
mkdir -p log && \ mkdir -p log && \
./build_oai --eNB --ninja -w USRP --verbose-ci ./build_oai --eNB --ninja -w USRP --verbose-ci
RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/enb_parameters.yaml RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/enb_parameters.yaml && \
cp /oai-ran/docker/scripts/enb_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh
#start from scratch for target executable #start from scratch for target executable
FROM registry.access.redhat.com/ubi8/ubi:latest as oai-enb FROM registry.access.redhat.com/ubi8/ubi:latest as oai-enb
...@@ -62,42 +63,43 @@ RUN yum update -y && \ ...@@ -62,42 +63,43 @@ RUN yum update -y && \
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
WORKDIR /opt/oai-enb/bin WORKDIR /opt/oai-enb/bin
COPY --from=enb-build /oai-ran/targets/bin/lte-softmodem.Rel15 . COPY --from=enb-build \
COPY --from=enb-build /oai-ran/docker/scripts/enb_entrypoint.sh entrypoint.sh /oai-ran/targets/bin/lte-softmodem.Rel15 \
/oai-ran/docker/scripts/entrypoint.sh \
./
WORKDIR /usr/local/lib/ WORKDIR /usr/local/lib/
COPY --from=enb-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 . COPY --from=enb-build \
COPY --from=enb-build /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 . /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 \
COPY --from=enb-build /oai-ran/targets/bin/librfsimulator.so.Rel15 . /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 \
COPY --from=enb-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 . /oai-ran/targets/bin/librfsimulator.so.Rel15 \
COPY --from=enb-build /oai-ran/targets/bin/libcoding.so . /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 \
COPY --from=enb-build /oai-ran/targets/bin/libparams_libconfig.so . /oai-ran/targets/bin/libcoding.so \
COPY --from=enb-build /oai-ran/cmake_targets/ran_build/build/libdfts.so . /oai-ran/targets/bin/libparams_libconfig.so \
COPY --from=enb-build /oai-ran/cmake_targets/ran_build/build/liboai_iqplayer.so . /oai-ran/cmake_targets/ran_build/build/libdfts.so \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" /oai-ran/cmake_targets/ran_build/build/liboai_iqplayer.so \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" /usr/local/lib/libprotobuf-c.so.1 \
RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" ./
COPY --from=enb-build /usr/local/lib/libprotobuf-c.so.1 . COPY --from=enb-build \
/lib64/libconfig.so.9 \
COPY --from=enb-build /lib64/libconfig.so.9 /lib64 /lib64/libblas.so.3 \
COPY --from=enb-build /lib64/libblas.so.3 /lib64 /lib64/liblapack.so.3 \
COPY --from=enb-build /lib64/liblapack.so.3 /lib64 /lib64/liblapacke.so.3 \
COPY --from=enb-build /lib64/liblapacke.so.3 /lib64 /lib64/libboost_chrono.so.1.66.0 \
/lib64/libboost_date_time.so.1.66.0 \
/lib64/libboost_filesystem.so.1.66.0 \
/lib64/libboost_program_options.so.1.66.0 \
/lib64/libboost_serialization.so.1.66.0 \
/lib64/libboost_thread.so.1.66.0 \
/lib64/libboost_system.so.1.66.0 \
/lib64/libboost_unit_test_framework.so.1.66.0 \
/lib64/libboost_atomic.so.1.66.0 \
/lib64/libboost_timer.so.1.66.0 \
/lib64/libboost_regex.so.1.66.0 \
/lib64/
# Now we are copying from builder-image the UHD files. # Now we are copying from builder-image the UHD files.
COPY --from=enb-build /lib64/libboost_chrono.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_date_time.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_filesystem.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_program_options.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_serialization.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_thread.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_system.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_unit_test_framework.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_atomic.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_timer.so.1.66.0 /lib64
COPY --from=enb-build /lib64/libboost_regex.so.1.66.0 /lib64
COPY --from=enb-build /usr/local/bin/uhd_find_devices /usr/local/bin COPY --from=enb-build /usr/local/bin/uhd_find_devices /usr/local/bin
COPY --from=enb-build /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64 COPY --from=enb-build /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64
COPY --from=enb-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-enb/bin COPY --from=enb-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-enb/bin
...@@ -105,7 +107,10 @@ COPY --from=enb-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/o ...@@ -105,7 +107,10 @@ COPY --from=enb-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/o
WORKDIR /usr/local/share/uhd/rfnoc WORKDIR /usr/local/share/uhd/rfnoc
COPY --from=enb-build /usr/local/share/uhd/rfnoc/ . COPY --from=enb-build /usr/local/share/uhd/rfnoc/ .
RUN ldconfig RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" && \
/bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" && \
/bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" && \
ldconfig
# Copy the relevant configuration files for eNB # Copy the relevant configuration files for eNB
WORKDIR /opt/oai-enb/etc WORKDIR /opt/oai-enb/etc
......
...@@ -37,7 +37,8 @@ RUN /bin/sh oaienv && \ ...@@ -37,7 +37,8 @@ RUN /bin/sh oaienv && \
mkdir -p log && \ mkdir -p log && \
./build_oai --eNB --ninja -w USRP --verbose-ci ./build_oai --eNB --ninja -w USRP --verbose-ci
RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/enb_parameters.yaml RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/enb_parameters.yaml && \
cp /oai-ran/docker/scripts/enb_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh
#start from scratch for target executable #start from scratch for target executable
FROM ubuntu:bionic as oai-enb FROM ubuntu:bionic as oai-enb
...@@ -48,6 +49,7 @@ RUN apt-get update && \ ...@@ -48,6 +49,7 @@ RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \ DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
DEBIAN_FRONTEND=noninteractive apt-get install --yes \ DEBIAN_FRONTEND=noninteractive apt-get install --yes \
software-properties-common \ software-properties-common \
tzdata \
procps \ procps \
libsctp1 \ libsctp1 \
libnettle6 \ libnettle6 \
...@@ -68,37 +70,43 @@ RUN apt-get update && \ ...@@ -68,37 +70,43 @@ RUN apt-get update && \
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
WORKDIR /opt/oai-enb/bin WORKDIR /opt/oai-enb/bin
COPY --from=enb-build /oai-ran/targets/bin/lte-softmodem.Rel15 . COPY --from=enb-build \
COPY --from=enb-build /oai-ran/docker/scripts/enb_entrypoint.sh entrypoint.sh /oai-ran/targets/bin/lte-softmodem.Rel15 \
/oai-ran/docker/scripts/entrypoint.sh \
./
WORKDIR /usr/local/lib/ WORKDIR /usr/local/lib/
COPY --from=enb-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 . COPY --from=enb-build \
COPY --from=enb-build /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 . /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 \
COPY --from=enb-build /oai-ran/targets/bin/librfsimulator.so.Rel15 . /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 \
COPY --from=enb-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 . /oai-ran/targets/bin/librfsimulator.so.Rel15 \
COPY --from=enb-build /oai-ran/targets/bin/libcoding.so . /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 \
COPY --from=enb-build /oai-ran/targets/bin/libparams_libconfig.so . /oai-ran/targets/bin/libcoding.so \
COPY --from=enb-build /oai-ran/cmake_targets/ran_build/build/libdfts.so . /oai-ran/targets/bin/libparams_libconfig.so \
COPY --from=enb-build /oai-ran/cmake_targets/ran_build/build/liboai_iqplayer.so . /oai-ran/cmake_targets/ran_build/build/libdfts.so \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" /oai-ran/cmake_targets/ran_build/build/liboai_iqplayer.so \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" /usr/local/lib/libprotobuf-c.so.1 \
RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" ./
COPY --from=enb-build /usr/local/lib/libprotobuf-c.so.1 .
# Now we are copying from builder-image the UHD files. # Now we are copying from builder-image the UHD files.
COPY --from=enb-build /usr/local/bin/uhd_find_devices /usr/local/bin COPY --from=enb-build /usr/local/bin/uhd_find_devices /usr/local/bin
COPY --from=enb-build /usr/local/lib/libuhd.so.3.15.0 /usr/local/lib COPY --from=enb-build /usr/local/lib/libuhd.so.3.15.0 /usr/local/lib
COPY --from=enb-build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-enb/bin COPY --from=enb-build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-enb/bin
WORKDIR /usr/lib/x86_64-linux-gnu WORKDIR /usr/lib/x86_64-linux-gnu
COPY --from=enb-build /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.65.1 . COPY --from=enb-build \
COPY --from=enb-build /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.65.1 \
COPY --from=enb-build /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 \
COPY --from=enb-build /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 \
COPY --from=enb-build /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.65.1 \
COPY --from=enb-build /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 \
COPY --from=enb-build /usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 \
/usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.65.1 \
./
RUN ldconfig RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" && \
/bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" && \
/bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" && \
ldconfig
# Copy the relevant configuration files for eNB # Copy the relevant configuration files for eNB
WORKDIR /opt/oai-enb/etc WORKDIR /opt/oai-enb/etc
......
...@@ -37,7 +37,8 @@ RUN /bin/sh oaienv && \ ...@@ -37,7 +37,8 @@ RUN /bin/sh oaienv && \
mkdir -p log && \ mkdir -p log && \
./build_oai --gNB --ninja -w USRP --verbose-ci ./build_oai --gNB --ninja -w USRP --verbose-ci
RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/gnb_parameters.yaml RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/gnb_parameters.yaml && \
cp /oai-ran/docker/scripts/gnb_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh
#start from scratch for target executable #start from scratch for target executable
FROM registry.access.redhat.com/ubi8/ubi:latest as oai-gnb FROM registry.access.redhat.com/ubi8/ubi:latest as oai-gnb
...@@ -64,46 +65,47 @@ RUN yum repolist --disablerepo=* && \ ...@@ -64,46 +65,47 @@ RUN yum repolist --disablerepo=* && \
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
WORKDIR /opt/oai-gnb/bin WORKDIR /opt/oai-gnb/bin
COPY --from=gnb-build /oai-ran/targets/bin/nr-softmodem.Rel15 . COPY --from=gnb-build \
COPY --from=gnb-build /oai-ran/docker/scripts/gnb_entrypoint.sh entrypoint.sh /oai-ran/targets/bin/nr-softmodem.Rel15 \
/oai-ran/docker/scripts/entrypoint.sh \
./
WORKDIR /usr/local/lib/ WORKDIR /usr/local/lib/
COPY --from=gnb-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 . COPY --from=gnb-build \
COPY --from=gnb-build /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 . /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 \
COPY --from=gnb-build /oai-ran/targets/bin/librfsimulator.so.Rel15 . /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 \
COPY --from=gnb-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 . /oai-ran/targets/bin/librfsimulator.so.Rel15 \
COPY --from=gnb-build /oai-ran/targets/bin/libcoding.so . /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 \
COPY --from=gnb-build /oai-ran/targets/bin/libparams_libconfig.so . /oai-ran/targets/bin/libcoding.so \
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/libdfts.so . /oai-ran/targets/bin/libparams_libconfig.so \
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/libldpc.so . /oai-ran/cmake_targets/ran_build/build/libdfts.so \
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/libldpc_optim.so . /oai-ran/cmake_targets/ran_build/build/libldpc.so \
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/libldpc_optim8seg.so . /oai-ran/cmake_targets/ran_build/build/libldpc_optim.so \
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/libldpc_orig.so . /oai-ran/cmake_targets/ran_build/build/libldpc_optim8seg.so \
/oai-ran/cmake_targets/ran_build/build/libldpc_orig.so \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" /usr/local/lib/libprotobuf-c.so.1 \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" ./
RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so"
COPY --from=gnb-build /usr/local/lib/libprotobuf-c.so.1 . COPY --from=gnb-build \
/lib64/libconfig.so.9 \
COPY --from=gnb-build /lib64/libconfig.so.9 /lib64 /lib64/libforms.so.2 \
COPY --from=gnb-build /lib64/libforms.so.2 /lib64 /lib64/libblas.so.3 \
COPY --from=gnb-build /lib64/libblas.so.3 /lib64 /lib64/liblapack.so.3 \
COPY --from=gnb-build /lib64/liblapack.so.3 /lib64 /lib64/liblapacke.so.3 \
COPY --from=gnb-build /lib64/liblapacke.so.3 /lib64 /lib64/libboost_chrono.so.1.66.0 \
/lib64/libboost_date_time.so.1.66.0 \
/lib64/libboost_filesystem.so.1.66.0 \
/lib64/libboost_program_options.so.1.66.0 \
/lib64/libboost_serialization.so.1.66.0 \
/lib64/libboost_thread.so.1.66.0 \
/lib64/libboost_system.so.1.66.0 \
/lib64/libboost_unit_test_framework.so.1.66.0 \
/lib64/libboost_atomic.so.1.66.0 \
/lib64/libboost_timer.so.1.66.0 \
/lib64/libboost_regex.so.1.66.0 \
/lib64/
# Now we are copying from builder-image the UHD files. # Now we are copying from builder-image the UHD files.
COPY --from=gnb-build /lib64/libboost_chrono.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_date_time.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_filesystem.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_program_options.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_serialization.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_thread.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_system.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_unit_test_framework.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_atomic.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_timer.so.1.66.0 /lib64
COPY --from=gnb-build /lib64/libboost_regex.so.1.66.0 /lib64
COPY --from=gnb-build /usr/local/bin/uhd_find_devices /usr/local/bin COPY --from=gnb-build /usr/local/bin/uhd_find_devices /usr/local/bin
COPY --from=gnb-build /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64 COPY --from=gnb-build /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64
COPY --from=gnb-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-gnb/bin COPY --from=gnb-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-gnb/bin
...@@ -111,7 +113,10 @@ COPY --from=gnb-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/o ...@@ -111,7 +113,10 @@ COPY --from=gnb-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/o
WORKDIR /usr/local/share/uhd/rfnoc WORKDIR /usr/local/share/uhd/rfnoc
COPY --from=gnb-build /usr/local/share/uhd/rfnoc/ . COPY --from=gnb-build /usr/local/share/uhd/rfnoc/ .
RUN ldconfig RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" && \
/bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" && \
/bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" && \
ldconfig
# Copy the relevant configuration files for gNB # Copy the relevant configuration files for gNB
WORKDIR /opt/oai-gnb/etc WORKDIR /opt/oai-gnb/etc
......
...@@ -37,7 +37,8 @@ RUN /bin/sh oaienv && \ ...@@ -37,7 +37,8 @@ RUN /bin/sh oaienv && \
mkdir -p log && \ mkdir -p log && \
./build_oai --gNB --ninja -w USRP --verbose-ci ./build_oai --gNB --ninja -w USRP --verbose-ci
RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/gnb_parameters.yaml RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/gnb_parameters.yaml && \
cp /oai-ran/docker/scripts/gnb_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh
#start from scratch for target executable #start from scratch for target executable
FROM ubuntu:bionic as oai-gnb FROM ubuntu:bionic as oai-gnb
...@@ -68,41 +69,46 @@ RUN apt-get update && \ ...@@ -68,41 +69,46 @@ RUN apt-get update && \
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
WORKDIR /opt/oai-gnb/bin WORKDIR /opt/oai-gnb/bin
COPY --from=gnb-build /oai-ran/targets/bin/nr-softmodem.Rel15 . COPY --from=gnb-build \
COPY --from=gnb-build /oai-ran/docker/scripts/gnb_entrypoint.sh entrypoint.sh /oai-ran/targets/bin/nr-softmodem.Rel15 \
/oai-ran/docker/scripts/entrypoint.sh \
./
WORKDIR /usr/local/lib/ WORKDIR /usr/local/lib/
COPY --from=gnb-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 . COPY --from=gnb-build \
COPY --from=gnb-build /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 . /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 \
COPY --from=gnb-build /oai-ran/targets/bin/librfsimulator.so.Rel15 . /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 \
COPY --from=gnb-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 . /oai-ran/targets/bin/librfsimulator.so.Rel15 \
COPY --from=gnb-build /oai-ran/targets/bin/libcoding.so . /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 \
COPY --from=gnb-build /oai-ran/targets/bin/libparams_libconfig.so . /oai-ran/targets/bin/libcoding.so \
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/libdfts.so . /oai-ran/targets/bin/libparams_libconfig.so \
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/libldpc.so . /oai-ran/cmake_targets/ran_build/build/libdfts.so \
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/libldpc_optim.so . /oai-ran/cmake_targets/ran_build/build/libldpc.so \
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/libldpc_optim8seg.so . /oai-ran/cmake_targets/ran_build/build/libldpc_optim.so \
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/libldpc_orig.so . /oai-ran/cmake_targets/ran_build/build/libldpc_optim8seg.so \
/oai-ran/cmake_targets/ran_build/build/libldpc_orig.so \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" /usr/local/lib/libprotobuf-c.so.1 \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" ./
RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so"
COPY --from=gnb-build /usr/local/lib/libprotobuf-c.so.1 .
# Now we are copying from builder-image the UHD files. # Now we are copying from builder-image the UHD files.
COPY --from=gnb-build /usr/local/bin/uhd_find_devices /usr/local/bin COPY --from=gnb-build /usr/local/bin/uhd_find_devices /usr/local/bin
COPY --from=gnb-build /usr/local/lib/libuhd.so.3.15.0 /usr/local/lib COPY --from=gnb-build /usr/local/lib/libuhd.so.3.15.0 /usr/local/lib
COPY --from=gnb-build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-gnb/bin COPY --from=gnb-build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-gnb/bin
WORKDIR /usr/lib/x86_64-linux-gnu WORKDIR /usr/lib/x86_64-linux-gnu
COPY --from=gnb-build /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.65.1 . COPY --from=gnb-build \
COPY --from=gnb-build /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.65.1 \
COPY --from=gnb-build /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 \
COPY --from=gnb-build /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 \
COPY --from=gnb-build /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.65.1 \
COPY --from=gnb-build /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 \
COPY --from=gnb-build /usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 \
/usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.65.1 \
./
RUN ldconfig RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" && \
/bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" && \
/bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" && \
ldconfig
# Copy the relevant configuration files for gNB # Copy the relevant configuration files for gNB
WORKDIR /opt/oai-gnb/etc WORKDIR /opt/oai-gnb/etc
......
...@@ -37,7 +37,8 @@ RUN /bin/sh oaienv && \ ...@@ -37,7 +37,8 @@ RUN /bin/sh oaienv && \
mkdir -p log && \ mkdir -p log && \
./build_oai --RU --ninja -w USRP --verbose-ci ./build_oai --RU --ninja -w USRP --verbose-ci
RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/enb_parameters.yaml RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/enb_parameters.yaml && \
cp /oai-ran/docker/scripts/lte_ru_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh
#start from scratch for target executable #start from scratch for target executable
FROM registry.access.redhat.com/ubi8/ubi:latest as oai-lte-ru FROM registry.access.redhat.com/ubi8/ubi:latest as oai-lte-ru
...@@ -59,35 +60,40 @@ RUN yum update -y && \ ...@@ -59,35 +60,40 @@ RUN yum update -y && \
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
WORKDIR /opt/oai-lte-ru/bin WORKDIR /opt/oai-lte-ru/bin
COPY --from=ru-build /oai-ran/targets/bin/oairu.Rel15 . COPY --from=ru-build \
COPY --from=ru-build /oai-ran/docker/scripts/lte_ru_entrypoint.sh entrypoint.sh /oai-ran/targets/bin/oairu.Rel15 \
/oai-ran/docker/scripts/entrypoint.sh \
.
WORKDIR /usr/local/lib/ WORKDIR /usr/local/lib/
COPY --from=ru-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 . COPY --from=ru-build \
COPY --from=ru-build /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 . /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 \
COPY --from=ru-build /oai-ran/targets/bin/librfsimulator.so.Rel15 . /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 \
COPY --from=ru-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 . /oai-ran/targets/bin/librfsimulator.so.Rel15 \
COPY --from=ru-build /oai-ran/targets/bin/libparams_libconfig.so . /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 \
COPY --from=ru-build /oai-ran/cmake_targets/ran_build/build/libdfts.so . /oai-ran/targets/bin/libparams_libconfig.so \
/oai-ran/cmake_targets/ran_build/build/libdfts.so \
COPY --from=ru-build /lib64/libconfig.so.9 /lib64 ./
COPY --from=ru-build /lib64/libblas.so.3 /lib64
COPY --from=ru-build /lib64/liblapack.so.3 /lib64 COPY --from=ru-build \
COPY --from=ru-build /lib64/liblapacke.so.3 /lib64 /lib64/libconfig.so.9 \
/lib64/libblas.so.3 \
/lib64/liblapack.so.3 \
/lib64/liblapacke.so.3 \
/lib64/libboost_chrono.so.1.66.0 \
/lib64/libboost_date_time.so.1.66.0 \
/lib64/libboost_filesystem.so.1.66.0 \
/lib64/libboost_program_options.so.1.66.0 \
/lib64/libboost_serialization.so.1.66.0 \
/lib64/libboost_thread.so.1.66.0 \
/lib64/libboost_system.so.1.66.0 \
/lib64/libboost_unit_test_framework.so.1.66.0 \
/lib64/libboost_atomic.so.1.66.0 \
/lib64/libboost_timer.so.1.66.0 \
/lib64/libboost_regex.so.1.66.0 \
/lib64/
# Copying from the ran-build image the USRP needed packages # Copying from the ran-build image the USRP needed packages
COPY --from=ru-build /lib64/libboost_chrono.so.1.66.0 /lib64
COPY --from=ru-build /lib64/libboost_date_time.so.1.66.0 /lib64
COPY --from=ru-build /lib64/libboost_filesystem.so.1.66.0 /lib64
COPY --from=ru-build /lib64/libboost_program_options.so.1.66.0 /lib64
COPY --from=ru-build /lib64/libboost_serialization.so.1.66.0 /lib64
COPY --from=ru-build /lib64/libboost_thread.so.1.66.0 /lib64
COPY --from=ru-build /lib64/libboost_system.so.1.66.0 /lib64
COPY --from=ru-build /lib64/libboost_unit_test_framework.so.1.66.0 /lib64
COPY --from=ru-build /lib64/libboost_atomic.so.1.66.0 /lib64
COPY --from=ru-build /lib64/libboost_timer.so.1.66.0 /lib64
COPY --from=ru-build /lib64/libboost_regex.so.1.66.0 /lib64
COPY --from=ru-build /usr/local/bin/uhd_find_devices /usr/local/bin COPY --from=ru-build /usr/local/bin/uhd_find_devices /usr/local/bin
COPY --from=ru-build /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64 COPY --from=ru-build /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64
COPY --from=ru-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-lte-ru/bin COPY --from=ru-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-lte-ru/bin
......
...@@ -37,7 +37,8 @@ RUN /bin/sh oaienv && \ ...@@ -37,7 +37,8 @@ RUN /bin/sh oaienv && \
mkdir -p log && \ mkdir -p log && \
./build_oai --RU --ninja -w USRP --verbose-ci ./build_oai --RU --ninja -w USRP --verbose-ci
RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/enb_parameters.yaml RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/enb_parameters.yaml && \
cp /oai-ran/docker/scripts/lte_ru_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh
#start from scratch for target executable #start from scratch for target executable
FROM ubuntu:bionic as oai-lte-ru FROM ubuntu:bionic as oai-lte-ru
...@@ -64,28 +65,35 @@ RUN apt-get update && \ ...@@ -64,28 +65,35 @@ RUN apt-get update && \
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
WORKDIR /opt/oai-lte-ru/bin WORKDIR /opt/oai-lte-ru/bin
COPY --from=ru-build /oai-ran/targets/bin/oairu.Rel15 . COPY --from=ru-build \
COPY --from=ru-build /oai-ran/docker/scripts/lte_ru_entrypoint.sh entrypoint.sh /oai-ran/targets/bin/oairu.Rel15 \
/oai-ran/docker/scripts/entrypoint.sh \
./
WORKDIR /usr/local/lib/ WORKDIR /usr/local/lib/
COPY --from=ru-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 . COPY --from=ru-build \
COPY --from=ru-build /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 . /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 \
COPY --from=ru-build /oai-ran/targets/bin/librfsimulator.so.Rel15 . /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 \
COPY --from=ru-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 . /oai-ran/targets/bin/librfsimulator.so.Rel15 \
COPY --from=ru-build /oai-ran/targets/bin/libparams_libconfig.so . /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 \
COPY --from=ru-build /oai-ran/cmake_targets/ran_build/build/libdfts.so . /oai-ran/targets/bin/libparams_libconfig.so \
/oai-ran/cmake_targets/ran_build/build/libdfts.so \
./
# Now we are copying from builder-image the UHD files. # Now we are copying from builder-image the UHD files.
COPY --from=ru-build /usr/local/bin/uhd_find_devices /usr/local/bin COPY --from=ru-build /usr/local/bin/uhd_find_devices /usr/local/bin
COPY --from=ru-build /usr/local/lib/libuhd.so.3.15.0 /usr/local/lib COPY --from=ru-build /usr/local/lib/libuhd.so.3.15.0 /usr/local/lib
COPY --from=ru-build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-lte-ru/bin COPY --from=ru-build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-lte-ru/bin
WORKDIR /usr/lib/x86_64-linux-gnu WORKDIR /usr/lib/x86_64-linux-gnu
COPY --from=ru-build /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.65.1 . COPY --from=ru-build \
COPY --from=ru-build /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.65.1 \
COPY --from=ru-build /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 \
COPY --from=ru-build /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 \
COPY --from=ru-build /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.65.1 \
COPY --from=ru-build /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 \
/usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 \
./
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" && \ RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" && \
/bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" && \ /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" && \
......
...@@ -38,7 +38,8 @@ RUN /bin/sh oaienv && \ ...@@ -38,7 +38,8 @@ RUN /bin/sh oaienv && \
./build_oai --UE --ninja -w USRP --verbose-ci ./build_oai --UE --ninja -w USRP --verbose-ci
RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/lte_ue_parameters.yaml && \ RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/lte_ue_parameters.yaml && \
python3 ./docker/scripts/generateTemplate.py ./docker/scripts/lte_ue_sim_parameters.yaml python3 ./docker/scripts/generateTemplate.py ./docker/scripts/lte_ue_sim_parameters.yaml && \
cp /oai-ran/docker/scripts/lte_ue_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh
#start from scratch for target executable #start from scratch for target executable
FROM registry.access.redhat.com/ubi8/ubi:latest as oai-lte-ue FROM registry.access.redhat.com/ubi8/ubi:latest as oai-lte-ue
...@@ -63,45 +64,46 @@ RUN yum update -y && \ ...@@ -63,45 +64,46 @@ RUN yum update -y && \
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
WORKDIR /opt/oai-lte-ue/bin WORKDIR /opt/oai-lte-ue/bin
COPY --from=lte-ue-build /oai-ran/targets/bin/lte-uesoftmodem.Rel15 . COPY --from=lte-ue-build \
COPY --from=lte-ue-build /oai-ran/docker/scripts/lte_ue_entrypoint.sh entrypoint.sh /oai-ran/targets/bin/lte-uesoftmodem.Rel15 \
COPY --from=lte-ue-build /oai-ran/targets/bin/conf2uedata . /oai-ran/docker/scripts/entrypoint.sh \
COPY --from=lte-ue-build /oai-ran/targets/bin/nvram . /oai-ran/targets/bin/conf2uedata \
COPY --from=lte-ue-build /oai-ran/targets/bin/usim . /oai-ran/targets/bin/nvram \
/oai-ran/targets/bin/usim \
./
WORKDIR /usr/local/lib/ WORKDIR /usr/local/lib/
COPY --from=lte-ue-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 . COPY --from=lte-ue-build \
COPY --from=lte-ue-build /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 . /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 \
COPY --from=lte-ue-build /oai-ran/targets/bin/librfsimulator.so.Rel15 . /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 \
COPY --from=lte-ue-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 . /oai-ran/targets/bin/librfsimulator.so.Rel15 \
COPY --from=lte-ue-build /oai-ran/targets/bin/libcoding.so . /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 \
COPY --from=lte-ue-build /oai-ran/targets/bin/libparams_libconfig.so . /oai-ran/targets/bin/libcoding.so \
COPY --from=lte-ue-build /oai-ran/cmake_targets/ran_build/build/libSIMU.so . /oai-ran/targets/bin/libparams_libconfig.so \
COPY --from=lte-ue-build /oai-ran/cmake_targets/ran_build/build/libdfts.so . /oai-ran/cmake_targets/ran_build/build/libSIMU.so \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" /oai-ran/cmake_targets/ran_build/build/libdfts.so \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" /usr/local/lib/libprotobuf-c.so.1 \
RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" ./
COPY --from=lte-ue-build /usr/local/lib/libprotobuf-c.so.1 . COPY --from=lte-ue-build \
/lib64/libconfig.so.9 \
COPY --from=lte-ue-build /lib64/libconfig.so.9 /lib64 /lib64/libblas.so.3 \
COPY --from=lte-ue-build /lib64/libblas.so.3 /lib64 /lib64/liblapack.so.3 \
COPY --from=lte-ue-build /lib64/liblapack.so.3 /lib64 /lib64/liblapacke.so.3 \
COPY --from=lte-ue-build /lib64/liblapacke.so.3 /lib64 /lib64/libboost_chrono.so.1.66.0 \
/lib64/libboost_date_time.so.1.66.0 \
/lib64/libboost_filesystem.so.1.66.0 \
/lib64/libboost_program_options.so.1.66.0 \
/lib64/libboost_serialization.so.1.66.0 \
/lib64/libboost_thread.so.1.66.0 \
/lib64/libboost_system.so.1.66.0 \
/lib64/libboost_unit_test_framework.so.1.66.0 \
/lib64/libboost_atomic.so.1.66.0 \
/lib64/libboost_timer.so.1.66.0 \
/lib64/libboost_regex.so.1.66.0 \
/lib64/
# Now we are copying from builder-image the UHD files. # Now we are copying from builder-image the UHD files.
COPY --from=lte-ue-build /lib64/libboost_chrono.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_date_time.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_filesystem.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_program_options.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_serialization.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_thread.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_system.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_unit_test_framework.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_atomic.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_timer.so.1.66.0 /lib64
COPY --from=lte-ue-build /lib64/libboost_regex.so.1.66.0 /lib64
COPY --from=lte-ue-build /usr/local/bin/uhd_find_devices /usr/local/bin COPY --from=lte-ue-build /usr/local/bin/uhd_find_devices /usr/local/bin
COPY --from=lte-ue-build /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64 COPY --from=lte-ue-build /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64
COPY --from=lte-ue-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-lte-ue/bin COPY --from=lte-ue-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-lte-ue/bin
...@@ -109,7 +111,10 @@ COPY --from=lte-ue-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /op ...@@ -109,7 +111,10 @@ COPY --from=lte-ue-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /op
WORKDIR /usr/local/share/uhd/rfnoc WORKDIR /usr/local/share/uhd/rfnoc
COPY --from=lte-ue-build /usr/local/share/uhd/rfnoc/ . COPY --from=lte-ue-build /usr/local/share/uhd/rfnoc/ .
RUN ldconfig RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" && \
/bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" && \
/bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" && \
ldconfig
# Copy the relevant configuration files for UE # Copy the relevant configuration files for UE
WORKDIR /opt/oai-lte-ue/etc WORKDIR /opt/oai-lte-ue/etc
......
...@@ -38,7 +38,8 @@ RUN /bin/sh oaienv && \ ...@@ -38,7 +38,8 @@ RUN /bin/sh oaienv && \
./build_oai --UE --ninja -w USRP --verbose-ci ./build_oai --UE --ninja -w USRP --verbose-ci
RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/lte_ue_parameters.yaml && \ RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/lte_ue_parameters.yaml && \
python3 ./docker/scripts/generateTemplate.py ./docker/scripts/lte_ue_sim_parameters.yaml python3 ./docker/scripts/generateTemplate.py ./docker/scripts/lte_ue_sim_parameters.yaml && \
cp /oai-ran/docker/scripts/lte_ue_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh
#start from scratch for target executable #start from scratch for target executable
FROM ubuntu:bionic as oai-lte-ue FROM ubuntu:bionic as oai-lte-ue
...@@ -49,6 +50,7 @@ RUN apt-get update && \ ...@@ -49,6 +50,7 @@ RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \ DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
DEBIAN_FRONTEND=noninteractive apt-get install --yes \ DEBIAN_FRONTEND=noninteractive apt-get install --yes \
software-properties-common \ software-properties-common \
tzdata \
procps \ procps \
libsctp1 \ libsctp1 \
libnettle6 \ libnettle6 \
...@@ -69,41 +71,47 @@ RUN apt-get update && \ ...@@ -69,41 +71,47 @@ RUN apt-get update && \
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
WORKDIR /opt/oai-lte-ue/bin WORKDIR /opt/oai-lte-ue/bin
COPY --from=lte-ue-build /oai-ran/targets/bin/lte-uesoftmodem.Rel15 . COPY --from=lte-ue-build \
COPY --from=lte-ue-build /oai-ran/docker/scripts/lte_ue_entrypoint.sh entrypoint.sh /oai-ran/targets/bin/lte-uesoftmodem.Rel15 \
COPY --from=lte-ue-build /oai-ran/targets/bin/conf2uedata . /oai-ran/docker/scripts/entrypoint.sh \
COPY --from=lte-ue-build /oai-ran/targets/bin/nvram . /oai-ran/targets/bin/conf2uedata \
COPY --from=lte-ue-build /oai-ran/targets/bin/usim . /oai-ran/targets/bin/nvram \
/oai-ran/targets/bin/usim \
./
WORKDIR /usr/local/lib/ WORKDIR /usr/local/lib/
COPY --from=lte-ue-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 . COPY --from=lte-ue-build \
COPY --from=lte-ue-build /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 . /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 \
COPY --from=lte-ue-build /oai-ran/targets/bin/librfsimulator.so.Rel15 . /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 \
COPY --from=lte-ue-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 . /oai-ran/targets/bin/librfsimulator.so.Rel15 \
COPY --from=lte-ue-build /oai-ran/targets/bin/libcoding.so . /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 \
COPY --from=lte-ue-build /oai-ran/targets/bin/libparams_libconfig.so . /oai-ran/targets/bin/libcoding.so \
COPY --from=lte-ue-build /oai-ran/cmake_targets/ran_build/build/libSIMU.so . /oai-ran/targets/bin/libparams_libconfig.so \
COPY --from=lte-ue-build /oai-ran/cmake_targets/ran_build/build/libdfts.so . /oai-ran/cmake_targets/ran_build/build/libSIMU.so \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" /oai-ran/cmake_targets/ran_build/build/libdfts.so \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" /usr/local/lib/libprotobuf-c.so.1 \
RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" ./
COPY --from=lte-ue-build /usr/local/lib/libprotobuf-c.so.1 .
# Now we are copying from builder-image the UHD files. # Now we are copying from builder-image the UHD files.
COPY --from=lte-ue-build /usr/local/bin/uhd_find_devices /usr/local/bin COPY --from=lte-ue-build /usr/local/bin/uhd_find_devices /usr/local/bin
COPY --from=lte-ue-build /usr/local/lib/libuhd.so.3.15.0 /usr/local/lib COPY --from=lte-ue-build /usr/local/lib/libuhd.so.3.15.0 /usr/local/lib
COPY --from=lte-ue-build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-lte-ue/bin COPY --from=lte-ue-build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-lte-ue/bin
WORKDIR /usr/lib/x86_64-linux-gnu WORKDIR /usr/lib/x86_64-linux-gnu
COPY --from=lte-ue-build /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.65.1 . COPY --from=lte-ue-build \
COPY --from=lte-ue-build /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.65.1 \
COPY --from=lte-ue-build /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 \
COPY --from=lte-ue-build /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 \
COPY --from=lte-ue-build /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.65.1 \
COPY --from=lte-ue-build /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 \
COPY --from=lte-ue-build /usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 \
/usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.65.1 \
./
RUN ldconfig RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" && \
/bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" && \
/bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" && \
ldconfig
# Copy the relevant configuration files for UE # Copy the relevant configuration files for UE
WORKDIR /opt/oai-lte-ue/etc WORKDIR /opt/oai-lte-ue/etc
......
...@@ -35,7 +35,8 @@ COPY . . ...@@ -35,7 +35,8 @@ COPY . .
RUN /bin/sh oaienv && \ RUN /bin/sh oaienv && \
cd cmake_targets && \ cd cmake_targets && \
mkdir -p log && \ mkdir -p log && \
./build_oai --nrUE --ninja -w USRP --verbose-ci ./build_oai --nrUE --ninja -w USRP --verbose-ci && \
cp /oai-ran/docker/scripts/nr_ue_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh
#start from scratch for target executable #start from scratch for target executable
FROM registry.access.redhat.com/ubi8/ubi:latest as oai-nr-ue FROM registry.access.redhat.com/ubi8/ubi:latest as oai-nr-ue
...@@ -62,49 +63,50 @@ RUN yum update -y && \ ...@@ -62,49 +63,50 @@ RUN yum update -y && \
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
WORKDIR /opt/oai-nr-ue/bin WORKDIR /opt/oai-nr-ue/bin
COPY --from=nr-ue-build /oai-ran/targets/bin/nr-uesoftmodem.Rel15 . COPY --from=nr-ue-build \
COPY --from=nr-ue-build /oai-ran/docker/scripts/nr_ue_entrypoint.sh entrypoint.sh /oai-ran/targets/bin/nr-uesoftmodem.Rel15 \
/oai-ran/docker/scripts/entrypoint.sh \
./
WORKDIR /opt/oai-nr-ue/etc WORKDIR /opt/oai-nr-ue/etc
COPY --from=nr-ue-build /oai-ran/ci-scripts/conf_files/nr-ue-sim.conf . COPY --from=nr-ue-build /oai-ran/ci-scripts/conf_files/nr-ue-sim.conf .
WORKDIR /usr/local/lib/ WORKDIR /usr/local/lib/
COPY --from=nr-ue-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 . COPY --from=nr-ue-build \
COPY --from=nr-ue-build /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 . /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 \
COPY --from=nr-ue-build /oai-ran/targets/bin/librfsimulator.so.Rel15 . /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 \
COPY --from=nr-ue-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 . /oai-ran/targets/bin/librfsimulator.so.Rel15 \
COPY --from=nr-ue-build /oai-ran/targets/bin/libcoding.so . /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 \
COPY --from=nr-ue-build /oai-ran/targets/bin/libparams_libconfig.so . /oai-ran/targets/bin/libcoding.so \
COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libdfts.so . /oai-ran/targets/bin/libparams_libconfig.so \
COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc.so . /oai-ran/cmake_targets/ran_build/build/libdfts.so \
COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc_optim.so . /oai-ran/cmake_targets/ran_build/build/libldpc.so \
COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc_optim8seg.so . /oai-ran/cmake_targets/ran_build/build/libldpc_optim.so \
COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc_orig.so . /oai-ran/cmake_targets/ran_build/build/libldpc_optim8seg.so \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" /oai-ran/cmake_targets/ran_build/build/libldpc_orig.so \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" /usr/local/lib/libprotobuf-c.so.1 \
RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" ./
COPY --from=nr-ue-build /usr/local/lib/libprotobuf-c.so.1 . COPY --from=nr-ue-build \
/lib64/libconfig.so.9 \
COPY --from=nr-ue-build /lib64/libconfig.so.9 /lib64 /lib64/libblas.so.3 \
COPY --from=nr-ue-build /lib64/libblas.so.3 /lib64 /lib64/liblapack.so.3 \
COPY --from=nr-ue-build /lib64/liblapack.so.3 /lib64 /lib64/liblapacke.so.3 \
COPY --from=nr-ue-build /lib64/liblapacke.so.3 /lib64 /lib64/libforms.so.2 \
COPY --from=nr-ue-build /lib64/libforms.so.2 /lib64 /lib64/libboost_chrono.so.1.66.0 \
/lib64/libboost_date_time.so.1.66.0 \
/lib64/libboost_filesystem.so.1.66.0 \
/lib64/libboost_program_options.so.1.66.0 \
/lib64/libboost_serialization.so.1.66.0 \
/lib64/libboost_thread.so.1.66.0 \
/lib64/libboost_system.so.1.66.0 \
/lib64/libboost_unit_test_framework.so.1.66.0 \
/lib64/libboost_atomic.so.1.66.0 \
/lib64/libboost_timer.so.1.66.0 \
/lib64/libboost_regex.so.1.66.0 \
/lib64/
# Now we are copying from builder-image the UHD files. # Now we are copying from builder-image the UHD files.
COPY --from=nr-ue-build /lib64/libboost_chrono.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_date_time.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_filesystem.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_program_options.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_serialization.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_thread.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_system.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_unit_test_framework.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_atomic.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_timer.so.1.66.0 /lib64
COPY --from=nr-ue-build /lib64/libboost_regex.so.1.66.0 /lib64
COPY --from=nr-ue-build /usr/local/bin/uhd_find_devices /usr/local/bin COPY --from=nr-ue-build /usr/local/bin/uhd_find_devices /usr/local/bin
COPY --from=nr-ue-build /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64 COPY --from=nr-ue-build /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64
COPY --from=nr-ue-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-nr-ue/bin COPY --from=nr-ue-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-nr-ue/bin
...@@ -112,8 +114,10 @@ COPY --from=nr-ue-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt ...@@ -112,8 +114,10 @@ COPY --from=nr-ue-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt
WORKDIR /usr/local/share/uhd/rfnoc WORKDIR /usr/local/share/uhd/rfnoc
COPY --from=nr-ue-build /usr/local/share/uhd/rfnoc/ . COPY --from=nr-ue-build /usr/local/share/uhd/rfnoc/ .
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" && \
RUN ldconfig /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" && \
/bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" && \
ldconfig
# Copy the relevant configuration files for eNB # Copy the relevant configuration files for eNB
WORKDIR /opt/oai-nr-ue/etc WORKDIR /opt/oai-nr-ue/etc
......
...@@ -35,7 +35,8 @@ COPY . . ...@@ -35,7 +35,8 @@ COPY . .
RUN /bin/sh oaienv && \ RUN /bin/sh oaienv && \
cd cmake_targets && \ cd cmake_targets && \
mkdir -p log && \ mkdir -p log && \
./build_oai --nrUE --ninja -w USRP --verbose-ci ./build_oai --nrUE --ninja -w USRP --verbose-ci && \
cp /oai-ran/docker/scripts/nr_ue_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh
#start from scratch for target executable #start from scratch for target executable
FROM ubuntu:bionic as oai-nr-ue FROM ubuntu:bionic as oai-nr-ue
...@@ -67,44 +68,50 @@ RUN apt-get update && \ ...@@ -67,44 +68,50 @@ RUN apt-get update && \
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
WORKDIR /opt/oai-nr-ue/bin WORKDIR /opt/oai-nr-ue/bin
COPY --from=nr-ue-build /oai-ran/targets/bin/nr-uesoftmodem.Rel15 . COPY --from=nr-ue-build \
COPY --from=nr-ue-build /oai-ran/docker/scripts/nr_ue_entrypoint.sh entrypoint.sh /oai-ran/targets/bin/nr-uesoftmodem.Rel15 \
/oai-ran/docker/scripts/entrypoint.sh \
./
WORKDIR /opt/oai-nr-ue/etc WORKDIR /opt/oai-nr-ue/etc
COPY --from=nr-ue-build /oai-ran/ci-scripts/conf_files/nr-ue-sim.conf . COPY --from=nr-ue-build /oai-ran/ci-scripts/conf_files/nr-ue-sim.conf .
WORKDIR /usr/local/lib/ WORKDIR /usr/local/lib/
COPY --from=nr-ue-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 . COPY --from=nr-ue-build \
COPY --from=nr-ue-build /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 . /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 \
COPY --from=nr-ue-build /oai-ran/targets/bin/librfsimulator.so.Rel15 . /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 \
COPY --from=nr-ue-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 . /oai-ran/targets/bin/librfsimulator.so.Rel15 \
COPY --from=nr-ue-build /oai-ran/targets/bin/libcoding.so . /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 \
COPY --from=nr-ue-build /oai-ran/targets/bin/libparams_libconfig.so . /oai-ran/targets/bin/libcoding.so \
COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libdfts.so . /oai-ran/targets/bin/libparams_libconfig.so \
COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc.so . /oai-ran/cmake_targets/ran_build/build/libdfts.so \
COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc_optim.so . /oai-ran/cmake_targets/ran_build/build/libldpc.so \
COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc_optim8seg.so . /oai-ran/cmake_targets/ran_build/build/libldpc_optim.so \
COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc_orig.so . /oai-ran/cmake_targets/ran_build/build/libldpc_optim8seg.so \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" /oai-ran/cmake_targets/ran_build/build/libldpc_orig.so \
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" /usr/local/lib/libprotobuf-c.so.1 \
RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" ./
COPY --from=nr-ue-build /usr/local/lib/libprotobuf-c.so.1 .
# Now we are copying from builder-image the UHD files. # Now we are copying from builder-image the UHD files.
COPY --from=nr-ue-build /usr/local/bin/uhd_find_devices /usr/local/bin COPY --from=nr-ue-build /usr/local/bin/uhd_find_devices /usr/local/bin
COPY --from=nr-ue-build /usr/local/lib/libuhd.so.3.15.0 /usr/local/lib COPY --from=nr-ue-build /usr/local/lib/libuhd.so.3.15.0 /usr/local/lib
COPY --from=nr-ue-build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-nr-ue/bin COPY --from=nr-ue-build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-nr-ue/bin
WORKDIR /usr/lib/x86_64-linux-gnu WORKDIR /usr/lib/x86_64-linux-gnu
COPY --from=nr-ue-build /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.65.1 . COPY --from=nr-ue-build \
COPY --from=nr-ue-build /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.65.1 \
COPY --from=nr-ue-build /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 \
COPY --from=nr-ue-build /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 \
COPY --from=nr-ue-build /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.65.1 \
COPY --from=nr-ue-build /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 \
COPY --from=nr-ue-build /usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.65.1 . /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 \
/usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.65.1 \
./
RUN ldconfig RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" && \
/bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" && \
/bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" && \
ldconfig
WORKDIR /opt/oai-nr-ue WORKDIR /opt/oai-nr-ue
CMD ["/opt/oai-nr-ue/bin/nr-uesoftmodem.Rel15", "-O", "/opt/oai-nr-ue/etc/nr-ue-sim.conf"] CMD ["/opt/oai-nr-ue/bin/nr-uesoftmodem.Rel15", "-O", "/opt/oai-nr-ue/etc/nr-ue-sim.conf"]
......
...@@ -37,7 +37,6 @@ RUN /bin/sh oaienv && \ ...@@ -37,7 +37,6 @@ RUN /bin/sh oaienv && \
mkdir -p log && \ mkdir -p log && \
./build_oai --phy_simulators --ninja --verbose-ci ./build_oai --phy_simulators --ninja --verbose-ci
#start from scratch for target executable #start from scratch for target executable
FROM registry.access.redhat.com/ubi8/ubi:latest as oai-physim FROM registry.access.redhat.com/ubi8/ubi:latest as oai-physim
...@@ -45,6 +44,7 @@ RUN yum update -y && \ ...@@ -45,6 +44,7 @@ RUN yum update -y && \
yum install -y --enablerepo="ubi-8-codeready-builder" \ yum install -y --enablerepo="ubi-8-codeready-builder" \
lksctp-tools \ lksctp-tools \
nettle \ nettle \
tzdata \
atlas \ atlas \
hostname \ hostname \
sudo \ sudo \
...@@ -58,66 +58,62 @@ RUN yum update -y && \ ...@@ -58,66 +58,62 @@ RUN yum update -y && \
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
WORKDIR /opt/oai-physim/targets/bin WORKDIR /opt/oai-physim/targets/bin
COPY --from=phy-sim-build /oai-ran/targets/bin/dlsim.Rel15 . COPY --from=phy-sim-build \
COPY --from=phy-sim-build /oai-ran/targets/bin/nr_dlsim.Rel15 . /oai-ran/targets/bin/dlsim.Rel15 \
COPY --from=phy-sim-build /oai-ran/targets/bin/nr_prachsim.Rel15 . /oai-ran/targets/bin/nr_dlsim.Rel15 \
COPY --from=phy-sim-build /oai-ran/targets/bin/nr_ulschsim.Rel15 . /oai-ran/targets/bin/nr_prachsim.Rel15 \
COPY --from=phy-sim-build /oai-ran/targets/bin/polartest.Rel15 . /oai-ran/targets/bin/nr_ulschsim.Rel15 \
COPY --from=phy-sim-build /oai-ran/targets/bin/ulsim.Rel15 . /oai-ran/targets/bin/polartest.Rel15 \
COPY --from=phy-sim-build /oai-ran/targets/bin/ldpctest.Rel15 . /oai-ran/targets/bin/ulsim.Rel15 \
COPY --from=phy-sim-build /oai-ran/targets/bin/nr_dlschsim.Rel15 . /oai-ran/targets/bin/ldpctest.Rel15 \
COPY --from=phy-sim-build /oai-ran/targets/bin/nr_pbchsim.Rel15 . /oai-ran/targets/bin/nr_dlschsim.Rel15 \
COPY --from=phy-sim-build /oai-ran/targets/bin/nr_pucchsim.Rel15 . /oai-ran/targets/bin/nr_pbchsim.Rel15 \
COPY --from=phy-sim-build /oai-ran/targets/bin/nr_ulsim.Rel15 . /oai-ran/targets/bin/nr_pucchsim.Rel15 \
COPY --from=phy-sim-build /oai-ran/targets/bin/smallblocktest.Rel15 . /oai-ran/targets/bin/nr_ulsim.Rel15 \
/oai-ran/targets/bin/smallblocktest.Rel15 \
./
WORKDIR /usr/local/lib/ WORKDIR /usr/local/lib/
COPY --from=phy-sim-build /oai-ran/targets/bin/libcoding.so . COPY --from=phy-sim-build \
COPY --from=phy-sim-build /lib64/liblapacke.so.3 . /oai-ran/targets/bin/libcoding.so \
COPY --from=phy-sim-build /lib64/libX11.so.6 . /lib64/liblapacke.so.3 \
COPY --from=phy-sim-build /lib64/libXpm.so.4 . /lib64/libX11.so.6 \
COPY --from=phy-sim-build /lib64/libxcb.so.1 . /lib64/libXpm.so.4 \
COPY --from=phy-sim-build /lib64/libXau.so.6 . /lib64/libxcb.so.1 \
COPY --from=phy-sim-build /lib64/libforms.so.2 . /lib64/libXau.so.6 \
COPY --from=phy-sim-build /lib64/libblas.so.3 . /lib64/libforms.so.2 \
COPY --from=phy-sim-build /lib64/liblapack.so.3 . /lib64/libblas.so.3 \
COPY --from=phy-sim-build /lib64/libexslt.so.0 . /lib64/liblapack.so.3 \
COPY --from=phy-sim-build /lib64/libxslt.so.1 . /lib64/libexslt.so.0 \
COPY --from=phy-sim-build /oai-ran/cmake_targets/phy_simulators/build/libdfts.so . /lib64/libxslt.so.1 \
COPY --from=phy-sim-build /oai-ran/cmake_targets/phy_simulators/build/libSIMU.so . /oai-ran/cmake_targets/phy_simulators/build/libdfts.so \
COPY --from=phy-sim-build /oai-ran/cmake_targets/phy_simulators/build/libldpc.so . /oai-ran/cmake_targets/phy_simulators/build/libSIMU.so \
COPY --from=phy-sim-build /oai-ran/cmake_targets/phy_simulators/build/libldpc_orig.so . /oai-ran/cmake_targets/phy_simulators/build/libldpc.so \
/oai-ran/cmake_targets/phy_simulators/build/libldpc_orig.so \
./
RUN ldconfig RUN ldconfig
#debug
#RUN ldd /opt/oai-physim/targets/bin/dlsim.Rel15
#RUN ldd /opt/oai-physim/targets/bin/nr_dlsim.Rel15
#RUN ldd /opt/oai-physim/targets/bin/nr_prachsim.Rel15
#RUN ldd /opt/oai-physim/targets/bin/nr_ulschsim.Rel15
#RUN ldd /opt/oai-physim/targets/bin/polartest.Rel15
#RUN ldd /opt/oai-physim/targets/bin/ulsim.Rel15
#RUN ldd /opt/oai-physim/targets/bin/ldpctest.Rel15
#RUN ldd /opt/oai-physim/targets/bin/nr_dlschsim.Rel15
#RUN ldd /opt/oai-physim/targets/bin/nr_pbchsim.Rel15
#RUN ldd /opt/oai-physim/targets/bin/nr_pucchsim.Rel15
#RUN ldd /opt/oai-physim/targets/bin/nr_ulsim.Rel15
#RUN ldd /opt/oai-physim/targets/bin/smallblocktest.Rel15
# Copy some executables # Copy some executables
WORKDIR /usr/bin/ WORKDIR /usr/bin/
COPY --from=phy-sim-build /usr/bin/killall . COPY --from=phy-sim-build \
COPY --from=phy-sim-build /usr/bin/xmlstarlet . /usr/bin/killall \
COPY --from=phy-sim-build /usr/bin/svn . /usr/bin/xmlstarlet \
/usr/bin/svn \
./
# Copy the relevant configuration files for phySim # Copy the relevant configuration files for phySim
WORKDIR /opt/oai-physim/ WORKDIR /opt/oai-physim/
COPY --from=phy-sim-build /oai-ran/cmake_targets/autotests/run_exec_autotests.bash /opt/oai-physim/cmake_targets/autotests/ COPY --from=phy-sim-build \
COPY --from=phy-sim-build /oai-ran/cmake_targets/autotests/test_case_list.xml /opt/oai-physim/cmake_targets/autotests/ /oai-ran/cmake_targets/autotests/run_exec_autotests.bash \
COPY --from=phy-sim-build /oai-ran/cmake_targets/autotests/tools/free_mem.bash /opt/oai-physim/cmake_targets/autotests/tools/ /oai-ran/cmake_targets/autotests/test_case_list.xml \
COPY --from=phy-sim-build /oai-ran/cmake_targets/tools/build_helper /opt/oai-physim/cmake_targets/tools/ /opt/oai-physim/cmake_targets/autotests/
COPY --from=phy-sim-build /oai-ran/cmake_targets/tools/test_helper /opt/oai-physim/cmake_targets/tools/ COPY --from=phy-sim-build \
/oai-ran/cmake_targets/autotests/tools/free_mem.bash \
/oai-ran/cmake_targets/tools/build_helper \
/oai-ran/cmake_targets/tools/test_helper \
/opt/oai-physim/cmake_targets/tools/
#CMD ["sleep", "infinity"] #CMD ["sleep", "infinity"]
...@@ -66,6 +66,5 @@ COPY . . ...@@ -66,6 +66,5 @@ COPY . .
RUN /bin/sh oaienv && \ RUN /bin/sh oaienv && \
cd cmake_targets && \ cd cmake_targets && \
mkdir -p log && \ mkdir -p log && \
./build_oai -I -w USRP ./build_oai -I -w USRP && \
rm /etc/pki/entitlement/*pem
RUN rm /etc/pki/entitlement/*pem
...@@ -18,11 +18,19 @@ if [[ -v USE_FDD_IF4P5_RCC ]]; then cp $PREFIX/etc/rcc.if4p5.fdd.conf $PREFIX/et ...@@ -18,11 +18,19 @@ if [[ -v USE_FDD_IF4P5_RCC ]]; then cp $PREFIX/etc/rcc.if4p5.fdd.conf $PREFIX/et
if [[ -v USE_TDD_IF4P5_RCC ]]; then cp $PREFIX/etc/rcc.if4p5.tdd.conf $PREFIX/etc/enb.conf; fi if [[ -v USE_TDD_IF4P5_RCC ]]; then cp $PREFIX/etc/rcc.if4p5.tdd.conf $PREFIX/etc/enb.conf; fi
if [[ -v USE_FDD_RRU ]]; then cp $PREFIX/etc/rru.fdd.conf $PREFIX/etc/enb.conf; fi if [[ -v USE_FDD_RRU ]]; then cp $PREFIX/etc/rru.fdd.conf $PREFIX/etc/enb.conf; fi
if [[ -v USE_TDD_RRU ]]; then cp $PREFIX/etc/rru.tdd.conf $PREFIX/etc/enb.conf; fi if [[ -v USE_TDD_RRU ]]; then cp $PREFIX/etc/rru.tdd.conf $PREFIX/etc/enb.conf; fi
# Sometimes, the templates are not enough. We mount a conf file on $PREFIX/etc. It can be a template itself.
if [[ -v USE_VOLUMED_CONF ]]; then cp $PREFIX/etc/mounted.conf $PREFIX/etc/enb.conf; fi
# Only this template will be manipulated # Only this template will be manipulated
CONFIG_FILES=`ls $PREFIX/etc/enb.conf || true` CONFIG_FILES=`ls $PREFIX/etc/enb.conf || true`
for c in ${CONFIG_FILES}; do for c in ${CONFIG_FILES}; do
# Sometimes templates have no pattern to be replaced.
if ! grep -oP '@[a-zA-Z0-9_]+@' ${c}; then
echo "Configuration is already set"
break
fi
# grep variable names (format: ${VAR}) from template to be rendered # grep variable names (format: ${VAR}) from template to be rendered
VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${c} | sort | uniq | xargs) VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${c} | sort | uniq | xargs)
......
...@@ -9,11 +9,19 @@ THREAD_PARALLEL_CONFIG=${THREAD_PARALLEL_CONFIG:-PARALLEL_SINGLE_THREAD} ...@@ -9,11 +9,19 @@ THREAD_PARALLEL_CONFIG=${THREAD_PARALLEL_CONFIG:-PARALLEL_SINGLE_THREAD}
# Based another env var, pick one template to use # Based another env var, pick one template to use
if [[ -v USE_NSA_TDD_MONO ]]; then cp $PREFIX/etc/gnb.nsa.tdd.conf $PREFIX/etc/gnb.conf; fi if [[ -v USE_NSA_TDD_MONO ]]; then cp $PREFIX/etc/gnb.nsa.tdd.conf $PREFIX/etc/gnb.conf; fi
if [[ -v USE_SA_TDD_MONO ]]; then cp $PREFIX/etc/gnb.sa.tdd.conf $PREFIX/etc/gnb.conf; fi if [[ -v USE_SA_TDD_MONO ]]; then cp $PREFIX/etc/gnb.sa.tdd.conf $PREFIX/etc/gnb.conf; fi
# Sometimes, the templates are not enough. We mount a conf file on $PREFIX/etc. It can be a template itself.
if [[ -v USE_VOLUMED_CONF ]]; then cp $PREFIX/etc/mounted.conf $PREFIX/etc/gnb.conf; fi
# Only this template will be manipulated # Only this template will be manipulated
CONFIG_FILES=`ls $PREFIX/etc/gnb.conf || true` CONFIG_FILES=`ls $PREFIX/etc/gnb.conf || true`
for c in ${CONFIG_FILES}; do for c in ${CONFIG_FILES}; do
# Sometimes templates have no pattern to be replaced.
if ! grep -oP '@[a-zA-Z0-9_]+@' ${c}; then
echo "Configuration is already set"
break
fi
# grep variable names (format: ${VAR}) from template to be rendered # grep variable names (format: ${VAR}) from template to be rendered
VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${c} | sort | uniq | xargs) VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${c} | sort | uniq | xargs)
......
...@@ -449,6 +449,7 @@ static OAI_phy_scope_t *create_phy_scope_gnb(void) { ...@@ -449,6 +449,7 @@ static OAI_phy_scope_t *create_phy_scope_gnb(void) {
OAI_phy_scope_t *fdui = calloc(( sizeof *fdui ),1); OAI_phy_scope_t *fdui = calloc(( sizeof *fdui ),1);
// Define form // Define form
fdui->phy_scope = fl_bgn_form( FL_NO_BOX, 800, 800 ); fdui->phy_scope = fl_bgn_form( FL_NO_BOX, 800, 800 );
fl_set_form_dblbuffer(fdui->phy_scope, 1);
// This the whole UI box // This the whole UI box
obj = fl_add_box( FL_BORDER_BOX, 0, 0, 800, 800, "" ); obj = fl_add_box( FL_BORDER_BOX, 0, 0, 800, 800, "" );
fl_set_object_color( obj, FL_BLACK, FL_WHITE ); fl_set_object_color( obj, FL_BLACK, FL_WHITE );
...@@ -530,7 +531,10 @@ static void *scope_thread_gNB(void *arg) { ...@@ -530,7 +531,10 @@ static void *scope_thread_gNB(void *arg) {
OAI_phy_scope_t *form_gnb = create_phy_scope_gnb(); OAI_phy_scope_t *form_gnb = create_phy_scope_gnb();
while (!oai_exit) { while (!oai_exit) {
fl_freeze_form(form_gnb->phy_scope);
phy_scope_gNB(form_gnb, p, nb_ue); phy_scope_gNB(form_gnb, p, nb_ue);
fl_unfreeze_form(form_gnb->phy_scope);
fl_redraw_form(form_gnb->phy_scope);
usleep(99*1000); usleep(99*1000);
} }
...@@ -801,6 +805,7 @@ static OAI_phy_scope_t *create_phy_scope_nrue( int ID ) { ...@@ -801,6 +805,7 @@ static OAI_phy_scope_t *create_phy_scope_nrue( int ID ) {
OAI_phy_scope_t *fdui = calloc(( sizeof *fdui ),1); OAI_phy_scope_t *fdui = calloc(( sizeof *fdui ),1);
// Define form // Define form
fdui->phy_scope = fl_bgn_form( FL_NO_BOX, 800, 900 ); fdui->phy_scope = fl_bgn_form( FL_NO_BOX, 800, 900 );
fl_set_form_dblbuffer(fdui->phy_scope, 1);
// This the whole UI box // This the whole UI box
obj = fl_add_box( FL_BORDER_BOX, 0, 0, 800, 900, "" ); obj = fl_add_box( FL_BORDER_BOX, 0, 0, 800, 900, "" );
fl_set_object_color( obj, FL_BLACK, FL_BLACK ); fl_set_object_color( obj, FL_BLACK, FL_BLACK );
......
...@@ -192,8 +192,13 @@ uint8_t get_transformPrecoding(const NR_BWP_UplinkCommon_t *initialUplinkBWP, ...@@ -192,8 +192,13 @@ uint8_t get_transformPrecoding(const NR_BWP_UplinkCommon_t *initialUplinkBWP,
uint8_t configuredGrant); uint8_t configuredGrant);
void nr_mac_gNB_rrc_ul_failure(const module_id_t Mod_instP, void nr_mac_gNB_rrc_ul_failure(const module_id_t Mod_instP,
const int CC_idP, const int CC_idP,
const frame_t frameP, const frame_t frameP,
const sub_frame_t subframeP, const sub_frame_t subframeP,
const rnti_t rntiP) ; const rnti_t rntiP);
void nr_mac_gNB_rrc_ul_failure_reset(const module_id_t Mod_instP,
const frame_t frameP,
const sub_frame_t subframeP,
const rnti_t rntiP);
#endif #endif
...@@ -822,6 +822,24 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP, ...@@ -822,6 +822,24 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
ra->state = Msg4; ra->state = Msg4;
ra->Msg4_frame = (frameP + 2) % 1024; ra->Msg4_frame = (frameP + 2) % 1024;
ra->Msg4_slot = 1; ra->Msg4_slot = 1;
if (ra->msg3_dcch_dtch) {
// Check if the UE identified by C-RNTI still exists at the gNB
int UE_id_C = find_nr_UE_id(gnb_mod_idP, ra->crnti);
if (UE_id_C < 0) {
// The UE identified by C-RNTI no longer exists at the gNB
// Let's abort the current RA, so the UE will trigger a new RA later but using RRCSetupRequest instead. A better solution may be implemented
mac_remove_nr_ue(gnb_mod_idP, ra->rnti);
nr_clear_ra_proc(gnb_mod_idP, CC_idP, frameP, ra);
return;
} else {
// The UE identified by C-RNTI still exists at the gNB
// Reset uplink failure flags/counters/timers at MAC and at RRC so gNB will resume again scheduling resources for this UE
UE_info->UE_sched_ctrl[UE_id_C].pusch_consecutive_dtx_cnt = 0;
UE_info->UE_sched_ctrl[UE_id_C].ul_failure = 0;
nr_mac_gNB_rrc_ul_failure_reset(gnb_mod_idP, frameP, slotP, ra->crnti);
}
}
LOG_I(NR_MAC, "Scheduling RA-Msg4 for TC_RNTI 0x%04x (state %d, frame %d, slot %d)\n", LOG_I(NR_MAC, "Scheduling RA-Msg4 for TC_RNTI 0x%04x (state %d, frame %d, slot %d)\n",
(ra->msg3_dcch_dtch?ra->crnti:ra->rnti), ra->state, ra->Msg4_frame, ra->Msg4_slot); (ra->msg3_dcch_dtch?ra->crnti:ra->rnti), ra->state, ra->Msg4_frame, ra->Msg4_slot);
} }
......
...@@ -215,6 +215,182 @@ void du_rlc_data_req(const protocol_ctxt_t *const ctxt_pP, ...@@ -215,6 +215,182 @@ void du_rlc_data_req(const protocol_ctxt_t *const ctxt_pP,
/* rlc_data_req queue - end */ /* rlc_data_req queue - end */
/****************************************************************************/ /****************************************************************************/
/****************************************************************************/
/* pdcp_data_ind thread - begin */
/****************************************************************************/
typedef struct {
protocol_ctxt_t ctxt_pP;
srb_flag_t srb_flagP;
MBMS_flag_t MBMS_flagP;
rb_id_t rb_id;
sdu_size_t sdu_buffer_size;
mem_block_t *sdu_buffer;
} pdcp_data_ind_queue_item;
#define PDCP_DATA_IND_QUEUE_SIZE 10000
typedef struct {
pdcp_data_ind_queue_item q[PDCP_DATA_IND_QUEUE_SIZE];
volatile int start;
volatile int length;
pthread_mutex_t m;
pthread_cond_t c;
} pdcp_data_ind_queue;
static pdcp_data_ind_queue pq;
static void do_pdcp_data_ind(
const protocol_ctxt_t *const ctxt_pP,
const srb_flag_t srb_flagP,
const MBMS_flag_t MBMS_flagP,
const rb_id_t rb_id,
const sdu_size_t sdu_buffer_size,
mem_block_t *const sdu_buffer)
{
nr_pdcp_ue_t *ue;
nr_pdcp_entity_t *rb;
int rnti = ctxt_pP->rnti;
if (ctxt_pP->module_id != 0 ||
//ctxt_pP->enb_flag != 1 ||
ctxt_pP->instance != 0 ||
ctxt_pP->eNB_index != 0 ||
ctxt_pP->configured != 1 ||
ctxt_pP->brOption != 0) {
LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__);
exit(1);
}
if (ctxt_pP->enb_flag)
T(T_ENB_PDCP_UL, T_INT(ctxt_pP->module_id), T_INT(rnti),
T_INT(rb_id), T_INT(sdu_buffer_size));
nr_pdcp_manager_lock(nr_pdcp_ue_manager);
ue = nr_pdcp_manager_get_ue(nr_pdcp_ue_manager, rnti);
if (srb_flagP == 1) {
if (rb_id < 1 || rb_id > 2)
rb = NULL;
else
rb = ue->srb[rb_id - 1];
} else {
if (rb_id < 1 || rb_id > 5)
rb = NULL;
else
rb = ue->drb[rb_id - 1];
}
if (rb != NULL) {
rb->recv_pdu(rb, (char *)sdu_buffer->data, sdu_buffer_size);
} else {
LOG_E(PDCP, "%s:%d:%s: fatal: no RB found (rb_id %ld, srb_flag %d)\n",
__FILE__, __LINE__, __FUNCTION__, rb_id, srb_flagP);
exit(1);
}
nr_pdcp_manager_unlock(nr_pdcp_ue_manager);
free_mem_block(sdu_buffer, __FUNCTION__);
}
static void *pdcp_data_ind_thread(void *_)
{
int i;
pthread_setname_np(pthread_self(), "PDCP data ind");
while (1) {
if (pthread_mutex_lock(&pq.m) != 0) abort();
while (pq.length == 0)
if (pthread_cond_wait(&pq.c, &pq.m) != 0) abort();
i = pq.start;
if (pthread_mutex_unlock(&pq.m) != 0) abort();
do_pdcp_data_ind(&pq.q[i].ctxt_pP,
pq.q[i].srb_flagP,
pq.q[i].MBMS_flagP,
pq.q[i].rb_id,
pq.q[i].sdu_buffer_size,
pq.q[i].sdu_buffer);
if (pthread_mutex_lock(&pq.m) != 0) abort();
pq.length--;
pq.start = (pq.start + 1) % PDCP_DATA_IND_QUEUE_SIZE;
if (pthread_cond_signal(&pq.c) != 0) abort();
if (pthread_mutex_unlock(&pq.m) != 0) abort();
}
}
static void init_nr_pdcp_data_ind_queue(void)
{
pthread_t t;
pthread_mutex_init(&pq.m, NULL);
pthread_cond_init(&pq.c, NULL);
if (pthread_create(&t, NULL, pdcp_data_ind_thread, NULL) != 0) {
LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__);
exit(1);
}
}
static void enqueue_pdcp_data_ind(
const protocol_ctxt_t *const ctxt_pP,
const srb_flag_t srb_flagP,
const MBMS_flag_t MBMS_flagP,
const rb_id_t rb_id,
const sdu_size_t sdu_buffer_size,
mem_block_t *const sdu_buffer)
{
int i;
int logged = 0;
if (pthread_mutex_lock(&pq.m) != 0) abort();
while (pq.length == PDCP_DATA_IND_QUEUE_SIZE) {
if (!logged) {
logged = 1;
LOG_W(PDCP, "%s: pdcp_data_ind queue is full\n", __FUNCTION__);
}
if (pthread_cond_wait(&pq.c, &pq.m) != 0) abort();
}
i = (pq.start + pq.length) % PDCP_DATA_IND_QUEUE_SIZE;
pq.length++;
pq.q[i].ctxt_pP = *ctxt_pP;
pq.q[i].srb_flagP = srb_flagP;
pq.q[i].MBMS_flagP = MBMS_flagP;
pq.q[i].rb_id = rb_id;
pq.q[i].sdu_buffer_size = sdu_buffer_size;
pq.q[i].sdu_buffer = sdu_buffer;
if (pthread_cond_signal(&pq.c) != 0) abort();
if (pthread_mutex_unlock(&pq.m) != 0) abort();
}
boolean_t pdcp_data_ind(
const protocol_ctxt_t *const ctxt_pP,
const srb_flag_t srb_flagP,
const MBMS_flag_t MBMS_flagP,
const rb_id_t rb_id,
const sdu_size_t sdu_buffer_size,
mem_block_t *const sdu_buffer)
{
enqueue_pdcp_data_ind(ctxt_pP,
srb_flagP,
MBMS_flagP,
rb_id,
sdu_buffer_size,
sdu_buffer);
return true;
}
/****************************************************************************/
/* pdcp_data_ind thread - end */
/****************************************************************************/
/****************************************************************************/ /****************************************************************************/
/* hacks to be cleaned up at some point - begin */ /* hacks to be cleaned up at some point - begin */
/****************************************************************************/ /****************************************************************************/
...@@ -375,6 +551,7 @@ void pdcp_layer_init(void) ...@@ -375,6 +551,7 @@ void pdcp_layer_init(void)
init_nr_rlc_data_req_queue(); init_nr_rlc_data_req_queue();
} }
init_nr_pdcp_data_ind_queue();
nr_pdcp_init_timer_thread(nr_pdcp_ue_manager); nr_pdcp_init_timer_thread(nr_pdcp_ue_manager);
} }
...@@ -639,62 +816,6 @@ srb_found: ...@@ -639,62 +816,6 @@ srb_found:
} }
} }
boolean_t pdcp_data_ind(
const protocol_ctxt_t *const ctxt_pP,
const srb_flag_t srb_flagP,
const MBMS_flag_t MBMS_flagP,
const rb_id_t rb_id,
const sdu_size_t sdu_buffer_size,
mem_block_t *const sdu_buffer)
{
nr_pdcp_ue_t *ue;
nr_pdcp_entity_t *rb;
int rnti = ctxt_pP->rnti;
if (ctxt_pP->module_id != 0 ||
//ctxt_pP->enb_flag != 1 ||
ctxt_pP->instance != 0 ||
ctxt_pP->eNB_index != 0 ||
ctxt_pP->configured != 1 ||
ctxt_pP->brOption != 0) {
LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__);
exit(1);
}
if (ctxt_pP->enb_flag)
T(T_ENB_PDCP_UL, T_INT(ctxt_pP->module_id), T_INT(rnti),
T_INT(rb_id), T_INT(sdu_buffer_size));
nr_pdcp_manager_lock(nr_pdcp_ue_manager);
ue = nr_pdcp_manager_get_ue(nr_pdcp_ue_manager, rnti);
if (srb_flagP == 1) {
if (rb_id < 1 || rb_id > 2)
rb = NULL;
else
rb = ue->srb[rb_id - 1];
} else {
if (rb_id < 1 || rb_id > 5)
rb = NULL;
else
rb = ue->drb[rb_id - 1];
}
if (rb != NULL) {
rb->recv_pdu(rb, (char *)sdu_buffer->data, sdu_buffer_size);
} else {
LOG_E(PDCP, "%s:%d:%s: fatal: no RB found (rb_id %ld, srb_flag %d)\n",
__FILE__, __LINE__, __FUNCTION__, rb_id, srb_flagP);
exit(1);
}
nr_pdcp_manager_unlock(nr_pdcp_ue_manager);
free_mem_block(sdu_buffer, __FUNCTION__);
return 1;
}
void pdcp_run(const protocol_ctxt_t *const ctxt_pP) void pdcp_run(const protocol_ctxt_t *const ctxt_pP)
{ {
MessageDef *msg_p; MessageDef *msg_p;
......
...@@ -1596,9 +1596,18 @@ void nr_rlc_entity_am_recv_sdu(nr_rlc_entity_t *_entity, ...@@ -1596,9 +1596,18 @@ void nr_rlc_entity_am_recv_sdu(nr_rlc_entity_t *_entity,
exit(1); exit(1);
} }
/* log SDUs rejected, at most once per second */
if (entity->sdu_rejected != 0
&& entity->t_current > entity->t_log_buffer_full + 1000) {
LOG_E(RLC, "%s:%d:%s: warning: %d SDU rejected, SDU buffer full\n",
__FILE__, __LINE__, __FUNCTION__,
entity->sdu_rejected);
entity->sdu_rejected = 0;
entity->t_log_buffer_full = entity->t_current;
}
if (entity->tx_size + size > entity->tx_maxsize) { if (entity->tx_size + size > entity->tx_maxsize) {
LOG_E(RLC, "%s:%d:%s: warning: SDU rejected, SDU buffer full\n", entity->sdu_rejected++;
__FILE__, __LINE__, __FUNCTION__);
return; return;
} }
...@@ -1742,6 +1751,9 @@ static void check_t_reassembly(nr_rlc_entity_am_t *entity) ...@@ -1742,6 +1751,9 @@ static void check_t_reassembly(nr_rlc_entity_am_t *entity)
sn = (sn + 1) % entity->sn_modulus; sn = (sn + 1) % entity->sn_modulus;
entity->rx_highest_status = sn; entity->rx_highest_status = sn;
/* trigger status report */
entity->status_triggered = 1;
if (sn_compare_rx(entity, entity->rx_next_highest, if (sn_compare_rx(entity, entity->rx_next_highest,
(entity->rx_highest_status+1) % entity->sn_modulus) > 0 || (entity->rx_highest_status+1) % entity->sn_modulus) > 0 ||
(entity->rx_next_highest == (entity->rx_next_highest ==
...@@ -1827,6 +1839,9 @@ static void clear_entity(nr_rlc_entity_am_t *entity) ...@@ -1827,6 +1839,9 @@ static void clear_entity(nr_rlc_entity_am_t *entity)
entity->t_current = 0; entity->t_current = 0;
entity->t_log_buffer_full = 0;
entity->sdu_rejected = 0;
entity->t_poll_retransmit_start = 0; entity->t_poll_retransmit_start = 0;
entity->t_reassembly_start = 0; entity->t_reassembly_start = 0;
entity->t_status_prohibit_start = 0; entity->t_status_prohibit_start = 0;
......
...@@ -60,6 +60,10 @@ typedef struct { ...@@ -60,6 +60,10 @@ typedef struct {
/* set to the latest know time by the user of the module. Unit: ms */ /* set to the latest know time by the user of the module. Unit: ms */
uint64_t t_current; uint64_t t_current;
/* deal with logging of buffer full */
uint64_t t_log_buffer_full;
int sdu_rejected;
/* timers (stores the TTI of activation, 0 means not active) */ /* timers (stores the TTI of activation, 0 means not active) */
uint64_t t_poll_retransmit_start; uint64_t t_poll_retransmit_start;
uint64_t t_reassembly_start; uint64_t t_reassembly_start;
......
...@@ -383,3 +383,17 @@ void nr_mac_gNB_rrc_ul_failure(const module_id_t Mod_instP, ...@@ -383,3 +383,17 @@ void nr_mac_gNB_rrc_ul_failure(const module_id_t Mod_instP,
LOG_D(RRC,"Frame %d, Subframe %d: UL failure: UE %x unknown \n",frameP,subframeP,rntiP); LOG_D(RRC,"Frame %d, Subframe %d: UL failure: UE %x unknown \n",frameP,subframeP,rntiP);
} }
} }
void nr_mac_gNB_rrc_ul_failure_reset(const module_id_t Mod_instP,
const frame_t frameP,
const sub_frame_t subframeP,
const rnti_t rntiP) {
struct rrc_gNB_ue_context_s *ue_context_p = NULL;
ue_context_p = rrc_gNB_get_ue_context(RC.nrrrc[Mod_instP], rntiP);
if (ue_context_p != NULL) {
LOG_W(RRC,"Frame %d, Subframe %d: UE %x UL failure reset, deactivating timer\n",frameP,subframeP,rntiP);
ue_context_p->ue_context.ul_failure_timer=0;
} else {
LOG_W(RRC,"Frame %d, Subframe %d: UL failure reset: UE %x unknown \n",frameP,subframeP,rntiP);
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment