diff --git a/CMakeLists.txt b/CMakeLists.txt index 2730c510e0..14d90a4c3b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2037,6 +2037,19 @@ target_link_libraries(nr_ulsim PRIVATE ) target_link_libraries(nr_ulsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs) +add_executable(nr_srssim + ${OPENAIR1_DIR}/SIMULATION/NR_PHY/srssim.c + ${OPENAIR_DIR}/executables/softmodem-common.c + ${NFAPI_USER_DIR}/nfapi.c + ${NFAPI_USER_DIR}/gnb_ind_vars.c + ${PHY_INTERFACE_DIR}/queue_t.c + ) + +target_link_libraries(nr_srssim PRIVATE + -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON nr_rrc L2_NR -lz -Wl,--end-group + m pthread ITTI dl nr_ue_phy_meas physim_common + ) + # these simulators do not compile: # dlsim_tm7 pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim foreach(myExe dlsim ulsim) @@ -2085,7 +2098,7 @@ if (${T_TRACER}) nr-uesoftmodem dlsim dlsim_tm4 dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim nr_ulsim nr_dlsim nr_dlschsim nr_pbchsim nr_pucchsim - nr_ulschsim ldpctest polartest smallblocktest + nr_ulschsim ldpctest polartest smallblocktest nr_srssim #all "add_library" definitions ITTI lte_rrc nr_rrc s1ap x2ap m2ap m3ap f1ap params_libconfig diff --git a/ci-scripts/cls_ci_helper.py b/ci-scripts/cls_ci_helper.py index eb47a32892..6b67057c92 100644 --- a/ci-scripts/cls_ci_helper.py +++ b/ci-scripts/cls_ci_helper.py @@ -24,15 +24,14 @@ from typing import NamedTuple import logging class TestCaseCtx(NamedTuple): - count: int - test_id: int + test_idx: int logPath: str def Default(logPath): - return TestCaseCtx(123, 112233, logPath) + return TestCaseCtx(112233, logPath) def baseFilename(self): # typically, the test ID is of form 001234 (6 digits) - return f"{self.logPath}/{self.count}-{self.test_id:06d}" + return f"{self.logPath}/{self.test_idx:06d}" def archiveArtifact(cmd, ctx, remote_path): base = os.path.basename(remote_path) diff --git a/ci-scripts/cls_cluster.py b/ci-scripts/cls_cluster.py index 8a9919c700..dc97c80acd 100644 --- a/ci-scripts/cls_cluster.py +++ b/ci-scripts/cls_cluster.py @@ -164,7 +164,6 @@ class Cluster: def PullClusterImage(self, HTML, node, images, tag_prefix): logging.debug(f'Pull OC image {images} to server {node}') - self.testCase_id = HTML.testCase_id with cls_cmd.getConnection(node) as cmd: succeeded = OC_login(cmd, self.OCUserName, self.OCPassword, CI_OC_RAN_NAMESPACE) if not succeeded: @@ -211,8 +210,6 @@ class Cluster: logging.debug(f'Building on cluster triggered from server: {node}') self.cmd = cls_cmd.RemoteCmd(node) - self.testCase_id = HTML.testCase_id - # Workaround for some servers, we need to erase completely the workspace self.cmd.cd(lSourcePath) # to reduce the amount of data send to OpenShift, we @@ -412,7 +409,7 @@ class Cluster: # the groovy scripts expects all logs in # //ci-scripts, so copy it there with cls_cmd.LocalCmd() as c: - c.run(f'mkdir -p {os.getcwd()}/test_log_{ctx.test_id}/') - c.run(f'cp -r {ctx.logPath} {os.getcwd()}/test_log_{ctx.test_id}/') + c.run(f'mkdir -p {os.getcwd()}/test_log_{ctx.test_idx}/') + c.run(f'cp -r {ctx.logPath} {os.getcwd()}/test_log_{ctx.test_idx}/') return status diff --git a/ci-scripts/cls_native.py b/ci-scripts/cls_native.py index d96f60bdca..e1b42acf5b 100644 --- a/ci-scripts/cls_native.py +++ b/ci-scripts/cls_native.py @@ -34,9 +34,8 @@ DPDK_PATH = '/opt/dpdk-t2-22.11.0' class Native(): - def Build(ctx, node, test_case, HTML, directory, options): + def Build(ctx, node, HTML, directory, options): logging.debug(f'Building on server: {node}') - HTML.testCase_id = test_case with cls_cmd.getConnection(node) as ssh: base = f"{directory}/cmake_targets" diff --git a/ci-scripts/cls_oai_html.py b/ci-scripts/cls_oai_html.py index cb1ca56542..6e29063192 100644 --- a/ci-scripts/cls_oai_html.py +++ b/ci-scripts/cls_oai_html.py @@ -67,7 +67,7 @@ class HTMLManagement(): self.htmlUEFailureMsg = '' self.startTime = int(round(time.time() * 1000)) - self.testCase_id = '' + self.testCaseIdx = '' self.desc = '' #----------------------------------------------------------- @@ -191,7 +191,7 @@ class HTMLManagement(): self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' \n') + self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') @@ -259,7 +259,7 @@ class HTMLManagement(): currentTime = int(round(time.time() * 1000)) - self.startTime self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' \n') + self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') if (str(status) == 'OK'): @@ -374,7 +374,7 @@ class HTMLManagement(): addOrangeBK = False self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' \n') + self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') if (str(status) == 'OK'): diff --git a/ci-scripts/cls_static_code_analysis.py b/ci-scripts/cls_static_code_analysis.py index 63b5b5b6dd..5ed52e4027 100644 --- a/ci-scripts/cls_static_code_analysis.py +++ b/ci-scripts/cls_static_code_analysis.py @@ -88,7 +88,6 @@ class StaticCodeAnalysis(): raise ValueError(f"{lSourcePath=} {node=}") logging.debug('Building on server: ' + node) cmd = cls_cmd.getConnection(node) - self.testCase_id = HTML.testCase_id # on RedHat/CentOS .git extension is mandatory result = re.search('([a-zA-Z0-9\:\-\.\/])+\.git', self.ranRepository) if result is not None: @@ -187,8 +186,6 @@ class StaticCodeAnalysis(): raise ValueError(f"{lSourcePath=} {node=}") logging.debug('Building on server: ' + node) cmd = cls_cmd.getConnection(node) - self.testCase_id = HTML.testCase_id - check_options = '' if self.ranAllowMerge: check_options = f'--build-arg MERGE_REQUEST=true --build-arg SRC_BRANCH={self.ranBranch}' diff --git a/ci-scripts/conf_files/gnb-cucp.sa.e1-ho-n2.conf b/ci-scripts/conf_files/gnb-cucp.sa.e1-ho-n2.conf index ad4cca969e..3ee84d0b85 100644 --- a/ci-scripts/conf_files/gnb-cucp.sa.e1-ho-n2.conf +++ b/ci-scripts/conf_files/gnb-cucp.sa.e1-ho-n2.conf @@ -21,10 +21,10 @@ gNBs = tr_s_preference = "f1"; - local_s_address = "192.168.71.150"; + local_s_address = "192.168.71.150"; remote_s_address = "192.168.71.171"; - local_s_portd = 2153; - remote_s_portd = 2153; + local_s_portd = 2153; + remote_s_portd = 2153; # ------- SCTP definitions SCTP : @@ -41,7 +41,7 @@ gNBs = E1_INTERFACE = ( { - type = "cp"; + type = "cp"; ipv4_cucp = "192.168.71.150"; port_cucp = 38462; ipv4_cuup = "0.0.0.0"; # multiple CU-UPs @@ -75,8 +75,8 @@ security = { log_config : { global_log_level = "info"; - pdcp_log_level = "info"; - rrc_log_level = "info"; - f1ap_log_level = "info"; - ngap_log_level = "info"; + pdcp_log_level = "info"; + rrc_log_level = "info"; + f1ap_log_level = "info"; + ngap_log_level = "info"; }; diff --git a/ci-scripts/conf_files/gnb.sa.band77.51prb.usrpb200.n2-ho.conf b/ci-scripts/conf_files/gnb.sa.band77.51prb.usrpb200.n2-ho.conf index 577e23a87d..3966cebc6b 100644 --- a/ci-scripts/conf_files/gnb.sa.band77.51prb.usrpb200.n2-ho.conf +++ b/ci-scripts/conf_files/gnb.sa.band77.51prb.usrpb200.n2-ho.conf @@ -30,26 +30,26 @@ gNBs = # downlinkConfigCommon #frequencyInfoDL # this is 3610.56 MHz - absoluteFrequencySSB = 679104; - dl_frequencyBand = 77; + absoluteFrequencySSB = 679104; + dl_frequencyBand = 77; # this is 3599.94 MHz - dl_absoluteFrequencyPointA = 678388; + dl_absoluteFrequencyPointA = 678388; #scs-SpecificCarrierList - dl_offstToCarrier = 0; + dl_offstToCarrier = 0; # subcarrierSpacing # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 - dl_subcarrierSpacing = 1; - dl_carrierBandwidth = 51; + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 51; #initialDownlinkBWP #genericParameters # this is RBstart=27,L=48 (275*(L-1))+RBstart - initialDLBWPlocationAndBandwidth = 13750; + initialDLBWPlocationAndBandwidth = 13750; # subcarrierSpacing # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 - initialDLBWPsubcarrierSpacing = 1; + initialDLBWPsubcarrierSpacing = 1; #pdcch-ConfigCommon - initialDLBWPcontrolResourceSetZero = 12; - initialDLBWPsearchSpaceZero = 0; + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; #uplinkConfigCommon #frequencyInfoUL @@ -197,10 +197,10 @@ RUs = ( att_rx = 0; bands = [77]; max_pdschReferenceSignalPower = -27; - max_rxgain = 114; + max_rxgain = 114; eNB_instances = [0]; - clock_src = "external"; - time_src = "external"; + clock_src = "external"; + time_src = "external"; } ); diff --git a/ci-scripts/conf_files/neighbour-config-ho.conf b/ci-scripts/conf_files/neighbour-config-ho.conf index 2490ce1883..07d58e14e5 100644 --- a/ci-scripts/conf_files/neighbour-config-ho.conf +++ b/ci-scripts/conf_files/neighbour-config-ho.conf @@ -42,13 +42,13 @@ nr_measurement_configuration = { A2 = { enable = 1; threshold = 110; - timeToTrigger = 1; + time_to_trigger = 1; }; A3 = ({ - cell_id = -1; #Default + physCellId = -1; #Default offset = 10; hysteresis = 0; - timeToTrigger = 1 + time_to_trigger = 1 }) }; diff --git a/ci-scripts/conf_files/neighbour-config.conf b/ci-scripts/conf_files/neighbour-config.conf index a498dbf157..9a05f01486 100644 --- a/ci-scripts/conf_files/neighbour-config.conf +++ b/ci-scripts/conf_files/neighbour-config.conf @@ -57,19 +57,19 @@ nr_measurement_configuration = { A2 = { enable = 1; threshold = 60; - timeToTrigger = 1; + time_to_trigger = 1; }; A3 = ({ physCellId = -1; #Default offset = 10; hysteresis = 0; - timeToTrigger = 1 + time_to_trigger = 1 }, { physCellId = 2; offset = 5; hysteresis = 1; - timeToTrigger = 2 + time_to_trigger = 2 }) }; diff --git a/ci-scripts/docker/Dockerfile.physim.ubuntu b/ci-scripts/docker/Dockerfile.physim.ubuntu index 8fe6d91c4a..c820c7fd7a 100644 --- a/ci-scripts/docker/Dockerfile.physim.ubuntu +++ b/ci-scripts/docker/Dockerfile.physim.ubuntu @@ -44,4 +44,4 @@ RUN cmake -GNinja -DENABLE_PHYSIM_TESTS=ON \ -DCMAKE_C_FLAGS=-Werror -DCMAKE_CXX_FLAGS=-Werror \ -DPHYSIM_CHECK_FILES="ThresholdsGracehopper.cmake" \ .. && \ - ninja ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim nr_psbchsim + ninja ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim nr_psbchsim nr_srssim diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 8aadad76bb..1995ff545b 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -58,7 +58,7 @@ import re # reg import time # sleep import os import subprocess -import xml.etree.ElementTree as ET +import lxml.etree as ET import logging import signal import traceback @@ -98,7 +98,7 @@ def ExecuteActionWithParam(action, ctx, node): if proxy_commit is not None: CONTAINERS.proxyCommit = proxy_commit if action == 'Build_eNB': - success = cls_native.Native.Build(ctx, node, HTML.testCase_id, HTML, RAN.eNBSourceCodePath, RAN.Build_eNB_args) + success = cls_native.Native.Build(ctx, node, HTML, RAN.eNBSourceCodePath, RAN.Build_eNB_args) elif action == 'Build_Image': success = CONTAINERS.BuildImage(ctx, node, HTML) elif action == 'Build_Proxy': @@ -306,10 +306,10 @@ def receive_signal(signum, frame): logging.warning("received signal again, exiting") sys.exit(1) -def ShowTestID(ctx, desc): +def ShowTestID(ctx, desc, file, line): logging.info(f'\u001B[1m----------------------------------------\u001B[0m') - logging.info(f'\u001B[1m Test ID: {ctx.test_id} (#{ctx.count}) \u001B[0m') - logging.info(f'\u001B[1m {desc} \u001B[0m') + logging.info(f'\u001B[1m Test #{ctx.test_idx} ({file}:{line}) \u001B[0m') + logging.info(f'\u001B[1m {desc} \u001B[0m') logging.info(f'\u001B[1m----------------------------------------\u001B[0m') #----------------------------------------------------------- @@ -455,46 +455,11 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re xmlTree = ET.parse(xml_test_file) xmlRoot = xmlTree.getroot() - exclusion_tests=xmlRoot.findtext('TestCaseExclusionList',default='') - requested_tests=xmlRoot.findtext('TestCaseRequestedList',default='') if (HTML.nbTestXMLfiles == 1): HTML.htmlTabRefs.append(xmlRoot.findtext('htmlTabRef',default='test-tab-0')) HTML.htmlTabNames.append(xmlRoot.findtext('htmlTabName',default='Test-0')) all_tests=xmlRoot.findall('testCase') - exclusion_tests=exclusion_tests.split() - requested_tests=requested_tests.split() - - #check that exclusion tests are well formatted - #(6 digits or less than 6 digits followed by +) - for test in exclusion_tests: - if (not re.match('^[0-9]{6}$', test) and - not re.match('^[0-9]{1,5}\\+$', test)): - logging.error('exclusion test is invalidly formatted: ' + test) - sys.exit(1) - else: - logging.info(test) - - #check that requested tests are well formatted - #(6 digits or less than 6 digits followed by +) - #be verbose - for test in requested_tests: - if (re.match('^[0-9]{6}$', test) or - re.match('^[0-9]{1,5}\\+$', test)): - logging.info('test group/case requested: ' + test) - else: - logging.error('requested test is invalidly formatted: ' + test) - sys.exit(1) - - #get the list of tests to be done - todo_tests=[] - for test in requested_tests: - if (test_in_list(test, exclusion_tests)): - logging.info('test will be skipped: ' + test) - else: - #logging.info('test will be run: ' + test) - todo_tests.append(test) - signal.signal(signal.SIGINT, receive_signal) HTML.CreateHtmlTabHeader() @@ -502,46 +467,42 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re task_set_succeeded = True HTML.startTime=int(round(time.time() * 1000)) - i = 0 - for test_case_id in todo_tests: - for test in all_tests: - if test_runner_abort: + for index, test in enumerate(all_tests, start=1): + if test_runner_abort: + task_set_succeeded = False + test_case_idx = f"{index:06d}" + ctx = TestCaseCtx(int(test_case_idx), logPath) + HTML.testCaseIdx = test_case_idx + desc = test.findtext('desc') + node = test.findtext('node') if not force_local else 'localhost' + always_exec = test.findtext('always_exec') in ['True', 'true', 'Yes', 'yes'] + may_fail = test.findtext('may_fail') in ['True', 'true', 'Yes', 'yes'] + HTML.desc = desc + action = test.findtext('class') + if not CheckClassValidity(xml_class_list, action, test_case_idx): + task_set_succeeded = False + continue + file = os.path.basename(xml_test_file) + line = test.find('class').sourceline + ShowTestID(ctx, desc, file, line) + if not task_set_succeeded and not always_exec: + msg = f"skipping test due to prior error" + logging.warning(msg) + HTML.CreateHtmlTestRowQueue(msg, "SKIP", []) + continue + try: + test_succeeded = ExecuteActionWithParam(action, ctx, node) + if not test_succeeded and may_fail: + logging.warning(f"test ID {test_case_idx} action {action} may or may not fail, proceeding despite error") + elif not test_succeeded: + logging.error(f"test ID {test_case_idx} action {action} failed ({test_succeeded}), skipping next tests") task_set_succeeded = False - id = test.get('id') - if test_case_id != id: - continue - i += 1 - CiTestObj.testCase_id = id - ctx = TestCaseCtx(i, int(id), logPath) - HTML.testCase_id=CiTestObj.testCase_id - desc = test.findtext('desc') - node = test.findtext('node') if not force_local else 'localhost' - always_exec = test.findtext('always_exec') in ['True', 'true', 'Yes', 'yes'] - may_fail = test.findtext('may_fail') in ['True', 'true', 'Yes', 'yes'] - HTML.desc = desc - action = test.findtext('class') - if (CheckClassValidity(xml_class_list, action, id) == False): - task_set_succeeded = False - continue - ShowTestID(ctx, desc) - if not task_set_succeeded and not always_exec: - msg = f"skipping test due to prior error" - logging.warning(msg) - HTML.CreateHtmlTestRowQueue(msg, "SKIP", []) - break - try: - test_succeeded = ExecuteActionWithParam(action, ctx, node) - if not test_succeeded and may_fail: - logging.warning(f"test ID {test_case_id} action {action} may or may not fail, proceeding despite error") - elif not test_succeeded: - logging.error(f"test ID {test_case_id} action {action} failed ({test_succeeded}), skipping next tests") - task_set_succeeded = False - except Exception as e: - s = traceback.format_exc() - logging.error(f'while running CI, an exception occurred:\n{s}') - HTML.CreateHtmlTestRowQueue("N/A", 'KO', [f"CI test code encountered an exception:\n{s}"]) - task_set_succeeded = False - break + except Exception as e: + s = traceback.format_exc() + logging.error(f'while running CI, an exception occurred:\n{s}') + HTML.CreateHtmlTestRowQueue("N/A", 'KO', [f"CI test code encountered an exception:\n{s}"]) + task_set_succeeded = False + continue if not task_set_succeeded: logging.error('\u001B[1;37;41mScenario failed\u001B[0m') diff --git a/ci-scripts/ran.py b/ci-scripts/ran.py index e440fc3a62..04384ad4f4 100644 --- a/ci-scripts/ran.py +++ b/ci-scripts/ran.py @@ -67,7 +67,6 @@ class RANManagement(): self.eNBOptions = ['', '', ''] self.eNBmbmsEnables = [False, False, False] self.eNBstatuses = [-1, -1, -1] - self.testCase_id = '' self.runtime_stats= '' self.datalog_rt_stats={} self.datalog_rt_stats_file='datalog_rt_stats.default.yaml' @@ -88,7 +87,6 @@ class RANManagement(): raise ValueError(f"{node=}") logging.debug('Starting eNB/gNB on server: ' + node) - self.testCase_id = HTML.testCase_id lSourcePath = self.eNBSourceCodePath cmd = cls_cmd.getConnection(node) diff --git a/ci-scripts/tests/build.py b/ci-scripts/tests/build.py index 013486a560..8701b17a8c 100644 --- a/ci-scripts/tests/build.py +++ b/ci-scripts/tests/build.py @@ -17,7 +17,7 @@ import cls_cmd class TestBuild(unittest.TestCase): def setUp(self): self.html = cls_oai_html.HTMLManagement() - self.html.testCase_id = "000000" + self.html.testCaseIdx = "000000" self.cont = cls_containerize.Containerize() self._d = tempfile.mkdtemp() logging.warning(f"temporary directory: {self._d}") diff --git a/ci-scripts/tests/test-runner/test.xml b/ci-scripts/tests/test-runner/test.xml index cb54989301..635ccb3b6b 100644 --- a/ci-scripts/tests/test-runner/test.xml +++ b/ci-scripts/tests/test-runner/test.xml @@ -22,60 +22,51 @@ --> - test - Manual testing - wrench - - 000001 - 000011 - 000012 - 000002 - 000003 - 000004 - - + test + Manual testing + wrench + + Custom_Command + This should succeed + localhost + true + - - Custom_Command - This should succeed - localhost - true - + + Custom_Command + This may fail + true + localhost + false + - - Custom_Command - This may fail - true - localhost - false - + + Custom_Command + This is still executed + localhost + true + - - Custom_Command - This is still executed - localhost - true - + + Custom_Command + This should fail + localhost + false + - - Custom_Command - This should fail - localhost - false - + + Custom_Command + This should be skipped + localhost + true + - - Custom_Command - This should be skipped - localhost - true - + + Custom_Command + This should be executed because marked so + true + localhost + true + - - Custom_Command - This should be executed because marked so - true - localhost - true - diff --git a/ci-scripts/xml_files/cluster_image_build.xml b/ci-scripts/xml_files/cluster_image_build.xml index a80d1cd7d4..086b6a0880 100644 --- a/ci-scripts/xml_files/cluster_image_build.xml +++ b/ci-scripts/xml_files/cluster_image_build.xml @@ -21,23 +21,20 @@ --> - build-tab - Build Images on Cluster - wrench - - 000002 - 000001 - - - - Create_Workspace - Create new Workspace - poseidon - - - Build_Cluster_Image - Build Images on OpenShift Cluster - poseidon - + build-tab + Build Images on Cluster + wrench + + + Create_Workspace + Create new Workspace + poseidon + + + + Build_Cluster_Image + Build Images on OpenShift Cluster + poseidon + diff --git a/ci-scripts/xml_files/container_4g_l2sim_tdd.xml b/ci-scripts/xml_files/container_4g_l2sim_tdd.xml index 8a010b9308..1b3ec37b81 100644 --- a/ci-scripts/xml_files/container_4g_l2sim_tdd.xml +++ b/ci-scripts/xml_files/container_4g_l2sim_tdd.xml @@ -21,136 +21,122 @@ --> - l2sim-4glte-tdd - Testing 4G LTE L2 sim - FDD eNB - wrench - - 111111 - 800813 - 000000 - 000001 - 000002 - 000003 - 000004 - 020001 - 020002 - 030011 - 030012 - 100001 - 222222 - - + l2sim-4glte-tdd + Testing 4G LTE L2 sim - FDD eNB + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-enb oai-lte-ue - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy Cassandra Database - localhost - ci-scripts/yaml_files/4g_l2sim_fdd - cassandra db_init - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-enb oai-lte-ue + - - Deploy_Object - Deploy OAI 4G CoreNetwork - localhost - ci-scripts/yaml_files/4g_l2sim_fdd - oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen - + + Create_Workspace + Create new Workspace + localhost + - - Deploy_Object - Deploy OAI 4G eNB L2 sim - localhost - ci-scripts/yaml_files/4g_l2sim_fdd - oai_enb - + + Deploy_Object + Deploy Cassandra Database + localhost + ci-scripts/yaml_files/4g_l2sim_fdd + cassandra db_init + - - Deploy_Object - Deploy OAI L2 sim 4G LTE-UE 1 and Proxy - localhost - ci-scripts/yaml_files/4g_l2sim_fdd - proxy oai_ue1 - + + Deploy_Object + Deploy OAI 4G CoreNetwork + localhost + ci-scripts/yaml_files/4g_l2sim_fdd + oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen + - - Attach_UE - Attach OAI UE - l2sim4g_ue - localhost - + + Deploy_Object + Deploy OAI 4G eNB L2 sim + localhost + ci-scripts/yaml_files/4g_l2sim_fdd + oai_enb + - - Ping - Ping trf-gen from LTE-UE 1 - l2sim4g_ue - localhost - l2sim4g_ext_dn - localhost - -c 20 - 0 - + + Deploy_Object + Deploy OAI L2 sim 4G LTE-UE 1 and Proxy + localhost + ci-scripts/yaml_files/4g_l2sim_fdd + proxy oai_ue1 + - - Ping - Ping LTE-UE 1 from trf-gen - l2sim4g_ext_dn - localhost - l2sim4g_ue - localhost - -c 20 - 0 - + + Attach_UE + Attach OAI UE + l2sim4g_ue + localhost + - - Iperf - Iperf UDP Downlink - l2sim4g_ue - localhost - l2sim4g_ext_dn - localhost - -u -t 30 -b 1M -R - 25 - 80 - + + Ping + Ping trf-gen from LTE-UE 1 + l2sim4g_ue + localhost + l2sim4g_ext_dn + localhost + -c 20 + 0 + - - Iperf - Iperf UDP Uplink - l2sim4g_ue - localhost - l2sim4g_ext_dn - localhost - -u -t 30 -b 3M - 25 - 80 - + + Ping + Ping LTE-UE 1 from trf-gen + l2sim4g_ext_dn + localhost + l2sim4g_ue + localhost + -c 20 + 0 + - - Undeploy_Object - true - localhost - Undeploy all OAI 4G stack - ci-scripts/yaml_files/4g_l2sim_fdd - + + Iperf + Iperf UDP Downlink + l2sim4g_ue + localhost + l2sim4g_ext_dn + localhost + -u -t 30 -b 1M -R + 25 + 80 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-enb oai-lte-ue - + + Iperf + Iperf UDP Uplink + l2sim4g_ue + localhost + l2sim4g_ext_dn + localhost + -u -t 30 -b 3M + 25 + 80 + + + + Undeploy_Object + true + localhost + Undeploy all OAI 4G stack + ci-scripts/yaml_files/4g_l2sim_fdd + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-enb oai-lte-ue + diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml index 3606957af6..adad131ef7 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml @@ -21,151 +21,140 @@ --> - rfsim-4glte-fdd05mhz - Monolithic eNB - FDD 05MHz - wrench - - 111111 - 800813 - 000011 - 000001 - 000012 - 000002 - 000013 - 000001 - 000014 - 000015 - 020011 - 020012 - 030011 - 030012 - 100011 - 222222 - - - - Create_Workspace - Create new Workspace - localhost - - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-enb-asan oai-lte-ue-asan - + rfsim-4glte-fdd05mhz + Monolithic eNB - FDD 05MHz + wrench - - Deploy_Object - Deploy Cassandra Database - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz - cassandra db_init - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-enb-asan oai-lte-ue-asan + - - IdleSleep - Sleep - 30 - + + Create_Workspace + Create new Workspace + localhost + - - IdleSleep - Sleep - 10 - + + Deploy_Object + Deploy Cassandra Database + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz + cassandra db_init + - - Deploy_Object - Deploy OAI 4G CoreNetwork - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz - oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen - + + IdleSleep + Sleep + 30 + - - Deploy_Object - Deploy OAI 4G eNB RF sim (FDD 05MHz) - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz - oai_enb0 - + + Deploy_Object + Deploy OAI 4G CoreNetwork + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz + oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen + - - Deploy_Object - Deploy OAI 4G LTE-UE RF sim (FDD 05MHz) - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz - oai_ue0 - + + IdleSleep + Sleep + 10 + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim4g_ue - localhost - + + Deploy_Object + Deploy OAI 4G eNB RF sim (FDD 05MHz) + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz + oai_enb0 + - - Ping - Ping Traffic-Gen from LTE-UE - rfsim4g_ue - localhost - rfsim4g_ext_dn - localhost - -c 20 - 5 - + + IdleSleep + Sleep + 30 + - - Ping - Ping LTE-UE from Traffic-Gen - rfsim4g_ext_dn - localhost - rfsim4g_ue - localhost - -c 20 - 5 - + + Deploy_Object + Deploy OAI 4G LTE-UE RF sim (FDD 05MHz) + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz + oai_ue0 + - - Iperf - Iperf UDP DL - rfsim4g_ue - rfsim4g_ext_dn - -u -t 30 -b 2M -R - 25 - 80 - localhost - localhost - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim4g_ue + localhost + - - Iperf - Iperf UDP UL - rfsim4g_ue - rfsim4g_ext_dn - -u -t 30 -b 1M - 25 - 80 - localhost - localhost - + + Ping + Ping Traffic-Gen from LTE-UE + rfsim4g_ue + localhost + rfsim4g_ext_dn + localhost + -c 20 + 5 + - - Undeploy_Object - true - Undeploy all OAI 4G stack - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz - + + Ping + Ping LTE-UE from Traffic-Gen + rfsim4g_ext_dn + localhost + rfsim4g_ue + localhost + -c 20 + 5 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-enb-asan oai-lte-ue-asan - + + Iperf + Iperf UDP UL + rfsim4g_ue + rfsim4g_ext_dn + -u -t 30 -b 1M + 25 + 80 + localhost + localhost + + + + Iperf + Iperf UDP DL + rfsim4g_ue + rfsim4g_ext_dn + -u -t 30 -b 2M -R + 25 + 80 + localhost + localhost + + + + Undeploy_Object + true + Undeploy all OAI 4G stack + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-enb-asan oai-lte-ue-asan + diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1.xml index 1d7194f44f..0879e27170 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1.xml @@ -21,124 +21,111 @@ --> - rfsim-4glte-fdd05mhz-noS1 - Monolithic eNB - FDD 05MHz - noS1 - wrench - - 111111 -800813 - 000013 - 000002 - 000014 - 000001 - 020011 - 020012 - 030011 - 030012 - 100011 - 222222 - - + rfsim-4glte-fdd05mhz-noS1 + Monolithic eNB - FDD 05MHz - noS1 + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-enb-asan oai-lte-ue-asan - - - Create_Workspace - Create new Workspace - localhost - - - IdleSleep - Sleep - 30 - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-enb-asan oai-lte-ue-asan + - - IdleSleep - Sleep - 10 - + + Create_Workspace + Create new Workspace + localhost + - - Deploy_Object - Deploy OAI 4G eNB RF sim (FDD 05MHz) - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1 - oai_enb0 - + + Deploy_Object + Deploy OAI 4G eNB RF sim (FDD 05MHz) + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1 + oai_enb0 + - - Deploy_Object - Deploy OAI 4G LTE-UE RF sim (FDD 05MHz) - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1 - oai_ue0 - + + IdleSleep + Sleep + 10 + - - Ping - Ping Traffic-Gen from LTE-UE - rfsim4g_ue - localhost - rfsim4g_enb_nos1 - localhost - -c 20 - 5 - + + Deploy_Object + Deploy OAI 4G LTE-UE RF sim (FDD 05MHz) + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1 + oai_ue0 + - - Ping - Ping LTE-UE from eNB - rfsim4g_enb_nos1 - localhost - rfsim4g_ue - localhost - -c 20 - 5 - + + IdleSleep + Sleep + 30 + - - Iperf - Iperf UDP DL - rfsim4g_ue - localhost - rfsim4g_enb_nos1 - localhost - -u -t 30 -b 2M -R - 25 - 80 - + + Ping + Ping Traffic-Gen from LTE-UE + rfsim4g_ue + localhost + rfsim4g_enb_nos1 + localhost + -c 20 + 5 + - - Iperf - Iperf UDP UL - rfsim4g_ue - localhost - rfsim4g_enb_nos1 - localhost - -u -t 30 -b 1M - 25 - 80 - + + Ping + Ping LTE-UE from eNB + rfsim4g_enb_nos1 + localhost + rfsim4g_ue + localhost + -c 20 + 5 + - - Undeploy_Object - true - Undeploy all OAI 4G stack - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1 - + + Iperf + Iperf UDP DL + rfsim4g_ue + localhost + rfsim4g_enb_nos1 + localhost + -u -t 30 -b 2M -R + 25 + 80 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-enb-asan oai-lte-ue-asan - + + Iperf + Iperf UDP UL + rfsim4g_ue + localhost + rfsim4g_enb_nos1 + localhost + -u -t 30 -b 1M + 25 + 80 + + + + Undeploy_Object + true + Undeploy all OAI 4G stack + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-enb-asan oai-lte-ue-asan + diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml index a5b642ebe0..acde953fe8 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml @@ -21,151 +21,140 @@ --> - rfsim-4glte-fdd10mhz - Monolithic eNB - FDD 10MHz - wrench - - 111111 - 800813 - 000011 - 000001 - 000012 - 000002 - 000013 - 000001 - 000014 - 000015 - 020011 - 020012 - 030011 - 030012 - 100011 - 222222 - - + rfsim-4glte-fdd10mhz + Monolithic eNB - FDD 10MHz + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-enb-asan oai-lte-ue-asan - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy Cassandra Database - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz - cassandra db_init - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-enb-asan oai-lte-ue-asan + - - IdleSleep - Sleep - 30 - + + Create_Workspace + Create new Workspace + localhost + - - IdleSleep - Sleep - 10 - + + Deploy_Object + Deploy Cassandra Database + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz + cassandra db_init + - - Deploy_Object - Deploy OAI 4G CoreNetwork - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz - oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen - + + IdleSleep + Sleep + 30 + - - Deploy_Object - Deploy OAI 4G eNB RF sim (FDD 10MHz) - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz - oai_enb0 - + + Deploy_Object + Deploy OAI 4G CoreNetwork + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz + oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen + - - Deploy_Object - Deploy OAI 4G LTE-UE RF sim (FDD 10MHz) - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz - oai_ue0 - + + IdleSleep + Sleep + 10 + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim4g_ue - localhost - + + Deploy_Object + Deploy OAI 4G eNB RF sim (FDD 10MHz) + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz + oai_enb0 + - - Ping - Ping Traffic-Gen from LTE-UE - rfsim4g_ue - localhost - rfsim4g_ext_dn - localhost - -c 20 - 5 - + + IdleSleep + Sleep + 30 + - - Ping - Ping LTE-UE from Traffic-Gen - rfsim4g_ext_dn - localhost - rfsim4g_ue - localhost - -c 20 - 5 - + + Deploy_Object + Deploy OAI 4G LTE-UE RF sim (FDD 10MHz) + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz + oai_ue0 + - - Iperf - Iperf UDP DL - rfsim4g_ue - localhost - rfsim4g_ext_dn - localhost - -u -t 30 -b 2M -R - 25 - 80 - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim4g_ue + localhost + - - Iperf - Iperf UDP UL - rfsim4g_ue - localhost - rfsim4g_ext_dn - localhost - -u -t 30 -b 1M - 25 - 80 - + + Ping + Ping Traffic-Gen from LTE-UE + rfsim4g_ue + localhost + rfsim4g_ext_dn + localhost + -c 20 + 5 + - - Undeploy_Object - true - Undeploy all OAI 4G stack - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz - + + Ping + Ping LTE-UE from Traffic-Gen + rfsim4g_ext_dn + localhost + rfsim4g_ue + localhost + -c 20 + 5 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-enb-asan oai-lte-ue-asan - + + Iperf + Iperf UDP DL + rfsim4g_ue + localhost + rfsim4g_ext_dn + localhost + -u -t 30 -b 2M -R + 25 + 80 + + + + Iperf + Iperf UDP UL + rfsim4g_ue + localhost + rfsim4g_ext_dn + localhost + -u -t 30 -b 1M + 25 + 80 + + + + Undeploy_Object + true + Undeploy all OAI 4G stack + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-enb-asan oai-lte-ue-asan + diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml index 592c80de68..cf6eb1d838 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml @@ -21,151 +21,140 @@ --> - rfsim-4glte-fdd20mhz - Monolithic eNB - FDD 20MHz - wrench - - 111111 - 800813 - 000011 - 000001 - 000012 - 000002 - 000013 - 000001 - 000014 - 000015 - 020011 - 020012 - 030011 - 030012 - 100011 - 222222 - - + rfsim-4glte-fdd20mhz + Monolithic eNB - FDD 20MHz + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-enb-asan oai-lte-ue-asan - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy Cassandra Database - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz - cassandra db_init - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-enb-asan oai-lte-ue-asan + - - IdleSleep - Sleep - 30 - + + Create_Workspace + Create new Workspace + localhost + - - IdleSleep - Sleep - 10 - + + Deploy_Object + Deploy Cassandra Database + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz + cassandra db_init + - - Deploy_Object - Deploy OAI 4G CoreNetwork - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz - oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen - + + IdleSleep + Sleep + 30 + - - Deploy_Object - Deploy OAI 4G eNB RF sim (FDD 20MHz) - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz - oai_enb0 - + + Deploy_Object + Deploy OAI 4G CoreNetwork + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz + oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen + - - Deploy_Object - Deploy OAI 4G LTE-UE RF sim (FDD 20MHz) - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz - oai_ue0 - + + IdleSleep + Sleep + 10 + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim4g_ue - localhost - + + Deploy_Object + Deploy OAI 4G eNB RF sim (FDD 20MHz) + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz + oai_enb0 + - - Ping - Ping Traffic-Gen from LTE-UE - rfsim4g_ue - localhost - rfsim4g_ext_dn - localhost - -c 20 - 5 - + + IdleSleep + Sleep + 30 + - - Ping - Ping LTE-UE from Traffic-Gen - rfsim4g_ext_dn - localhost - rfsim4g_ue - localhost - -c 20 - 5 - + + Deploy_Object + Deploy OAI 4G LTE-UE RF sim (FDD 20MHz) + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz + oai_ue0 + - - Iperf - Iperf UDP DL - rfsim4g_ue - localhost - rfsim4g_ext_dn - localhost - -u -t 30 -b 2M -R - 25 - 80 - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim4g_ue + localhost + - - Iperf - Iperf UDP UL - rfsim4g_ue - localhost - rfsim4g_ext_dn - localhost - -u -t 30 -b 1M - 25 - 80 - + + Ping + Ping Traffic-Gen from LTE-UE + rfsim4g_ue + localhost + rfsim4g_ext_dn + localhost + -c 20 + 5 + - - Undeploy_Object - true - Undeploy all OAI 4G stack - localhost - ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz - + + Ping + Ping LTE-UE from Traffic-Gen + rfsim4g_ext_dn + localhost + rfsim4g_ue + localhost + -c 20 + 5 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-enb-asan oai-lte-ue-asan - + + Iperf + Iperf UDP DL + rfsim4g_ue + localhost + rfsim4g_ext_dn + localhost + -u -t 30 -b 2M -R + 25 + 80 + + + + Iperf + Iperf UDP UL + rfsim4g_ue + localhost + rfsim4g_ext_dn + localhost + -u -t 30 -b 1M + 25 + 80 + + + + Undeploy_Object + true + Undeploy all OAI 4G stack + localhost + ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-enb-asan oai-lte-ue-asan + diff --git a/ci-scripts/xml_files/container_4g_rfsim_fembms.xml b/ci-scripts/xml_files/container_4g_rfsim_fembms.xml index 21d2acc4eb..f03fb12e76 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fembms.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fembms.xml @@ -21,87 +21,77 @@ --> - rfsim-4glte-fembms - Monolithic eNB - FeMBMS - wrench - - 111111 - 800813 - 000013 - 000002 - 000014 - 000001 - 030011 - 100011 - 222222 - - + rfsim-4glte-fembms + Monolithic eNB - FeMBMS + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-enb-asan oai-lte-ue-asan - - - Create_Workspace - Create new Workspace - localhost - - - IdleSleep - Sleep - 30 - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-enb-asan oai-lte-ue-asan + - - IdleSleep - Sleep - 10 - + + Create_Workspace + Create new Workspace + localhost + - - Deploy_Object - Deploy OAI 4G eNB RF sim (FeMBMS) - localhost - ci-scripts/yaml_files/4g_rfsimulator_fembms - oai_enb0 - + + Deploy_Object + Deploy OAI 4G eNB RF sim (FeMBMS) + localhost + ci-scripts/yaml_files/4g_rfsimulator_fembms + oai_enb0 + - - Deploy_Object - Deploy OAI 4G LTE-UE RF sim (FeMBMS) - localhost - ci-scripts/yaml_files/4g_rfsimulator_fembms - oai_ue0 - + + IdleSleep + Sleep + 10 + - - Iperf2_Unidir - Iperf2 UDP DL - rfsim4g_ue_fembms - localhost - rfsim4g_enb_fembms - localhost - -u -t 30 -b 2M - 25 - 80 - + + Deploy_Object + Deploy OAI 4G LTE-UE RF sim (FeMBMS) + localhost + ci-scripts/yaml_files/4g_rfsimulator_fembms + oai_ue0 + - - Undeploy_Object - true - Undeploy all OAI 4G stack - localhost - ci-scripts/yaml_files/4g_rfsimulator_fembms - + + IdleSleep + Sleep + 30 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-enb-asan oai-lte-ue-asan - + + Iperf2_Unidir + Iperf2 UDP DL + rfsim4g_ue_fembms + localhost + rfsim4g_enb_fembms + localhost + -u -t 30 -b 2M + 25 + 80 + + + + Undeploy_Object + true + Undeploy all OAI 4G stack + localhost + ci-scripts/yaml_files/4g_rfsimulator_fembms + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-enb-asan oai-lte-ue-asan + diff --git a/ci-scripts/xml_files/container_4g_rfsim_mbms.xml b/ci-scripts/xml_files/container_4g_rfsim_mbms.xml index 70d5db33cb..f41aa98a9f 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_mbms.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_mbms.xml @@ -21,87 +21,77 @@ --> - rfsim-4glte-mbms - Monolithic eNB - MBMS - wrench - - 111111 - 800813 - 000013 - 000002 - 000014 - 000001 - 030011 - 100011 - 222222 - - + rfsim-4glte-mbms + Monolithic eNB - MBMS + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-enb-asan oai-lte-ue-asan - - - Create_Workspace - Create new Workspace - localhost - - - IdleSleep - Sleep - 30 - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-enb-asan oai-lte-ue-asan + - - IdleSleep - Sleep - 10 - + + Create_Workspace + Create new Workspace + localhost + - - Deploy_Object - Deploy OAI 4G eNB RF sim (MBMS) - localhost - ci-scripts/yaml_files/4g_rfsimulator_mbms - oai_enb0 - + + Deploy_Object + Deploy OAI 4G eNB RF sim (MBMS) + localhost + ci-scripts/yaml_files/4g_rfsimulator_mbms + oai_enb0 + - - Deploy_Object - Deploy OAI 4G LTE-UE RF sim (MBMS) - localhost - ci-scripts/yaml_files/4g_rfsimulator_mbms - oai_ue0 - + + IdleSleep + Sleep + 10 + - - Iperf - Iperf UDP DL - rfsim4g_ue - localhost - rfsim4g_enb_nos1 - localhost - -u -t 30 -b 2M -R - 25 - 80 - + + Deploy_Object + Deploy OAI 4G LTE-UE RF sim (MBMS) + localhost + ci-scripts/yaml_files/4g_rfsimulator_mbms + oai_ue0 + - - Undeploy_Object - true - Undeploy all OAI 4G stack - localhost - ci-scripts/yaml_files/4g_rfsimulator_mbms - + + IdleSleep + Sleep + 30 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-enb-asan oai-lte-ue-asan - + + Iperf + Iperf UDP DL + rfsim4g_ue + localhost + rfsim4g_enb_nos1 + localhost + -u -t 30 -b 2M -R + 25 + 80 + + + + Undeploy_Object + true + Undeploy all OAI 4G stack + localhost + ci-scripts/yaml_files/4g_rfsimulator_mbms + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-enb-asan oai-lte-ue-asan + diff --git a/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml b/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml index 60054cb305..f57ff9eb14 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml @@ -21,144 +21,139 @@ --> - rfsim-4glte-tdd05mhz - Monolithic eNB - TDD 05MHz - wrench - - 111111 - 800813 - 000011 - 000001 - 000012 - 000002 - 000013 - 000001 - 000014 - 000002 - 020011 - 020012 - 030011 - 030012 - 100011 - 222222 - - + rfsim-4glte-tdd05mhz + Monolithic eNB - TDD 05MHz + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-enb oai-lte-ue - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy Cassandra Database - localhost - ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz - cassandra db_init - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-enb oai-lte-ue + - - IdleSleep - Sleep - 30 - + + Create_Workspace + Create new Workspace + localhost + - - IdleSleep - Sleep - 10 - + + Deploy_Object + Deploy Cassandra Database + localhost + ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz + cassandra db_init + - - Deploy_Object - Deploy OAI 4G CoreNetwork - localhost - ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz - oai_hss oai_mme oai_spgwc oai_spgwu trf_gen - + + IdleSleep + Sleep + 30 + - - Deploy_Object - Deploy OAI 4G eNB RF sim (TDD 05MHz) - localhost - ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz - oai_enb0 - + + Deploy_Object + Deploy OAI 4G CoreNetwork + localhost + ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz + oai_hss oai_mme oai_spgwc oai_spgwu trf_gen + - - Deploy_Object - Deploy OAI 4G LTE-UE RF sim (TDD 05MHz) - localhost - ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz - oai_ue0 - + + IdleSleep + Sleep + 10 + - - Ping - Ping Traffic-Gen from LTE-UE - rfsim4g_ue - localhost - rfsim4g_ext_dn - localhost - -c 20 - 5 - + + Deploy_Object + Deploy OAI 4G eNB RF sim (TDD 05MHz) + localhost + ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz + oai_enb0 + - - Ping - Ping LTE-UE from Traffic-Gen - rfsim4g_ext_dn - localhost - rfsim4g_ue - localhost - -c 20 - 5 - + + IdleSleep + Sleep + 30 + - - Iperf - Iperf UDP DL - rfsim4g_ue - localhost - rfsim4g_ext_dn - localhost - -u -t 30 -b 2M -R - 25 - 80 - + + Deploy_Object + Deploy OAI 4G LTE-UE RF sim (TDD 05MHz) + localhost + ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz + oai_ue0 + - - Iperf - Iperf UDP UL - rfsim4g_ue - localhost - rfsim4g_ext_dn - localhost - -u -t 30 -b 1M - 25 - 80 - + + IdleSleep + Sleep + 10 + - - Undeploy_Object - true - Undeploy all OAI 4G stack - localhost - ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz - + + Ping + Ping Traffic-Gen from LTE-UE + rfsim4g_ue + localhost + rfsim4g_ext_dn + localhost + -c 20 + 5 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-enb oai-lte-ue - + + Ping + Ping LTE-UE from Traffic-Gen + rfsim4g_ext_dn + localhost + rfsim4g_ue + localhost + -c 20 + 5 + + + + Iperf + Iperf UDP DL + rfsim4g_ue + localhost + rfsim4g_ext_dn + localhost + -u -t 30 -b 2M -R + 25 + 80 + + + + Iperf + Iperf UDP UL + rfsim4g_ue + localhost + rfsim4g_ext_dn + localhost + -u -t 30 -b 1M + 25 + 80 + + + + Undeploy_Object + true + Undeploy all OAI 4G stack + localhost + ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-enb oai-lte-ue + diff --git a/ci-scripts/xml_files/container_5g_e1_rfsim.xml b/ci-scripts/xml_files/container_5g_e1_rfsim.xml index 5c0fa2b99e..fc3be58e2d 100644 --- a/ci-scripts/xml_files/container_5g_e1_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_e1_rfsim.xml @@ -21,91 +21,81 @@ --> - rfsim-5gnr-e1 - CUCP-CUUP-DU E1+F1 split - wrench - - 111111 - 800813 - 000021 - 000022 - 000023 - 000024 - 020021 - 100021 - 222222 - - + rfsim-5gnr-e1 + CUCP-CUUP-DU E1+F1 split + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb oai-nr-cuup oai-nr-ue - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy OAI 5G CoreNetwork - localhost - ci-scripts/yaml_files/5g_rfsimulator_e1 - mysql oai-amf oai-smf oai-upf - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb oai-nr-cuup oai-nr-ue + - - Deploy_Object - Deploy OAI 5G RAN RF sim SA (1 CU-CP, 3 CU-UPs, 3 DUs) - localhost - ci-scripts/yaml_files/5g_rfsimulator_e1 - oai-cucp oai-cuup oai-cuup2 oai-cuup3 oai-du oai-du2 oai-du3 - + + Create_Workspace + Create new Workspace + localhost + - - Deploy_Object - Deploy OAI 5G NR-UE RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator_e1 - oai-nr-ue oai-nr-ue2 oai-nr-ue3 - + + Deploy_Object + Deploy OAI 5G CoreNetwork + localhost + ci-scripts/yaml_files/5g_rfsimulator_e1 + mysql oai-amf oai-smf oai-upf + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 - localhost - + + Deploy_Object + Deploy OAI 5G RAN RF sim SA (1 CU-CP, 3 CU-UPs, 3 DUs) + localhost + ci-scripts/yaml_files/5g_rfsimulator_e1 + oai-cucp oai-cuup oai-cuup2 oai-cuup3 oai-du oai-du2 oai-du3 + - - Ping - Ping ext-dn from all NR-UEs - rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 - localhost - rfsim5g_5gc_fixed_ip - localhost - -c 20 -i0.25 - 5 - + + Deploy_Object + Deploy OAI 5G NR-UE RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator_e1 + oai-nr-ue oai-nr-ue2 oai-nr-ue3 + - - Undeploy_Object - true - localhost - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_rfsimulator_e1 - 1,0,0,0 - 1,0,0,0 - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 + localhost + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb oai-nr-cuup oai-nr-ue - + + Ping + Ping ext-dn from all NR-UEs + rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 + localhost + rfsim5g_5gc_fixed_ip + localhost + -c 20 -i0.25 + 5 + + + + Undeploy_Object + true + localhost + Undeploy all OAI 5G stack + ci-scripts/yaml_files/5g_rfsimulator_e1 + 1,0,0,0 + 1,0,0,0 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb oai-nr-cuup oai-nr-ue + diff --git a/ci-scripts/xml_files/container_5g_f1_rfsim.xml b/ci-scripts/xml_files/container_5g_f1_rfsim.xml index f17be0215d..1ffba40f77 100644 --- a/ci-scripts/xml_files/container_5g_f1_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_f1_rfsim.xml @@ -21,235 +21,306 @@ --> - rfsim-5gnr-f1 - CU-DU F1 split - wrench - - 111111 - 800813 - 000021 - 000022 - 000023 - 020021 - 030020 - 030021 - 030022 - 040001 - 020022 - 040002 - 030021 - 030022 - 040021 - 000030 - 040022 - 040023 - 020022 - 040024 - 000024 - 000030 - 040025 - 000031 - 030021 - 040027 - 040025 - 000031 - 020022 - 040026 - 040025 - 000031 - 020022 - 040027 - 100021 - 222222 - - + rfsim-5gnr-f1 + CU-DU F1 split + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb-asan oai-nr-ue-asan - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy OAI 5G CoreNetwork - localhost - ci-scripts/yaml_files/5g_f1_rfsimulator - mysql oai-amf oai-smf oai-upf oai-ext-dn - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb-asan oai-nr-ue-asan + - - Deploy_Object - Deploy OAI 5G CU + DU-PCI0 + UE RF sim SA - localhost - ci-scripts/yaml_files/5g_f1_rfsimulator - oai-cu oai-du-pci0 oai-nr-ue - + + Create_Workspace + Create new Workspace + localhost + - - IdleSleep - Sleep - 15 - + + Deploy_Object + Deploy OAI 5G CoreNetwork + localhost + ci-scripts/yaml_files/5g_f1_rfsimulator + mysql oai-amf oai-smf oai-upf oai-ext-dn + - - IdleSleep - Sleep - 2 - + + Deploy_Object + Deploy OAI 5G CU + DU-PCI0 + UE RF sim SA + localhost + ci-scripts/yaml_files/5g_f1_rfsimulator + oai-cu oai-du-pci0 oai-nr-ue + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_ue - localhost - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_ue + localhost + - - Deploy_Object - Deploy OAI 5G (target) DU-PCI1 RF sim SA - localhost - ci-scripts/yaml_files/5g_f1_rfsimulator - oai-du-pci1 - + + Ping + Ping ext-dn from all NR-UEs + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i0.25 + 5 + - - Ping - Ping ext-dn from all NR-UEs - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 20 -i0.25 - 5 - + + Custom_Command + Simulate a DL radio channel with noise (3 dB) + localhost + echo channelmod modify 0 noise_power_dB 3 | ncat --send-only 192.168.71.181 8091 + - - Custom_Command - Simulate a DL radio channel with noise (3 dB) - localhost - echo channelmod modify 0 noise_power_dB 3 | ncat --send-only 192.168.71.181 8091 - + + Iperf + Iperf (DL/3Mbps/UDP)(20 sec) + -u -b 3M -t 20 -R + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Iperf - Iperf (DL/3Mbps/UDP)(20 sec) - -u -b 3M -t 20 -R - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Iperf + Iperf (UL/3Mbps/UDP)(20 sec) + -u -b 3M -t 20 + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Iperf - Iperf (UL/3Mbps/UDP)(20 sec) - -u -b 3M -t 20 - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Custom_Command + Trigger Reestablishment + localhost + echo ci force_reestab | ncat 192.168.71.171 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' + - - Custom_Command - Trigger Reestablishment - localhost - echo ci force_reestab | ncat 192.168.71.171 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i0.5 -w25 + 80 + - - Ping - Ping ext-dn from NR-UE - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 20 -i0.5 -w25 - 80 - + + Custom_Command + Verify Reestablishment + localhost + echo ci get_reestab_count | ncat 192.168.71.150 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' + - - Custom_Command - Verify Reestablishment - localhost - echo ci get_reestab_count | ncat 192.168.71.150 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' - + + Iperf + Iperf (DL/3Mbps/UDP)(20 sec) + -u -b 3M -t 20 -R + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Custom_Command - Simulate a disruption of DL radio channel (ploss 55) - localhost - echo channelmod modify 0 ploss 55 | ncat 192.168.71.181 8091 - + + Iperf + Iperf (UL/3Mbps/UDP)(20 sec) + -u -b 3M -t 20 + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Custom_Command - Get UE sync state (UE ID 0) - localhost - echo ciUE sync_state 0 | ncat 192.168.71.181 8091 | grep -E UE_NOT_SYNC - + + Custom_Command + Simulate a disruption of DL radio channel (ploss 55) + localhost + echo channelmod modify 0 ploss 55 | ncat 192.168.71.181 8091 + - - Custom_Command - Restoration of the original DL channel conditions (ploss 20) - localhost - echo channelmod modify 0 ploss 20 | ncat 192.168.71.181 8091 - + + IdleSleep + Sleep + 15 + - - Custom_Command - Get UE sync state (UE ID 0) - localhost - echo ciUE sync_state 0 | ncat 192.168.71.181 8091 | grep -E UE_CONNECTED - + + Custom_Command + Get UE sync state (UE ID 0) + localhost + echo ciUE sync_state 0 | ncat 192.168.71.181 8091 | grep -E UE_NOT_SYNC + - - Custom_Command - Trigger Handover - localhost - echo ci trigger_f1_ho | ncat 192.168.71.150 9090 - + + Custom_Command + Restoration of the original DL channel conditions (ploss 20) + localhost + echo channelmod modify 0 ploss 20 | ncat 192.168.71.181 8091 + - - Custom_Command - UE (1) connected to DU-PCI 0? - localhost - echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.150 9090 | grep "3584" - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i0.5 -w25 + 80 + - - Custom_Command - UE (1) connected to DU-PCI 1? - localhost - echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.150 9090 | grep "3585" - + + Custom_Command + Get UE sync state (UE ID 0) + localhost + echo ciUE sync_state 0 | ncat 192.168.71.181 8091 | grep -E UE_CONNECTED + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_f1_rfsimulator - 30,100,100,100 - 30,100,100,100 - + + Deploy_Object + Deploy OAI 5G (target) DU-PCI1 RF sim SA + localhost + ci-scripts/yaml_files/5g_f1_rfsimulator + oai-du-pci1 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb-asan oai-nr-ue-asan - + + IdleSleep + Sleep + 15 + + + + Custom_Command + Trigger Handover + localhost + echo ci trigger_f1_ho | ncat 192.168.71.150 9090 + + + + IdleSleep + Sleep + 2 + + + + Iperf + Iperf (DL/3Mbps/UDP)(20 sec) + -u -b 3M -t 20 -R + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + + + + Custom_Command + UE (1) connected to DU-PCI 1? + localhost + echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.150 9090 | grep "3585" + + + + Custom_Command + Trigger Handover + localhost + echo ci trigger_f1_ho | ncat 192.168.71.150 9090 + + + + IdleSleep + Sleep + 2 + + + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i0.5 -w25 + 80 + + + + Custom_Command + UE (1) connected to DU-PCI 0? + localhost + echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.150 9090 | grep "3584" + + + + Custom_Command + Trigger Handover + localhost + echo ci trigger_f1_ho | ncat 192.168.71.150 9090 + + + + IdleSleep + Sleep + 2 + + + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i0.5 -w25 + 80 + + + + Custom_Command + UE (1) connected to DU-PCI 1? + localhost + echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.150 9090 | grep "3585" + + + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_f1_rfsimulator + 30,100,100,100 + 30,100,100,100 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb-asan oai-nr-ue-asan + diff --git a/ci-scripts/xml_files/container_5g_fdd_rfsim.xml b/ci-scripts/xml_files/container_5g_fdd_rfsim.xml index 44ccb3a3d2..b4383feeaf 100644 --- a/ci-scripts/xml_files/container_5g_fdd_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_fdd_rfsim.xml @@ -21,120 +21,108 @@ --> - rfsim-5gnr-fdd - Monolithic FDD gNB with SDAP - wrench - - 111111 - 800813 - 000011 - 000012 - 000013 - 020011 - 020012 - 030011 - 030012 - 100011 - 222222 - - + rfsim-5gnr-fdd + Monolithic FDD gNB with SDAP + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb oai-nr-ue - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy OAI 5G CoreNetwork - localhost - ci-scripts/yaml_files/5g_fdd_rfsimulator - mysql oai-amf oai-smf oai-upf oai-ext-dn - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb oai-nr-ue + - - Deploy_Object - Deploy OAI 5G gNB+UE RF sim SA - localhost - ci-scripts/yaml_files/5g_fdd_rfsimulator - oai-gnb oai-nr-ue - + + Create_Workspace + Create new Workspace + localhost + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_ue - localhost - + + Deploy_Object + Deploy OAI 5G CoreNetwork + localhost + ci-scripts/yaml_files/5g_fdd_rfsimulator + mysql oai-amf oai-smf oai-upf oai-ext-dn + - - Ping - Ping ext-dn from NR-UE - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 - 5 - + + Deploy_Object + Deploy OAI 5G gNB+UE RF sim SA + localhost + ci-scripts/yaml_files/5g_fdd_rfsimulator + oai-gnb oai-nr-ue + - - Ping - Ping NR-UE from ext-dn - rfsim5g_ext_dn - localhost - rfsim5g_ue - localhost - -c 20 -i 0.25 - 5 - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_ue + localhost + - - Iperf - Iperf (DL/3Mbps/UDP)(30 sec) - -u -b 3M -t 30 -R - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + - - Iperf - Iperf (UL/3Mbps/UDP)(30 sec) - -u -b 3M -t 30 - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 20 -i 0.25 + 5 + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_fdd_rfsimulator - 1,0,0,0 - 1,0,0,0 - + + Iperf + Iperf (DL/3Mbps/UDP)(30 sec) + -u -b 3M -t 30 -R + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb oai-nr-ue - + + Iperf + Iperf (UL/3Mbps/UDP)(30 sec) + -u -b 3M -t 30 + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + + + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_fdd_rfsimulator + 1,0,0,0 + 1,0,0,0 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb oai-nr-ue + diff --git a/ci-scripts/xml_files/container_5g_flexric_rfsim.xml b/ci-scripts/xml_files/container_5g_flexric_rfsim.xml index 135eab6b68..78fb296697 100644 --- a/ci-scripts/xml_files/container_5g_flexric_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_flexric_rfsim.xml @@ -21,236 +21,206 @@ --> - rfsim-5gnr-flexric - Monolithic SA TDD gNB and FlexRic Integration - wrench - 1 - - 111110 - 111111 - 111112 - 000001 - 000002 - 000003 - 010000 - 000004 - 333333 - 010001 - 010002 - 010003 - 020005 - 002006 - 444444 - 100002 - 100003 - 100004 - 100005 - 100006 - 100007 - 100008 - 100009 - 100001 - 222221 - 222222 - - + rfsim-5gnr-flexric + Monolithic SA TDD gNB and FlexRic Integration + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb oai-nr-ue - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb oai-nr-ue + - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-flexric - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-flexric + - - Clean_Test_Server_Images - Clean Test Images on Test Server - localhost - oai-gnb oai-nr-ue - true - + + Custom_Command + Updating CN5G images + localhost + docker compose -f ../doc/tutorial_resources/oai-cn5g/docker-compose.yaml pull + - - Clean_Test_Server_Images - Clean Test Images on Test Server - localhost - oai-flexric - true - + + Deploy_Object + Deploy OAI 5G CoreNetwork + localhost + doc/tutorial_resources/oai-cn5g + mysql oai-nrf oai-udr oai-udm oai-ausf oai-amf oai-smf oai-upf oai-ext-dn + - - Custom_Command - Updating CN5G images - localhost - docker compose -f ../doc/tutorial_resources/oai-cn5g/docker-compose.yaml pull - + + Deploy_Object + Deploy OAI nearRT-RIC + localhost + ci-scripts/yaml_files/5g_rfsimulator_flexric + nearRT-RIC + - - Deploy_Object - Deploy OAI 5G CoreNetwork - localhost - doc/tutorial_resources/oai-cn5g - mysql oai-nrf oai-udr oai-udm oai-ausf oai-amf oai-smf oai-upf oai-ext-dn - + + Deploy_Object + Deploy OAI 5G gNB in RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator_flexric + oai-gnb + - - Deploy_Object - Deploy OAI nearRT-RIC - localhost - ci-scripts/yaml_files/5g_rfsimulator_flexric - nearRT-RIC - + + Deploy_Object + Deploy RC monitoring + localhost + ci-scripts/yaml_files/5g_rfsimulator_flexric + xapp-rc-moni + - - Deploy_Object - Deploy OAI 5G gNB in RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator_flexric - oai-gnb - + + Deploy_Object + Deploy 2 OAI 5G NR-UEs in RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator_flexric + oai-nr-ue oai-nr-ue2 + - - Deploy_Object - Deploy 2 OAI 5G NR-UEs in RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator_flexric - oai-nr-ue oai-nr-ue2 - + + Attach_UE + Attach OAI UE 1 and 2 + rfsim5g_ue rfsim5g_ue2 + carabe + - - Ping - Ping ext-dn from both UEs - rfsim5g_ue rfsim5g_ue2 - carabe - oai_ext_dn - carabe - -c 20 - 5 - + + Deploy_Object + Deploy KPM monitoring + localhost + ci-scripts/yaml_files/5g_rfsimulator_flexric + xapp-kpm-moni + - - Attach_UE - Attach OAI UE 1 and 2 - rfsim5g_ue rfsim5g_ue2 - carabe - + + Deploy_Object + Deploy KPM monitoring and RC control + localhost + ci-scripts/yaml_files/5g_rfsimulator_flexric + xapp-kpm-rc + - - Detach_UE - Detach OAI UE 1 and 2 - rfsim5g_ue rfsim5g_ue2 - carabe - + + Deploy_Object + Deploy custom SMs monitoring + localhost + ci-scripts/yaml_files/5g_rfsimulator_flexric + xapp-gtp-mac-rlc-pdcp-moni + - - Undeploy_Object - Undeploy Core Network - localhost - doc/tutorial_resources/oai-cn5g - true - + + Ping + Ping ext-dn from both UEs + rfsim5g_ue rfsim5g_ue2 + carabe + oai_ext_dn + carabe + -c 20 + 5 + - - Stop_Object - Stop RC monitoring xApp - localhost - ci-scripts/yaml_files/5g_rfsimulator_flexric - xapp-rc-moni - + + Detach_UE + Detach OAI UE 1 and 2 + rfsim5g_ue rfsim5g_ue2 + carabe + - - Stop_Object - Stop KPM monitoring xApp - localhost - ci-scripts/yaml_files/5g_rfsimulator_flexric - xapp-kpm-moni - + + Stop_Object + Stop RC monitoring xApp + localhost + ci-scripts/yaml_files/5g_rfsimulator_flexric + xapp-rc-moni + - - Stop_Object - Stop KPM monitoring and RC control xApp - localhost - ci-scripts/yaml_files/5g_rfsimulator_flexric - xapp-kpm-rc - + + Stop_Object + Stop KPM monitoring xApp + localhost + ci-scripts/yaml_files/5g_rfsimulator_flexric + xapp-kpm-moni + - - Stop_Object - Stop custom SMs monitoring xApp - localhost - ci-scripts/yaml_files/5g_rfsimulator_flexric - xapp-gtp-mac-rlc-pdcp-moni - + + Stop_Object + Stop KPM monitoring and RC control xApp + localhost + ci-scripts/yaml_files/5g_rfsimulator_flexric + xapp-kpm-rc + - - Stop_Object - Stop OAI UEs - localhost - ci-scripts/yaml_files/5g_rfsimulator_flexric - oai-nr-ue oai-nr-ue2 - + + Stop_Object + Stop custom SMs monitoring xApp + localhost + ci-scripts/yaml_files/5g_rfsimulator_flexric + xapp-gtp-mac-rlc-pdcp-moni + - - Stop_Object - Stop OAI gNB - localhost - ci-scripts/yaml_files/5g_rfsimulator_flexric - oai-gnb - + + Stop_Object + Stop OAI UEs + localhost + ci-scripts/yaml_files/5g_rfsimulator_flexric + oai-nr-ue oai-nr-ue2 + - - Stop_Object - Stop nearRT-RIC - localhost - ci-scripts/yaml_files/5g_rfsimulator_flexric - nearRT-RIC - + + Stop_Object + Stop OAI gNB + localhost + ci-scripts/yaml_files/5g_rfsimulator_flexric + oai-gnb + - - Undeploy_Object - Undeploy RAN and FlexRIC - localhost - ci-scripts/yaml_files/5g_rfsimulator_flexric - true - + + Stop_Object + Stop nearRT-RIC + localhost + ci-scripts/yaml_files/5g_rfsimulator_flexric + nearRT-RIC + - - Deploy_Object - Deploy RC monitoring - localhost - ci-scripts/yaml_files/5g_rfsimulator_flexric - xapp-rc-moni - + + Undeploy_Object + Undeploy RAN and FlexRIC + localhost + ci-scripts/yaml_files/5g_rfsimulator_flexric + true + - - Deploy_Object - Deploy KPM monitoring - localhost - ci-scripts/yaml_files/5g_rfsimulator_flexric - xapp-kpm-moni - + + Undeploy_Object + Undeploy Core Network + localhost + doc/tutorial_resources/oai-cn5g + true + - - Deploy_Object - Deploy KPM monitoring and RC control - localhost - ci-scripts/yaml_files/5g_rfsimulator_flexric - xapp-kpm-rc - + + Clean_Test_Server_Images + Clean Test Images on Test Server + localhost + oai-gnb oai-nr-ue + true + - - Deploy_Object - Deploy custom SMs monitoring - localhost - ci-scripts/yaml_files/5g_rfsimulator_flexric - xapp-gtp-mac-rlc-pdcp-moni - + + Clean_Test_Server_Images + Clean Test Images on Test Server + localhost + oai-flexric + true + diff --git a/ci-scripts/xml_files/container_5g_rfsim.xml b/ci-scripts/xml_files/container_5g_rfsim.xml index 43d2072040..58199ab5d9 100644 --- a/ci-scripts/xml_files/container_5g_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_rfsim.xml @@ -21,240 +21,238 @@ --> - rfsim-5gnr-tdd - Monolithic SA TDD gNB - wrench - - 111111 - 800813 - 000001 - 000002 - 000003 - 000004 - 000005 - 000006 - 000007 - 000008 - 020001 - 020002 - 020003 - 020004 - 020105 - 444445 - 030001 - 030002 - 444444 - 333333 - 020005 - 444444 - 333333 - 020005 - 100001 - 222222 - - + rfsim-5gnr-tdd + Monolithic SA TDD gNB + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb-asan oai-nr-ue - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy OAI 5G CoreNetwork - localhost - ci-scripts/yaml_files/5g_rfsimulator - mysql oai-amf oai-smf oai-upf oai-ext-dn - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb-asan oai-nr-ue + - - Deploy_Object - Deploy OAI 5G gNB RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator - oai-gnb - + + Create_Workspace + Create new Workspace + localhost + - - Deploy_Object - Deploy OAI 5G NR-UE RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator - oai-nr-ue - + + Deploy_Object + Deploy OAI 5G CoreNetwork + localhost + ci-scripts/yaml_files/5g_rfsimulator + mysql oai-amf oai-smf oai-upf oai-ext-dn + - - Deploy_Object - Deploy Second OAI 5G NR-UE RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator - oai-nr-ue2 - + + Deploy_Object + Deploy OAI 5G gNB RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator + oai-gnb + - - Deploy_Object - Deploy OAI 5G NR-UEs (#3, #4, #5) RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator - oai-nr-ue3 oai-nr-ue4 oai-nr-ue5 - + + Deploy_Object + Deploy OAI 5G NR-UE RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator + oai-nr-ue + - - Deploy_Object - Deploy OAI 5G NR-UEs (#6, #7, #8) RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator - oai-nr-ue6 oai-nr-ue7 oai-nr-ue8 - + + Deploy_Object + Deploy Second OAI 5G NR-UE RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator + oai-nr-ue2 + - - Deploy_Object - Deploy OAI 5G NR-UEs (#9, #10) RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator - oai-nr-ue9 oai-nr-ue10 - + + Deploy_Object + Deploy OAI 5G NR-UEs (#3, #4, #5) RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator + oai-nr-ue3 oai-nr-ue4 oai-nr-ue5 + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10 - localhost - + + Deploy_Object + Deploy OAI 5G NR-UEs (#6, #7, #8) RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator + oai-nr-ue6 oai-nr-ue7 oai-nr-ue8 + - - Ping - Ping ext-dn from NR-UE - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 - 5 - + + Deploy_Object + Deploy OAI 5G NR-UEs (#9, #10) RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator + oai-nr-ue9 oai-nr-ue10 + - - Ping - Ping NR-UE from ext-dn - rfsim5g_ext_dn - localhost - rfsim5g_ue - localhost - -c 20 -i 0.25 - 5 - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10 + localhost + - - Ping - Ping ext-dn from Second NR-UE - rfsim5g_ue2 - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 - 5 - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + - - Ping - Ping Second NR-UE from ext-dn - rfsim5g_ext_dn - localhost - rfsim5g_ue2 - localhost - -c 20 -i 0.25 - 5 - + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 20 -i 0.25 + 5 + - - Ping - Ping ext-dn from both UEs - rfsim5g_ue rfsim5g_ue2 - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 - 5 - + + Ping + Ping ext-dn from Second NR-UE + rfsim5g_ue2 + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + - - Ping - Ping ext-dn from all UEs - rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10 - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 -s 1016 - 5 - + + Ping + Ping Second NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue2 + localhost + -c 20 -i 0.25 + 5 + - - Iperf - Iperf (DL/3Mbps/UDP)(20 sec) - -u -b 3M -t 20 -R - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Ping + Ping ext-dn from all UEs + rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10 + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 -s 1016 + 5 + - - Iperf - Iperf (UL/1Mbps/UDP)(20 sec) - -u -b 1M -t 20 - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Detach_UE + Detach OAI UE 3 to 10 + rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10 + localhost + - - Attach_UE - Attach OAI UE 1 and 2 - rfsim5g_ue rfsim5g_ue2 - localhost - + + Iperf + Iperf (DL/3Mbps/UDP)(20 sec) + -u -b 3M -t 20 -R + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Detach_UE - Detach OAI UE 1 and 2 - rfsim5g_ue rfsim5g_ue2 - localhost - + + Iperf + Iperf (UL/1Mbps/UDP)(20 sec) + -u -b 1M -t 20 + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Detach_UE - Detach OAI UE 3 to 10 - rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10 - localhost - + + Detach_UE + Detach OAI UE 1 and 2 + rfsim5g_ue rfsim5g_ue2 + localhost + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_rfsimulator - 1,0,0,0 - 1,0,0,0 - + + Attach_UE + Attach OAI UE 1 and 2 + rfsim5g_ue rfsim5g_ue2 + localhost + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb-asan oai-nr-ue - + + Ping + Ping ext-dn from both UEs + rfsim5g_ue rfsim5g_ue2 + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + + + + Detach_UE + Detach OAI UE 1 and 2 + rfsim5g_ue rfsim5g_ue2 + localhost + + + + Attach_UE + Attach OAI UE 1 and 2 + rfsim5g_ue rfsim5g_ue2 + localhost + + + + Ping + Ping ext-dn from both UEs + rfsim5g_ue rfsim5g_ue2 + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + + + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_rfsimulator + 1,0,0,0 + 1,0,0,0 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb-asan oai-nr-ue + diff --git a/ci-scripts/xml_files/container_5g_rfsim_24prb.xml b/ci-scripts/xml_files/container_5g_rfsim_24prb.xml index b8e01c7edc..1e7128a6e8 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_24prb.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_24prb.xml @@ -21,156 +21,250 @@ --> - rfsim-24prb-5gnr-tdd - Monolithic SA TDD gNB 24PRB - wrench - - 111111 - 800813 - 000001 - 000002 - 000003 - 020001 - 020002 - 030001 - 030002 - 040002 - 000004 - 020001 - 040002 - 000004 - 020001 - 040002 - 000004 - 020001 - 040002 - 000004 - 020001 - 040002 - 000004 - 020001 - 040001 - 000004 - 020001 - 100001 - 222222 - - + rfsim-24prb-5gnr-tdd + Monolithic SA TDD gNB 24PRB + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb-asan oai-nr-ue-asan - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy OAI 5G CoreNetwork - localhost - ci-scripts/yaml_files/5g_rfsimulator_24prb - mysql oai-amf oai-smf oai-upf oai-ext-dn - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb-asan oai-nr-ue-asan + - - Deploy_Object - Deploy OAI 5G gNB+UE RFsim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator_24prb - oai-gnb oai-nr-ue - + + Create_Workspace + Create new Workspace + localhost + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_ue - localhost - + + Deploy_Object + Deploy OAI 5G CoreNetwork + localhost + ci-scripts/yaml_files/5g_rfsimulator_24prb + mysql oai-amf oai-smf oai-upf oai-ext-dn + - - IdleSleep - Sleep - 1 - + + Deploy_Object + Deploy OAI 5G gNB+UE RFsim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator_24prb + oai-gnb oai-nr-ue + - - Ping - Ping ext-dn from NR-UE - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 20 -i0.5 - 80 - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_ue + localhost + - - Ping - Ping NR-UE from ext-dn - rfsim5g_ext_dn - localhost - rfsim5g_ue - localhost - -c 20 -i0.2 - 5 - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i0.5 + 80 + - - Iperf - Iperf (DL/3Mbps/UDP)(20 sec) - -u -b 3M -t 20 -R - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 20 -i0.2 + 5 + - - Iperf - Iperf (UL/1Mbps/UDP)(20 sec) - -u -b 1M -t 20 - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Iperf + Iperf (DL/3Mbps/UDP)(20 sec) + -u -b 3M -t 20 -R + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Custom_Command - Force Msg3 C-RNTI RA - localhost - echo ciUE force_crnti_ra | ncat 192.168.71.150 8091 - + + Iperf + Iperf (UL/1Mbps/UDP)(20 sec) + -u -b 1M -t 20 + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Custom_Command - Force RRC_IDLE (UE ID 0) - localhost - echo ciUE force_RRC_IDLE | ncat 192.168.71.150 8091 - + + Custom_Command + Force RRC_IDLE (UE ID 0) + localhost + echo ciUE force_RRC_IDLE | ncat 192.168.71.150 8091 + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_rfsimulator_24prb - + + IdleSleep + Sleep + 1 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb-asan oai-nr-ue-asan - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i0.5 + 80 + + + + Custom_Command + Force RRC_IDLE (UE ID 0) + localhost + echo ciUE force_RRC_IDLE | ncat 192.168.71.150 8091 + + + + IdleSleep + Sleep + 1 + + + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i0.5 + 80 + + + + Custom_Command + Force RRC_IDLE (UE ID 0) + localhost + echo ciUE force_RRC_IDLE | ncat 192.168.71.150 8091 + + + + IdleSleep + Sleep + 1 + + + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i0.5 + 80 + + + + Custom_Command + Force RRC_IDLE (UE ID 0) + localhost + echo ciUE force_RRC_IDLE | ncat 192.168.71.150 8091 + + + + IdleSleep + Sleep + 1 + + + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i0.5 + 80 + + + + Custom_Command + Force RRC_IDLE (UE ID 0) + localhost + echo ciUE force_RRC_IDLE | ncat 192.168.71.150 8091 + + + + IdleSleep + Sleep + 1 + + + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i0.5 + 80 + + + + Custom_Command + Force Msg3 C-RNTI RA + localhost + echo ciUE force_crnti_ra | ncat 192.168.71.150 8091 + + + + IdleSleep + Sleep + 1 + + + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i0.5 + 80 + + + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_rfsimulator_24prb + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb-asan oai-nr-ue-asan + diff --git a/ci-scripts/xml_files/container_5g_rfsim_2x2.xml b/ci-scripts/xml_files/container_5g_rfsim_2x2.xml index 236106d966..06cb9b63db 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_2x2.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_2x2.xml @@ -21,120 +21,108 @@ --> - rfsim-5gnr-tdd-2x2 - Monolithic SA TDD 2x2 gNB - wrench - - 111111 - 800813 - 000001 - 000002 - 000003 - 020001 - 020002 - 030001 - 030002 - 100001 - 222222 - - + rfsim-5gnr-tdd-2x2 + Monolithic SA TDD 2x2 gNB + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb-asan oai-nr-ue-asan - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy OAI 5G CoreNetwork - localhost - ci-scripts/yaml_files/5g_rfsimulator_2x2 - mysql oai-amf oai-smf oai-upf oai-ext-dn - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb-asan oai-nr-ue-asan + - - Deploy_Object - Deploy OAI 5G gNB+UE RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator_2x2 - oai-gnb oai-nr-ue - + + Create_Workspace + Create new Workspace + localhost + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_ue - localhost - + + Deploy_Object + Deploy OAI 5G CoreNetwork + localhost + ci-scripts/yaml_files/5g_rfsimulator_2x2 + mysql oai-amf oai-smf oai-upf oai-ext-dn + - - Ping - Ping ext-dn from NR-UE - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 - 5 - + + Deploy_Object + Deploy OAI 5G gNB+UE RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator_2x2 + oai-gnb oai-nr-ue + - - Ping - Ping NR-UE from ext-dn - rfsim5g_ext_dn - localhost - rfsim5g_ue - localhost - -c 20 -i 0.25 - 5 - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_ue + localhost + - - Iperf - Iperf (DL/10Mbps/UDP)(20 sec) - -u -b 10M -t 20 -R - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + - - Iperf - Iperf (UL/3Mbps/UDP)(20 sec) - -u -b 3M -t 20 - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 20 -i 0.25 + 5 + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_rfsimulator_2x2 - 1,0,0,0 - 1,0,0,0 - + + Iperf + Iperf (DL/10Mbps/UDP)(20 sec) + -u -b 10M -t 20 -R + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb-asan oai-nr-ue-asan - + + Iperf + Iperf (UL/3Mbps/UDP)(20 sec) + -u -b 3M -t 20 + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + + + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_rfsimulator_2x2 + 1,0,0,0 + 1,0,0,0 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb-asan oai-nr-ue-asan + diff --git a/ci-scripts/xml_files/container_5g_rfsim_fdd_phytest.xml b/ci-scripts/xml_files/container_5g_rfsim_fdd_phytest.xml index 4b695063e7..4fbb0f6f7e 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_fdd_phytest.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_fdd_phytest.xml @@ -21,120 +21,108 @@ --> - rfsim-5gnr-fdd-phytest - Monolithic FDD phytest gNB - wrench - - 111111 - 800813 - 004000 - 000010 - 000011 - 020011 - 020012 - 030011 - 030012 - 100011 - 222222 - - + rfsim-5gnr-fdd-phytest + Monolithic FDD phytest gNB + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb-asan oai-nr-ue-asan - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb-asan oai-nr-ue-asan + - - Custom_Command - Clean-Up any residual volume - localhost - docker volume rm 5g_rfsimulator_fdd_phytest_rrc.config -f - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy OAI 5G gNB RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest - oai-gnb - + + Create_Workspace + Create new Workspace + localhost + - - Deploy_Object - Deploy OAI 5G NR-UE RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest - oai-nr-ue - + + Custom_Command + Clean-Up any residual volume + localhost + docker volume rm 5g_rfsimulator_fdd_phytest_rrc.config -f + - - Ping - Ping gNB from NR-UE - rfsim5g_ue - localhost - rfsim5g_gnb_nos1 - localhost - -c20 -i0.2 - 0 - + + Deploy_Object + Deploy OAI 5G gNB RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest + oai-gnb + - - Ping - Ping NR-UE from gNB - rfsim5g_gnb_nos1 - localhost - rfsim5g_ue - localhost - -c20 -i0.2 - 0 - + + Deploy_Object + Deploy OAI 5G NR-UE RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest + oai-nr-ue + - - Iperf - Iperf (DL/30kbps/UDP)(20 sec) - -u -b 0.03M -t 20 -R -c 10.0.1.1 - rfsim5g_ue - localhost - rfsim5g_gnb_nos1 - localhost - 5 - 90 - + + Ping + Ping gNB from NR-UE + rfsim5g_ue + localhost + rfsim5g_gnb_nos1 + localhost + -c20 -i0.2 + 0 + - - Iperf - Iperf (UL/30kbps/UDP)(20 sec) - -u -b 0.03M -t 20 -c 10.0.1.1 - rfsim5g_ue - localhost - rfsim5g_gnb_nos1 - localhost - 5 - 90 - + + Ping + Ping NR-UE from gNB + rfsim5g_gnb_nos1 + localhost + rfsim5g_ue + localhost + -c20 -i0.2 + 0 + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest - 10,100,100,100 - 10,100,100,100 - + + Iperf + Iperf (DL/30kbps/UDP)(20 sec) + -u -b 0.03M -t 20 -R -c 10.0.1.1 + rfsim5g_ue + localhost + rfsim5g_gnb_nos1 + localhost + 5 + 90 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb-asan oai-nr-ue-asan - + + Iperf + Iperf (UL/30kbps/UDP)(20 sec) + -u -b 0.03M -t 20 -c 10.0.1.1 + rfsim5g_ue + localhost + rfsim5g_gnb_nos1 + localhost + 5 + 90 + + + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest + 10,100,100,100 + 10,100,100,100 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb-asan oai-nr-ue-asan + diff --git a/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml b/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml index 224a64c757..5eab626ece 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml @@ -21,96 +21,84 @@ --> - rfsim-fr2-32prb-5gnr-tdd - Monolithic FR2 gNB - wrench - - 111111 - 800813 - 000000 - 000001 - 000013 - 020001 - 020002 - 100001 - 222222 - - + rfsim-fr2-32prb-5gnr-tdd + Monolithic FR2 gNB + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb-asan oai-nr-ue-asan - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb-asan oai-nr-ue-asan + - - Create_Workspace - Create new Workspace - localhost - + + Create_Workspace + Create new Workspace + localhost + - - Deploy_Object - Deploy OAI gNB - localhost - ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb - mysql oai-amf oai-smf oai-upf oai-ext-dn - + + Deploy_Object + Deploy OAI gNB + localhost + ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb + mysql oai-amf oai-smf oai-upf oai-ext-dn + - - Deploy_Object - Deploy OAI NR-UE - localhost - ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb - oai-gnb oai-nr-ue - + + Deploy_Object + Deploy OAI NR-UE + localhost + ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb + oai-gnb oai-nr-ue + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_ue - localhost - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_ue + localhost + - - Ping - Ping ext-dn from NR-UE - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 20 -i0.2 - 0 - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i0.2 + 0 + - - Ping - Ping NR-UE from ext-dn - rfsim5g_ext_dn - localhost - rfsim5g_ue - localhost - -c 20 -i0.2 - 0 - + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 20 -i0.2 + 0 + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb - 10,0,0,0 - 10,0,0,0 - + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb + 10,0,0,0 + 10,0,0,0 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb-asan oai-nr-ue-asan - + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb-asan oai-nr-ue-asan + diff --git a/ci-scripts/xml_files/container_5g_rfsim_multiue.xml b/ci-scripts/xml_files/container_5g_rfsim_multiue.xml index 8022741c6c..83bd857c4a 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_multiue.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_multiue.xml @@ -21,185 +21,156 @@ --> - rfsim-5gnr-tdd-multiue - Monolithic SA TDD gNB multiue - wrench - - 111111 - 800813 - 000001 - 000002 - 000003 - 000008 - 020001 - 020002 - 020003 - 020004 - 020105 - 444445 - 030001 - 030002 - 444444 - 100001 - 222222 - - + rfsim-5gnr-tdd-multiue + Monolithic SA TDD gNB multiue + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb-asan oai-nr-ue - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy OAI 5G CoreNetwork - localhost - ci-scripts/yaml_files/5g_rfsimulator_multiue - mysql oai-amf oai-smf oai-upf oai-ext-dn - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb-asan oai-nr-ue + - - Deploy_Object - Deploy OAI 5G gNB RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator_multiue - oai-gnb - + + Create_Workspace + Create new Workspace + localhost + - - Deploy_Object - Deploy OAI 5G NR-UE RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator_multiue - oai-nr-ue - + + Deploy_Object + Deploy OAI 5G CoreNetwork + localhost + ci-scripts/yaml_files/5g_rfsimulator_multiue + mysql oai-amf oai-smf oai-upf oai-ext-dn + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_multiue1 rfsim5g_multiue2 rfsim5g_multiue3 rfsim5g_multiue4 rfsim5g_multiue5 rfsim5g_multiue6 rfsim5g_multiue7 rfsim5g_multiue8 rfsim5g_multiue9 rfsim5g_multiue10 - localhost - + + Deploy_Object + Deploy OAI 5G gNB RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator_multiue + oai-gnb + - - Ping - Ping ext-dn from NR-UE - rfsim5g_multiue1 - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 - 5 - + + Deploy_Object + Deploy OAI 5G NR-UE RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator_multiue + oai-nr-ue + - - Ping - Ping NR-UE from ext-dn - rfsim5g_ext_dn - localhost - rfsim5g_multiue1 - localhost - -c 20 -i 0.25 - 5 - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_multiue1 rfsim5g_multiue2 rfsim5g_multiue3 rfsim5g_multiue4 rfsim5g_multiue5 rfsim5g_multiue6 rfsim5g_multiue7 rfsim5g_multiue8 rfsim5g_multiue9 rfsim5g_multiue10 + localhost + - - Ping - Ping ext-dn from Second NR-UE - rfsim5g_multiue2 - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 - 5 - + + Ping + Ping ext-dn from NR-UE + rfsim5g_multiue1 + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + - - Ping - Ping Second NR-UE from ext-dn - rfsim5g_ext_dn - localhost - rfsim5g_multiue2 - localhost - -c 20 -i 0.25 - 5 - + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_multiue1 + localhost + -c 20 -i 0.25 + 5 + - - Ping - Ping ext-dn from both UEs - rfsim5g_multiue1 rfsim5g_multiue2 - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 - 5 - + + Ping + Ping ext-dn from Second NR-UE + rfsim5g_multiue2 + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + - - Ping - Ping ext-dn from all UEs - rfsim5g_multiue1 rfsim5g_multiue2 rfsim5g_multiue3 rfsim5g_multiue4 rfsim5g_multiue5 rfsim5g_multiue6 rfsim5g_multiue7 rfsim5g_multiue8 rfsim5g_multiue9 rfsim5g_multiue10 - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 -s 1016 - 5 - + + Ping + Ping Second NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_multiue2 + localhost + -c 20 -i 0.25 + 5 + - - Iperf - Iperf (DL/3Mbps/UDP)(20 sec) - -u -b 3M -t 20 -R - rfsim5g_multiue1 - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Ping + Ping ext-dn from all UEs + rfsim5g_multiue1 rfsim5g_multiue2 rfsim5g_multiue3 rfsim5g_multiue4 rfsim5g_multiue5 rfsim5g_multiue6 rfsim5g_multiue7 rfsim5g_multiue8 rfsim5g_multiue9 rfsim5g_multiue10 + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 -s 1016 + 5 + - - Iperf - Iperf (UL/1Mbps/UDP)(20 sec) - -u -b 1M -t 20 - rfsim5g_multiue1 - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Iperf + Iperf (DL/3Mbps/UDP)(20 sec) + -u -b 3M -t 20 -R + rfsim5g_multiue1 + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Detach_UE - Detach OAI UEs - rfsim5g_multiue1 - localhost - + + Iperf + Iperf (UL/1Mbps/UDP)(20 sec) + -u -b 1M -t 20 + rfsim5g_multiue1 + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Undeploy_Object - true - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_rfsimulator_multiue - 1,0,0,0 - 1,0,0,0 - localhost - + + Detach_UE + Detach OAI UEs + rfsim5g_multiue1 + localhost + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb-asan oai-nr-ue - + + Undeploy_Object + true + Undeploy all OAI 5G stack + ci-scripts/yaml_files/5g_rfsimulator_multiue + 1,0,0,0 + 1,0,0,0 + localhost + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb-asan oai-nr-ue + diff --git a/ci-scripts/xml_files/container_5g_rfsim_n2_ho.xml b/ci-scripts/xml_files/container_5g_rfsim_n2_ho.xml index 37cab0ddb5..6a4d43f93a 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_n2_ho.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_n2_ho.xml @@ -21,179 +21,222 @@ --> - rfsim-5gnr-f1-n2-ho - F1 SA TDD N2 Handover - wrench - - 111111 - 800813 - 000001 - 000002 - 000003 - 020001 - 000004 - 040001 - 050001 - 020001 - 020002 - 050002 - 030001 - 030002 - 050003 - 020001 - 020002 - 050004 - 050001 - 020001 - 020002 - 050002 - 100001 - 222222 - - + rfsim-5gnr-f1-n2-ho + F1 SA TDD N2 Handover + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan + - - Create_Workspace - Create new Workspace - localhost - + + Create_Workspace + Create new Workspace + localhost + - - Deploy_Object - Deploy OAI 5G CoreNetwork - localhost - ci-scripts/yaml_files/5g_rfsimulator_n2_ho - mysql oai-amf oai-smf oai-upf oai-ext-dn - + + Deploy_Object + Deploy OAI 5G CoreNetwork + localhost + ci-scripts/yaml_files/5g_rfsimulator_n2_ho + mysql oai-amf oai-smf oai-upf oai-ext-dn + - - Deploy_Object - Deploy OAI 5G CU-CP/CU-UP/DU 0 + UE RFsim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator_n2_ho - oai-cucp-0 oai-cuup-0 oai-du-0 oai-nr-ue - + + Deploy_Object + Deploy OAI 5G CU-CP/CU-UP/DU 0 + UE RFsim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator_n2_ho + oai-cucp-0 oai-cuup-0 oai-du-0 oai-nr-ue + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_ue - localhost - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_ue + localhost + - - Deploy_Object - Deploy OAI 5G CU-CP/CU-UP/DU 1 RFsim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator_n2_ho - oai-cucp-1 oai-cuup-1 oai-du-1 - + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 50 -i 0.25 + 5 + - - Ping - Ping NR-UE from ext-dn - rfsim5g_ext_dn - localhost - rfsim5g_ue - localhost - -c 50 -i 0.25 - 5 - + + Deploy_Object + Deploy OAI 5G CU-CP/CU-UP/DU 1 RFsim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator_n2_ho + oai-cucp-1 oai-cuup-1 oai-du-1 + - - Ping - Ping ext-dn from NR-UE - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 50 -i 0.25 - 10 - + + IdleSleep + Sleep + 5 + - - Iperf - Iperf (DL/10Mbps/UDP)(20 sec) - -u -b 3M -t 20 -R - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Custom_Command + Trigger N2 Handover + localhost + echo ci trigger_n2_ho 1,1 | ncat 192.168.71.150 9090 + yes + - - Iperf - Iperf (UL/4Mbps/UDP)(20 sec) - -u -b 1M -t 20 - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 50 -i 0.25 + 5 + - - IdleSleep - Sleep - 5 - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 50 -i 0.25 + 10 + - - Custom_Command - Trigger N2 Handover - localhost - echo ci trigger_n2_ho 1,1 | ncat 192.168.71.150 9090 - yes - + + Custom_Command + UE (1) connected to DU-PCI 1? + localhost + echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.180 9090 | grep "1234" + - - Custom_Command - UE (1) connected to DU-PCI 1? - localhost - echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.180 9090 | grep "1234" - + + Iperf + Iperf (DL/10Mbps/UDP)(20 sec) + -u -b 3M -t 20 -R + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Custom_Command - Trigger N2 Handover - localhost - echo ci trigger_n2_ho 0,1 | ncat 192.168.71.180 9090 - yes - + + Iperf + Iperf (UL/4Mbps/UDP)(20 sec) + -u -b 1M -t 20 + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Custom_Command - UE (1) connected to DU-PCI 0? - localhost - echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.150 9090 | grep "3584" - + + Custom_Command + Trigger N2 Handover + localhost + echo ci trigger_n2_ho 0,1 | ncat 192.168.71.180 9090 + yes + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_rfsimulator_n2_ho - 10,100,100,100 - 10,100,100,100 - + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 50 -i 0.25 + 5 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 50 -i 0.25 + 10 + + + + Custom_Command + UE (1) connected to DU-PCI 0? + localhost + echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.150 9090 | grep "3584" + + + + Custom_Command + Trigger N2 Handover + localhost + echo ci trigger_n2_ho 1,1 | ncat 192.168.71.150 9090 + yes + + + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 50 -i 0.25 + 5 + + + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 50 -i 0.25 + 10 + + + + Custom_Command + UE (1) connected to DU-PCI 1? + localhost + echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.180 9090 | grep "1234" + + + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_rfsimulator_n2_ho + 10,100,100,100 + 10,100,100,100 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan + diff --git a/ci-scripts/xml_files/container_5g_rfsim_ntn_geo.xml b/ci-scripts/xml_files/container_5g_rfsim_ntn_geo.xml index 66f725ca53..7e291b86fb 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_ntn_geo.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_ntn_geo.xml @@ -21,125 +21,131 @@ --> - rfsim-5gnr-ntn-geo - Monolithic SA NTN GEO gNB - wrench - - 111111 - 800813 - 000001 - 000002 - 000003 - 020001 - 020002 - 040001 - 020022 - 040002 - 020001 - 020002 - 100001 - 222222 - - + rfsim-5gnr-ntn-geo + Monolithic SA NTN GEO gNB + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb-asan oai-nr-ue-asan - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb-asan oai-nr-ue-asan + - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy OAI 5G CoreNetwork - localhost - ci-scripts/yaml_files/5g_rfsimulator_ntn_geo - mysql oai-amf oai-smf oai-upf oai-ext-dn - + + Create_Workspace + Create new Workspace + localhost + - - Deploy_Object - Deploy OAI 5G gNB+nrUE RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator_ntn_geo - oai-gnb oai-nr-ue - + + Deploy_Object + Deploy OAI 5G CoreNetwork + localhost + ci-scripts/yaml_files/5g_rfsimulator_ntn_geo + mysql oai-amf oai-smf oai-upf oai-ext-dn + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_ue - localhost - + + Deploy_Object + Deploy OAI 5G gNB+nrUE RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator_ntn_geo + oai-gnb oai-nr-ue + - - Ping - Ping ext-dn from NR-UE - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 - 5 - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_ue + localhost + - - Ping - Ping NR-UE from ext-dn - rfsim5g_ext_dn - localhost - rfsim5g_ue - localhost - -c 20 -i 0.25 - 5 - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + - - Custom_Command - Trigger Reestablishment - localhost - echo ci force_reestab | ncat 192.168.71.140 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' - yes - + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 20 -i 0.25 + 5 + - - Ping - Ping ext-dn from NR-UE - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 20 -i0.5 -w25 - 80 - + + Custom_Command + Trigger Reestablishment + localhost + echo ci force_reestab | ncat 192.168.71.140 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' + yes + - - Custom_Command - Verify Reestablishment - localhost - echo ci get_reestab_count | ncat 192.168.71.140 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' - yes - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i0.5 -w25 + 80 + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_rfsimulator_ntn_geo - + + Custom_Command + Verify Reestablishment + localhost + echo ci get_reestab_count | ncat 192.168.71.140 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' + yes + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb-asan oai-nr-ue-asan - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + + + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 20 -i 0.25 + 5 + + + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_rfsimulator_ntn_geo + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb-asan oai-nr-ue-asan + diff --git a/ci-scripts/xml_files/container_5g_rfsim_ntn_leo.xml b/ci-scripts/xml_files/container_5g_rfsim_ntn_leo.xml index f00e6b26f1..cac6f5f4ee 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_ntn_leo.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_ntn_leo.xml @@ -21,125 +21,131 @@ --> - rfsim-5gnr-ntn-Leo - Monolithic SA NTN LEO gNB - wrench - - 111111 - 800813 - 000001 - 000002 - 000003 - 020001 - 020002 - 040001 - 020022 - 040002 - 020001 - 020002 - 100001 - 222222 - - + rfsim-5gnr-ntn-Leo + Monolithic SA NTN LEO gNB + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb-asan oai-nr-ue-asan - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb-asan oai-nr-ue-asan + - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy OAI 5G CoreNetwork - localhost - ci-scripts/yaml_files/5g_rfsimulator_ntn_leo - mysql oai-amf oai-smf oai-upf oai-ext-dn - + + Create_Workspace + Create new Workspace + localhost + - - Deploy_Object - Deploy OAI 5G gNB+nrUE RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator_ntn_leo - oai-gnb oai-nr-ue - + + Deploy_Object + Deploy OAI 5G CoreNetwork + localhost + ci-scripts/yaml_files/5g_rfsimulator_ntn_leo + mysql oai-amf oai-smf oai-upf oai-ext-dn + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_ue - localhost - + + Deploy_Object + Deploy OAI 5G gNB+nrUE RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator_ntn_leo + oai-gnb oai-nr-ue + - - Ping - Ping ext-dn from NR-UE - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 - 5 - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_ue + localhost + - - Ping - Ping NR-UE from ext-dn - rfsim5g_ext_dn - localhost - rfsim5g_ue - localhost - -c 20 -i 0.25 - 5 - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + - - Custom_Command - Trigger Reestablishment - localhost - echo ci force_reestab | ncat 192.168.71.140 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' - yes - + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 20 -i 0.25 + 5 + - - Ping - Ping ext-dn from NR-UE - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 20 -i0.5 -w25 - 80 - + + Custom_Command + Trigger Reestablishment + localhost + echo ci force_reestab | ncat 192.168.71.140 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' + yes + - - Custom_Command - Verify Reestablishment - localhost - echo ci get_reestab_count | ncat 192.168.71.140 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' - yes - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i0.5 -w25 + 80 + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_rfsimulator_ntn_leo - + + Custom_Command + Verify Reestablishment + localhost + echo ci get_reestab_count | ncat 192.168.71.140 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' + yes + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb-asan oai-nr-ue-asan - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + + + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 20 -i 0.25 + 5 + + + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_rfsimulator_ntn_leo + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb-asan oai-nr-ue-asan + diff --git a/ci-scripts/xml_files/container_5g_rfsim_prs.xml b/ci-scripts/xml_files/container_5g_rfsim_prs.xml index bbc287ff76..2485e7d503 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_prs.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_prs.xml @@ -21,80 +21,69 @@ --> - rfsim-5gnr-prs - Monolithic gNB with PRS - wrench - - 111111 - 800813 - 000012 - 000013 - 040001 - 040023 - 100011 - 222222 - - + rfsim-5gnr-prs + Monolithic gNB with PRS + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb-asan oai-nr-ue-asan - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb-asan oai-nr-ue-asan + - - Create_Workspace - Create new Workspace - localhost - + + Create_Workspace + Create new Workspace + localhost + - - Deploy_Object - Deploy OAI 5G gNB+UE RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator_prs - oai-gnb oai-nr-ue - + + Deploy_Object + Deploy OAI 5G gNB+UE RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator_prs + oai-gnb oai-nr-ue + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_ue - localhost - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_ue + localhost + - - IdleSleep - Sleep - 2 - + + IdleSleep + Sleep + 2 + - - Custom_Script - true - Set and verify distance at 50, 100, 150 m - localhost - - 50 100 150 - + + Custom_Script + true + Set and verify distance at 50, 100, 150 m + localhost + + 50 100 150 + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_rfsimulator_prs - 30,100,100,100 - 30,100,100,100 - + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_rfsimulator_prs + 30,100,100,100 + 30,100,100,100 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb-asan oai-nr-ue-asan - + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb-asan oai-nr-ue-asan + diff --git a/ci-scripts/xml_files/container_5g_rfsim_sidelink.xml b/ci-scripts/xml_files/container_5g_rfsim_sidelink.xml index 6ddd6d13b7..f434bb600c 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_sidelink.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_sidelink.xml @@ -21,79 +21,68 @@ --> - rfsim-5gnr-sidelink - Sidelink test - wrench - - 111111 - 800813 - 000002 - 000003 - 000004 - 000005 - 100001 - 222222 - - + rfsim-5gnr-sidelink + Sidelink test + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-nr-ue-asan - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-nr-ue-asan + - - Create_Workspace - Create new Workspace - localhost - + + Create_Workspace + Create new Workspace + localhost + - - Deploy_Object - Deploy OAI 5G UE 1 - localhost - ci-scripts/yaml_files/5g_rfsimulator_sidelink - oai-nr-ue-1 - - - - Deploy_Object - Deploy OAI 5G UE 2 - localhost - ci-scripts/yaml_files/5g_rfsimulator_sidelink - oai-nr-ue-2 - + + Deploy_Object + Deploy OAI 5G UE 1 + localhost + ci-scripts/yaml_files/5g_rfsimulator_sidelink + oai-nr-ue-1 + - - IdleSleep - Sleep - 20 - + + Deploy_Object + Deploy OAI 5G UE 2 + localhost + ci-scripts/yaml_files/5g_rfsimulator_sidelink + oai-nr-ue-2 + - - Custom_Command - Check that UE synched - localhost - docker logs rfsim5g-oai-nr-ue-2 | grep -m 1 "PSBCH RX:OK" - + + IdleSleep + Sleep + 20 + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_rfsimulator_sidelink - 1,0,0,0 - 1,0,0,0 - + + Custom_Command + Check that UE synched + localhost + docker logs rfsim5g-oai-nr-ue-2 | grep -m 1 "PSBCH RX:OK" + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-nr-ue-asan - + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_rfsimulator_sidelink + 1,0,0,0 + 1,0,0,0 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-nr-ue-asan + diff --git a/ci-scripts/xml_files/container_5g_rfsim_simple.xml b/ci-scripts/xml_files/container_5g_rfsim_simple.xml index 3dd5a560e0..be4912d2b2 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_simple.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_simple.xml @@ -21,77 +21,67 @@ --> - rfsim-5gnr-tdd - Monolithic SA TDD gNB - wrench - - 000001 - 000002 - 000003 - 000008 - 020001 - 444444 - 100001 - - + rfsim-5gnr-tdd + Monolithic SA TDD gNB + wrench - - Deploy_Object - Deploy OAI 5G CoreNetwork - localhost - ci-scripts/yaml_files/5g_rfsimulator - mysql oai-amf oai-smf oai-upf oai-ext-dn - + + Deploy_Object + Deploy OAI 5G CoreNetwork + localhost + ci-scripts/yaml_files/5g_rfsimulator + mysql oai-amf oai-smf oai-upf oai-ext-dn + - - Deploy_Object - Deploy OAI 5G gNB RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator - oai-gnb - + + Deploy_Object + Deploy OAI 5G gNB RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator + oai-gnb + - - Deploy_Object - Deploy OAI 5G NR-UE RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator - oai-nr-ue - + + Deploy_Object + Deploy OAI 5G NR-UE RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator + oai-nr-ue + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_ue - localhost - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_ue + localhost + - - Ping - Ping ext-dn from NR-UE - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 - 5 - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + - - Detach_UE - Detach OAI UE 1 - rfsim5g_ue - localhost - + + Detach_UE + Detach OAI UE 1 + rfsim5g_ue + localhost + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_rfsimulator - 1,0,0,0 - 1,0,0,0 - + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_rfsimulator + 1,0,0,0 + 1,0,0,0 + diff --git a/ci-scripts/xml_files/container_5g_rfsim_tdd_dora.xml b/ci-scripts/xml_files/container_5g_rfsim_tdd_dora.xml index 6a09b8138d..83209d664e 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_tdd_dora.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_tdd_dora.xml @@ -21,102 +21,97 @@ --> - rfsim-tdd-dora-5gnr-tdd - Monolithic do-ra TDD gNB - wrench - - 111111 - 800813 - 004000 - 000000 - 000001 - 000030 - 020001 - 020002 - 100001 - 004000 - 222222 - - + rfsim-tdd-dora-5gnr-tdd + Monolithic do-ra TDD gNB + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb-asan oai-nr-ue-asan - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb-asan oai-nr-ue-asan + - - Custom_Command - Clean-Up any residual volume - localhost - docker volume rm 5g_rfsimulator_tdd_dora_rrc.config -f - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy OAI gNB - localhost - ci-scripts/yaml_files/5g_rfsimulator_tdd_dora - oai-gnb - + + Create_Workspace + Create new Workspace + localhost + - - Deploy_Object - Deploy OAI NR-UE - localhost - ci-scripts/yaml_files/5g_rfsimulator_tdd_dora - oai-nr-ue - + + Custom_Command + Clean-Up any residual volume + localhost + docker volume rm 5g_rfsimulator_tdd_dora_rrc.config -f + - - IdleSleep - Sleep - 5 - + + Deploy_Object + Deploy OAI gNB + localhost + ci-scripts/yaml_files/5g_rfsimulator_tdd_dora + oai-gnb + - - Ping - Ping gNB from NR-UE - rfsim5g_ue - localhost - rfsim5g_gnb_nos1 - localhost - -c20 -i0.2 - 0 - + + Deploy_Object + Deploy OAI NR-UE + localhost + ci-scripts/yaml_files/5g_rfsimulator_tdd_dora + oai-nr-ue + - - Ping - Ping NR-UE from gNB - rfsim5g_gnb_nos1 - localhost - rfsim5g_ue - localhost - -c20 -i0.2 - 0 - + + IdleSleep + Sleep + 5 + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_rfsimulator_tdd_dora - 0,0,0,0 - 0,0,0,0 - + + Ping + Ping gNB from NR-UE + rfsim5g_ue + localhost + rfsim5g_gnb_nos1 + localhost + -c20 -i0.2 + 0 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb-asan oai-nr-ue-asan - + + Ping + Ping NR-UE from gNB + rfsim5g_gnb_nos1 + localhost + rfsim5g_ue + localhost + -c20 -i0.2 + 0 + + + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_rfsimulator_tdd_dora + 0,0,0,0 + 0,0,0,0 + + + + Custom_Command + Clean-Up any residual volume + localhost + docker volume rm 5g_rfsimulator_tdd_dora_rrc.config -f + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb-asan oai-nr-ue-asan + diff --git a/ci-scripts/xml_files/container_5g_rfsim_u0_25prb.xml b/ci-scripts/xml_files/container_5g_rfsim_u0_25prb.xml index 3bb99de4ab..060f539cde 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_u0_25prb.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_u0_25prb.xml @@ -21,166 +21,169 @@ --> - rfsim-5gnr-fdd-u0-25prb - VNF-PNF nFAPI FDD u0 25PRB gNB - wrench - - 111111 - 800813 - 000001 - 000002 - 000003 - 020001 - 020002 - 000004 - 020003 - 030001 - 030002 - 050001 - 050002 - 050003 - 020001 - 020002 - 100001 - 222222 - - + rfsim-5gnr-fdd-u0-25prb + VNF-PNF nFAPI FDD u0 25PRB gNB + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb-asan oai-nr-ue-asan - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy OAI 5G CoreNetwork - localhost - ci-scripts/yaml_files/5g_rfsimulator_u0_25prb - mysql oai-amf oai-smf oai-upf oai-ext-dn - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb-asan oai-nr-ue-asan + - - Deploy_Object - Deploy OAI 5G VNF+PNF+nrUE RF sim SA - localhost - ci-scripts/yaml_files/5g_rfsimulator_u0_25prb - oai-vnf oai-pnf oai-nr-ue - + + Create_Workspace + Create new Workspace + localhost + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_ue - localhost - + + Deploy_Object + Deploy OAI 5G CoreNetwork + localhost + ci-scripts/yaml_files/5g_rfsimulator_u0_25prb + mysql oai-amf oai-smf oai-upf oai-ext-dn + - - Ping - Ping ext-dn from NR-UE - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 - 5 - + + Deploy_Object + Deploy OAI 5G VNF+PNF+nrUE RF sim SA + localhost + ci-scripts/yaml_files/5g_rfsimulator_u0_25prb + oai-vnf oai-pnf oai-nr-ue + - - Ping - Ping NR-UE from ext-dn - rfsim5g_ext_dn - localhost - rfsim5g_ue - localhost - -c 20 -i 0.25 - 5 - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_ue + localhost + - - Attach_UE - Verify 2nd PDU session is up - rfsim5g_ue_pdu_2 - localhost - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + - - Ping - Ping ext-dn from NR-UE on PDU session ID 2 - rfsim5g_ue_pdu_2 - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 - 5 - + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 20 -i 0.25 + 5 + - - Iperf - Iperf (DL/3Mbps/UDP)(20 sec) - -u -b 3M -t 20 -R - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Attach_UE + Verify 2nd PDU session is up + rfsim5g_ue_pdu_2 + localhost + - - Iperf - Iperf (UL/1Mbps/UDP)(20 sec) - -u -b 1M -t 20 - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Ping + Ping ext-dn from NR-UE on PDU session ID 2 + rfsim5g_ue_pdu_2 + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + - - Custom_Command - Trigger PDU Session Release via gNB telnet - acamas - echo ci pdu_session_release 2 | ncat 192.168.71.140 9090 - + + Iperf + Iperf (DL/3Mbps/UDP)(20 sec) + -u -b 3M -t 20 -R + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Custom_Command - Add PDU Session via UE telnet - acamas - echo ci add_pdu_session 6,7 | ncat 192.168.71.150 8091 - + + Iperf + Iperf (UL/1Mbps/UDP)(20 sec) + -u -b 1M -t 20 + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Custom_Command - Trigger PDU Session Release via gNB telnet - acamas - echo ci pdu_session_release 6 | ncat 192.168.71.140 9090 - + + Custom_Command + Trigger PDU Session Release via gNB telnet + acamas + echo ci pdu_session_release 2 | ncat 192.168.71.140 9090 + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_rfsimulator_u0_25prb - 1,0,0,0 - 1,0,0,0 - + + Custom_Command + Add PDU Session via UE telnet + acamas + echo ci add_pdu_session 6,7 | ncat 192.168.71.150 8091 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb-asan oai-nr-ue-asan - + + Custom_Command + Trigger PDU Session Release via gNB telnet + acamas + echo ci pdu_session_release 6 | ncat 192.168.71.140 9090 + + + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + + + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 20 -i 0.25 + 5 + + + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_rfsimulator_u0_25prb + 1,0,0,0 + 1,0,0,0 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb-asan oai-nr-ue-asan + diff --git a/ci-scripts/xml_files/container_5g_vrtsim_chanmod.xml b/ci-scripts/xml_files/container_5g_vrtsim_chanmod.xml index 6bd16eff1f..c844228640 100644 --- a/ci-scripts/xml_files/container_5g_vrtsim_chanmod.xml +++ b/ci-scripts/xml_files/container_5g_vrtsim_chanmod.xml @@ -21,120 +21,108 @@ --> - vrtsim-5gnr-chanmod - Monolithic gNB vrtsim + chanmod - wrench - - 111111 - 800813 - 000011 - 000012 - 000013 - 020011 - 020012 - 030011 - 030012 - 100011 - 222222 - - + vrtsim-5gnr-chanmod + Monolithic gNB vrtsim + chanmod + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb oai-nr-ue - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy OAI 5G CoreNetwork - localhost - ci-scripts/yaml_files/5g_vrtsim_chanmod - mysql oai-amf oai-smf oai-upf oai-ext-dn - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb oai-nr-ue + - - Deploy_Object - Deploy OAI 5G gNB+UE RF sim SA - localhost - ci-scripts/yaml_files/5g_vrtsim_chanmod - oai-gnb oai-nr-ue - + + Create_Workspace + Create new Workspace + localhost + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_ue - localhost - + + Deploy_Object + Deploy OAI 5G CoreNetwork + localhost + ci-scripts/yaml_files/5g_vrtsim_chanmod + mysql oai-amf oai-smf oai-upf oai-ext-dn + - - Ping - Ping ext-dn from NR-UE - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 - 5 - + + Deploy_Object + Deploy OAI 5G gNB+UE RF sim SA + localhost + ci-scripts/yaml_files/5g_vrtsim_chanmod + oai-gnb oai-nr-ue + - - Ping - Ping NR-UE from ext-dn - rfsim5g_ext_dn - localhost - rfsim5g_ue - localhost - -c 20 -i 0.25 - 5 - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_ue + localhost + - - Iperf - Iperf (DL/3Mbps/UDP)(20 sec) - -u -b 3M -t 20 -R - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + - - Iperf - Iperf (UL/1Mbps/UDP)(20 sec) - -u -b 1M -t 20 - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 20 -i 0.25 + 5 + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_vrtsim_chanmod - 1,0,0,0 - 1,0,0,0 - + + Iperf + Iperf (DL/3Mbps/UDP)(20 sec) + -u -b 3M -t 20 -R + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb oai-nr-ue - + + Iperf + Iperf (UL/1Mbps/UDP)(20 sec) + -u -b 1M -t 20 + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + + + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_vrtsim_chanmod + 1,0,0,0 + 1,0,0,0 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb oai-nr-ue + diff --git a/ci-scripts/xml_files/container_5g_vrtsim_chanmod_gh.xml b/ci-scripts/xml_files/container_5g_vrtsim_chanmod_gh.xml index 3d3fd6ee59..3d3a9a5e41 100644 --- a/ci-scripts/xml_files/container_5g_vrtsim_chanmod_gh.xml +++ b/ci-scripts/xml_files/container_5g_vrtsim_chanmod_gh.xml @@ -21,121 +21,109 @@ --> - vrtsim-5gnr-chanmod-gh - Monolithic gNB vrtsim + chanmod - wrench - - 111111 - 800813 - 000011 - 000012 - 000013 - 020011 - 020012 - 030011 - 030012 - 100011 - 222222 - - + vrtsim-5gnr-chanmod-gh + Monolithic gNB vrtsim + chanmod + wrench - - Pull_Local_Registry - Pull Images from Local Registry - localhost - oai-gnb oai-nr-ue - arm_ - - - Create_Workspace - Create new Workspace - localhost - - - Deploy_Object - Deploy OAI 5G CoreNetwork - localhost - ci-scripts/yaml_files/5g_vrtsim_chanmod - mysql oai-amf oai-smf oai-upf oai-ext-dn - + + Pull_Local_Registry + Pull Images from Local Registry + localhost + oai-gnb oai-nr-ue + arm_ + - - Deploy_Object - Deploy OAI 5G gNB+UE RF sim SA - localhost - ci-scripts/yaml_files/5g_vrtsim_chanmod - oai-gnb oai-nr-ue - + + Create_Workspace + Create new Workspace + localhost + - - Attach_UE - Attach OAI UE (Wait for IP) - rfsim5g_ue - localhost - + + Deploy_Object + Deploy OAI 5G CoreNetwork + localhost + ci-scripts/yaml_files/5g_vrtsim_chanmod + mysql oai-amf oai-smf oai-upf oai-ext-dn + - - Ping - Ping ext-dn from NR-UE - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - -c 20 -i 0.25 - 5 - + + Deploy_Object + Deploy OAI 5G gNB+UE RF sim SA + localhost + ci-scripts/yaml_files/5g_vrtsim_chanmod + oai-gnb oai-nr-ue + - - Ping - Ping NR-UE from ext-dn - rfsim5g_ext_dn - localhost - rfsim5g_ue - localhost - -c 20 -i 0.25 - 5 - + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_ue + localhost + - - Iperf - Iperf (DL/3Mbps/UDP)(30 sec) - -u -b 3M -t 30 -R - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Ping + Ping ext-dn from NR-UE + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + -c 20 -i 0.25 + 5 + - - Iperf - Iperf (UL/1Mbps/UDP)(30 sec) - -u -b 1M -t 30 - rfsim5g_ue - localhost - rfsim5g_ext_dn - localhost - 5 - 90 - + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + localhost + rfsim5g_ue + localhost + -c 20 -i 0.25 + 5 + - - Undeploy_Object - true - Undeploy all OAI 5G stack - localhost - ci-scripts/yaml_files/5g_vrtsim_chanmod - 1,0,0,0 - 1,0,0,0 - + + Iperf + Iperf (DL/3Mbps/UDP)(30 sec) + -u -b 3M -t 30 -R + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - localhost - oai-gnb oai-nr-ue - + + Iperf + Iperf (UL/1Mbps/UDP)(30 sec) + -u -b 1M -t 30 + rfsim5g_ue + localhost + rfsim5g_ext_dn + localhost + 5 + 90 + + + + Undeploy_Object + true + Undeploy all OAI 5G stack + localhost + ci-scripts/yaml_files/5g_vrtsim_chanmod + 1,0,0,0 + 1,0,0,0 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + localhost + oai-gnb oai-nr-ue + diff --git a/ci-scripts/xml_files/container_build_run_tests.xml b/ci-scripts/xml_files/container_build_run_tests.xml index 087c5af598..85e0cd53da 100644 --- a/ci-scripts/xml_files/container_build_run_tests.xml +++ b/ci-scripts/xml_files/container_build_run_tests.xml @@ -21,19 +21,15 @@ --> - build-run-test-tab - Build and Run Unit Tests - wrench - - 030201 - - + build-run-test-tab + Build and Run Unit Tests + wrench - - Build_Run_Tests - Build and Run UnitTests - obelix - all - + + Build_Run_Tests + Build and Run UnitTests + obelix + all + diff --git a/ci-scripts/xml_files/container_image_build.xml b/ci-scripts/xml_files/container_image_build.xml index afd58d4d6d..85966f0214 100644 --- a/ci-scripts/xml_files/container_image_build.xml +++ b/ci-scripts/xml_files/container_image_build.xml @@ -21,32 +21,27 @@ --> - build-tab - Build Container Images - wrench - - 800813 - 000001 - 000010 - - + build-tab + Build Container Images + wrench - - Create_Workspace - Create new Workspace for server 0 - obelix - - - Build_Image - Build all Images - obelix - all - + + Create_Workspace + Create new Workspace for server 0 + obelix + - - Push_Local_Registry - Push Images to Local Registry - obelix - + + Build_Image + Build all Images + obelix + all + + + + Push_Local_Registry + Push Images to Local Registry + obelix + diff --git a/ci-scripts/xml_files/container_image_build_arm.xml b/ci-scripts/xml_files/container_image_build_arm.xml index f5daa348aa..1d83101fdd 100644 --- a/ci-scripts/xml_files/container_image_build_arm.xml +++ b/ci-scripts/xml_files/container_image_build_arm.xml @@ -21,33 +21,28 @@ --> - build-tab - Build Container Images for ARM - wrench - - 800813 - 000001 - 000010 - - + build-tab + Build Container Images for ARM + wrench - - Create_Workspace - Create new Workspace for server 0 - gracehopper3-oai - - - Build_Image - Build all Images - gracehopper3-oai - native_armv9 - + + Create_Workspace + Create new Workspace for server 0 + gracehopper3-oai + - - Push_Local_Registry - Push Images to Local Registry - gracehopper3-oai - arm_ - + + Build_Image + Build all Images + gracehopper3-oai + native_armv9 + + + + Push_Local_Registry + Push Images to Local Registry + gracehopper3-oai + arm_ + diff --git a/ci-scripts/xml_files/container_image_build_cross.xml b/ci-scripts/xml_files/container_image_build_cross.xml index ab94d847c8..592d097a73 100644 --- a/ci-scripts/xml_files/container_image_build_cross.xml +++ b/ci-scripts/xml_files/container_image_build_cross.xml @@ -21,24 +21,21 @@ --> - build-tab - Build Container Images - wrench - - 100001 - 000001 - - - - Create_Workspace - Create new Workspace - alambix - - - Build_Image - Cross-Compile for ARM64 - build_cross_arm64 - alambix - + build-tab + Build Container Images + wrench + + + Create_Workspace + Create new Workspace + alambix + + + + Build_Image + Cross-Compile for ARM64 + build_cross_arm64 + alambix + diff --git a/ci-scripts/xml_files/container_image_build_jetson.xml b/ci-scripts/xml_files/container_image_build_jetson.xml index 3cdac5efcb..7b77a77277 100644 --- a/ci-scripts/xml_files/container_image_build_jetson.xml +++ b/ci-scripts/xml_files/container_image_build_jetson.xml @@ -21,33 +21,28 @@ --> - build-tab - Build Container Images for ARM - wrench - - 800813 - 000001 - 000010 - - + build-tab + Build Container Images for ARM + wrench - - Create_Workspace - Create new Workspace for server 0 - jetson3-oai - - - Build_Image - Build all Images - jetson3-oai - native_armv8 - + + Create_Workspace + Create new Workspace for server 0 + jetson3-oai + - - Push_Local_Registry - Push Images to Local Registry - jetson3-oai - armv8_ - + + Build_Image + Build all Images + jetson3-oai + native_armv8 + + + + Push_Local_Registry + Push Images to Local Registry + jetson3-oai + armv8_ + diff --git a/ci-scripts/xml_files/container_l2sim_proxy.xml b/ci-scripts/xml_files/container_l2sim_proxy.xml index c2f19f9471..4f1cea9263 100644 --- a/ci-scripts/xml_files/container_l2sim_proxy.xml +++ b/ci-scripts/xml_files/container_l2sim_proxy.xml @@ -21,19 +21,15 @@ --> - l2sim-4glte-5gnr-proxy-build - Build L2sim proxy image - wrench - - 000001 - - + l2sim-4glte-5gnr-proxy-build + Build L2sim proxy image + wrench - - Build_Proxy - Build L2sim Proxy Image - localhost - b64d9bce986b38ca59e8582864ade3fcdd05c0dc - + + Build_Proxy + Build L2sim Proxy Image + localhost + b64d9bce986b38ca59e8582864ade3fcdd05c0dc + diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1.xml b/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1.xml index 10ab1fd3b0..614acee309 100644 --- a/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1.xml +++ b/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1.xml @@ -23,195 +23,182 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1.xml --> - test-fdd-05-tm1 - Test-FDD-05MHz-TM1 - tasks - -100000 -111110 -300000 -040101 -800813 -030101 -040301 040501 040603 040604 040605 040606 040607 040641 040642 040643 040644 040401 040201 -030201 -200000 -222222 - - + test-fdd-05-tm1 + Test-FDD-05MHz-TM1 + tasks - - Pull_Local_Registry - Pull Images from Local Registry - hutch - oai-enb - + + Custom_Command + Disable Sleep States + hutch + sudo cpupower idle-set -D 0 + - - Custom_Command - Disable Sleep States - hutch - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - hutch - sudo cpupower idle-set -E - - - Custom_Command - Reset USRP - hutch - sudo -S b2xx_fx3_utils --reset-device - - - Create_Workspace - Create new Workspace for server 0 - hutch - - - Deploy_Object - Deploy eNB (FDD/Band7/5MHz/B200) in a container - hutch - ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1 - + + Pull_Local_Registry + Pull Images from Local Registry + hutch + oai-enb + - - IdleSleep - Sleep - 5 - + + Custom_Command + Reset USRP + hutch + sudo -S b2xx_fx3_utils --reset-device + - - Undeploy_Object - true - Undeploy eNB - hutch - ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1 - + + Initialize_UE + Initialize UE + adb_ue_1 adb_ue_2 + - - Initialize_UE - Initialize UE - adb_ue_1 adb_ue_2 - - - Terminate_UE - true - Terminate UE - adb_ue_1 adb_ue_2 - - - Attach_UE - Attach UEs - adb_ue_1 adb_ue_2 - - - Detach_UE - true - Detach UEs - adb_ue_1 adb_ue_2 - + + Create_Workspace + Create new Workspace for server 0 + hutch + - - Ping - ping (5MHz - 20 sec) - -c 20 - 5 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Deploy_Object + Deploy eNB (FDD/Band7/5MHz/B200) in a container + hutch + ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1 + - - Iperf - iperf (5MHz - DL/15Mbps/UDP)(30 sec)(balanced profile) - -u -b 15M -t 30 -R - 50 - 50 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Attach_UE + Attach UEs + adb_ue_1 adb_ue_2 + - - Iperf - iperf (5MHz - DL/15Mbps/UDP)(30 sec)(single-ue profile) - -u -b 15M -t 30 -R - 50 - adb_ue_1 - ltebox-nano - + + Ping + ping (5MHz - 20 sec) + -c 20 + 5 + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - DL/15Mbps/UDP)(30 sec)(unbalanced profile) - -u -b 15M -t 30 -R - 50 - unbalanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (5MHz - DL/15Mbps/UDP)(30 sec)(balanced profile) + -u -b 15M -t 30 -R + 50 + 50 + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - DL/TCP)(30 sec)(single-ue profile) - -t 30 -R - adb_ue_2 - ltebox-nano - + + Iperf + iperf (5MHz - DL/15Mbps/UDP)(30 sec)(single-ue profile) + -u -b 15M -t 30 -R + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (5MHz - DL/TCP)(30 sec)(balanced profile) - -t 30 -R - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (5MHz - DL/15Mbps/UDP)(30 sec)(unbalanced profile) + -u -b 15M -t 30 -R + 50 + unbalanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - UL/9Mbps/UDP)(30 sec)(balanced profile) - -u -b 9M -t 30 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (5MHz - DL/TCP)(30 sec)(single-ue profile) + -t 30 -R + adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - UL/9Mbps/UDP)(30 sec)(single-ue profile) - -u -b 9M -t 30 - 50 - 50 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (5MHz - DL/TCP)(30 sec)(balanced profile) + -t 30 -R + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - UL/TCP)(30 sec)(single-ue profile) - -t 30 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (5MHz - UL/9Mbps/UDP)(30 sec)(balanced profile) + -u -b 9M -t 30 + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - UL/TCP)(30 sec)(balanced profile) - -t 30 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (5MHz - UL/9Mbps/UDP)(30 sec)(single-ue profile) + -u -b 9M -t 30 + 50 + 50 + adb_ue_1 + ltebox-nano + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - hutch - oai-enb - + + Iperf + iperf (5MHz - UL/TCP)(30 sec)(single-ue profile) + -t 30 + adb_ue_1 + ltebox-nano + + + + Iperf + iperf (5MHz - UL/TCP)(30 sec)(balanced profile) + -t 30 + adb_ue_1 adb_ue_2 + ltebox-nano + + + + Detach_UE + true + Detach UEs + adb_ue_1 adb_ue_2 + + + + Terminate_UE + true + Terminate UE + adb_ue_1 adb_ue_2 + + + + Undeploy_Object + true + Undeploy eNB + hutch + ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1 + + + + Custom_Command + true + Enable Sleep States + hutch + sudo cpupower idle-set -E + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + hutch + oai-enb + - diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_if4_5.xml b/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_if4_5.xml index ebc59e746d..243243658b 100644 --- a/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_if4_5.xml +++ b/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_if4_5.xml @@ -21,178 +21,166 @@ --> - test-fdd-05-tm1-if4-5 - Test-FDD-05MHz-TM1-IF4.5 - tasks - -100000 -111110 -300000 -040101 -800813 -030131 -030132 -040301 040531 040633 040634 040636 040671 040672 040673 040401 040201 -030231 -200000 -222222 - - + test-fdd-05-tm1-if4-5 + Test-FDD-05MHz-TM1-IF4.5 + tasks - - Pull_Local_Registry - Pull Images from Local Registry - hutch - oai-enb - + + Custom_Command + Disable Sleep States + hutch + sudo cpupower idle-set -D 0 + - - Custom_Command - Disable Sleep States - hutch - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - hutch - sudo cpupower idle-set -E - - - Custom_Command - Reset USRP - hutch - sudo -S b2xx_fx3_utils --reset-device - - - Create_Workspace - Create new Workspace for server 0 - hutch - - - Deploy_Object - Deploy RRU (FDD/Band7/5MHz/B200) in a container - hutch - ci-scripts/yaml_files/lte_b200_fdd_05Mhz_if4.5 - rru_fdd - - - Deploy_Object - Deploy RCC (FDD/Band7/5MHz) in a container - hutch - ci-scripts/yaml_files/lte_b200_fdd_05Mhz_if4.5 - rcc_fdd - + + Pull_Local_Registry + Pull Images from Local Registry + hutch + oai-enb + - - IdleSleep - Sleep - 5 - + + Custom_Command + Reset USRP + hutch + sudo -S b2xx_fx3_utils --reset-device + - - Undeploy_Object - true - Undeploy RCC/RRU - hutch - ci-scripts/yaml_files/lte_b200_fdd_05Mhz_if4.5 - + + Initialize_UE + Initialize UE + adb_ue_1 adb_ue_2 + - - Initialize_UE - Initialize UE - adb_ue_1 adb_ue_2 - - - Terminate_UE - true - Terminate UE - adb_ue_1 adb_ue_2 - - - Attach_UE - Attach UEs - adb_ue_1 adb_ue_2 - - - Detach_UE - true - Detach UEs - adb_ue_1 adb_ue_2 - + + Create_Workspace + Create new Workspace for server 0 + hutch + - - Ping - ping (5MHz - 20 sec) - -c 20 - 5 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Deploy_Object + Deploy RRU (FDD/Band7/5MHz/B200) in a container + hutch + ci-scripts/yaml_files/lte_b200_fdd_05Mhz_if4.5 + rru_fdd + - - Iperf - iperf (5MHz - DL/15Mbps/UDP)(30 sec)(balanced profile) - -u -b 15M -t 30 -R - 50 - 50 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Deploy_Object + Deploy RCC (FDD/Band7/5MHz) in a container + hutch + ci-scripts/yaml_files/lte_b200_fdd_05Mhz_if4.5 + rcc_fdd + - - Iperf - iperf (5MHz - DL/15Mbps/UDP)(30 sec)(single-ue profile) - -u -b 15M -t 30 -R - 50 - adb_ue_1 - ltebox-nano - + + Attach_UE + Attach UEs + adb_ue_1 adb_ue_2 + - - Iperf - iperf (5MHz - DL/TCP)(30 sec)(single-ue profile) - -t 30 -R - adb_ue_2 - ltebox-nano - + + Ping + ping (5MHz - 20 sec) + -c 20 + 5 + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - UL/9Mbps/UDP)(30 sec)(balanced profile) - -u -b 9M -t 30 - 50 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (5MHz - DL/15Mbps/UDP)(30 sec)(balanced profile) + -u -b 15M -t 30 -R + 50 + 50 + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - UL/9Mbps/UDP)(30 sec)(single-ue profile) - -u -b 9M -t 30 - 50 - 50 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (5MHz - DL/15Mbps/UDP)(30 sec)(single-ue profile) + -u -b 15M -t 30 -R + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (5MHz - UL/TCP)(30 sec)(single-ue profile) - -t 30 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (5MHz - DL/TCP)(30 sec)(single-ue profile) + -t 30 -R + adb_ue_2 + ltebox-nano + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - hutch - oai-enb - + + Iperf + iperf (5MHz - UL/9Mbps/UDP)(30 sec)(balanced profile) + -u -b 9M -t 30 + 50 + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + + + + Iperf + iperf (5MHz - UL/9Mbps/UDP)(30 sec)(single-ue profile) + -u -b 9M -t 30 + 50 + 50 + adb_ue_1 + ltebox-nano + + + + Iperf + iperf (5MHz - UL/TCP)(30 sec)(single-ue profile) + -t 30 + adb_ue_1 + ltebox-nano + + + + Detach_UE + true + Detach UEs + adb_ue_1 adb_ue_2 + + + + Terminate_UE + true + Terminate UE + adb_ue_1 adb_ue_2 + + + + Undeploy_Object + true + Undeploy RCC/RRU + hutch + ci-scripts/yaml_files/lte_b200_fdd_05Mhz_if4.5 + + + + Custom_Command + true + Enable Sleep States + hutch + sudo cpupower idle-set -E + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + hutch + oai-enb + diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_no_rrc_activity.xml b/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_no_rrc_activity.xml index 8936a3928e..bd7400cb13 100644 --- a/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_no_rrc_activity.xml +++ b/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_no_rrc_activity.xml @@ -23,161 +23,155 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1_rrc_inactivity_no_flexran.xm --> - test-fdd-05-rrc-inactivity - Test-FDD-05MHz-TM1-RRC-Inactivity - tasks - -100000 -111110 -040101 -800813 -030102 -000010 040301 040502 000011 040302 000001 000012 040303 000002 000013 040503 040401 040201 -030202 -200000 -222222 - - + test-fdd-05-rrc-inactivity + Test-FDD-05MHz-TM1-RRC-Inactivity + tasks - - Pull_Local_Registry - Pull Images from Local Registry - hutch - oai-enb - - - Custom_Command - Disable Sleep States - hutch - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - hutch - sudo cpupower idle-set -E - - - Create_Workspace - Create new Workspace for server 0 - hutch - - - Deploy_Object - Deploy eNB (FDD/Band7/5MHz/B200) in a container - hutch - ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1_no_rrc_activity - + + Custom_Command + Disable Sleep States + hutch + sudo cpupower idle-set -D 0 + - - Undeploy_Object - true - Undeploy eNB - hutch - ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1_no_rrc_activity - + + Pull_Local_Registry + Pull Images from Local Registry + hutch + oai-enb + - - Initialize_UE - Initialize UE - adb_ue_1 adb_ue_2 - - - Terminate_UE - true - Terminate UE - adb_ue_1 adb_ue_2 - - - Attach_UE - Attach UE - adb_ue_1 adb_ue_2 - - - Detach_UE - true - Detach UE - adb_ue_1 adb_ue_2 - + + Initialize_UE + Initialize UE + adb_ue_1 adb_ue_2 + - - IdleSleep - Waiting for 55 seconds - 55 - + + Create_Workspace + Create new Workspace for server 0 + hutch + - - IdleSleep - Waiting for 10 seconds - 10 - + + Deploy_Object + Deploy eNB (FDD/Band7/5MHz/B200) in a container + hutch + ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1_no_rrc_activity + - - CheckStatusUE - Check UE(s) status before attachment - 0 - adb_ue_1 adb_ue_2 - + + CheckStatusUE + Check UE(s) status before attachment + 0 + adb_ue_1 adb_ue_2 + - - CheckStatusUE - Check UE(s) status before data disabling - 2 - adb_ue_1 adb_ue_2 - + + Attach_UE + Attach UE + adb_ue_1 adb_ue_2 + - - CheckStatusUE - Check UE(s) status after data disabling - 0 - adb_ue_1 adb_ue_2 - + + Ping + ping (5MHz - 20 sec) + -c 20 + 5 + adb_ue_1 adb_ue_2 + ltebox-nano + - - CheckStatusUE - Check UE(s) status after data re-enabling - 2 - adb_ue_1 adb_ue_2 - + + CheckStatusUE + Check UE(s) status before data disabling + 2 + adb_ue_1 adb_ue_2 + - - DataDisable_UE - Disabling Data Service on UE - adb_ue_1 adb_ue_2 - + + DataDisable_UE + Disabling Data Service on UE + adb_ue_1 adb_ue_2 + - - DataEnable_UE - Enabling Data Service on UE - adb_ue_1 adb_ue_2 - + + IdleSleep + Waiting for 55 seconds + 55 + - - Ping - ping (5MHz - 20 sec) - -c 20 - 5 - adb_ue_1 adb_ue_2 - ltebox-nano - + + CheckStatusUE + Check UE(s) status after data disabling + 0 + adb_ue_1 adb_ue_2 + - - Ping - ping (5MHz - 20 sec) - -c 20 - 5 - adb_ue_1 adb_ue_2 - ltebox-nano - + + DataEnable_UE + Enabling Data Service on UE + adb_ue_1 adb_ue_2 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - hutch - oai-enb - + + IdleSleep + Waiting for 10 seconds + 10 + + + + CheckStatusUE + Check UE(s) status after data re-enabling + 2 + adb_ue_1 adb_ue_2 + + + + Ping + ping (5MHz - 20 sec) + -c 20 + 5 + adb_ue_1 adb_ue_2 + ltebox-nano + + + + Detach_UE + true + Detach UE + adb_ue_1 adb_ue_2 + + + + Terminate_UE + true + Terminate UE + adb_ue_1 adb_ue_2 + + + + Undeploy_Object + true + Undeploy eNB + hutch + ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1_no_rrc_activity + + + + Custom_Command + true + Enable Sleep States + hutch + sudo cpupower idle-set -E + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + hutch + oai-enb + - diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1.xml b/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1.xml index 1456418475..92f4376676 100644 --- a/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1.xml +++ b/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1.xml @@ -24,189 +24,166 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml 040301 040511 040613 040614 040615 040616 040617 040651 040652 040653 040654 040401 040201 --> - test-fdd-10-tm1 - Test-FDD-10MHz-TM1 - tasks - -100000 -111110 -040101 -800813 -030111 -000001 -040301 040511 040613 040614 040615 040651 040652 040653 040654 040401 040201 -030211 -200000 -222222 - - + test-fdd-10-tm1 + Test-FDD-10MHz-TM1 + tasks - - Pull_Local_Registry - Pull Images from Local Registry - hutch - oai-enb - - - Custom_Command - Disable Sleep States - hutch - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - hutch - sudo cpupower idle-set -E - - - Create_Workspace - Create new Workspace for server 0 - hutch - - - Deploy_Object - Deploy eNB (FDD/Band7/10MHz/B200) in a container - hutch - ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1 - + + Custom_Command + Disable Sleep States + hutch + sudo cpupower idle-set -D 0 + - - IdleSleep - Sleep - 5 - + + Pull_Local_Registry + Pull Images from Local Registry + hutch + oai-enb + - - Undeploy_Object - true - Undeploy eNB - hutch - ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1 - + + Initialize_UE + Initialize UE + adb_ue_1 adb_ue_2 + - - Initialize_UE - Initialize UE - adb_ue_1 adb_ue_2 - - - Terminate_UE - true - Terminate UE - adb_ue_1 adb_ue_2 - - - Attach_UE - Attach UE - adb_ue_1 adb_ue_2 - - - Detach_UE - true - Detach UE - adb_ue_1 adb_ue_2 - + + Create_Workspace + Create new Workspace for server 0 + hutch + - - Ping - ping (10MHz - 20 sec) - -c 20 - 5 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Deploy_Object + Deploy eNB (FDD/Band7/10MHz/B200) in a container + hutch + ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1 + - - Iperf - iperf (10MHz - DL/30Mbps/UDP)(30 sec)(balanced profile) - -u -b 30M -t 30 -R - 50 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + IdleSleep + Sleep + 5 + - - Iperf - iperf (10MHz - DL/30Mbps/UDP)(30 sec)(single-ue profile) - -u -b 30M -t 30 -R - 50 - adb_ue_1 - ltebox-nano - + + Attach_UE + Attach UE + adb_ue_1 adb_ue_2 + - - Iperf - iperf (10MHz - DL/30Mbps/UDP)(30 sec)(unbalanced profile) - -u -b 30M -t 30 -R - 50 - unbalanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Ping + ping (10MHz - 20 sec) + -c 20 + 5 + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (10MHz - DL/TCP)(30 sec)(single-ue profile) - -t 30 -R - adb_ue_1 - ltebox-nano - + + Iperf + iperf (10MHz - DL/30Mbps/UDP)(30 sec)(balanced profile) + -u -b 30M -t 30 -R + 50 + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (10MHz - DL/TCP)(30 sec)(balanced profile) - -t 30 -R - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (10MHz - DL/30Mbps/UDP)(30 sec)(single-ue profile) + -u -b 30M -t 30 -R + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (10MHz - UL/18Mbps/UDP)(30 sec)(balanced profile) - -u -b 18M -t 30 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (10MHz - DL/30Mbps/UDP)(30 sec)(unbalanced profile) + -u -b 30M -t 30 -R + 50 + unbalanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (10MHz - UL/18Mbps/UDP)(30 sec)(single-ue profile) - -u -b 18M -t 30 - 50 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (10MHz - UL/18Mbps/UDP)(30 sec)(balanced profile) + -u -b 18M -t 30 + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (10MHz - UL/TCP)(30 sec)(single-ue profile) - -t 30 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (10MHz - UL/18Mbps/UDP)(30 sec)(single-ue profile) + -u -b 18M -t 30 + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (10MHz - UL/TCP)(30 sec)(balanced profile) - -t 30 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (10MHz - UL/TCP)(30 sec)(single-ue profile) + -t 30 + adb_ue_1 + ltebox-nano + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - hutch - oai-enb - + + Iperf + iperf (10MHz - UL/TCP)(30 sec)(balanced profile) + -t 30 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + + + + Detach_UE + true + Detach UE + adb_ue_1 adb_ue_2 + + + + Terminate_UE + true + Terminate UE + adb_ue_1 adb_ue_2 + + + + Undeploy_Object + true + Undeploy eNB + hutch + ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1 + + + + Custom_Command + true + Enable Sleep States + hutch + sudo cpupower idle-set -E + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + hutch + oai-enb + - diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_cdrx.xml b/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_cdrx.xml index aafcdff6ea..5e3b64e01b 100644 --- a/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_cdrx.xml +++ b/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_cdrx.xml @@ -23,122 +23,115 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml --> - test-fdd-10-cdrx-tm1 - Test-FDD-10MHz-CDRX-TM1 - tasks - -100000 -111110 -040101 -800813 -030112 -040301 040302 040512 040612 040650 040401 -040201 -030212 -200000 -222222 - - + test-fdd-10-cdrx-tm1 + Test-FDD-10MHz-CDRX-TM1 + tasks - - Pull_Local_Registry - Pull Images from Local Registry - hutch - oai-enb - - - Custom_Command - Disable Sleep States - hutch - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - hutch - sudo cpupower idle-set -E - - - Create_Workspace - Create new Workspace for server 0 - hutch - - - Deploy_Object - Deploy eNB (FDD/Band7/10MHz/B200) in a container - hutch - ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_cdrx - + + Custom_Command + Disable Sleep States + hutch + sudo cpupower idle-set -D 0 + - - Undeploy_Object - true - Undeploy eNB - hutch - ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_cdrx - + + Pull_Local_Registry + Pull Images from Local Registry + hutch + oai-enb + - - Initialize_UE - Initialize UE - adb_ue_1 adb_ue_2 - - - Terminate_UE - true - Terminate UE - adb_ue_1 adb_ue_2 - - - Attach_UE - Attach UE - adb_ue_1 adb_ue_2 - - - Detach_UE - true - Detach UE - adb_ue_1 adb_ue_2 - + + Initialize_UE + Initialize UE + adb_ue_1 adb_ue_2 + - - Ping - ping (10MHz - 20 sec) - -c 20 - 5 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Create_Workspace + Create new Workspace for server 0 + hutch + - - Iperf - iperf (10MHz - DL/30Mbps/UDP)(30 sec)(balanced profile) - -u -b 30M -t 30 -R - 50 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Deploy_Object + Deploy eNB (FDD/Band7/10MHz/B200) in a container + hutch + ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_cdrx + - - Iperf - iperf (10MHz - UL/20Mbps/UDP)(30 sec)(balanced profile) - -u -b 20M -t 30 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Attach_UE + Attach UE + adb_ue_1 adb_ue_2 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - hutch - oai-enb - + + Ping + ping (10MHz - 20 sec) + -c 20 + 5 + adb_ue_1 adb_ue_2 + ltebox-nano + + + + Iperf + iperf (10MHz - DL/30Mbps/UDP)(30 sec)(balanced profile) + -u -b 30M -t 30 -R + 50 + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + + + + Iperf + iperf (10MHz - UL/20Mbps/UDP)(30 sec)(balanced profile) + -u -b 20M -t 30 + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + + + + Detach_UE + true + Detach UE + adb_ue_1 adb_ue_2 + + + + Terminate_UE + true + Terminate UE + adb_ue_1 adb_ue_2 + + + + Undeploy_Object + true + Undeploy eNB + hutch + ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_cdrx + + + + Custom_Command + true + Enable Sleep States + hutch + sudo cpupower idle-set -E + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + hutch + oai-enb + - diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_oaiue.xml b/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_oaiue.xml index f50330ab89..5133c17f14 100644 --- a/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_oaiue.xml +++ b/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_oaiue.xml @@ -21,180 +21,164 @@ --> - test-fdd-10-tm1 - Test-FDD-10MHz-TM1 - tasks - -100000 -100001 -111110 -111111 -800813 -030111 -000001 -800814 -030311 -000002 -040511 040613 040616 040651 -030411 -000001 -030211 -200000 -200001 -222222 -333333 - - + test-fdd-10-tm1 + Test-FDD-10MHz-TM1 + tasks - - Pull_Local_Registry - Pull Images from Local Registry - hutch - oai-enb - - - Pull_Local_Registry - Pull Images from Local Registry - carabe - oai-lte-ue - - - Custom_Command - Disable Sleep States (hutch) - hutch - sudo cpupower idle-set -D 0 - - - Custom_Command - Disable Sleep States (carabe) - carabe - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States (hutch) - hutch - sudo cpupower idle-set -E - - - Custom_Command - true - Enable Sleep States (carabe) - carabe - sudo cpupower idle-set -E - - - Create_Workspace - Create new Workspace for server 0 - hutch - - - Deploy_Object - Deploy eNB (FDD/Band7/10MHz/B200) in a container - ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_magma - hutch - - - Create_Workspace - Create new Workspace for server 1 - carabe - - - Deploy_Object - Deploy LTE-UE (FDD/Band7/10MHz/B200) in a container - carabe - ci-scripts/yaml_files/lte_b200_fdd_10Mhz_oai_ue_magma - + + Custom_Command + Disable Sleep States (hutch) + hutch + sudo cpupower idle-set -D 0 + - - IdleSleep - Sleep - 5 - + + Custom_Command + Disable Sleep States (carabe) + carabe + sudo cpupower idle-set -D 0 + - - IdleSleep - Sleep - 10 - + + Pull_Local_Registry + Pull Images from Local Registry + hutch + oai-enb + - - Undeploy_Object - true - Undeploy eNB - hutch - ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_magma - + + Pull_Local_Registry + Pull Images from Local Registry + carabe + oai-lte-ue + - - Undeploy_Object - true - Undeploy LTE-UE - carabe - ci-scripts/yaml_files/lte_b200_fdd_10Mhz_oai_ue_magma - + + Create_Workspace + Create new Workspace for server 0 + hutch + - - Ping - ping (10MHz - 20 sec) - -c 20 - 5 - lte_oai_ue_carabe - nano-cn4g - + + Deploy_Object + Deploy eNB (FDD/Band7/10MHz/B200) in a container + ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_magma + hutch + - - Iperf - iperf (10MHz - DL/10Mbps/UDP)(30 sec)(balanced profile) - -u -b 10M -t 30 -R - 50 - lte_oai_ue_carabe - nano-cn4g - + + IdleSleep + Sleep + 5 + - - Iperf - iperf (10MHz - DL/TCP)(30 sec)(single-ue profile) - -t 30 -R - 50 - lte_oai_ue_carabe - nano-cn4g - + + Create_Workspace + Create new Workspace for server 1 + carabe + - - Iperf - iperf (10MHz - UL/10Mbps/UDP)(30 sec)(balanced profile) - -u -b 10M -t 30 - 50 - lte_oai_ue_carabe - nano-cn4g - + + Deploy_Object + Deploy LTE-UE (FDD/Band7/10MHz/B200) in a container + carabe + ci-scripts/yaml_files/lte_b200_fdd_10Mhz_oai_ue_magma + - - Iperf - iperf (10MHz - UL/TCP)(30 sec)(balanced profile) - -t 30 - 50 - balanced - lte_oai_ue_carabe - nano-cn4g - + + IdleSleep + Sleep + 10 + - - Clean_Test_Server_Images - true - Clean Test Images on eNB Test Server - hutch - oai-enb - + + Ping + ping (10MHz - 20 sec) + -c 20 + 5 + lte_oai_ue_carabe + nano-cn4g + - - Clean_Test_Server_Images - true - Clean Test Images on LTE-UE Test Server - carabe - oai-lte-ue - + + Iperf + iperf (10MHz - DL/10Mbps/UDP)(30 sec)(balanced profile) + -u -b 10M -t 30 -R + 50 + lte_oai_ue_carabe + nano-cn4g + + + + Iperf + iperf (10MHz - DL/TCP)(30 sec)(single-ue profile) + -t 30 -R + 50 + lte_oai_ue_carabe + nano-cn4g + + + + Iperf + iperf (10MHz - UL/10Mbps/UDP)(30 sec)(balanced profile) + -u -b 10M -t 30 + 50 + lte_oai_ue_carabe + nano-cn4g + + + + Undeploy_Object + true + Undeploy LTE-UE + carabe + ci-scripts/yaml_files/lte_b200_fdd_10Mhz_oai_ue_magma + + + + IdleSleep + Sleep + 5 + + + + Undeploy_Object + true + Undeploy eNB + hutch + ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_magma + + + + Custom_Command + true + Enable Sleep States (hutch) + hutch + sudo cpupower idle-set -E + + + + Custom_Command + true + Enable Sleep States (carabe) + carabe + sudo cpupower idle-set -E + + + + Clean_Test_Server_Images + true + Clean Test Images on eNB Test Server + hutch + oai-enb + + + + Clean_Test_Server_Images + true + Clean Test Images on LTE-UE Test Server + carabe + oai-lte-ue + diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_20Mhz_tm1.xml b/ci-scripts/xml_files/container_lte_b200_fdd_20Mhz_tm1.xml index 52dbcb8972..cf092b2653 100644 --- a/ci-scripts/xml_files/container_lte_b200_fdd_20Mhz_tm1.xml +++ b/ci-scripts/xml_files/container_lte_b200_fdd_20Mhz_tm1.xml @@ -23,190 +23,139 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml --> - test-fdd-20-tm1 - Test-FDD-20MHz-TM1 - tasks - -100000 -111110 -040101 -800813 -030121 -000001 -040301 040521 040623 040624 040625 040662 040401 040201 -030221 -200000 -222222 - - + test-fdd-20-tm1 + Test-FDD-20MHz-TM1 + tasks - - Pull_Local_Registry - Pull Images from Local Registry - hutch - oai-enb - - - Custom_Command - Disable Sleep States - hutch - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - hutch - sudo cpupower idle-set -E - - - Create_Workspace - Create new Workspace for server 0 - hutch - - - Deploy_Object - Deploy eNB (FDD/Band7/20MHz/B200) in a container - hutch - ci-scripts/yaml_files/lte_b200_fdd_20Mhz_tm1 - + + Custom_Command + Disable Sleep States + hutch + sudo cpupower idle-set -D 0 + - - IdleSleep - Sleep - 5 - + + Pull_Local_Registry + Pull Images from Local Registry + hutch + oai-enb + - - Undeploy_Object - true - Undeploy eNB - hutch - ci-scripts/yaml_files/lte_b200_fdd_20Mhz_tm1 - + + Initialize_UE + Initialize UE + adb_ue_1 adb_ue_2 + - - Initialize_UE - Initialize UE - adb_ue_1 adb_ue_2 - - - Terminate_UE - true - Terminate UE - adb_ue_1 adb_ue_2 - - - Attach_UE - Attach UE - adb_ue_1 adb_ue_2 - - - Detach_UE - true - Detach UE - adb_ue_1 adb_ue_2 - + + Create_Workspace + Create new Workspace for server 0 + hutch + - - Ping - ping (20MHz - 20 sec) - -c 20 - 5 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Deploy_Object + Deploy eNB (FDD/Band7/20MHz/B200) in a container + hutch + ci-scripts/yaml_files/lte_b200_fdd_20Mhz_tm1 + - - Iperf - iperf (20MHz - DL/70Mbps/UDP)(30 sec)(balanced profile) - -u -b 70M -t 30 -R - 50 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + IdleSleep + Sleep + 5 + - - Iperf - iperf (20MHz - DL/70Mbps/UDP)(30 sec)(single-ue profile) - -u -b 70M -t 30 -R - 50 - adb_ue_1 - ltebox-nano - + + Attach_UE + Attach UE + adb_ue_1 adb_ue_2 + - - Iperf - iperf (20MHz - DL/70Mbps/UDP)(30 sec)(unbalanced profile) - -u -b 70M -t 30 -R - 50 - unbalanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Ping + ping (20MHz - 20 sec) + -c 20 + 5 + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (20MHz - DL/TCP)(30 sec)(single-ue profile) - -t 30 -R - adb_ue_1 - ltebox-nano - + + Iperf + iperf (20MHz - DL/70Mbps/UDP)(30 sec)(balanced profile) + -u -b 70M -t 30 -R + 50 + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (20MHz - DL/TCP)(30 sec)(balanced profile) - -t 30 -R - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (20MHz - DL/70Mbps/UDP)(30 sec)(single-ue profile) + -u -b 70M -t 30 -R + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (20MHz - UL/12Mbps/UDP)(30 sec)(balanced profile) - -u -b 12M -t 30 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (20MHz - DL/70Mbps/UDP)(30 sec)(unbalanced profile) + -u -b 70M -t 30 -R + 50 + unbalanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (20MHz - UL/17Mbps/UDP)(30 sec)(single-ue profile) - -u -b 17M -t 30 - 50 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (20MHz - UL/17Mbps/UDP)(30 sec)(single-ue profile) + -u -b 17M -t 30 + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (20MHz - UL/TCP)(30 sec)(single-ue profile) - -t 30 - adb_ue_1 - ltebox-nano - + + Detach_UE + true + Detach UE + adb_ue_1 adb_ue_2 + - - Iperf - iperf (20MHz - UL/TCP)(30 sec)(balanced profile) - -t 30 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Terminate_UE + true + Terminate UE + adb_ue_1 adb_ue_2 + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - hutch - oai-enb - + + Undeploy_Object + true + Undeploy eNB + hutch + ci-scripts/yaml_files/lte_b200_fdd_20Mhz_tm1 + + + + Custom_Command + true + Enable Sleep States + hutch + sudo cpupower idle-set -E + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + hutch + oai-enb + - diff --git a/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1.xml b/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1.xml index f46697a106..849d6e0140 100644 --- a/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1.xml +++ b/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1.xml @@ -23,206 +23,193 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm1.xml --> - test-tdd-05-tm1 - Test-TDD-05MHz-TM1 - tasks - -300000 -100000 -111110 -040101 -800813 -030104 -040301 040501 040602 040601 040603 040604 040605 040642 040641 040643 040644 040645 040401 040201 -030204 -200000 -222222 - - + test-tdd-05-tm1 + Test-TDD-05MHz-TM1 + tasks - - Pull_Local_Registry - Pull Images from Local Registry - starsky - oai-enb - + + Custom_Command + Reset USRP + starsky + sudo -S b2xx_fx3_utils --reset-device + - - Custom_Command - Disable Sleep States - starsky - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - starsky - sudo cpupower idle-set -E - + + Custom_Command + Disable Sleep States + starsky + sudo cpupower idle-set -D 0 + - - Custom_Command - Reset USRP - starsky - sudo -S b2xx_fx3_utils --reset-device - - - Create_Workspace - Create new Workspace for server 0 - starsky - - - Deploy_Object - Deploy eNB (TDD/Band40/5MHz/B200) in a container - starsky - ci-scripts/yaml_files/lte_b200_tdd_05Mhz_tm1 - + + Pull_Local_Registry + Pull Images from Local Registry + starsky + oai-enb + - - IdleSleep - Sleep - 5 - + + Initialize_UE + Initialize UE + adb_ue_1 adb_ue_2 + - - Undeploy_Object - true - Undeploy eNB - starsky - ci-scripts/yaml_files/lte_b200_tdd_05Mhz_tm1 - + + Create_Workspace + Create new Workspace for server 0 + starsky + - - Initialize_UE - Initialize UE - adb_ue_1 adb_ue_2 - - - Terminate_UE - true - Terminate UE - adb_ue_1 adb_ue_2 - - - Attach_UE - Attach UE - adb_ue_1 adb_ue_2 - - - Detach_UE - true - Detach UE - adb_ue_1 adb_ue_2 - + + Deploy_Object + Deploy eNB (TDD/Band40/5MHz/B200) in a container + starsky + ci-scripts/yaml_files/lte_b200_tdd_05Mhz_tm1 + - - Ping - ping (5MHz - 20 sec) - -c 20 - 25 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Attach_UE + Attach UE + adb_ue_1 adb_ue_2 + - - Iperf - iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(balanced) - -u -b 6.5M -t 30 -R - 50 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Ping + ping (5MHz - 20 sec) + -c 20 + 25 + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(single-ue) - -u -b 6.5M -t 30 -R - 50 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(single-ue) + -u -b 6.5M -t 30 -R + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(unbalanced) - -u -b 6.5M -t 30 -R - 50 - unbalanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(balanced) + -u -b 6.5M -t 30 -R + 50 + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - DL/TCP)(30 sec)(single-ue profile) - -t 30 -R - adb_ue_1 - ltebox-nano - + + Iperf + iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(unbalanced) + -u -b 6.5M -t 30 -R + 50 + unbalanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - DL/TCP)(30 sec) - -t 30 -R - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (5MHz - DL/TCP)(30 sec)(single-ue profile) + -t 30 -R + adb_ue_1 + ltebox-nano + - - Iperf - iperf (5MHz - UL/2Mbps/UDP)(30 sec)(balanced) - -u -b 2M -t 30 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (5MHz - DL/TCP)(30 sec) + -t 30 -R + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - UL/2Mbps/UDP)(30 sec)(single-ue) - -u -b 2M -t 30 - 50 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (5MHz - UL/2Mbps/UDP)(30 sec)(single-ue) + -u -b 2M -t 30 + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (5MHz - UL/2Mbps/UDP)(30 sec)(unbalanced) - -u -b 2M -t 30 - 50 - unbalanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (5MHz - UL/2Mbps/UDP)(30 sec)(balanced) + -u -b 2M -t 30 + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - UL/TCP)(30 sec)(single-ue) - -t 30 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (5MHz - UL/2Mbps/UDP)(30 sec)(unbalanced) + -u -b 2M -t 30 + 50 + unbalanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - UL/TCP)(30 sec) - -t 30 - 50 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (5MHz - UL/TCP)(30 sec)(single-ue) + -t 30 + adb_ue_1 + ltebox-nano + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - starsky - oai-enb - + + Iperf + iperf (5MHz - UL/TCP)(30 sec) + -t 30 + 50 + adb_ue_1 adb_ue_2 + ltebox-nano + + + + Detach_UE + true + Detach UE + adb_ue_1 adb_ue_2 + + + + Terminate_UE + true + Terminate UE + adb_ue_1 adb_ue_2 + + + + Undeploy_Object + true + Undeploy eNB + starsky + ci-scripts/yaml_files/lte_b200_tdd_05Mhz_tm1 + + + + Custom_Command + true + Enable Sleep States + starsky + sudo cpupower idle-set -E + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + starsky + oai-enb + diff --git a/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1_if4_5.xml b/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1_if4_5.xml index da187e2120..3b2e5a8022 100644 --- a/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1_if4_5.xml +++ b/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1_if4_5.xml @@ -21,193 +21,175 @@ --> - test-tdd-05-if4-5 - Test-TDD-05MHz-TM1-IF4.5 - tasks - -300000 -100000 -111110 -800813 -030134 -030135 -040301 040532 040631 040632 040634 040635 040681 040682 040684 040685 040401 040201 -030231 -200000 -222222 - - + test-tdd-05-if4-5 + Test-TDD-05MHz-TM1-IF4.5 + tasks - - Pull_Local_Registry - Pull Images from Local Registry - starsky - oai-enb - + + Custom_Command + Reset USRP + starsky + sudo -S b2xx_fx3_utils --reset-device + - - Custom_Command - Disable Sleep States - starsky - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - starsky - sudo cpupower idle-set -E - + + Custom_Command + Disable Sleep States + starsky + sudo cpupower idle-set -D 0 + - - Custom_Command - Reset USRP - starsky - sudo -S b2xx_fx3_utils --reset-device - - - Create_Workspace - Create new Workspace for server 0 - starsky - - - Deploy_Object - Deploy RRU (TDD/Band40/5MHz/B200) in a container - starsky - ci-scripts/yaml_files/lte_b200_tdd_05Mhz_if4.5 - rru_tdd - - - Deploy_Object - Deploy RCC (TDD/Band40/5MHz) in a container - starsky - ci-scripts/yaml_files/lte_b200_tdd_05Mhz_if4.5 - rcc_tdd - + + Pull_Local_Registry + Pull Images from Local Registry + starsky + oai-enb + - - IdleSleep - Sleep - 5 - + + Create_Workspace + Create new Workspace for server 0 + starsky + - - Undeploy_Object - true - Undeploy RRU/RCC - starsky - ci-scripts/yaml_files/lte_b200_tdd_05Mhz_if4.5 - + + Deploy_Object + Deploy RRU (TDD/Band40/5MHz/B200) in a container + starsky + ci-scripts/yaml_files/lte_b200_tdd_05Mhz_if4.5 + rru_tdd + - - Initialize_UE - Initialize UE - adb_ue_1 adb_ue_2 - - - Terminate_UE - true - Terminate UE - adb_ue_1 adb_ue_2 - - - Attach_UE - Attach UE - adb_ue_1 adb_ue_2 - - - Detach_UE - true - Detach UE - adb_ue_1 adb_ue_2 - + + Deploy_Object + Deploy RCC (TDD/Band40/5MHz) in a container + starsky + ci-scripts/yaml_files/lte_b200_tdd_05Mhz_if4.5 + rcc_tdd + - - Ping - ping (5MHz - 20 sec) - -c 20 - 25 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Attach_UE + Attach UE + adb_ue_1 adb_ue_2 + - - Iperf - iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(balanced) - -u -b 6.5M -t 30 -R - 50 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Ping + ping (5MHz - 20 sec) + -c 20 + 25 + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(single-ue) - -u -b 6.5M -t 30 -R - 50 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(balanced) + -u -b 6.5M -t 30 -R + 50 + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - DL/TCP)(30 sec)(single-ue profile) - -t 30 -R - adb_ue_1 - ltebox-nano - + + Iperf + iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(single-ue) + -u -b 6.5M -t 30 -R + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (5MHz - DL/TCP)(30 sec) - -t 30 -R - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (5MHz - DL/TCP)(30 sec)(single-ue profile) + -t 30 -R + adb_ue_1 + ltebox-nano + - - Iperf - iperf (5MHz - UL/2Mbps/UDP)(30 sec)(balanced) - -u -b 2M -t 30 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (5MHz - DL/TCP)(30 sec) + -t 30 -R + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - UL/2Mbps/UDP)(30 sec)(single-ue) - -u -b 2M -t 30 - 50 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (5MHz - UL/2Mbps/UDP)(30 sec)(balanced) + -u -b 2M -t 30 + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (5MHz - UL/TCP)(30 sec)(single-ue) - -t 30 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (5MHz - UL/2Mbps/UDP)(30 sec)(single-ue) + -u -b 2M -t 30 + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (5MHz - UL/TCP)(30 sec) - -t 30 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (5MHz - UL/TCP)(30 sec)(single-ue) + -t 30 + adb_ue_1 + ltebox-nano + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - starsky - oai-enb - + + Iperf + iperf (5MHz - UL/TCP)(30 sec) + -t 30 + adb_ue_1 adb_ue_2 + ltebox-nano + + + + Detach_UE + true + Detach UE + adb_ue_1 adb_ue_2 + + + + Terminate_UE + true + Terminate UE + adb_ue_1 adb_ue_2 + + + + Undeploy_Object + true + Undeploy RRU/RCC + starsky + ci-scripts/yaml_files/lte_b200_tdd_05Mhz_if4.5 + + + + Custom_Command + true + Enable Sleep States + starsky + sudo cpupower idle-set -E + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + starsky + oai-enb + diff --git a/ci-scripts/xml_files/container_lte_b200_tdd_10Mhz_tm1.xml b/ci-scripts/xml_files/container_lte_b200_tdd_10Mhz_tm1.xml index 88b3330508..a947c6774c 100644 --- a/ci-scripts/xml_files/container_lte_b200_tdd_10Mhz_tm1.xml +++ b/ci-scripts/xml_files/container_lte_b200_tdd_10Mhz_tm1.xml @@ -23,197 +23,186 @@ Replaces xml_files/enb_usrp210_band40_test_10mhz_tm1.xml --> - test-tdd-10-tm1 - Test-TDD-10MHz-TM1 - tasks - -100000 -111110 -040101 -800813 -030114 -040301 040511 040612 040611 040613 040614 040615 040652 040651 040653 040654 040655 040401 040201 -030214 -200000 -222222 - - + test-tdd-10-tm1 + Test-TDD-10MHz-TM1 + tasks - - Pull_Local_Registry - Pull Images from Local Registry - starsky - oai-enb - - - Custom_Command - Disable Sleep States - starsky - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - starsky - sudo cpupower idle-set -E - - - Create_Workspace - Create new Workspace for server 0 - starsky - - - Deploy_Object - Deploy eNB (TDD/Band40/10MHz/B200) in a container - starsky - ci-scripts/yaml_files/lte_b200_tdd_10Mhz_tm1 - + + Custom_Command + Disable Sleep States + starsky + sudo cpupower idle-set -D 0 + - - IdleSleep - Sleep - 5 - + + Pull_Local_Registry + Pull Images from Local Registry + starsky + oai-enb + - - Undeploy_Object - true - Undeploy eNB - starsky - ci-scripts/yaml_files/lte_b200_tdd_10Mhz_tm1 - + + Initialize_UE + Initialize UE + adb_ue_1 adb_ue_2 + - - Initialize_UE - Initialize UE - adb_ue_1 adb_ue_2 - - - Terminate_UE - true - Terminate UE - adb_ue_1 adb_ue_2 - - - Attach_UE - Attach UE - adb_ue_1 adb_ue_2 - - - Detach_UE - true - Detach UE - adb_ue_1 adb_ue_2 - + + Create_Workspace + Create new Workspace for server 0 + starsky + - - Ping - ping (10MHz - 20 sec) - -c 20 - 25 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Deploy_Object + Deploy eNB (TDD/Band40/10MHz/B200) in a container + starsky + ci-scripts/yaml_files/lte_b200_tdd_10Mhz_tm1 + - - Iperf - iperf (10MHz - DL/13.5Mbps/UDP)(30 sec)(balanced) - -u -b 13.5M -t 30 -R - 50 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Attach_UE + Attach UE + adb_ue_1 adb_ue_2 + - - Iperf - iperf (10MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue) - -u -b 13.5M -t 30 -R - 50 - adb_ue_1 - ltebox-nano - + + Ping + ping (10MHz - 20 sec) + -c 20 + 25 + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (10MHz - DL/13.5Mbps/UDP)(30 sec)(unbalanced) - -u -b 13.5M -t 30 -R - 50 - unbalanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (10MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue) + -u -b 13.5M -t 30 -R + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (10MHz - DL/TCP)(30 sec)(single-ue) - -t 30 -R - adb_ue_1 - ltebox-nano - + + Iperf + iperf (10MHz - DL/13.5Mbps/UDP)(30 sec)(balanced) + -u -b 13.5M -t 30 -R + 50 + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (10MHz - DL/TCP)(30 sec) - -t 30 -R - 50 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (10MHz - DL/13.5Mbps/UDP)(30 sec)(unbalanced) + -u -b 13.5M -t 30 -R + 50 + unbalanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (10MHz - UL/2Mbps/UDP)(30 sec)(balanced) - -u -b 2M -t 30 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (10MHz - DL/TCP)(30 sec)(single-ue) + -t 30 -R + adb_ue_1 + ltebox-nano + - - Iperf - iperf (10MHz - UL/2Mbps/UDP)(30 sec)(single-ue) - -u -b 2M -t 30 - 50 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (10MHz - DL/TCP)(30 sec) + -t 30 -R + 50 + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (10MHz - UL/2Mbps/UDP)(30 sec)(unbalanced) - -u -b 2M -t 30 - 50 - unbalanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (10MHz - UL/2Mbps/UDP)(30 sec)(single-ue) + -u -b 2M -t 30 + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (10MHz - UL/TCP)(30 sec)(single-ue) - -t 30 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (10MHz - UL/2Mbps/UDP)(30 sec)(balanced) + -u -b 2M -t 30 + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (10MHz - UL/TCP)(30 sec) - -t 30 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (10MHz - UL/2Mbps/UDP)(30 sec)(unbalanced) + -u -b 2M -t 30 + 50 + unbalanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - starsky - oai-enb - + + Iperf + iperf (10MHz - UL/TCP)(30 sec)(single-ue) + -t 30 + adb_ue_1 + ltebox-nano + + + + Iperf + iperf (10MHz - UL/TCP)(30 sec) + -t 30 + adb_ue_1 adb_ue_2 + ltebox-nano + + + + Detach_UE + true + Detach UE + adb_ue_1 adb_ue_2 + + + + Terminate_UE + true + Terminate UE + adb_ue_1 adb_ue_2 + + + + Undeploy_Object + true + Undeploy eNB + starsky + ci-scripts/yaml_files/lte_b200_tdd_10Mhz_tm1 + + + + Custom_Command + true + Enable Sleep States + starsky + sudo cpupower idle-set -E + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + starsky + oai-enb + diff --git a/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1.xml b/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1.xml index 65f4dfc6b4..0888891cb3 100644 --- a/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1.xml +++ b/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1.xml @@ -23,195 +23,132 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1.xml --> - test-tdd-20-tm1 - Test-TDD-20MHz-TM1 - tasks - -100000 -111110 -040101 -800813 -030124 -040301 040521 040622 040621 040623 040662 040401 040201 -030224 -200000 -222222 - - + test-tdd-20-tm1 + Test-TDD-20MHz-TM1 + tasks - - Pull_Local_Registry - Pull Images from Local Registry - starsky - oai-enb - - - Custom_Command - Disable Sleep States - starsky - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - starsky - sudo cpupower idle-set -E - - - Create_Workspace - Create new Workspace for server 0 - starsky - - - Deploy_Object - Deploy eNB (TDD/Band40/20MHz/B200) in a container - starsky - ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1 - + + Custom_Command + Disable Sleep States + starsky + sudo cpupower idle-set -D 0 + - - IdleSleep - Sleep - 5 - + + Pull_Local_Registry + Pull Images from Local Registry + starsky + oai-enb + - - Undeploy_Object - true - Undeploy eNB - starsky - ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1 - + + Initialize_UE + Initialize UE + adb_ue_1 adb_ue_2 + - - Initialize_UE - Initialize UE - adb_ue_1 adb_ue_2 - - - Terminate_UE - true - Terminate UE - adb_ue_1 adb_ue_2 - - - Attach_UE - Attach UE - adb_ue_1 adb_ue_2 - - - Detach_UE - true - Detach UE - adb_ue_1 adb_ue_2 - + + Create_Workspace + Create new Workspace for server 0 + starsky + - - Ping - ping (20MHz - 20 sec) - -c 20 - 25 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Deploy_Object + Deploy eNB (TDD/Band40/20MHz/B200) in a container + starsky + ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1 + - - Iperf - iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(balanced) - -u -b 13.5M -t 30 -R - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Attach_UE + Attach UE + adb_ue_1 adb_ue_2 + - - Iperf - iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue) - -u -b 13.5M -t 30 -R - 50 - adb_ue_1 - ltebox-nano - + + Ping + ping (20MHz - 20 sec) + -c 20 + 25 + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(unbalanced) - -u -b 13.5M -t 30 -R - 50 - unbalanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue) + -u -b 13.5M -t 30 -R + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (20MHz - DL/TCP)(30 sec)(single-ue) - -t 30 -R - adb_ue_1 - ltebox-nano - + + Iperf + iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(balanced) + -u -b 13.5M -t 30 -R + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (20MHz - DL/TCP)(30 sec) - -t 30 -R - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(unbalanced) + -u -b 13.5M -t 30 -R + 50 + unbalanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (20MHz - UL/2Mbps/UDP)(30 sec)(balanced) - -u -b 2M -t 30 -R - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (20MHz - UL/2Mbps/UDP)(30 sec)(single-ue) + -u -b 2M -t 30 -R + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (20MHz - UL/2Mbps/UDP)(30 sec)(single-ue) - -u -b 2M -t 30 -R - 50 - adb_ue_1 - ltebox-nano - + + Detach_UE + true + Detach UE + adb_ue_1 adb_ue_2 + - - Iperf - iperf (20MHz - UL/2Mbps/UDP)(30 sec)(unbalanced) - -u -b 2M -t 30 - 50 - unbalanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Terminate_UE + true + Terminate UE + adb_ue_1 adb_ue_2 + - - Iperf - iperf (20MHz - UL/TCP)(30 sec)(single-ue) - -t 30 - adb_ue_1 - ltebox-nano - + + Undeploy_Object + true + Undeploy eNB + starsky + ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1 + - - Iperf - iperf (20MHz - UL/TCP)(30 sec) - -t 30 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Custom_Command + true + Enable Sleep States + starsky + sudo cpupower idle-set -E + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - starsky - oai-enb - + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + starsky + oai-enb + diff --git a/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1_default_scheduler.xml b/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1_default_scheduler.xml index 6a0cb0f892..636abb1a66 100644 --- a/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1_default_scheduler.xml +++ b/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1_default_scheduler.xml @@ -23,200 +23,188 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1_default_scheduler.xml --> - test-tdd-20-tm1-def-sched - Test-TDD-20MHz-TM1-Default-Scheduler - tasks - -100000 -111110 -040101 -800813 -030125 -040301 040522 040627 040626 040628 040629 040630 040667 040666 040668 040669 040670 040401 040201 -030225 -200000 -222222 - - + test-tdd-20-tm1-def-sched + Test-TDD-20MHz-TM1-Default-Scheduler + tasks - - Pull_Local_Registry - Pull Images from Local Registry - starsky - oai-enb - + + Custom_Command + Disable Sleep States + starsky + sudo cpupower idle-set -D 0 + - - Custom_Command - Disable Sleep States - starsky - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - starsky - sudo cpupower idle-set -E - - - Create_Workspace - Create new Workspace for server 0 - starsky - - - Deploy_Object - Deploy eNB (TDD/Band40/20MHz/B200) in a container - starsky - ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1_default_scheduler - + + Pull_Local_Registry + Pull Images from Local Registry + starsky + oai-enb + - - IdleSleep - Sleep - 5 - + + Initialize_UE + Initialize UE + adb_ue_1 adb_ue_2 + - - Undeploy_Object - true - Undeploy eNB - starsky - ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1_default_scheduler - + + Create_Workspace + Create new Workspace for server 0 + starsky + - - Initialize_UE - Initialize UE - adb_ue_1 adb_ue_2 - - - Terminate_UE - true - Terminate UE - adb_ue_1 adb_ue_2 - - - Attach_UE - Attach UE - adb_ue_1 adb_ue_2 - - - Detach_UE - true - Detach UE - adb_ue_1 adb_ue_2 - + + Deploy_Object + Deploy eNB (TDD/Band40/20MHz/B200) in a container + starsky + ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1_default_scheduler + - - Ping - ping (20MHz - 20 sec) - -c 20 - 25 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Attach_UE + Attach UE + adb_ue_1 adb_ue_2 + - - Iperf - iperf (20MHz - DL/27.5Mbps/UDP)(30 sec)(balanced) - -u -b 27.5M -t 30 -R - 50 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Ping + ping (20MHz - 20 sec) + -c 20 + 25 + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (20MHz - DL/27.5Mbps/UDP)(30 sec)(single-ue) - -u -b 27.5M -t 30 -R - 50 - 50 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (20MHz - DL/27.5Mbps/UDP)(30 sec)(single-ue) + -u -b 27.5M -t 30 -R + 50 + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (20MHz - DL/27.5Mbps/UDP)(30 sec)(unbalanced) - -u -b 27.5M -t 30 -R - 50 - 50 - unbalanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (20MHz - DL/27.5Mbps/UDP)(30 sec)(balanced) + -u -b 27.5M -t 30 -R + 50 + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (20MHz - DL/TCP)(30 sec)(single-ue) - -t 30 -R - adb_ue_1 - ltebox-nano - + + Iperf + iperf (20MHz - DL/27.5Mbps/UDP)(30 sec)(unbalanced) + -u -b 27.5M -t 30 -R + 50 + 50 + unbalanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (20MHz - DL/TCP)(30 sec) - -t 30 -R - 50 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (20MHz - DL/TCP)(30 sec)(single-ue) + -t 30 -R + adb_ue_1 + ltebox-nano + - - Iperf - iperf (20MHz - UL/7Mbps/UDP)(30 sec)(balanced) - -u -b 7M -t 30 - 50 - balanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (20MHz - DL/TCP)(30 sec) + -t 30 -R + 50 + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (20MHz - UL/7Mbps/UDP)(30 sec)(single-ue) - -u -b 7M -t 30 - 50 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (20MHz - UL/7Mbps/UDP)(30 sec)(single-ue) + -u -b 7M -t 30 + 50 + adb_ue_1 + ltebox-nano + - - Iperf - iperf (20MHz - UL/7Mbps/UDP)(30 sec)(unbalanced) - -u -b 7M -t 30 - 50 - unbalanced - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (20MHz - UL/7Mbps/UDP)(30 sec)(balanced) + -u -b 7M -t 30 + 50 + balanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (20MHz - UL/TCP)(30 sec)(single-ue) - -t 30 - adb_ue_1 - ltebox-nano - + + Iperf + iperf (20MHz - UL/7Mbps/UDP)(30 sec)(unbalanced) + -u -b 7M -t 30 + 50 + unbalanced + adb_ue_1 adb_ue_2 + ltebox-nano + - - Iperf - iperf (20MHz - UL/TCP)(30 sec) - -t 30 - adb_ue_1 adb_ue_2 - ltebox-nano - + + Iperf + iperf (20MHz - UL/TCP)(30 sec)(single-ue) + -t 30 + adb_ue_1 + ltebox-nano + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - starsky - oai-enb - + + Iperf + iperf (20MHz - UL/TCP)(30 sec) + -t 30 + adb_ue_1 adb_ue_2 + ltebox-nano + + + + Detach_UE + true + Detach UE + adb_ue_1 adb_ue_2 + + + + Terminate_UE + true + Terminate UE + adb_ue_1 adb_ue_2 + + + + Undeploy_Object + true + Undeploy eNB + starsky + ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1_default_scheduler + + + + Custom_Command + true + Enable Sleep States + starsky + sudo cpupower idle-set -E + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + starsky + oai-enb + diff --git a/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm1.xml b/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm1.xml index 3337bba999..39ac1a7df4 100644 --- a/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm1.xml +++ b/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm1.xml @@ -25,71 +25,54 @@ TEST-LTE-2x2-N3XX-TM12.6 Ghz TDD LTE 2x2 TM1tasks - -111111 -100000 -010010 -800833 -030101 -010001 -000001 -050000 -050001 -070000 -070001 -010010 -030201 -333333 - - - - - + Pull_Local_Registry Pull Images from Local Registry obelix oai-enb - + Custom_Command Disable Sleep States obelix sudo cpupower idle-set -D 0 - - Custom_Command - Enable Sleep States - obelix - sudo cpupower idle-set -E + + Detach_UE + true + Detach UE + up2 - + + Create_Workspace Create new Workspace obelix - + + Deploy_Object Deploy eNB (TDD/Band38/2.6Ghz/N3XX) in a container obelix ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm1 - - IdleSleep - Sleep - 5 - - - + Attach_UE Attach UE up2 - + + IdleSleep + Sleep + 5 + + + Ping Ping: 20 pings up2 @@ -99,7 +82,7 @@ 60 - + Ping Ping: 100 pings, size 1024 up2 @@ -107,9 +90,9 @@ -c 100 -s 1024 -i 0.2 1 60 - + - + Iperf iperf (DL/26Mbps/UDP)(60 sec)(single-ue profile) -u -b 26M -t 60 -R @@ -117,44 +100,39 @@ porcepix-cn4g 5 95 - + - - Iperf - iperf (UL/7Mbps/UDP)(60 sec)(single-ue profile) - -u -b 7M -t 60 - up2 - porcepix-cn4g - 5 - 95 - + + Iperf + iperf (UL/7Mbps/UDP)(60 sec)(single-ue profile) + -u -b 7M -t 60 + up2 + porcepix-cn4g + 5 + 95 + - + Detach_UE true Detach UE up2 - + Undeploy_Object true Undeploy gNB obelix ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm1 - - - Clean_Test_Server_Images - true - Clean Test Images - obelix - oai-enb - + + Clean_Test_Server_Images + true + Clean Test Images + obelix + oai-enb + - diff --git a/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm2.xml b/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm2.xml index a3e89df4a6..e2b9f7ae13 100644 --- a/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm2.xml +++ b/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm2.xml @@ -25,71 +25,54 @@ TEST-LTE-2x2-N3XXi-TM2 2.6 Ghz TDD LTE 2x2 TM2 tasks - -111111 -100000 -010010 -800833 -031101 -010001 -000001 -051000 -051001 -071000 -071001 -010010 -031201 -333333 - - - - - + Pull_Local_Registry Pull Images from Local Registry obelix oai-enb - + Custom_Command Disable Sleep States obelix sudo cpupower idle-set -D 0 - - Custom_Command - Enable Sleep States - obelix - sudo cpupower idle-set -E + + Detach_UE + true + Detach UE + up2 - + + Create_Workspace Create new Workspace obelix - + + Deploy_Object Deploy eNB (TDD/Band38/2.6Ghz/N3XX) in a container obelix ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm2 - - IdleSleep - Sleep - 5 - - - + Attach_UE Attach UE up2 - + + IdleSleep + Sleep + 5 + + + Ping Ping: 20 pings up2 @@ -99,7 +82,7 @@ 60 - + Ping Ping: 100 pings, size 1024 up2 @@ -107,9 +90,9 @@ -c 100 -s 1024 -i 0.2 1 60 - + - + Iperf iperf (DL/26Mbps/UDP)(60 sec)(single-ue profile) -u -b 1M -t 60 -R @@ -117,45 +100,39 @@ porcepix-cn4g 5 95 - + - - Iperf - iperf (UL/7Mbps/UDP)(60 sec)(single-ue profile) - -u -b 7M -t 60 - up2 - porcepix-cn4g - 5 - 95 - + + Iperf + iperf (UL/7Mbps/UDP)(60 sec)(single-ue profile) + -u -b 7M -t 60 + up2 + porcepix-cn4g + 5 + 95 + - + Detach_UE true Detach UE up2 - + Undeploy_Object true Undeploy gNB obelix ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm2 - - - Clean_Test_Server_Images - true - Clean Test Images - obelix - oai-enb - - + + Clean_Test_Server_Images + true + Clean Test Images + obelix + oai-enb + - diff --git a/ci-scripts/xml_files/container_nsa_b200_quectel.xml b/ci-scripts/xml_files/container_nsa_b200_quectel.xml index c73c6dadca..a9e859886c 100644 --- a/ci-scripts/xml_files/container_nsa_b200_quectel.xml +++ b/ci-scripts/xml_files/container_nsa_b200_quectel.xml @@ -21,261 +21,226 @@ --> - TEST-NSA-FR1-TM1-B200 - NSA SanityCheck with QUECTEL - tasks - - 200000 - 100000 - 500000 - 111110 - 111111 - 000100 - 010000 - 800833 - 030101 - 800834 - 030102 - 010001 - 050000 - 050001 - 070001 - 070000 - 070002 - 050002 - 050003 - 010010 - 010002 - 030202 - 030201 - 060000 - 300000 - 600000 - 222220 - 222221 - - + TEST-NSA-FR1-TM1-B200 + NSA SanityCheck with QUECTEL + tasks - - Pull_Local_Registry - Pull Images from Local Registry - nepes - oai-enb - + + Custom_Command + Disable Sleep States (nepes) + nepes + sudo cpupower idle-set -D 0 + - - Pull_Local_Registry - Pull Images from Local Registry - ofqot - oai-gnb - + + Custom_Command + Reset USRP on nepes + nepes + sudo -S /usr/local/lib/uhd/utils/b2xx_fx3_utils --reset-device + - - Custom_Command - Reset USRP on nepes - nepes - sudo -S /usr/local/lib/uhd/utils/b2xx_fx3_utils --reset-device - + + Custom_Command + Disable Sleep States (ofqot) + ofqot + sudo cpupower idle-set -D 0 + - - Custom_Command - Disable Sleep States (nepes) - nepes - sudo cpupower idle-set -D 0 - - - Custom_Command + + Pull_Local_Registry + Pull Images from Local Registry + nepes + oai-enb + + + + Pull_Local_Registry + Pull Images from Local Registry + ofqot + oai-gnb + + + + DeployCoreNetwork + Start EPC + ltebox-nepes + + + + Initialize_UE + Initialize Quectel + idefix + + + + Create_Workspace + Create new Workspace + nepes + + + + Deploy_Object + Deploy eNB (FDD/Band7/5MHz/B200) in a container + nepes + ci-scripts/yaml_files/nsa_b200_enb + + + + Create_Workspace + Create new Workspace + ofqot + + + + Deploy_Object + Deploy gNB (TDD/Band78/40MHz/B200) in a container + ofqot + ci-scripts/yaml_files/nsa_b200_gnb + + + + Attach_UE + Attach UE + idefix + + + + Ping + Ping: 20pings in 20sec + idefix + ltebox-nepes + -c 20 + 1 + 15 + + + + Ping + Ping: 100pings in 20sec + idefix + ltebox-nepes + -c 100 -i 0.2 + 1 + 15 + + + + Iperf + iperf (UL/8Mbps/UDP)(60 sec)(single-ue profile) + -u -b 8M -t 60 + idefix + ltebox-nepes + 1 + 95 + + + + Iperf + iperf (DL/70Mbps/UDP)(60 sec)(single-ue profile) + -u -b 70M -t 60 -R + idefix + ltebox-nepes + 25 + 80 + + + + Iperf + iperf (BIDIR TCP)(10 sec)(single-ue profile) + -t 10 --bidir + idefix + ltebox-nepes + + + + Ping + Ping: 20pings in 20sec + idefix + ltebox-nepes + -c 20 + 1 + 15 + + + + Ping + Ping: 100pings in 20sec + idefix + ltebox-nepes + -c 100 -i 0.2 + 1 + 15 + + + + Detach_UE true - Enable Sleep States (nepes) - nepes - sudo cpupower idle-set -E - - - Custom_Command - Disable Sleep States (ofqot) - ofqot - sudo cpupower idle-set -D 0 - - - Custom_Command + Detach UE + idefix + + + + Terminate_UE true - Enable Sleep States (ofqot) - ofqot - sudo cpupower idle-set -E - + Terminate Quectel + idefix + - - DeployCoreNetwork - Start EPC - ltebox-nepes - - - - Initialize_UE - Initialize Quectel - idefix - - - Terminate_UE + + Undeploy_Object true - Terminate Quectel - idefix - - - Attach_UE - Attach UE - idefix - - - Detach_UE + Undeploy gNB + ofqot + ci-scripts/yaml_files/nsa_b200_gnb + 10,100,100,100 + 10,100,100,100 + + + + Undeploy_Object true - Detach UE - idefix - - - Create_Workspace - Create new Workspace - nepes - - - Deploy_Object - Deploy eNB (FDD/Band7/5MHz/B200) in a container - nepes - ci-scripts/yaml_files/nsa_b200_enb - - - Create_Workspace - Create new Workspace - ofqot - - - Deploy_Object - Deploy gNB (TDD/Band78/40MHz/B200) in a container - ofqot - ci-scripts/yaml_files/nsa_b200_gnb - + Undeploy eNB + nepes + ci-scripts/yaml_files/nsa_b200_enb + - - IdleSleep - Sleep - 5 - - - - IdleSleep - Sleep - 20 - - - - - Ping - Ping: 20pings in 20sec - idefix - ltebox-nepes - -c 20 - 1 - 15 - - - - Ping - Ping: 100pings in 20sec - idefix - ltebox-nepes - -c 100 -i 0.2 - 1 - 15 - - - - Ping - Ping: 20pings in 20sec - idefix - ltebox-nepes - -c 20 - 1 - 15 - - - - Ping - Ping: 100pings in 20sec - idefix - ltebox-nepes - -c 100 -i 0.2 - 1 - 15 - - - - Iperf - iperf (DL/70Mbps/UDP)(60 sec)(single-ue profile) - -u -b 70M -t 60 -R - idefix - ltebox-nepes - 25 - 80 - - - - Iperf - iperf (UL/8Mbps/UDP)(60 sec)(single-ue profile) - -u -b 8M -t 60 - idefix - ltebox-nepes - 1 - 95 - - - - Iperf - iperf (BIDIR TCP)(10 sec)(single-ue profile) - -t 10 --bidir - idefix - ltebox-nepes - - - - Undeploy_Object - true - Undeploy eNB - nepes - ci-scripts/yaml_files/nsa_b200_enb - - - - UndeployCoreNetwork - Terminate EPC - true - ltebox-nepes - - - - Undeploy_Object - true - Undeploy gNB - ofqot - ci-scripts/yaml_files/nsa_b200_gnb - 10,100,100,100 - 10,100,100,100 - - - - Clean_Test_Server_Images + + UndeployCoreNetwork + Terminate EPC true - Clean Test Images on Test Server - nepes - oai-enb - + ltebox-nepes + - - Clean_Test_Server_Images + + Custom_Command true - Clean Test Images on Test Server - ofqot - oai-gnb - + Enable Sleep States (nepes) + nepes + sudo cpupower idle-set -E + + + + Custom_Command + true + Enable Sleep States (ofqot) + ofqot + sudo cpupower idle-set -E + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + nepes + oai-enb + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + ofqot + oai-gnb + - diff --git a/ci-scripts/xml_files/container_sa_aerial_cn_start.xml b/ci-scripts/xml_files/container_sa_aerial_cn_start.xml index db622423ae..e29a8aa781 100644 --- a/ci-scripts/xml_files/container_sa_aerial_cn_start.xml +++ b/ci-scripts/xml_files/container_sa_aerial_cn_start.xml @@ -21,17 +21,14 @@ --> - TEST-AERIAL-SA-CN-START - Deploy 5GC - tasks - - 555000 - - - - DeployCoreNetwork - Initialize 5G Core - oc-cn5g-20897-aerial - - + TEST-AERIAL-SA-CN-START + Deploy 5GC + tasks + + DeployCoreNetwork + Initialize 5G Core + oc-cn5g-20897-aerial + + + diff --git a/ci-scripts/xml_files/container_sa_aerial_cn_stop.xml b/ci-scripts/xml_files/container_sa_aerial_cn_stop.xml index bf0bd9fb9c..f50c07a41f 100644 --- a/ci-scripts/xml_files/container_sa_aerial_cn_stop.xml +++ b/ci-scripts/xml_files/container_sa_aerial_cn_stop.xml @@ -21,18 +21,15 @@ --> - TEST-AERIAL-SA-CN-STOP - Undeploy 5GC - tasks - - 000555 - - - - UndeployCoreNetwork - true - Terminate 5G Core - oc-cn5g-20897-aerial - - + TEST-AERIAL-SA-CN-STOP + Undeploy 5GC + tasks + + UndeployCoreNetwork + true + Terminate 5G Core + oc-cn5g-20897-aerial + + + diff --git a/ci-scripts/xml_files/container_sa_aerial_quectel.xml b/ci-scripts/xml_files/container_sa_aerial_quectel.xml index bf3f702219..b5a2e11e50 100644 --- a/ci-scripts/xml_files/container_sa_aerial_quectel.xml +++ b/ci-scripts/xml_files/container_sa_aerial_quectel.xml @@ -21,136 +21,127 @@ --> - TEST-AERIAL-SA - AERIAL 100 MHz TDD SA - tasks - - 111111 - 000222 - 800813 - 002222 - 002223 - 000111 - 000011 - 000022 - 000033 - 200022 - 300033 - 000222 - 222222 - 333333 - - - - Pull_Local_Registry - Pull Images from Local Registry - gracehopper1-oai - oai-gnb-aerial - arm_ - + TEST-AERIAL-SA + AERIAL 100 MHz TDD SA + tasks - - Create_Workspace - Create new Workspace for server 0 - gracehopper1-oai - + + Pull_Local_Registry + Pull Images from Local Registry + gracehopper1-oai + oai-gnb-aerial + arm_ + - - Deploy_Object - Deploy PNF/Nvidia CUBB in a container - gracehopper1-oai - ci-scripts/yaml_files/sa_gnb_aerial - nv-cubb - + + Detach_UE + true + Detach Quectel + up2-aerial + - - Deploy_Object - Deploy VNF in a container - gracehopper1-oai - ci-scripts/yaml_files/sa_gnb_aerial - oai-gnb-aerial - + + Create_Workspace + Create new Workspace for server 0 + gracehopper1-oai + - - Attach_UE - Attach Quectel - up2-aerial - + + Deploy_Object + Deploy PNF/Nvidia CUBB in a container + gracehopper1-oai + ci-scripts/yaml_files/sa_gnb_aerial + nv-cubb + - - Ping - Ping: 100pings in 20sec - up2-aerial - oc-cn5g-20897-aerial - -c 100 -i 0.2 - 5 - + + Deploy_Object + Deploy VNF in a container + gracehopper1-oai + ci-scripts/yaml_files/sa_gnb_aerial + oai-gnb-aerial + - - Iperf - iperf (DL/UDP/800M)(30 sec)(single-ue profile) - -u -b 800M -t 30 -R - oc-cn5g-20897-aerial - up2-aerial - 25 - 80 - + + Attach_UE + Attach Quectel + up2-aerial + - - Iperf - iperf (UL/UDP/150M)(30 sec)(single-ue profile) - -u -b 150M -t 30 -l 1428 - oc-cn5g-20897-aerial - up2-aerial - 25 - 80 - + + Ping + Ping: 100pings in 20sec + up2-aerial + oc-cn5g-20897-aerial + -c 100 -i 0.2 + 5 + - - Iperf - Optional iperf (DL/UDP/1000M)(30 sec)(single-ue profile) - true - -u -b 1000M -t 30 -R - oc-cn5g-20897-aerial - up2-aerial - 25 - 80 - + + Iperf + iperf (DL/UDP/800M)(30 sec)(single-ue profile) + -u -b 800M -t 30 -R + oc-cn5g-20897-aerial + up2-aerial + 25 + 80 + - - Iperf - Optional iperf (UL/UDP/200M)(30 sec)(single-ue profile) - true - -u -b 200M -t 30 -l 1428 - oc-cn5g-20897-aerial - up2-aerial - 25 - 80 - + + Iperf + iperf (UL/UDP/150M)(30 sec)(single-ue profile) + -u -b 150M -t 30 -l 1428 + oc-cn5g-20897-aerial + up2-aerial + 25 + 80 + - - Detach_UE - true - Detach Quectel - up2-aerial - + + Iperf + Optional iperf (DL/UDP/1000M)(30 sec)(single-ue profile) + true + -u -b 1000M -t 30 -R + oc-cn5g-20897-aerial + up2-aerial + 25 + 80 + - - Undeploy_Object - true - Undeploy gNB - gracehopper1-oai - ci-scripts/yaml_files/sa_gnb_aerial - 20,100,100,100 - 20,100,100,100 - + + Iperf + Optional iperf (UL/UDP/200M)(30 sec)(single-ue profile) + true + -u -b 200M -t 30 -l 1428 + oc-cn5g-20897-aerial + up2-aerial + 25 + 80 + + + + Detach_UE + true + Detach Quectel + up2-aerial + + + + Undeploy_Object + true + Undeploy gNB + gracehopper1-oai + ci-scripts/yaml_files/sa_gnb_aerial + 20,100,100,100 + 20,100,100,100 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + gracehopper1-oai + oai-gnb-aerial + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - gracehopper1-oai - oai-gnb-aerial - - diff --git a/ci-scripts/xml_files/container_sa_aerial_quectel_ul_heavy.xml b/ci-scripts/xml_files/container_sa_aerial_quectel_ul_heavy.xml index baf525f167..c577236887 100644 --- a/ci-scripts/xml_files/container_sa_aerial_quectel_ul_heavy.xml +++ b/ci-scripts/xml_files/container_sa_aerial_quectel_ul_heavy.xml @@ -21,124 +21,116 @@ --> - TEST-AERIAL-SA-UL-Heavy - AERIAL 100 MHz DSUUU SA - tasks - - 111111 - 000222 - 800813 - 002222 - 002223 - 000111 - 000011 - 000032 - 000033 - 000022 - 000222 - 222222 - 333333 - - - - Pull_Local_Registry - Pull Images from Local Registry - gracehopper1-oai - oai-gnb-aerial - arm_ - + TEST-AERIAL-SA-UL-Heavy + AERIAL 100 MHz DSUUU SA + tasks - - Create_Workspace - Create new Workspace for server 0 - gracehopper1-oai - + + Pull_Local_Registry + Pull Images from Local Registry + gracehopper1-oai + oai-gnb-aerial + arm_ + - - Deploy_Object - Deploy PNF/Nvidia CUBB in a container - gracehopper1-oai - ci-scripts/yaml_files/sa_gnb_aerial_ul - nv-cubb - + + Detach_UE + true + Detach Quectel + up2-aerial + - - Deploy_Object - Deploy VNF in a container - gracehopper1-oai - ci-scripts/yaml_files/sa_gnb_aerial_ul - oai-gnb-aerial - + + Create_Workspace + Create new Workspace for server 0 + gracehopper1-oai + - - Attach_UE - Attach Quectel - up2-aerial - + + Deploy_Object + Deploy PNF/Nvidia CUBB in a container + gracehopper1-oai + ci-scripts/yaml_files/sa_gnb_aerial_ul + nv-cubb + - - Ping - Ping: 100pings in 20sec - up2-aerial - oc-cn5g-20897-aerial - -c 100 -i 0.2 - 5 - + + Deploy_Object + Deploy VNF in a container + gracehopper1-oai + ci-scripts/yaml_files/sa_gnb_aerial_ul + oai-gnb-aerial + - - Iperf - iperf (DL/UDP/200M)(30 sec)(single-ue profile) - -u -b 200M -t 30 -R - oc-cn5g-20897-aerial - up2-aerial - 25 - 80 - + + Attach_UE + Attach Quectel + up2-aerial + - - Iperf - iperf (UL/UDP/300M)(30 sec)(single-ue profile) - -u -b 300M -t 30 -l 1428 - oc-cn5g-20897-aerial - up2-aerial - 10 - 90 - + + Ping + Ping: 100pings in 20sec + up2-aerial + oc-cn5g-20897-aerial + -c 100 -i 0.2 + 5 + - - Iperf - iperf (UL/UDP/380M)(30 sec)(single-ue profile) - true - -u -b 380M -t 30 -l 1428 - oc-cn5g-20897-aerial - up2-aerial - 10 - 90 - + + Iperf + iperf (UL/UDP/300M)(30 sec)(single-ue profile) + -u -b 300M -t 30 -l 1428 + oc-cn5g-20897-aerial + up2-aerial + 10 + 90 + - - Detach_UE - true - Detach Quectel - up2-aerial - + + Iperf + iperf (UL/UDP/380M)(30 sec)(single-ue profile) + true + -u -b 380M -t 30 -l 1428 + oc-cn5g-20897-aerial + up2-aerial + 10 + 90 + - - Undeploy_Object - true - Undeploy gNB - gracehopper1-oai - ci-scripts/yaml_files/sa_gnb_aerial_ul - 20,100,100,100 - 20,100,100,100 - + + Iperf + iperf (DL/UDP/200M)(30 sec)(single-ue profile) + -u -b 200M -t 30 -R + oc-cn5g-20897-aerial + up2-aerial + 25 + 80 + + + + Detach_UE + true + Detach Quectel + up2-aerial + + + + Undeploy_Object + true + Undeploy gNB + gracehopper1-oai + ci-scripts/yaml_files/sa_gnb_aerial_ul + 20,100,100,100 + 20,100,100,100 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + gracehopper1-oai + oai-gnb-aerial + - - Clean_Test_Server_Images - true - Clean Test Images on Test Server - gracehopper1-oai - oai-gnb-aerial - - diff --git a/ci-scripts/xml_files/container_sa_aw2s_asue.xml b/ci-scripts/xml_files/container_sa_aw2s_asue.xml index e5d32c181f..6dfbc83187 100644 --- a/ci-scripts/xml_files/container_sa_aw2s_asue.xml +++ b/ci-scripts/xml_files/container_sa_aw2s_asue.xml @@ -24,34 +24,8 @@ TEST-5G-AW2S 20 MHz TDD SA tasks - 1 - - 110000 - 101000 - 100813 - 120000 - 102000 - 102001 - 302001 - 102002 - 302002 - 102003 - 100100 - 100010 - 100020 - 100030 - 100040 - 102016 - 100200 - 103000 - 104000 - 100002 - 130000 - 444444 - - - + Pull_Cluster_Image Pull Images from Cluster oaicicd-ran @@ -59,58 +33,68 @@ avra - + Initialize_UE Initialize Amarisoft UE amarisoft_ue - + Create_Workspace Creating new Workspace avra - + Deploy_Object Deploy gNB (TDD/Band78/20MHz/aw2s) in a container avra ci-scripts/yaml_files/sa_aw2s_gnb - + Attach_UE Attach UE 1 amarisoft_ue_1 - + Custom_Command Verify UE 1 is normal (no RedCap) avra [ $(docker logs oai-gnb-aw2s | grep -E "UE with RNTI [0-9a-f]{4} is RedCap" | wc -l) -eq 0 ] - + Attach_UE Attach (RedCap) UE 2 amarisoft_ue_2 - + Custom_Command Verify UE 2 is RedCap avra [ $(docker logs oai-gnb-aw2s | grep -m1 -E "UE with RNTI [0-9a-f]{4} is RedCap" | wc -l) -eq 1 ] - + Attach_UE Attach UE 3 - 15 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10 amarisoft_ue_11 amarisoft_ue_12 amarisoft_ue_13 amarisoft_ue_14 amarisoft_ue_15 - + + Ping + Ping: 50 pings in 10sec, multi-ue + amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10 amarisoft_ue_11 amarisoft_ue_12 amarisoft_ue_13 amarisoft_ue_14 amarisoft_ue_15 + oc-cn5g + -c 50 -i 0.2 + 5 + 25 + + + Iperf iperf (DL/3Mbps/UDP)(30 sec) -u -b 45M -t 30 -R @@ -121,16 +105,7 @@ oc-cn5g - - Iperf - iperf (DL/TCP)(30 sec) - -t 30 -R - amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10 amarisoft_ue_11 amarisoft_ue_12 amarisoft_ue_13 amarisoft_ue_14 amarisoft_ue_15 - 2 - oc-cn5g - - - + Iperf iperf (UL/1Mbps/UDP)(30 sec) -u -b 15M -t 30 @@ -141,7 +116,16 @@ oc-cn5g - + + Iperf + iperf (DL/TCP)(30 sec) + -t 30 -R + amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10 amarisoft_ue_11 amarisoft_ue_12 amarisoft_ue_13 amarisoft_ue_14 amarisoft_ue_15 + 2 + oc-cn5g + + + Iperf iperf (UL/TCP)(30 sec) -t 30 @@ -151,23 +135,13 @@ oc-cn5g - - Ping - Ping: 50 pings in 10sec, multi-ue - amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10 amarisoft_ue_11 amarisoft_ue_12 amarisoft_ue_13 amarisoft_ue_14 amarisoft_ue_15 - oc-cn5g - -c 50 -i 0.2 - 5 - 25 - - - + Attach_UE Attach (RedCap) UE 16 amarisoft_ue_16 - + Ping Ping: 50pings in 10sec, multi-ue amarisoft_ue_16 @@ -177,27 +151,27 @@ 30 - + Detach_UE true Detach UE amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10 amarisoft_ue_11 amarisoft_ue_12 amarisoft_ue_13 amarisoft_ue_14 amarisoft_ue_15 amarisoft_ue_16 - + Terminate_UE true Terminate UE amarisoft_ue - + IdleSleep Sleep 5 - + Undeploy_Object true Undeploy gNB @@ -205,7 +179,7 @@ ci-scripts/yaml_files/sa_aw2s_gnb - + Clean_Test_Server_Images true Clean Test Images on Test Server diff --git a/ci-scripts/xml_files/container_sa_aw2s_asue_2x2.xml b/ci-scripts/xml_files/container_sa_aw2s_asue_2x2.xml index 4a2dd6c420..c7e5ab5721 100644 --- a/ci-scripts/xml_files/container_sa_aw2s_asue_2x2.xml +++ b/ci-scripts/xml_files/container_sa_aw2s_asue_2x2.xml @@ -24,158 +24,135 @@ TEST-5G-2x2-AW2S 20 MHz TDD 2x2 SA tasks - - 010000 - 001000 - 800813 - 020000 - 002000 - 002001 - 002002 - 002003 - 002004 - 002005 - 002006 - 002007 - 002008 - 002009 - 002010 - 002011 - 002012 - 002013 - 002014 - 002015 - 000100 - 000010 - 000020 - 000030 - 000040 - 002016 - 000200 - 003000 - 004000 - 000002 - 030000 - 333333 - - - + Pull_Cluster_Image Pull Images from Cluster oaicicd-ran oai-gnb-aw2s avra - + + + Initialize_UE + Initialize Amarisoft UE + amarisoft_ue_2x2 + + + Create_Workspace Create new Workspace avra - + + Deploy_Object Deploy gNB (TDD/Band78/20MHz/aw2s) in a container avra ci-scripts/yaml_files/sa_aw2s_2x2_gnb - - Initialize_UE - Initialize Amarisoft UE - amarisoft_ue_2x2 - - - + Attach_UE Attach UE amarisoft_ue_1 - + Attach_UE Attach UE amarisoft_ue_2 - + Attach_UE Attach UE amarisoft_ue_3 - + Attach_UE Attach UE amarisoft_ue_4 - + Attach_UE Attach UE amarisoft_ue_5 - + Attach_UE Attach UE amarisoft_ue_6 - + Attach_UE Attach UE amarisoft_ue_7 - + Attach_UE Attach UE amarisoft_ue_8 - + Attach_UE Attach UE amarisoft_ue_9 - + Attach_UE Attach UE amarisoft_ue_10 - + Attach_UE Attach UE amarisoft_ue_11 - + Attach_UE Attach UE amarisoft_ue_12 - + Attach_UE Attach UE amarisoft_ue_13 - + Attach_UE Attach UE amarisoft_ue_14 - + Attach_UE Attach UE amarisoft_ue_15 - + + Ping + Ping: 20pings in 20sec, multi-ue + amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10 amarisoft_ue_11 amarisoft_ue_12 amarisoft_ue_13 amarisoft_ue_14 amarisoft_ue_15 + oc-cn5g + -c 20 + 5 + 25 + + + Iperf iperf (DL/4Mbps/UDP)(30 sec) -u -b 60M -t 30 -R @@ -186,16 +163,7 @@ oc-cn5g - - Iperf - iperf (DL/TCP)(30 sec) - -t 30 -R - amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10 amarisoft_ue_11 amarisoft_ue_12 amarisoft_ue_13 amarisoft_ue_14 amarisoft_ue_15 - 3.9 - oc-cn5g - - - + Iperf iperf (UL/1.5Mbps/UDP)(30 sec) -u -b 22.5M -t 30 @@ -206,7 +174,16 @@ oc-cn5g - + + Iperf + iperf (DL/TCP)(30 sec) + -t 30 -R + amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10 amarisoft_ue_11 amarisoft_ue_12 amarisoft_ue_13 amarisoft_ue_14 amarisoft_ue_15 + 3.9 + oc-cn5g + + + Iperf iperf (UL/TCP)(30 sec) -t 30 @@ -216,23 +193,13 @@ oc-cn5g - - Ping - Ping: 20pings in 20sec, multi-ue - amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10 amarisoft_ue_11 amarisoft_ue_12 amarisoft_ue_13 amarisoft_ue_14 amarisoft_ue_15 - oc-cn5g - -c 20 - 5 - 25 - - - + Attach_UE Attach UE amarisoft_ue_16 - + Ping Ping: 50pings in 10sec, multi-ue amarisoft_ue_16 @@ -242,27 +209,27 @@ 30 - + Detach_UE true Detach UE amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10 amarisoft_ue_11 amarisoft_ue_12 amarisoft_ue_13 amarisoft_ue_14 amarisoft_ue_15 amarisoft_ue_16 - + Terminate_UE true Terminate UE amarisoft_ue_2x2 - + IdleSleep Sleep 5 - + Undeploy_Object true Undeploy gNB @@ -270,7 +237,7 @@ ci-scripts/yaml_files/sa_aw2s_2x2_gnb - + Clean_Test_Server_Images true Clean Test Images on Test Server diff --git a/ci-scripts/xml_files/container_sa_b200_quectel.xml b/ci-scripts/xml_files/container_sa_b200_quectel.xml index 7b42e42b0c..cb64146091 100644 --- a/ci-scripts/xml_files/container_sa_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_b200_quectel.xml @@ -24,110 +24,47 @@ TEST-SA-FR1-B200 20 MHz TDD SA tasks - - 100000 - 111111 - 010000 - 800813 - 030101 - 010001 - 050000 - 050001 - 070000 - 070001 - 070002 - 070003 - 070004 - 060001 - 000002 - 060002 - 050000 - 010010 - 010001 - 050001 - 010010 - 010001 - 050000 - 010010 - 010002 - 030201 - 200000 - 222222 - - - + + Custom_Command + Disable Sleep States + ofqot + sudo cpupower idle-set -D 0 + + + Pull_Local_Registry Pull Images from Local Registry ofqot oai-gnb - - Custom_Command - Disable Sleep States - ofqot - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - ofqot - sudo cpupower idle-set -E - - - + Initialize_UE Initialize Quectel idefix - - Terminate_UE - true - Terminate Quectel - idefix - - - Attach_UE - Attach UE - idefix - - - Detach_UE - true - Detach UE - idefix - - + + Create_Workspace Create new Workspace for server 0 ofqot - + + Deploy_Object Deploy gNB (TDD/Band78/40MHz/B200) in a container ofqot ci-scripts/yaml_files/sa_b200_gnb - - IdleSleep - Sleep - 5 - - - - Ping - Ping: 20pings + + Attach_UE + Attach UE idefix - sabox-nepes - -c 20 -i0.5 -w25 - 80 - - + Ping Ping: 20pings in 20sec idefix @@ -137,7 +74,7 @@ 15 - + Ping Ping: 100pings in 20sec idefix @@ -147,7 +84,7 @@ 15 - + Iperf iperf (DL/30Mbps/UDP)(30 sec)(single-ue profile) -u -b 30M -t 30 -R @@ -157,7 +94,7 @@ 80 - + Iperf iperf (UL/3.5Mbps/UDP)(30 sec)(single-ue profile) -u -b 3.5M -t 30 @@ -167,7 +104,7 @@ 95 - + Iperf iperf (BIDIR TCP)(10 sec)(single-ue profile) -t 10 --bidir @@ -175,7 +112,7 @@ sabox-nepes - + Iperf iperf (DL/TCP)(30 sec)(single-ue profile) -t 30 -R @@ -184,7 +121,7 @@ 40 - + Iperf iperf (UL/TCP)(30 sec)(single-ue profile) -t 30 @@ -193,20 +130,100 @@ 10 - + Custom_Command Trigger Reestablishment ofqot echo ci force_reestab | nc -N 127.0.0.1 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' - + + + Ping + Ping: 20pings + idefix + sabox-nepes + -c 20 -i0.5 -w25 + 80 + + + Custom_Command Verify Reestablishment ofqot echo ci get_reestab_count | nc -N 127.0.0.1 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' - + + Ping + Ping: 20pings in 20sec + idefix + sabox-nepes + -c 20 + 1 + 15 + + + + Detach_UE + true + Detach UE + idefix + + + + Attach_UE + Attach UE + idefix + + + + Ping + Ping: 100pings in 20sec + idefix + sabox-nepes + -c 100 -i 0.2 + 1 + 15 + + + + Detach_UE + true + Detach UE + idefix + + + + Attach_UE + Attach UE + idefix + + + + Ping + Ping: 20pings in 20sec + idefix + sabox-nepes + -c 20 + 1 + 15 + + + + Detach_UE + true + Detach UE + idefix + + + + Terminate_UE + true + Terminate Quectel + idefix + + + Undeploy_Object true Undeploy gNB @@ -216,7 +233,15 @@ 10,100,100,100 - + + Custom_Command + true + Enable Sleep States + ofqot + sudo cpupower idle-set -E + + + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -225,4 +250,3 @@ - diff --git a/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml b/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml index d0a65801a3..ce9e1121c3 100644 --- a/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml @@ -24,77 +24,34 @@ TEST-SA-FR1-F1-E1-B200 40 MHz TDD F1+E1 SA tasks - - 333333 - 300000 - 310000 - 800813 - 330101 - 310001 - 400001 - 350000 - 370003 - 370004 - 370002 - 360001 - 100002 - 360002 - 350000 - 410002 - 370012 - 400002 - 410003 - 370013 - 400003 - 410000 - 350000 - 400000 - 410001 - 350000 - 400001 - 310011 - 310002 - 330201 - 200000 - 222222 - - - + Pull_Local_Registry Pull Images from Local Registry ofqot oai-gnb oai-nr-cuup - + + Custom_Command + Disable Sleep States + ofqot + sudo cpupower idle-set -D 0 + + + Initialize_UE Initialize Quectel idefix - - Terminate_UE - true - Terminate Quectel - idefix - - - Attach_UE - Attach Quectel - idefix - - - Detach_UE - true - Detach Quectel - idefix - - + + Create_Workspace Create new Workspace ofqot - + + Deploy_Object Deploy gNB-CU-CP/gNB-CU-UP/gNB-DU (TDD/n76/40MHz/B200) ofqot @@ -102,21 +59,20 @@ gnb_cucp gnb_cuup gnb_du_tdd - - Custom_Command - Disable Sleep States - ofqot - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - ofqot - sudo cpupower idle-set -E + + Attach_UE + Attach Quectel + idefix - + + Custom_Command + Check UE is on dedicated BWP ID 1 + ofqot + echo ci get_current_bwp | nc -N 127.0.0.1 9091 | grep 'DL BWP ID 1 (dedicated) UL BWP ID 1 (dedicated)' + + + Ping Ping: 50pings in 10sec idefix @@ -126,89 +82,7 @@ 25 - - Custom_Command - Check UE is on dedicated BWP ID 1 - ofqot - echo ci get_current_bwp | nc -N 127.0.0.1 9091 | grep 'DL BWP ID 1 (dedicated) UL BWP ID 1 (dedicated)' - - - - Custom_Command - Switch to dedicated BWP ID 1 - ofqot - echo ci trigger_bwp_switch 1 | nc -N 127.0.0.1 9091 | grep 'triggered BWP switch to BWP ID 1 for UE' - - - - Custom_Command - Check UE is on initial BWP ID 0 - ofqot - echo ci get_current_bwp | nc -N 127.0.0.1 9091 | grep 'DL BWP ID 0 (initial) UL BWP ID 0 (initial)' - - - - Custom_Command - Switch to dedicated BWP ID 2 - ofqot - echo ci trigger_bwp_switch 2 | nc -N 127.0.0.1 9091 | grep 'triggered BWP switch to BWP ID 2 for UE' - - - - Iperf - iperf (DL/TCP)(10 sec)(single-ue profile) - -t 10 -R - idefix - sabox-nepes - 35 - - - - Custom_Command - Check UE is on dedicated BWP ID 2 - ofqot - echo ci get_current_bwp | nc -N 127.0.0.1 9091 | grep 'DL BWP ID 2 (dedicated) UL BWP ID 2 (dedicated)' - - - - Custom_Command - Switch to dedicated BWP ID 3 - ofqot - echo ci trigger_bwp_switch 3 | nc -N 127.0.0.1 9091 | grep 'triggered BWP switch to BWP ID 3 for UE' - - - - Iperf - iperf (DL/TCP)(10 sec)(single-ue profile) - -t 10 -R - idefix - sabox-nepes - 65 - - - - Custom_Command - Check UE is on dedicated BWP ID 3 - ofqot - echo ci get_current_bwp | nc -N 127.0.0.1 9091 | grep 'DL BWP ID 3 (dedicated) UL BWP ID 3 (dedicated)' - - - - Custom_Command - Switch to initial BWP ID 0 - ofqot - echo ci trigger_bwp_switch 0 | nc -N 127.0.0.1 9091 | grep 'triggered BWP switch to BWP ID 0 for UE' - - - - Iperf - iperf (BIDIR TCP)(20 sec)(single-ue profile) - -t 20 --bidir - idefix - sabox-nepes - - - + Iperf iperf (DL/TCP)(20 sec)(single-ue profile) -t 20 -R @@ -217,7 +91,7 @@ 140 - + Iperf iperf (UL/TCP)(20 sec)(single-ue profile) -t 20 @@ -226,20 +100,22 @@ 15 - + + Iperf + iperf (BIDIR TCP)(20 sec)(single-ue profile) + -t 20 --bidir + idefix + sabox-nepes + + + Custom_Command Trigger Reestablishment (on DU) ofqot echo ci force_reestab | nc -N 127.0.0.1 9091 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' - - Custom_Command - Verify Reestablishment (on CU) - ofqot - echo ci get_reestab_count | nc -N 127.0.0.1 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' - - + Ping Ping: 20pings idefix @@ -248,7 +124,132 @@ 80 - + + Custom_Command + Verify Reestablishment (on CU) + ofqot + echo ci get_reestab_count | nc -N 127.0.0.1 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' + + + + Ping + Ping: 50pings in 10sec + idefix + sabox-nepes + -c 20 -i 0.2 + 1 + 25 + + + + Custom_Command + Switch to dedicated BWP ID 2 + ofqot + echo ci trigger_bwp_switch 2 | nc -N 127.0.0.1 9091 | grep 'triggered BWP switch to BWP ID 2 for UE' + + + + Iperf + iperf (DL/TCP)(10 sec)(single-ue profile) + -t 10 -R + idefix + sabox-nepes + 35 + + + + Custom_Command + Check UE is on dedicated BWP ID 2 + ofqot + echo ci get_current_bwp | nc -N 127.0.0.1 9091 | grep 'DL BWP ID 2 (dedicated) UL BWP ID 2 (dedicated)' + + + + Custom_Command + Switch to dedicated BWP ID 3 + ofqot + echo ci trigger_bwp_switch 3 | nc -N 127.0.0.1 9091 | grep 'triggered BWP switch to BWP ID 3 for UE' + + + + Iperf + iperf (DL/TCP)(10 sec)(single-ue profile) + -t 10 -R + idefix + sabox-nepes + 65 + + + + Custom_Command + Check UE is on dedicated BWP ID 3 + ofqot + echo ci get_current_bwp | nc -N 127.0.0.1 9091 | grep 'DL BWP ID 3 (dedicated) UL BWP ID 3 (dedicated)' + + + + Custom_Command + Switch to initial BWP ID 0 + ofqot + echo ci trigger_bwp_switch 0 | nc -N 127.0.0.1 9091 | grep 'triggered BWP switch to BWP ID 0 for UE' + + + + Ping + Ping: 50pings in 10sec + idefix + sabox-nepes + -c 20 -i 0.2 + 1 + 25 + + + + Custom_Command + Check UE is on initial BWP ID 0 + ofqot + echo ci get_current_bwp | nc -N 127.0.0.1 9091 | grep 'DL BWP ID 0 (initial) UL BWP ID 0 (initial)' + + + + Custom_Command + Switch to dedicated BWP ID 1 + ofqot + echo ci trigger_bwp_switch 1 | nc -N 127.0.0.1 9091 | grep 'triggered BWP switch to BWP ID 1 for UE' + + + + Ping + Ping: 50pings in 10sec + idefix + sabox-nepes + -c 20 -i 0.2 + 1 + 25 + + + + Custom_Command + Check UE is on dedicated BWP ID 1 + ofqot + echo ci get_current_bwp | nc -N 127.0.0.1 9091 | grep 'DL BWP ID 1 (dedicated) UL BWP ID 1 (dedicated)' + + + + Detach_UE + true + Detach Quectel + idefix + + + + Terminate_UE + true + Terminate Quectel + idefix + + + Undeploy_Object true Undeploy CUCP/CU-UP/DU @@ -258,7 +259,15 @@ 10,100,100,100 - + + Custom_Command + true + Enable Sleep States + ofqot + sudo cpupower idle-set -E + + + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -267,4 +276,3 @@ - diff --git a/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml b/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml index 3ae295597f..35103d01e7 100644 --- a/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml @@ -24,85 +24,43 @@ TEST-SA-FR1-F1-B200 10 MHz FDD F1 SA tasks - - 111111 - 100000 - 110002 - 800813 - 130101 - 130102 - 100001 - 110000 - 110001 - 100001 - 150000 - 150001 - 110011 - 110001 - 150001 - 160001 - 100002 - 160002 - 150001 - 110011 - 110001 - 150000 - 170001 - 170000 - 170002 - 170003 - 170004 - 110011 - 110002 - 100001 - 130201 - 200000 - 222222 - - - + Pull_Local_Registry Pull Images from Local Registry ofqot oai-gnb - - Initialize_UE - Initialize Quectel - idefix + + Custom_Command + Disable Sleep States + ofqot + sudo cpupower idle-set -D 0 - + + Terminate_UE true Terminate Quectel idefix - - Attach_UE - Attach Quectel - idefix - - - Detach_UE - true - Detach Quectel - idefix - - + + Create_Workspace Create new Workspace ofqot - + + Deploy_Object Deploy gNB-CU in a container ofqot ci-scripts/yaml_files/sa_f1_b200_gnb gnb_cu - + + Deploy_Object Deploy gNB-DU (FDD/Band1/10MHz/B200) in a container ofqot @@ -110,36 +68,31 @@ gnb_du_fdd - - Custom_Command - Disable Sleep States - ofqot - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - ofqot - sudo cpupower idle-set -E - - - + IdleSleep Sleep 5 - - Ping - Ping: 20pings + + Initialize_UE + Initialize Quectel idefix - sabox-nepes - -c 20 -i0.5 -w25 - 80 - + + Attach_UE + Attach Quectel + idefix + + + + IdleSleep + Sleep + 5 + + + Ping Ping: 20pings in 20sec idefix @@ -149,7 +102,7 @@ 25 - + Ping Ping: 100pings in 20sec idefix @@ -159,37 +112,86 @@ 110 - + + Detach_UE + true + Detach Quectel + idefix + + + + Attach_UE + Attach Quectel + idefix + + + + Ping + Ping: 100pings in 20sec + idefix + sabox-nepes + -c 100 -i 0.2 + 1 + 110 + + + + Custom_Command + Trigger Reestablishment (on DU) + ofqot + echo ci force_reestab | nc -N 127.0.0.1 9091 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' + + + + Ping + Ping: 20pings + idefix + sabox-nepes + -c 20 -i0.5 -w25 + 80 + + + + Custom_Command + Verify Reestablishment (on CU) + ofqot + echo ci get_reestab_count | nc -N 127.0.0.1 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' + + + + Ping + Ping: 100pings in 20sec + idefix + sabox-nepes + -c 100 -i 0.2 + 1 + 110 + + + + Detach_UE + true + Detach Quectel + idefix + + + + Attach_UE + Attach Quectel + idefix + + + Ping Ping: 20pings in 20sec idefix sabox-nepes -c 20 1 - 110 + 25 - - Ping - Ping: 100pings in 20sec - idefix - sabox-nepes - -c 100 -i 0.2 - 1 - 110 - - - - Iperf - iperf (DL/50Mbps/UDP)(30 sec) - -u -b 50M -t 30 -R - idefix - sabox-nepes - 10 - 95 - - - + Iperf iperf (UL/25Mbps/UDP)(30 sec) -u -b 25M -t 30 @@ -199,7 +201,17 @@ 95 - + + Iperf + iperf (DL/50Mbps/UDP)(30 sec) + -u -b 50M -t 30 -R + idefix + sabox-nepes + 10 + 95 + + + Iperf iperf (BIDIR TCP)(60 sec)(single-ue profile) -t 60 --bidir @@ -207,7 +219,7 @@ sabox-nepes - + Iperf iperf (DL/TCP)(30 sec)(single-ue profile) -t 30 -R @@ -216,7 +228,7 @@ 45 - + Iperf iperf (UL/TCP)(30 sec)(single-ue profile) -t 30 @@ -225,20 +237,27 @@ 25 - - Custom_Command - Trigger Reestablishment (on DU) - ofqot - echo ci force_reestab | nc -N 127.0.0.1 9091 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' - - - Custom_Command - Verify Reestablishment (on CU) - ofqot - echo ci get_reestab_count | nc -N 127.0.0.1 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' + + Detach_UE + true + Detach Quectel + idefix - + + Terminate_UE + true + Terminate Quectel + idefix + + + + IdleSleep + Sleep + 5 + + + Undeploy_Object true Undeploy CU-DU @@ -248,7 +267,15 @@ 10,100,100,100 - + + Custom_Command + true + Enable Sleep States + ofqot + sudo cpupower idle-set -E + + + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -257,4 +284,3 @@ - diff --git a/ci-scripts/xml_files/container_sa_f1_ho_b210_quectel.xml b/ci-scripts/xml_files/container_sa_f1_ho_b210_quectel.xml index 07a5c5f401..ff36947a57 100644 --- a/ci-scripts/xml_files/container_sa_f1_ho_b210_quectel.xml +++ b/ci-scripts/xml_files/container_sa_f1_ho_b210_quectel.xml @@ -24,79 +24,47 @@ TEST-F1-HO-B210 F1 Handover 20 MHz TDD SA tasks - - 000001 - 000002 - 000003 - 000004 - 000005 - 000006 - 000007 - 000008 - 000009 - 000010 - 000011 - 000012 - 000013 - 000014 - 000015 - 000016 - 000017 - 000018 - 000019 - 000020 - 000021 - 000022 - 000023 - 000024 - 000025 - 000026 - 000027 - 000028 - - - - + DeployCoreNetwork Initialize 5G Core oc-cn5g-00103-ho - + Pull_Local_Registry Pull Images from Local Registry oai-gnb groot - + Pull_Local_Registry Pull Images from Local Registry oai-gnb rocket - + Create_Workspace Create new Workspace for groot groot - + Create_Workspace Create new Workspace on rocket rocket - + Custom_Command Set attenuator to 0 for DU0 and 17 for DU1 rocket python3 %%workspace%%/ci-scripts/attenuatorctl.py -s 1,2 0 -s 3,4 25 - + Deploy_Object Deploy gNB-CU in a container ci-scripts/yaml_files/5g_sa_f1_b210_ho @@ -104,7 +72,7 @@ oai-cu - + Deploy_Object Deploy gNB-DU0 (TDD/Band77/20MHz/B210) in a container ci-scripts/yaml_files/5g_sa_f1_b210_ho @@ -112,7 +80,7 @@ groot - + Deploy_Object Deploy gNB-DU1 (TDD/Band77/20MHz/B210) in a container ci-scripts/yaml_files/5g_sa_f1_b210_ho @@ -120,13 +88,13 @@ oai-du1 - + Attach_UE Attach Quectel raspix - + Ping Ping: 100pings in 20sec raspix @@ -135,20 +103,20 @@ 5 - + IdleSleep Sleep 5 - + Custom_Command Attenuate DU0 by 15 and remove the attenuation on DU1 to trigger Handover rocket python3 %%workspace%%/ci-scripts/attenuatorctl.py -r 1,2 15 -r 3,4 0 -d 5 - + Ping Ping: 50pings in 10sec raspix @@ -157,21 +125,21 @@ 5 - + Custom_Command UE connected to DU1? groot echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3585" - - Custom_Command + + Custom_Command Attenuate DU1 by 17dB and remove attenuation on DU0 to trigger Handover rocket python3 %%workspace%%/ci-scripts/attenuatorctl.py -r 1,2 0 -r 3,4 25 -d 5 - + Ping Ping: 50pings in 10sec raspix @@ -180,21 +148,21 @@ 5 - + Custom_Command UE connected to DU0? groot echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3584" - - Custom_Command + + Custom_Command Attenuate DU0 by 15 and remove the attenuation on DU1 to trigger Handover rocket python3 %%workspace%%/ci-scripts/attenuatorctl.py -r 1,2 15 -r 3,4 0 -d 5 - + Ping Ping: 50pings in 10sec raspix @@ -203,21 +171,21 @@ 5 - + Custom_Command UE connected to DU1? groot echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3585" - + Detach_UE true Detach Quectel raspix - + Undeploy_Object true Undeploy CU-DU0 @@ -225,23 +193,23 @@ ci-scripts/yaml_files/5g_sa_f1_b210_ho - + Undeploy_Object true - Undeploy DU1 + Undeploy DU1 rocket ci-scripts/yaml_files/5g_sa_f1_b210_ho - - Custom_Command + + Custom_Command Reset all channels on the attenuator to 0 rocket python3 %%workspace%%/ci-scripts/attenuatorctl.py -s 1-4 0 true - + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -249,7 +217,7 @@ oai-gnb - + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -257,7 +225,7 @@ oai-gnb - + UndeployCoreNetwork true Terminate 5G Core @@ -265,4 +233,3 @@ - diff --git a/ci-scripts/xml_files/container_sa_fhi72_metanoia_up2_2x2.xml b/ci-scripts/xml_files/container_sa_fhi72_metanoia_up2_2x2.xml index 979aabbc5e..3129883744 100644 --- a/ci-scripts/xml_files/container_sa_fhi72_metanoia_up2_2x2.xml +++ b/ci-scripts/xml_files/container_sa_fhi72_metanoia_up2_2x2.xml @@ -24,60 +24,41 @@ test-5g-fhi72-metanoia-2x2 100 MHz TDD SA METANOIA tasks - - 200000 - 110000 - 800813 - 120000 - 102000 - 102001 - 100100 - 100010 - 100020 - 100030 - 100040 - 103000 - 100002 - 130000 - 777777 - 888888 - - - + Custom_Script Setup sriov and network interfaces Metanoia cacofonix - + Pull_Local_Registry Pull Images from Local Registry cacofonix oai-gnb-fhi72 - + Create_Workspace Create new Workspace for server 0 cacofonix - + Deploy_Object Deploy gNB (TDD/Band78/100MHz/Metanoia) in a container cacofonix ci-scripts/yaml_files/sa_fhi_7.2_metanoia_2x2_gnb - + Attach_UE Attach UE up2-fhi72 - + Ping Ping: 100 pings in 10 sec up2-fhi72 @@ -87,7 +68,7 @@ 15 - + Iperf iperf (DL/570Mbps/UDP)(30 sec) -u -b 570M -t 30 -R @@ -98,16 +79,7 @@ oc-cn5g-20897 - - Iperf - iperf (DL/TCP)(30 sec) - -t 30 -R - up2-fhi72 - 80 - oc-cn5g-20897 - - - + Iperf iperf (UL/100Mbps/UDP)(30 sec) -u -b 100M -t 30 @@ -118,7 +90,16 @@ oc-cn5g-20897 - + + Iperf + iperf (DL/TCP)(30 sec) + -t 30 -R + up2-fhi72 + 80 + oc-cn5g-20897 + + + Iperf iperf (UL/TCP)(30 sec) -t 30 @@ -127,20 +108,20 @@ oc-cn5g-20897 - + Detach_UE true Detach UE up2-fhi72 - + IdleSleep Sleep 5 - + Undeploy_Object true Undeploy gNB @@ -148,7 +129,7 @@ ci-scripts/yaml_files/sa_fhi_7.2_metanoia_2x2_gnb - + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -156,7 +137,7 @@ oai-gnb-fhi72 - + Custom_Script true Set CPU to idle state, set kernel parameters to default values diff --git a/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2.xml b/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2.xml index b8df43ef52..c02a12deac 100644 --- a/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2.xml +++ b/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2.xml @@ -24,59 +24,41 @@ test-5g-fhi72-vvdn 100 MHz TDD SA VVDN tasks - - 200000 - 110000 - 800813 - 120000 - 102000 - 102001 - 100100 - 100010 - 100020 - 100030 - 100040 - 100011 - 103000 - 100002 - 130000 - 777777 - 888888 - - - + Custom_Script Setup sriov and network interfaces VVDN cacofonix - + Pull_Local_Registry Pull Images from Local Registry cacofonix oai-gnb-fhi72 - + + Create_Workspace Create new Workspace for server 0 cacofonix - + + Deploy_Object Deploy gNB (TDD/Band78/100MHz/VVDN) in a container cacofonix ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb - + Attach_UE Attach UE up2-fhi72 - + Ping Ping: 100 pings in 10 sec up2-fhi72 @@ -86,7 +68,7 @@ 15 - + Iperf iperf (DL/600Mbps/UDP)(30 sec) -u -b 600M -t 30 -R @@ -97,27 +79,7 @@ oc-cn5g-20897 - - Iperf - Optional iperf (DL/700Mbps/UDP)(30 sec) - true - -u -b 700M -t 30 -R - up2-fhi72 - 10 - 95 - oc-cn5g-20897 - - - - Iperf - iperf (DL/TCP)(30 sec) - -t 30 -R - up2-fhi72 - 40 - oc-cn5g-20897 - - - + Iperf iperf (UL/80Mbps/UDP)(30 sec) -u -b 80M -t 30 @@ -128,7 +90,16 @@ oc-cn5g-20897 - + + Iperf + iperf (DL/TCP)(30 sec) + -t 30 -R + up2-fhi72 + 40 + oc-cn5g-20897 + + + Iperf iperf (UL/TCP)(30 sec) -t 30 @@ -137,20 +108,31 @@ oc-cn5g-20897 - + + Iperf + Optional iperf (DL/700Mbps/UDP)(30 sec) + true + -u -b 700M -t 30 -R + up2-fhi72 + 10 + 95 + oc-cn5g-20897 + + + Detach_UE true Detach UE up2-fhi72 - + IdleSleep Sleep 5 - + Undeploy_Object true Undeploy gNB @@ -158,7 +140,7 @@ ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb - + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -166,7 +148,7 @@ oai-gnb-fhi72 - + Custom_Script true Set CPU to idle state, set kernel parameters to default values @@ -174,5 +156,4 @@ - diff --git a/ci-scripts/xml_files/container_sa_n2_ho_b210_quectel.xml b/ci-scripts/xml_files/container_sa_n2_ho_b210_quectel.xml index 46707f70b4..84c5a5bea5 100644 --- a/ci-scripts/xml_files/container_sa_n2_ho_b210_quectel.xml +++ b/ci-scripts/xml_files/container_sa_n2_ho_b210_quectel.xml @@ -24,73 +24,47 @@ TEST-MONO-N2-HO-B210 Monolithic N2 Handover 20 MHz TDD SA tasks - - 000001 - 000002 - 000023 - 000003 - 000004 - 000005 - 000006 - 000007 - 000008 - 000009 - 000010 - 000011 - 000012 - 000013 - 000014 - 000015 - 000017 - 000018 - 000019 - 000016 - 000020 - 000021 - 000022 - - - - + + DeployCoreNetwork Initialize 5G Core oc-cn5g-00103-ho - + Pull_Local_Registry Pull Images from Local Registry oai-gnb groot - + Pull_Local_Registry Pull Images from Local Registry oai-gnb rocket - + Create_Workspace Create new Workspace for groot groot - - Create_Workspace - Create new Workspace on rocket - rocket - - - + Custom_Command Set initial attenuation on target gNB rocket python3 %%workspace%%/ci-scripts/attenuatorctl.py -s 1,2 0 -s 3,4 25 - + + Create_Workspace + Create new Workspace for rocket + rocket + + + Deploy_Object Deploy Monolithic gNB-PCI0 (TDD/Band77/20MHz/B210) in a container ci-scripts/yaml_files/5g_sa_n2_ho_b210 @@ -98,7 +72,7 @@ oai-gnb-pci0 - + Deploy_Object Deploy Monolithic gNB-PCI1 (TDD/Band77/20MHz/B210) in a container ci-scripts/yaml_files/5g_sa_n2_ho_b210 @@ -106,13 +80,13 @@ oai-gnb-pci1 - + Attach_UE Attach Quectel raspix - + Ping Ping: 100pings in 20sec raspix @@ -121,20 +95,20 @@ 5 - + IdleSleep Sleep 5 - + Custom_Command Gradually attenuate gNB-PCI0 (ch1-2=15dB) and gNB-PCI1 (ch3-4=0dB) over 5s to trigger N2 Handover to gNB-PCI1 rocket python3 %%workspace%%/ci-scripts/attenuatorctl.py -r 1,2 15 -r 3,4 0 -d 5 - + Ping Ping: 50pings in 10sec raspix @@ -143,21 +117,21 @@ 5 - + Custom_Command UE connected to gNB-PCI1? rocket echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3585" - + Custom_Command Gradually attenuate gNB-PCI0 (ch1-2=0dB) and gNB-PCI1 (ch3-4=15dB) over 5s to trigger N2 Handover back to gNB-PCI0 rocket python3 %%workspace%%/ci-scripts/attenuatorctl.py -r 1,2 0 -r 3,4 25 -d 5 - + Ping Ping: 50pings in 10sec raspix @@ -166,29 +140,21 @@ 5 - + Custom_Command UE connected to gNB-PCI0? groot echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3584" - - Custom_Command - true - Reset all attenuators to 0dB - rocket - python3 %%workspace%%/ci-scripts/attenuatorctl.py -s 1-4 0 - - - + Detach_UE true Detach Quectel raspix - + Undeploy_Object true Undeploy Monolithic gNB-PCI0 @@ -196,7 +162,7 @@ ci-scripts/yaml_files/5g_sa_n2_ho_b210 - + Undeploy_Object true Undeploy Monolithic gNB-PCI1 @@ -204,7 +170,15 @@ ci-scripts/yaml_files/5g_sa_n2_ho_b210 - + + Custom_Command + true + Reset all attenuators to 0dB + rocket + python3 %%workspace%%/ci-scripts/attenuatorctl.py -s 1-4 0 + + + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -212,7 +186,7 @@ oai-gnb - + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -220,7 +194,7 @@ oai-gnb - + UndeployCoreNetwork true Terminate 5G Core diff --git a/ci-scripts/xml_files/container_sa_n310_2X2_100MHz_quectel.xml b/ci-scripts/xml_files/container_sa_n310_2X2_100MHz_quectel.xml index ad98afcd32..0c3cd35b2f 100644 --- a/ci-scripts/xml_files/container_sa_n310_2X2_100MHz_quectel.xml +++ b/ci-scripts/xml_files/container_sa_n310_2X2_100MHz_quectel.xml @@ -24,65 +24,35 @@ TEST-SA-FR1-N310-2x2-100MHz 100 MHz TDD SA 2x2 tasks - - 100000 - 111111 - 010010 - 800813 - 040101 - 010001 - 051001 - 071100 - 071101 - 071002 - 010010 - 000001 - 040201 - 200000 - 033333 - - - - Pull_Cluster_Image - Pull Images from Cluster - oai-gnb - matix - - - + Custom_Command Disable Sleep States matix sudo cpupower idle-set -D 0 - - Custom_Command - true - Enable Sleep States + + Pull_Cluster_Image + Pull Images from Cluster + oai-gnb matix - sudo cpupower idle-set -E - - Attach_UE - Attach UE - up2 - - - + Detach_UE true Detach UE up2 - + + Create_Workspace Create new Workspace matix - + + Deploy_Object Deploy gNB (TDD/Band77/100MHz/N310) in a container matix @@ -90,19 +60,13 @@ 3 - - IdleSleep - Sleep - 5 + + Attach_UE + Attach UE + up2 - - IdleSleep - Sleep - 10 - - - + Ping Ping: 100pings in 20sec up2 @@ -112,7 +76,7 @@ 15 - + Iperf iperf (DL/650Mbps/UDP)(30 sec)(single-ue profile) -u -b 650M -t 30 -R -O 10 -l 9000 @@ -122,7 +86,7 @@ 70 - + Iperf iperf (UL/130Mbps/UDP)(30 sec)(single-ue profile) -u -b 130M -t 30 -O 10 @@ -132,7 +96,7 @@ 70 - + Iperf iperf (BIDIR TCP)(30 sec)(single-ue profile) -t 30 --bidir @@ -140,7 +104,20 @@ up2 - + + Detach_UE + true + Detach UE + up2 + + + + IdleSleep + Sleep + 5 + + + Undeploy_Object true Undeploy gNB @@ -150,7 +127,15 @@ 10,100,100,100 - + + Custom_Command + true + Enable Sleep States + matix + sudo cpupower idle-set -E + + + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -159,4 +144,3 @@ - diff --git a/ci-scripts/xml_files/container_sa_n310_2X2_60MHz_quectel.xml b/ci-scripts/xml_files/container_sa_n310_2X2_60MHz_quectel.xml index a809fafa2c..5d1b3dcd95 100644 --- a/ci-scripts/xml_files/container_sa_n310_2X2_60MHz_quectel.xml +++ b/ci-scripts/xml_files/container_sa_n310_2X2_60MHz_quectel.xml @@ -24,85 +24,49 @@ TEST-SA-FR1-N310-2x2-60MHz 60 MHz 2x2 TDD SA DSUUU tasks - - 100000 - 111111 - 010010 - 800813 - 030101 - 010001 - 050001 - 071000 - 071001 - 070002 - 010010 - 000001 - 030201 - 200000 - 333333 - - - - Pull_Cluster_Image - Pull Images from Cluster - oai-gnb - matix - - - + Custom_Command Disable Sleep States matix sudo cpupower idle-set -D 0 - - Custom_Command - true - Enable Sleep States + + Pull_Cluster_Image + Pull Images from Cluster + oai-gnb matix - sudo cpupower idle-set -E - - Attach_UE - Attach UE - up2 - - - + Detach_UE true Detach UE up2 - - Create_Workspace - Create new Workspace - matix - - - Deploy_Object - Deploy gNB (TDD/Band77/60MHz/N310) in a container - matix - ci-scripts/yaml_files/5g_sa_n310_2x2_60MHz - 3 + + + Create_Workspace + Create new Workspace + matix - - IdleSleep - Sleep - 5 + + Deploy_Object + Deploy gNB (TDD/Band77/60MHz/N310) in a container + matix + ci-scripts/yaml_files/5g_sa_n310_2x2_60MHz + 3 - - IdleSleep - Sleep - 10 + + Attach_UE + Attach UE + up2 - + Ping Ping: 100pings in 20sec up2 @@ -112,7 +76,7 @@ 15 - + Iperf iperf (DL/150Mbps/UDP)(30 sec)(single-ue profile) -u -b 150M -t 30 -R @@ -122,7 +86,7 @@ 80 - + Iperf iperf (UL/250Mbps/UDP)(30 sec)(single-ue profile) -u -b 250M -t 30 @@ -132,7 +96,7 @@ 70 - + Iperf iperf (BIDIR TCP)(30 sec)(single-ue profile) -t 30 --bidir @@ -140,7 +104,20 @@ up2 - + + Detach_UE + true + Detach UE + up2 + + + + IdleSleep + Sleep + 5 + + + Undeploy_Object true Undeploy gNB @@ -150,7 +127,15 @@ 20,100,100,100 - + + Custom_Command + true + Enable Sleep States + matix + sudo cpupower idle-set -E + + + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -159,4 +144,3 @@ - diff --git a/ci-scripts/xml_files/container_sa_n310_4X4_60MHz_quectel.xml b/ci-scripts/xml_files/container_sa_n310_4X4_60MHz_quectel.xml index d4d0d51258..45d105de9e 100644 --- a/ci-scripts/xml_files/container_sa_n310_4X4_60MHz_quectel.xml +++ b/ci-scripts/xml_files/container_sa_n310_4X4_60MHz_quectel.xml @@ -24,85 +24,49 @@ TEST-SA-FR1-N310-4x4-60MHz nFAPI 60 MHz 4x4 TDD SA tasks - - 100000 - 111111 - 010010 - 800813 - 030101 - 010001 - 050001 - 071000 - 071001 - 070002 - 010010 - 000001 - 030201 - 200000 - 333333 - - - - Pull_Cluster_Image - Pull Images from Cluster - oai-gnb - matix - - - + Custom_Command Disable Sleep States matix sudo cpupower idle-set -D 0 - - Custom_Command - true - Enable Sleep States + + Pull_Cluster_Image + Pull Images from Cluster + oai-gnb matix - sudo cpupower idle-set -E - - Attach_UE - Attach UE - up2 - - - + Detach_UE true Detach UE up2 - - Create_Workspace - Create new Workspace - matix - - - Deploy_Object - Deploy VNF-PNF (TDD/Band77/60MHz/N310) in a container - matix - ci-scripts/yaml_files/5g_sa_n310_4x4_60MHz - 3 + + + Create_Workspace + Create new Workspace + matix - - IdleSleep - Sleep - 5 + + Deploy_Object + Deploy VNF-PNF (TDD/Band77/60MHz/N310) in a container + matix + ci-scripts/yaml_files/5g_sa_n310_4x4_60MHz + 3 - - IdleSleep - Sleep - 10 + + Attach_UE + Attach UE + up2 - + Ping Ping: 100pings in 20sec up2 @@ -112,7 +76,7 @@ 15 - + Iperf iperf (DL/450Mbps/UDP)(30 sec)(single-ue profile) -u -b 450M -t 30 -R @@ -122,7 +86,7 @@ 80 - + Iperf iperf (UL/120Mbps/UDP)(30 sec)(single-ue profile) -u -b 120M -t 30 @@ -132,7 +96,7 @@ 70 - + Iperf iperf (BIDIR TCP)(30 sec)(single-ue profile) -t 30 --bidir @@ -140,7 +104,20 @@ up2 - + + Detach_UE + true + Detach UE + up2 + + + + IdleSleep + Sleep + 5 + + + Undeploy_Object true Undeploy VNF-PNF @@ -150,7 +127,15 @@ 10,100,100,100 - + + Custom_Command + true + Enable Sleep States + matix + sudo cpupower idle-set -E + + + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -159,4 +144,3 @@ - diff --git a/ci-scripts/xml_files/container_sa_n310_nrue.xml b/ci-scripts/xml_files/container_sa_n310_nrue.xml index 63088afc1c..64311b06cd 100644 --- a/ci-scripts/xml_files/container_sa_n310_nrue.xml +++ b/ci-scripts/xml_files/container_sa_n310_nrue.xml @@ -24,110 +24,62 @@ TEST-5G-NRUE 40 MHz TDD SA tasks - - 060000 - 010000 010001 - 800813 - 020000 - 800814 - 020001 - 000001 - 001000 - 002000 - 000100 - 000200 - 040001 040000 - 333333 - 444444 - 060001 - - - + DeployCoreNetwork Initialize 5G Core oc-cn5g - + Pull_Cluster_Image Pull Images from Cluster oai-gnb avra - + Pull_Cluster_Image Pull Images from Cluster oai-nr-ue caracal - - Custom_Command - Reboot USRP N310 - avra - ssh root@192.168.80.52 reboot ; sleep 45 - - - - Custom_Command - Reboot USRP N310 - caracal - ssh root@192.168.20.2 reboot ; sleep 45 - - + Create_Workspace Create new Workspace avra - + + Deploy_Object Deploy gNB (TDD/Band78/40MHz/N310) in a container avra ci-scripts/yaml_files/5g_sa_n310_gnb 3 - + + Create_Workspace Create new Workspace caracal - + + Deploy_Object Deploy nrUE (TDD/Band78/40MHz/N310) in a container ci-scripts/yaml_files/5g_sa_n310_nrue caracal 3 - - + + Attach_UE Attach OAIUE oai_ue_caracal - - Iperf - iperf (DL/60Mbps/UDP)(30 sec) - -u -b 60M -t 30 -i 1 -R - oai_ue_caracal - oc-cn5g - 25 - 80 - - - - Iperf - iperf (UL/20Mbps/UDP)(30 sec) - -u -b 20M -t 30 -i 1 - oai_ue_caracal - oc-cn5g - 25 - 80 - - - + Ping Ping: 20pings in 20sec oai_ue_caracal @@ -137,7 +89,7 @@ 25 - + Ping Ping: 100pings in 20sec oai_ue_caracal @@ -147,7 +99,35 @@ 30 - + + Iperf + iperf (DL/60Mbps/UDP)(30 sec) + -u -b 60M -t 30 -i 1 -R + oai_ue_caracal + oc-cn5g + 25 + 80 + + + + Iperf + iperf (UL/20Mbps/UDP)(30 sec) + -u -b 20M -t 30 -i 1 + oai_ue_caracal + oc-cn5g + 25 + 80 + + + + Undeploy_Object + true + Undeploy nr UE + caracal + ci-scripts/yaml_files/5g_sa_n310_nrue + + + Undeploy_Object true Undeploy gNB @@ -156,16 +136,8 @@ 20,100,100,100 20,100,100,100 - - - Undeploy_Object - true - Undeploy nr UE - caracal - ci-scripts/yaml_files/5g_sa_n310_nrue - - + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -173,7 +145,7 @@ oai-gnb - + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -181,7 +153,7 @@ oai-nr-ue - + UndeployCoreNetwork Terminate 5G Core true diff --git a/ci-scripts/xml_files/container_sa_n310_nrue_longrun.xml b/ci-scripts/xml_files/container_sa_n310_nrue_longrun.xml index f0d8f4f3b6..6241a9d78d 100644 --- a/ci-scripts/xml_files/container_sa_n310_nrue_longrun.xml +++ b/ci-scripts/xml_files/container_sa_n310_nrue_longrun.xml @@ -24,60 +24,34 @@ LONGRUN-5G-NRUE Longrun 40 MHz TDD SA tasks - - 060000 - 010000 010001 - 800813 - 020000 - 800814 - 020001 - 000001 - 001000 - 000100 - 001000 - 000100 - 001000 - 000100 - 001000 - 000200 - 001000 - 000200 - 001000 - 000200 - 040001 040000 - 333333 - 444444 - 060001 - - - + DeployCoreNetwork Initialize 5G Core oc-cn5g - + Pull_Cluster_Image Pull Images from Cluster oai-gnb avra - + Pull_Cluster_Image Pull Images from Cluster oai-nr-ue caracal - + Create_Workspace Create new Workspace avra - + Deploy_Object Deploy gNB (TDD/Band78/40MHz/N310) in a container avra @@ -85,13 +59,13 @@ 3 - + Create_Workspace Create new Workspace caracal - + Deploy_Object Deploy nrUE (TDD/Band78/40MHz/N310) in a container ci-scripts/yaml_files/5g_sa_n310_nrue @@ -99,33 +73,13 @@ 3 - + Attach_UE Attach OAIUE oai_ue_caracal - - Iperf - iperf (DL/10Mbps/UDP)(10 min) - -u -b 10M -t 600 -i 1 -R - oai_ue_caracal - oc-cn5g - 25 - 80 - - - - Iperf - iperf (UL/2Mbps/UDP)(10 min) - -u -b 2M -t 600 -i 1 - oai_ue_caracal - oc-cn5g - 25 - 80 - - - + Ping Ping: 20pings in 20sec oai_ue_caracal @@ -135,7 +89,125 @@ 25 - + + Iperf + iperf (DL/10Mbps/UDP)(10 min) + -u -b 10M -t 600 -i 1 -R + oai_ue_caracal + oc-cn5g + 25 + 80 + + + + Ping + Ping: 20pings in 20sec + oai_ue_caracal + oc-cn5g + -c 20 + 1 + 25 + + + + Iperf + iperf (DL/10Mbps/UDP)(10 min) + -u -b 10M -t 600 -i 1 -R + oai_ue_caracal + oc-cn5g + 25 + 80 + + + + Ping + Ping: 20pings in 20sec + oai_ue_caracal + oc-cn5g + -c 20 + 1 + 25 + + + + Iperf + iperf (DL/10Mbps/UDP)(10 min) + -u -b 10M -t 600 -i 1 -R + oai_ue_caracal + oc-cn5g + 25 + 80 + + + + Ping + Ping: 20pings in 20sec + oai_ue_caracal + oc-cn5g + -c 20 + 1 + 25 + + + + Iperf + iperf (UL/2Mbps/UDP)(10 min) + -u -b 2M -t 600 -i 1 + oai_ue_caracal + oc-cn5g + 25 + 80 + + + + Ping + Ping: 20pings in 20sec + oai_ue_caracal + oc-cn5g + -c 20 + 1 + 25 + + + + Iperf + iperf (UL/2Mbps/UDP)(10 min) + -u -b 2M -t 600 -i 1 + oai_ue_caracal + oc-cn5g + 25 + 80 + + + + Ping + Ping: 20pings in 20sec + oai_ue_caracal + oc-cn5g + -c 20 + 1 + 25 + + + + Iperf + iperf (UL/2Mbps/UDP)(10 min) + -u -b 2M -t 600 -i 1 + oai_ue_caracal + oc-cn5g + 25 + 80 + + + + Undeploy_Object + true + Undeploy nr UE + caracal + ci-scripts/yaml_files/5g_sa_n310_nrue + + + Undeploy_Object true Undeploy gNB @@ -145,15 +217,7 @@ 20,100,100,100 - - Undeploy_Object - true - Undeploy nr UE - caracal - ci-scripts/yaml_files/5g_sa_n310_nrue - - - + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -161,7 +225,7 @@ oai-gnb - + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -169,7 +233,7 @@ oai-nr-ue - + UndeployCoreNetwork Terminate 5G Core true diff --git a/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml b/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml index d687120eb9..82cb032372 100644 --- a/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml @@ -24,104 +24,47 @@ TEST-SA-FR1-SC-PATTERN2-FDMA-B200 40 MHz TDD (pattern2) SA with SC-FDMA tasks - - 300000 - 311111 - 210000 - 800813 - 230101 - 210001 - 250000 - 250001 - 270000 - 270001 - 270002 - 270003 - 270004 - 260001 - 200002 - 260002 - 250000 - 210010 - 210002 - 230201 - 400000 - 222222 - - - + + Custom_Command + Disable Sleep States + ofqot + sudo cpupower idle-set -D 0 + + + Pull_Local_Registry Pull Images from Local Registry ofqot oai-gnb - - Custom_Command - Disable Sleep States - ofqot - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - ofqot - sudo cpupower idle-set -E - - - + Initialize_UE Initialize Quectel idefix - - Terminate_UE - true - Terminate Quectel - idefix - - - Attach_UE - Attach UE - idefix - - - Detach_UE - true - Detach UE - idefix - - + + Create_Workspace Create new Workspace ofqot - + + Deploy_Object Deploy gNB (TDD/pattern2/Band78/40MHz/B200) with SC-FDMA in a container ofqot ci-scripts/yaml_files/sa_sc_b200_gnb - - IdleSleep - Sleep - 5 - - - - Ping - Ping: 20pings + + Attach_UE + Attach UE idefix - sabox-nepes - -c 20 -i0.5 -w25 - 80 - - + Ping Ping: 20pings in 20sec idefix @@ -131,7 +74,7 @@ 15 - + Ping Ping: 100pings in 20sec idefix @@ -141,7 +84,7 @@ 15 - + Iperf iperf (DL/80Mbps/UDP)(30 sec)(single-ue profile) -u -b 80M -t 30 -R @@ -151,7 +94,7 @@ 95 - + Iperf iperf (UL/18Mbps/UDP)(30 sec) -u -b 18M -t 30 @@ -161,7 +104,7 @@ 95 - + Iperf iperf (BIDIR TCP)(10 sec)(single-ue profile) -t 10 --bidir @@ -169,7 +112,7 @@ sabox-nepes - + Iperf iperf (DL/TCP)(30 sec)(single-ue profile) -t 30 -R @@ -178,7 +121,7 @@ 35 - + Iperf iperf (UL/TCP)(30 sec)(single-ue profile) -t 30 @@ -187,20 +130,54 @@ 5 - + Custom_Command Trigger Reestablishment ofqot echo ci force_reestab | nc -N 127.0.0.1 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' - + + + Ping + Ping: 20pings + idefix + sabox-nepes + -c 20 -i0.5 -w25 + 80 + + + Custom_Command Verify Reestablishment ofqot echo ci get_reestab_count | nc -N 127.0.0.1 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' - + + Ping + Ping: 20pings in 20sec + idefix + sabox-nepes + -c 20 + 1 + 15 + + + + Detach_UE + true + Detach UE + idefix + + + + Terminate_UE + true + Terminate Quectel + idefix + + + Undeploy_Object true Undeploy gNB @@ -210,7 +187,15 @@ 10,100,100,100 - + + Custom_Command + true + Enable Sleep States + ofqot + sudo cpupower idle-set -E + + + Clean_Test_Server_Images true Clean Test Images on Test Server @@ -219,4 +204,3 @@ - diff --git a/ci-scripts/xml_files/cppcheck.xml b/ci-scripts/xml_files/cppcheck.xml index daab4e01c2..7464f16a20 100644 --- a/ci-scripts/xml_files/cppcheck.xml +++ b/ci-scripts/xml_files/cppcheck.xml @@ -21,23 +21,20 @@ --> - build-tab - CPPCHECK Analysis - wrench - - 000002 - 000001 - - - - Create_Workspace - Create new Workspace - carabe - - - Cppcheck_Analysis - Static Code Analysis with cppcheck - carabe - + build-tab + CPPCHECK Analysis + wrench + + + Create_Workspace + Create new Workspace + carabe + + + + Cppcheck_Analysis + Static Code Analysis with cppcheck + carabe + diff --git a/ci-scripts/xml_files/formatting_check.xml b/ci-scripts/xml_files/formatting_check.xml index e54ee1973e..a2b6ddd39c 100644 --- a/ci-scripts/xml_files/formatting_check.xml +++ b/ci-scripts/xml_files/formatting_check.xml @@ -21,18 +21,14 @@ --> - formatting-tab - License and Formatting Checks - wrench - - 000002 - - + formatting-tab + License and Formatting Checks + wrench - - LicenceAndFormattingCheck - License and Formatting Checks - obelix - + + LicenceAndFormattingCheck + License and Formatting Checks + obelix + diff --git a/ci-scripts/xml_files/fr1_5gc_closure.xml b/ci-scripts/xml_files/fr1_5gc_closure.xml index fa524a60aa..3f31d5df55 100644 --- a/ci-scripts/xml_files/fr1_5gc_closure.xml +++ b/ci-scripts/xml_files/fr1_5gc_closure.xml @@ -21,18 +21,14 @@ --> - 5gc-closure - 5GC-Closure - log-out - -060000 - - + 5gc-closure + 5GC-Closure + log-out - - UndeployCoreNetwork - Terminate 5GC - sabox-nepes - + + UndeployCoreNetwork + Terminate 5GC + sabox-nepes + diff --git a/ci-scripts/xml_files/fr1_5gc_start.xml b/ci-scripts/xml_files/fr1_5gc_start.xml index 14bb55f612..8db61264df 100644 --- a/ci-scripts/xml_files/fr1_5gc_start.xml +++ b/ci-scripts/xml_files/fr1_5gc_start.xml @@ -21,19 +21,14 @@ --> - 5gc-start-tab - 5GC-Start - log-in - - 000100 - - - + 5gc-start-tab + 5GC-Start + log-in - - DeployCoreNetwork - Initialize 5GC - sabox-nepes - + + DeployCoreNetwork + Initialize 5GC + sabox-nepes + diff --git a/ci-scripts/xml_files/fr1_cn5g_basic_deploy.xml b/ci-scripts/xml_files/fr1_cn5g_basic_deploy.xml index 3561d11fc9..7baf9b6c54 100644 --- a/ci-scripts/xml_files/fr1_cn5g_basic_deploy.xml +++ b/ci-scripts/xml_files/fr1_cn5g_basic_deploy.xml @@ -21,18 +21,14 @@ --> - cn5g-start-tab - CN5G-Start - log-in - - 000100 - - - + cn5g-start-tab + CN5G-Start + log-in + + + DeployCoreNetwork + Initialize 5G Core + matix-cn5g + - - DeployCoreNetwork - Initialize 5G Core - matix-cn5g - diff --git a/ci-scripts/xml_files/fr1_cn5g_basic_undeploy.xml b/ci-scripts/xml_files/fr1_cn5g_basic_undeploy.xml index 56d7cf74c0..71d872f61a 100644 --- a/ci-scripts/xml_files/fr1_cn5g_basic_undeploy.xml +++ b/ci-scripts/xml_files/fr1_cn5g_basic_undeploy.xml @@ -21,19 +21,14 @@ --> - cn5g-stop-tab - CN5G-Stop - log-in - - 000300 - - - + cn5g-stop-tab + CN5G-Stop + log-in + + + UndeployCoreNetwork + Terminate 5G Core + matix-cn5g + - - UndeployCoreNetwork - Terminate 5G Core - matix-cn5g - - diff --git a/ci-scripts/xml_files/fr1_epc_closure.xml b/ci-scripts/xml_files/fr1_epc_closure.xml index 8f0349073c..72354cc12b 100644 --- a/ci-scripts/xml_files/fr1_epc_closure.xml +++ b/ci-scripts/xml_files/fr1_epc_closure.xml @@ -21,18 +21,14 @@ --> - epc-closure - EPC-Closure - log-out - -060000 - - + epc-closure + EPC-Closure + log-out - - UndeployCoreNetwork - Terminate EPC - ltebox-nano - + + UndeployCoreNetwork + Terminate EPC + ltebox-nano + diff --git a/ci-scripts/xml_files/fr1_epc_start.xml b/ci-scripts/xml_files/fr1_epc_start.xml index 0efaca6d57..246a3ed5d3 100644 --- a/ci-scripts/xml_files/fr1_epc_start.xml +++ b/ci-scripts/xml_files/fr1_epc_start.xml @@ -21,19 +21,14 @@ --> - epc-start-tab - EPC-Start - log-in - - 000100 - - - + epc-start-tab + EPC-Start + log-in - - DeployCoreNetwork - Initialize EPC - ltebox-nano - + + DeployCoreNetwork + Initialize EPC + ltebox-nano + diff --git a/ci-scripts/xml_files/fr1_epc_start_verizon.xml b/ci-scripts/xml_files/fr1_epc_start_verizon.xml index 19f5c03985..df46ba492e 100644 --- a/ci-scripts/xml_files/fr1_epc_start_verizon.xml +++ b/ci-scripts/xml_files/fr1_epc_start_verizon.xml @@ -21,29 +21,24 @@ --> - epc-start-tab - EPC-Start - log-in - - 000100 000101 000102 - - - + epc-start-tab + EPC-Start + log-in - - Initialize_HSS - Initialize HSS - + + Initialize_HSS + Initialize HSS + - - Initialize_MME - Initialize MME - - + + Initialize_MME + Initialize MME + + - - Initialize_SPGW - Initialize SPGW - + + Initialize_SPGW + Initialize SPGW + diff --git a/ci-scripts/xml_files/fr1_oai_cn_deploy.xml b/ci-scripts/xml_files/fr1_oai_cn_deploy.xml index 9cfec6ef58..845cf89086 100644 --- a/ci-scripts/xml_files/fr1_oai_cn_deploy.xml +++ b/ci-scripts/xml_files/fr1_oai_cn_deploy.xml @@ -21,19 +21,14 @@ --> - epc-deploy-tab - EPC-Deploy - log-in - - 000100 - - - + epc-deploy-tab + EPC-Deploy + log-in - - DeployCoreNetwork - Deploy EPC - porcepix-cn4g - + + DeployCoreNetwork + Deploy EPC + porcepix-cn4g + diff --git a/ci-scripts/xml_files/fr1_oai_cn_undeploy.xml b/ci-scripts/xml_files/fr1_oai_cn_undeploy.xml index 1be07ec180..656ef88c0d 100644 --- a/ci-scripts/xml_files/fr1_oai_cn_undeploy.xml +++ b/ci-scripts/xml_files/fr1_oai_cn_undeploy.xml @@ -21,19 +21,14 @@ --> - epc-undeploy-tab - EPC-Undeploy - log-out - - 000200 - - - + epc-undeploy-tab + EPC-Undeploy + log-out - - UndeployCoreNetwork - Undeploy EPC - porcepix-cn4g - + + UndeployCoreNetwork + Undeploy EPC + porcepix-cn4g + diff --git a/ci-scripts/xml_files/gnb_phytest_rfemulator_run_100_2x2.xml b/ci-scripts/xml_files/gnb_phytest_rfemulator_run_100_2x2.xml index 3d2efb5084..30f307612c 100644 --- a/ci-scripts/xml_files/gnb_phytest_rfemulator_run_100_2x2.xml +++ b/ci-scripts/xml_files/gnb_phytest_rfemulator_run_100_2x2.xml @@ -24,47 +24,44 @@ gNB-PHY-Test-100-2x2-RFemu Timing phytest 100 MHz 2x2 RFemulator tasks - -100000 390101 000001 390109 200000 - - - - Custom_Command - Disable Sleep States - caracal - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - caracal - sudo cpupower idle-set -E + + + Custom_Command + Disable Sleep States + caracal + sudo cpupower idle-set -D 0 - + Initialize_eNB Initialize gNB USRP - caracal + caracal -O ci-scripts/conf_files/gnb.band79.273prb.usrpn300.phytest-dora.conf --phy-test -q -U 768 -T 273 -t 23 -D 127 -m 23 -M 273 -l 2 --device.name rf_emulator --rf_emulator.noise_level_dBFS -36 --log_config.global_log_options level,nocolor,time datalog_rt_stats.100.2x2.yaml NR - numactl --cpunodebind=netdev:enp94s0f0np0 --membind=netdev:enp94s0f0np0 + numactl --cpunodebind=netdev:enp94s0f0np0 --membind=netdev:enp94s0f0np0 - + IdleSleep Sleep 60 - - + Terminate_eNB - caracal + caracal true Terminate gNB NR + + Custom_Command + true + Enable Sleep States + caracal + sudo cpupower idle-set -E + + diff --git a/ci-scripts/xml_files/gnb_phytest_usrp_run.xml b/ci-scripts/xml_files/gnb_phytest_usrp_run.xml index 5adeb17966..f6af5ee485 100644 --- a/ci-scripts/xml_files/gnb_phytest_usrp_run.xml +++ b/ci-scripts/xml_files/gnb_phytest_usrp_run.xml @@ -21,51 +21,48 @@ --> - gNB-PHY-Test-40 - Timing phytest 40 MHz - tasks - -100000 090101 000001 090109 200000 - - - - Custom_Command - Disable Sleep States - caracal - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - caracal - sudo cpupower idle-set -E - + gNB-PHY-Test-40 + Timing phytest 40 MHz + tasks - - Initialize_eNB - Initialize gNB USRP - caracal - -O ci-scripts/conf_files/gnb.band79.106prb.usrpn300.phytest-dora.conf --phy-test -q -U 768 -T 106 -t 23 -D 127 -m 28 -M 106 --usrp-tx-thread-config 1 --log_config.global_log_options level,nocolor,time + + Custom_Command + Disable Sleep States + caracal + sudo cpupower idle-set -D 0 + + + + Initialize_eNB + Initialize gNB USRP + caracal + -O ci-scripts/conf_files/gnb.band79.106prb.usrpn300.phytest-dora.conf --phy-test -q -U 768 -T 106 -t 23 -D 127 -m 28 -M 106 --usrp-tx-thread-config 1 --log_config.global_log_options level,nocolor,time datalog_rt_stats.default.yaml - NR - 192.168.20.2 - numactl --cpunodebind=netdev:enp94s0f0np0 --membind=netdev:enp94s0f0np0 - + NR + 192.168.20.2 + numactl --cpunodebind=netdev:enp94s0f0np0 --membind=netdev:enp94s0f0np0 + - - IdleSleep - Sleep - 60 - + + IdleSleep + Sleep + 60 + - - - Terminate_eNB + + Terminate_eNB true - Terminate gNB - caracal - NR - + Terminate gNB + caracal + NR + + + + Custom_Command + true + Enable Sleep States + caracal + sudo cpupower idle-set -E + diff --git a/ci-scripts/xml_files/gnb_phytest_usrp_run_100_2x2.xml b/ci-scripts/xml_files/gnb_phytest_usrp_run_100_2x2.xml index 7821be863c..93053dee90 100644 --- a/ci-scripts/xml_files/gnb_phytest_usrp_run_100_2x2.xml +++ b/ci-scripts/xml_files/gnb_phytest_usrp_run_100_2x2.xml @@ -24,25 +24,15 @@ gNB-PHY-Test-100-2x2 Timing phytest 100 MHz 2x2 tasks - -100000 390101 000001 390109 200000 - - - - Custom_Command - Disable Sleep States - caracal - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - caracal - sudo cpupower idle-set -E + + + Custom_Command + Disable Sleep States + caracal + sudo cpupower idle-set -D 0 - + Initialize_eNB Initialize gNB USRP caracal @@ -50,17 +40,16 @@ datalog_rt_stats.100.2x2.yaml NR 192.168.20.2 - numactl --cpunodebind=netdev:enp94s0f0np0 --membind=netdev:enp94s0f0np0 + numactl --cpunodebind=netdev:enp94s0f0np0 --membind=netdev:enp94s0f0np0 - + IdleSleep Sleep 60 - - + Terminate_eNB true Terminate gNB @@ -68,4 +57,12 @@ NR + + Custom_Command + true + Enable Sleep States + caracal + sudo cpupower idle-set -E + + diff --git a/ci-scripts/xml_files/gnb_phytest_usrp_run_60.xml b/ci-scripts/xml_files/gnb_phytest_usrp_run_60.xml index 72e4b5244e..2cd040a47a 100644 --- a/ci-scripts/xml_files/gnb_phytest_usrp_run_60.xml +++ b/ci-scripts/xml_files/gnb_phytest_usrp_run_60.xml @@ -24,25 +24,15 @@ gNB-PHY-Test-60 Timing phytest 60 MHz tasks - -100000 190101 000001 190109 200000 - - - - Custom_Command - Disable Sleep States - caracal - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - caracal - sudo cpupower idle-set -E + + + Custom_Command + Disable Sleep States + caracal + sudo cpupower idle-set -D 0 - + Initialize_eNB Initialize gNB USRP caracal @@ -50,17 +40,16 @@ datalog_rt_stats.1x1.60.yaml NR 192.168.20.2 - numactl --cpunodebind=netdev:enp94s0f0np0 --membind=netdev:enp94s0f0np0 + numactl --cpunodebind=netdev:enp94s0f0np0 --membind=netdev:enp94s0f0np0 - + IdleSleep Sleep 60 - - + Terminate_eNB true Terminate gNB @@ -68,4 +57,12 @@ NR + + Custom_Command + true + Enable Sleep States + caracal + sudo cpupower idle-set -E + + diff --git a/ci-scripts/xml_files/gnb_phytest_usrp_run_60_2x2.xml b/ci-scripts/xml_files/gnb_phytest_usrp_run_60_2x2.xml index 1be4a24477..7e5592fb6e 100644 --- a/ci-scripts/xml_files/gnb_phytest_usrp_run_60_2x2.xml +++ b/ci-scripts/xml_files/gnb_phytest_usrp_run_60_2x2.xml @@ -24,25 +24,15 @@ gNB-PHY-Test-60-2x2 Timing phytest 60 MHz 2x2 tasks - -100000 290101 000001 290109 200000 - - - - Custom_Command - Disable Sleep States - caracal - sudo cpupower idle-set -D 0 - - - Custom_Command - true - Enable Sleep States - caracal - sudo cpupower idle-set -E + + + Custom_Command + Disable Sleep States + caracal + sudo cpupower idle-set -D 0 - + Initialize_eNB Initialize gNB USRP caracal @@ -50,17 +40,16 @@ datalog_rt_stats.60.2x2.yaml NR 192.168.20.2 - numactl --cpunodebind=netdev:enp94s0f0np0 --membind=netdev:enp94s0f0np0 + numactl --cpunodebind=netdev:enp94s0f0np0 --membind=netdev:enp94s0f0np0 - + IdleSleep Sleep 60 - - + Terminate_eNB true Terminate gNB @@ -68,4 +57,12 @@ NR + + Custom_Command + true + Enable Sleep States + caracal + sudo cpupower idle-set -E + + diff --git a/ci-scripts/xml_files/gnb_usrp_build.xml b/ci-scripts/xml_files/gnb_usrp_build.xml index 32043985f5..ea7cc8b8ed 100644 --- a/ci-scripts/xml_files/gnb_usrp_build.xml +++ b/ci-scripts/xml_files/gnb_usrp_build.xml @@ -21,36 +21,30 @@ --> - gnb-build-tab - Build-gNB - wrench - -100000 -000000 -010101 - - + gnb-build-tab + Build-gNB + wrench - - Create_Workspace - Create new Workspace - caracal - + + Custom_Command + Reboot USRP + true + caracal + ssh root@192.168.20.2 reboot + - - TesteNB - Build_eNB - Build gNB (USRP) - caracal - --gNB -w USRP --ninja -c -P --build-lib ldpc_cuda --build-lib ldpc_aal --cmake-opt -DASN1C_EXEC=/opt/asn1c/bin/asn1c --cmake-opt -DPHYSIM_CHECK_FILES="ThresholdsOffload.cmake" - + + Create_Workspace + Create new Workspace + caracal + - - Custom_Command - Reboot USRP - true - caracal - ssh root@192.168.20.2 reboot - + + TesteNB + Build_eNB + Build gNB (USRP) + caracal + --gNB -w USRP --ninja -c -P --build-lib ldpc_cuda --build-lib ldpc_aal --cmake-opt -DASN1C_EXEC=/opt/asn1c/bin/asn1c --cmake-opt -DPHYSIM_CHECK_FILES="ThresholdsOffload.cmake" + diff --git a/ci-scripts/xml_files/lte_oai_cn_deploy.xml b/ci-scripts/xml_files/lte_oai_cn_deploy.xml index 3e4ea86e61..ddfc4dd54d 100644 --- a/ci-scripts/xml_files/lte_oai_cn_deploy.xml +++ b/ci-scripts/xml_files/lte_oai_cn_deploy.xml @@ -21,19 +21,14 @@ --> - epc-deploy-tab - EPC-Deploy - log-in - - 000100 - - - + epc-deploy-tab + EPC-Deploy + log-in - - DeployCoreNetwork - Deploy EPC - nano-cn4g - + + DeployCoreNetwork + Deploy EPC + nano-cn4g + diff --git a/ci-scripts/xml_files/lte_oai_cn_undeploy.xml b/ci-scripts/xml_files/lte_oai_cn_undeploy.xml index b81aa01a1f..df7b4a4038 100644 --- a/ci-scripts/xml_files/lte_oai_cn_undeploy.xml +++ b/ci-scripts/xml_files/lte_oai_cn_undeploy.xml @@ -21,19 +21,14 @@ --> - epc-undeploy-tab - EPC-Undeploy - log-out - - 000200 - - - + epc-undeploy-tab + EPC-Undeploy + log-out - - UndeployCoreNetwork - Undeploy EPC - nano-cn4g - + + UndeployCoreNetwork + Undeploy EPC + nano-cn4g + diff --git a/ci-scripts/xml_files/physim_4g_deploy_run.xml b/ci-scripts/xml_files/physim_4g_deploy_run.xml index cd34037760..3f1f9d10e2 100644 --- a/ci-scripts/xml_files/physim_4g_deploy_run.xml +++ b/ci-scripts/xml_files/physim_4g_deploy_run.xml @@ -21,26 +21,21 @@ --> - build-tab - Physical Simulators Check - wrench - - 800813 - 010201 - - + build-tab + Physical Simulators Check + wrench - - Create_Workspace - Create new Workspace - avra - + + Create_Workspace + Create new Workspace + avra + - - Deploy_Run_OC_PhySim - Deploy and run physical simulator on openshift - physims-4g - avra - + + Deploy_Run_OC_PhySim + Deploy and run physical simulator on openshift + physims-4g + avra + diff --git a/ci-scripts/xml_files/physim_5g_deploy_run.xml b/ci-scripts/xml_files/physim_5g_deploy_run.xml index 1967003124..edc317ea27 100644 --- a/ci-scripts/xml_files/physim_5g_deploy_run.xml +++ b/ci-scripts/xml_files/physim_5g_deploy_run.xml @@ -21,26 +21,21 @@ --> - build-tab - Physical Simulators Check - wrench - - 800813 - 010201 - - + build-tab + Physical Simulators Check + wrench - - Create_Workspace - Create new Workspace - avra - + + Create_Workspace + Create new Workspace + avra + - - Deploy_Run_OC_PhySim - Deploy and run physical simulator on openshift - physims-5g - avra - + + Deploy_Run_OC_PhySim + Deploy and run physical simulator on openshift + physims-5g + avra + diff --git a/ci-scripts/xml_files/physim_gracehopper.xml b/ci-scripts/xml_files/physim_gracehopper.xml index f04ae2541f..533696d28c 100644 --- a/ci-scripts/xml_files/physim_gracehopper.xml +++ b/ci-scripts/xml_files/physim_gracehopper.xml @@ -21,26 +21,21 @@ --> - physim-tab - PhySim - wrench - - 800813 - 010201 - - + physim-tab + PhySim + wrench - - Create_Workspace - Create new Workspace - localhost - + + Create_Workspace + Create new Workspace + localhost + - - Build_Deploy_Docker_PhySim - Build and Deploy PhySim - localhost - -R 5g -E "nr_dlsim|nr_ulsim|ldpctest" -j32 - + + Build_Deploy_Docker_PhySim + Build and Deploy PhySim + localhost + -R 5g -E "nr_dlsim|nr_ulsim|ldpctest" -j32 + diff --git a/ci-scripts/xml_files/physim_timed_gracehopper.xml b/ci-scripts/xml_files/physim_timed_gracehopper.xml index 7658279088..9844f6ebb3 100644 --- a/ci-scripts/xml_files/physim_timed_gracehopper.xml +++ b/ci-scripts/xml_files/physim_timed_gracehopper.xml @@ -21,26 +21,21 @@ --> - physim-timed-tab - PhySim with timing check - wrench - - 800813 - 010202 - - + physim-timed-tab + PhySim with timing check + wrench - - Create_Workspace - Create new Workspace - localhost - + + Create_Workspace + Create new Workspace + localhost + - - Build_Deploy_Docker_PhySim - Build and Deploy PhySim with timing check - localhost - -R 5g -R "nr_dlsim|nr_ulsim|ldpctest" -E physim.5g.nr_dlsim.mcs.mimo.test9 -j1 - + + Build_Deploy_Docker_PhySim + Build and Deploy PhySim with timing check + localhost + -R 5g -R "nr_dlsim|nr_ulsim|ldpctest" -E physim.5g.nr_dlsim.mcs.mimo.test9 -j1 + diff --git a/ci-scripts/xml_files/sa_cn5g_20897_closure.xml b/ci-scripts/xml_files/sa_cn5g_20897_closure.xml index eeab1b32dc..0e8d8db1ba 100644 --- a/ci-scripts/xml_files/sa_cn5g_20897_closure.xml +++ b/ci-scripts/xml_files/sa_cn5g_20897_closure.xml @@ -24,12 +24,8 @@ cn5g-closure CN5G-Closure log-out - - 060000 - - - + UndeployCoreNetwork Terminate 5G Core oc-cn5g-20897 diff --git a/ci-scripts/xml_files/sa_cn5g_20897_start.xml b/ci-scripts/xml_files/sa_cn5g_20897_start.xml index 9c29b83563..e88e84ad88 100644 --- a/ci-scripts/xml_files/sa_cn5g_20897_start.xml +++ b/ci-scripts/xml_files/sa_cn5g_20897_start.xml @@ -24,15 +24,11 @@ cn5g-start-tab CN5G-Start log-in - - 000100 - - - - + DeployCoreNetwork Initialize 5G Core oc-cn5g-20897 + diff --git a/ci-scripts/xml_files/sa_cn5g_closure.xml b/ci-scripts/xml_files/sa_cn5g_closure.xml index beb490dbed..ac02a57431 100644 --- a/ci-scripts/xml_files/sa_cn5g_closure.xml +++ b/ci-scripts/xml_files/sa_cn5g_closure.xml @@ -21,18 +21,14 @@ --> - cn5g-closure - CN5G-Closure - log-out - -060000 - - + cn5g-closure + CN5G-Closure + log-out - - UndeployCoreNetwork - Terminate 5G Core - oc-cn5g - + + UndeployCoreNetwork + Terminate 5G Core + oc-cn5g + diff --git a/ci-scripts/xml_files/sa_cn5g_start.xml b/ci-scripts/xml_files/sa_cn5g_start.xml index a49a2cda18..1a166ef21e 100644 --- a/ci-scripts/xml_files/sa_cn5g_start.xml +++ b/ci-scripts/xml_files/sa_cn5g_start.xml @@ -21,18 +21,14 @@ --> - cn5g-start-tab - CN5G-Start - log-in - -000100 - - - + cn5g-start-tab + CN5G-Start + log-in + + + DeployCoreNetwork + Initialize 5G Core + oc-cn5g + - - DeployCoreNetwork - Initialize 5G Core - oc-cn5g - diff --git a/ci-scripts/xml_files/t2_offload_physim_enc_dec.xml b/ci-scripts/xml_files/t2_offload_physim_enc_dec.xml index 73631a7a3c..afac50ba16 100644 --- a/ci-scripts/xml_files/t2_offload_physim_enc_dec.xml +++ b/ci-scripts/xml_files/t2_offload_physim_enc_dec.xml @@ -20,35 +20,30 @@ --> - test-t2-offload-enc-dec - Test T2 Offload - tasks - - 010204 - 111111 - 402010 - - + test-t2-offload-enc-dec + Test T2 Offload + tasks - - Custom_Command - Disable Sleep States - caracal - sudo cpupower idle-set -D 0 - + + Custom_Command + Disable Sleep States + caracal + sudo cpupower idle-set -D 0 + - - Custom_Command - true - Enable Sleep States - caracal - sudo cpupower idle-set -E - + + Build_Deploy_Source_PhySim + Build and Deploy PhySim T2 Offload tests + caracal + -R 5g-offload -j1 + + + + Custom_Command + true + Enable Sleep States + caracal + sudo cpupower idle-set -E + - - Build_Deploy_Source_PhySim - Build and Deploy PhySim T2 Offload tests - caracal - -R 5g-offload -j1 - diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai index 6f61196e7e..0e4d092916 100755 --- a/cmake_targets/build_oai +++ b/cmake_targets/build_oai @@ -300,7 +300,7 @@ function main() { SIMUS_PHY=1 CMAKE_CMD="$CMAKE_CMD -DENABLE_PHYSIM_TESTS=ON" # TODO: fix: dlsim_tm4 pucchsim prachsim pdcchsim pbchsim mbmssim - TARGET_LIST="$TARGET_LIST dlsim ulsim ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim nr_psbchsim" + TARGET_LIST="$TARGET_LIST dlsim ulsim ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim nr_psbchsim nr_srssim" echo_info "Will compile dlsim, ulsim, ..." shift;; -V | --vcd) diff --git a/cmake_targets/tools/oran_fhi_integration_patches/F/oaioran_F.patch b/cmake_targets/tools/oran_fhi_integration_patches/F/oaioran_F.patch index 3f953b36d9..6d68225bbf 100644 --- a/cmake_targets/tools/oran_fhi_integration_patches/F/oaioran_F.patch +++ b/cmake_targets/tools/oran_fhi_integration_patches/F/oaioran_F.patch @@ -1,5 +1,5 @@ diff --git a/fhi_lib/app/src/common.h b/fhi_lib/app/src/common.h -index ac5f471..b0f7ed1 100644 +index ac5f471..94c2d7c 100644 --- a/fhi_lib/app/src/common.h +++ b/fhi_lib/app/src/common.h @@ -28,7 +28,7 @@ @@ -7,7 +7,7 @@ index ac5f471..b0f7ed1 100644 #include -#define VERSIONX "oran_f_release_v1.0" -+#define VERSIONX "oran_f_release_v1.5" ++#define VERSIONX "oran_f_release_v1.6" #define APP_O_DU 0 #define APP_O_RU 1 @@ -173,18 +173,20 @@ index eccc4ae..a97fdc6 100644 CPP_FLAGS_FULL := $(CPP_FLAGS) $(CPP_COMP) $(INC) $(DEF) CPP_FLAGS_FULL_SNC := $(CPP_FLAGS) $(CPP_COMP_SNC) $(INC) $(DEF) diff --git a/fhi_lib/lib/api/xran_fh_o_du.h b/fhi_lib/lib/api/xran_fh_o_du.h -index bacf597..1dd6d66 100644 +index bacf597..2aeaaae 100644 --- a/fhi_lib/lib/api/xran_fh_o_du.h +++ b/fhi_lib/lib/api/xran_fh_o_du.h -@@ -141,7 +141,7 @@ extern "C" { +@@ -141,8 +141,8 @@ extern "C" { #define XRAN_MAX_SECTIONS_PER_SYM (XRAN_MAX_SECTIONS_PER_SLOT) /**< Max number of different sections in single slot (section may be equal to RB allocation for UE) */ #define XRAN_MIN_SECTIONS_PER_SYM (XRAN_MIN_SECTIONS_PER_SLOT) /**< Min number of different sections in single slot (section may be equal to RB allocation for UE) */ -#define XRAN_MAX_FRAGMENT (4) /**< Max number of fragmentations in single symbol */ +-#define XRAN_MAX_SET_BFWS (64) /**< Assumed 64Ant, BFP 9bit with 9K jumbo frame */ +#define XRAN_MAX_FRAGMENT (6) /**< Max number of fragmentations in single symbol */ - #define XRAN_MAX_SET_BFWS (64) /**< Assumed 64Ant, BFP 9bit with 9K jumbo frame */ ++#define XRAN_MAX_SET_BFWS (1) //(64) /**< Assumed 64Ant, BFP 9bit with 9K jumbo frame */ #define XRAN_MAX_PKT_BURST (448+4) /**< 4x14x8 symbols per ms */ + #define XRAN_N_MAX_BUFFER_SEGMENT XRAN_MAX_PKT_BURST /**< Max number of segments per ms */ @@ -419,6 +419,7 @@ struct xran_io_cfg { uint16_t num_rxq; /**< number of RX queues per VF */ char *dpdk_dev[XRAN_VF_MAX]; /**< VFs devices */ @@ -193,7 +195,15 @@ index bacf597..1dd6d66 100644 int32_t bbdev_mode; /**< DPDK for BBDev */ uint32_t dpdkIoVaMode; /**< IOVA Mode */ uint32_t dpdkMemorySize; /**< DPDK max memory allocation */ -@@ -1193,6 +1194,31 @@ int32_t xran_reg_physide_cb_by_dev_id(void *pHandle, xran_fh_tti_callback_fn Cb, +@@ -713,6 +714,7 @@ struct xran_fh_config { + uint16_t max_sections_per_slot; /**< M-Plane settings for section */ + uint16_t max_sections_per_symbol; /**< M-Plane settings for section */ + int32_t RunSlotPrbMapBySymbolEnable; /**< enable prb mapping by symbol with multisection*/ ++ uint8_t LiteOnIgnoreUPSectionIdEnable; /**< handle LiteOn issue where section id on UP packet is wrongly set to 13. */ + + uint8_t dssEnable; /**< enable DSS (extension-9) */ + uint8_t dssPeriod; /**< DSS pattern period for LTE/NR */ +@@ -1193,6 +1195,31 @@ int32_t xran_reg_physide_cb_by_dev_id(void *pHandle, xran_fh_tti_callback_fn Cb, */ int32_t xran_get_slot_idx (uint32_t PortId, uint32_t *nFrameIdx, uint32_t *nSubframeIdx, uint32_t *nSlotIdx, uint64_t *nSecond); @@ -535,7 +545,7 @@ index 08660f3..2bb5187 100644 #include #include diff --git a/fhi_lib/lib/src/xran_common.c b/fhi_lib/lib/src/xran_common.c -index dc40ad9..5968d01 100644 +index dc40ad9..1b88013 100644 --- a/fhi_lib/lib/src/xran_common.c +++ b/fhi_lib/lib/src/xran_common.c @@ -31,7 +31,10 @@ @@ -549,7 +559,110 @@ index dc40ad9..5968d01 100644 #include #include #include -@@ -714,11 +717,14 @@ process_mbuf(struct rte_mbuf *pkt, void* handle, struct xran_eaxc_info *p_cid) +@@ -49,6 +52,8 @@ + #include "xran_printf.h" + #include "xran_mlog_lnx.h" + ++#include "xran_frame_struct.h" ++ + static struct timespec sleeptime = {.tv_nsec = 1E3 }; /* 1 us */ + + extern int32_t first_call; +@@ -529,13 +534,30 @@ int process_mbuf_batch(struct rte_mbuf* pkt_q[], void* handle, int16_t num, stru + if (pRbMap) + { + /** Get the prb_elem_id */ ++ u_int8_t section_id_tmp; // hack for LiteON FR2 : receive UP section ID = 13 ++ u_int8_t prb_elem_id_tmp; // hack for LiteON FR2 : receive UP section ID = 13 ++ if(0 == p_dev_ctx->LiteOnIgnoreUPSectionIdEnable) { ++ section_id_tmp = prb_elem_id_tmp = sect_id[i]; ++ } else { ++ u_int8_t mixed_ul_sym_start = 0; ++ if (xran_fs_get_slot_type(xran_port, CC_ID[i], tti, XRAN_SLOT_TYPE_SP)) { ++ mixed_ul_sym_start = XRAN_NUM_OF_SYMBOL_PER_SLOT - xran_fs_get_num_ul_sym_sp(xran_port, CC_ID[i], tti); ++ } ++ u_int8_t section_id_tmp = symb_id[i] - mixed_ul_sym_start; // hack for LiteON FR2 : receive UP section ID = 13, MTU 9000 ++ prb_elem_id_tmp = section_id_tmp; // hack for LiteON FR2 : receive UP section ID = 13, MTU 9000 ++ //Note for future reference when using MTU 1500 ++ //prb_elem_id_tmp = 2*section_id_tmp; // For LiteON FR2 : receive UP section ID = 13, MTU 1500 ++ //if (start_prbu !=0) // For LiteON FR2 : receive UP section ID = 13, MTU 1500 ++ // prb_elem_id_tmp++; // For LiteON FR2 : receive UP section ID = 13, MTU 1500 ++ } ++ + total_sections=0; + if(pRbMap->prbMap[0].bf_weight.extType == 1) + { + for(idxElm=0 ; idxElm < pRbMap->nPrbElm ; idxElm++) + { + total_sections += pRbMap->prbMap[idxElm].bf_weight.numSetBFWs; +- if(total_sections >= (sect_id[i] + 1)) ++ if(total_sections >= (/*sect_id[i]*/ prb_elem_id_tmp + 1)) + { + prb_elem_id[i] = idxElm; + break; +@@ -544,12 +566,12 @@ int process_mbuf_batch(struct rte_mbuf* pkt_q[], void* handle, int16_t num, stru + } + else + { +- prb_elem_id[i] = sect_id[i]; ++ prb_elem_id[i] = prb_elem_id_tmp; /*sect_id[i];*/ + } + + if (prb_elem_id[i] >= pRbMap->nPrbElm) + { +- print_err("sect_id %d, prb_elem_id %d !=pRbMap->nPrbElm %d\n", sect_id[i], prb_elem_id[i], pRbMap->nPrbElm); ++ print_err("sect_id %d, prb_elem_id %d !=pRbMap->nPrbElm %d\n", /*sect_id[i]*/ section_id_tmp, prb_elem_id[i], pRbMap->nPrbElm); + ret_data[i] = MBUF_FREE; + continue; + } +@@ -615,13 +637,30 @@ int process_mbuf_batch(struct rte_mbuf* pkt_q[], void* handle, int16_t num, stru + if (pRbMap) + { + /** Get the prb_elem_id */ ++ u_int8_t section_id_tmp; // hack for LiteON FR2 : receive UP section ID = 13 ++ u_int8_t prb_elem_id_tmp; // hack for LiteON FR2 : receive UP section ID = 13 ++ if(0 == p_dev_ctx->LiteOnIgnoreUPSectionIdEnable) { ++ section_id_tmp = prb_elem_id_tmp = sect_id[i]; ++ } else { ++ u_int8_t mixed_ul_sym_start = 0; ++ if (xran_fs_get_slot_type(xran_port, CC_ID[i], tti, XRAN_SLOT_TYPE_SP)) { ++ mixed_ul_sym_start = XRAN_NUM_OF_SYMBOL_PER_SLOT - xran_fs_get_num_ul_sym_sp(xran_port, CC_ID[i], tti); ++ } ++ u_int8_t section_id_tmp = symb_id[i] - mixed_ul_sym_start; // hack for LiteON FR2 : receive UP section ID = 13, MTU 9000 ++ prb_elem_id_tmp = section_id_tmp; // hack for LiteON FR2 : receive UP section ID = 13, MTU 9000 ++ //Note for future reference when using MTU 1500 ++ //prb_elem_id_tmp = 2*section_id_tmp; // For LiteON FR2 : receive UP section ID = 13, MTU 1500 ++ //if (start_prbu !=0) // For LiteON FR2 : receive UP section ID = 13, MTU 1500 ++ // prb_elem_id_tmp++; // For LiteON FR2 : receive UP section ID = 13, MTU 1500 ++ } ++ + total_sections=0; + if(pRbMap->prbMap[0].bf_weight.extType == 1) + { + for(idxElm=0 ; idxElm < pRbMap->nPrbElm ; idxElm++) + { + total_sections += pRbMap->prbMap[idxElm].bf_weight.numSetBFWs; +- if(total_sections >= (sect_id[i] + 1)) ++ if(total_sections >= (/*sect_id[i]*/ prb_elem_id_tmp + 1)) + { + prb_elem_id[i] = idxElm; + break; +@@ -630,12 +669,12 @@ int process_mbuf_batch(struct rte_mbuf* pkt_q[], void* handle, int16_t num, stru + } + else + { +- prb_elem_id[i] = sect_id[i]; ++ prb_elem_id[i] = prb_elem_id_tmp; /*sect_id[i];*/ + } + + if (prb_elem_id[i] >= pRbMap->nPrbElm) + { +- print_err("sect_id %d, prb_elem_id %d !=pRbMap->nPrbElm %d\n", sect_id[i], prb_elem_id[i], pRbMap->nPrbElm); ++ print_err("sect_id %d, prb_elem_id %d !=pRbMap->nPrbElm %d\n", /*sect_id[i]*/ section_id_tmp, prb_elem_id[i], pRbMap->nPrbElm); + ret_data[i] = MBUF_FREE; + continue; + } +@@ -714,11 +753,14 @@ process_mbuf(struct rte_mbuf *pkt, void* handle, struct xran_eaxc_info *p_cid) uint8_t compMeth = 0; uint8_t iqWidth = 0; @@ -564,7 +677,7 @@ index dc40ad9..5968d01 100644 if(first_call == 0) return ret; -@@ -733,9 +739,9 @@ process_mbuf(struct rte_mbuf *pkt, void* handle, struct xran_eaxc_info *p_cid) +@@ -733,9 +775,9 @@ process_mbuf(struct rte_mbuf *pkt, void* handle, struct xran_eaxc_info *p_cid) return MBUF_FREE; num_bytes = xran_extract_iq_samples(pkt, &iq_samp_buf, @@ -576,7 +689,7 @@ index dc40ad9..5968d01 100644 if (num_bytes <= 0) { print_err("num_bytes is wrong [%d]\n", num_bytes); -@@ -781,10 +787,9 @@ process_mbuf(struct rte_mbuf *pkt, void* handle, struct xran_eaxc_info *p_cid) +@@ -781,10 +823,9 @@ process_mbuf(struct rte_mbuf *pkt, void* handle, struct xran_eaxc_info *p_cid) else { @@ -590,7 +703,7 @@ index dc40ad9..5968d01 100644 #ifndef FCN_ADAPT if(valid_res != 0) { -@@ -807,8 +812,7 @@ process_mbuf(struct rte_mbuf *pkt, void* handle, struct xran_eaxc_info *p_cid) +@@ -807,8 +848,7 @@ process_mbuf(struct rte_mbuf *pkt, void* handle, struct xran_eaxc_info *p_cid) PrachCfg = &(p_dev_ctx->PrachCPConfig); } @@ -600,7 +713,7 @@ index dc40ad9..5968d01 100644 /* PRACH packet has ruportid = num_eAxc + ant_id */ Ant_ID -= PrachCfg->eAxC_offset; symbol_total_bytes[p_dev_ctx->xran_port_id][CC_ID][Ant_ID] += num_bytes; -@@ -1412,7 +1416,7 @@ int generate_cpmsg_prach(void *pHandle, struct xran_cp_gen_params *params, struc +@@ -1412,7 +1452,7 @@ int generate_cpmsg_prach(void *pHandle, struct xran_cp_gen_params *params, struc if(XRAN_FILTERINDEX_PRACH_ABC == pPrachCPConfig->filterIdx) { timeOffset = timeOffset >> nNumerology; //original number is Tc, convert to Ts based on mu @@ -609,7 +722,7 @@ index dc40ad9..5968d01 100644 timeOffset += 16; } else -@@ -1547,8 +1551,7 @@ int32_t ring_processing_func(void* args) +@@ -1547,8 +1587,7 @@ int32_t ring_processing_func(void* args) for (i = 0; i < ctx->io_cfg.num_vfs && i < XRAN_VF_MAX; i++){ for(qi = 0; qi < ctx->rxq_per_port[i]; qi++) { @@ -918,8 +1031,58 @@ index 4acade1..c939edc 100644 if(pCtx){ for(i = 0; i < xran_ports_num; i++){ g_xran_dev_ctx[i] = pCtx; +diff --git a/fhi_lib/lib/src/xran_dev.h b/fhi_lib/lib/src/xran_dev.h +index 0371a53..dd76b49 100644 +--- a/fhi_lib/lib/src/xran_dev.h ++++ b/fhi_lib/lib/src/xran_dev.h +@@ -201,6 +201,7 @@ struct __rte_cache_aligned xran_device_ctx + + int32_t DynamicSectionEna; + int32_t RunSlotPrbMapBySymbolEnable; ++ uint8_t LiteOnIgnoreUPSectionIdEnable; /**< handle LiteOn issue where section id on UP packet is wrongly set to 13. */ + int64_t offset_sec; + int64_t offset_nsec; //offset to GPS time calcuated based on alpha and beta + uint32_t interval_us_local; +diff --git a/fhi_lib/lib/src/xran_frame_struct.c b/fhi_lib/lib/src/xran_frame_struct.c +index fbb1298..44aaf92 100644 +--- a/fhi_lib/lib/src/xran_frame_struct.c ++++ b/fhi_lib/lib/src/xran_frame_struct.c +@@ -519,4 +519,20 @@ int32_t xran_fs_get_symbol_type(uint32_t PortId, int32_t nCellIdx, int32_t nSlot + return xran_fs_slot_symb_type[PortId][nCellIdx][nSfIdxMod][nSymbIdx]; + } + ++uint32_t xran_fs_get_num_dl_sym_sp(uint32_t PortId, int32_t nCellIdx, int32_t nSlotdx) ++{ ++ int32_t nSfIdxMod; ++ ++ nSfIdxMod = xran_fs_slot_limit(PortId, nSlotdx) % ((xran_fs_num_slot_tdd_loop[PortId][nCellIdx] > 0) ? xran_fs_num_slot_tdd_loop[PortId][nCellIdx]: 1); ++ ++ return xran_fs_num_dl_sym_sp[PortId][nCellIdx][nSfIdxMod]; ++} + ++uint32_t xran_fs_get_num_ul_sym_sp(uint32_t PortId, int32_t nCellIdx, int32_t nSlotdx) ++{ ++ int32_t nSfIdxMod; ++ ++ nSfIdxMod = xran_fs_slot_limit(PortId, nSlotdx) % ((xran_fs_num_slot_tdd_loop[PortId][nCellIdx] > 0) ? xran_fs_num_slot_tdd_loop[PortId][nCellIdx]: 1); ++ ++ return xran_fs_num_ul_sym_sp[PortId][nCellIdx][nSfIdxMod]; ++} +diff --git a/fhi_lib/lib/src/xran_frame_struct.h b/fhi_lib/lib/src/xran_frame_struct.h +index 7ed0a3a..8e66945 100644 +--- a/fhi_lib/lib/src/xran_frame_struct.h ++++ b/fhi_lib/lib/src/xran_frame_struct.h +@@ -75,6 +75,8 @@ uint32_t xran_fs_slot_limit_init(uint32_t PortId, int32_t tti_interval_us); + uint32_t xran_fs_get_max_slot(uint32_t PortId); + uint32_t xran_fs_get_max_slot_SFN(uint32_t PortId); + int32_t xran_fs_get_symbol_type(uint32_t PortId, int32_t nCellIdx, int32_t nSlotdx, int32_t nSymbIdx); ++uint32_t xran_fs_get_num_dl_sym_sp(uint32_t PortId, int32_t nCellIdx, int32_t nSlotdx); ++uint32_t xran_fs_get_num_ul_sym_sp(uint32_t PortId, int32_t nCellIdx, int32_t nSlotdx); + + #ifdef __cplusplus + } diff --git a/fhi_lib/lib/src/xran_main.c b/fhi_lib/lib/src/xran_main.c -index 7c472d7..9da3621 100644 +index 7c472d7..7c7cf91 100644 --- a/fhi_lib/lib/src/xran_main.c +++ b/fhi_lib/lib/src/xran_main.c @@ -35,7 +35,11 @@ @@ -974,7 +1137,7 @@ index 7c472d7..9da3621 100644 beam_id = xran_get_beamid(pHandle, XRAN_DIR_UL, cc_id, port_id, slot_id); + pBufList = &(p_xran_dev_ctx->sFrontHaulRxPrbMapBbuIoBufCtrl[buf_id][cc_id][ant_id].sBufferList); -+ struct xran_prb_map *prbMap = pBufList->pBuffers->pData; ++ struct xran_prb_map *prbMap = (struct xran_prb_map *)pBufList->pBuffers->pData; + struct xran_prb_elm *pPrbElm = &prbMap->prbMap[0]; //mjoang + beam_id = pPrbElm->nBeamIndex; ret = generate_cpmsg_prach(pHandle, ¶ms, sect_geninfo, mbuf, p_xran_dev_ctx, @@ -985,7 +1148,7 @@ index 7c472d7..9da3621 100644 beam_id = xran_get_beamid(pHandle, XRAN_DIR_UL, cc_id, port_id, slot_id); + pBufList = &(p_xran_dev_ctx->sFrontHaulRxPrbMapBbuIoBufCtrl[buf_id][cc_id][ant_id].sBufferList); -+ struct xran_prb_map *prbMap = pBufList->pBuffers->pData; ++ struct xran_prb_map *prbMap = (struct xran_prb_map *)pBufList->pBuffers->pData; + struct xran_prb_elm *pPrbElm = &prbMap->prbMap[0]; //mjoang + beam_id = pPrbElm->nBeamIndex; ret = generate_cpmsg_prach(pHandle, ¶ms, sect_geninfo, mbuf, p_xran_dev_ctx, @@ -1550,7 +1713,15 @@ index 7c472d7..9da3621 100644 if(pThCtx == NULL){ print_err("pThCtx allocation error\n"); return XRAN_STATUS_FAIL; -@@ -4034,6 +4062,24 @@ xran_get_slot_idx (uint32_t PortId, uint32_t *nFrameIdx, uint32_t *nSubframeIdx, +@@ -3754,6 +3782,7 @@ xran_open(void *pHandle, struct xran_fh_config* pConf) + p_xran_dev_ctx->puschMaskSlot = pConf->puschMaskSlot; + p_xran_dev_ctx->DynamicSectionEna = pConf->DynamicSectionEna; + p_xran_dev_ctx->RunSlotPrbMapBySymbolEnable = pConf->RunSlotPrbMapBySymbolEnable; ++ p_xran_dev_ctx->LiteOnIgnoreUPSectionIdEnable = pConf->LiteOnIgnoreUPSectionIdEnable; + p_xran_dev_ctx->dssEnable = pConf->dssEnable; + p_xran_dev_ctx->dssPeriod = pConf->dssPeriod; + for(i=0; idssPeriod; i++) { +@@ -4034,6 +4063,24 @@ xran_get_slot_idx (uint32_t PortId, uint32_t *nFrameIdx, uint32_t *nSubframeIdx, return tti; } @@ -1575,6 +1746,73 @@ index 7c472d7..9da3621 100644 int32_t xran_set_debug_stop(int32_t value, int32_t count) { +@@ -4208,7 +4255,7 @@ int32_t xran_init_PrbMap_by_symbol_from_cfg(struct xran_prb_map* p_PrbMapIn, str + int32_t i = 0, j = 0, nPrbElm = 0; + int16_t iqwidth = p_PrbMapIn->prbMap[0].iqWidth; + struct xran_prb_elm *p_prb_elm_src, *p_prb_elm_dst; +- struct xran_prb_elm prbMapTemp[XRAN_NUM_OF_SYMBOL_PER_SLOT]; ++ struct xran_prb_elm prbMapTemp[XRAN_NUM_OF_SYMBOL_PER_SLOT] = {0} ; // Need to initialize to zero for field sec_desc. + int32_t nRBStart_tmp, nRBremain, nStartSymb, nEndSymb, nRBStart, nRBEnd, nRBSize; + // int32_t eth_xran_up_headers_sz = sizeof(struct eth_xran_up_pkt_hdr); + // int32_t nmaxRB = (mtu - eth_xran_up_headers_sz - RTE_PKTMBUF_HEADROOM)/XRAN_PAYLOAD_1_RB_SZ(iqwidth); +@@ -4217,7 +4264,6 @@ int32_t xran_init_PrbMap_by_symbol_from_cfg(struct xran_prb_map* p_PrbMapIn, str + if (mtu==9600) + nmaxRB--; //for some reason when mtu is 9600, only 195 RB can be sent, not 196 + +- + memcpy(p_PrbMapOut, p_PrbMapIn, sizeof(struct xran_prb_map)); + for(i = 0; i < XRAN_NUM_OF_SYMBOL_PER_SLOT; i++) + { +@@ -4292,26 +4338,30 @@ int32_t xran_init_PrbMap_by_symbol_from_cfg(struct xran_prb_map* p_PrbMapIn, str + + for(; i < XRAN_NUM_OF_SYMBOL_PER_SLOT; i++) + { +- if((nRBStart == prbMapTemp[i].nRBStart) && (nRBSize == prbMapTemp[i].nRBSize)) +- { +- prbMapTemp[nPrbElm].numSymb++; +- } +- else ++ if((prbMapTemp[i].nRBSize != 0)) + { +- nPrbElm++; +- prbMapTemp[nPrbElm].nStartSymb = prbMapTemp[i].nStartSymb; +- prbMapTemp[nPrbElm].nRBStart = prbMapTemp[i].nRBStart; +- prbMapTemp[nPrbElm].nRBSize = prbMapTemp[i].nRBSize; +- prbMapTemp[nPrbElm].nBeamIndex = prbMapTemp[i].nBeamIndex; +- prbMapTemp[nPrbElm].bf_weight_update = prbMapTemp[i].bf_weight_update; +- prbMapTemp[nPrbElm].compMethod = prbMapTemp[i].compMethod; +- prbMapTemp[nPrbElm].iqWidth = prbMapTemp[i].iqWidth; +- prbMapTemp[nPrbElm].ScaleFactor = prbMapTemp[i].ScaleFactor; +- prbMapTemp[nPrbElm].reMask = prbMapTemp[i].reMask; +- prbMapTemp[nPrbElm].BeamFormingType = prbMapTemp[i].BeamFormingType; +- +- nRBStart = prbMapTemp[i].nRBStart; +- nRBSize = prbMapTemp[i].nRBSize; ++ if (false) // Force it to generate multiple prbMapElm, one for each symbol even if they are of the same RBs ++ //if((nRBStart == prbMapTemp[i].nRBStart) && (nRBSize == prbMapTemp[i].nRBSize)) ++ { ++ prbMapTemp[nPrbElm].numSymb++; ++ } ++ else ++ { ++ nPrbElm++; ++ prbMapTemp[nPrbElm].nStartSymb = prbMapTemp[i].nStartSymb; ++ prbMapTemp[nPrbElm].nRBStart = prbMapTemp[i].nRBStart; ++ prbMapTemp[nPrbElm].nRBSize = prbMapTemp[i].nRBSize; ++ prbMapTemp[nPrbElm].nBeamIndex = prbMapTemp[i].nBeamIndex; ++ prbMapTemp[nPrbElm].bf_weight_update = prbMapTemp[i].bf_weight_update; ++ prbMapTemp[nPrbElm].compMethod = prbMapTemp[i].compMethod; ++ prbMapTemp[nPrbElm].iqWidth = prbMapTemp[i].iqWidth; ++ prbMapTemp[nPrbElm].ScaleFactor = prbMapTemp[i].ScaleFactor; ++ prbMapTemp[nPrbElm].reMask = prbMapTemp[i].reMask; ++ prbMapTemp[nPrbElm].BeamFormingType = prbMapTemp[i].BeamFormingType; ++ ++ nRBStart = prbMapTemp[i].nRBStart; ++ nRBSize = prbMapTemp[i].nRBSize; ++ } + } + } + diff --git a/fhi_lib/lib/src/xran_mem_mgr.c b/fhi_lib/lib/src/xran_mem_mgr.c index e1dcb6c..b3c3fae 100644 --- a/fhi_lib/lib/src/xran_mem_mgr.c @@ -1608,7 +1846,7 @@ index 7d4a5d0..b9b44ac 100644 #endif } diff --git a/fhi_lib/lib/src/xran_rx_proc.c b/fhi_lib/lib/src/xran_rx_proc.c -index e7056f4..0d3d8ac 100644 +index e7056f4..34b6d3b 100644 --- a/fhi_lib/lib/src/xran_rx_proc.c +++ b/fhi_lib/lib/src/xran_rx_proc.c @@ -35,7 +35,11 @@ @@ -1623,6 +1861,127 @@ index e7056f4..0d3d8ac 100644 #include #include +@@ -339,13 +343,33 @@ int32_t xran_process_srs_sym(void *arg, + pRbMap = (struct xran_prb_map *) p_xran_dev_ctx->sFHSrsRxPrbMapBbuIoBufCtrl[tti % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers->pData; + if(pRbMap) + { +- prbMapElm = &pRbMap->prbMap[sect_id]; +- if(sect_id >= pRbMap->nPrbElm) ++ u_int8_t section_id_tmp; // hack for LiteON FR2 : receive UP section ID = 13 ++ u_int8_t prb_elem_id_tmp; // hack for LiteON FR2 : receive UP section ID = 13 ++ if(0 == p_xran_dev_ctx->LiteOnIgnoreUPSectionIdEnable) { ++ section_id_tmp = prb_elem_id_tmp = sect_id; ++ } else { ++ /** Get the prb_elem_id */ ++ int8_t xran_port = xran_dev_ctx_get_port_id(p_xran_dev_ctx); ++ u_int8_t mixed_ul_sym_start = 0; ++ if (xran_fs_get_slot_type(xran_port, CC_ID, tti, XRAN_SLOT_TYPE_SP)) { ++ mixed_ul_sym_start = XRAN_NUM_OF_SYMBOL_PER_SLOT - xran_fs_get_num_ul_sym_sp(xran_port, CC_ID, tti); ++ } ++ ++ section_id_tmp = symb_id - mixed_ul_sym_start; // hack for LiteON FR2 : receive UP section ID = 13, MTU 9000 ++ prb_elem_id_tmp = section_id_tmp; // hack for LiteON FR2 : receive UP section ID = 13, MTU 9000 ++ //Note for future reference when using MTU 1500 ++ //prb_elem_id_tmp = 2*section_id_tmp; // For LiteON FR2 : receive UP section ID = 13, MTU 1500 ++ //if (start_prbu !=0) // For LiteON FR2 : receive UP section ID = 13, MTU 1500 ++ // prb_elem_id_tmp++; // For LiteON FR2 : receive UP section ID = 13, MTU 1500 ++ } ++ ++ prbMapElm = &pRbMap->prbMap[prb_elem_id_tmp /*sect_id*/]; ++ if(/*sect_id*/ prb_elem_id_tmp >= pRbMap->nPrbElm) + { +- print_err("sect_id %d !=pRbMap->nPrbElm %d\n", sect_id,pRbMap->nPrbElm); +- *mb_free = MBUF_FREE; +- return size; +- } ++ print_err("sect_id %d !=pRbMap->nPrbElm %d\n", sect_id,pRbMap->nPrbElm); ++ *mb_free = MBUF_FREE; ++ return size; ++ } + } + else + { +@@ -397,7 +421,25 @@ int32_t xran_process_srs_sym(void *arg, + else */ + { + struct xran_section_desc *p_sec_desc = NULL; +- prbMapElm = &pRbMap->prbMap[sect_id]; ++ u_int8_t section_id_tmp; // hack for LiteON FR2 : receive UP section ID = 13 ++ u_int8_t prb_elem_id_tmp; // hack for LiteON FR2 : receive UP section ID = 13 ++ if(0 == p_xran_dev_ctx->LiteOnIgnoreUPSectionIdEnable) { ++ section_id_tmp = prb_elem_id_tmp = sect_id; ++ } else { ++ int8_t xran_port = xran_dev_ctx_get_port_id(p_xran_dev_ctx); ++ u_int8_t mixed_ul_sym_start = 0; ++ if (xran_fs_get_slot_type(xran_port, CC_ID, tti, XRAN_SLOT_TYPE_SP)) { ++ mixed_ul_sym_start = XRAN_NUM_OF_SYMBOL_PER_SLOT - xran_fs_get_num_ul_sym_sp(xran_port, CC_ID, tti); ++ } ++ u_int8_t section_id_tmp = symb_id - mixed_ul_sym_start; // hack for LiteON FR2 : receive UP section ID = 13, MTU 9000 ++ prb_elem_id_tmp = section_id_tmp; // hack for LiteON FR2 : receive UP section ID = 13, MTU 9000 ++ //Note for future reference when using MTU 1500 ++ //prb_elem_id_tmp = 2*section_id_tmp; // For LiteON FR2 : receive UP section ID = 13, MTU 1500 ++ //if (start_prbu !=0) // For LiteON FR2 : receive UP section ID = 13, MTU 1500 ++ // prb_elem_id_tmp++; // For LiteON FR2 : receive UP section ID = 13, MTU 1500 ++ } ++ ++ prbMapElm = &pRbMap->prbMap[prb_elem_id_tmp /*sect_id*/]; + // sec_desc_idx = 0;//prbMapElm->nSecDesc[symb_id]; + sec_desc_idx = prbMapElm->nSecDesc[symb_id]; + +@@ -537,14 +579,33 @@ int32_t xran_process_rx_sym(void *arg, + pos = (char*) p_xran_dev_ctx->sFrontHaulRxBbuIoBufCtrl[tti % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers[symb_id].pData; + pRbMap = (struct xran_prb_map *) p_xran_dev_ctx->sFrontHaulRxPrbMapBbuIoBufCtrl[tti % XRAN_N_FE_BUF_LEN][CC_ID][Ant_ID].sBufferList.pBuffers->pData; + if(pRbMap){ +- /** Get the prb_elem_id */ ++ u_int8_t section_id_tmp; // hack for LiteON FR2 : receive UP section ID = 13 ++ u_int8_t prb_elem_id_tmp; // hack for LiteON FR2 : receive UP section ID = 13 ++ if(0 == p_xran_dev_ctx->LiteOnIgnoreUPSectionIdEnable) { ++ section_id_tmp = prb_elem_id_tmp = sect_id; ++ } else { ++ /** Get the prb_elem_id */ ++ int8_t xran_port = xran_dev_ctx_get_port_id(p_xran_dev_ctx); ++ u_int8_t mixed_ul_sym_start = 0; ++ if (xran_fs_get_slot_type(xran_port, CC_ID, tti, XRAN_SLOT_TYPE_SP)) { ++ mixed_ul_sym_start = XRAN_NUM_OF_SYMBOL_PER_SLOT - xran_fs_get_num_ul_sym_sp(xran_port, CC_ID, tti); ++ } ++ ++ section_id_tmp = symb_id - mixed_ul_sym_start; // hack for LiteON FR2 : receive UP section ID = 13, MTU 9000 ++ prb_elem_id_tmp = section_id_tmp; // hack for LiteON FR2 : receive UP section ID = 13, MTU 9000 ++ //Note for future reference when using MTU 1500 ++ //prb_elem_id_tmp = 2*section_id_tmp; // For LiteON FR2 : receive UP section ID = 13, MTU 1500 ++ //if (start_prbu !=0) // For LiteON FR2 : receive UP section ID = 13, MTU 1500 ++ // prb_elem_id_tmp++; // For LiteON FR2 : receive UP section ID = 13, MTU 1500 ++ } ++ + total_sections=0; + if(pRbMap->prbMap[0].bf_weight.extType == 1) + { + for(i=0 ; i < pRbMap->nPrbElm ; i++) + { + total_sections += pRbMap->prbMap[i].bf_weight.numSetBFWs; +- if(total_sections >= (sect_id + 1)) ++ if(total_sections >= (/*sect_id*/ section_id_tmp + 1)) + { + prb_elem_id = i; + break; +@@ -553,7 +614,7 @@ int32_t xran_process_rx_sym(void *arg, + } + else + { +- prb_elem_id = sect_id; ++ prb_elem_id = prb_elem_id_tmp; /*sect_id*/; + } + + prbMapElm = &pRbMap->prbMap[prb_elem_id]; +@@ -597,7 +658,7 @@ int32_t xran_process_rx_sym(void *arg, + if(p_sec_desc){ + mb = p_sec_desc->pCtrl; + if(mb){ +- rte_pktmbuf_free(mb); ++ rte_pktmbuf_free(mb); + } + p_sec_desc->pData = iq_data_start; + p_sec_desc->pCtrl = mbuf; diff --git a/fhi_lib/lib/src/xran_timer.c b/fhi_lib/lib/src/xran_timer.c index 14a6a41..55182d8 100644 --- a/fhi_lib/lib/src/xran_timer.c diff --git a/common/config/config_userapi.c b/common/config/config_userapi.c index 1a831d28c5..7c92a611de 100644 --- a/common/config/config_userapi.c +++ b/common/config/config_userapi.c @@ -105,13 +105,14 @@ int config_execcheck(configmodule_interface_t *cfg, paramdef_t *params, int nump return st; } -int config_paramidx_fromname(paramdef_t *params, int numparams, const char *name) { - for (int i=0; i= 0 && idx < num, "Invalid parameter name %s\n", name); + return &pd[idx]; +} diff --git a/common/config/config_userapi.h b/common/config/config_userapi.h index 00818c4976..3aeeeec3c1 100644 --- a/common/config/config_userapi.h +++ b/common/config/config_userapi.h @@ -49,7 +49,9 @@ extern configmodule_interface_t *uniqCfg; #define CONFIG_SETRTFLAG(P) if (config_get_if()) { config_get_if()->rtflags |= P; } #define CONFIG_CLEARRTFLAG(P) if (config_get_if()) { config_get_if()->rtflags &= (~P); } #define CONFIG_ISPARAMFLAGSET(P,F) ( !!(P.paramflags & F)) -int config_paramidx_fromname(paramdef_t *params, int numparams, const char *name); +#define gpd(pd_array, nump, name) config_get_paramdef_from_name(pd_array, nump, name) + +int config_paramidx_fromname(const paramdef_t *params, int numparams, const char *name); /* utility functions, to be used by configuration module and/or configuration libraries */ void config_printhelp(paramdef_t *, int numparams, const char *prefix); @@ -75,6 +77,7 @@ int config_check_modify_integer(configmodule_interface_t *cfg, paramdef_t *param int config_check_intrange(configmodule_interface_t *cfg, paramdef_t *param); int config_check_strval(configmodule_interface_t *cfg, paramdef_t *param); int config_checkstr_assign_integer(configmodule_interface_t *cfg, paramdef_t *param); +const paramdef_t *config_get_paramdef_from_name(const paramdef_t *pd, int num, const char *name); #define CONFIG_GETCONFFILE (config_get_if()->cfgP[0]) diff --git a/common/platform_constants.h b/common/platform_constants.h index 4000ffb001..2faadc3dcd 100644 --- a/common/platform_constants.h +++ b/common/platform_constants.h @@ -100,4 +100,5 @@ // SDAP #define MAX_QOS_FLOWS 64 +#define SPEED_OF_LIGHT 299792458 // in m/s #endif /* __PLATFORM_CONSTANTS_H__ */ diff --git a/common/utils/CMakeLists.txt b/common/utils/CMakeLists.txt index c3c7720628..dc997db6c7 100644 --- a/common/utils/CMakeLists.txt +++ b/common/utils/CMakeLists.txt @@ -23,3 +23,6 @@ endif() add_subdirectory(barrier) add_subdirectory(actor) add_subdirectory(shm_iq_channel) +if (ENABLE_TESTS) + add_subdirectory(tests) +endif() diff --git a/common/utils/T/T_messages.txt b/common/utils/T/T_messages.txt index cd81deda2b..d2405f9033 100644 --- a/common/utils/T/T_messages.txt +++ b/common/utils/T/T_messages.txt @@ -138,11 +138,11 @@ ID = GNB_PHY_UL_PAYLOAD_RX_BITS ID = GNB_PHY_UL_FREQ_CHANNEL_ESTIMATE DESC = gNodeB channel estimation in the frequency domain GROUP = ALL:PHY:GRAPHIC:HEAVY:GNB - FORMAT = int,gNB_ID : int,rnti : int,frame : int,subframe : int,antenna : buffer,chest_t + FORMAT = int,gNB_ID : int,rnti : int,frame : int,subframe : int,antenna : int,port : buffer,chest_f ID = GNB_PHY_UL_TIME_CHANNEL_ESTIMATE DESC = gNodeB channel estimation in the time domain GROUP = ALL:PHY:GRAPHIC:HEAVY:GNB - FORMAT = int,gNB_ID : int,rnti : int,frame : int,subframe : int,antenna : buffer,chest_t + FORMAT = int,gNB_ID : int,rnti : int,frame : int,subframe : int,antenna : int,port : buffer,chest_t ID = GNB_PHY_UL_SNR_ESTIMATE DESC = gNodeB SNR estimation based on SRS GROUP = ALL:PHY:GRAPHIC:HEAVY:GNB @@ -155,6 +155,10 @@ ID = GNB_PHY_DL_OUTPUT_SIGNAL DESC = gNodeB output data in the freq domain for slots GROUP = ALL:PHY:GRAPHIC:HEAVY:GNB FORMAT = int,gNB_ID : int,frame : int,slot : int,antenna : buffer,txdata +ID = GNB_PHY_UL_SRS_TOA_NS + DESC = gNB ToA estimate from SRS (in ns) + GROUP = ALL:PHY:GNB + FORMAT = int,gNB_ID : int,rnti : int,frame : int,subframe : buffer,toa_ns #MAC logs ID = ENB_MAC_UE_DL_SDU diff --git a/common/utils/nr/nr_common.c b/common/utils/nr/nr_common.c index a842f66443..64902c6be2 100644 --- a/common/utils/nr/nr_common.c +++ b/common/utils/nr/nr_common.c @@ -874,6 +874,7 @@ void get_samplerate_and_bw(int mu, switch(n_rb) { case 270: if (threequarter_fs) { + warn_higher_threequarter_fs(n_rb, mu); *sample_rate=92.16e6; *samples_per_frame = 921600; *tx_bw = 50e6; @@ -973,6 +974,7 @@ void get_samplerate_and_bw(int mu, case 273: if (threequarter_fs) { + warn_higher_threequarter_fs(n_rb, mu); *sample_rate=184.32e6; *samples_per_frame = 1843200; *tx_bw = 100e6; diff --git a/common/utils/nr/nr_common.h b/common/utils/nr/nr_common.h index 52eb305824..732e24e501 100644 --- a/common/utils/nr/nr_common.h +++ b/common/utils/nr/nr_common.h @@ -37,6 +37,7 @@ #include #include "assertions.h" #include "common/utils/utils.h" +#include "common/utils/LOG/log.h" #define MAX_SI_GROUPS 3 #define NR_MAX_PDSCH_TBS 3824 @@ -272,6 +273,19 @@ static __attribute__((always_inline)) inline int count_bits64_with_mask(uint64_t return count_bits64(v & mask); } +static inline void warn_higher_threequarter_fs(const int n_rb, const int mu) +{ + LOG_W(PHY, + "3/4 sampling is not possible for current PRB size: %d and numerology: %d.\n " + "So 6/4 sampling is chosen to support x3xx type USRPs.\n " + "Note that this sampling rate increases fronthaul traffic, FFT buffer size and processing time by a factor of two compared " + "to 3/4 sampling rate.\n " + "Some PRACH configuration might not be supported with 6/4 FFT size.\n " + "Consider reducing the PRB size that would fit within the FFT size of 3/4 sampling\n", + n_rb, + mu); +} + uint64_t reverse_bits(uint64_t in, int n_bits); void reverse_bits_u8(uint8_t const* in, size_t sz, uint8_t* out); @@ -346,6 +360,7 @@ float get_beta_dmrs(int num_cdm_groups_no_data, bool is_type2); #define CEILIDIV(a,b) ((a+b-1)/b) #define ROUNDIDIV(a,b) (((a<<1)+b)/(b<<1)) +#define BOUNDED_EVAL(a, b, c) (min(c, max(a, b))) static const char *const duplex_mode_txt[] = {"FDD", "TDD"}; diff --git a/common/utils/system.c b/common/utils/system.c index 270c3ae321..e38d97768a 100644 --- a/common/utils/system.c +++ b/common/utils/system.c @@ -282,8 +282,13 @@ void threadCreate(pthread_t* t, void * (*func)(void*), void * param, char* name, ret=pthread_create(t, &attr, func, param); AssertFatal(ret == 0, "Error in pthread_create(): ret: %d, errno: %d\n", ret, errno); - - pthread_setname_np(*t, name); + + char short_name[16]; + strncpy(short_name, name, sizeof(short_name) - 1); + short_name[sizeof(short_name) - 1] = '\0'; + ret = pthread_setname_np(*t, short_name); + AssertFatal(ret == 0, "Error in pthread_setname_np(): ret: %d, errno: %d\n", ret, errno); + if (affinity != -1 ) { cpu_set_t cpuset; CPU_ZERO(&cpuset); diff --git a/common/utils/tests/CMakeLists.txt b/common/utils/tests/CMakeLists.txt new file mode 100644 index 0000000000..de855b5944 --- /dev/null +++ b/common/utils/tests/CMakeLists.txt @@ -0,0 +1,2 @@ +add_executable(test_tpool_vs_actors test_tpool_vs_actors.c) +target_link_libraries(test_tpool_vs_actors PRIVATE thread-pool pthread LOG minimal_lib actor) diff --git a/common/utils/tests/test_tpool_vs_actors.c b/common/utils/tests/test_tpool_vs_actors.c new file mode 100644 index 0000000000..97f2867f42 --- /dev/null +++ b/common/utils/tests/test_tpool_vs_actors.c @@ -0,0 +1,126 @@ +/* + * 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 + */ + +#include "actor.h" +#include "thread-pool.h" +#include "task.h" +#include "log.h" +#include + +#define NUM_THREADS 10 +#define NUM_JOBS 200000 + +typedef struct { + struct timespec ts; + int actor_index; +} actor_task_t; + +long long delay_table[NUM_THREADS] = {0}; + +void calculate_delay(struct timespec* send_ts, int thread_index) +{ + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + long long recv_time = ts.tv_sec * 1000000000LL + ts.tv_nsec; + long long send_time = send_ts->tv_sec * 1000000000LL + send_ts->tv_nsec; + long long delay = recv_time - send_time; + delay_table[thread_index] += delay; +} + +void tpool_function(void* args) +{ + int worker_id = get_tpool_worker_index(); + calculate_delay((struct timespec*)args, worker_id); + free(args); +} + +void actor_function(void* args) +{ + actor_task_t* actor_args = (actor_task_t*)args; + calculate_delay(&actor_args->ts, actor_args->actor_index); +} + +int main() +{ + logInit(); + tpool_t pool; + char params[NUM_THREADS * 4]; + memset(params, 0, sizeof(params)); + for (int i = 0; i < NUM_THREADS; i++) { + char buf[4]; + snprintf(buf, sizeof(buf), "%d,", -1); + strcat(params, buf); + } + + initTpool(params, &pool, true); + + // Example task + task_t task; + task.func = tpool_function; + task.args = NULL; + + // Push tasks to the thread pool + for (int i = 0; i < NUM_JOBS; i++) { + struct timespec* ts = malloc(sizeof(struct timespec)); + clock_gettime(CLOCK_MONOTONIC, ts); + task.args = ts; + pushTpool(&pool, task); + } + + // Abort the thread pool + abortTpool(&pool); + + long long sum_delay = 0; + for (int i = 0; i < NUM_THREADS; i++) { + sum_delay += delay_table[i]; + } + float average_delay = sum_delay / (NUM_JOBS * 1.0f); + printf("Average task delay on tpool: %.2f ns\n", average_delay); + + + memset(delay_table, 0, sizeof(delay_table)); + + Actor_t actors[NUM_THREADS]; + for (int i = 0; i < NUM_THREADS; i++) { + init_actor(&actors[i], "example_actor", -1); + } + + // Push tasks to the actors + for (int i = 0; i < NUM_JOBS; i++) { + notifiedFIFO_elt_t* task = newNotifiedFIFO_elt(sizeof(actor_task_t), 0, NULL, actor_function); + actor_task_t* arg_ts = (actor_task_t*)NotifiedFifoData(task); + arg_ts->actor_index = i % NUM_THREADS; + clock_gettime(CLOCK_MONOTONIC, &arg_ts->ts); + pushNotifiedFIFO(&actors[i % NUM_THREADS].fifo, task); + } + + for (int i = 0; i < NUM_THREADS; i++) { + shutdown_actor(&actors[i]); + } + + sum_delay = 0; + for (int i = 0; i < NUM_THREADS; i++) { + sum_delay += delay_table[i]; + } + average_delay = sum_delay / (NUM_JOBS * 1.0f); + printf("Average task delay on actors: %.2f ns\n", average_delay); + return 0; +} \ No newline at end of file diff --git a/common/utils/threadPool/thread-pool.c b/common/utils/threadPool/thread-pool.c index 2a31602e6e..2983c779a7 100644 --- a/common/utils/threadPool/thread-pool.c +++ b/common/utils/threadPool/thread-pool.c @@ -55,12 +55,47 @@ void pushTpool(tpool_t* tpool, task_t task) push_not_q(&q_arr[index % len_thr], task); } +// Same as above, but avoid certain tpool workers based on the mask +void pushTpool_mask(tpool_t* tpool, task_t task, uint64_t mask) +{ + DevAssert(tpool != NULL); + if (tpool->len_thr == 0) { + task.func(task.args); + return; + } + + size_t index = tpool->index++; + size_t const len_thr = tpool->len_thr; + + not_q_t* q_arr = (not_q_t*)tpool->q_arr; + + for (size_t i = 0; i < len_thr; ++i) { + int index = (i + tpool->index) % len_thr; + if ((1UL << index) & mask) + continue; + if (try_push_not_q(&q_arr[index], task)) { + return; + } + } + + while ((1ULL << (index % len_thr)) & mask) + index++; + push_not_q(&q_arr[index % len_thr], task); +} + +__thread int tpool_worker_index = -1; +int get_tpool_worker_index(void) +{ + return tpool_worker_index; +} + static void* worker_thread(void* arg) { DevAssert(arg != NULL); task_thread_args_t* args = (task_thread_args_t*)arg; int const idx = args->idx; + tpool_worker_index = idx; tpool_t* tpool = args->tpool; uint32_t const len = tpool->len_thr; @@ -87,7 +122,10 @@ static void* worker_thread(void* arg) } if (ret.t.func == NULL && ret.t.args == NULL) { - pushTpool(tpool, (task_t){.args = NULL, .func = NULL}); + tpool->dead_mask |= 1ULL << idx; + if (__builtin_popcountll(tpool->dead_mask) == tpool->len_thr) + break; + pushTpool_mask(tpool, (task_t){.args = NULL, .func = NULL}, tpool->dead_mask); break; } ret.t.func(ret.t.args); diff --git a/common/utils/threadPool/thread-pool.h b/common/utils/threadPool/thread-pool.h index 8e5d329499..75fc1487bb 100644 --- a/common/utils/threadPool/thread-pool.h +++ b/common/utils/threadPool/thread-pool.h @@ -50,6 +50,7 @@ typedef struct { void* q_arr; pthread_barrier_t barrier; + _Atomic(uint64_t) dead_mask; } tpool_t; /// @brief Push job to threadpool. May run task inline in case there are no worker threads @@ -82,4 +83,8 @@ void initFloatingCoresTpool(int nbThreads,tpool_t *pool, bool performanceMeas, c /// Convenience macro #define initTpool(PARAMPTR,TPOOLPTR, MEASURFLAG) initNamedTpool(PARAMPTR,TPOOLPTR, MEASURFLAG, NULL) + +/// Returns the index of the worker thread in the thread pool +/// @return index of the worker thread in a thread pool or -1 if not called from a thread pool worker thread +int get_tpool_worker_index(void); #endif diff --git a/doc/BUILD.md b/doc/BUILD.md index 8298204859..bf05a5cc00 100644 --- a/doc/BUILD.md +++ b/doc/BUILD.md @@ -32,7 +32,7 @@ The main oai binaries, which are tested by the Continuous Integration process ar - The 5G gNodeB: `nr-softmodem` - The 5G CU-UP: `nr-cuup` - The LTE PHY simulators: `dlsim` and `ulsim` -- The 5G PHY simulators: `nr_dlschsim`, `nr_dlsim`, `nr_pbchsim`, `nr_pucchsim`, `nr_ulschsim`, `nr_ulsim`, `polartest`, `smallblocktest`, `nr _ulsim`, `ldpctest` +- The 5G PHY simulators: `nr_dlschsim`, `nr_dlsim`, `nr_pbchsim`, `nr_pucchsim`, `nr_ulschsim`, `nr_ulsim`, `polartest`, `smallblocktest`, `nr _ulsim`, `ldpctest`, `nr_srssim` Running the [build_oai](../cmake_targets/build_oai) script also generates some utilities required to build and/or run the oai softmodem binaries: diff --git a/doc/ORAN_FHI7.2_Tutorial.md b/doc/ORAN_FHI7.2_Tutorial.md index 5f95921a64..1796e4865f 100644 --- a/doc/ORAN_FHI7.2_Tutorial.md +++ b/doc/ORAN_FHI7.2_Tutorial.md @@ -1123,24 +1123,32 @@ The assumed configuration is that with N RUs each having an M×M configuration, we effectively reach an (N×M)×(N×M) configuration. Some caveats: -- Since it's a distributed antenna, this implies that this setup will deploy a +- Even in case of a distributed antenna, this setup will deploy a single cell only -- multiple cells on different RUs are not supported. - All RUs should use the same MTU, so either "normal" (1500 byte) MTU or jumbo frames, but not a mix of both. - We tested only two RUs as of now, i.e., an 8×8 configuration. -- Testing is currently limited to 4 logical antenna ports in DL; in UL, up to 8 can be used. +- In case of a single array is currently limited to 4 logical antenna ports in DL; + in UL, up to 8 can be used. -For two RUs each using a 4x4 configuration, make sure to configure the 8x8 -configuration, i.e., set `nb_tx` and `nb_rx` under `RUs` to 8 each (NOT two -`RUs`!). Also, set the antenna port information as listed above, i.e., +For two RUs using a 8x8 configuration, i.e. a single antenna system, the reference DU configuration file is +[`gnb-du.sa.band77.273prb.fhi72.8x8-benetel650_650.conf`](../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band77.273prb.fhi72.8x8-benetel650_650.conf). -``` -pdsch_AntennaPorts_XP = 2; -pdsch_AntennaPorts_N1 = 2; -pusch_AntennaPorts = 8; -maxMIMO_layers = 2; -``` -Once testing for 8 antenna ports in DL is complete, we will change pdsch_AntennaPorts_N1 to 4. +For two RUs each using a 4x4 configuration, i.e. a distributed antenna system (DAS), +we use the analog beamforming implementation. More details can be found in +[this document](./analog_beamforming.md). It is important to note that +the configuration file should be set as a 4x4 scenario and each RU would be given a +different beam. The reference DU configuration file is [`gnb-du.sa.band77.273prb.fhi72.4x4-das-benetel650_650.conf`](../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band77.273prb.fhi72.4x4-das-benetel650_650.conf). + +DAS is enabled by setting to 1 the parameter `enable_das` in `L1` section. + +The following parameters shall be configured on the gNB in the `MACRLC` section: +- `set_analog_beamforming` +- `beam_duration` +- `beams_per_period` + +For guidance on how to set these parameters please refer to +the [analog beamforming document](./analog_beamforming.md). Next, configure the `fhi_72` section as indicated below: @@ -1202,9 +1210,6 @@ fhi_72 = { ``` -Compare also with the example (DU) configuration in -[`gnb-du.sa.band77.273prb.fhi72.8x8-benetel650_650.conf`](../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band77.273prb.fhi72.8x8-benetel650_650.conf). - Afterwards, start the gNB with the modified configuration file. If everything went well, you should see the RU counters for both RUs go up: diff --git a/doc/analog_beamforming.md b/doc/analog_beamforming.md index cc0099c283..6a11a9f94a 100644 --- a/doc/analog_beamforming.md +++ b/doc/analog_beamforming.md @@ -24,7 +24,7 @@ In the `MACRLC` section of configuration files, there are three new parameters: Setting analog beamforming to 1 or 2 changes the way FAPI beam index is treated. By setting 1, we instruct L1 to look up in Hi-PHY preconfigured DBM beam index. By setting 2, we instruct L2 to directly signal to Lo-PHY the beam index (e.g. over 7.2x fronthaul). -DAS is enabled by setting to 1 the parameter `enable_das` in the L1 section of the configuration file. In case of DAS enabled, the field `beam_weights` in `MACRLC` section can be omitted. +DAS is enabled by setting to 1 the parameter `enable_das` in the L1 section of the configuration file. In case of DAS enabled, the field `beam_weights` in `MACRLC` section can be omitted and the number of beams per period equals the total number of beams. # Implementation in OAI scheduler diff --git a/doc/cross-compile.md b/doc/cross-compile.md index 79c4bae761..20edec65b8 100644 --- a/doc/cross-compile.md +++ b/doc/cross-compile.md @@ -89,7 +89,7 @@ be defined in order to tell cmake where the host tools have been built. cd ../build-cross cmake ../../.. -GNinja -DCMAKE_TOOLCHAIN_FILE=../../../cmake_targets/cross-arm.cmake -DNATIVE_DIR=../build -ninja dlsim ulsim ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim +ninja dlsim ulsim ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim nr_srssim ninja lte-softmodem nr-softmodem nr-cuup oairu lte-uesoftmodem nr-uesoftmodem ninja params_libconfig coding rfsimulator ``` diff --git a/doc/handover-tutorial.md b/doc/handover-tutorial.md index 41d6e53aa7..92762f7d88 100644 --- a/doc/handover-tutorial.md +++ b/doc/handover-tutorial.md @@ -209,8 +209,8 @@ instead of waiting for UE measurement report.) Our CI setup consists of: - 2 USRPs B210 that are synchronized by connecting them to an Octoclock over 10MHz refrence and a PPS signal. The RU hosts are synchronized via NTP. -- Mini-Circuits RC4DAT-6G-60 programmable attenuator. To control the digital attenuator, - a Python script was developed `ci-scripts/attenuatorctl.py`. +- Mini-Circuits RC4DAT-6G-60 programmable attenuator. To control the digital + attenuator, a Python script was developed `ci-scripts/attenuatorctl.py`. - Quectel RM520 as a UE. - The setup is run using Docker `ci-scripts/yaml_files/5g_sa_f1_b210_ho`. @@ -241,14 +241,14 @@ The below configuration further enables periodic measurements, A2 event Better than Serving"). The A2 event can be disabled by setting `enable = 0`. The A3 event cannot be disabled as of now. It can be made -specific to cells or set to `cell_id = -1` which means "any cell". +specific to cells or set to `physCellId = -1` which means "any cell". `hysteresis` is a margin added to the serving cell measurements to prevent unnecessary or frequent handovers. It ensures that the neighbouring cell must show sufficiently better signal quality before a handover is triggered. It is an integer between 0 and 30. -`timeToTrigger` the time during which specific criteria for the event +`time_to_trigger` the time during which specific criteria for the event needs to be met in order to trigger a measurement report. It is an enumerated parameter and in the configuration below it is set to 1 which corresponds to `ms40` or 40 milliseconds. @@ -312,23 +312,24 @@ nr_measurement_configuration = { }; A2 = { - enable = 1; - threshold = 60; - timeToTrigger = 1; + enable = 1; + threshold = 60; + time_to_trigger = 1; }; A3 = ( { - cell_id = -1; - offset = 10; - hysteresis = 0; - timeToTrigger = 1; + physCellId = -1; + offset = 10; + hysteresis = 0; + time_to_trigger = 1; } ) }; ``` -`@include` this configuration file inside the gNB section of CU file as shown below. +`@include` this configuration file inside the gNB section of CU file as shown +below. ``` plmn_list = ({ mcc = 001; mnc = 01; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0xffffff })}); @@ -390,7 +391,7 @@ are as follows: on UTC time or a timer-based solution, which can also be applied jointly (or not) with another trigger as the measurement-based trigger. The timer-based handover trigger considers the deterministic satellite movement to predict - the time duration for which the satellite’s footprint covers a certain zone. + the time duration for which the satellite's footprint covers a certain zone. - **Timing advance value-based triggering**: This method uses the timing advance value (independently or jointly with another trigger) to trigger a @@ -432,14 +433,14 @@ We assume: * Two independent gNBs connected to the same 5GC via N2 interface. * A UE initially connected to gNB-PCI0, which will be handed over to gNB-PCI1. -* Handover is triggered by either a decision based measurement event (e.g. A3) or -telnet command. +* Handover is triggered by either a decision based measurement event (e.g. A3) +or telnet command. ## Steps to run N2 handover with OAI UE **Note for same-machine setup:** When running both gNBs on the same machine, -you need to assign a unique IP address to the second gNB to avoid network conflicts. -For example: +you need to assign a unique IP address to the second gNB to avoid network +conflicts. For example: ```sh sudo ip addr add 192.168.71.180/24 dev rfsim5g-public @@ -490,15 +491,20 @@ From gNB-PCI0, trigger handover on target gNB with PCI 1 for UE ID 1: ```sh echo ci trigger_n2_ho 1,1 | nc 127.0.0.1 9090 && echo ``` -where the input parameters correspond to the PCI of the neighbour cell and the RRC ID of the UE. +where the input parameters correspond to the PCI of the neighbor cell and the +RRC ID of the UE. This will initiate the N2 handover on the source gNB. ## Neighbour list and measurement configuration -Make sure the configuration file contains a neighbour list and measurement configuration, e.g. [neighbour-config-rfsim.conf](../../ci-scripts/conf_files/neighbour-config.conf). -This configuration can also be present in a different file and included in the gNB configuration file with `@include "neighbour-config-rfsim.conf"`. +Make sure the configuration file contains a neighbour list and measurement +configuration, e.g. [neighbour-config-rfsim.conf](../../ci-scripts/conf_files/neighbour-config.conf). +This configuration can also be present in a different file and included in the +gNB configuration file with `@include "neighbour-config-rfsim.conf"`. -For each gNB there is a `neighbour_cell_configuration` linked to its serving cell ID. +For each gNB there is a `neighbour_cell_configuration` linked to its serving +cell ID. -See the example above for `neighbour-config-ho.conf`. The same configuration is for both F1 and N2 handover. +See the example above for `neighbour-config-ho.conf`. The same configuration +is for both F1 and N2 handover. diff --git a/doc/physical-simulators.md b/doc/physical-simulators.md index b74531fd20..0f000bb16f 100644 --- a/doc/physical-simulators.md +++ b/doc/physical-simulators.md @@ -36,6 +36,7 @@ pipelines: | | `nr_pbchsim` | Broadcast channel simulation | | | `nr_prachsim` | PRACH simulation | | | `nr_psbchsim` | Sidelink simulation | +| | `nr_srssim` | SRS simulation | | Coding | `ldpctest`, `polartest`, `smallblocktest` | LDPC, Polar, and other FEC tests | ## Source Locations diff --git a/executables/nr-ue.c b/executables/nr-ue.c index f9740978cd..c920a57b88 100644 --- a/executables/nr-ue.c +++ b/executables/nr-ue.c @@ -514,6 +514,15 @@ static int handle_sync_req_from_mac(PHY_VARS_NR_UE *UE) uint64_t dl_CarrierFreq = get_carrier_frequency(fp->N_RB_DL, fp->numerology_index, cfg->dl_frequency); uint64_t ul_CarrierFreq = get_carrier_frequency(fp->N_RB_UL, fp->numerology_index, cfg->uplink_frequency); if (dl_CarrierFreq != fp->dl_CarrierFreq || ul_CarrierFreq != fp->ul_CarrierFreq) { + LOG_I(NR_PHY, + "[UE %d] RF frequency change: dl %lu->%lu Hz, ul %lu->%lu Hz (from dl_frequency=%u kHz, target_Nid_cell=%d)\n", + UE->Mod_id, + fp->dl_CarrierFreq, + dl_CarrierFreq, + fp->ul_CarrierFreq, + ul_CarrierFreq, + cfg->dl_frequency, + UE->target_Nid_cell); fp->dl_CarrierFreq = dl_CarrierFreq; fp->ul_CarrierFreq = ul_CarrierFreq; nr_rf_card_config_freq(&UE->openair0_cfg[UE->rf_map.card], ul_CarrierFreq, dl_CarrierFreq, 0); diff --git a/openair1/PHY/INIT/nr_init.c b/openair1/PHY/INIT/nr_init.c index 58ad0f2449..ad92ae6c34 100644 --- a/openair1/PHY/INIT/nr_init.c +++ b/openair1/PHY/INIT/nr_init.c @@ -295,8 +295,8 @@ void nr_phy_config_request_sim(PHY_VARS_gNB *gNB, { NR_DL_FRAME_PARMS *fp = &gNB->frame_parms; nfapi_nr_config_request_scf_t *gNB_config = &gNB->gNB_config; - //overwrite for new NR parameters + // overwrite with new NR parameters uint64_t rev_burst=0; for (int i=0; i<64; i++) rev_burst |= (((position_in_burst>>(63-i))&0x01)<carrier_config.num_tx_ant.value = fp->nb_antennas_tx; gNB_config->carrier_config.num_rx_ant.value = fp->nb_antennas_rx; - gNB_config->tdd_table.tdd_period.value = 0; - //gNB_config->subframe_config.dl_cyclic_prefix_type.value = (fp->Ncp == NORMAL) ? NFAPI_CP_NORMAL : NFAPI_CP_EXTENDED; - - if (mu==0) { - fp->dl_CarrierFreq = 2600000000;//from_nrarfcn(gNB_config->nfapi_config.rf_bands.rf_band[0],gNB_config->nfapi_config.nrarfcn.value); - fp->ul_CarrierFreq = 2600000000;//fp->dl_CarrierFreq - (get_uldl_offset(gNB_config->nfapi_config.rf_bands.rf_band[0])*100000); - fp->nr_band = 38; - // fp->threequarter_fs= 0; - } else if (mu==1) { - fp->dl_CarrierFreq = 3600000000;//from_nrarfcn(gNB_config->nfapi_config.rf_bands.rf_band[0],gNB_config->nfapi_config.nrarfcn.value); - fp->ul_CarrierFreq = 3600000000;//fp->dl_CarrierFreq - (get_uldl_offset(gNB_config->nfapi_config.rf_bands.rf_band[0])*100000); - fp->nr_band = 78; - // fp->threequarter_fs= 0; - } else if (mu==3) { - fp->dl_CarrierFreq = 27524520000;//from_nrarfcn(gNB_config->nfapi_config.rf_bands.rf_band[0],gNB_config->nfapi_config.nrarfcn.value); - fp->ul_CarrierFreq = 27524520000;//fp->dl_CarrierFreq - (get_uldl_offset(gNB_config->nfapi_config.rf_bands.rf_band[0])*100000); - fp->nr_band = 261; - // fp->threequarter_fs= 0; + switch (mu) { + case 0: + gNB->gNB_config.tdd_table.tdd_period.value = 7; + fp->dl_CarrierFreq = 2600000000; + fp->ul_CarrierFreq = 2600000000; + fp->nr_band = 38; + break; + case 1: + gNB->gNB_config.tdd_table.tdd_period.value = 6; + fp->dl_CarrierFreq = 3600000000; + fp->ul_CarrierFreq = 3600000000; + fp->nr_band = 78; + break; + case 3: + gNB->gNB_config.tdd_table.tdd_period.value = 3; + fp->dl_CarrierFreq = 27524520000; + fp->ul_CarrierFreq = 27524520000; + fp->nr_band = 261; + break; + default: + printf("unsupported numerology %d\n", mu); + exit(-1); } - fp->threequarter_fs = 0; frequency_range_t frequency_range = get_freq_range_from_band(fp->nr_band); int bw_index = get_supported_band_index(mu, frequency_range, N_RB_DL); gNB_config->carrier_config.dl_bandwidth.value = get_supported_bw_mhz(frequency_range, bw_index); diff --git a/openair1/PHY/INIT/nr_parms.c b/openair1/PHY/INIT/nr_parms.c index 880d568ca6..6fbfcb3cac 100644 --- a/openair1/PHY/INIT/nr_parms.c +++ b/openair1/PHY/INIT/nr_parms.c @@ -199,14 +199,26 @@ void set_scs_parameters (NR_DL_FRAME_PARMS *fp, int mu, int N_RB_DL) AssertFatal(1==0,"Invalid numerology index %d", mu); } - if(fp->threequarter_fs) - fp->ofdm_symbol_size = 3 * 128; - else - fp->ofdm_symbol_size = 4 * 128; + // Start with FFT size 512 + fp->ofdm_symbol_size = 512; - while(fp->ofdm_symbol_size < N_RB_DL * 12) + // Choose the right FFT size for the BW + while(fp->ofdm_symbol_size < N_RB_DL * NR_NB_SC_PER_RB) fp->ofdm_symbol_size <<= 1; + // Do 3/4 sampling + if (fp->threequarter_fs) { + const uint16_t threeq_fft_size = fp->ofdm_symbol_size * 3 / 4; + if (threeq_fft_size < (N_RB_DL * NR_NB_SC_PER_RB)) { + // 3/4 sampling FFT size not enough + warn_higher_threequarter_fs(N_RB_DL, fp->numerology_index); + // Choose 2 times 3/4 sampling + fp->ofdm_symbol_size = threeq_fft_size << 1; + } else { + fp->ofdm_symbol_size = threeq_fft_size; + } + } + fp->first_carrier_offset = fp->ofdm_symbol_size - (N_RB_DL * 12 / 2); fp->nb_prefix_samples = fp->ofdm_symbol_size / 128 * 9; fp->nb_prefix_samples0 = fp->ofdm_symbol_size / 128 * (9 + (1 << mu)); diff --git a/openair1/PHY/MODULATION/nr_modulation.h b/openair1/PHY/MODULATION/nr_modulation.h index 996a66b343..3fc1da8301 100644 --- a/openair1/PHY/MODULATION/nr_modulation.h +++ b/openair1/PHY/MODULATION/nr_modulation.h @@ -78,7 +78,7 @@ void nr_ue_layer_mapping(const c16_t *mod_symbs, const int n_layers, const int n \param sample_offset offset within rxdata (points to beginning of subframe) */ -int nr_slot_fep_ul(NR_DL_FRAME_PARMS *frame_parms, +int nr_slot_fep_ul(const NR_DL_FRAME_PARMS *frame_parms, int32_t *rxdata, int32_t *rxdataF, unsigned char symbol, @@ -111,6 +111,15 @@ void apply_nr_rotation_TX(const NR_DL_FRAME_PARMS *fp, int first_symbol, int nsymb); +void nr_ofdm_demod_and_rx_rotation(c16_t **rxdata, + c16_t **rxdataF, + const NR_DL_FRAME_PARMS *fp, + int nb_antennas, + int slot, + int slot_offsetF, + enum nr_Link linktype, + bool was_symbol_used[NR_NUMBER_OF_SYMBOLS_PER_SLOT]); + void perform_symbol_rotation(NR_DL_FRAME_PARMS *fp, double f0, c16_t *symbol_rotation); void init_symbol_rotation(NR_DL_FRAME_PARMS *fp); diff --git a/openair1/PHY/MODULATION/ofdm_mod.c b/openair1/PHY/MODULATION/ofdm_mod.c index 6cc8cbe7c5..c3311fb78a 100644 --- a/openair1/PHY/MODULATION/ofdm_mod.c +++ b/openair1/PHY/MODULATION/ofdm_mod.c @@ -326,4 +326,3 @@ void apply_nr_rotation_TX(const NR_DL_FRAME_PARMS *fp, } } } - diff --git a/openair1/PHY/MODULATION/slot_fep_nr.c b/openair1/PHY/MODULATION/slot_fep_nr.c index 58e47fc13a..c012d39d82 100644 --- a/openair1/PHY/MODULATION/slot_fep_nr.c +++ b/openair1/PHY/MODULATION/slot_fep_nr.c @@ -135,7 +135,7 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue, return 0; } -int nr_slot_fep_ul(NR_DL_FRAME_PARMS *frame_parms, +int nr_slot_fep_ul(const NR_DL_FRAME_PARMS *frame_parms, int32_t *rxdata, int32_t *rxdataF, unsigned char symbol, @@ -237,3 +237,27 @@ void apply_nr_rotation_symbol_RX(const NR_DL_FRAME_PARMS *frame_parms, 15); } } + +void nr_ofdm_demod_and_rx_rotation(c16_t **rxdata, + c16_t **rxdataF, + const NR_DL_FRAME_PARMS *fp, + int nb_antennas, + int slot, + int slot_offsetF, + enum nr_Link linktype, + bool was_symbol_used[NR_NUMBER_OF_SYMBOLS_PER_SLOT]) +{ + for (int aa = 0; aa < nb_antennas; aa++) { + for (uint8_t symbol = 0; symbol < fp->symbols_per_slot; symbol++) { + if (was_symbol_used[symbol] == true) { + nr_slot_fep_ul(fp, (int32_t *)&rxdata[aa][0], (int32_t *)&rxdataF[aa][slot_offsetF], symbol, slot, 0); + apply_nr_rotation_symbol_RX(fp, + &rxdataF[aa][slot_offsetF + symbol * fp->ofdm_symbol_size], + fp->symbol_rotation[linktype], + fp->N_RB_UL, + slot, + symbol); + } + } + } +} diff --git a/openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c b/openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c index a1fde35b00..89aba954e9 100644 --- a/openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c +++ b/openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c @@ -36,49 +36,73 @@ #define I0_SKIP_DC 1 -int nr_est_timing_advance_srs(const NR_DL_FRAME_PARMS *frame_parms, - const c16_t srs_estimated_channel_time[][frame_parms->ofdm_symbol_size]) +void nr_est_srs_timing_advance_offset(uint16_t ofdm_symbol_size, + const c16_t srs_estimated_channel_time[][NR_SRS_IDFT_OVERSAMP_FACTOR * ofdm_symbol_size], + uint8_t ant, + uint8_t N_ap, + uint32_t samples_per_frame, + uint16_t *ta_offset, + int16_t *ta_offset_nsec) { - int timing_advance = 0; - int max_val = 0; - - for (int i = 0; i < frame_parms->ofdm_symbol_size; i++) { - int temp = 0; - for (int aa = 0; aa < frame_parms->nb_antennas_rx; aa++) { - int Re = ((c16_t*)srs_estimated_channel_time[aa])[i].r; - int Im = ((c16_t*)srs_estimated_channel_time[aa])[i].i; - temp += (Re*Re/2) + (Im*Im/2); + int64_t mean_val = 0; + int64_t max_val = 0; + int32_t max_idx = 0; + int16_t srs_toa = 0; + int16_t ofdm_os_size = NR_SRS_IDFT_OVERSAMP_FACTOR * ofdm_symbol_size; + for (int k = 0; k < ofdm_os_size; k++) { + int64_t abs_val = 0; + for (int p_index = 0; p_index < N_ap; p_index++) { + abs_val += squaredMod(srs_estimated_channel_time[p_index][k]); } - if (temp > max_val) { - timing_advance = i; - max_val = temp; + mean_val += abs_val; + if (abs_val > max_val) { + max_val = abs_val; + max_idx = k; } } + max_val = max_val / N_ap; + mean_val = mean_val / (N_ap * ofdm_os_size); - if (timing_advance > frame_parms->ofdm_symbol_size/2) { - timing_advance = timing_advance - frame_parms->ofdm_symbol_size; - } + if (max_idx > ofdm_os_size >> 1) + max_idx = max_idx - ofdm_os_size; - // Scale the 16 factor in N_TA calculation in 38.213 section 4.2 according to the used FFT size - const uint16_t bw_scaling = frame_parms->ofdm_symbol_size >> 7; + // Check for detection threshold + if ((mean_val != 0) && (max_val / mean_val > NR_SRS_DETECTION_THRESHOLD)) { + srs_toa = max_idx / NR_SRS_IDFT_OVERSAMP_FACTOR; - // do some integer rounding to improve TA accuracy - int sync_pos_rounded; - if (timing_advance > 0) { - sync_pos_rounded = timing_advance + (bw_scaling >> 1) - 1; + // restrict the computation of ta_offset to antenna 0 + if (ant == 0) { + // Scale the 16 factor in N_TA calculation in 38.213 section 4.2 according to the used FFT size + const uint16_t bw_scaling = ofdm_symbol_size >> 7; + + // do some integer rounding to improve TA accuracy + int sync_pos_rounded; + if (srs_toa > 0) { + sync_pos_rounded = srs_toa + (bw_scaling >> 1) - 1; + } else { + sync_pos_rounded = srs_toa - (bw_scaling >> 1) + 1; + } + + *ta_offset = sync_pos_rounded / bw_scaling; + + // put timing advance command in 0..63 range + *ta_offset = BOUNDED_EVAL(0, *ta_offset + 31, 63); + } + *ta_offset_nsec = (max_idx * 1e9) / (NR_SRS_IDFT_OVERSAMP_FACTOR * samples_per_frame * 100); } else { - sync_pos_rounded = timing_advance - (bw_scaling >> 1) + 1; + *ta_offset = 0xFFFF; + *ta_offset_nsec = 0x8000; } - int timing_advance_update = sync_pos_rounded / bw_scaling; - - // put timing advance command in 0..63 range - timing_advance_update += 31; - - if (timing_advance_update < 0) timing_advance_update = 0; - if (timing_advance_update > 63) timing_advance_update = 63; - - return timing_advance_update; + LOG_D(NR_PHY, + "SRS estimatd ToA %d [RX ant %d]: TA offset %d, TA offset ns %d (max_val %ld, mean_val %ld, max_idx %d)\n", + srs_toa, + ant, + *ta_offset, + *ta_offset_nsec, + max_val, + mean_val, + max_idx); } void dump_nr_I0_stats(FILE *fd,PHY_VARS_gNB *gNB) { diff --git a/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c b/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c index d73a315354..f9203f488f 100644 --- a/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c +++ b/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c @@ -769,28 +769,29 @@ void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB, } // Antenna loop } -int nr_srs_channel_estimation( - const PHY_VARS_gNB *gNB, - const int frame, - const int slot, - const nfapi_nr_srs_pdu_t *srs_pdu, - const nr_srs_info_t *nr_srs_info, - const c16_t **srs_generated_signal, - c16_t srs_received_signal[][gNB->frame_parms.ofdm_symbol_size * (1 << srs_pdu->num_symbols)], - c16_t srs_received_noise[][gNB->frame_parms.ofdm_symbol_size * (1 << srs_pdu->num_symbols)], - c16_t srs_estimated_channel_freq[][1 << srs_pdu->num_ant_ports] - [gNB->frame_parms.ofdm_symbol_size * (1 << srs_pdu->num_symbols)], - c16_t srs_estimated_channel_time[][1 << srs_pdu->num_ant_ports][gNB->frame_parms.ofdm_symbol_size], - c16_t srs_estimated_channel_time_shifted[][1 << srs_pdu->num_ant_ports][gNB->frame_parms.ofdm_symbol_size], - int16_t *snr_per_rb, - int8_t *snr) +int nr_srs_channel_estimation(int ant, + int p_index, + uint16_t ofdm_symbol_size, + uint16_t first_carrier_offset, + uint8_t N_symb_SRS, + const nfapi_nr_srs_pdu_t *srs_pdu, + const nr_srs_info_t *nr_srs_info, + const c16_t *srs_generated_signal, + c16_t srs_received_signal[ofdm_symbol_size * N_symb_SRS], + c16_t srs_received_noise[ofdm_symbol_size * N_symb_SRS], + c16_t srs_estimated_channel_freq[ofdm_symbol_size * N_symb_SRS], + c16_t srs_estimated_channel_time[NR_SRS_IDFT_OVERSAMP_FACTOR * ofdm_symbol_size], + c16_t srs_estimated_channel_time_shifted[NR_SRS_IDFT_OVERSAMP_FACTOR * ofdm_symbol_size], + uint32_t *signal_power, + uint32_t *noise_power, + int16_t *noise_power_per_rb) { #ifdef SRS_DEBUG LOG_I(NR_PHY, "Calling %s function\n", __FUNCTION__); #endif - const NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms; - const uint64_t subcarrier_offset = frame_parms->first_carrier_offset + srs_pdu->bwp_start * NR_NB_SC_PER_RB; + const uint64_t subcarrier_offset = first_carrier_offset + srs_pdu->bwp_start * NR_NB_SC_PER_RB; + const uint64_t first_subcarrier = (first_carrier_offset - (ofdm_symbol_size >> 1)) + srs_pdu->bwp_start * NR_NB_SC_PER_RB; const uint8_t N_ap = 1 << srs_pdu->num_ant_ports; const uint8_t K_TC = 2 << srs_pdu->comb_size; @@ -800,249 +801,268 @@ int nr_srs_channel_estimation( if (N_ap == 4 && ((K_TC == 2 && srs_pdu->cyclic_shift >= 4) || (K_TC == 4 && srs_pdu->cyclic_shift >= 6))) { fd_cdm = 2; } + uint16_t subcarrier; - c16_t srs_ls_estimated_channel[frame_parms->ofdm_symbol_size * (1 << srs_pdu->num_symbols)]; - uint8_t mem_offset = ((16 - ((intptr_t)&srs_estimated_channel_freq[0][0][subcarrier_offset + nr_srs_info->k_0_p[0][0]])) & 0xF) - >> 2; // >> 2 <=> /sizeof(int32_t) + c16_t srs_ls_estimated_channel[ofdm_symbol_size * N_symb_SRS]; + c16_t srs_estimated_channel_freq_avg[ofdm_symbol_size]; + memset(srs_ls_estimated_channel, 0, ofdm_symbol_size * N_symb_SRS * sizeof(c16_t)); + memset(srs_estimated_channel_freq_avg, 0, ofdm_symbol_size * sizeof(c16_t)); - // filt16_end is {4096,8192,8192,8192,12288,16384,16384,16384,0,0,0,0,0,0,0,0} - // The End of OFDM symbol corresponds to the position of last 16384 in the filter - // The c16multaddVectRealComplex applies the remaining 8 zeros of filter, therefore, to avoid a buffer overflow, - // we added 8 in the array size - c16_t srs_est[frame_parms->ofdm_symbol_size * (1 << srs_pdu->num_symbols) + mem_offset + 8] __attribute__((aligned(32))); - c16_t ls_estimated = {0}; + for (int srs_symb = 0; srs_symb < N_symb_SRS; srs_symb++) { + uint16_t srs_symbol_offset = srs_symb * ofdm_symbol_size; - for (int ant = 0; ant < frame_parms->nb_antennas_rx; ant++) { - for (int p_index = 0; p_index < N_ap; p_index++) { - memset(srs_ls_estimated_channel, 0, frame_parms->ofdm_symbol_size * (1 << srs_pdu->num_symbols) * sizeof(c16_t)); - memset(srs_est, 0, (frame_parms->ofdm_symbol_size * (1 << srs_pdu->num_symbols) + mem_offset) * sizeof(c16_t)); + // Additional 4 in the array size is needed to maintain 16 byte memory alignment required for AVX2 instructions in channel + // interpolation + c16_t srs_est[ofdm_symbol_size + 4] __attribute__((aligned(32))); + memset(srs_est, 0, (ofdm_symbol_size + 4) * sizeof(c16_t)); + + // Estimate 16 byte memory alignment offset for the first SRS subcarrier to use AVX2 instructions in channel interpolation + uint8_t mem_offset = (16 - (((intptr_t)&srs_est[first_subcarrier + nr_srs_info->k_0_p[p_index][srs_symb]]) & 0xF)) + >> 2; // >> 2 <=> /sizeof(int32_t) + + c16_t ls_estimated = {0}; #ifdef SRS_DEBUG - LOG_I(NR_PHY, "====================== UE port %d --> gNB Rx antenna %i ======================\n", p_index, ant); + LOG_I(NR_PHY, "====================== UE port %d --> gNB Rx antenna %i ======================\n", p_index, ant); + LOG_I(NR_PHY, "============================== SRS symbol index %d ===========================\n", srs_symb); #endif - uint16_t subcarrier = subcarrier_offset + nr_srs_info->k_0_p[p_index][0]; - if (subcarrier >= frame_parms->ofdm_symbol_size) { - subcarrier -= frame_parms->ofdm_symbol_size; - } - - c16_t *srs_estimated_channel16 = &srs_est[subcarrier + mem_offset]; - - for (int k = 0; k < M_sc_b_SRS; k++) { - if (k % fd_cdm == 0) { - ls_estimated = (c16_t){0, 0}; - uint16_t subcarrier_cdm = subcarrier; - - for (int cdm_idx = 0; cdm_idx < fd_cdm; cdm_idx++) { - c16_t generated_srs = srs_generated_signal[p_index][subcarrier_cdm]; - c16_t received_srs = srs_received_signal[ant][subcarrier_cdm]; - // We know that nr_srs_info->srs_generated_signal_bits bits are enough to represent the real and imaginary parts of - // generated_srs. So we only need a nr_srs_info->srs_generated_signal_bits shift to ensure that the result fits into 16 - // bits. - ls_estimated = c16maddConjShift(generated_srs, received_srs, ls_estimated, nr_srs_info->srs_generated_signal_bits); - - // Subcarrier increment - subcarrier_cdm += K_TC; - if (subcarrier_cdm >= frame_parms->ofdm_symbol_size) { - subcarrier_cdm = subcarrier_cdm - frame_parms->ofdm_symbol_size; - } - } - } - - srs_ls_estimated_channel[subcarrier] = ls_estimated; - -#ifdef SRS_DEBUG - int subcarrier_log = subcarrier - subcarrier_offset; - if (subcarrier_log < 0) { - subcarrier_log = subcarrier_log + frame_parms->ofdm_symbol_size; - } - if (subcarrier_log % 12 == 0) { - LOG_I(NR_PHY, "------------------------------------ %d ------------------------------------\n", subcarrier_log / 12); - LOG_I(NR_PHY, "\t __genRe________genIm__|____rxRe_________rxIm__|____lsRe________lsIm_\n"); - } - LOG_I(NR_PHY, - "(%4i) %6i\t%6i | %6i\t%6i | %6i\t%6i\n", - subcarrier_log, - srs_generated_signal[p_index][subcarrier].r, - srs_generated_signal[p_index][subcarrier].i, - srs_received_signal[ant][subcarrier].r, - srs_received_signal[ant][subcarrier].i, - ls_estimated.r, - ls_estimated.i); -#endif - - const uint16_t sc_offset = subcarrier + mem_offset; - - // Channel interpolation - if (srs_pdu->comb_size == 0) { - if (k == 0) { // First subcarrier case - // filt8_start is {12288,8192,4096,0,0,0,0,0} - c16multaddVectRealComplex(filt8_start, &ls_estimated, srs_estimated_channel16, 8); - } else if (subcarrier < K_TC) { // Start of OFDM symbol case - // filt8_start is {12288,8192,4096,0,0,0,0,0} - srs_estimated_channel16 = &srs_est[subcarrier]; - const short *filter = mem_offset == 0 ? filt8_start : filt8_start_shift2; - c16multaddVectRealComplex(filter, &ls_estimated, srs_estimated_channel16, 8); - } else if ((subcarrier + K_TC) >= frame_parms->ofdm_symbol_size - || k == (M_sc_b_SRS - 1)) { // End of OFDM symbol or last subcarrier cases - // filt8_end is {4096,8192,12288,16384,0,0,0,0} - const short *filter = mem_offset == 0 || k == (M_sc_b_SRS - 1) ? filt8_end : filt8_end_shift2; - c16multaddVectRealComplex(filter, &ls_estimated, srs_estimated_channel16, 8); - } else if (k % 2 == 1) { // 1st middle case - // filt8_middle2 is {4096,8192,8192,8192,4096,0,0,0} - c16multaddVectRealComplex(filt8_middle2, &ls_estimated, srs_estimated_channel16, 8); - } else if (k % 2 == 0) { // 2nd middle case - // filt8_middle4 is {0,0,4096,8192,8192,8192,4096,0} - c16multaddVectRealComplex(filt8_middle4, &ls_estimated, srs_estimated_channel16, 8); - srs_estimated_channel16 = &srs_est[sc_offset]; - } - } else { - if (k == 0) { // First subcarrier case - // filt16_start is {12288,8192,8192,8192,4096,0,0,0,0,0,0,0,0,0,0,0} - c16multaddVectRealComplex(filt16_start, &ls_estimated, srs_estimated_channel16, 16); - } else if (subcarrier < K_TC) { // Start of OFDM symbol case - srs_estimated_channel16 = &srs_est[sc_offset]; - // filt16_start is {12288,8192,8192,8192,4096,0,0,0,0,0,0,0,0,0,0,0} - c16multaddVectRealComplex(filt16_start, &ls_estimated, srs_estimated_channel16, 16); - } else if ((subcarrier + K_TC) >= frame_parms->ofdm_symbol_size - || k == (M_sc_b_SRS - 1)) { // End of OFDM symbol or last subcarrier cases - // filt16_end is {4096,8192,8192,8192,12288,16384,16384,16384,0,0,0,0,0,0,0,0} - c16multaddVectRealComplex(filt16_end, &ls_estimated, srs_estimated_channel16, 16); - } else { // Middle case - // filt16_middle4 is {4096,8192,8192,8192,8192,8192,8192,8192,4096,0,0,0,0,0,0,0} - c16multaddVectRealComplex(filt16_middle4, &ls_estimated, srs_estimated_channel16, 16); - srs_estimated_channel16 = &srs_est[sc_offset]; - } - } - - // Subcarrier increment - subcarrier += K_TC; - if (subcarrier >= frame_parms->ofdm_symbol_size) { - subcarrier -= frame_parms->ofdm_symbol_size; - } - - } // for (int k = 0; k < M_sc_b_SRS; k++) - - memcpy(srs_estimated_channel_freq[ant][p_index], - &srs_est[mem_offset], - (frame_parms->ofdm_symbol_size * (1 << srs_pdu->num_symbols)) * sizeof(c16_t)); - -#ifdef SRS_DEBUG - subcarrier = subcarrier_offset + nr_srs_info->k_0_p[p_index][0]; - if (subcarrier >= frame_parms->ofdm_symbol_size) { - subcarrier -= frame_parms->ofdm_symbol_size; - } - - for (int k = 0; k < K_TC * M_sc_b_SRS; k++) { - int subcarrier_log = subcarrier - subcarrier_offset; - if (subcarrier_log < 0) { - subcarrier_log = subcarrier_log + frame_parms->ofdm_symbol_size; - } - - if (subcarrier_log % 12 == 0) { - LOG_I(NR_PHY, "------------------------------------- %d -------------------------------------\n", subcarrier_log / 12); - LOG_I(NR_PHY, "\t __lsRe__________lsIm__|____intRe_______intIm__|____noiRe_______noiIm__\n"); - } - - LOG_I(NR_PHY, - "(%4i) %6i\t%6i | %6i\t%6i | %6i\t%6i\n", - subcarrier_log, - srs_ls_estimated_channel[subcarrier].r, - srs_ls_estimated_channel[subcarrier].i, - srs_estimated_channel_freq[ant][p_index][subcarrier].r, - srs_estimated_channel_freq[ant][p_index][subcarrier].i, - srs_received_noise[ant][subcarrier].r, - srs_received_noise[ant][subcarrier].i); - - // Subcarrier increment - subcarrier++; - if (subcarrier >= frame_parms->ofdm_symbol_size) { - subcarrier -= frame_parms->ofdm_symbol_size; - } - } -#endif - - // Convert to time domain - freq2time(gNB->frame_parms.ofdm_symbol_size, - (int16_t *)srs_estimated_channel_freq[ant][p_index], - (int16_t *)srs_estimated_channel_time[ant][p_index]); - - memcpy(srs_estimated_channel_time_shifted[ant][p_index], - &srs_estimated_channel_time[ant][p_index][gNB->frame_parms.ofdm_symbol_size >> 1], - (gNB->frame_parms.ofdm_symbol_size >> 1) * sizeof(c16_t)); - - memcpy(&srs_estimated_channel_time_shifted[ant][p_index][gNB->frame_parms.ofdm_symbol_size >> 1], - srs_estimated_channel_time[ant][p_index], - (gNB->frame_parms.ofdm_symbol_size >> 1) * sizeof(c16_t)); - - } // for (int p_index = 0; p_index < N_ap; p_index++) - } // for (int ant = 0; ant < frame_parms->nb_antennas_rx; ant++) - - // Compute wideband SNR - int tot_subcarriers = m_SRS_b * NR_NB_SC_PER_RB; - uint32_t signal_power = 0; - uint32_t noise_power = 0; - for (int ant = 0; ant < frame_parms->nb_antennas_rx; ant++) { - for (int p_index = 0; p_index < N_ap; p_index++) { - uint16_t subcarrier0 = subcarrier_offset + nr_srs_info->k_0_p[p_index][0]; - if (subcarrier0 >= frame_parms->ofdm_symbol_size) { - subcarrier0 -= frame_parms->ofdm_symbol_size; - } - if (subcarrier0 + tot_subcarriers < frame_parms->ofdm_symbol_size) { - signal_power += signal_energy_nodc(&srs_estimated_channel_freq[ant][p_index][subcarrier0], tot_subcarriers); - if (p_index == 0) - noise_power += signal_energy_nodc(&srs_received_noise[ant][subcarrier0], tot_subcarriers); - } else { - int size1 = frame_parms->ofdm_symbol_size - subcarrier0; - int size2 = tot_subcarriers - size1; - uint64_t signal_power_p1 = signal_energy_nodc(&srs_estimated_channel_freq[ant][p_index][subcarrier0], size1) * size1; - uint64_t signal_power_p2 = signal_energy_nodc(&srs_estimated_channel_freq[ant][p_index][0], size2) * size2; - signal_power += (signal_power_p1 + signal_power_p2) / tot_subcarriers; - if (p_index == 0) { - uint64_t noise_power_p1 = signal_energy_nodc(&srs_received_noise[ant][subcarrier0], size1) * size1; - uint64_t noise_power_p2 = signal_energy_nodc(&srs_received_noise[ant][0], size2) * size2; - noise_power += (noise_power_p1 + noise_power_p2) / tot_subcarriers; - } - } + subcarrier = subcarrier_offset + nr_srs_info->k_0_p[p_index][srs_symb]; + if (subcarrier >= ofdm_symbol_size) { + subcarrier -= ofdm_symbol_size; } + + uint16_t subcarrier_abs = mem_offset + first_subcarrier + nr_srs_info->k_0_p[p_index][srs_symb]; + c16_t *srs_estimated_channel16 = &srs_est[subcarrier_abs]; + + for (int k = 0; k < M_sc_b_SRS; k++) { + if (k % fd_cdm == 0) { + ls_estimated = (c16_t){0, 0}; + uint16_t subcarrier_cdm = subcarrier; + + for (int cdm_idx = 0; cdm_idx < fd_cdm; cdm_idx++) { + c16_t generated_srs = srs_generated_signal[srs_symbol_offset + subcarrier_cdm]; + c16_t received_srs = srs_received_signal[srs_symbol_offset + subcarrier_cdm]; + // We know that nr_srs_info->srs_generated_signal_bits bits are enough to represent the real and imaginary parts of + // generated_srs. So we only need a nr_srs_info->srs_generated_signal_bits shift to ensure that the result fits into 16 + // bits. + ls_estimated = c16maddConjShift(generated_srs, received_srs, ls_estimated, nr_srs_info->srs_generated_signal_bits); + + // Subcarrier increment + subcarrier_cdm += K_TC; + if (subcarrier_cdm >= ofdm_symbol_size) { + subcarrier_cdm = subcarrier_cdm - ofdm_symbol_size; + } + } + } + + srs_ls_estimated_channel[srs_symbol_offset + subcarrier] = ls_estimated; + +#ifdef SRS_DEBUG + int subcarrier_log = subcarrier - subcarrier_offset; + if (subcarrier_log < 0) { + subcarrier_log = subcarrier_log + ofdm_symbol_size; + } + if (subcarrier_log % 12 == 0) { + LOG_I(NR_PHY, "------------------------------------ %d ------------------------------------\n", subcarrier_log / 12); + LOG_I(NR_PHY, "\t __genRe________genIm__|____rxRe_________rxIm__|____lsRe________lsIm_\n"); + } + LOG_I(NR_PHY, + "(%4i) %6i\t%6i | %6i\t%6i | %6i\t%6i\n", + subcarrier_log, + srs_generated_signal[srs_symbol_offset + subcarrier].r, + srs_generated_signal[srs_symbol_offset + subcarrier].i, + srs_received_signal[srs_symbol_offset + subcarrier].r, + srs_received_signal[srs_symbol_offset + subcarrier].i, + ls_estimated.r, + ls_estimated.i); +#endif + + // Channel interpolation + if (srs_pdu->comb_size == 0) { + if (k == 0) { // First subcarrier case + // filt8_start is {12288,8192,4096,0,0,0,0,0} + c16multaddVectRealComplex(filt8_start, &ls_estimated, srs_estimated_channel16, 8); + } else if (k == (M_sc_b_SRS - 1)) { // End of OFDM symbol or last subcarrier cases + // filt8_end is {4096,8192,12288,16384,0,0,0,0} + c16multaddVectRealComplex(filt8_end, &ls_estimated, srs_estimated_channel16, 8); + } else if (k % 2 == 1) { // 1st middle case + // filt8_middle2 is {4096,8192,8192,8192,4096,0,0,0} + c16multaddVectRealComplex(filt8_middle2, &ls_estimated, srs_estimated_channel16, 8); + } else if (k % 2 == 0) { // 2nd middle case + // filt8_middle4 is {0,0,4096,8192,8192,8192,4096,0} + c16multaddVectRealComplex(filt8_middle4, &ls_estimated, srs_estimated_channel16, 8); + srs_estimated_channel16 = &srs_est[subcarrier_abs]; + } + } else { + if (k == 0) { // First subcarrier case + // filt16_start is {12288,8192,8192,8192,4096,0,0,0,0,0,0,0,0,0,0,0} + c16multaddVectRealComplex(filt16_start, &ls_estimated, srs_estimated_channel16, 16); + } else if (k == (M_sc_b_SRS - 1)) { // End of OFDM symbol or last subcarrier cases + // filt16_end is {4096,8192,8192,8192,12288,16384,16384,16384,0,0,0,0,0,0,0,0} + c16multaddVectRealComplex(filt16_end, &ls_estimated, srs_estimated_channel16, 16); + } else { // Middle case + // filt16_middle4 is {4096,8192,8192,8192,8192,8192,8192,8192,4096,0,0,0,0,0,0,0} + c16multaddVectRealComplex(filt16_middle4, &ls_estimated, srs_estimated_channel16, 16); + srs_estimated_channel16 = &srs_est[subcarrier_abs]; + } + } + + // Subcarrier increment + subcarrier += K_TC; + if (subcarrier >= ofdm_symbol_size) { + subcarrier -= ofdm_symbol_size; + } + + subcarrier_abs += K_TC; + + } // for (int k = 0; k < M_sc_b_SRS; k++) + + memcpy(&srs_estimated_channel_freq[srs_symbol_offset], &srs_est[mem_offset], ofdm_symbol_size * sizeof(c16_t)); + + // Average srs channel estimates over multiple symbols + int16_t scale_factor = (1 << 15) / N_symb_SRS; + multadd_complex_vector_real_scalar(&srs_estimated_channel_freq[srs_symbol_offset], + scale_factor, + srs_estimated_channel_freq_avg, + ofdm_symbol_size); + +#ifdef SRS_DEBUG + subcarrier = subcarrier_offset + nr_srs_info->k_0_p[p_index][srs_symb]; + if (subcarrier >= ofdm_symbol_size) { + subcarrier -= ofdm_symbol_size; + } + + subcarrier_abs = first_subcarrier + nr_srs_info->k_0_p[p_index][srs_symb]; + + for (int k = 0; k < K_TC * M_sc_b_SRS; k++) { + int subcarrier_log = subcarrier - subcarrier_offset; + if (subcarrier_log < 0) { + subcarrier_log = subcarrier_log + ofdm_symbol_size; + } + + if (subcarrier_log % 12 == 0) { + LOG_I(NR_PHY, + "---------------------------- PRB %d, symbol %d -------------------------------\n", + subcarrier_log / 12, + srs_symb); + LOG_I(NR_PHY, "\t __lsRe__________lsIm__|____intRe_______intIm__|____noiRe_______noiIm__\n"); + } + + LOG_I(NR_PHY, + "(%4i) %6i\t%6i | %6i\t%6i | %6i\t%6i\n", + subcarrier_log, + srs_ls_estimated_channel[srs_symbol_offset + subcarrier].r, + srs_ls_estimated_channel[srs_symbol_offset + subcarrier].i, + srs_estimated_channel_freq[srs_symbol_offset + subcarrier_abs].r, + srs_estimated_channel_freq[srs_symbol_offset + subcarrier_abs].i, + srs_received_noise[srs_symbol_offset + subcarrier].r, + srs_received_noise[srs_symbol_offset + subcarrier].i); + + // Subcarrier increment + subcarrier++; + if (subcarrier >= ofdm_symbol_size) { + subcarrier -= ofdm_symbol_size; + } + subcarrier_abs++; + } +#endif } - signal_power = max(signal_power / (frame_parms->nb_antennas_rx * N_ap), 1); - noise_power = max(noise_power / (frame_parms->nb_antennas_rx), 1); - if (signal_power == 0) { + + // Convert to time domain + int16_t ofdm_symbol_size_half = ofdm_symbol_size >> 1; + int16_t ofdm_os_size = NR_SRS_IDFT_OVERSAMP_FACTOR * ofdm_symbol_size; + int16_t ofdm_os_size_half = ofdm_os_size >> 1; + int16_t start_offset = ofdm_os_size - ofdm_symbol_size_half; + + c16_t chF_interpol[ofdm_os_size] __attribute__((aligned(32))); + memset(chF_interpol, 0, sizeof(chF_interpol)); + + // Place SRS channel estimates in FFT shifted format for oversampling + memcpy(&chF_interpol[0], &srs_estimated_channel_freq_avg[ofdm_symbol_size_half], ofdm_symbol_size_half * sizeof(c16_t)); + memcpy(&chF_interpol[start_offset], &srs_estimated_channel_freq_avg[0], ofdm_symbol_size_half * sizeof(c16_t)); + + // Convert to time domain oversampled + freq2time(ofdm_os_size, (int16_t *)chF_interpol, (int16_t *)srs_estimated_channel_time); + + // Do FFT shift + memcpy(srs_estimated_channel_time_shifted, &srs_estimated_channel_time[ofdm_os_size_half], ofdm_os_size_half * sizeof(c16_t)); + + memcpy(&srs_estimated_channel_time_shifted[ofdm_os_size_half], srs_estimated_channel_time, ofdm_os_size_half * sizeof(c16_t)); + + // Compute wideband SNR on the symbol 0 + int tot_subcarriers = m_SRS_b * NR_NB_SC_PER_RB; + + uint16_t subcarrier_abs = first_subcarrier + nr_srs_info->k_0_p[p_index][0]; + if (subcarrier_abs + tot_subcarriers < ofdm_symbol_size_half) { + *signal_power = signal_energy_nodc(&srs_estimated_channel_freq[subcarrier_abs], tot_subcarriers) / tot_subcarriers; + } else { + int size1 = ofdm_symbol_size_half - subcarrier_abs; + int size2 = tot_subcarriers - size1; + uint64_t signal_power_p1 = signal_energy_nodc(&srs_estimated_channel_freq[subcarrier_abs], size1) * size1; + uint64_t signal_power_p2 = signal_energy_nodc(&srs_estimated_channel_freq[ofdm_symbol_size_half], size2) * size2; + *signal_power = (signal_power_p1 + signal_power_p2) / tot_subcarriers; + } + + if (*signal_power == 0) { LOG_W(NR_PHY, "Received SRS signal power is 0\n"); return -1; } - *snr = dB_fixed(signal_power) - dB_fixed(noise_power); - // Compute SNR per RB - uint16_t subcarrier = subcarrier_offset + nr_srs_info->k_0_p[0][0]; - for (int rb = 0; rb < m_SRS_b; rb++) { - if (subcarrier >= frame_parms->ofdm_symbol_size) { - subcarrier -= frame_parms->ofdm_symbol_size; + subcarrier = subcarrier_offset + nr_srs_info->k_0_p[p_index][0]; + if (subcarrier >= ofdm_symbol_size) { + subcarrier -= ofdm_symbol_size; + } + + if (p_index == 0) { + if (subcarrier + tot_subcarriers < ofdm_symbol_size) { + *noise_power = signal_energy_nodc(&srs_received_noise[subcarrier], tot_subcarriers) / tot_subcarriers; + } else { + int size1 = ofdm_symbol_size - subcarrier; + int size2 = tot_subcarriers - size1; + uint64_t noise_power_p1 = signal_energy_nodc(&srs_received_noise[subcarrier], size1) * size1; + uint64_t noise_power_p2 = signal_energy_nodc(&srs_received_noise[0], size2) * size2; + *noise_power = (noise_power_p1 + noise_power_p2) / tot_subcarriers; } - uint32_t noise_power_per_rb = 0; - for (int ant = 0; ant < frame_parms->nb_antennas_rx; ant++) { - if (subcarrier + NR_NB_SC_PER_RB < frame_parms->ofdm_symbol_size) { - noise_power_per_rb += signal_energy_nodc(&srs_received_noise[ant][subcarrier], NR_NB_SC_PER_RB); - } else { - int size1 = frame_parms->ofdm_symbol_size - subcarrier; - int size2 = NR_NB_SC_PER_RB - size1; - uint32_t noise_power_per_rb1 = signal_energy_nodc(&srs_received_noise[ant][subcarrier], size1) * size1; - uint32_t noise_power_per_rb2 = signal_energy_nodc(&srs_received_noise[ant][0], size2) * size2; - noise_power_per_rb += (noise_power_per_rb1 + noise_power_per_rb2) / NR_NB_SC_PER_RB; + } + + // Compute SNR per RB for port 0 and symbol 0 + if (p_index == 0) { + subcarrier = subcarrier_offset + nr_srs_info->k_0_p[p_index][0]; + for (int rb = 0; rb < m_SRS_b; rb++) { + if (subcarrier >= ofdm_symbol_size) { + subcarrier -= ofdm_symbol_size; } - } - noise_power_per_rb = max(noise_power_per_rb / (frame_parms->nb_antennas_rx), 1); - snr_per_rb[rb] = dB_fixed(signal_power) - dB_fixed(noise_power_per_rb); - subcarrier += NR_NB_SC_PER_RB; + if (subcarrier + NR_NB_SC_PER_RB < ofdm_symbol_size) { + noise_power_per_rb[rb] += signal_energy_nodc(&srs_received_noise[subcarrier], NR_NB_SC_PER_RB); + } else { + int size1 = ofdm_symbol_size - subcarrier; + int size2 = NR_NB_SC_PER_RB - size1; + uint32_t noise_power_per_rb1 = signal_energy_nodc(&srs_received_noise[subcarrier], size1) * size1; + uint32_t noise_power_per_rb2 = signal_energy_nodc(&srs_received_noise[0], size2) * size2; + noise_power_per_rb[rb] += (noise_power_per_rb1 + noise_power_per_rb2) / NR_NB_SC_PER_RB; + } + noise_power_per_rb[rb] = max(noise_power_per_rb[rb], 1); + subcarrier += NR_NB_SC_PER_RB; #ifdef SRS_DEBUG - LOG_I(NR_PHY, "[RB %3i] noise_power_per_rb = %i, snr_per_rb = %i dB\n", rb, noise_power_per_rb, snr_per_rb[rb]); + LOG_I(NR_PHY, + "[RB %3i] noise_power_per_rb = %i, SNR_per_rb = %i dB\n", + rb, + noise_power_per_rb[rb], + dB_fixed(*signal_power) - dB_fixed(noise_power_per_rb[rb])); #endif + } } #ifdef SRS_DEBUG - LOG_I(NR_PHY, "signal_power = %i dB, noise_power = %i dB, SNR = %i dB\n", dB_fixed(signal_power), dB_fixed(noise_power), *snr); + int32_t signal_power_dB = dB_fixed(*signal_power); + int32_t noise_power_dB = dB_fixed(*noise_power); + LOG_I(NR_PHY, + "signal_power = %i dB, noise_power = %i dB, SNR = %i dB\n", + signal_power_dB, + noise_power_dB, + signal_power_dB - noise_power_dB); #endif return 0; diff --git a/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h b/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h index 7e0a2a97bd..21ecb39427 100644 --- a/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h +++ b/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h @@ -59,8 +59,13 @@ void dump_nr_I0_stats(FILE *fd,PHY_VARS_gNB *gNB); void gNB_I0_measurements(PHY_VARS_gNB *gNB, int slot, int first_symb, int num_symb, uint32_t rb_mask_ul[14][9]); -int nr_est_timing_advance_srs(const NR_DL_FRAME_PARMS *frame_parms, - const c16_t srs_estimated_channel_time[][frame_parms->ofdm_symbol_size]); +void nr_est_srs_timing_advance_offset(uint16_t ofdm_symbol_size, + const c16_t srs_estimated_channel_time[][NR_SRS_IDFT_OVERSAMP_FACTOR * ofdm_symbol_size], + uint8_t ant, + uint8_t N_ap, + uint32_t samples_per_frame, + uint16_t *timing_advance_offset, + int16_t *timing_advance_offset_nsec); void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB, NR_DL_FRAME_PARMS *frame_parms, @@ -70,21 +75,22 @@ void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB, unsigned char symbol, uint32_t nb_re_pusch); -int nr_srs_channel_estimation( - const PHY_VARS_gNB *gNB, - const int frame, - const int slot, - const nfapi_nr_srs_pdu_t *srs_pdu, - const nr_srs_info_t *nr_srs_info, - const c16_t **srs_generated_signal, - c16_t srs_received_signal[][gNB->frame_parms.ofdm_symbol_size * (1 << srs_pdu->num_symbols)], - c16_t srs_received_noise[][gNB->frame_parms.ofdm_symbol_size * (1 << srs_pdu->num_symbols)], - c16_t srs_estimated_channel_freq[][1 << srs_pdu->num_ant_ports] - [gNB->frame_parms.ofdm_symbol_size * (1 << srs_pdu->num_symbols)], - c16_t srs_estimated_channel_time[][1 << srs_pdu->num_ant_ports][gNB->frame_parms.ofdm_symbol_size], - c16_t srs_estimated_channel_time_shifted[][1 << srs_pdu->num_ant_ports][gNB->frame_parms.ofdm_symbol_size], - int16_t *snr_per_rb, - int8_t *snr); +int nr_srs_channel_estimation(int ant, + int p_index, + uint16_t ofdm_symbol_size, + uint16_t first_carrier_offset, + uint8_t N_symb_SRS, + const nfapi_nr_srs_pdu_t *srs_pdu, + const nr_srs_info_t *nr_srs_info, + const c16_t *srs_generated_signal, + c16_t srs_received_signal[ofdm_symbol_size * N_symb_SRS], + c16_t srs_received_noise[ofdm_symbol_size * N_symb_SRS], + c16_t srs_estimated_channel_freq[ofdm_symbol_size * N_symb_SRS], + c16_t srs_estimated_channel_time[NR_SRS_IDFT_OVERSAMP_FACTOR * ofdm_symbol_size], + c16_t srs_estimated_channel_time_shifted[NR_SRS_IDFT_OVERSAMP_FACTOR * ofdm_symbol_size], + uint32_t *signal_power, + uint32_t *noise_power, + int16_t *noise_power_per_rb); void nr_freq_equalization(NR_DL_FRAME_PARMS *frame_parms, c16_t *rxdataF_comp, diff --git a/openair1/PHY/NR_TRANSPORT/nr_transport_proto.h b/openair1/PHY/NR_TRANSPORT/nr_transport_proto.h index 29fca5975e..29ae5bb612 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_transport_proto.h +++ b/openair1/PHY/NR_TRANSPORT/nr_transport_proto.h @@ -231,6 +231,22 @@ int nr_get_srs_signal(PHY_VARS_gNB *gNB, c16_t srs_received_signal[][gNB->frame_parms.ofdm_symbol_size * (1 << srs_pdu->num_symbols)], c16_t srs_received_noise[][gNB->frame_parms.ofdm_symbol_size * (1 << srs_pdu->num_symbols)]); +void nr_srs_rx_procedures(PHY_VARS_gNB *gNB, + int frame_rx, + int slot_rx, + uint8_t nb_antennas_rx, + uint8_t N_ap, + uint8_t N_symb_SRS, + uint16_t ofdm_symbol_size, + NR_gNB_SRS_t *srs, + nr_srs_info_t *nr_srs_info, + int *srs_est, + c16_t srs_estimated_channel_freq[][N_ap][ofdm_symbol_size * N_symb_SRS], + c16_t srs_estimated_channel_time[][N_ap][NR_SRS_IDFT_OVERSAMP_FACTOR * ofdm_symbol_size], + int16_t *snr_per_rb, + uint16_t *timing_advance_offset, + int16_t *timing_advance_offset_nsec); + int get_nr_prach_duration(uint8_t prach_format); void free_nr_prach_entry(prach_list_t *, prach_item_t *); diff --git a/openair1/PHY/NR_TRANSPORT/srs_rx.c b/openair1/PHY/NR_TRANSPORT/srs_rx.c index d5731557a0..5d84c11c99 100644 --- a/openair1/PHY/NR_TRANSPORT/srs_rx.c +++ b/openair1/PHY/NR_TRANSPORT/srs_rx.c @@ -56,7 +56,8 @@ void nr_fill_srs(PHY_VARS_gNB *gNB, frame_t frame, slot_t slot, nfapi_nr_srs_pdu srs->active = true; srs->beam_nb = 0; if (gNB->common_vars.beam_id) { - int bitmap = SL_to_bitmap(srs_pdu->time_start_position, 1 << srs_pdu->num_symbols); + const uint8_t l0 = gNB->frame_parms.symbols_per_slot - 1 - srs_pdu->time_start_position; + int bitmap = SL_to_bitmap(l0, 1 << srs_pdu->num_symbols); int fapi_beam_idx = srs_pdu->beamforming.prgs_list[0].dig_bf_interface_list[0].beam_idx; srs->beam_nb = beam_index_allocation(gNB->enable_analog_das, fapi_beam_idx, @@ -84,7 +85,7 @@ int nr_get_srs_signal(PHY_VARS_gNB *gNB, const NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms; const uint16_t n_symbols = (slot % RU_RX_SLOT_DEPTH) * frame_parms->symbols_per_slot; // number of symbols until this slot - const uint8_t l0 = srs_pdu->time_start_position; // starting symbol in this slot + const uint8_t l0 = frame_parms->symbols_per_slot - 1 - srs_pdu->time_start_position; // starting symbol in this slot const uint64_t symbol_offset = (n_symbols + l0) * frame_parms->ofdm_symbol_size; const uint64_t subcarrier_offset = frame_parms->first_carrier_offset + srs_pdu->bwp_start * NR_NB_SC_PER_RB; diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_ntn_l1.c b/openair1/PHY/NR_UE_TRANSPORT/nr_ntn_l1.c index 51031d5449..deae817a36 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_ntn_l1.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_ntn_l1.c @@ -48,8 +48,6 @@ void fix_ntn_epoch_hfn(PHY_VARS_NR_UE *UE, int hfn, int frame) LOG_I(PHY, "setting epoch_hfn = %d\n", *epoch_hfn); } -#define SPEED_OF_LIGHT 299792458 - // calculate TA and Doppler based on the NTN-Config, if abs_subframe_tx < 0 then apply only Doppler void apply_ntn_timing_advance_and_doppler(PHY_VARS_NR_UE *UE, const NR_DL_FRAME_PARMS *fp, int abs_subframe_tx) { diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c b/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c index 9405315e04..05a251d999 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c @@ -58,34 +58,19 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t fapi_nr_config_request_t *nrUE_config = &ue->nrUE_config; fapi_nr_ul_config_prach_pdu *prach_pdu = &ue->prach_vars[gNB_id]->prach_pdu; - uint8_t Mod_id, fd_occasion, preamble_index, restricted_set, not_found; - uint16_t rootSequenceIndex, prach_fmt_id, NCS, preamble_offset = 0; - const uint16_t *prach_root_sequence_map; - uint16_t preamble_shift = 0, preamble_index0, n_shift_ra, n_shift_ra_bar, d_start=INT16_MAX, numshift, N_ZC, u, offset, offset2, first_nonzero_root_idx; - c16_t prach[(4688 + 4 * 24576) * 2] __attribute__((aligned(32))) = {0}; - c16_t prachF_tmp[(4688 + 4 * 24576) * 4] __attribute__((aligned(32))) = {0}; - - int Ncp = 0; - int prach_start, prach_sequence_length, prach_len, dftlen, mu, n_ra_prb, k, prachStartSymbol; - - fd_occasion = prach_pdu->num_ra; - prach_len = 0; - dftlen = 0; - first_nonzero_root_idx = 0; - int16_t amp = prach_pdu->prach_tx_power; - c16_t *prachF = prachF_tmp; - Mod_id = ue->Mod_id; - prach_sequence_length = nrUE_config->prach_config.prach_sequence_length; - N_ZC = (prach_sequence_length == 0) ? 839:139; - mu = nrUE_config->prach_config.prach_sub_c_spacing; - restricted_set = prach_pdu->restricted_set; - rootSequenceIndex = prach_pdu->root_seq_id; - n_ra_prb = nrUE_config->prach_config.num_prach_fd_occasions_list[fd_occasion].k1,//prach_pdu->freq_msg1; - NCS = prach_pdu->num_cs; - prach_fmt_id = prach_pdu->prach_format; - preamble_index = prach_pdu->ra_PreambleIndex; - k = 12*n_ra_prb - 6*fp->N_RB_UL; - prachStartSymbol = prach_pdu->prach_start_symbol; + const int fd_occasion = prach_pdu->num_ra; + const int16_t amp = prach_pdu->prach_tx_power; + const int prach_sequence_length = nrUE_config->prach_config.prach_sequence_length; + const int N_ZC = (prach_sequence_length == 0) ? 839 : 139; + const int mu = nrUE_config->prach_config.prach_sub_c_spacing; + const int restricted_set = prach_pdu->restricted_set; + const int rootSequenceIndex = prach_pdu->root_seq_id; + const int n_ra_prb = nrUE_config->prach_config.num_prach_fd_occasions_list[fd_occasion].k1; // prach_pdu->freq_msg1; + const int NCS = prach_pdu->num_cs; + const int prach_fmt_id = prach_pdu->prach_format; + const int preamble_index = prach_pdu->ra_PreambleIndex; + int k = 12 * n_ra_prb - 6 * fp->N_RB_UL; + const int prachStartSymbol = prach_pdu->prach_start_symbol; LOG_D(PHY,"Generate NR PRACH %d.%d\n", frame, slot); @@ -97,6 +82,7 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t nrUE_config->prach_config.root_seq_computed = 1; } + int prach_start; if (prachStartSymbol == 0) { prach_start = 0; } else if (fp->slots_per_subframe == 1) { @@ -122,29 +108,30 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t * NOTE: Restricted set type B is not implemented *************************************************************************/ - prach_root_sequence_map = (prach_sequence_length == 0) ? prach_root_sequence_map_0_3 : prach_root_sequence_map_abc; - + const uint16_t *prach_root_sequence_map = + (prach_sequence_length == 0) ? prach_root_sequence_map_0_3 : prach_root_sequence_map_abc; + int preamble_offset, preamble_shift = 0, first_nonzero_root_idx = 0; if (restricted_set == 0) { // This is the relative offset (for unrestricted case) in the root sequence table (5.7.2-4 from 36.211) for the given preamble index - preamble_offset = ((NCS==0)? preamble_index : (preamble_index/(N_ZC/NCS))); + preamble_offset = NCS == 0 ? preamble_index : preamble_index / (N_ZC / NCS); // This is the \nu corresponding to the preamble index - preamble_shift = (NCS==0)? 0 : (preamble_index % (N_ZC/NCS)); + preamble_shift = NCS == 0 ? 0 : preamble_index % (N_ZC / NCS); preamble_shift *= NCS; } else { // This is the high-speed case - #ifdef NR_PRACH_DEBUG - LOG_I(PHY, "PRACH [UE %d] High-speed mode, NCS %d\n", Mod_id, NCS); - #endif +#ifdef NR_PRACH_DEBUG + LOG_I(PHY, "PRACH [UE %d] High-speed mode, NCS %d\n", ue->Mod_id, NCS); +#endif - not_found = 1; uint16_t nr_du[NR_PRACH_SEQ_LEN_L - 1]; nr_fill_du(N_ZC, prach_root_sequence_map, nr_du); - preamble_index0 = preamble_index; + int preamble_index0 = preamble_index; // set preamble_offset to initial rootSequenceIndex and look if we need more root sequences for this // preamble index and find the corresponding cyclic shift preamble_offset = 0; // relative rootSequenceIndex; - while (not_found == 1) { + bool not_found = true; + while (not_found) { // current root depending on rootSequenceIndex and preamble_offset int index = (rootSequenceIndex + preamble_offset) % N_ZC; uint16_t n_group_ra = 0; @@ -157,8 +144,8 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t DevAssert( index < sizeof(prach_root_sequence_map_abc) / sizeof(prach_root_sequence_map_abc[0]) ); } - u = prach_root_sequence_map[index]; - + int u = prach_root_sequence_map[index]; + int n_shift_ra, d_start = INT16_MAX, n_shift_ra_bar; if ( (nr_du[u]<(N_ZC/3)) && (nr_du[u]>=NCS) ) { n_shift_ra = nr_du[u]/NCS; d_start = (nr_du[u]<<1) + (n_shift_ra * NCS); @@ -175,13 +162,12 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t } // This is the number of cyclic shifts for the current root u - numshift = (n_shift_ra*n_group_ra) + n_shift_ra_bar; - + int numshift = (n_shift_ra * n_group_ra) + n_shift_ra_bar; if (numshift>0 && preamble_index0==preamble_index) first_nonzero_root_idx = preamble_offset; if (preamble_index0 < numshift) { - not_found = 0; + not_found = false; preamble_shift = (d_start * (preamble_index0/n_shift_ra)) + ((preamble_index0%n_shift_ra)*NCS); } else { // skip to next rootSequenceIndex and recompute parameters @@ -193,23 +179,22 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t // now generate PRACH signal #ifdef NR_PRACH_DEBUG - if (NCS>0) - LOG_I(PHY, "PRACH [UE %d] generate PRACH in frame.slot %d.%d for RootSeqIndex %d, Preamble Index %d, PRACH Format %s, NCS %d (N_ZC %d): Preamble_offset %d, Preamble_shift %d msg1 frequency start %d\n", - Mod_id, - frame, - slot, - rootSequenceIndex, - preamble_index, - prachfmt[prach_fmt_id], - NCS, - N_ZC, - preamble_offset, - preamble_shift, - n_ra_prb); - #endif - - // nsymb = (frame_parms->Ncp==0) ? 14:12; - // subframe_offset = (unsigned int)frame_parms->ofdm_symbol_size*slot*nsymb; + if (NCS > 0) + LOG_I(PHY, + "PRACH [UE %d] generate PRACH in frame.slot %d.%d for RootSeqIndex %d, Preamble Index %d, PRACH Format %s, NCS %d " + "(N_ZC %d): Preamble_offset %d, Preamble_shift %d msg1 frequency start %d\n", + ue->Mod_id, + frame, + slot, + rootSequenceIndex, + preamble_index, + prachfmt[prach_fmt_id], + NCS, + N_ZC, + preamble_offset, + preamble_shift, + n_ra_prb); +#endif const unsigned int K = get_prach_K(prach_sequence_length, prach_fmt_id, fp->numerology_index, mu); const uint8_t kbar = get_PRACH_k_bar(mu, fp->numerology_index); @@ -223,7 +208,7 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t LOG_I(PHY, "PRACH [UE %d] in frame.slot %d.%d, placing PRACH in position %d, Msg1/MsgA-Preamble frequency start %d (k1 %d), " "preamble_offset %d, first_nonzero_root_idx %d, preambleIndex = %d\n", - Mod_id, + ue->Mod_id, frame, slot, k * 2, @@ -234,155 +219,96 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t prach_pdu->ra_PreambleIndex); // Ncp and dftlen here is given in terms of T_s wich is 30.72MHz sampling + int dftlen, Ncp; if (prach_sequence_length == 0) { - switch (prach_fmt_id) { - case 0: - Ncp = 3168; - dftlen = 24576; - break; - - case 1: - Ncp = 21024; - dftlen = 24576; - break; - - case 2: - Ncp = 4688; - dftlen = 24576; - break; - - case 3: - Ncp = 3168; - dftlen = 6144; - break; - - default: - AssertFatal(1 == 0, "Illegal PRACH format %d for sequence length 839\n", prach_fmt_id); - break; - } + AssertFatal(prach_fmt_id >= 0 && prach_fmt_id <= 3, "Unknown PRACH format ID %d for sequence length 839\n", prach_fmt_id); + const int ncp[4] = {3168, 21024, 4688, 3168}; + const int dft[4] = {24576, 24576, 24576, 6144}; + Ncp = ncp[prach_fmt_id]; + dftlen = dft[prach_fmt_id]; } else { - switch (prach_fmt_id) { - case 4: //A1 - Ncp = 288 >> mu; - break; - - case 5: //A2 - Ncp = 576 >> mu; - break; - - case 6: //A3 - Ncp = 864 >> mu; - break; - - case 7: //B1 - Ncp = 216 >> mu; - break; - - /* - case 4: //B2 - Ncp = 360 >> mu; - break; - - case 5: //B3 - Ncp = 504 >> mu; - break; - */ - - case 8: //B4 - Ncp = 936 >> mu; - break; - - case 9: //C0 - Ncp = 1240 >> mu; - break; - - case 10: //C2 - Ncp = 2048 >> mu; - break; - - default: - AssertFatal(1==0,"Unknown PRACH format ID %d\n", prach_fmt_id); - break; - } + AssertFatal(prach_fmt_id >= 4 && prach_fmt_id <= 10, "Unknown PRACH format ID %d\n", prach_fmt_id); + const int ncp[7] = {288, 576, 864, 216, 936, 1240, 2048}; + Ncp = ncp[prach_fmt_id - 4] >> mu; dftlen = 2048 >> mu; } - //actually what we should be checking here is how often the current prach crosses a 0.5ms boundary. I am not quite sure for which paramter set this would be the case, so I will ignore it for now and just check if the prach starts on a 0.5ms boundary - if(fp->numerology_index == 0) { + // actually what we should be checking here is how often the current prach crosses a 0.5ms boundary. I am not quite sure for + // which paramter set this would be the case, so I will ignore it for now and just check if the prach starts on a 0.5ms boundary + if (fp->numerology_index == 0) { if (prachStartSymbol == 0 || prachStartSymbol == 7) Ncp += 16; - } - else { - if (slot%(fp->slots_per_subframe/2)==0 && prachStartSymbol == 0) + } else { + if (slot % (fp->slots_per_subframe / 2) == 0 && prachStartSymbol == 0) Ncp += 16; } - switch(fp->samples_per_subframe) { - case 7680: - // 5 MHz @ 7.68 Ms/s - Ncp >>= 2; - dftlen >>= 2; - break; + switch (fp->samples_per_subframe) { + case 7680: + // 5 MHz @ 7.68 Ms/s + Ncp >>= 2; + dftlen >>= 2; + break; - case 15360: - // 10, 15 MHz @ 15.36 Ms/s - Ncp >>= 1; - dftlen >>= 1; - break; + case 15360: + // 10, 15 MHz @ 15.36 Ms/s + Ncp >>= 1; + dftlen >>= 1; + break; - case 23040: - // 20 MHz @ 23.04 Ms/s - Ncp = (Ncp * 3) / 4; - dftlen = (dftlen * 3) / 4; - break; + case 23040: + // 20 MHz @ 23.04 Ms/s + Ncp = (Ncp * 3) / 4; + dftlen = (dftlen * 3) / 4; + break; - case 30720: - // 20, 25, 30 MHz @ 30.72 Ms/s - break; + case 30720: + // 20, 25, 30 MHz @ 30.72 Ms/s + break; - case 46080: - // 40 MHz @ 46.08 Ms/s - Ncp = (Ncp*3)/2; - dftlen = (dftlen*3)/2; - break; + case 46080: + // 40 MHz @ 46.08 Ms/s + Ncp = (Ncp * 3) / 2; + dftlen = (dftlen * 3) / 2; + break; - case 61440: - // 40, 50, 60 MHz @ 61.44 Ms/s - Ncp <<= 1; - dftlen <<= 1; - break; + case 61440: + // 40, 50, 60 MHz @ 61.44 Ms/s + Ncp <<= 1; + dftlen <<= 1; + break; - case 92160: - // 50, 60, 70, 80, 90 MHz @ 92.16 Ms/s - Ncp *= 3; - dftlen *= 3; - break; + case 92160: + // 50, 60, 70, 80, 90 MHz @ 92.16 Ms/s + Ncp *= 3; + dftlen *= 3; + break; - case 122880: - // 70, 80, 90, 100 MHz @ 122.88 Ms/s - Ncp <<= 2; - dftlen <<= 2; - break; + case 122880: + // 70, 80, 90, 100 MHz @ 122.88 Ms/s + Ncp <<= 2; + dftlen <<= 2; + break; - case 184320: - // 100 MHz @ 184.32 Ms/s - Ncp = Ncp*6; - dftlen = dftlen*6; - break; + case 184320: + // 100 MHz @ 184.32 Ms/s + Ncp = Ncp * 6; + dftlen = dftlen * 6; + break; - case 245760: - // 200 MHz @ 245.76 Ms/s - Ncp <<= 3; - dftlen <<= 3; - break; + case 245760: + // 200 MHz @ 245.76 Ms/s + Ncp <<= 3; + dftlen <<= 3; + break; - default: - AssertFatal(1==0,"sample rate %f MHz not supported for numerology %d\n", fp->samples_per_subframe / 1000.0, mu); + default: + AssertFatal(1 == 0, "sample rate %f MHz not supported for numerology %d\n", fp->samples_per_subframe / 1000.0, mu); } - #ifdef NR_PRACH_DEBUG - LOG_I(PHY, "PRACH [UE %d] Ncp %d, dftlen %d \n", Mod_id, Ncp, dftlen); - #endif +#ifdef NR_PRACH_DEBUG + LOG_I(PHY, "PRACH [UE %d] Ncp %d, dftlen %d \n", ue->Mod_id, Ncp, dftlen); +#endif /******************************************************** * @@ -390,7 +316,8 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t * to compute quantized roots of unity ru(n) = 32767 * exp j*[ (2 * PI * n) / N_ZC ] * * In compute_prach_seq: - * to calculate Xu = DFT xu = xu (inv_u*k) * Xu[0] (This is a Zadoff-Chou sequence property: DFT ZC sequence is another ZC sequence) + * to calculate Xu = DFT xu = xu (inv_u*k) * Xu[0] (This is a Zadoff-Chou sequence property: DFT ZC sequence is another ZC + * sequence) * * In generate_prach: * to do the cyclic-shifted DFT by multiplying Xu[k] * ru[k*preamble_shift] as: @@ -398,118 +325,55 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t * *********************************************************/ - c16_t *Xu = ue->X_u[preamble_offset - first_nonzero_root_idx]; + const c16_t *Xu = ue->X_u[preamble_offset - first_nonzero_root_idx]; #if defined (PRACH_WRITE_OUTPUT_DEBUG) - LOG_M("X_u.m", "X_u", (int16_t*)ue->X_u[preamble_offset-first_nonzero_root_idx], N_ZC, 1, 1); - #endif + LOG_M("X_u.m", "X_u", (int16_t *)ue->X_u[preamble_offset - first_nonzero_root_idx], N_ZC, 1, 1); +#endif - for (offset=0,offset2=0; offset= N_ZC) + offset2 -= N_ZC; + const c16_t Xu_t = c16xmulConstShift(Xu[offset], amp, 15); + const double w = 2 * M_PI * (double)offset2 / N_ZC; + const c16_t ru = {.r = (int16_t)(floor(32767.0 * cos(w))), .i = (int16_t)(floor(32767.0 * sin(w)))}; + const c16_t p = c16mulShift(Xu_t, ru, 15); + prachF[k++] = p; + if (k == dftlen) + k = 0; + } - if (offset2 >= N_ZC) - offset2 -= N_ZC; - const c16_t Xu_t = c16xmulConstShift(Xu[offset], amp, 15); - const double w = 2 * M_PI * (double)offset2 / N_ZC; - const c16_t ru = {.r = (int16_t)(floor(32767.0 * cos(w))), .i = (int16_t)(floor(32767.0 * sin(w)))}; - const c16_t p = c16mulShift(Xu_t, ru, 15); - prachF[k++] = p; - - if (k * 2 == dftlen) - k = 0; - } - - #if defined (PRACH_WRITE_OUTPUT_DEBUG) +#if defined(PRACH_WRITE_OUTPUT_DEBUG) LOG_M("prachF.m", "prachF", &prachF[1804], 1024, 1, 1); LOG_M("Xu.m", "Xu", Xu, N_ZC, 1, 1); - #endif +#endif - // This is after cyclic prefix - c16_t *prach2 = prach + Ncp; + // This is after cyclic prefix const idft_size_idx_t idft_size = get_idft(dftlen); idft(idft_size, (int16_t *)prachF, (int16_t *)prach, 1); - memmove(prach2, prach, (dftlen << 2)); + } - if (prach_sequence_length == 0) { - if (prach_fmt_id == 0) { - // here we have | empty | Prach | - memcpy(prach, prach + dftlen, (Ncp << 2)); - // here we have | Prefix | Prach | - prach_len = dftlen + Ncp; - } else if (prach_fmt_id == 1) { - // here we have | empty | Prach | empty | - memcpy(prach2 + dftlen, prach2, (dftlen << 2)); - // here we have | empty | Prach | Prach | - memcpy(prach, prach + dftlen * 2, (Ncp << 2)); - // here we have | Prefix | Prach | Prach | - prach_len = (dftlen * 2) + Ncp; - } else if (prach_fmt_id == 2 || prach_fmt_id == 3) { - // here we have | empty | Prach | empty | empty | empty | - memcpy(prach2 + dftlen, prach2, (dftlen << 2)); - // here we have | empty | Prach | Prach | empty | empty | - memcpy(prach2 + dftlen * 2, prach2, (dftlen << 3)); - // here we have | empty | Prach | Prach | Prach | Prach | - memcpy(prach, prach + dftlen * 4, (Ncp << 2)); - // here we have | Prefix | Prach | Prach | Prach | Prach | - prach_len = (dftlen * 4) + Ncp; - } - } else { // short PRACH sequence - if (prach_fmt_id == 9) { - // here we have | empty | Prach | - memcpy(prach, prach + dftlen, (Ncp << 2)); - // here we have | Prefix | Prach | - prach_len = (dftlen*1)+Ncp; - } else if (prach_fmt_id == 4 || prach_fmt_id == 7) { - // here we have | empty | Prach | empty | - memcpy(prach2 + dftlen, prach2, (dftlen << 2)); - // here we have | empty | Prach | Prach | - memcpy(prach, prach+(dftlen<<1), (Ncp<<2)); - // here we have | Prefix | Prach | Prach | - prach_len = (dftlen*2)+Ncp; - } else if (prach_fmt_id == 5 || prach_fmt_id == 10) { // 4xdftlen - // here we have | empty | Prach | empty | empty | empty | - memcpy(prach2 + dftlen, prach2, (dftlen << 2)); - // here we have | empty | Prach | Prach | empty | empty | - memcpy(prach2 + dftlen * 2, prach2, (dftlen << 3)); - // here we have | empty | Prach | Prach | Prach | Prach | - memcpy(prach, prach + dftlen, (Ncp << 2)); - // here we have | Prefix | Prach | Prach | Prach | Prach | - prach_len = (dftlen*4)+Ncp; - } else if (prach_fmt_id == 6) { // 6xdftlen - // here we have | empty | Prach | empty | empty | empty | empty | empty | - memcpy(prach2 + dftlen, prach2, (dftlen << 2)); - // here we have | empty | Prach | Prach | empty | empty | empty | empty | - memcpy(prach2 + dftlen * 2, prach2, (dftlen << 3)); - // here we have | empty | Prach | Prach | Prach | Prach | empty | empty | - memcpy(prach2 + dftlen * 4, prach2, (dftlen << 3)); - // here we have | empty | Prach | Prach | Prach | Prach | Prach | Prach | - memcpy(prach, prach + dftlen, (Ncp << 2)); - // here we have | Prefix | Prach | Prach | Prach | Prach | Prach | Prach | - prach_len = (dftlen*6)+Ncp; - } else if (prach_fmt_id == 8) { // 12xdftlen - // here we have | empty | Prach | empty | empty | empty | empty | empty | empty | empty | empty | empty | empty | empty | - memcpy(prach2 + dftlen, prach2, (dftlen << 2)); - // here we have | empty | Prach | Prach | empty | empty | empty | empty | empty | empty | empty | empty | empty | empty | - memcpy(prach2 + dftlen * 2, prach2, (dftlen << 3)); - // here we have | empty | Prach | Prach | Prach | Prach | empty | empty | empty | empty | empty | empty | empty | empty | - memcpy(prach2 + dftlen * 4, prach2, (dftlen << 3)); - // here we have | empty | Prach | Prach | Prach | Prach | Prach | Prach | empty | empty | empty | empty | empty | empty | - memcpy(prach2 + dftlen * 6, prach2, (dftlen << 2) * 6); - // here we have | empty | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | - memcpy(prach, prach + dftlen, (Ncp << 2)); - // here we have | Prefix | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | Prach | - prach_len = (dftlen*12)+Ncp; - } + c16_t *out = txData[0] + prach_start; + memcpy(out, prach + dftlen - Ncp, Ncp * sizeof(*prach)); + out += Ncp; + const int copies[11] = {1, 2, 4, 4, 2, 4, 6, 2, 12, 1, 4}; + DevAssert(prach_fmt_id < sizeofArray(copies)); + for (int i = 0; i < copies[prach_fmt_id]; i++) { + memcpy(out, prach, dftlen * sizeof(*prach)); + out += dftlen; } #ifdef NR_PRACH_DEBUG - LOG_I(PHY, "PRACH [UE %d] N_RB_UL %d prach_start %d, prach_len %d\n", Mod_id, fp->N_RB_UL, prach_start, prach_len); -#endif - - memcpy(txData[0] + prach_start, prach, sizeof(c16_t) * prach_len); - -#ifdef PRACH_WRITE_OUTPUT_DEBUG - LOG_M("prach_tx0.m", "prachtx0", prach + (Ncp << 1), prach_len - Ncp, 1, 1); - LOG_M("Prach_txsig.m", "txs", (int16_t *)(&txdata[0][prach_start]), 2 * (prach_start + prach_len), 1, 1) + LOG_I(PHY, + "PRACH [UE %d] N_RB_UL %d prach_start %d, prach_len %d\n", + ue->Mod_id, + fp->N_RB_UL, + prach_start, + out - (txData[0] + prach_start)); #endif return signal_energy((int *)prach, 256); diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h b/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h index 2a24902295..68904f1fa2 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h @@ -168,15 +168,20 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, /** \brief This function does IFFT for PUSCH */ -uint8_t nr_ue_pusch_common_procedures(PHY_VARS_NR_UE *UE, - const uint8_t slot, - const NR_DL_FRAME_PARMS *frame_parms, - const uint8_t n_antenna_ports, - c16_t **txdataF, - c16_t **txdata, - uint32_t linktype, - bool was_symbol_used[NR_NUMBER_OF_SYMBOLS_PER_SLOT], - bool no_phase_pre_comp); +uint8_t nr_tx_rotation_and_ofdm_mod(const uint8_t slot, + const NR_DL_FRAME_PARMS *frame_parms, + const uint8_t n_antenna_ports, + c16_t **txdataF, + c16_t **txdata, + uint32_t linktype, + bool was_symbol_used[NR_NUMBER_OF_SYMBOLS_PER_SLOT], + bool no_phase_pre_comp); + +bool ue_srs_procedures_nr(PHY_VARS_NR_UE *ue, + const UE_nr_rxtx_proc_t *proc, + c16_t **txdataF, + nr_phy_data_tx_t *phy_data, + bool was_symbol_used[NR_NUMBER_OF_SYMBOLS_PER_SLOT]); void clean_UE_harq(PHY_VARS_NR_UE *UE); diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c index 310fa7dc5f..8251f278ad 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c @@ -1502,15 +1502,14 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, stop_meas_nr_ue_phy(UE, PUSCH_PROC_STATS); } -uint8_t nr_ue_pusch_common_procedures(PHY_VARS_NR_UE *UE, - const uint8_t slot, - const NR_DL_FRAME_PARMS *frame_parms, - const uint8_t n_antenna_ports, - c16_t **txdataF, - c16_t **txdata, - uint32_t linktype, - bool was_symbol_used[NR_NUMBER_OF_SYMBOLS_PER_SLOT], - bool no_phase_pre_comp) +uint8_t nr_tx_rotation_and_ofdm_mod(const uint8_t slot, + const NR_DL_FRAME_PARMS *frame_parms, + const uint8_t n_antenna_ports, + c16_t **txdataF, + c16_t **txdata, + uint32_t linktype, + bool was_symbol_used[NR_NUMBER_OF_SYMBOLS_PER_SLOT], + bool no_phase_pre_comp) { int N_RB = (linktype == link_type_sl) ? frame_parms->N_RB_SL : frame_parms->N_RB_UL; diff --git a/openair1/PHY/TOOLS/signal_energy.c b/openair1/PHY/TOOLS/signal_energy.c index a7c314dd44..4e29f0ab2b 100644 --- a/openair1/PHY/TOOLS/signal_energy.c +++ b/openair1/PHY/TOOLS/signal_energy.c @@ -180,3 +180,39 @@ int32_t interference_power(int32_t *input, uint32_t length) return temp; } +// Computes transmitter energy level +double compute_tx_energy_level(c16_t **txdata, int nb_antennas, int offset, int length, int n_trials) +{ + double txlev_sum = 0, atxlev[nb_antennas]; + for (int aa = 0; aa < nb_antennas; aa++) { + atxlev[aa] = signal_energy((int32_t *)&txdata[aa][offset], length); + + txlev_sum += atxlev[aa]; + + if (n_trials == 1) + printf("txlev[%d] = %f (%f dB) txlev_sum %f\n", aa, atxlev[aa], 10 * log10(atxlev[aa]), txlev_sum); + } + return txlev_sum; +} + +// Computes noise variance from the input transmit energy and SNR +double compute_noise_variance(double txlev_sum, + uint16_t ofdm_symbol_size, + int N_RB, + uint8_t precod_nbr_layers, + double SNR, + int n_trials) +{ + // Justification of division by precod_nbr_layers: + // When the channel is the identity matrix, the results in terms of SNR should be almost equal for 2x2 and 4x4. + double sigma_dB = 10 * log10(txlev_sum / precod_nbr_layers * ((double)ofdm_symbol_size / (12 * N_RB))) - SNR; + double sigma = pow(10, sigma_dB / 10); + + if (n_trials == 1) + printf("sigma %f (%f dB), txlev_sum %f (factor %f)\n", + sigma, + sigma_dB, + 10 * log10(txlev_sum), + (double)(double)ofdm_symbol_size / (12 * N_RB)); + return sigma; +} diff --git a/openair1/PHY/TOOLS/tools_defs.h b/openair1/PHY/TOOLS/tools_defs.h index c5a8ab13b7..36fc496545 100644 --- a/openair1/PHY/TOOLS/tools_defs.h +++ b/openair1/PHY/TOOLS/tools_defs.h @@ -927,6 +927,14 @@ double signal_energy_fp(double *s_re[2], double *s_im[2], uint32_t nb_antennas, */ double signal_energy_fp2(struct complexd *s, uint32_t length); +double compute_tx_energy_level(c16_t **txdata, int nb_antennas, int offset, int length, int n_trials); + +double compute_noise_variance(double txlev_sum, + uint16_t ofdm_symbol_size, + int N_RB, + uint8_t precod_nbr_layers, + double SNR, + int n_trials); int32_t iSqrt(int32_t value); uint8_t log2_approx(uint32_t); diff --git a/openair1/PHY/defs_gNB.h b/openair1/PHY/defs_gNB.h index abc700f9d2..f3350d707e 100644 --- a/openair1/PHY/defs_gNB.h +++ b/openair1/PHY/defs_gNB.h @@ -46,6 +46,8 @@ #define MAX_NUM_RU_PER_gNB 8 #define MAX_PUCCH0_NID 8 +#define NR_SRS_IDFT_OVERSAMP_FACTOR 2 +#define NR_SRS_DETECTION_THRESHOLD 10 typedef struct { int nb_id; diff --git a/openair1/PHY/nr_phy_common/inc/nr_phy_common.h b/openair1/PHY/nr_phy_common/inc/nr_phy_common.h index a2011e1fa6..5b60f3bdf6 100644 --- a/openair1/PHY/nr_phy_common/inc/nr_phy_common.h +++ b/openair1/PHY/nr_phy_common/inc/nr_phy_common.h @@ -372,7 +372,8 @@ bool generate_srs_nr(const NR_DL_FRAME_PARMS *frame_parms, nr_srs_info_t *nr_srs_info, int16_t amp, frame_t frame_number, - slot_t slot_number); + slot_t slot_number, + uint8_t nb_antennas); void nr_generate_csi_rs(const NR_DL_FRAME_PARMS *frame_parms, const csi_mapping_parms_t *phy_csi_parms, const int16_t amp, diff --git a/openair1/PHY/nr_phy_common/src/nr_phy_common_srs.c b/openair1/PHY/nr_phy_common/src/nr_phy_common_srs.c index 9d91986b50..f258b92205 100644 --- a/openair1/PHY/nr_phy_common/src/nr_phy_common_srs.c +++ b/openair1/PHY/nr_phy_common/src/nr_phy_common_srs.c @@ -146,11 +146,12 @@ bool generate_srs_nr(const NR_DL_FRAME_PARMS *frame_parms, nr_srs_info_t *nr_srs_info, int16_t amp, frame_t frame_number, - slot_t slot_number) + slot_t slot_number, + uint8_t nb_antennas) { uint8_t K_TC = 2 << nr_srs_info->comb_size; /* Number of antenna ports (M) can't be higher than number of physical antennas (N): M <= N */ - int N_ap = nr_srs_info->n_srs_ports > frame_parms->nb_antennas_tx ? frame_parms->nb_antennas_tx : nr_srs_info->n_srs_ports; + int N_ap = nr_srs_info->n_srs_ports > nb_antennas ? nb_antennas : nr_srs_info->n_srs_ports; uint8_t l0 = frame_parms->symbols_per_slot - 1 - nr_srs_info->l_offset; // Starting symbol position in the time domain uint8_t n_SRS_cs_max = srs_max_number_cs[nr_srs_info->comb_size]; int m_SRS_b = get_m_srs(nr_srs_info->C_SRS, nr_srs_info->B_SRS); // Number of resource blocks @@ -180,6 +181,11 @@ bool generate_srs_nr(const NR_DL_FRAME_PARMS *frame_parms, LOG_I(NR_PHY,"M_sc_b_SRS = %i\n", M_sc_b_SRS); #endif + AssertFatal(l0 + nr_srs_info->N_symb_SRS - 1 < frame_parms->symbols_per_slot, + "last symbol index %d should be < %d\n", + l0 + nr_srs_info->N_symb_SRS, + frame_parms->symbols_per_slot - 1); + // Validation of SRS config parameters if (nr_srs_info->R == 0) { diff --git a/openair1/SCHED_NR/phy_frame_config_nr.c b/openair1/SCHED_NR/phy_frame_config_nr.c index 9479e960a8..4c2c19847c 100644 --- a/openair1/SCHED_NR/phy_frame_config_nr.c +++ b/openair1/SCHED_NR/phy_frame_config_nr.c @@ -199,8 +199,8 @@ void do_tdd_config_sim(PHY_VARS_gNB *gNB, int mu) switch (mu) { case 0: - pc->num_dl_slots = 3; - pc->num_ul_slots = 1; + pc->num_dl_slots = 7; + pc->num_ul_slots = 2; break; case 1: @@ -209,8 +209,8 @@ void do_tdd_config_sim(PHY_VARS_gNB *gNB, int mu) break; case 3: - pc->num_dl_slots = 27; - pc->num_ul_slots = 12; + pc->num_dl_slots = 7; + pc->num_ul_slots = 2; break; default: @@ -226,7 +226,7 @@ void do_tdd_config_sim(PHY_VARS_gNB *gNB, int mu) pc->tdd_slot_bitmap[i].num_dl_symbols = 6; pc->tdd_slot_bitmap[i].num_ul_symbols = 4; } - for (int i = pc->num_ul_slots; i < fs.numb_slots_period; i++) { + for (int i = fs.numb_slots_period - pc->num_ul_slots; i < fs.numb_slots_period; i++) { pc->tdd_slot_bitmap[i].slot_type = TDD_NR_UPLINK_SLOT; pc->tdd_slot_bitmap[i].num_dl_symbols = 0; pc->tdd_slot_bitmap[i].num_ul_symbols = 0; diff --git a/openair1/SCHED_NR/phy_procedures_nr_gNB.c b/openair1/SCHED_NR/phy_procedures_nr_gNB.c index 1271734866..ff82310d29 100644 --- a/openair1/SCHED_NR/phy_procedures_nr_gNB.c +++ b/openair1/SCHED_NR/phy_procedures_nr_gNB.c @@ -717,9 +717,10 @@ static void fill_ul_rb_mask(PHY_VARS_gNB *gNB, if (!(srs && srs->active && srs->frame == frame_rx && srs->slot == slot_rx)) continue; nfapi_nr_srs_pdu_t *srs_pdu = &srs->srs_pdu; + const uint8_t l0 = gNB->frame_parms.symbols_per_slot - 1 - srs_pdu->time_start_position; for (int symbol = 0; symbol < (1 << srs_pdu->num_symbols); symbol++) { for (int rb = srs_pdu->bwp_start; rb < (srs_pdu->bwp_start + srs_pdu->bwp_size); rb++) { - rb_mask_ul[srs_pdu->time_start_position + symbol][rb >> 5] |= 1U << (rb & 31); + rb_mask_ul[l0 + symbol][rb >> 5] |= 1U << (rb & 31); } } } @@ -857,6 +858,139 @@ static bool check_and_configure_srs_info(nfapi_nr_srs_pdu_t *srs_config_pdu, nr_ return false; } +void nr_srs_rx_procedures(PHY_VARS_gNB *gNB, + int frame_rx, + int slot_rx, + uint8_t nb_antennas_rx, + uint8_t N_ap, + uint8_t N_symb_SRS, + uint16_t ofdm_symbol_size, + NR_gNB_SRS_t *srs, + nr_srs_info_t *nr_srs_info, + int *srs_est, + c16_t srs_estimated_channel_freq[][N_ap][ofdm_symbol_size * N_symb_SRS], + c16_t srs_estimated_channel_time[][N_ap][NR_SRS_IDFT_OVERSAMP_FACTOR * ofdm_symbol_size], + int16_t *snr_per_rb, + uint16_t *timing_advance_offset, + int16_t *timing_advance_offset_nsec) +{ + NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms; + nfapi_nr_srs_pdu_t *srs_pdu = &srs->srs_pdu; + c16_t srs_received_signal[nb_antennas_rx][ofdm_symbol_size * N_symb_SRS]; + c16_t srs_received_noise[nb_antennas_rx][ofdm_symbol_size * N_symb_SRS]; + c16_t srs_estimated_channel_time_shifted[nb_antennas_rx][N_ap][NR_SRS_IDFT_OVERSAMP_FACTOR * ofdm_symbol_size]; + + start_meas(&gNB->generate_srs_stats); + + if (check_and_configure_srs_info(srs_pdu, nr_srs_info)) { + generate_srs_nr(frame_parms, + nr_srs_info->srs_generated_signal, + 0, + srs_pdu->bwp_start, + nr_srs_info, + AMP, + frame_rx, + slot_rx, + nb_antennas_rx); + } + + stop_meas(&gNB->generate_srs_stats); + c16_t **rxdataF = gNB->common_vars.rxdataF[srs->beam_nb]; + start_meas(&gNB->get_srs_signal_stats); + *srs_est = nr_get_srs_signal(gNB, rxdataF, frame_rx, slot_rx, srs_pdu, nr_srs_info, srs_received_signal, srs_received_noise); + stop_meas(&gNB->get_srs_signal_stats); + + uint32_t signal_power_avg = 0; + uint32_t noise_power_avg = 0; + int16_t noise_power_per_rb[srs_pdu->bwp_size]; + memset(noise_power_per_rb, 0, srs_pdu->bwp_size * sizeof(int16_t)); + + if (*srs_est >= 0) { + start_meas(&gNB->srs_channel_estimation_stats); + for (int ant_rx_ind = 0; ant_rx_ind < nb_antennas_rx; ant_rx_ind++) { + uint32_t noise_power = 0; + for (int p_ind = 0; p_ind < N_ap; p_ind++) { + uint32_t signal_power = 0; + nr_srs_channel_estimation(ant_rx_ind, + p_ind, + ofdm_symbol_size, + frame_parms->first_carrier_offset, + N_symb_SRS, + srs_pdu, + nr_srs_info, + nr_srs_info->srs_generated_signal[p_ind], + srs_received_signal[ant_rx_ind], + srs_received_noise[ant_rx_ind], + srs_estimated_channel_freq[ant_rx_ind][p_ind], + srs_estimated_channel_time[ant_rx_ind][p_ind], + srs_estimated_channel_time_shifted[ant_rx_ind][p_ind], + &signal_power, + &noise_power, + noise_power_per_rb); + + signal_power_avg += signal_power; + + T(T_GNB_PHY_UL_FREQ_CHANNEL_ESTIMATE, + T_INT(gNB->Mod_id), + T_INT(srs_pdu->rnti), + T_INT(frame_rx), + T_INT(slot_rx), + T_INT(ant_rx_ind), + T_INT(p_ind), + T_BUFFER(srs_estimated_channel_freq[ant_rx_ind][p_ind], N_symb_SRS * ofdm_symbol_size * sizeof(c16_t))); + + T(T_GNB_PHY_UL_TIME_CHANNEL_ESTIMATE, + T_INT(gNB->Mod_id), + T_INT(srs_pdu->rnti), + T_INT(frame_rx), + T_INT(slot_rx), + T_INT(ant_rx_ind), + T_INT(p_ind), + T_BUFFER(srs_estimated_channel_time_shifted[ant_rx_ind][p_ind], + NR_SRS_IDFT_OVERSAMP_FACTOR * ofdm_symbol_size * sizeof(c16_t))); + } + noise_power_avg += noise_power; + } + signal_power_avg /= (nb_antennas_rx * N_ap); + noise_power_avg /= nb_antennas_rx; + signal_power_avg = max(signal_power_avg, 1); + gNB->srs->snr = dB_fixed(signal_power_avg) - dB_fixed(max(noise_power_avg, 1)); + + const uint16_t m_SRS_b = get_m_srs(srs_pdu->config_index, srs_pdu->bandwidth_index); + for (int rb = 0; rb < m_SRS_b; rb++) { + snr_per_rb[rb] = dB_fixed(signal_power_avg) - dB_fixed(max(noise_power_per_rb[rb] / nb_antennas_rx, 1)); + } + stop_meas(&gNB->srs_channel_estimation_stats); + + start_meas(&gNB->srs_timing_advance_stats); + for (int ant_rx_ind = 0; ant_rx_ind < nb_antennas_rx; ant_rx_ind++) { + nr_est_srs_timing_advance_offset(ofdm_symbol_size, + srs_estimated_channel_time[ant_rx_ind], + ant_rx_ind, + N_ap, + frame_parms->samples_per_frame, + timing_advance_offset, + &timing_advance_offset_nsec[ant_rx_ind]); + } + stop_meas(&gNB->srs_timing_advance_stats); + + T(T_GNB_PHY_UL_SNR_ESTIMATE, + T_INT(0), + T_INT(srs_pdu->rnti), + T_INT(frame_rx), + T_INT(0), + T_INT(0), + T_BUFFER(snr_per_rb, srs_pdu->bwp_size * sizeof(int16_t))); + + T(T_GNB_PHY_UL_SRS_TOA_NS, + T_INT(gNB->Mod_id), + T_INT(srs_pdu->rnti), + T_INT(frame_rx), + T_INT(slot_rx), + T_BUFFER(timing_advance_offset_nsec, nb_antennas_rx * sizeof(int16_t))); + } +} + int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, NR_UL_IND_t *UL_INFO) { /* those variables to log T_GNB_PHY_PUCCH_PUSCH_IQ only when we try to decode */ @@ -865,9 +999,9 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, N int pusch_DTX = 0; const NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms; - const int symb_sz = frame_parms->ofdm_symbol_size; + const uint16_t ofdm_symbol_size = frame_parms->ofdm_symbol_size; const int nb_symb = frame_parms->symbols_per_slot; - const int ant = gNB->frame_parms.nb_antennas_rx; + const uint8_t nb_antennas_rx = frame_parms->nb_antennas_rx; VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_UESPEC_RX,1); LOG_D(PHY,"phy_procedures_gNB_uespec_RX frame %d, slot %d\n",frame_rx,slot_rx); { @@ -892,7 +1026,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, N gNB_I0_measurements(gNB, slot_rx, first_symb, num_symb, rb_mask_ul); } - const int soffset = (slot_rx & 3) * nb_symb * symb_sz; + const int soffset = (slot_rx & 3) * nb_symb * ofdm_symbol_size; start_meas(&gNB->phy_proc_rx); for (int i = 0; i < gNB->max_nb_pucch; i++) { @@ -911,7 +1045,8 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, N uci->pdu_type = NFAPI_NR_UCI_FORMAT_0_1_PDU_TYPE; uci->pdu_size = sizeof(nfapi_nr_uci_pucch_pdu_format_0_1_t); nfapi_nr_uci_pucch_pdu_format_0_1_t *uci_pdu_format0 = &uci->pucch_pdu_format_0_1; - int offset = pucch_pdu->start_symbol_index * symb_sz + (frame_parms->first_carrier_offset + pucch_pdu->prb_start * 12); + int offset = + pucch_pdu->start_symbol_index * ofdm_symbol_size + (frame_parms->first_carrier_offset + pucch_pdu->prb_start * 12); LOG_D(NR_PHY, "frame %d, slot %d: PUCCH signal energy %d\n", frame_rx, @@ -988,7 +1123,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, N NR_gNB_PUSCH *pusch_vars = &gNB->pusch_vars[ULSCH_id]; pusch_vars->ulsch_power_tot = 0; pusch_vars->ulsch_noise_power_tot = 0; - for (int aarx = 0; aarx < ant; aarx++) { + for (int aarx = 0; aarx < nb_antennas_rx; aarx++) { pusch_vars->ulsch_power[aarx] /= num_dmrs; pusch_vars->ulsch_power_tot += pusch_vars->ulsch_power[aarx]; pusch_vars->ulsch_noise_power[aarx] /= num_dmrs; @@ -1063,80 +1198,38 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, N start_meas(&gNB->rx_srs_stats); + uint8_t N_symb_SRS = 1 << srs->srs_pdu.num_symbols; + uint8_t N_ap = 1 << srs->srs_pdu.num_ant_ports; + int16_t snr_per_rb[srs->srs_pdu.bwp_size]; nfapi_nr_srs_pdu_t *srs_pdu = &srs->srs_pdu; - uint8_t N_symb_SRS = 1 << srs_pdu->num_symbols; - c16_t srs_received_signal[ant][symb_sz * N_symb_SRS]; - c16_t srs_received_noise[ant][symb_sz * N_symb_SRS]; - c16_t srs_estimated_channel_freq[ant][1 << srs_pdu->num_ant_ports][symb_sz * N_symb_SRS] __attribute__((aligned(32))); - c16_t srs_estimated_channel_time[ant][1 << srs_pdu->num_ant_ports][symb_sz] __attribute__((aligned(32))); - c16_t srs_estimated_channel_time_shifted[ant][1 << srs_pdu->num_ant_ports][symb_sz]; - int16_t snr_per_rb[srs_pdu->bwp_size]; + uint16_t timing_advance_offset; + int16_t timing_advance_offset_nsec[nb_antennas_rx]; + int srs_est; - start_meas(&gNB->generate_srs_stats); + c16_t srs_estimated_channel_freq[nb_antennas_rx][N_ap][ofdm_symbol_size * N_symb_SRS] __attribute__((aligned(32))); + c16_t srs_estimated_channel_time[nb_antennas_rx][N_ap][NR_SRS_IDFT_OVERSAMP_FACTOR * ofdm_symbol_size] + __attribute__((aligned(32))); - if (check_and_configure_srs_info(srs_pdu, gNB->nr_srs_info[i])) { - generate_srs_nr(frame_parms, - gNB->nr_srs_info[i]->srs_generated_signal, - 0, - srs_pdu->bwp_start, - gNB->nr_srs_info[i], - AMP, - frame_rx, - slot_rx); - } - stop_meas(&gNB->generate_srs_stats); - c16_t **rxdataF = gNB->common_vars.rxdataF[srs->beam_nb]; - start_meas(&gNB->get_srs_signal_stats); - int srs_est = - nr_get_srs_signal(gNB, rxdataF, frame_rx, slot_rx, srs_pdu, gNB->nr_srs_info[i], srs_received_signal, srs_received_noise); - stop_meas(&gNB->get_srs_signal_stats); - - if (srs_est >= 0) { - start_meas(&gNB->srs_channel_estimation_stats); - nr_srs_channel_estimation(gNB, - frame_rx, - slot_rx, - srs_pdu, - gNB->nr_srs_info[i], - (const c16_t **)gNB->nr_srs_info[i]->srs_generated_signal, - srs_received_signal, - srs_received_noise, - srs_estimated_channel_freq, - srs_estimated_channel_time, - srs_estimated_channel_time_shifted, - snr_per_rb, - &gNB->srs->snr); - stop_meas(&gNB->srs_channel_estimation_stats); - } + nr_srs_rx_procedures(gNB, + frame_rx, + slot_rx, + nb_antennas_rx, + N_ap, + N_symb_SRS, + ofdm_symbol_size, + srs, + gNB->nr_srs_info[i], + &srs_est, + srs_estimated_channel_freq, + srs_estimated_channel_time, + snr_per_rb, + &timing_advance_offset, + timing_advance_offset_nsec); if ((gNB->srs->snr * 10) < gNB->srs_thres) { srs_est = -1; } - T(T_GNB_PHY_UL_FREQ_CHANNEL_ESTIMATE, - T_INT(0), - T_INT(srs_pdu->rnti), - T_INT(frame_rx), - T_INT(0), - T_INT(0), - T_BUFFER(srs_estimated_channel_freq[0][0], symb_sz * sizeof(int32_t))); - - T(T_GNB_PHY_UL_TIME_CHANNEL_ESTIMATE, - T_INT(0), - T_INT(srs_pdu->rnti), - T_INT(frame_rx), - T_INT(0), - T_INT(0), - T_BUFFER(srs_estimated_channel_time_shifted[0][0], symb_sz * sizeof(int32_t))); - - T(T_GNB_PHY_UL_SNR_ESTIMATE, - T_INT(0), - T_INT(srs_pdu->rnti), - T_INT(frame_rx), - T_INT(0), - T_INT(0), - T_BUFFER(snr_per_rb, srs_pdu->bwp_size * sizeof(int16_t))); - UL_INFO->srs_ind.sfn = frame_rx; UL_INFO->srs_ind.slot = slot_rx; @@ -1145,13 +1238,9 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, N nfapi_nr_srs_indication_pdu_t *srs_indication = UL_INFO->srs_pdu_list + UL_INFO->srs_ind.number_of_pdus++; srs_indication->handle = srs_pdu->handle; srs_indication->rnti = srs_pdu->rnti; - start_meas(&gNB->srs_timing_advance_stats); - srs_indication->timing_advance_offset = - srs_est >= 0 ? nr_est_timing_advance_srs(frame_parms, srs_estimated_channel_time[0]) : 0xFFFF; - stop_meas(&gNB->srs_timing_advance_stats); - srs_indication->timing_advance_offset_nsec = - srs_est >= 0 ? (int16_t)((((int32_t)srs_indication->timing_advance_offset - 31) * ((int32_t)TC_NSEC_x32768)) >> 15) - : 0xFFFF; + srs_indication->timing_advance_offset = srs_est >= 0 ? timing_advance_offset : 0xFFFF; + // TODO: currently we fill timing_advance_offset_nsec for antenna 0. Need to extend it for other antennas + srs_indication->timing_advance_offset_nsec = srs_est >= 0 ? timing_advance_offset_nsec[0] : 0x8000; switch (srs_pdu->srs_parameters_v4.usage) { case 0: LOG_W(NR_PHY, "SRS report was not requested by MAC\n"); @@ -1193,10 +1282,10 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, N start_meas(&gNB->srs_beam_report_stats); nfapi_nr_srs_beamforming_report_t nr_srs_bf_report; nr_srs_bf_report.prg_size = srs_pdu->beamforming.prg_size; - nr_srs_bf_report.num_symbols = 1 << srs_pdu->num_symbols; + nr_srs_bf_report.num_symbols = N_symb_SRS; nr_srs_bf_report.wide_band_snr = srs_est >= 0 ? (gNB->srs->snr + 64) << 1 : 0xFF; // 0xFF will be set if this field is invalid - nr_srs_bf_report.num_reported_symbols = 1 << srs_pdu->num_symbols; + nr_srs_bf_report.num_reported_symbols = N_symb_SRS; AssertFatal(nr_srs_bf_report.num_reported_symbols == 1, "nr_srs_bf_report.num_reported_symbols %i not handled yet!\n", nr_srs_bf_report.num_reported_symbols); @@ -1234,7 +1323,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, N srs_pdu, gNB->nr_srs_info[i], srs_pdu->srs_parameters_v4.iq_representation, - ant, + nb_antennas_rx, srs_pdu->srs_parameters_v4.num_total_ue_antennas, srs_pdu->srs_parameters_v4.prg_size, srs_pdu->srs_parameters_v4.srs_bandwidth_size / srs_pdu->srs_parameters_v4.prg_size, @@ -1306,7 +1395,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, N T(T_GNB_PHY_PUCCH_PUSCH_IQ, T_INT(frame_rx), T_INT(slot_rx), - T_BUFFER(&gNB->common_vars.rxdataF[0][0][0], nb_symb * symb_sz * 4)); + T_BUFFER(&gNB->common_vars.rxdataF[0][0][0], nb_symb * ofdm_symbol_size * 4)); } VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_UESPEC_RX,0); diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c index 68c0541e3a..c2aa0b4bd7 100644 --- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c +++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c @@ -304,7 +304,7 @@ static void configure_srs_info(fapi_nr_ul_config_srs_pdu *srs_config_pdu, nr_srs * send srs according to current configuration * *********************************************************************/ -static bool ue_srs_procedures_nr(PHY_VARS_NR_UE *ue, +bool ue_srs_procedures_nr(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc, c16_t **txdataF, nr_phy_data_tx_t *phy_data, @@ -314,12 +314,13 @@ static bool ue_srs_procedures_nr(PHY_VARS_NR_UE *ue, return false; } + NR_DL_FRAME_PARMS *frame_parms = &(ue->frame_parms); fapi_nr_ul_config_srs_pdu *srs_config_pdu = &phy_data->srs_vars.srs_config_pdu; - int first_srs_symbol = ue->frame_parms.symbols_per_slot - 1 - srs_config_pdu->time_start_position; + const uint8_t l0 = frame_parms->symbols_per_slot - 1 - srs_config_pdu->time_start_position; // Num consecutive SRS symbols according to 38.211 6.4.1.4.1 int num_srs_symbols[] = {1, 2, 4, 8, 12}; - int last_srs_symbol = first_srs_symbol + num_srs_symbols[srs_config_pdu->num_symbols] - 1; - for (int i = first_srs_symbol; i <= last_srs_symbol; i++) { + int last_srs_symbol = l0 + num_srs_symbols[srs_config_pdu->num_symbols] - 1; + for (int i = l0; i <= last_srs_symbol; i++) { was_symbol_used[i] = true; } @@ -351,8 +352,7 @@ static bool ue_srs_procedures_nr(PHY_VARS_NR_UE *ue, #endif configure_srs_info(srs_config_pdu, ue->nr_srs_info); - NR_DL_FRAME_PARMS *frame_parms = &(ue->frame_parms); - uint16_t symbol_offset = (frame_parms->symbols_per_slot - 1 - srs_config_pdu->time_start_position)*frame_parms->ofdm_symbol_size; + uint16_t symbol_offset = l0 * frame_parms->ofdm_symbol_size; bool generated = generate_srs_nr(frame_parms, txdataF, symbol_offset, @@ -360,7 +360,8 @@ static bool ue_srs_procedures_nr(PHY_VARS_NR_UE *ue, ue->nr_srs_info, AMP, proc->frame_tx, - proc->nr_slot_tx); + proc->nr_slot_tx, + frame_parms->nb_antennas_tx); return generated; } @@ -400,15 +401,14 @@ void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc, n const NR_UE_PRACH *prach_var = ue->prach_vars[proc->gNB_id]; if (!prach_var->active) { start_meas_nr_ue_phy(ue, OFDM_MOD_STATS); - nr_ue_pusch_common_procedures(ue, - proc->nr_slot_tx, - &ue->frame_parms, - ue->frame_parms.nb_antennas_tx, - (c16_t **)txdataF, - txp, - link_type_ul, - was_symbol_used, - ue->no_phase_pre_comp); + nr_tx_rotation_and_ofdm_mod(proc->nr_slot_tx, + &ue->frame_parms, + ue->frame_parms.nb_antennas_tx, + (c16_t **)txdataF, + txp, + link_type_ul, + was_symbol_used, + ue->no_phase_pre_comp); stop_meas_nr_ue_phy(ue, OFDM_MOD_STATS); } diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue_sl.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue_sl.c index d1bbb7ae99..40f3a8256b 100644 --- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue_sl.c +++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue_sl.c @@ -315,15 +315,14 @@ void phy_procedures_nrUE_SL_TX(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc was_symbol_used[i] = true; if (tx_action) { LOG_D(NR_PHY, "Sending Uplink data \n"); - nr_ue_pusch_common_procedures(ue, - proc->nr_slot_tx, - fp, - fp->nb_antennas_tx, - txdataF, - txp, - link_type_sl, - was_symbol_used, - ue->no_phase_pre_comp); + nr_tx_rotation_and_ofdm_mod(proc->nr_slot_tx, + fp, + fp->nb_antennas_tx, + txdataF, + txp, + link_type_sl, + was_symbol_used, + ue->no_phase_pre_comp); } LOG_D(NR_PHY, "****** end Sidelink TX-Chain for AbsSubframe %d.%d ******\n", frame_tx, slot_tx); diff --git a/openair1/SIMULATION/NR_PHY/dlsim.c b/openair1/SIMULATION/NR_PHY/dlsim.c index f7c8752c76..40ad816d2c 100644 --- a/openair1/SIMULATION/NR_PHY/dlsim.c +++ b/openair1/SIMULATION/NR_PHY/dlsim.c @@ -324,7 +324,7 @@ int main(int argc, char **argv) setbuf(stdout, NULL); int c; int i,aa;//,l; - double sigma2, sigma2_dB=10, SNR, snr0=-2.0, snr1=2.0; + double SNR, snr0 = -2.0, snr1 = 2.0; uint8_t snr1set=0; double effRate; //float psnr; @@ -1172,15 +1172,12 @@ int main(int argc, char **argv) } } - int txlev[n_tx]; - int txlev_sum = 0; + // Compute transmitter energy level int l_ofdm = 6; - for (aa=0; aaofdm_symbol_size + (l_ofdm-1)*frame_parms->nb_prefix_samples + frame_parms->nb_prefix_samples0], - frame_parms->ofdm_symbol_size + frame_parms->nb_prefix_samples); - txlev_sum += txlev[aa]; - if (n_trials==1) printf("txlev[%d] = %d (%f dB) txlev_sum %d\n",aa,txlev[aa],10*log10((double)txlev[aa]),txlev_sum); - } + int symbol_offset = slot_offset + l_ofdm * frame_parms->ofdm_symbol_size + (l_ofdm - 1) * frame_parms->nb_prefix_samples + + frame_parms->nb_prefix_samples0; + int symbol_length = frame_parms->ofdm_symbol_size + frame_parms->nb_prefix_samples; + double txlev_sum = compute_tx_energy_level(txdata, n_tx, symbol_offset, symbol_length, n_trials); for (i = 0; i < slot_length; i++) { for (aa=0; aanb_antennas_tx; aa++) { @@ -1189,11 +1186,11 @@ int main(int argc, char **argv) } } - double ts = 1.0/(frame_parms->subcarrier_spacing * frame_parms->ofdm_symbol_size); - //Compute AWGN variance - sigma2_dB = 10 * log10((double)txlev_sum * ((double)UE->frame_parms.ofdm_symbol_size/(12*pdsch_pdu_rel15->rbSize))) - SNR; - sigma2 = pow(10, sigma2_dB/10); - if (n_trials==1) printf("sigma2 %f (%f dB), txlev_sum %f (factor %f)\n",sigma2,sigma2_dB,10*log10((double)txlev_sum),(double)(double)UE->frame_parms.ofdm_symbol_size/(12*pdsch_pdu_rel15->rbSize)); + double ts = 1.0/(frame_parms->subcarrier_spacing * frame_parms->ofdm_symbol_size); + + // Estimate noise power from the transmitter level and SNR + double sigma2 = + compute_noise_variance(txlev_sum, UE->frame_parms.ofdm_symbol_size, pdsch_pdu_rel15->rbSize, 1, SNR, n_trials); for (aa = 0; aa < n_rx; aa++) { bzero(r_re[aa], slot_length * sizeof(double)); diff --git a/openair1/SIMULATION/NR_PHY/prachsim.c b/openair1/SIMULATION/NR_PHY/prachsim.c index f1a419d2a1..4dbac5dd7f 100644 --- a/openair1/SIMULATION/NR_PHY/prachsim.c +++ b/openair1/SIMULATION/NR_PHY/prachsim.c @@ -131,7 +131,7 @@ int main(int argc, char **argv){ sigaction(SIGINT, &sigint_action, &oldaction); get_softmodem_params()->sl_mode = 0; - double sigma2, sigma2_dB = 0, SNR, snr0 = -2.0, snr1 = 0.0, ue_speed0 = 0.0, ue_speed1 = 0.0; + double SNR, snr0 = -2.0, snr1 = 0.0, ue_speed0 = 0.0, ue_speed1 = 0.0; double **s_re, **s_im, **r_re, **r_im, iqim = 0.0, delay_avg = 0, ue_speed = 0, fs=-1, bw; int i, l, aa, aarx, trial, n_frames = 1, rx_prach_start; //, ntrials=1; c16_t **txdata; @@ -728,14 +728,7 @@ int main(int argc, char **argv){ for (trial = 0; trial < n_frames && !stop; trial++) { if (input_fd == NULL) { - sigma2_dB = 10*log10((double)tx_lev) - SNR - 10*log10(N_RB_UL*12/N_ZC); - - if (n_frames==1) - printf("sigma2_dB %f (SNR %f dB) tx_lev_dB %f\n",sigma2_dB,SNR,10*log10((double)tx_lev)); - - //AWGN - sigma2 = pow(10,sigma2_dB/10); - // printf("Sigma2 %f (sigma2_dB %f)\n",sigma2,sigma2_dB); + double sigma2 = compute_noise_variance(tx_lev, N_ZC, N_RB_UL, 1, SNR, n_frames); if (awgn_flag == 0) { multipath_tv_channel(UE2gNB, s_re, s_im, r_re, r_im, frame_parms->samples_per_frame, 0); diff --git a/openair1/SIMULATION/NR_PHY/pucchsim.c b/openair1/SIMULATION/NR_PHY/pucchsim.c index 21d43f48ad..db20b21b8f 100644 --- a/openair1/SIMULATION/NR_PHY/pucchsim.c +++ b/openair1/SIMULATION/NR_PHY/pucchsim.c @@ -96,7 +96,7 @@ int main(int argc, char **argv) sigaction(SIGINT, &sigint_action, &oldaction); int i;//,l; - double sigma2, sigma2_dB=10,SNR,snr0=-2.0,snr1=2.0; + double SNR, snr0 = -2.0, snr1 = 2.0; double cfo=0; uint8_t snr1set=0; double **s_re,**s_im,**r_re,**r_im; @@ -566,15 +566,16 @@ int main(int argc, char **argv) // SNR Computation // standard says: SNR = S / N, where S is the total signal energy, N is the noise energy in the transmission bandwidth (i.e. N_RB_DL resource blocks) // txlev = S. - int txlev = signal_energy((int32_t *)&txdataF[0][startingSymbolIndex*frame_parms->ofdm_symbol_size], frame_parms->ofdm_symbol_size); + + // Compute transmitter energy level + int symbol_offset = startingSymbolIndex * frame_parms->ofdm_symbol_size; + int symbol_length = frame_parms->ofdm_symbol_size; + double txlev = compute_tx_energy_level(txdataF, 1, symbol_offset, symbol_length, n_trials); // sigma2 is variance per dimension, so N/(N_RB*12) // so, sigma2 = N/(N_RB_DL*12) => (S/SNR)/(N_RB*12) int N_RB = (format == 0 || format == 1) ? 1 : nrofPRB; - sigma2_dB = 10*log10(txlev*(N_RB_DL/N_RB))-SNR; - sigma2 = pow(10.0,sigma2_dB/10.0); - - if (n_trials==1) printf("txlev %d (%f dB), offset %d, sigma2 %f ( %f dB)\n",txlev,10*log10(txlev),startingSymbolIndex*frame_parms->ofdm_symbol_size,sigma2,sigma2_dB); + double sigma2 = compute_noise_variance(txlev, N_RB_DL * 12, N_RB, 1, SNR, n_trials); for (int symb=0; symbframe_parms.symbols_per_slot;symb++) { if (symb= startingSymbolIndex+nrofSymbols) { @@ -648,7 +649,16 @@ int main(int argc, char **argv) gNB_I0_measurements(gNB, nr_slot_tx, 0, gNB->frame_parms.symbols_per_slot, rb_mask_ul); start_meas(&gNB->phy_proc_rx); - if (n_trials==1) printf("noise rxlev %d (%d dB), rxlev pucch %d dB sigma2 %f dB, SNR %f, TX %f, I0 (pucch) %d, I0 (avg) %d\n",rxlev,dB_fixed(rxlev),dB_fixed(rxlev_pucch),sigma2_dB,SNR,10*log10((double)txlev*UE->frame_parms.ofdm_symbol_size/12),gNB->measurements.n0_subband_power_tot_dB[startingPRB],gNB->measurements.n0_subband_power_avg_dB); + if (n_trials == 1) + printf("noise rxlev %d (%d dB), rxlev pucch %d dB sigma2 %f dB, SNR %f, TX %f, I0 (pucch) %d, I0 (avg) %d\n", + rxlev, + dB_fixed(rxlev), + dB_fixed(rxlev_pucch), + 10 * log10(sigma2), + SNR, + 10 * log10((double)txlev * UE->frame_parms.ofdm_symbol_size / 12), + gNB->measurements.n0_subband_power_tot_dB[startingPRB], + gNB->measurements.n0_subband_power_avg_dB); if(format==0){ nfapi_nr_uci_pucch_pdu_format_0_1_t uci_pdu; nfapi_nr_pucch_pdu_t pucch_pdu; diff --git a/openair1/SIMULATION/NR_PHY/srssim.c b/openair1/SIMULATION/NR_PHY/srssim.c new file mode 100644 index 0000000000..c86ab2b6a9 --- /dev/null +++ b/openair1/SIMULATION/NR_PHY/srssim.c @@ -0,0 +1,690 @@ +/* + * 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 + */ + +#include +#include +#include "common/utils/nr/nr_common.h" +#include "common/utils/var_array.h" +#define inMicroS(a) (((double)(a)) / (get_cpu_freq_GHz() * 1000.0)) +#include "SIMULATION/LTE_PHY/common_sim.h" +#include "common/utils/assertions.h" +#include "PHY/INIT/nr_phy_init.h" +#include "PHY/MODULATION/nr_modulation.h" +#include "PHY/MODULATION/modulation_common.h" +#include "PHY/NR_REFSIG/ul_ref_seq_nr.h" +#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" +#include "PHY/NR_TRANSPORT/nr_transport_proto.h" +#include "PHY/NR_UE_TRANSPORT/nr_transport_ue.h" +#include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h" +#include "PHY/NR_ESTIMATION/nr_ul_estimation.h" +#include "PHY/phy_vars_nr_ue.h" +#include "e1ap_messages_types.h" +#include "executables/nr-uesoftmodem.h" +#include "SIMULATION/NR_PHY/nr_unitary_defs.h" +#include "SIMULATION/TOOLS/sim.h" +#include "common/ran_context.h" +#include "time_meas.h" +#include "SCHED_NR/phy_frame_config_nr.h" + +PHY_VARS_gNB *gNB; +PHY_VARS_NR_UE *UE; +RAN_CONTEXT_t RC; +char *uecap_file = NULL; +int32_t uplink_frequency_offset[MAX_NUM_CCs][4]; + +double cpuf; +uint64_t downlink_frequency[MAX_NUM_CCs][4]; +uint64_t uplink_frequency[MAX_NUM_CCs][4]; +THREAD_STRUCT thread_struct; + +// needed for some functions +uint16_t n_rnti = 0x1234; +openair0_config_t openair0_cfg[MAX_CARDS]; +nrUE_params_t nrUE_params; + +nrUE_params_t *get_nrUE_params(void) +{ + return &nrUE_params; +} + +channel_desc_t *UE2gNB[MAX_MOBILES_PER_GNB][NUMBER_OF_gNB_MAX]; +configmodule_interface_t *uniqCfg = NULL; + +void e1_bearer_context_setup(const e1ap_bearer_setup_req_t *req) +{ + abort(); +} +void e1_bearer_context_modif(const e1ap_bearer_mod_req_t *req) +{ + abort(); +} +void e1_bearer_release_cmd(const e1ap_bearer_release_cmd_t *cmd) +{ + abort(); +} + +int main(int argc, char *argv[]) +{ + stop = false; + __attribute__((unused)) struct sigaction oldaction; + sigaction(SIGINT, &sigint_action, &oldaction); + + double SNR, snr0 = 0, snr1 = 20.0; + double snr_step = 1; + uint8_t snr1set = 0; + double **s_re, **s_im, **r_re, **r_im; + int trial, n_trials = 1, delay = 0; + double maxDoppler = 0.0; + uint8_t n_tx = 1, n_rx = 1; + channel_desc_t *UE2gNB; + uint8_t extended_prefix_flag = 0; + SCM_t channel_model = AWGN; + corr_level_t corr_level = CORR_LEVEL_LOW; + uint16_t N_RB_DL = 106, N_RB_UL = 106, mu = 1; + int srs_start_symbol = 13; + int srs_comb_size = 0; + int srs_comb_offset = 0; + int srs_cyclic_shift = 0; + int nb_symb_srs = 0; + int i; + int loglvl = OAILOG_WARNING; + int print_perf = 0; + int slot = 8; + int frame = 1; + cpuf = get_cpu_freq_GHz(); + double DS_TDL = .03; + int threequarter_fs = 0; + uint64_t SSB_positions = 0x01; + uint16_t Nid_cell = 0; + + if ((uniqCfg = load_configmodule(argc, argv, CONFIG_ENABLECMDLINEONLY)) == 0) { + exit_fun("[NR_SRSSIM] Error, configuration module init failed\n"); + } + + randominit(); + + /* initialize the sin-cos table */ + InitSinLUT(); + + int c; + while ((c = getopt(argc, argv, "--:O:a:b:c:d:e:f:g:h:i:kl:m:n:p:s:u:y:z:A:B:C:H:PR:S:L:")) != -1) { + /* ignore long options starting with '--', option '-O' and their arguments that are handled by configmodule */ + /* with this opstring getopt returns 1 for non-option arguments, refer to 'man 3 getopt' */ + if (c == 1 || c == '-' || c == 'O') + continue; + + printf("handling optarg %c\n", c); + switch (c) { + case 'a': + srs_start_symbol = atoi(optarg); + AssertFatal(srs_start_symbol >= 8 && srs_start_symbol <= 13, "start_symbol %d is not in 8..13\n", srs_start_symbol); + break; + + case 'b': + nb_symb_srs = atoi(optarg); + AssertFatal(nb_symb_srs == 1 || nb_symb_srs == 2 || nb_symb_srs == 4, + "number of srs symbols %d is not 1,2,4\n", + nb_symb_srs); + nb_symb_srs >>= 1; // Value: 0 = 1 symbol, 1 = 2 symbols, 2 = 4 symbols + break; + + case 'c': + n_rnti = atoi(optarg); + AssertFatal(n_rnti > 0 && n_rnti <= 65535, "Illegal n_rnti %x\n", n_rnti); + break; + + case 'd': + delay = atoi(optarg); + break; + + case 'e': + srs_comb_size = atoi(optarg); + AssertFatal(srs_comb_size >= 0 && srs_comb_size < 2, "comb_size %d is not in 0 or 1\n", srs_comb_size); + break; + + case 'f': + srs_comb_offset = atoi(optarg); + if (srs_comb_size == 0) { + AssertFatal(srs_comb_offset >= 0 && srs_comb_offset <= 1, "comb_offset %d is not in 0...1\n", srs_comb_offset); + } else if (srs_comb_size == 1) { + AssertFatal(srs_comb_offset >= 0 && srs_comb_offset <= 3, "comb_offset %d is not in 0...3\n", srs_comb_offset); + } + break; + + case 'g': + + switch ((char)*optarg) { + case 'A': + channel_model = TDL_A; + DS_TDL = 0.030; // 30 ns + printf("Channel model: TDLA30\n"); + break; + case 'B': + channel_model = TDL_B; + DS_TDL = 0.100; // 100ns + printf("Channel model: TDLB100\n"); + break; + case 'C': + channel_model = TDL_C; + DS_TDL = 0.300; // 300 ns + printf("Channel model: TDLC300\n"); + break; + default: + printf("Unsupported channel model!\n"); + exit(-1); + } + + if (optarg[1] == ',') { + switch (optarg[2]) { + case 'l': + corr_level = CORR_LEVEL_LOW; + break; + case 'm': + corr_level = CORR_LEVEL_MEDIUM; + break; + case 'h': + corr_level = CORR_LEVEL_HIGH; + break; + default: + printf("Invalid correlation level!\n"); + } + } + + if (optarg[3] == ',') { + maxDoppler = atoi(&optarg[4]); + printf("Maximum Doppler Frequency: %.0f Hz\n", maxDoppler); + } + break; + + case 'i': + srs_cyclic_shift = atoi(optarg); + if (srs_comb_size == 0) { + AssertFatal(srs_cyclic_shift >= 0 && srs_cyclic_shift <= 7, "comb_shift %d is not in 0...7\n", srs_cyclic_shift); + } else if (srs_comb_size == 1) { + AssertFatal(srs_cyclic_shift >= 0 && srs_cyclic_shift <= 11, "comb_shift %d is not in 0...11\n", srs_cyclic_shift); + } + break; + + case 'k': + printf("Setting threequarter_fs_flag\n"); + threequarter_fs = 1; + break; + + case 'n': + n_trials = atoi(optarg); + break; + + case 'p': + extended_prefix_flag = 1; + break; + + case 's': + snr0 = atof(optarg); + printf("Setting SNR0 to %f\n", snr0); + break; + + case 'u': + mu = atoi(optarg); + break; + + case 'y': + n_tx = atoi(optarg); + if ((n_tx == 0) || (n_tx > 4)) { + printf("Unsupported number of tx antennas %d\n", n_tx); + exit(-1); + } + break; + + case 'z': + n_rx = atoi(optarg); + if ((n_rx == 0) || (n_rx > 8)) { + printf("Unsupported number of rx antennas %d\n", n_rx); + exit(-1); + } + break; + + case 'H': + slot = atoi(optarg); + break; + + case 'R': + N_RB_DL = atoi(optarg); + N_RB_UL = N_RB_DL; + break; + + case 'S': + snr1 = atof(optarg); + snr1set = 1; + printf("Setting SNR1 to %f\n", snr1); + break; + + case 'P': + print_perf = 1; + cpu_meas_enabled = 1; + break; + + case 'L': + loglvl = atoi(optarg); + break; + + default: + case 'h': + printf("%s -h(elp)\n", argv[0]); + printf("-a SRS starting symbol (8 .. 13)\n"); + printf("-b SRS number of symbols (1, 2, 4)\n"); + printf("-c RNTI\n"); + printf("-d Introduce delay in terms of number of samples\n"); + printf("-e SRS comb size, 0 (comb size 2), 1 (comb size 4) \n"); + printf("-f SRS comb offset, 0 .. 1 (comb size 2), 0 .. 3 (comb size 4) \n"); + printf( + "-g Channel model configuration. Arguments list: Number of arguments = 3, {Channel model: [A] TDLA30, [B] TDLB100, [C] " + "TDLC300}, {Correlation: [l] Low, [m] Medium, [h] High}, {Maximum Doppler shift} e.g. -g A,l,10\n"); + printf("-h This message\n"); + printf("-i SRS cyclic shift, 0 .. 7 (comb size 2), 0 .. 11 (comb size 4) \n"); + printf("-k 3/4 sampling\n"); + printf("-n Number of trials to simulate\n"); + printf("-p Use extended prefix mode\n"); + printf("-s Starting SNR, runs from SNR0 to SNR0 + 10 dB if ending SNR isn't given\n"); + printf("-S Ending SNR, runs from SNR0 to SNR1\n"); + printf("-u Set the numerology\n"); + printf("-y Number of TX antennas used at UE\n"); + printf("-z Number of RX antennas used at gNB\n"); + printf("-H Slot number\n"); + printf("-L \n"); + printf("-P Print SRS performances\n"); + printf("-R Maximum number of available resorce blocks (N_RB_DL)\n"); + exit(-1); + break; + } + } + + logInit(); + set_glog(loglvl); + + int ret = 1; + + if (snr1set == 0) + snr1 = snr0 + 10; + + double sampling_rate, tx_bandwidth, rx_bandwidth; + uint32_t samples; + get_samplerate_and_bw(mu, N_RB_DL, threequarter_fs, &sampling_rate, &samples, &tx_bandwidth, &rx_bandwidth); + + // Initialize gNB + gNB = calloc_or_fail(1, sizeof(PHY_VARS_gNB)); + gNB->ofdm_offset_divisor = UINT_MAX; + gNB->RU_list[0] = calloc_or_fail(1, sizeof(**gNB->RU_list)); + gNB->RU_list[0]->rfdevice.openair0_cfg = openair0_cfg; + + NR_DL_FRAME_PARMS *fp = &gNB->frame_parms; + fp->N_RB_DL = N_RB_DL; + fp->N_RB_UL = N_RB_UL; + fp->Ncp = extended_prefix_flag ? EXTENDED : NORMAL; + fp->nb_antennas_tx = n_tx; + fp->nb_antennas_rx = n_rx; + fp->threequarter_fs = threequarter_fs; + nr_phy_config_request_sim(gNB, N_RB_UL, N_RB_UL, mu, Nid_cell, SSB_positions); + printf("dl freq %" PRIu64 " , ul freq %" PRIu64 " \n", fp->dl_CarrierFreq, fp->ul_CarrierFreq); + do_tdd_config_sim(gNB, mu); + phy_init_nr_gNB(gNB); + + // Initialize UE + UE = calloc_or_fail(1, sizeof(PHY_VARS_NR_UE)); + memcpy(&UE->frame_parms, fp, sizeof(NR_DL_FRAME_PARMS)); // setting same frame parameters as gNB + + /* RU handles rxdataF, and gNB just has a pointer. Here, we don't have an RU, + * so we need to allocate that memory as well. First index in rxdataF[0] index refers to beams*/ + for (i = 0; i < n_rx; i++) + gNB->common_vars.rxdataF[0][i] = malloc16_clear(fp->samples_per_frame_wCP * sizeof(int32_t)); + + /* no RU: need to have rxdata */ + c16_t **rxdata; + rxdata = malloc_or_fail(n_rx * sizeof(*rxdata)); + for (i = 0; i < n_rx; i++) + rxdata[i] = malloc16_clear(fp->samples_per_frame * sizeof(c16_t)); + + /* no memory allocated for UE common_vars: need to have txdata and txdataF */ + c16_t **txdata; + txdata = malloc_or_fail(n_tx * sizeof(*txdata)); + for (i = 0; i < n_tx; i++) + txdata[i] = malloc16_clear(fp->samples_per_frame * sizeof(c16_t)); + + c16_t **txdataF; + txdataF = malloc_or_fail(n_tx * sizeof(*txdataF)); + for (i = 0; i < n_tx; i++) + txdataF[i] = malloc16_clear(fp->samples_per_frame_wCP * sizeof(c16_t)); + + // Configure channel model + UE2gNB = new_channel_desc_scm(n_tx, + n_rx, + channel_model, + sampling_rate / 1e6, + fp->ul_CarrierFreq, + tx_bandwidth, + DS_TDL, + maxDoppler, + corr_level, + 0, + delay, + 0, + 0); + + if (UE2gNB == NULL) { + printf("Problem generating channel model. Exiting.\n"); + exit(-1); + } + + // Allocate memory to intermediate variables to apply channel + int slot_length = get_samples_per_slot(slot, fp); + + s_re = malloc_or_fail(n_tx * sizeof(double *)); + s_im = malloc_or_fail(n_tx * sizeof(double *)); + r_re = malloc_or_fail(n_rx * sizeof(double *)); + r_im = malloc_or_fail(n_rx * sizeof(double *)); + + for (int aatx = 0; aatx < n_tx; aatx++) { + s_re[aatx] = calloc_or_fail(1, slot_length * sizeof(double)); + s_im[aatx] = calloc_or_fail(1, slot_length * sizeof(double)); + } + + for (int aarx = 0; aarx < n_rx; aarx++) { + r_re[aarx] = calloc_or_fail(1, slot_length * sizeof(double)); + r_im[aarx] = calloc_or_fail(1, slot_length * sizeof(double)); + } + + //----------- configure SRS ---------------------------- + long locationAndBandwidth = PRBalloc_to_locationandbandwidth(N_RB_DL, 0); + + // Configure SRS parameters at gNB + const uint16_t m_SRS[64] = {4, 8, 12, 16, 16, 20, 24, 24, 28, 32, 36, 40, 48, 48, 52, 56, + 60, 64, 72, 72, 76, 80, 88, 96, 96, 104, 112, 120, 120, 120, 128, 128, + 128, 132, 136, 144, 144, 144, 144, 152, 160, 160, 160, 168, 176, 184, 192, 192, + 192, 192, 208, 216, 224, 240, 240, 240, 240, 256, 256, 256, 264, 272, 272, 272}; + nfapi_nr_srs_pdu_t srs_pdu = {.rnti = n_rnti, + .bwp_size = NRRIV2BW(locationAndBandwidth, 275), + .bwp_start = NRRIV2PRBOFFSET(locationAndBandwidth, 275), + .subcarrier_spacing = fp->numerology_index, + .cyclic_prefix = extended_prefix_flag, + .num_ant_ports = n_tx == 4 ? 2 + : n_tx == 2 ? 1 + : 0, + .num_symbols = nb_symb_srs, + .num_repetitions = 0, // Value: 0 = 1, 1 = 2, 2 = 4 + .time_start_position = fp->symbols_per_slot - 1 - srs_start_symbol, + .bandwidth_index = 0, + .config_index = rrc_get_max_nr_csrs(srs_pdu.bwp_size, srs_pdu.bandwidth_index), + .sequence_id = 40, + .comb_size = srs_comb_size, + .comb_offset = srs_comb_offset, + .cyclic_shift = srs_cyclic_shift, + .frequency_position = 0, + .frequency_shift = 0, + .frequency_hopping = 0, + .group_or_sequence_hopping = 0, + .resource_type = NR_SRS_Resource__resourceType_PR_periodic, + .t_srs = 1, + .t_offset = 0, + .srs_parameters_v4.srs_bandwidth_size = m_SRS[srs_pdu.config_index], + .srs_parameters_v4.usage = 1 << NR_SRS_ResourceSet__usage_codebook, + .srs_parameters_v4.report_type[0] = 1, + .srs_parameters_v4.iq_representation = 1, + .srs_parameters_v4.prg_size = 1, + .srs_parameters_v4.num_total_ue_antennas = 1 << srs_pdu.num_ant_ports, + .beamforming.num_prgs = m_SRS[srs_pdu.config_index], + .beamforming.prg_size = 1}; + + gNB->srs->srs_pdu = srs_pdu; + gNB->srs->active = true; + gNB->srs->beam_nb = 0; + gNB->srs->frame = frame; + gNB->srs->slot = slot; + + // Configure SRS parameters at UE + fapi_nr_ul_config_srs_pdu srs_config_pdu = {.rnti = srs_pdu.rnti, + .bwp_size = srs_pdu.bwp_size, + .bwp_start = srs_pdu.bwp_start, + .subcarrier_spacing = srs_pdu.subcarrier_spacing, + .cyclic_prefix = srs_pdu.cyclic_prefix, + .num_ant_ports = srs_pdu.num_ant_ports, + .num_symbols = srs_pdu.num_symbols, + .num_repetitions = srs_pdu.num_repetitions, + .time_start_position = srs_pdu.time_start_position, + .bandwidth_index = srs_pdu.bandwidth_index, + .config_index = srs_pdu.config_index, + .sequence_id = srs_pdu.sequence_id, + .comb_size = srs_pdu.comb_size, + .comb_offset = srs_pdu.comb_offset, + .cyclic_shift = srs_pdu.cyclic_shift, + .frequency_position = srs_pdu.frequency_position, + .frequency_shift = srs_pdu.frequency_shift, + .frequency_hopping = srs_pdu.frequency_hopping, + .group_or_sequence_hopping = srs_pdu.group_or_sequence_hopping, + .resource_type = srs_pdu.resource_type, + .t_srs = srs_pdu.t_srs, + .t_offset = srs_pdu.t_offset, + .beamforming.num_prgs = srs_pdu.beamforming.num_prgs, + .beamforming.prg_size = srs_pdu.beamforming.prg_size}; + + nr_phy_data_tx_t phy_data = {0}; + phy_data.srs_vars.active = true; + phy_data.srs_vars.srs_config_pdu = srs_config_pdu; + UE->nr_srs_info = malloc16_clear(sizeof(nr_srs_info_t)); + + //----------- UE TX SRS procedures --------------------- + + UE_nr_rxtx_proc_t proc; + proc.frame_rx = frame; + proc.frame_tx = frame; + proc.nr_slot_tx = slot; + proc.nr_slot_rx = slot; + bool was_symbol_used[NR_NUMBER_OF_SYMBOLS_PER_SLOT] = {0}; + int slot_offset = get_samples_slot_timestamp(fp, slot); + uint16_t ofdm_symbol_size = fp->ofdm_symbol_size; + int slot_offsetF = (slot % RU_RX_SLOT_DEPTH) * fp->symbols_per_slot * ofdm_symbol_size; + + c16_t *txF[n_tx]; + for (i = 0; i < n_tx; i++) + txF[i] = txdataF[i] + slot_offsetF; + + c16_t *txd[n_tx]; + for (i = 0; i < n_tx; i++) + txd[i] = txdata[i] + slot_offset; + + ue_srs_procedures_nr(UE, &proc, (c16_t **)txF, &phy_data, was_symbol_used); + + //------------ TX rotation and OFDM Modulation -------------------------- + nr_tx_rotation_and_ofdm_mod(slot, fp, n_tx, txF, txd, link_type_ul, was_symbol_used, false); + + //----------- Apply propagation channel and add noise ---------------------------- + + double ts = 1.0 / (fp->subcarrier_spacing * ofdm_symbol_size); + + for (i = 0; i < slot_length; i++) { + for (int aa = 0; aa < n_tx; aa++) { + s_re[aa][i] = (double)txdata[aa][slot_offset + i].r; + s_im[aa][i] = (double)txdata[aa][slot_offset + i].i; + } + } + + // Compute SRS symbol offset and length + int symbol_offset = slot_offset; + int abs_first_symbol = slot * fp->symbols_per_slot; + int idx_sym; + for (idx_sym = abs_first_symbol; idx_sym < abs_first_symbol + srs_start_symbol; idx_sym++) + symbol_offset += (idx_sym % (0x7 << fp->numerology_index)) ? fp->nb_prefix_samples : fp->nb_prefix_samples0; + + symbol_offset += ofdm_symbol_size * srs_start_symbol; + int symbol_length = ofdm_symbol_size + (idx_sym % (0x7 << fp->numerology_index)) ? fp->nb_prefix_samples : fp->nb_prefix_samples0; + + // Compute transmitter energy level + double txlev_sum = compute_tx_energy_level(txdata, n_tx, symbol_offset, symbol_length, n_trials); + + for (SNR = snr0; SNR <= snr1 && !stop; SNR += snr_step) { + varArray_t *table_rx = initVarArray(1000, sizeof(double)); + reset_meas(&gNB->rx_srs_stats); + reset_meas(&gNB->generate_srs_stats); + reset_meas(&gNB->get_srs_signal_stats); + reset_meas(&gNB->srs_channel_estimation_stats); + reset_meas(&gNB->srs_timing_advance_stats); + + double sum_srs_snr = 0; + int tao_ns_count = 0; + for (trial = 0; trial < n_trials && !stop; trial++) { + // Estimate noise power from the transmitter level and SNR + double sigma = compute_noise_variance(txlev_sum, ofdm_symbol_size, srs_pdu.bwp_size, 1, SNR, n_trials); + + //----------- Apply propagation channel ---------------------------- + multipath_channel(UE2gNB, s_re, s_im, r_re, r_im, slot_length, 0, (n_trials == 1) ? 1 : 0); + + //----------- Add noise ---------------------------- + add_noise(rxdata, + (const double **)r_re, + (const double **)r_im, + sigma, // noise power + slot_length, + slot_offset, + ts, + 0, // delay + 0, // pdu_bit_map + 0, // PTRS_BITMAP, + n_rx); + + //----------- OFDM Demodulation and RX rotation-------------------------- + nr_ofdm_demod_and_rx_rotation(rxdata, + gNB->common_vars.rxdataF[0], + fp, + n_rx, + slot, + slot_offsetF, + link_type_ul, + was_symbol_used); + + //----------- UE RX SRS procedures --------------------- + + start_meas(&gNB->rx_srs_stats); + NR_gNB_SRS_t *srs = &gNB->srs[0]; + uint8_t N_symb_SRS = 1 << srs->srs_pdu.num_symbols; + uint8_t N_ap = 1 << srs->srs_pdu.num_ant_ports; + int16_t snr_per_rb[srs->srs_pdu.bwp_size]; + uint16_t timing_advance_offset; + int16_t timing_advance_offset_nsec[n_rx]; + int srs_est; + c16_t srs_estimated_channel_freq[n_rx][N_ap][ofdm_symbol_size * N_symb_SRS] __attribute__((aligned(32))); + c16_t srs_estimated_channel_time[n_rx][N_ap][NR_SRS_IDFT_OVERSAMP_FACTOR * ofdm_symbol_size] __attribute__((aligned(32))); + + nr_srs_rx_procedures(gNB, + frame, + slot, + n_rx, + N_ap, + N_symb_SRS, + ofdm_symbol_size, + srs, + gNB->nr_srs_info[0], + &srs_est, + srs_estimated_channel_freq, + srs_estimated_channel_time, + snr_per_rb, + &timing_advance_offset, + timing_advance_offset_nsec); + + sum_srs_snr += pow(10, (double)gNB->srs->snr / 10.0); + + int16_t delay_ns = delay * 1e9 / (fp->samples_per_frame * 100); + for (int ant_idx = 0; ant_idx < n_rx; ant_idx++) { + if (n_trials == 1) + printf("[RX ant %d] SRS estimated: TA offset %d, TA offset ns %d \n", + ant_idx, + timing_advance_offset, + timing_advance_offset_nsec[ant_idx]); + if (timing_advance_offset_nsec[ant_idx] == delay_ns) + tao_ns_count++; + } + stop_meas(&gNB->rx_srs_stats); + } // trail loop + float tao_ns_rate = (float)tao_ns_count / (n_trials * n_rx); + float SRS_SNR_dB = 10 * log10(sum_srs_snr / n_trials); + printf("Actual SNR : %f, Estimated SNR from SRS %f (dB), TA offset success rate %f %%\n", SNR, SRS_SNR_dB, tao_ns_rate * 100); + + if (print_perf == 1) { + printf("\ngNB RX\n"); + printDistribution(&gNB->rx_srs_stats, table_rx, "RX SRS time"); + printStatIndent(&gNB->generate_srs_stats, "Generate SRS sequence time"); + printStatIndent(&gNB->get_srs_signal_stats, "Get SRS signal time"); + printStatIndent(&gNB->srs_channel_estimation_stats, "SRS channel estimation time"); + printStatIndent(&gNB->srs_timing_advance_stats, "SRS timing advance estimation time"); + printf("\n"); + } + + free(table_rx); + + int srs_ret = 1; + if (SNR > 30 && SRS_SNR_dB > 30) { + srs_ret = 0; + } else if (SNR >= SRS_SNR_dB) { + srs_ret = SRS_SNR_dB >= 0.7 * SNR ? 0 : 1; + } else if (SRS_SNR_dB > SNR) { + srs_ret = SNR >= 0.7 * SRS_SNR_dB ? 0 : 1; + } + + if (tao_ns_rate > 0.9 && srs_ret == 0) { + ret = 0; + break; + } + + } // SNR loop + + printf("*************\n"); + printf("SRS test %s\n", ret == 0 ? "OK" : "FAILED"); + printf("*************\n"); + + // free memory + + for (i = 0; i < n_tx; i++) { + free(s_re[i]); + free(s_im[i]); + free(txdata[i]); + free(txdataF[i]); + } + free(s_re); + free(s_im); + free(txdata); + free(txdataF); + + for (i = 0; i < n_rx; i++) { + free(r_re[i]); + free(r_im[i]); + free(rxdata[i]); + free(gNB->common_vars.rxdataF[0][i]); + } + + free(r_re); + free(r_im); + free(rxdata); + + phy_free_nr_gNB(gNB); + free_channel_desc_scm(UE2gNB); + free_and_zero(UE->nr_srs_info); + free(gNB->RU_list[0]); + free(UE); + + return ret; +} diff --git a/openair1/SIMULATION/NR_PHY/ulsim.c b/openair1/SIMULATION/NR_PHY/ulsim.c index 18f6f3f605..d7bd25555f 100644 --- a/openair1/SIMULATION/NR_PHY/ulsim.c +++ b/openair1/SIMULATION/NR_PHY/ulsim.c @@ -281,7 +281,6 @@ int main(int argc, char *argv[]) char *filename_csv = NULL; int i; double SNR, snr0 = -2.0, snr1 = 2.0; - double sigma, sigma_dB; double snr_step = .2; uint8_t snr1set = 0; int slot = 8, frame = 1; @@ -308,7 +307,7 @@ int main(int argc, char *argv[]) int Imcs = 9; uint8_t precod_nbr_layers = 1; int tx_offset; - int32_t txlev_sum = 0, atxlev[4]; + double txlev_sum = 0; int start_rb = 0; int UE_id = 0; int print_perf = 0; @@ -1273,7 +1272,7 @@ int main(int argc, char *argv[]) srs_pdu->subcarrier_spacing = gNB->frame_parms.subcarrier_spacing; srs_pdu->num_ant_ports = n_tx == 4 ? 2 : n_tx == 2 ? 1 : 0; srs_pdu->sequence_id = 40; - srs_pdu->time_start_position = gNB->frame_parms.symbols_per_slot - 1; + srs_pdu->time_start_position = 0; srs_pdu->config_index = rrc_get_max_nr_csrs(srs_pdu->bwp_size, srs_pdu->bandwidth_index); srs_pdu->resource_type = NR_SRS_Resource__resourceType_PR_periodic; srs_pdu->t_srs = 1; @@ -1371,6 +1370,7 @@ int main(int argc, char *argv[]) srs_config_pdu->sequence_id = 40; srs_config_pdu->resource_type = NR_SRS_Resource__resourceType_PR_periodic; srs_config_pdu->t_srs = 1; + srs_config_pdu->time_start_position = 0; } for (int i = 0; i < (TBS / 8); i++) @@ -1400,36 +1400,22 @@ int main(int argc, char *argv[]) } /////////// //////////////////////////////////////////////////// + // Compute transmitter energy level tx_offset = get_samples_slot_timestamp(&gNB->frame_parms, slot); - txlev_sum = 0; - for (int aa = 0; aa < UE->frame_parms.nb_antennas_tx; aa++) { - atxlev[aa] = - signal_energy((int32_t *)&UE->common_vars - .txData[aa][tx_offset + 5 * gNB->frame_parms.ofdm_symbol_size - + 4 * gNB->frame_parms.nb_prefix_samples + gNB->frame_parms.nb_prefix_samples0], - gNB->frame_parms.ofdm_symbol_size + gNB->frame_parms.nb_prefix_samples); - - txlev_sum += atxlev[aa]; - - if (n_trials == 1) - printf("txlev[%d] = %d (%f dB) txlev_sum %d\n", aa, atxlev[aa], 10 * log10((double)atxlev[aa]), txlev_sum); - } + int symbol_offset = tx_offset + 5 * gNB->frame_parms.ofdm_symbol_size + 4 * gNB->frame_parms.nb_prefix_samples + + gNB->frame_parms.nb_prefix_samples0; + int symbol_length = gNB->frame_parms.ofdm_symbol_size + gNB->frame_parms.nb_prefix_samples; + txlev_sum = compute_tx_energy_level(UE->common_vars.txData, + UE->frame_parms.nb_antennas_tx, + symbol_offset, + symbol_length, + n_trials); } else n_trials = 1; if (input_fd == NULL) { - // Justification of division by precod_nbr_layers: - // When the channel is the identity matrix, the results in terms of SNR should be almost equal for 2x2 and 4x4. - sigma_dB = - 10 * log10((double)txlev_sum / precod_nbr_layers * ((double)gNB->frame_parms.ofdm_symbol_size / (12 * nb_rb))) - SNR; - sigma = pow(10, sigma_dB / 10); - - if (n_trials == 1) - printf("sigma %f (%f dB), txlev_sum %f (factor %f)\n", - sigma, - sigma_dB, - 10 * log10((double)txlev_sum), - (double)(double)gNB->frame_parms.ofdm_symbol_size / (12 * nb_rb)); + double sigma = + compute_noise_variance(txlev_sum, gNB->frame_parms.ofdm_symbol_size, nb_rb, precod_nbr_layers, SNR, n_trials); for (i = 0; i < slot_length; i++) { for (int aa = 0; aa < UE->frame_parms.nb_antennas_tx; aa++) { @@ -1460,26 +1446,20 @@ int main(int argc, char *argv[]) UL_INFO.crc_ind.number_crcs = 0; UL_INFO.srs_ind.number_of_pdus = 0; - for(uint8_t symbol = 0; symbol < (gNB->frame_parms.Ncp == EXTENDED ? 12 : 14); symbol++) { - for (int aa = 0; aa < gNB->frame_parms.nb_antennas_rx; aa++) - nr_slot_fep_ul(&gNB->frame_parms, - (int32_t *)rxdata[aa], - (int32_t *)gNB->common_vars.rxdataF[0][aa], - symbol, - slot, - 0); - } + //----------- OFDM Demodulation and RX rotation-------------------------- + bool was_symbol_used[14] = {0}; int offset = (slot & 3) * gNB->frame_parms.symbols_per_slot * gNB->frame_parms.ofdm_symbol_size; - for (int aa = 0; aa < gNB->frame_parms.nb_antennas_rx; aa++) { - const unsigned int max_symb = (gNB->frame_parms.Ncp == EXTENDED) ? 12 : 14; - for (int sym = 0; sym < max_symb; sym++) - apply_nr_rotation_symbol_RX(&gNB->frame_parms, - gNB->common_vars.rxdataF[0][aa] + offset + sym * gNB->frame_parms.ofdm_symbol_size, - gNB->frame_parms.symbol_rotation[1], - gNB->frame_parms.N_RB_UL, - slot, - sym); + for (int i = 0; i < 14; i++) { + was_symbol_used[i] = true; } + nr_ofdm_demod_and_rx_rotation(rxdata, + gNB->common_vars.rxdataF[0], + &gNB->frame_parms, + gNB->frame_parms.nb_antennas_rx, + slot, + offset, + link_type_ul, + was_symbol_used); ul_proc_error = phy_procedures_gNB_uespec_RX(gNB, frame, slot, &UL_INFO); diff --git a/openair1/SIMULATION/TOOLS/multipath_channel.c b/openair1/SIMULATION/TOOLS/multipath_channel.c index f17c2166a3..aeaa4f811f 100644 --- a/openair1/SIMULATION/TOOLS/multipath_channel.c +++ b/openair1/SIMULATION/TOOLS/multipath_channel.c @@ -68,7 +68,7 @@ void __attribute__ ((no_sanitize_address)) multipath_channel(channel_desc_t *des #ifdef DEBUG_CH - for (l = 0; l<(int)desc->channel_length; l++) { + for (int l = 0; l<(int)desc->channel_length; l++) { printf("%p (%f,%f) ",desc->ch[0],desc->ch[0][l].x,desc->ch[0][l].y); } @@ -168,7 +168,7 @@ void __attribute__ ((no_sanitize_address)) multipath_channel(channel_desc_t *des } #ifdef DEBUG_CH - for (l = 0; l<(int)desc->channel_length; l++) { + for (int l = 0; l<(int)desc->channel_length; l++) { printf("ch[%i] = (%f, %f)\n", l, desc->ch[0][l].r, desc->ch[0][l].i); } #endif diff --git a/openair1/SIMULATION/TOOLS/random_channel.c b/openair1/SIMULATION/TOOLS/random_channel.c index 92e191b2dc..cf973f5d84 100644 --- a/openair1/SIMULATION/TOOLS/random_channel.c +++ b/openair1/SIMULATION/TOOLS/random_channel.c @@ -462,8 +462,7 @@ void get_cexp_doppler(struct complexd *cexp_doppler, channel_desc_t *chan_desc, // TS 38.104 - Table G.3-1 uint16_t Dmin = 2; uint16_t Ds = 300; - double c = 299792458; - double v = chan_desc->max_Doppler * (c / (double)chan_desc->center_freq); + double v = chan_desc->max_Doppler * ((double) SPEED_OF_LIGHT / (double)chan_desc->center_freq); #ifdef DOPPLER_DEBUG printf("v = %f\n", v); diff --git a/openair1/SIMULATION/tests/CMakeLists.txt b/openair1/SIMULATION/tests/CMakeLists.txt index 566028234d..0c2ab8dd39 100644 --- a/openair1/SIMULATION/tests/CMakeLists.txt +++ b/openair1/SIMULATION/tests/CMakeLists.txt @@ -341,6 +341,27 @@ add_physim_test(physim.5g.nr_prachsim.test8 "15kHz SCS, 25 PRBs" nr_prachsim -a add_physim_test(physim.5g.nr_psbchsim.test1 "SLSS Search" nr_psbchsim -I) add_physim_test(physim.5g.nr_psbchsim.test2 "PSBCH TxRx" nr_psbchsim -n 30) +#################################################################################### +###### nr_srssim unit test ###### +#################################################################################### + +add_physim_test(physim.5g.nr_srssim.test1 "SRS: 30KHz SCS, 106 PRBs, ToA 24, Combsize 2" nr_srssim -n300 -R106 -s0 -S5 -y2 -z2 -d 24) +add_physim_test(physim.5g.nr_srssim.test2 "SRS: 30KHz SCS, 106 PRBs, ToA 15, Combsize 2, Threequarter sampling" nr_srssim -n300 -R106 -s0 -S5 -y2 -z2 -d 15 -k) +add_physim_test(physim.5g.nr_srssim.test3 "SRS: 30KHz SCS, 217 PRBs, ToA 8, Combsize 2" nr_srssim -n300 -R217 -s0 -S5 -y2 -z2 -d 8) +add_physim_test(physim.5g.nr_srssim.test4 "SRS: 30KHz SCS, 273 PRBs, TOA 30, Combsize 2" nr_srssim -n300 -R273 -s0 -S5 -y2 -z2 -d 30) +add_physim_test(physim.5g.nr_srssim.test5 "SRS: 30KHz SCS, 106 PRBs, ToA 16, Combsize 2, Cyclic shift 3" nr_srssim -n300 -R106 -s0 -S5 -y2 -z2 -d 16 -i 1) +add_physim_test(physim.5g.nr_srssim.test6 "SRS: 30KHz SCS, 106 PRBs, ToA 23, Combsize 2, Comb offset 1" nr_srssim -n300 -R106 -s0 -S5 -y2 -z2 -d 23 -f 1) +add_physim_test(physim.5g.nr_srssim.test7 "SRS: 30KHz SCS, 106 PRBs, ToA 8, Combsize 2, Symbol start 9" nr_srssim -n300 -R106 -s0 -S5 -y2 -z2 -d 8 -a 9) +add_physim_test(physim.5g.nr_srssim.test8 "SRS: 120KHz SCS, 32 PRBs, ToA 19, Combsize 2" nr_srssim -n300 -R32 -s0 -S5 -y2 -z2 -d 19 -u 3) +add_physim_test(physim.5g.nr_srssim.test9 "SRS: 30KHz SCS, 106 PRBs, ToA 11, Combsize 4" nr_srssim -n300 -R106 -s5 -S10 -y2 -z2 -d 11 -e 1) +add_physim_test(physim.5g.nr_srssim.test10 "SRS: 30KHz SCS, 106 PRBs, ToA 7, Combsize 4, Comb offset 1" nr_srssim -n300 -R106 -s5 -S10 -y2 -z2 -d 7 -e 1 -f 1) +add_physim_test(physim.5g.nr_srssim.test11 "SRS: 30KHz SCS, 106 PRBs, ToA 24, Combsize 2, SRS symbols 2, SRS start symbol 8" nr_srssim -n300 -R106 -s0 -S5 -y2 -z2 -d 24 -b 2 -a 8) +add_physim_test(physim.5g.nr_srssim.test12 "SRS: 30KHz SCS, 106 PRBs, ToA 24, Combsize 2, SRS symbols 4, SRS start symbol 8" nr_srssim -n300 -R106 -s0 -S5 -y2 -z2 -d 24 -b 4 -a 8) +add_physim_test(physim.5g.nr_srssim.test13 "SRS: 30KHz SCS, 106 PRBs, ToA 24, Combsize 4, SRS symbols 2, SRS start symbol 8" nr_srssim -n300 -R106 -s5 -S10 -y2 -z2 -d 24 -b 2 -e1 -a 8) +add_physim_test(physim.5g.nr_srssim.test14 "SRS: 30KHz SCS, 106 PRBs, ToA 24, Combsize 4, SRS symbols 4, SRS start symbol 8" nr_srssim -n300 -R106 -s5 -S10 -y2 -z2 -d 24 -b 4 -e1 -a 8) +add_physim_test(physim.5g.nr_srssim.test15 "SRS: 30KHz SCS, 217 PRBs, ToA 8, Combsize 2, SRS symbols 4, SRS start symbol 8" nr_srssim -n300 -R217 -s0 -S5 -y2 -z2 -d 8 -b 4 -a 8) +add_physim_test(physim.5g.nr_srssim.test16 "SRS: 30KHz SCS, 106 PRBs, SNR 2 dB to 30 dB in steps of 5 dB, ToA 24, Combsize 2" nr_srssim -n300 -R106 -s2 -S30 -y2 -z2 -d 24) + #################################################################################### ###### offload-specific tests ###### #################################################################################### diff --git a/openair1/SIMULATION/tests/ThresholdsOffload.cmake b/openair1/SIMULATION/tests/ThresholdsOffload.cmake index 9f787f993a..a3cfcd738a 100644 --- a/openair1/SIMULATION/tests/ThresholdsOffload.cmake +++ b/openair1/SIMULATION/tests/ThresholdsOffload.cmake @@ -2,42 +2,42 @@ check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.1 "DLSCH encoding ti check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.1 "DLSCH encoding time" AVG 19 ABS_VAR 4) check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.2 "DLSCH encoding time" AVG 65 ABS_VAR 13) check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.2 "DLSCH encoding time" AVG 27 ABS_VAR 6) -check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.3 "DLSCH encoding time" AVG 97 ABS_VAR 20) -check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.3 "DLSCH encoding time" AVG 33 ABS_VAR 7) -check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.4 "DLSCH encoding time" AVG 68 ABS_VAR 14) -check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.4 "DLSCH encoding time" AVG 26 ABS_VAR 6) -check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.5 "DLSCH encoding time" AVG 108 ABS_VAR 22) -check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.5 "DLSCH encoding time" AVG 46 ABS_VAR 10) -check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.6 "DLSCH encoding time" AVG 131 ABS_VAR 27) -check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.6 "DLSCH encoding time" AVG 80 ABS_VAR 16) -check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.7 "DLSCH encoding time" AVG 120 ABS_VAR 24) -check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.7 "DLSCH encoding time" AVG 44 ABS_VAR 9) -check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.8 "DLSCH encoding time" AVG 146 ABS_VAR 30) -check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.8 "DLSCH encoding time" AVG 87 ABS_VAR 18) -check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.9 "DLSCH encoding time" AVG 204 ABS_VAR 41) -check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.9 "DLSCH encoding time" AVG 138 ABS_VAR 28) -check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.10 "DLSCH encoding time" AVG 149 ABS_VAR 30) -check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.10 "DLSCH encoding time" AVG 49 ABS_VAR 10) -check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.11 "DLSCH encoding time" AVG 164 ABS_VAR 33) -check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.11 "DLSCH encoding time" AVG 90 ABS_VAR 18) -check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.12 "DLSCH encoding time" AVG 223 ABS_VAR 45) -check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.12 "DLSCH encoding time" AVG 146 ABS_VAR 30) +check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.3 "DLSCH encoding time" AVG 98 ABS_VAR 20) +check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.3 "DLSCH encoding time" AVG 34 ABS_VAR 7) +check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.4 "DLSCH encoding time" AVG 66 ABS_VAR 14) +check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.4 "DLSCH encoding time" AVG 27 ABS_VAR 6) +check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.5 "DLSCH encoding time" AVG 109 ABS_VAR 22) +check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.5 "DLSCH encoding time" AVG 45 ABS_VAR 9) +check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.6 "DLSCH encoding time" AVG 127 ABS_VAR 26) +check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.6 "DLSCH encoding time" AVG 79 ABS_VAR 16) +check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.7 "DLSCH encoding time" AVG 109 ABS_VAR 33) +check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.7 "DLSCH encoding time" AVG 43 ABS_VAR 9) +check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.8 "DLSCH encoding time" AVG 141 ABS_VAR 29) +check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.8 "DLSCH encoding time" AVG 83 ABS_VAR 17) +check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.9 "DLSCH encoding time" AVG 196 ABS_VAR 40) +check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.9 "DLSCH encoding time" AVG 134 ABS_VAR 27) +check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.10 "DLSCH encoding time" AVG 132 ABS_VAR 27) +check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.10 "DLSCH encoding time" AVG 47 ABS_VAR 10) +check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.11 "DLSCH encoding time" AVG 158 ABS_VAR 32) +check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.11 "DLSCH encoding time" AVG 89 ABS_VAR 18) +check_threshold_variance(physim.5g-offload.nr_dlsim.testCPU.12 "DLSCH encoding time" AVG 214 ABS_VAR 43) +check_threshold_variance(physim.5g-offload.nr_dlsim.testT2.12 "DLSCH encoding time" AVG 144 ABS_VAR 29) check_threshold_variance(physim.5g-offload.nr_ulsim.testCPU.1 "ULSCH total decoding time" AVG 141 ABS_VAR 29) -check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.1 "ULSCH total decoding time" AVG 40 ABS_VAR 8) +check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.1 "ULSCH total decoding time" AVG 38 ABS_VAR 8) check_threshold_variance(physim.5g-offload.nr_ulsim.testCPU.2 "ULSCH total decoding time" AVG 165 ABS_VAR 33) -check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.2 "ULSCH total decoding time" AVG 63 ABS_VAR 13) -check_threshold_variance(physim.5g-offload.nr_ulsim.testCPU.3 "ULSCH total decoding time" AVG 156 ABS_VAR 32) -check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.3 "ULSCH total decoding time" AVG 87 ABS_VAR 18) -check_threshold_variance(physim.5g-offload.nr_ulsim.testCPU.4 "ULSCH total decoding time" AVG 170 ABS_VAR 34) -check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.4 "ULSCH total decoding time" AVG 74 ABS_VAR 15) -check_threshold_variance(physim.5g-offload.nr_ulsim.testCPU.5 "ULSCH total decoding time" AVG 299 ABS_VAR 60) -check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.5 "ULSCH total decoding time" AVG 120 ABS_VAR 24) -check_threshold_variance(physim.5g-offload.nr_ulsim.testCPU.6 "ULSCH total decoding time" AVG 324 ABS_VAR 65) -check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.6 "ULSCH total decoding time" AVG 180 ABS_VAR 36) +check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.2 "ULSCH total decoding time" AVG 57 ABS_VAR 12) +check_threshold_variance(physim.5g-offload.nr_ulsim.testCPU.3 "ULSCH total decoding time" AVG 155 ABS_VAR 31) +check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.3 "ULSCH total decoding time" AVG 80 ABS_VAR 16) +check_threshold_variance(physim.5g-offload.nr_ulsim.testCPU.4 "ULSCH total decoding time" AVG 169 ABS_VAR 34) +check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.4 "ULSCH total decoding time" AVG 68 ABS_VAR 14) +check_threshold_variance(physim.5g-offload.nr_ulsim.testCPU.5 "ULSCH total decoding time" AVG 298 ABS_VAR 60) +check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.5 "ULSCH total decoding time" AVG 115 ABS_VAR 23) +check_threshold_variance(physim.5g-offload.nr_ulsim.testCPU.6 "ULSCH total decoding time" AVG 321 ABS_VAR 65) +check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.6 "ULSCH total decoding time" AVG 162 ABS_VAR 33) check_threshold_variance(physim.5g-offload.nr_ulsim.testCPU.7 "ULSCH total decoding time" AVG 200 ABS_VAR 40) -check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.7 "ULSCH total decoding time" AVG 120 ABS_VAR 24) -check_threshold_variance(physim.5g-offload.nr_ulsim.testCPU.8 "ULSCH total decoding time" AVG 436 ABS_VAR 88) -check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.8 "ULSCH total decoding time" AVG 229 ABS_VAR 46) -check_threshold_variance(physim.5g-offload.nr_ulsim.testCPU.9 "ULSCH total decoding time" AVG 530 ABS_VAR 106) -check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.9 "ULSCH total decoding time" AVG 334 ABS_VAR 67) +check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.7 "ULSCH total decoding time" AVG 112 ABS_VAR 23) +check_threshold_variance(physim.5g-offload.nr_ulsim.testCPU.8 "ULSCH total decoding time" AVG 433 ABS_VAR 87) +check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.8 "ULSCH total decoding time" AVG 206 ABS_VAR 42) +check_threshold_variance(physim.5g-offload.nr_ulsim.testCPU.9 "ULSCH total decoding time" AVG 527 ABS_VAR 106) +check_threshold_variance(physim.5g-offload.nr_ulsim.testT2.9 "ULSCH total decoding time" AVG 302 ABS_VAR 61) diff --git a/openair2/COMMON/ngap_messages_types.h b/openair2/COMMON/ngap_messages_types.h index 3bfd2e20a2..0aad7b8598 100644 --- a/openair2/COMMON/ngap_messages_types.h +++ b/openair2/COMMON/ngap_messages_types.h @@ -737,6 +737,8 @@ typedef struct ngap_ue_ctxt_modification_resp_s { typedef struct ngap_downlink_nas_s { /* UE id for initial connection to NGAP */ uint32_t gNB_ue_ngap_id; + /* UE id at AMF */ + uint64_t amf_ue_ngap_id; /* NAS pdu */ byte_array_t nas_pdu; } ngap_downlink_nas_t; diff --git a/openair2/LAYER2/NR_MAC_UE/config_ue.c b/openair2/LAYER2/NR_MAC_UE/config_ue.c index 4077e793ab..3185d040ed 100644 --- a/openair2/LAYER2/NR_MAC_UE/config_ue.c +++ b/openair2/LAYER2/NR_MAC_UE/config_ue.c @@ -142,9 +142,21 @@ static void config_common_ue_sa(NR_UE_MAC_INST_t *mac, NR_ServingCellConfigCommo frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth); cfg->carrier_config.dl_bandwidth = get_supported_bw_mhz(mac->frequency_range, bw_index); - uint64_t dl_bw_khz = (12 * frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth) * - (15 << frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing); - cfg->carrier_config.dl_frequency = (downlink_frequency[cc_idP][0]/1000) - (dl_bw_khz>>1); + /** Only set frequency if not already initialized (e.g., from handover reconfigurationWithSync) + * MAC maintains its own frequency state, don't overwrite it with command-line parameter which + * is related to the initial cell selection. */ + if (cfg->carrier_config.dl_frequency == 0) { + // Initial cell selection: derive from command-line parameter + uint64_t dl_bw_khz = (12 * frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth) * + (15 << frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing); + cfg->carrier_config.dl_frequency = (downlink_frequency[cc_idP][0]/1000) - (dl_bw_khz>>1); + LOG_I(NR_MAC, + "[UE %d] Initial cell selection: dl_frequency=%u kHz (from command-line, band=%d, scs=%ld)\n", + mac->ue_id, + cfg->carrier_config.dl_frequency, + mac->nr_band, + frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing); + } for (int i = 0; i < 5; i++) { if (i == frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing) { @@ -165,10 +177,21 @@ static void config_common_ue_sa(NR_UE_MAC_INST_t *mac, NR_ServingCellConfigCommo frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth); cfg->carrier_config.uplink_bandwidth = get_supported_bw_mhz(mac->frequency_range, bw_index); - if (frequencyInfoUL->absoluteFrequencyPointA == NULL) - cfg->carrier_config.uplink_frequency = cfg->carrier_config.dl_frequency; - else - cfg->carrier_config.uplink_frequency = cfg->carrier_config.dl_frequency + (uplink_frequency_offset[cc_idP][0] / 1000); + /** Only set UL frequency if not already initialized (e.g., from handover reconfigurationWithSync) + * MAC maintains its own frequency state, don't overwrite it with command-line parameter which + * is related to the initial cell selection. */ + if (cfg->carrier_config.uplink_frequency == 0) { + // Initial cell selection: derive from DL frequency + LOG_I(NR_MAC, + "Initial cell selection: uplink_frequency=%u kHz (from dl_frequency=%u kHz, uplink_frequency_offset=%u kHz)\n", + cfg->carrier_config.uplink_frequency, + cfg->carrier_config.dl_frequency, + uplink_frequency_offset[cc_idP][0]); + if (frequencyInfoUL->absoluteFrequencyPointA == NULL) + cfg->carrier_config.uplink_frequency = cfg->carrier_config.dl_frequency; + else + cfg->carrier_config.uplink_frequency = cfg->carrier_config.dl_frequency + (uplink_frequency_offset[cc_idP][0] / 1000); + } for (int i = 0; i < 5; i++) { if (i == frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing) { @@ -437,6 +460,13 @@ static void config_common_ue(NR_UE_MAC_INST_t *mac, NR_ServingCellConfigCommon_t *scc->ssbSubcarrierSpacing, frequencyInfoDL->absoluteFrequencyPointA) / 1000; // freq in kHz + LOG_I(NR_MAC, + "[UE %d] Set dl_frequency=%u kHz (from absoluteFrequencyPointA=%ld, band=%d, scs=%ld)\n", + mac->ue_id, + cfg->carrier_config.dl_frequency, + frequencyInfoDL->absoluteFrequencyPointA, + mac->nr_band, + *scc->ssbSubcarrierSpacing); for (int i = 0; i < 5; i++) { if (i == frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing) { diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c index dfe16de822..47277f8a66 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c @@ -1114,9 +1114,9 @@ void nr_ra_succeeded(NR_UE_MAC_INST_t *mac, const uint8_t gNB_index, const frame RA_config_t *ra = &mac->ra; if (ra->cfra) { - LOG_I(MAC, "[UE %d][%d.%d][RAPROC] RA procedure succeeded. CFRA: RAR successfully received.\n", mac->ue_id, frame, slot); + LOG_A(NR_MAC, "[UE %d][%d.%d][RAPROC] RA procedure succeeded. CFRA: RAR successfully received.\n", mac->ue_id, frame, slot); } else { - LOG_A(MAC, + LOG_A(NR_MAC, "[UE %d][%d.%d][RAPROC] %d-Step RA procedure succeeded. CBRA: Contention Resolution is successful.\n", mac->ue_id, frame, @@ -1127,6 +1127,10 @@ void nr_ra_succeeded(NR_UE_MAC_INST_t *mac, const uint8_t gNB_index, const frame nr_timer_stop(&ra->contention_resolution_timer); } + // rach-ConfigDedicated is one shot configuration to be used only for a specific instance of reconfiguration with sync + if (ra->rach_ConfigDedicated) + asn1cFreeStruc(asn_DEF_NR_RACH_ConfigDedicated, ra->rach_ConfigDedicated); + ra->RA_active = false; mac->msg3_C_RNTI = false; ra->ra_state = nrRA_SUCCEEDED; diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c index c3cc4088ed..5f80703c21 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c @@ -1542,8 +1542,7 @@ static void nr_generate_Msg2(module_id_t module_idP, float T_c_ns = 0.509; int numerology = ul_bwp->scs; float rtt_ns = T_c_ns * 16 * 64 / (1 << numerology) * ra->timing_offset; - float speed_of_light_in_meters_per_second = 299792458.0f; - float distance_in_meters = speed_of_light_in_meters_per_second * rtt_ns / 1000 / 1000 / 1000 / 2; + float distance_in_meters = (float) SPEED_OF_LIGHT * rtt_ns / 1000 / 1000 / 1000 / 2; LOG_A(NR_MAC, "UE %04x: %d.%d Generating RA-Msg2 DCI, RA RNTI 0x%x, state %d, preamble_index(RAPID) %d, " "timing_offset = %d (estimated distance %.1f [m])\n", diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c index 8c8a25e446..1afa2d1502 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c @@ -428,7 +428,7 @@ static void nr_configure_srs(gNB_MAC_INST *nrmac, srs_pdu->num_ant_ports = srs_resource->nrofSRS_Ports; srs_pdu->num_symbols = srs_resource->resourceMapping.nrofSymbols; srs_pdu->num_repetitions = srs_resource->resourceMapping.repetitionFactor; - srs_pdu->time_start_position = NR_NUMBER_OF_SYMBOLS_PER_SLOT - 1 - srs_resource->resourceMapping.startPosition; + srs_pdu->time_start_position = srs_resource->resourceMapping.startPosition; srs_pdu->config_index = srs_resource->freqHopping.c_SRS; srs_pdu->sequence_id = srs_resource->sequenceId; srs_pdu->bandwidth_index = srs_resource->freqHopping.b_SRS; @@ -479,7 +479,8 @@ static void nr_configure_srs(gNB_MAC_INST *nrmac, AssertFatal(beam.idx >= 0, "Cannot allocate SRS in any available beam\n"); uint16_t *vrb_map_UL = &nrmac->common_channels[CC_id].vrb_map_UL[beam.idx][buffer_index * MAX_BWP_SIZE]; uint16_t num = 1 << srs_pdu->num_symbols; // 0,1,2 means 1,2,4 symbols, see 222.10.04 table 3-105 - uint16_t mask = SL_to_bitmap(srs_pdu->time_start_position, num); + const uint8_t l0 = NR_NUMBER_OF_SYMBOLS_PER_SLOT - 1 - srs_pdu->time_start_position; + uint16_t mask = SL_to_bitmap(l0, num); DevAssert(mask != 0); for (int i = 0; i < srs_pdu->bwp_size; ++i) { int rb = i + srs_pdu->bwp_start; diff --git a/openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c b/openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c index 20b30cb074..c271824e75 100644 --- a/openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c +++ b/openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c @@ -888,6 +888,7 @@ void ue_context_release_command(const f1ap_ue_context_rel_cmd_t *cmd) UE = UE ? UE : find_ra_UE(&mac->UE_info, cmd->gNB_DU_ue_id); if (UE == NULL) { NR_SCHED_UNLOCK(&mac->sched_lock); + LOG_W(NR_MAC, "UE Context Release Command for unknown RNTI %04x/CU UE ID %d\n", cmd->gNB_DU_ue_id, cmd->gNB_CU_ue_id); f1ap_ue_context_rel_cplt_t complete = { .gNB_CU_ue_id = cmd->gNB_CU_ue_id, .gNB_DU_ue_id = cmd->gNB_DU_ue_id, diff --git a/openair2/LAYER2/NR_MAC_gNB/nr_radio_config.c b/openair2/LAYER2/NR_MAC_gNB/nr_radio_config.c index 35d4c95ece..50f5fd684c 100644 --- a/openair2/LAYER2/NR_MAC_gNB/nr_radio_config.c +++ b/openair2/LAYER2/NR_MAC_gNB/nr_radio_config.c @@ -3944,14 +3944,6 @@ int encode_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig, uint8_t *buffe return (enc_rval.encoded + 7) / 8; } -NR_CellGroupConfig_t *decode_cellGroupConfig(const uint8_t *buffer, int buffer_size) -{ - NR_CellGroupConfig_t *cellGroupConfig = NULL; - asn_dec_rval_t rval = uper_decode(NULL, &asn_DEF_NR_CellGroupConfig, (void **)&cellGroupConfig, buffer, buffer_size, 0, 0); - AssertFatal(rval.code == RC_OK, "could not decode cellGroupConfig\n"); - return cellGroupConfig; -} - static NR_ServingCellConfigCommon_t *clone_ServingCellConfigCommon(const NR_ServingCellConfigCommon_t *scc) { if (scc == NULL) diff --git a/openair2/LAYER2/NR_MAC_gNB/nr_radio_config.h b/openair2/LAYER2/NR_MAC_gNB/nr_radio_config.h index 27cca60b26..6752db8bc8 100644 --- a/openair2/LAYER2/NR_MAC_gNB/nr_radio_config.h +++ b/openair2/LAYER2/NR_MAC_gNB/nr_radio_config.h @@ -97,7 +97,6 @@ void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig, const nr_mac_config_t *configuration, const NR_ServingCellConfigCommon_t *scc); int encode_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig, uint8_t *buffer, int max_buffer_size); -NR_CellGroupConfig_t *decode_cellGroupConfig(const uint8_t *buffer, int max_buffer_size); /* Note: this function returns a new CellGroupConfig for a user with given * configuration, but it will also overwrite the ServingCellConfig passed in diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c index 3b8476f9a4..d2f08fd4b4 100644 --- a/openair2/RRC/NR/rrc_gNB.c +++ b/openair2/RRC/NR/rrc_gNB.c @@ -2440,10 +2440,8 @@ static void rrc_CU_process_ue_context_release_request(MessageDef *msg_p, sctp_as gNB_RRC_INST *rrc = RC.nrrrc[instance]; rrc_gNB_ue_context_t *ue_context_p = rrc_gNB_get_ue_context(rrc, req->gNB_CU_ue_id); int srbid = 1; - // valid AMF UE NGAP ID range is 0..2^40-1 - if (!ue_context_p || ue_context_p->ue_context.amf_ue_ngap_id >= (1LL << 40)) { - const char *reason = !ue_context_p ? "could not find UE context" : "no AMF"; - LOG_W(RRC, "%s for CU UE ID %u: auto-generate release command\n", reason, req->gNB_CU_ue_id); + if (!ue_context_p) { + LOG_W(RRC, "could not find UE context for CU UE ID %u: auto-generate release command\n", req->gNB_CU_ue_id); uint8_t buffer[NR_RRC_BUF_SIZE] = {0}; int size = do_NR_RRCRelease(buffer, NR_RRC_BUF_SIZE, rrc_gNB_get_next_transaction_identifier(0)); RETURN_IF_INVALID_ASSOC_ID(assoc_id); @@ -2585,17 +2583,9 @@ static void rrc_CU_process_ue_context_modification_response(MessageDef *msg_p, i // nothing is to be done, we wait for confirmation to release the UE in the // CU/DU) if (UE->ho_context && UE->ho_context->target && UE->ho_context->source) { - nr_ho_target_cu_t *target_ctx = UE->ho_context->target; - f1_ue_data_t ue_data = cu_get_f1_ue_data(UE->rrc_ue_id); - ue_data.secondary_ue = target_ctx->du_ue_id; - ue_data.du_assoc_id = target_ctx->du->assoc_id; - bool success = cu_update_f1_ue_data(UE->rrc_ue_id, &ue_data); - DevAssert(success); - LOG_I(NR_RRC, "UE %d handover: update RNTI from %04x to %04x\n", UE->rrc_ue_id, UE->rnti, target_ctx->new_rnti); nr_ho_source_cu_t *source_ctx = UE->ho_context->source; DevAssert(source_ctx->old_rnti == UE->rnti); - UE->rnti = target_ctx->new_rnti; - UE->nr_cellid = target_ctx->du->setup_req->cell[0].info.nr_cellid; + nr_rrc_apply_target_context(UE); } } diff --git a/openair2/RRC/NR/rrc_gNB_NGAP.c b/openair2/RRC/NR/rrc_gNB_NGAP.c index 65991f714d..19bab47b67 100644 --- a/openair2/RRC/NR/rrc_gNB_NGAP.c +++ b/openair2/RRC/NR/rrc_gNB_NGAP.c @@ -717,6 +717,7 @@ int rrc_gNB_process_NGAP_DOWNLINK_NAS(MessageDef *msg_p, instance_t instance, mu } gNB_RRC_UE_t *UE = &ue_context_p->ue_context; + UE->amf_ue_ngap_id = req->amf_ue_ngap_id; UE->nas_pdu = req->nas_pdu; rrc_forward_ue_nas_message(rrc, UE); return 0; diff --git a/openair2/RRC/NR/rrc_gNB_mobility.c b/openair2/RRC/NR/rrc_gNB_mobility.c index e570682ce8..1fc274db5b 100644 --- a/openair2/RRC/NR/rrc_gNB_mobility.c +++ b/openair2/RRC/NR/rrc_gNB_mobility.c @@ -63,6 +63,34 @@ static void free_ho_ctx(nr_handover_context_t *ho_ctx) free(ho_ctx); } +/** @brief Apply target handover context: update F1AP associations and RNTI */ +void nr_rrc_apply_target_context(gNB_RRC_UE_t *UE) +{ + DevAssert(UE->ho_context); + DevAssert(UE->ho_context->target); + nr_ho_target_cu_t *target_ctx = UE->ho_context->target; + f1_ue_data_t ue_data = cu_get_f1_ue_data(UE->rrc_ue_id); + LOG_I(NR_RRC, + "UE %d: update CU F1AP Context DU UE ID %u => %u and RNTI %04x => %04x\n", + UE->rrc_ue_id, + ue_data.secondary_ue, + target_ctx->du_ue_id, + UE->rnti, + target_ctx->new_rnti); + + /* update F1 data: secondary UE association and DU association */ + ue_data.secondary_ue = target_ctx->du_ue_id; + ue_data.du_assoc_id = target_ctx->du->assoc_id; + bool success = cu_update_f1_ue_data(UE->rrc_ue_id, &ue_data); + DevAssert(success); + + /* update UE RNTI */ + UE->rnti = target_ctx->new_rnti; + + /* update UE NR cell ID */ + UE->nr_cellid = target_ctx->du->setup_req->cell[0].info.nr_cellid; +} + /** @brief Fill DRB to Be Setup List in F1 UE Context Setup Request (optional list) * @return 0 if list is empty, list size otherwise */ static int fill_drb_to_be_setup(const gNB_RRC_INST *rrc, gNB_RRC_UE_t *ue, f1ap_drb_to_setup_t drbs[MAX_DRBS_PER_UE]) @@ -464,10 +492,7 @@ static void nr_rrc_n2_ho_acknowledge(gNB_RRC_INST *rrc, gNB_RRC_UE_t *UE) /* this is the callback for N2 handover after F1 UE context setup response in * the handover case. Check that there was no associated DU, then set it */ AssertFatal(previous_data.secondary_ue == -1, "there was already a DU present\n"); - previous_data.secondary_ue = UE->ho_context->target->du_ue_id; - bool success = cu_update_f1_ue_data(UE->rrc_ue_id, &previous_data); - DevAssert(success); - LOG_I(NR_RRC, "Updated CU F1AP Context for UE %d, DU Id : %u\n", UE->rrc_ue_id, UE->ho_context->target->du_ue_id); + nr_rrc_apply_target_context(UE); byte_array_t hoCommand = rrc_gNB_encode_HandoverCommand(UE, rrc); if (hoCommand.len < 0) { diff --git a/openair2/RRC/NR/rrc_gNB_mobility.h b/openair2/RRC/NR/rrc_gNB_mobility.h index 88e3548220..54691c2edd 100644 --- a/openair2/RRC/NR/rrc_gNB_mobility.h +++ b/openair2/RRC/NR/rrc_gNB_mobility.h @@ -110,4 +110,6 @@ void nr_rrc_trigger_n2_ho_target(gNB_RRC_INST *rrc, gNB_RRC_UE_t *ue); byte_array_t *get_meas_timing_config(const NR_MeasurementTimingConfiguration_t *mtc, const NR_MeasConfig_t *measConfig); +void nr_rrc_apply_target_context(gNB_RRC_UE_t *UE); + #endif /* RRC_GNB_MOBILITY_H_ */ diff --git a/openair2/RRC/NR_UE/rrc_UE.c b/openair2/RRC/NR_UE/rrc_UE.c index 424118fa4c..10c38c1ceb 100644 --- a/openair2/RRC/NR_UE/rrc_UE.c +++ b/openair2/RRC/NR_UE/rrc_UE.c @@ -938,8 +938,10 @@ static void nr_rrc_process_reconfigurationWithSync(NR_UE_RRC_INST_t *rrc, /* if the frequencyInfoDL is included, consider the target SpCell to be one on the SSB frequency indicated by the frequencyInfoDL */ const NR_DownlinkConfigCommon_t *dcc = reconfigurationWithSync->spCellConfigCommon->downlinkConfigCommon; - if (dcc && dcc->frequencyInfoDL && dcc->frequencyInfoDL->absoluteFrequencySSB) + if (dcc && dcc->frequencyInfoDL && dcc->frequencyInfoDL->absoluteFrequencySSB) { rrc->arfcn_ssb = *dcc->frequencyInfoDL->absoluteFrequencySSB; + LOG_I(NR_RRC, "UE %ld: updated ARFCN_SSB=%ld\n", rrc->ue_id, rrc->arfcn_ssb); + } // consider the target SpCell to be one with a physical cell identity indicated by the physCellId if (!reconfigurationWithSync->spCellConfigCommon->physCellId) @@ -1767,6 +1769,15 @@ static void nr_rrc_ue_decode_NR_BCCH_BCH_Message(NR_UE_RRC_INST_t *rrc, } NR_BCCH_BCH_Message_t *bcch_message = NULL; + if (rrc->phyCellID != phycellid || rrc->arfcn_ssb != ssb_arfcn) { + LOG_I(NR_RRC, + "[UE %ld] BCCH update: phyCellID %d->%u, arfcn_ssb %ld->%ld\n", + rrc->ue_id, + rrc->phyCellID, + phycellid, + rrc->arfcn_ssb, + ssb_arfcn); + } rrc->phyCellID = phycellid; rrc->arfcn_ssb = ssb_arfcn; @@ -2396,6 +2407,7 @@ static void nr_rrc_ue_process_rrcReestablishment(NR_UE_RRC_INST_t *rrc, // perform the actions upon going to RRC_IDLE as specified in 5.3.11 // with release cause 'RRC connection failure', upon which the procedure ends if (!integrity_pass) { + LOG_W(NR_RRC, "Integrity of RRCReestablishment failed, going to IDLE\n"); NR_Release_Cause_t release_cause = RRC_CONNECTION_FAILURE; nr_rrc_going_to_IDLE(rrc, release_cause, NULL); return; diff --git a/openair3/NGAP/ngap_gNB_handlers.c b/openair3/NGAP/ngap_gNB_handlers.c index a58c98508b..292ab1635d 100644 --- a/openair3/NGAP/ngap_gNB_handlers.c +++ b/openair3/NGAP/ngap_gNB_handlers.c @@ -84,7 +84,6 @@ void ngap_handle_ng_setup_message(ngap_gNB_amf_data_t *amf_desc_p, int sctp_shut } } } else { - LOG_A(NGAP, "Received NGSetupResponse from AMF\n"); /* Check that at least one setup message is pending */ DevCheck(amf_desc_p->ngap_gNB_instance->ngap_amf_pending_nb > 0, amf_desc_p->ngap_gNB_instance->instance, amf_desc_p->ngap_gNB_instance->ngap_amf_pending_nb, 0); @@ -314,6 +313,7 @@ static int ngap_gNB_handle_ng_setup_response(sctp_assoc_t assoc_id, uint32_t str amf_desc_p->state = NGAP_GNB_STATE_CONNECTED; amf_desc_p->ngap_gNB_instance->ngap_amf_associated_nb ++; ngap_handle_ng_setup_message(amf_desc_p, 0); + LOG_A(NGAP, "Received NGSetupResponse from AMF\n"); return 0; } @@ -849,6 +849,11 @@ static int ngap_gNB_handle_initial_context_request(sctp_assoc_t assoc_id, uint32 itti_send_msg_to_task(TASK_RRC_GNB, ue_desc_p->gNB_instance->instance, message_p); + NGAP_INFO("Initial Context Setup UE RAN ID %d UE AMF ID %ld: %d PDU session(s)\n", + msg->gNB_ue_ngap_id, + msg->amf_ue_ngap_id, + msg->nb_of_pdusessions); + return 0; } diff --git a/openair3/NGAP/ngap_gNB_itti_messaging.c b/openair3/NGAP/ngap_gNB_itti_messaging.c index b640f2e556..1e03192599 100644 --- a/openair3/NGAP/ngap_gNB_itti_messaging.c +++ b/openair3/NGAP/ngap_gNB_itti_messaging.c @@ -54,7 +54,7 @@ void ngap_gNB_itti_send_sctp_data_req(instance_t instance, itti_send_msg_to_task(TASK_SCTP, instance, message_p); } -void ngap_gNB_itti_send_nas_downlink_ind(instance_t instance, uint32_t gNB_ue_ngap_id, uint8_t *nas_pdu, uint32_t nas_pdu_length) +void ngap_gNB_itti_send_nas_downlink_ind(instance_t instance, uint32_t gNB_ue_ngap_id, uint64_t amf_ue_ngap_id, uint8_t *nas_pdu, uint32_t nas_pdu_length) { MessageDef *message_p; ngap_downlink_nas_t *ngap_downlink_nas; @@ -64,6 +64,7 @@ void ngap_gNB_itti_send_nas_downlink_ind(instance_t instance, uint32_t gNB_ue_ng ngap_downlink_nas = &message_p->ittiMsg.ngap_downlink_nas; ngap_downlink_nas->gNB_ue_ngap_id = gNB_ue_ngap_id; + ngap_downlink_nas->amf_ue_ngap_id = amf_ue_ngap_id; ngap_downlink_nas->nas_pdu = create_byte_array(nas_pdu_length, nas_pdu); itti_send_msg_to_task(TASK_RRC_GNB, instance, message_p); diff --git a/openair3/NGAP/ngap_gNB_itti_messaging.h b/openair3/NGAP/ngap_gNB_itti_messaging.h index 67054761e3..09ae4d6480 100644 --- a/openair3/NGAP/ngap_gNB_itti_messaging.h +++ b/openair3/NGAP/ngap_gNB_itti_messaging.h @@ -40,7 +40,11 @@ void ngap_gNB_itti_send_sctp_data_req(instance_t instance, uint32_t buffer_length, uint16_t stream); -void ngap_gNB_itti_send_nas_downlink_ind(instance_t instance, uint32_t gNB_ue_ngap_id, uint8_t *nas_pdu, uint32_t nas_pdu_length); +void ngap_gNB_itti_send_nas_downlink_ind(instance_t instance, + uint32_t gNB_ue_ngap_id, + uint64_t amf_ue_ngap_id, + uint8_t *nas_pdu, + uint32_t nas_pdu_length); void ngap_gNB_itti_send_sctp_close_association(instance_t instance, sctp_assoc_t assoc_id); diff --git a/openair3/NGAP/ngap_gNB_nas_procedures.c b/openair3/NGAP/ngap_gNB_nas_procedures.c index 2218155c61..7bf7753668 100644 --- a/openair3/NGAP/ngap_gNB_nas_procedures.c +++ b/openair3/NGAP/ngap_gNB_nas_procedures.c @@ -361,7 +361,11 @@ int ngap_gNB_handle_nas_downlink(sctp_assoc_t assoc_id, uint32_t stream, NGAP_NG NGAP_FIND_PROTOCOLIE_BY_ID(NGAP_DownlinkNASTransport_IEs_t, ie, container, NGAP_ProtocolIE_ID_id_NAS_PDU, true); /* Forward the NAS PDU to NR-RRC */ - ngap_gNB_itti_send_nas_downlink_ind(ngap_gNB_instance->instance, ue_desc_p->gNB_ue_ngap_id, ie->value.choice.NAS_PDU.buf, ie->value.choice.NAS_PDU.size); + ngap_gNB_itti_send_nas_downlink_ind(ngap_gNB_instance->instance, + ue_desc_p->gNB_ue_ngap_id, + ue_desc_p->amf_ue_ngap_id, + ie->value.choice.NAS_PDU.buf, + ie->value.choice.NAS_PDU.size); return 0; } diff --git a/openair3/ocp-gtpu/gtp_itf.cpp b/openair3/ocp-gtpu/gtp_itf.cpp index ed15d48f80..6650439e81 100644 --- a/openair3/ocp-gtpu/gtp_itf.cpp +++ b/openair3/ocp-gtpu/gtp_itf.cpp @@ -1036,9 +1036,9 @@ static int Gtpv1uHandleError(int h, uint8_t *msgBuf, uint32_t msgBufLen, const s " TV id for GTP addr %u (should be 133)\n" " len for addr of UPF %u (should be IPv4 or IPv6 len)" " (TS 29.281 Sec 7.3.1 Error Handling not implemented)\n", - msg->h.teid, + ntohl(msg->h.teid), msg->teid_data_i, - msg->teid, + ntohl(msg->teid), msg->addr_data_i, msg->addr_len); int rc = GTPNOK; diff --git a/radio/fhi_72/CMakeLists.txt b/radio/fhi_72/CMakeLists.txt index fb40852ebb..6e918650e5 100644 --- a/radio/fhi_72/CMakeLists.txt +++ b/radio/fhi_72/CMakeLists.txt @@ -17,7 +17,7 @@ add_library(oran_fhlib_5g MODULE ) set(E_VERSION 5.1.6) -set(F_VERSION 6.1.5) +set(F_VERSION 6.1.6) find_package(xran REQUIRED) if(xran_VERSION VERSION_EQUAL E_VERSION) diff --git a/radio/fhi_72/mplane/init-mplane.c b/radio/fhi_72/mplane/init-mplane.c index fcd908562a..7e0c105463 100644 --- a/radio/fhi_72/mplane/init-mplane.c +++ b/radio/fhi_72/mplane/init-mplane.c @@ -72,14 +72,6 @@ static void ly_print_clb(LY_LOG_LEVEL level, const char *msg, const char *path) } } -static const paramdef_t *gpd(const paramdef_t *pd, int num, const char *name) -{ - /* the config module does not know const-correctness... */ - int idx = config_paramidx_fromname((paramdef_t *)pd, num, (char *)name); - DevAssert(idx >= 0); - return &pd[idx]; -} - bool init_mplane(ru_session_list_t *ru_session_list) { paramdef_t fhip[] = ORAN_GLOBALPARAMS_DESC; diff --git a/radio/fhi_72/oaioran.c b/radio/fhi_72/oaioran.c index b0ed41decb..149f492e6a 100644 --- a/radio/fhi_72/oaioran.c +++ b/radio/fhi_72/oaioran.c @@ -102,6 +102,7 @@ void oai_xran_fh_rx_callback(void *pCallbackTag, xran_status_t status) AssertFatal(pRbMap != NULL, "(%d:%d:%d)pRbMap == NULL. Aborting.\n", cc_id, tti % XRAN_N_FE_BUF_LEN, ant_id); for (uint32_t sym_id = 0; sym_id < XRAN_NUM_OF_SYMBOL_PER_SLOT; sym_id++) { + LOG_D(HW, "cb pRbMap->nPrbElm %d\n", pRbMap->nPrbElm); for (uint32_t idxElm = 0; idxElm < pRbMap->nPrbElm; idxElm++ ) { struct xran_prb_elm *pRbElm = &pRbMap->prbMap[idxElm]; pRbElm->nSecDesc[sym_id] = 0; // number of section descriptors per symbol; M-plane info @@ -265,6 +266,28 @@ static bool is_tdd_ul_symbol(const struct xran_frame_config *frame_conf, int slo return frame_conf->sSlotConfig[slot_in_period].nSymbolType[sym_idx] == 1 /* UL */; } +/** @brief Check if symbol in slot is DL. + * + * @param frame_conf xran frame configuration + * @param slot the current (absolute) slot (number) + * @param sym_idx the current symbol index */ +static bool is_tdd_dl_symbol(const struct xran_frame_config *frame_conf, int slot, int sym_idx) +{ + /* in FDD, every symbol is also UL */ + if (frame_conf->nFrameDuplexType == XRAN_FDD) + return true; + int tdd_period = frame_conf->nTddPeriod; + int slot_in_period = slot % tdd_period; + /* check if symbol is UL */ + return frame_conf->sSlotConfig[slot_in_period].nSymbolType[sym_idx] == 0 /* DL */; +} + +/** @brief Check if current slot is guard/mixed */ +static bool is_tdd_guard_slot(const struct xran_frame_config *frame_conf, int slot) +{ + return (is_tdd_dl_symbol(frame_conf, slot, 0) && is_tdd_ul_symbol(frame_conf, slot, XRAN_NUM_OF_SYMBOL_PER_SLOT - 1)); +} + /** @brief Check if current slot is DL or guard/mixed without UL (i.e., current * slot is not UL). */ static bool is_tdd_dl_guard_slot(const struct xran_frame_config *frame_conf, int slot) @@ -678,3 +701,470 @@ int xran_fh_tx_send_slot(ru_info_t *ru, int frame, int slot, uint64_t timestamp) } return (0); } + +/** @details Read PRACH and PUSCH data from xran buffers. If + * I/Q compression (bitwidth < 16 bits) is configured, deccompresses the data + * before writing. Prints ON TIME counters every 128 frames. + * + * Function is blocking and waits for next frame/slot combination. It is unblocked + * by oai_xran_fh_rx_callback(). It writes the current slot into parameters + * frame/slot. */ +int xran_fh_rx_read_slot_BySymbol(ru_info_t *ru, int *frame, int *slot) +{ + void *ptr = NULL; + int32_t *pos = NULL; + int idx = 0; + + static int64_t old_rx_counter[XRAN_PORTS_NUM] = {0}; + static int64_t old_tx_counter[XRAN_PORTS_NUM] = {0}; + struct xran_common_counters x_counters[XRAN_PORTS_NUM]; + static int outcnt = 0; + #ifndef USE_POLLING + // pull next even from oran_sync_fifo + notifiedFIFO_elt_t *res = pullNotifiedFIFO(&oran_sync_fifo); + + notifiedFIFO_elt_t *f; + while ((f = pollNotifiedFIFO(&oran_sync_fifo)) != NULL) { + oran_sync_info_t *old_info = NotifiedFifoData(res); + oran_sync_info_t *new_info = NotifiedFifoData(f); + LOG_E(HW, "Detected double sync message %d.%d => %d.%d\n", old_info->f, old_info->sl, new_info->f, new_info->sl); + delNotifiedFIFO_elt(res); + res = f; + } + + oran_sync_info_t *info = NotifiedFifoData(res); + + *slot = info->sl; + *frame = info->f; + delNotifiedFIFO_elt(res); +#else + *slot = oran_sync_info.sl; + *frame = oran_sync_info.f; + uint32_t tti_in = oran_sync_info.tti; + + static int last_slot = -1; + LOG_D(HW, "oran slot %d, last_slot %d\n", *slot, last_slot); + int cnt = 0; + // while (*slot == last_slot) { + while (tti_in == oran_sync_info.tti) { + //*slot = oran_sync_info.sl; + cnt++; + } + LOG_D(HW, "cnt %d, Reading %d.%d\n", cnt, *frame, *slot); + last_slot = *slot; +#endif + // return(0); + + struct xran_fh_config *fh_cfg = get_xran_fh_config(0); + int slots_per_frame = 10 << fh_cfg->frame_conf.nNumerology; + + int tti = slots_per_frame * (*frame) + (*slot); + + read_prach_data(ru, *frame, *slot); + + const struct xran_fh_init *fh_init = get_xran_fh_init(); + int nPRBs = fh_cfg->nULRBs; + int fftsize = 1 << fh_cfg->ru_conf.fftSize; + + int slot_offset_rxdata = 3 & (*slot); + uint32_t slot_size = 4 * 14 * fftsize; + uint8_t *rx_data = (uint8_t *)ru->rxdataF[0]; + uint8_t *start_ptr = NULL; + int nb_rx_per_ru = ru->nb_rx / fh_init->xran_ports; + for (uint16_t cc_id = 0; cc_id < 1 /*nSectorNum*/; cc_id++) { // OAI does not support multiple CC yet. + for (uint8_t ant_id = 0; ant_id < ru->nb_rx; ant_id++) { + rx_data = (uint8_t *)ru->rxdataF[ant_id]; + start_ptr = rx_data + (slot_size * slot_offset_rxdata); + const struct xran_frame_config *frame_conf = &get_xran_fh_config(ant_id / nb_rx_per_ru)->frame_conf; + // skip processing this slot is TX (no RX in this slot) + if (!is_tdd_ul_guard_slot(frame_conf, *slot)) + continue; + bool sym_start_found = false; + int32_t sym_start = 0; + // This loop would better be more inner to avoid confusion and maybe also errors. + for (int32_t sym_idx = 0; sym_idx < XRAN_NUM_OF_SYMBOL_PER_SLOT; sym_idx++) { + /* the callback is for mixed and UL slots. In mixed, we have to + * skip DL and guard symbols. */ + if (!is_tdd_ul_symbol(frame_conf, *slot, sym_idx)) + continue; + if (!sym_start_found) { + sym_start = sym_idx; + sym_start_found = true; + } + + uint8_t *pData; + oran_buf_list_t *bufs = get_xran_buffers(ant_id / nb_rx_per_ru); + uint8_t *pPrbMapData = bufs->dstcp[ant_id % nb_rx_per_ru][tti % XRAN_N_FE_BUF_LEN].pBuffers->pData; + struct xran_prb_map *pPrbMap = (struct xran_prb_map *)pPrbMapData; + + struct xran_prb_map *pRbMap = pPrbMap; + for (int idxElm = 0; idxElm < pRbMap->nPrbElm; idxElm++) { + struct xran_prb_elm *pRbElm = &pRbMap->prbMap[idxElm]; +#ifdef E_RELEASE + struct xran_section_desc *p_sec_desc = pRbElm->p_sec_desc[sym_idx][0]; + uint32_t one_rb_size = + (((pRbElm->iqWidth == 0) || (pRbElm->iqWidth == 16)) ? (N_SC_PER_PRB * 2 * 2) : (3 * pRbElm->iqWidth + 1)); + if (fh_init->mtu < pRbElm->nRBSize * one_rb_size) + pData = bufs->dst[ant_id % nb_rx_per_ru][tti % XRAN_N_FE_BUF_LEN] + .pBuffers[sym_idx % XRAN_NUM_OF_SYMBOL_PER_SLOT] + .pData; + else + pData = p_sec_desc->pData; +#elif defined F_RELEASE + struct xran_section_desc *p_sec_desc = &pRbElm->sec_desc[sym_idx][0]; + pData = p_sec_desc->pData; +#endif + ptr = pData; + pos = (int32_t *)(start_ptr + (4 * sym_idx * fftsize)); + if (ptr == NULL || pos == NULL) + continue; + + uint8_t *src = (uint8_t *)ptr; + + LOG_D(HW, "rx pRbMap->nPrbElm %d\n", pRbMap->nPrbElm); + // For Liteon FR2 with RunSlotPrbMapBySymbolEnable xran_prb_map will have xran_prb_elm prbMap[14], each idxElm matches to sym_idx. + u_int8_t section_id_tmp = pPrbMap->nPrbElm < XRAN_NUM_OF_SYMBOL_PER_SLOT ? sym_idx - sym_start: sym_idx; + if (section_id_tmp != pRbElm->nSectId) { + LOG_D(HW, + "rx prbMap[%d] : PRBstart %d nPRBs %d nSectId %d != sym_idx %d:%d\n", + idxElm, + pRbMap->prbMap[idxElm].nRBStart, + pRbMap->prbMap[idxElm].nRBSize, + pRbMap->prbMap[idxElm].nSectId, sym_idx, section_id_tmp + ); + continue; + } + LOG_D(HW, + "rx prbMap[%d] : PRBstart %d:%d nPRBs %d:%d nSectId %d sym_idx %d:%d\n", + idxElm, + pRbMap->prbMap[idxElm].nRBStart, pRbMap->prbMap[idxElm].UP_nRBStart, + pRbMap->prbMap[idxElm].nRBSize, pRbMap->prbMap[idxElm].UP_nRBSize, + pRbMap->prbMap[idxElm].nSectId, sym_idx, section_id_tmp + ); + + int pos_len = 0; + int neg_len = 0; + int num_prbu = p_sec_desc->num_prbu; + int start_prbu = p_sec_desc->start_prbu; + if (start_prbu < (nPRBs >> 1)) // there are PRBs left of DC + neg_len = min((nPRBs * 6) - (start_prbu * 12), num_prbu * N_SC_PER_PRB); + pos_len = (num_prbu * N_SC_PER_PRB) - neg_len; + + src = pData; + // Calculation of the pointer for the section in the buffer. + // positive half + uint8_t *dst1 = (uint8_t *)(pos + (neg_len == 0 ? ((start_prbu * N_SC_PER_PRB) - (nPRBs * 6)) : 0)); + // negative half + uint8_t *dst2 = (uint8_t *)(pos + (start_prbu * N_SC_PER_PRB) + fftsize - (nPRBs * 6)); + int32_t local_dst[num_prbu * N_SC_PER_PRB] __attribute__((aligned(64))); + if (pRbElm->compMethod == XRAN_COMPMETHOD_NONE) { + // NOTE: gcc 11 knows how to generate AVX2 for this! + for (idx = 0; idx < num_prbu * N_SC_PER_PRB * 2; idx++) + ((int16_t *)local_dst)[idx] = ((int16_t)ntohs(((uint16_t *)src)[idx])) >> 2; + memcpy((void *)dst2, (void *)local_dst, neg_len * 4); + memcpy((void *)dst1, (void *)&local_dst[neg_len], pos_len * 4); + } else if (pRbElm->compMethod == XRAN_COMPMETHOD_BLKFLOAT) { +#if defined(__i386__) || defined(__x86_64__) + struct xranlib_decompress_request bfp_decom_req = {}; + struct xranlib_decompress_response bfp_decom_rsp = {}; + + int16_t payload_len = (3 * pRbElm->iqWidth + 1) * num_prbu; + + bfp_decom_req.data_in = (int8_t *)src; + bfp_decom_req.numRBs = num_prbu; + bfp_decom_req.len = payload_len; + bfp_decom_req.compMethod = pRbElm->compMethod; + bfp_decom_req.iqWidth = pRbElm->iqWidth; + + bfp_decom_rsp.data_out = (int16_t *)local_dst; + bfp_decom_rsp.len = 0; + + xranlib_decompress_avx512(&bfp_decom_req, &bfp_decom_rsp); +#elif defined(__arm__) || defined(__aarch64__) + armral_bfp_decompression(pRbElm->iqWidth, num_prbu, (int8_t *)src, (int16_t *)local_dst); +#else + AssertFatal(1 == 0, "BFP compression not supported on this architecture"); +#endif + memcpy((void *)dst2, (void *)local_dst, neg_len * 4); + memcpy((void *)dst1, (void *)&local_dst[neg_len], pos_len * 4); + outcnt++; + } else { + printf("pRbElm->compMethod == %d is not supported\n", pRbElm->compMethod); + exit(-1); + } + } + } // sym_ind + } // ant_ind + } // vv_inf + if ((*frame & 0x7f) == 0 && *slot == 0 && xran_get_common_counters(gxran_handle, &x_counters[0]) == XRAN_STATUS_SUCCESS) { + for (int o_xu_id = 0; o_xu_id < fh_init->xran_ports; o_xu_id++) { + LOG_I(HW, + "[%s%d][rx %7ld pps %7ld kbps %7ld][tx %7ld pps %7ld kbps %7ld][Total Msgs_Rcvd %ld]\n", + "o-du ", + o_xu_id, + x_counters[o_xu_id].rx_counter, + x_counters[o_xu_id].rx_counter - old_rx_counter[o_xu_id], + x_counters[o_xu_id].rx_bytes_per_sec * 8 / 1000L, + x_counters[o_xu_id].tx_counter, + x_counters[o_xu_id].tx_counter - old_tx_counter[o_xu_id], + x_counters[o_xu_id].tx_bytes_per_sec * 8 / 1000L, + x_counters[o_xu_id].Total_msgs_rcvd); + for (int rxant = 0; rxant < ru->nb_rx / fh_init->xran_ports; rxant++) + LOG_I(HW, + "[%s%d][pusch%d %7ld prach%d %7ld]\n", + "o_du", + o_xu_id, + rxant, + x_counters[o_xu_id].rx_pusch_packets[rxant], + rxant, + x_counters[o_xu_id].rx_prach_packets[rxant]); + if (x_counters[o_xu_id].rx_counter > old_rx_counter[o_xu_id]) + old_rx_counter[o_xu_id] = x_counters[o_xu_id].rx_counter; + if (x_counters[o_xu_id].tx_counter > old_tx_counter[o_xu_id]) + old_tx_counter[o_xu_id] = x_counters[o_xu_id].tx_counter; + } + } + return (0); +} + +/** @details Write PDSCH IQ-data from OAI txdataF_BF buffer to xran buffers. If + * I/Q compression (bitwidth < 16 bits) is configured, compresses the data + * before writing. */ +int xran_fh_tx_send_slot_BySymbol(ru_info_t *ru, int frame, int slot, uint64_t timestamp) +{ + int tti = /*frame*SUBFRAMES_PER_SYSTEMFRAME*SLOTNUM_PER_SUBFRAME+*/ 20 * frame + + slot; // commented out temporarily to check that compilation of oran 5g is working. + + void *ptr = NULL; + int32_t *pos = NULL; + int idx = 0; + + const struct xran_fh_init *fh_init = get_xran_fh_init(); + const struct xran_fh_config *fh_cfg = get_xran_fh_config(0); + int nPRBs = fh_cfg->nDLRBs; + int fftsize = 1 << fh_cfg->ru_conf.fftSize; + int nb_tx_per_ru = ru->nb_tx / fh_init->xran_ports; + int nb_rx_per_ru = ru->nb_rx / fh_init->xran_ports; + + // Handle CP UL packet here instead of at xran_fh_rx_read_slot() as oran_fh_if4p5_south_in() lags behind + // oran_fh_if4p5_south_out() (which is invoked at the right time slot) by 4 slots. + // Need to use --continuous-tx so that this routine will be triggered in RX slot. + for (uint16_t cc_id = 0; cc_id < 1 /*nSectorNum*/; cc_id++) { // OAI does not support multiple CC yet. + for (uint8_t ant_id = 0; ant_id < ru->nb_rx; ant_id++) { + const struct xran_frame_config *frame_conf = &get_xran_fh_config(ant_id / nb_rx_per_ru)->frame_conf; + // skip processing this slot is TX (no RX in this slot) + if (!is_tdd_ul_guard_slot(frame_conf, slot)) { + continue; + } + bool sym_start_found = false; + int32_t sym_start = 0; + // This loop would better be more inner to avoid confusion and maybe also errors. + for (int32_t sym_idx = 0; sym_idx < XRAN_NUM_OF_SYMBOL_PER_SLOT; sym_idx++) { + /* the callback is for mixed and UL slots. In mixed, we have to + * skip DL and guard symbols. */ + if (!is_tdd_ul_symbol(frame_conf, slot, sym_idx)) { + continue; + } + if (!sym_start_found) { + sym_start = sym_idx; + sym_start_found = true; + } + + oran_buf_list_t *bufs = get_xran_buffers(ant_id / nb_rx_per_ru); + uint8_t *pPrbMapData = bufs->dstcp[ant_id % nb_rx_per_ru][tti % XRAN_N_FE_BUF_LEN].pBuffers->pData; + struct xran_prb_map *pPrbMap = (struct xran_prb_map *)pPrbMapData; + + struct xran_prb_elm *pRbElm = &pPrbMap->prbMap[0]; + + struct xran_prb_map *pRbMap = pPrbMap; + uint32_t idxElm = 0; + + LOG_D(HW, "tx0 pRbMap->nPrbElm %d\n", pRbMap->nPrbElm); + for (idxElm = 0; idxElm < pRbMap->nPrbElm; idxElm++) { + LOG_D(HW, "prbMap[%d] : PRBstart %d nPRBs %d\n", idxElm, pRbMap->prbMap[idxElm].nRBStart, pRbMap->prbMap[idxElm].nRBSize); + pRbElm = &pRbMap->prbMap[idxElm]; + // For Liteon FR2 with RunSlotPrbMapBySymbolEnable xran_prb_map will have xran_prb_elm prbMap[14], each idxElm matches to sym_idx. + u_int8_t section_id_tmp = pPrbMap->nPrbElm < XRAN_NUM_OF_SYMBOL_PER_SLOT ? sym_idx - sym_start: sym_idx; + if (section_id_tmp != pRbElm->nSectId) { + LOG_D(HW, + "tx0 prbMap[%d] : PRBstart %d:%d nPRBs %d:%d nSectId %d != sym_idx %d:%d\n", + idxElm, + pRbMap->prbMap[idxElm].nRBStart, pRbMap->prbMap[idxElm].UP_nRBStart, + pRbMap->prbMap[idxElm].nRBSize, pRbMap->prbMap[idxElm].UP_nRBSize, + pRbMap->prbMap[idxElm].nSectId, sym_idx, section_id_tmp + ); + continue; + } + LOG_D(HW, + "tx0 prbMap[%d] : PRBstart %d:%d nPRBs %d:%d nSectId %d sym_idx %d:%d\n", + idxElm, + pRbMap->prbMap[idxElm].nRBStart, pRbMap->prbMap[idxElm].UP_nRBStart, + pRbMap->prbMap[idxElm].nRBSize, pRbMap->prbMap[idxElm].UP_nRBSize, + pRbMap->prbMap[idxElm].nSectId, sym_idx, section_id_tmp + ); + + // ant_id / no of antenna per beam gives the beam_nb + pRbElm->nBeamIndex = ru->beam_id[ant_id / (ru->nb_rx / ru->num_beams_period)][slot * XRAN_NUM_OF_SYMBOL_PER_SLOT + sym_idx]; + // In phy-f-1.0/fhi_lib/lib/api/xran_pkt_cp.h, beamId:15 is of 15bit. -1 set extension bit ef:1 to 1 mistakenly. + if (pRbElm->nBeamIndex == -1) + pRbElm->nBeamIndex = 0; + } + } + } + } + + for (uint16_t cc_id = 0; cc_id < 1 /*nSectorNum*/; cc_id++) { // OAI does not support multiple CC yet. + for (uint8_t ant_id = 0; ant_id < ru->nb_tx; ant_id++) { + oran_buf_list_t *bufs = get_xran_buffers(ant_id / nb_tx_per_ru); + const struct xran_frame_config *frame_conf = &get_xran_fh_config(ant_id / nb_tx_per_ru)->frame_conf; + // skip processing this slot is TX (no TX in this slot) + if (!is_tdd_dl_guard_slot(frame_conf, slot)) { + continue; + } + + // Set nPrbElm if beam_id = -1 for all downlink symbols + bool beam_used = false; + uint8_t *pPrbMapData = bufs->srccp[ant_id % nb_tx_per_ru][tti % XRAN_N_FE_BUF_LEN].pBuffers->pData; + struct xran_prb_map *pPrbMap = (struct xran_prb_map *)pPrbMapData; + struct xran_prb_map *pRbMap = pPrbMap; + int32_t dl_sym_end = 0; + for (int32_t sym_idx = 0; sym_idx < XRAN_NUM_OF_SYMBOL_PER_SLOT; sym_idx++) { + if (is_tdd_dl_symbol(frame_conf, slot, sym_idx)) { + if (ru->beam_id[ant_id / (ru->nb_tx / ru->num_beams_period)][slot * XRAN_NUM_OF_SYMBOL_PER_SLOT+ sym_idx] != -1) + beam_used |= true; + } + else { + dl_sym_end = sym_idx; + break; + } + } + if (is_tdd_guard_slot(frame_conf, slot)) + pRbMap->nPrbElm = dl_sym_end; + else + pRbMap->nPrbElm = XRAN_NUM_OF_SYMBOL_PER_SLOT; + if (!beam_used) { + pRbMap->nPrbElm = 0; + continue; + } + + // This loop would better be more inner to avoid confusion and maybe also errors. + for (int32_t sym_idx = 0; sym_idx < XRAN_NUM_OF_SYMBOL_PER_SLOT; sym_idx++) { + /* the callback is for mixed and UL slots. In mixed, we have to + * skip UL and guard symbols. */ + if (is_tdd_ul_symbol(frame_conf, slot, sym_idx)) { + continue; + } + uint8_t *pData = + bufs->src[ant_id % nb_tx_per_ru][tti % XRAN_N_FE_BUF_LEN].pBuffers[sym_idx % XRAN_NUM_OF_SYMBOL_PER_SLOT].pData; + uint8_t *pPrbMapData = bufs->srccp[ant_id % nb_tx_per_ru][tti % XRAN_N_FE_BUF_LEN].pBuffers->pData; + struct xran_prb_map *pPrbMap = (struct xran_prb_map *)pPrbMapData; + ptr = pData; + pos = &ru->txdataF_BF[ant_id][sym_idx * fftsize]; + + uint8_t *u8dptr; + struct xran_prb_map *pRbMap = pPrbMap; + int32_t sym_id = sym_idx % XRAN_NUM_OF_SYMBOL_PER_SLOT; + if (ptr && pos) { + uint32_t idxElm = 0; + u8dptr = (uint8_t *)ptr; + int16_t payload_len = 0; + + uint8_t *dst = (uint8_t *)u8dptr; + + struct xran_prb_elm *p_prbMapElm = &pRbMap->prbMap[idxElm]; + LOG_D(HW, "tx1 pRbMap->nPrbElm %d\n", pRbMap->nPrbElm); + for (idxElm = 0; idxElm < pRbMap->nPrbElm; idxElm++) { + // For Liteon FR2 with RunSlotPrbMapBySymbolEnable xran_prb_map will have xran_prb_elm prbMap[14], each idxElm matches to sym_idx. + struct xran_section_desc *p_sec_desc = NULL; + p_prbMapElm = &pRbMap->prbMap[idxElm]; + if (sym_idx != p_prbMapElm->nSectId) + continue; + // ant_id / no of antenna per beam gives the beam_nb + p_prbMapElm->nBeamIndex = ru->beam_id[ant_id / (ru->nb_tx / ru->num_beams_period)][slot * XRAN_NUM_OF_SYMBOL_PER_SLOT+ sym_idx]; + // In phy-f-1.0/fhi_lib/lib/api/xran_pkt_cp.h, beamId:15 is of 15bit. -1 set extension bit ef:1 to 1 mistakenly. + if (p_prbMapElm->nBeamIndex == -1) + p_prbMapElm->nBeamIndex = 0; + + // assumes one fragment per symbol +#ifdef E_RELEASE + p_sec_desc = p_prbMapElm->p_sec_desc[sym_id][0]; +#elif F_RELEASE + p_sec_desc = &p_prbMapElm->sec_desc[sym_id][0]; +#endif + + dst = xran_add_hdr_offset(dst, p_prbMapElm->compMethod); + + if (p_sec_desc == NULL) { + printf("p_sec_desc == NULL\n"); + exit(-1); + } + uint16_t *dst16 = (uint16_t *)dst; + + int pos_len = 0; + int neg_len = 0; + + if (p_prbMapElm->UP_nRBStart < (nPRBs >> 1)) // there are PRBs left of DC + neg_len = min((nPRBs * 6) - (p_prbMapElm->UP_nRBStart * 12), p_prbMapElm->UP_nRBSize * N_SC_PER_PRB); + pos_len = (p_prbMapElm->UP_nRBSize * N_SC_PER_PRB) - neg_len; + // Calculation of the pointer for the section in the buffer. + // start of positive frequency component + uint16_t *src1 = (uint16_t *)&pos[(neg_len == 0) ? ((p_prbMapElm->UP_nRBStart * N_SC_PER_PRB) - (nPRBs * 6)) : 0]; + // start of negative frequency component + uint16_t *src2 = (uint16_t *)&pos[(p_prbMapElm->UP_nRBStart * N_SC_PER_PRB) + fftsize - (nPRBs * 6)]; + + uint32_t local_src[p_prbMapElm->UP_nRBSize * N_SC_PER_PRB] __attribute__((aligned(64))); + memcpy((void *)local_src, (void *)src2, neg_len * 4); + memcpy((void *)&local_src[neg_len], (void *)src1, pos_len * 4); + if (p_prbMapElm->compMethod == XRAN_COMPMETHOD_NONE) { + payload_len = p_prbMapElm->UP_nRBSize * N_SC_PER_PRB * 4L; + /* convert to Network order */ + // NOTE: ggc 11 knows how to generate AVX2 for this! + for (idx = 0; idx < (pos_len + neg_len) * 2; idx++) + ((uint16_t *)dst16)[idx] = htons(((uint16_t *)local_src)[idx]); + } else if (p_prbMapElm->compMethod == XRAN_COMPMETHOD_BLKFLOAT) { + payload_len = (3 * p_prbMapElm->iqWidth + 1) * p_prbMapElm->UP_nRBSize; + +#if defined(__i386__) || defined(__x86_64__) + struct xranlib_compress_request bfp_com_req = {}; + struct xranlib_compress_response bfp_com_rsp = {}; + + bfp_com_req.data_in = (int16_t *)local_src; + bfp_com_req.numRBs = p_prbMapElm->UP_nRBSize; + bfp_com_req.len = payload_len; + bfp_com_req.compMethod = p_prbMapElm->compMethod; + bfp_com_req.iqWidth = p_prbMapElm->iqWidth; + + bfp_com_rsp.data_out = (int8_t *)dst; + bfp_com_rsp.len = 0; + + xranlib_compress_avx512(&bfp_com_req, &bfp_com_rsp); +#elif defined(__arm__) || defined(__aarch64__) + armral_bfp_compression(p_prbMapElm->iqWidth, p_prbMapElm->UP_nRBSize, (int16_t *)local_src, (int8_t *)dst); +#else + AssertFatal(1 == 0, "BFP compression not supported on this architecture"); +#endif + + } else { + printf("p_prbMapElm->compMethod == %d is not supported\n", p_prbMapElm->compMethod); + exit(-1); + } + + p_sec_desc->iq_buffer_offset = RTE_PTR_DIFF(dst, u8dptr); + p_sec_desc->iq_buffer_len = payload_len; + + dst += payload_len; + dst = xran_add_hdr_offset(dst, p_prbMapElm->compMethod); + } + + // The tti should be updated as it increased. + pRbMap->tti_id = tti; + + } else { + printf("ptr ==NULL\n"); + exit(-1); // fails here?? + } + } + } + } + return (0); +} diff --git a/radio/fhi_72/oran-config.c b/radio/fhi_72/oran-config.c index 51374e79fe..00c13bc64d 100644 --- a/radio/fhi_72/oran-config.c +++ b/radio/fhi_72/oran-config.c @@ -431,23 +431,17 @@ void print_fh_config(const struct xran_fh_config *fh_config) #ifdef F_RELEASE printf("\ RunSlotPrbMapBySymbolEnable %d\n\ + LiteOnIgnoreUPSectionIdEnable %d\n\ dssEnable %d\n\ dssPeriod %d\n\ technology[XRAN_MAX_DSS_PERIODICITY] (not filled as DSS disabled)\n", fh_config->RunSlotPrbMapBySymbolEnable, + fh_config->LiteOnIgnoreUPSectionIdEnable, fh_config->dssEnable, fh_config->dssPeriod); #endif } -static const paramdef_t *gpd(const paramdef_t *pd, int num, const char *name) -{ - /* the config module does not know const-correctness... */ - int idx = config_paramidx_fromname((paramdef_t *)pd, num, (char *)name); - DevAssert(idx >= 0); - return &pd[idx]; -} - static uint64_t get_u64_mask(const paramdef_t *pd) { DevAssert(pd != NULL); @@ -762,7 +756,8 @@ static bool set_fh_prach_config(void *mplane_api, const uint32_t max_num_ant, const paramdef_t *prachp, int nprach, - struct xran_prach_config *prach_config) + struct xran_prach_config *prach_config, + bool liteon_prach_eAxC_offset) { const split7_config_t *s7cfg = &oai0->split7; @@ -799,7 +794,10 @@ static bool set_fh_prach_config(void *mplane_api, prach_config->eAxC_offset = xran_mplane->prach_offset; #else uint8_t offset = *gpd(prachp, nprach, ORAN_PRACH_CONFIG_EAXC_OFFSET)->u8ptr; - prach_config->eAxC_offset = (offset != 0) ? offset : max_num_ant; + if (liteon_prach_eAxC_offset) + prach_config->eAxC_offset = offset; + else + prach_config->eAxC_offset = (offset != 0) ? offset : max_num_ant; #endif g_kbar = *gpd(prachp, nprach, ORAN_PRACH_CONFIG_KBAR)->uptr; @@ -945,9 +943,14 @@ static bool set_fh_config(void *mplane_api, int ru_idx, int num_rus, enum xran_c fh_config->enableCP = 1; // enable C-plane fh_config->prachEnable = 1; // enable PRACH fh_config->srsEnable = 0; // enable SRS; used only if XRAN_CATEGORY_B + // For LiteOn E release, no need to take care of prach eAxC_offset. xran lib is hacked to handle it. + bool liteon_prach_eAxC_offset = false; #ifdef F_RELEASE fh_config->srsEnableCp = 0; // enable SRS CP; used only if XRAN_CATEGORY_B fh_config->SrsDelaySym = 0; // number of SRS delay symbols; used only if XRAN_CATEGORY_B + fh_config->RunSlotPrbMapBySymbolEnable = *gpd(fhp, nfh, ORAN_CONFIG_RunSlotPrbMapBySymbol)->uptr; // enable RunSlotPrbMapBySymbol + fh_config->LiteOnIgnoreUPSectionIdEnable = *gpd(fhp, nfh, ORAN_CONFIG_LiteOnIgnoreUPSectionId)->uptr; // enable LiteOnIgnoreUPSectionId + liteon_prach_eAxC_offset = fh_config->LiteOnIgnoreUPSectionIdEnable; #endif fh_config->puschMaskEnable = 0; // enable PUSCH mask; only used if id = O_RU fh_config->puschMaskSlot = 0; // specific which slot PUSCH channel masked; only used if id = O_RU @@ -959,7 +962,7 @@ static bool set_fh_config(void *mplane_api, int ru_idx, int num_rus, enum xran_c fh_config->GPS_Alpha = 0; // refers to alpha as defined in section 9.7.2 of ORAN spec. this value should be alpha*(1/1.2288ns), range 0 - 1e7 (ns); offset_nsec = (pConf->GPS_Beta - offset_sec * 100) * 1e7 + pConf->GPS_Alpha fh_config->GPS_Beta = 0; // beta value as defined in section 9.7.2 of ORAN spec. range -32767 ~ +32767; offset_sec = pConf->GPS_Beta / 100 - if (!set_fh_prach_config(mplane_api, oai0, fh_config->neAxc, prachp, nprach, &fh_config->prach_conf)) + if (!set_fh_prach_config(mplane_api, oai0, fh_config->neAxc, prachp, nprach, &fh_config->prach_conf, liteon_prach_eAxC_offset)) return false; /* SRS only used if XRAN_CATEGORY_B Note: srs_config->eAxC_offset >= prach_config->eAxC_offset + PRACH */ @@ -991,8 +994,6 @@ static bool set_fh_config(void *mplane_api, int ru_idx, int num_rus, enum xran_c fh_config->max_sections_per_symbol = 0; // not used in xran #ifdef F_RELEASE - fh_config->RunSlotPrbMapBySymbolEnable = 0; // enable PRB mapping by symbol with multisection - fh_config->dssEnable = 0; // enable DSS (extension-9) fh_config->dssPeriod = 0; // DSS pattern period for LTE/NR // fh_config->technology[XRAN_MAX_DSS_PERIODICITY] // technology array represents slot is LTE(0)/NR(1); used only if DSS enabled diff --git a/radio/fhi_72/oran-init.c b/radio/fhi_72/oran-init.c index 516c2795fe..9707084a2f 100644 --- a/radio/fhi_72/oran-init.c +++ b/radio/fhi_72/oran-init.c @@ -333,6 +333,7 @@ static void oran_allocate_buffers(void *handle, struct xran_prb_map dlPmMixed = {0}; struct xran_prb_map ulPmMixed = {0}; uint32_t idx = 0; + if (fh_config->frame_conf.nFrameDuplexType == XRAN_TDD) { oran_mixed_slot_t info = get_mixed_slot_info(&fh_config->frame_conf); dlPmMixed = get_xran_prb_map(fh_config, XRAN_DIR_DL, 0, info.num_dlsym); @@ -357,8 +358,16 @@ static void oran_allocate_buffers(void *handle, #ifdef E_RELEASE uint32_t size_of_prb_map = sizeof(struct xran_prb_map) + sizeof(struct xran_prb_elm) * (xran_max_sections_per_slot - 1); #elif defined F_RELEASE - uint32_t numPrbElm = xran_get_num_prb_elm(&dlPm, mtu); - uint32_t size_of_prb_map = sizeof(struct xran_prb_map) + sizeof(struct xran_prb_elm) * (numPrbElm); + uint32_t size_of_prb_map; + if (fh_config->RunSlotPrbMapBySymbolEnable) { + // For Liteon FR2 with RunSlotPrbMapBySymbolEnable, xran_prb_map will have xran_prb_elm prbMap[14] + size_of_prb_map = sizeof(struct xran_prb_map) + sizeof(struct xran_prb_elm) * (XRAN_NUM_OF_SYMBOL_PER_SLOT); + } + else { + // For non-Liteon w/o RunSlotPrbMapBySymbolEnable, xran_prb_map will have xran_prb_elm prbMap[1] + uint32_t numPrbElm = xran_get_num_prb_elm(&dlPm, mtu); + size_of_prb_map = sizeof(struct xran_prb_map) + sizeof(struct xran_prb_elm) * (numPrbElm); + } #endif // PDSCH diff --git a/radio/fhi_72/oran-params.h b/radio/fhi_72/oran-params.h index baeefbc68d..9f12418909 100644 --- a/radio/fhi_72/oran-params.h +++ b/radio/fhi_72/oran-params.h @@ -95,6 +95,8 @@ #define CONFIG_STRING_ORAN_FH "fh_config" +#define ORAN_CONFIG_RunSlotPrbMapBySymbol "RunSlotPrbMapBySymbol" +#define ORAN_CONFIG_LiteOnIgnoreUPSectionId "LiteOnIgnoreUPSectionId" #define ORAN_FH_CONFIG_T1A_CP_DL "T1a_cp_dl" #define ORAN_FH_CONFIG_T1A_CP_UL "T1a_cp_ul" #define ORAN_FH_CONFIG_T1A_UP "T1a_up" @@ -104,10 +106,12 @@ // clang-format off #define ORAN_FH_DESC { \ - {ORAN_FH_CONFIG_T1A_CP_DL, "T1a_cp_dl" ORAN_FH_HLP_CPLT, PARAMFLAG_MANDATORY, .uptr=NULL, .defintarrayval=0, TYPE_UINTARRAY, 0}, \ - {ORAN_FH_CONFIG_T1A_CP_UL, "T1a_cp_ul" ORAN_FH_HLP_CPLT, PARAMFLAG_MANDATORY, .uptr=NULL, .defintarrayval=0, TYPE_UINTARRAY, 0}, \ - {ORAN_FH_CONFIG_T1A_UP, "T1a_up" ORAN_FH_HLP_CPLT, PARAMFLAG_MANDATORY, .uptr=NULL, .defintarrayval=0, TYPE_UINTARRAY, 0}, \ - {ORAN_FH_CONFIG_TA4, "Ta4" ORAN_FH_HLP_CPLT, PARAMFLAG_MANDATORY, .uptr=NULL, .defintarrayval=0, TYPE_UINTARRAY, 0}, \ + {ORAN_CONFIG_RunSlotPrbMapBySymbol, "RunSlotPrbMapBySymbol\n", PARAMFLAG_BOOL, .uptr=NULL, .defuintval=0, TYPE_UINT, 0}, \ + {ORAN_CONFIG_LiteOnIgnoreUPSectionId, "Liteon Ignore Section Id\n", PARAMFLAG_BOOL, .uptr=NULL, .defuintval=0, TYPE_UINT, 0}, \ + {ORAN_FH_CONFIG_T1A_CP_DL, "T1a_cp_dl" ORAN_FH_HLP_CPLT, PARAMFLAG_MANDATORY, .uptr=NULL, .defintarrayval=0, TYPE_UINTARRAY, 0}, \ + {ORAN_FH_CONFIG_T1A_CP_UL, "T1a_cp_ul" ORAN_FH_HLP_CPLT, PARAMFLAG_MANDATORY, .uptr=NULL, .defintarrayval=0, TYPE_UINTARRAY, 0}, \ + {ORAN_FH_CONFIG_T1A_UP, "T1a_up" ORAN_FH_HLP_CPLT, PARAMFLAG_MANDATORY, .uptr=NULL, .defintarrayval=0, TYPE_UINTARRAY, 0}, \ + {ORAN_FH_CONFIG_TA4, "Ta4" ORAN_FH_HLP_CPLT, PARAMFLAG_MANDATORY, .uptr=NULL, .defintarrayval=0, TYPE_UINTARRAY, 0}, \ } // clang-format on diff --git a/radio/fhi_72/oran_isolate.c b/radio/fhi_72/oran_isolate.c index 679936d9c9..9b97b58390 100644 --- a/radio/fhi_72/oran_isolate.c +++ b/radio/fhi_72/oran_isolate.c @@ -228,7 +228,12 @@ void oran_fh_if4p5_south_in(RU_t *ru, int *frame, int *slot) int f, sl; LOG_D(HW, "Read rxdataF %p,%p\n", ru_info.rxdataF[0], ru_info.rxdataF[1]); start_meas(&ru->rx_fhaul); - int ret = xran_fh_rx_read_slot(&ru_info, &f, &sl); + struct xran_fh_config *fh_cfg = get_xran_fh_config(0); + int ret = 0; + if (fh_cfg->RunSlotPrbMapBySymbolEnable) + ret = xran_fh_rx_read_slot_BySymbol(&ru_info, &f, &sl); + else + ret = xran_fh_rx_read_slot(&ru_info, &f, &sl); stop_meas(&ru->rx_fhaul); LOG_D(HW, "Read %d.%d rxdataF %p,%p\n", f, sl, ru_info.rxdataF[0], ru_info.rxdataF[1]); if (ret != 0) { @@ -283,7 +288,12 @@ void oran_fh_if4p5_south_out(RU_t *ru, int frame, int slot, uint64_t timestamp) // printf("south_out:\tframe=%d\tslot=%d\ttimestamp=%ld\n",frame,slot,timestamp); - int ret = xran_fh_tx_send_slot(&ru_info, frame, slot, timestamp); + struct xran_fh_config *fh_cfg = get_xran_fh_config(0); + int ret = 0; + if (fh_cfg->RunSlotPrbMapBySymbolEnable) + ret = xran_fh_tx_send_slot_BySymbol(&ru_info, frame, slot, timestamp); + else + ret = xran_fh_tx_send_slot(&ru_info, frame, slot, timestamp); if (ret != 0) { printf("ORAN: ORAN_fh_if4p5_south_out ERROR in TX function \n"); } diff --git a/radio/fhi_72/oran_isolate.h b/radio/fhi_72/oran_isolate.h index 6ec011a24b..bb3f17d42b 100644 --- a/radio/fhi_72/oran_isolate.h +++ b/radio/fhi_72/oran_isolate.h @@ -60,7 +60,9 @@ typedef struct ru_info_s { * @param frame output of the frame which has been read. * @param slot output of the slot which has been read. */ int xran_fh_rx_read_slot(ru_info_t *ru, int *frame, int *slot); +int xran_fh_rx_read_slot_BySymbol(ru_info_t *ru, int *frame, int *slot); /** @brief Writes TX data (PDSCH) of given slot. */ int xran_fh_tx_send_slot(ru_info_t *ru, int frame, int slot, uint64_t timestamp); +int xran_fh_tx_send_slot_BySymbol(ru_info_t *ru, int frame, int slot, uint64_t timestamp); #endif /* _ORAN_ISOLATE_H_ */ diff --git a/radio/rfsimulator/apply_channelmod.c b/radio/rfsimulator/apply_channelmod.c index 3f2e8d85c1..d1d1042451 100644 --- a/radio/rfsimulator/apply_channelmod.c +++ b/radio/rfsimulator/apply_channelmod.c @@ -65,7 +65,7 @@ void update_channel_model(channel_desc_t *channelDesc, uint64_t TS) const double pos_ue_y = 0; const double pos_ue_z = radius_earth; - const double c = 299792458; // m/s + const double c = (double) SPEED_OF_LIGHT; if (channelDesc->is_uplink) { const double dir_ue_sat_x = pos_sat_x - pos_ue_x; diff --git a/radio/rfsimulator/simulator.cpp b/radio/rfsimulator/simulator.cpp index 65e32216c4..ef6be135e6 100644 --- a/radio/rfsimulator/simulator.cpp +++ b/radio/rfsimulator/simulator.cpp @@ -713,7 +713,7 @@ static int rfsimu_setdistance_cmd(char *buff, int debug, telnet_printfunc_t prnt rfsimulator_state_t *t = (rfsimulator_state_t *)arg; const double sample_rate = t->sample_rate; - const double c = 299792458; /* 3e8 */ + const double c = (double) SPEED_OF_LIGHT; const uint64_t new_offset = (double)distance * sample_rate / c; const double new_distance = (double)new_offset * c / sample_rate; @@ -749,7 +749,7 @@ static int rfsimu_getdistance_cmd(char *buff, int debug, telnet_printfunc_t prnt rfsimulator_state_t *t = (rfsimulator_state_t *)arg; const double sample_rate = t->sample_rate; - const double c = 299792458; /* 3e8 */ + const double c = (double) SPEED_OF_LIGHT; for (int i = 0; i < MAX_FD_RFSIMU; i++) { buffer_t *b = &t->buf[i]; diff --git a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band77.273prb.fhi72.4x4-das-benetel650_650.conf b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band77.273prb.fhi72.4x4-das-benetel650_650.conf new file mode 100644 index 0000000000..1650f8a4e1 --- /dev/null +++ b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band77.273prb.fhi72.4x4-das-benetel650_650.conf @@ -0,0 +1,268 @@ +Active_gNBs = ( "gNB-OAI-DU"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + gNB_DU_ID = 0xe00; + gNB_name = "gNB-OAI-DU"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ( { sst = 1; }); }); + + nr_cellid = 1; + + ////////// Physical parameters: + + pdsch_AntennaPorts_XP = 2; + pdsch_AntennaPorts_N1 = 2; + pusch_AntennaPorts = 4; + do_CSIRS = 1; + do_SRS = 0; + force_UL256qam_off = 1; + maxMIMO_layers = 2; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + # n_TimingAdvanceOffset = 0; +# downlinkConfigCommon + #frequencyInfoDL + # center frequency = 3950.4 MHz + # selected SSB frequency = 3950.4 MHz + absoluteFrequencySSB = 663360; + dl_frequencyBand = 77; + # frequency point A = 3901.26 MHz + dl_absoluteFrequencyPointA = 660084; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 273; + #initialDownlinkBWP + #genericParameters + initialDLBWPlocationAndBandwidth = 1099; #38.101-1 Table 5.3.2-1 + # +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 11; + initialDLBWPsearchSpaceZero = 0; + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 77; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 273; + pMax = 23; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 1099; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 152; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 0; + preambleReceivedTargetPower = -100; +#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200) + preambleTransMax = 8; +#powerRampingStep +# 0=dB0,1=dB2,2=dB4,3=dB6 + powerRampingStep = 3; +#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; +#one (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15; +#ra_ContentionResolutionTimer +#(0..7) 8,16,24,32,40,48,56,64 + ra_ContentionResolutionTimer = 7; + rsrp_ThresholdSSB = 19; +#prach-RootSequenceIndex_PR +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 2; + prach_RootSequenceIndex = 1; + # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex + # + msg1_SubcarrierSpacing = 1, +# restrictedSetConfig +# 0=unrestricted, 1=restricted type A, 2=restricted type B + restrictedSetConfig = 0, + +# this is the offset between the last PRACH preamble power and the Msg3 PUSCH, 2 times the field value in dB + msg3_DeltaPreamble = 2; + p0_NominalWithGrant = -96; + +# pucch-ConfigCommon setup : +# pucchGroupHopping +# 0 = neither, 1= group hopping, 2=sequence hopping + pucchGroupHopping = 0; + hoppingId = 0; + p0_nominal = -96; + + ssb_PositionsInBurst_Bitmap = 0x1; + +# ssb_periodicityServingCell +# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1 + ssb_periodicityServingCell = 2; + +# dmrs_TypeA_position +# 0 = pos2, 1 = pos3 + dmrs_TypeA_Position = 0; + +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + subcarrierSpacing = 1; + + + #tdd-UL-DL-ConfigurationCommon +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + referenceSubcarrierSpacing = 1; + # pattern1 + # dl_UL_TransmissionPeriodicity + # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 + dl_UL_TransmissionPeriodicity = 5; + nrofDownlinkSlots = 3; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 1; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = 10; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + } +); + + +MACRLCs = ( +{ + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "f1"; + local_n_address = "172.21.16.51"; + remote_n_address = "172.21.6.90"; + local_n_portd = 2153; + remote_n_portd = 2153; + pusch_TargetSNRx10 = 120; + pucch_TargetSNRx10 = 200; + dl_bler_target_upper = .35; + dl_bler_target_lower = .15; + ul_bler_target_upper = .35; + ul_bler_target_lower = .15; + pusch_FailureThres = 100; + ul_max_mcs = 28; + min_grant_prb = 1; + set_analog_beamforming = 1; + beam_duration = 1; + beams_per_period = 2; +} +); + +L1s = ( +{ + enable_das = 1; + num_cc = 1; + tr_n_preference = "local_mac"; + prach_dtx_threshold = 100; + pucch0_dtx_threshold = 80; + pusch_dtx_threshold = 10; + max_ldpc_iterations = 10; + tx_amp_backoff_dB = 12; # needs to match O-RU configuration + L1_rx_thread_core = 8; + L1_tx_thread_core = 10; # relevant after merge of l1_tx_thread + phase_compensation = 0; # needs to match O-RU configuration +} +); + +RUs = ( +{ + local_rf = "no"; + nb_tx = 4; + nb_rx = 4; + att_tx = 0; + att_rx = 0; + bands = [77]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + sf_extension = 0; + eNB_instances = [0]; + ru_thread_core = 9; + sl_ahead = 10; + tr_preference = "raw_if4p5"; # important: activate FHI7.2 + do_precoding = 0; # needs to match O-RU configuration +} +); + +log_config : +{ + global_log_level = "info"; + hw_log_level = "info"; + phy_log_level = "info"; + mac_log_level = "info"; + rlc_log_level = "info"; + pdcp_log_level = "info"; + rrc_log_level = "info"; + ngap_log_level = "info"; + f1ap_log_level = "info"; +}; + +fhi_72 = { + dpdk_devices = ("0000:01:01.0", "0000:01:01.1", "0000:01:01.2", "0000:01:01.3"); # two VFs can be used as well + system_core = 0; + io_core = 1; + worker_cores = (2); + ru_addr = ("8c:1f:64:d1:10:46","8c:1f:64:d1:10:46","8c:1f:64:d1:10:43","8c:1f:64:d1:10:43"); # if two VFs, set two RU MAC addresses (one per RU) + mtu = 9600; + fh_config = ( +# RAN650 #1 + { + T1a_cp_dl = (419, 470); + T1a_cp_ul = (285, 336); + T1a_up = (294, 345); + Ta4 = (0, 200); + ru_config = { + iq_width = 9; + iq_width_prach = 9; + }; + }, +# RAN650 #2 + { + T1a_cp_dl = (419, 470); + T1a_cp_ul = (285, 336); + T1a_up = (294, 345); + Ta4 = (0, 200); + ru_config = { + iq_width = 9; + iq_width_prach = 9; + }; + }); +}; diff --git a/targets/PROJECTS/GENERIC-NR-5GC/CONF/neighbour-config-rfsim.conf b/targets/PROJECTS/GENERIC-NR-5GC/CONF/neighbour-config-rfsim.conf index cff9d2b293..641fbb2003 100644 --- a/targets/PROJECTS/GENERIC-NR-5GC/CONF/neighbour-config-rfsim.conf +++ b/targets/PROJECTS/GENERIC-NR-5GC/CONF/neighbour-config-rfsim.conf @@ -57,21 +57,21 @@ nr_measurement_configuration = { A2 = { enable = 1; threshold = 60; - timeToTrigger = 1; + time_to_trigger = 1; }; A3 = ( { - cell_id = 720898; # neighbour of gNB 0xe00 + physCellId = 1; # neighbour of gNB 0xe00 offset = 10; hysteresis = 0; - timeToTrigger = 1; + time_to_trigger = 1; }, { - cell_id = 12345678; # neighbour of gNB 0xb00 + physCellId = 0; # neighbour of gNB 0xb00 offset = 5; hysteresis = 1; - timeToTrigger = 2; + time_to_trigger = 2; } ); };
Relative Time (s)Test IdTest IndexTest DescTest OptionsTest Status
' + format(currentTime / 1000, '.1f') + '' + self.testCase_id + '' + self.testCaseIdx + '' + self.desc + '' + str(options) + '
' + format(currentTime / 1000, '.1f') + '' + self.testCase_id + '' + self.testCaseIdx + '' + self.desc + '' + str(options) + '