Merge branch 'integration_2025_w30' into 'develop'

Integration: `2025.w30`

* !3529 Add CI RFsim5G test for second PDU session
* !3532 Count bits in variable with mask
* !3533 CI: test T2 with DPDK 22.11
* !3535 RAN-Container-Parent: Auto-generate artifact in failure case
* !3542 bugfix: avoid segmentation fault when Redcap tries to connect to gNB
* !3543 rfsimulator: fix model name for channel
* !3540 CI: migrate RFSim4G to acamas machine

See merge request oai/openairinterface5g!3539
This commit is contained in:
Jaroslava Fiedlerova
2025-07-23 15:13:27 +00:00
25 changed files with 129 additions and 119 deletions
+3 -1
View File
@@ -835,12 +835,14 @@ def finalizeSlaveJob(jobName) {
selector: lastCompleted()) selector: lastCompleted())
if (fileExists(fileName)) { if (fileExists(fileName)) {
sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' ${fileName}" sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' ${fileName}"
} else {
sh "echo \"could not copy results from ${jobName}, please check pipeline ${BUILD_URL}\" > ${fileName}"
}
archiveArtifacts artifacts: fileName archiveArtifacts artifacts: fileName
// BUILD_URL is like http://server:port/jenkins/job/foo/15/ // BUILD_URL is like http://server:port/jenkins/job/foo/15/
// no need to add a prefixed '/' // no need to add a prefixed '/'
artifactUrl += 'artifact/' + fileName artifactUrl += 'artifact/' + fileName
} }
}
artifactUrl = "\n * [${jobName}](${artifactUrl})" artifactUrl = "\n * [${jobName}](${artifactUrl})"
return artifactUrl return artifactUrl
} }
+9
View File
@@ -301,6 +301,15 @@ rfsim5g_ue:
AttachScript: docker start rfsim5g-oai-nr-ue AttachScript: docker start rfsim5g-oai-nr-ue
DetachScript: docker stop rfsim5g-oai-nr-ue DetachScript: docker stop rfsim5g-oai-nr-ue
MTU: 1500 MTU: 1500
# for tests with second PDU session ID 2, needs to match requested PDU session name
rfsim5g_ue_pdu_2:
Host: "%%current_host%%"
NetworkScript: docker exec rfsim5g-oai-nr-ue ip a show dev oaitun_ue1p2
CmdPrefix: docker exec rfsim5g-oai-nr-ue
IF: oaitun_ue1p2
AttachScript: docker start rfsim5g-oai-nr-ue
DetachScript: docker stop rfsim5g-oai-nr-ue
MTU: 1500
rfsim5g_ue2: rfsim5g_ue2:
Host: "%%current_host%%" Host: "%%current_host%%"
+3 -2
View File
@@ -30,6 +30,7 @@ import cls_analysis
import constants as CONST import constants as CONST
LOG_PATH_PHYSIM = 'phy_sim_logs' LOG_PATH_PHYSIM = 'phy_sim_logs'
DPDK_PATH = '/opt/dpdk-t2-22.11.0'
class Native(): class Native():
@@ -39,7 +40,7 @@ class Native():
with cls_cmd.getConnection(host) as ssh: with cls_cmd.getConnection(host) as ssh:
base = f"{directory}/cmake_targets" base = f"{directory}/cmake_targets"
ret = ssh.run(f"{base}/build_oai {options} > {base}/log/build_oai.log", timeout=900) ret = ssh.run(f"C_INCLUDE_PATH={DPDK_PATH}/include/ PKG_CONFIG_PATH={DPDK_PATH}/lib64/pkgconfig/ {base}/build_oai {options} > {base}/log/build_oai.log", timeout=900)
success = ret.returncode == 0 success = ret.returncode == 0
logs = ssh.run(f"cat {base}/log/build_oai.log", silent=True) logs = ssh.run(f"cat {base}/log/build_oai.log", silent=True)
logging.debug(f"build finished with code {ret.returncode}, output:\n{logs.stdout}") logging.debug(f"build finished with code {ret.returncode}, output:\n{logs.stdout}")
@@ -73,7 +74,7 @@ class Native():
os.system(f'mkdir -p ./{LOG_PATH_PHYSIM}') os.system(f'mkdir -p ./{LOG_PATH_PHYSIM}')
runLogFile=f'physim_{HTML.testCase_id}.log' runLogFile=f'physim_{HTML.testCase_id}.log'
with cls_cmd.getConnection(host) as cmd: with cls_cmd.getConnection(host) as cmd:
cmd.run(f'sudo {workSpacePath}/ran_build/build/{physim_test} {options} >> {workSpacePath}/{runLogFile}') cmd.run(f'sudo LD_LIBRARY_PATH=.:{DPDK_PATH}/lib64/ {workSpacePath}/ran_build/build/{physim_test} {options} >> {workSpacePath}/{runLogFile}')
cmd.copyin(src=f'{workSpacePath}/{runLogFile}', tgt=f'{LOG_PATH_PHYSIM}/{runLogFile}') cmd.copyin(src=f'{workSpacePath}/{runLogFile}', tgt=f'{LOG_PATH_PHYSIM}/{runLogFile}')
success, msg = cls_analysis.Analysis.analyze_physim(f'{LOG_PATH_PHYSIM}/{runLogFile}', physim_test, options, threshold) success, msg = cls_analysis.Analysis.analyze_physim(f'{LOG_PATH_PHYSIM}/{runLogFile}', physim_test, options, threshold)
if success: if success:
@@ -108,16 +108,16 @@
<class>Attach_UE</class> <class>Attach_UE</class>
<desc>Attach OAI UE (Wait for IP)</desc> <desc>Attach OAI UE (Wait for IP)</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
</testCase> </testCase>
<testCase id="020011"> <testCase id="020011">
<class>Ping</class> <class>Ping</class>
<desc>Ping Traffic-Gen from LTE-UE</desc> <desc>Ping Traffic-Gen from LTE-UE</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_ext_dn</svr_id> <svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<ping_args>-c 20</ping_args> <ping_args>-c 20</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold> <ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase> </testCase>
@@ -126,9 +126,9 @@
<class>Ping</class> <class>Ping</class>
<desc>Ping LTE-UE from Traffic-Gen</desc> <desc>Ping LTE-UE from Traffic-Gen</desc>
<id>rfsim4g_ext_dn</id> <id>rfsim4g_ext_dn</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_ue</svr_id> <svr_id>rfsim4g_ue</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<ping_args>-c 20</ping_args> <ping_args>-c 20</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold> <ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase> </testCase>
@@ -141,8 +141,8 @@
<iperf_args>-u -t 30 -b 2M -R</iperf_args> <iperf_args>-u -t 30 -b 2M -R</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold> <iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold> <iperf_bitrate_threshold>80</iperf_bitrate_threshold>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
</testCase> </testCase>
<testCase id="030011"> <testCase id="030011">
@@ -153,8 +153,8 @@
<iperf_args>-u -t 30 -b 1M</iperf_args> <iperf_args>-u -t 30 -b 1M</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold> <iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold> <iperf_bitrate_threshold>80</iperf_bitrate_threshold>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
</testCase> </testCase>
<testCase id="100011"> <testCase id="100011">
@@ -86,9 +86,9 @@
<class>Ping</class> <class>Ping</class>
<desc>Ping Traffic-Gen from LTE-UE</desc> <desc>Ping Traffic-Gen from LTE-UE</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_enb_nos1</svr_id> <svr_id>rfsim4g_enb_nos1</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<ping_args>-c 20</ping_args> <ping_args>-c 20</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold> <ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase> </testCase>
@@ -97,9 +97,9 @@
<class>Ping</class> <class>Ping</class>
<desc>Ping LTE-UE from eNB</desc> <desc>Ping LTE-UE from eNB</desc>
<id>rfsim4g_enb_nos1</id> <id>rfsim4g_enb_nos1</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_ue</svr_id> <svr_id>rfsim4g_ue</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<ping_args>-c 20</ping_args> <ping_args>-c 20</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold> <ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase> </testCase>
@@ -108,9 +108,9 @@
<class>Iperf</class> <class>Iperf</class>
<desc>Iperf UDP DL</desc> <desc>Iperf UDP DL</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_enb_nos1</svr_id> <svr_id>rfsim4g_enb_nos1</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<iperf_args>-u -t 30 -b 2M -R</iperf_args> <iperf_args>-u -t 30 -b 2M -R</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold> <iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold> <iperf_bitrate_threshold>80</iperf_bitrate_threshold>
@@ -120,9 +120,9 @@
<class>Iperf</class> <class>Iperf</class>
<desc>Iperf UDP UL</desc> <desc>Iperf UDP UL</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_enb_nos1</svr_id> <svr_id>rfsim4g_enb_nos1</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<iperf_args>-u -t 30 -b 1M</iperf_args> <iperf_args>-u -t 30 -b 1M</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold> <iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold> <iperf_bitrate_threshold>80</iperf_bitrate_threshold>
@@ -108,16 +108,16 @@
<class>Attach_UE</class> <class>Attach_UE</class>
<desc>Attach OAI UE (Wait for IP)</desc> <desc>Attach OAI UE (Wait for IP)</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
</testCase> </testCase>
<testCase id="020011"> <testCase id="020011">
<class>Ping</class> <class>Ping</class>
<desc>Ping Traffic-Gen from LTE-UE</desc> <desc>Ping Traffic-Gen from LTE-UE</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_ext_dn</svr_id> <svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<ping_args>-c 20</ping_args> <ping_args>-c 20</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold> <ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase> </testCase>
@@ -126,9 +126,9 @@
<class>Ping</class> <class>Ping</class>
<desc>Ping LTE-UE from Traffic-Gen</desc> <desc>Ping LTE-UE from Traffic-Gen</desc>
<id>rfsim4g_ext_dn</id> <id>rfsim4g_ext_dn</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_ue</svr_id> <svr_id>rfsim4g_ue</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<ping_args>-c 20</ping_args> <ping_args>-c 20</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold> <ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase> </testCase>
@@ -137,9 +137,9 @@
<class>Iperf</class> <class>Iperf</class>
<desc>Iperf UDP DL</desc> <desc>Iperf UDP DL</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_ext_dn</svr_id> <svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<iperf_args>-u -t 30 -b 2M -R</iperf_args> <iperf_args>-u -t 30 -b 2M -R</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold> <iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold> <iperf_bitrate_threshold>80</iperf_bitrate_threshold>
@@ -149,9 +149,9 @@
<class>Iperf</class> <class>Iperf</class>
<desc>Iperf UDP UL</desc> <desc>Iperf UDP UL</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_ext_dn</svr_id> <svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<iperf_args>-u -t 30 -b 1M</iperf_args> <iperf_args>-u -t 30 -b 1M</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold> <iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold> <iperf_bitrate_threshold>80</iperf_bitrate_threshold>
@@ -108,16 +108,16 @@
<class>Attach_UE</class> <class>Attach_UE</class>
<desc>Attach OAI UE (Wait for IP)</desc> <desc>Attach OAI UE (Wait for IP)</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
</testCase> </testCase>
<testCase id="020011"> <testCase id="020011">
<class>Ping</class> <class>Ping</class>
<desc>Ping Traffic-Gen from LTE-UE</desc> <desc>Ping Traffic-Gen from LTE-UE</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_ext_dn</svr_id> <svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<ping_args>-c 20</ping_args> <ping_args>-c 20</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold> <ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase> </testCase>
@@ -126,9 +126,9 @@
<class>Ping</class> <class>Ping</class>
<desc>Ping LTE-UE from Traffic-Gen</desc> <desc>Ping LTE-UE from Traffic-Gen</desc>
<id>rfsim4g_ext_dn</id> <id>rfsim4g_ext_dn</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_ue</svr_id> <svr_id>rfsim4g_ue</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<ping_args>-c 20</ping_args> <ping_args>-c 20</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold> <ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase> </testCase>
@@ -137,9 +137,9 @@
<class>Iperf</class> <class>Iperf</class>
<desc>Iperf UDP DL</desc> <desc>Iperf UDP DL</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_ext_dn</svr_id> <svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<iperf_args>-u -t 30 -b 2M -R</iperf_args> <iperf_args>-u -t 30 -b 2M -R</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold> <iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold> <iperf_bitrate_threshold>80</iperf_bitrate_threshold>
@@ -149,9 +149,9 @@
<class>Iperf</class> <class>Iperf</class>
<desc>Iperf UDP UL</desc> <desc>Iperf UDP UL</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_ext_dn</svr_id> <svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<iperf_args>-u -t 30 -b 1M</iperf_args> <iperf_args>-u -t 30 -b 1M</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold> <iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold> <iperf_bitrate_threshold>80</iperf_bitrate_threshold>
@@ -83,9 +83,9 @@
<class>Iperf2_Unidir</class> <class>Iperf2_Unidir</class>
<desc>Iperf2 UDP DL</desc> <desc>Iperf2 UDP DL</desc>
<id>rfsim4g_ue_fembms</id> <id>rfsim4g_ue_fembms</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_enb_fembms</svr_id> <svr_id>rfsim4g_enb_fembms</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<iperf_args>-u -t 30 -b 2M</iperf_args> <iperf_args>-u -t 30 -b 2M</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold> <iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold> <iperf_bitrate_threshold>80</iperf_bitrate_threshold>
@@ -83,9 +83,9 @@
<class>Iperf</class> <class>Iperf</class>
<desc>Iperf UDP DL</desc> <desc>Iperf UDP DL</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_enb_nos1</svr_id> <svr_id>rfsim4g_enb_nos1</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<iperf_args>-u -t 30 -b 2M -R</iperf_args> <iperf_args>-u -t 30 -b 2M -R</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold> <iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold> <iperf_bitrate_threshold>80</iperf_bitrate_threshold>
@@ -108,9 +108,9 @@
<class>Ping</class> <class>Ping</class>
<desc>Ping Traffic-Gen from LTE-UE</desc> <desc>Ping Traffic-Gen from LTE-UE</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_ext_dn</svr_id> <svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<ping_args>-c 20</ping_args> <ping_args>-c 20</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold> <ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase> </testCase>
@@ -119,9 +119,9 @@
<class>Ping</class> <class>Ping</class>
<desc>Ping LTE-UE from Traffic-Gen</desc> <desc>Ping LTE-UE from Traffic-Gen</desc>
<id>rfsim4g_ext_dn</id> <id>rfsim4g_ext_dn</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_ue</svr_id> <svr_id>rfsim4g_ue</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<ping_args>-c 20</ping_args> <ping_args>-c 20</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold> <ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase> </testCase>
@@ -130,9 +130,9 @@
<class>Iperf</class> <class>Iperf</class>
<desc>Iperf UDP DL</desc> <desc>Iperf UDP DL</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_ext_dn</svr_id> <svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<iperf_args>-u -t 30 -b 2M -R</iperf_args> <iperf_args>-u -t 30 -b 2M -R</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold> <iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold> <iperf_bitrate_threshold>80</iperf_bitrate_threshold>
@@ -142,9 +142,9 @@
<class>Iperf</class> <class>Iperf</class>
<desc>Iperf UDP UL</desc> <desc>Iperf UDP UL</desc>
<id>rfsim4g_ue</id> <id>rfsim4g_ue</id>
<nodes>cacofonix</nodes> <nodes>acamas</nodes>
<svr_id>rfsim4g_ext_dn</svr_id> <svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node> <svr_node>acamas</svr_node>
<iperf_args>-u -t 30 -b 1M</iperf_args> <iperf_args>-u -t 30 -b 1M</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold> <iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold> <iperf_bitrate_threshold>80</iperf_bitrate_threshold>
@@ -32,6 +32,8 @@
000003 000003
020001 020001
020002 020002
000004
020003
030001 030001
030002 030002
100001 100001
@@ -98,6 +100,24 @@
<ping_packetloss_threshold>5</ping_packetloss_threshold> <ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase> </testCase>
<testCase id="000004">
<class>Attach_UE</class>
<desc>Verify 2nd PDU session is up</desc>
<id>rfsim5g_ue_pdu_2</id>
<nodes>acamas</nodes>
</testCase>
<testCase id="020003">
<class>Ping</class>
<desc>Ping ext-dn from NR-UE on PDU session ID 2</desc>
<id>rfsim5g_ue_pdu_2</id>
<nodes>acamas</nodes>
<svr_id>rfsim5g_ext_dn</svr_id>
<svr_node>acamas</svr_node>
<ping_args>-c 20 -i 0.25</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
<testCase id="030001"> <testCase id="030001">
<class>Iperf</class> <class>Iperf</class>
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc> <desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
@@ -62,7 +62,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_ulsim</physim_test> <physim_test>nr_ulsim</physim_test>
<physim_time_threshold>100</physim_time_threshold> <physim_time_threshold>100</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -m5 -r106 -R106 -C10 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -m5 -r106 -R106 -C10 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="010121"> <testCase id="010121">
@@ -80,7 +80,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_ulsim</physim_test> <physim_test>nr_ulsim</physim_test>
<physim_time_threshold>150</physim_time_threshold> <physim_time_threshold>150</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -m15 -r106 -R106 -C10 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -m15 -r106 -R106 -C10 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="010131"> <testCase id="010131">
@@ -98,7 +98,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_ulsim</physim_test> <physim_test>nr_ulsim</physim_test>
<physim_time_threshold>250</physim_time_threshold> <physim_time_threshold>250</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -m25 -r106 -R106 -C10 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -m25 -r106 -R106 -C10 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="010211"> <testCase id="010211">
@@ -116,7 +116,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_ulsim</physim_test> <physim_test>nr_ulsim</physim_test>
<physim_time_threshold>150</physim_time_threshold> <physim_time_threshold>150</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -m5 -r273 -R273 -C10 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -m5 -r273 -R273 -C10 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="010221"> <testCase id="010221">
@@ -134,7 +134,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_ulsim</physim_test> <physim_test>nr_ulsim</physim_test>
<physim_time_threshold>350</physim_time_threshold> <physim_time_threshold>350</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -m15 -r273 -R273 -C10 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -m15 -r273 -R273 -C10 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="010231"> <testCase id="010231">
@@ -152,7 +152,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_ulsim</physim_test> <physim_test>nr_ulsim</physim_test>
<physim_time_threshold>550</physim_time_threshold> <physim_time_threshold>550</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -m25 -r273 -R273 -C10 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -m25 -r273 -R273 -C10 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="010311"> <testCase id="010311">
@@ -170,7 +170,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_ulsim</physim_test> <physim_test>nr_ulsim</physim_test>
<physim_time_threshold>250</physim_time_threshold> <physim_time_threshold>250</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -m5 -r273 -R273 -C10 -W2 -z2 -y2 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -m5 -r273 -R273 -C10 -W2 -z2 -y2 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="010321"> <testCase id="010321">
@@ -188,7 +188,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_ulsim</physim_test> <physim_test>nr_ulsim</physim_test>
<physim_time_threshold>650</physim_time_threshold> <physim_time_threshold>650</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -m15 -r273 -R273 -C10 -W2 -z2 -y2 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -m15 -r273 -R273 -C10 -W2 -z2 -y2 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="010331"> <testCase id="010331">
@@ -206,7 +206,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_ulsim</physim_test> <physim_test>nr_ulsim</physim_test>
<physim_time_threshold>1100</physim_time_threshold> <physim_time_threshold>1100</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -m25 -r273 -R273 -C10 -W2 -z2 -y2 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -m25 -r273 -R273 -C10 -W2 -z2 -y2 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
</testCaseList> </testCaseList>
@@ -63,7 +63,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_dlsim</physim_test> <physim_test>nr_dlsim</physim_test>
<physim_time_threshold>100</physim_time_threshold> <physim_time_threshold>100</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b106 -R106 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -e5 -b106 -R106 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="000121"> <testCase id="000121">
@@ -81,7 +81,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_dlsim</physim_test> <physim_test>nr_dlsim</physim_test>
<physim_time_threshold>100</physim_time_threshold> <physim_time_threshold>100</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b106 -R106 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -e15 -b106 -R106 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="000131"> <testCase id="000131">
@@ -99,7 +99,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_dlsim</physim_test> <physim_test>nr_dlsim</physim_test>
<physim_time_threshold>200</physim_time_threshold> <physim_time_threshold>200</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b106 -R106 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -e25 -b106 -R106 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="000211"> <testCase id="000211">
@@ -117,7 +117,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_dlsim</physim_test> <physim_test>nr_dlsim</physim_test>
<physim_time_threshold>150</physim_time_threshold> <physim_time_threshold>150</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="000221"> <testCase id="000221">
@@ -135,7 +135,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_dlsim</physim_test> <physim_test>nr_dlsim</physim_test>
<physim_time_threshold>250</physim_time_threshold> <physim_time_threshold>250</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="000231"> <testCase id="000231">
@@ -153,7 +153,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_dlsim</physim_test> <physim_test>nr_dlsim</physim_test>
<physim_time_threshold>400</physim_time_threshold> <physim_time_threshold>400</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="000311"> <testCase id="000311">
@@ -171,7 +171,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_dlsim</physim_test> <physim_test>nr_dlsim</physim_test>
<physim_time_threshold>200</physim_time_threshold> <physim_time_threshold>200</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X4,5,6,7,8,9 -x2 -z2 -y2 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X4,5,6,7,8,9 -x2 -z2 -y2 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="000321"> <testCase id="000321">
@@ -189,7 +189,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_dlsim</physim_test> <physim_test>nr_dlsim</physim_test>
<physim_time_threshold>500</physim_time_threshold> <physim_time_threshold>500</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X4,5,6,7,8,9 -x2 -z2 -y2 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X4,5,6,7,8,9 -x2 -z2 -y2 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="000331"> <testCase id="000331">
@@ -207,7 +207,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_dlsim</physim_test> <physim_test>nr_dlsim</physim_test>
<physim_time_threshold>500</physim_time_threshold> <physim_time_threshold>500</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X4,5,6,7,8,9 -x2 -z2 -y2 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X4,5,6,7,8,9 -x2 -z2 -y2 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="000411"> <testCase id="000411">
@@ -225,7 +225,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_dlsim</physim_test> <physim_test>nr_dlsim</physim_test>
<physim_time_threshold>200</physim_time_threshold> <physim_time_threshold>200</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X4,5,6,7,8,9 -x2 -z4 -y4 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X4,5,6,7,8,9 -x2 -z4 -y4 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="000421"> <testCase id="000421">
@@ -243,7 +243,7 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_dlsim</physim_test> <physim_test>nr_dlsim</physim_test>
<physim_time_threshold>300</physim_time_threshold> <physim_time_threshold>300</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X4,5,6,7,8,9 -x2 -z4 -y4 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X4,5,6,7,8,9 -x2 -z4 -y4 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
<testCase id="000431"> <testCase id="000431">
@@ -261,6 +261,6 @@
<always_exec>true</always_exec> <always_exec>true</always_exec>
<physim_test>nr_dlsim</physim_test> <physim_test>nr_dlsim</physim_test>
<physim_time_threshold>450</physim_time_threshold> <physim_time_threshold>450</physim_time_threshold>
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X4,5,6,7,8,9 -x2 -z4 -y4 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev d8:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args> <physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X4,5,6,7,8,9 -x2 -z4 -y4 -P --loader.ldpc.shlibversion _t2 --nrLDPC_coding_t2.dpdk_dev af:00.0 --nrLDPC_coding_t2.dpdk_core_list 11-12</physim_run_args>
</testCase> </testCase>
</testCaseList> </testCaseList>
@@ -147,7 +147,7 @@ services:
- NET_ADMIN # for interface bringup - NET_ADMIN # for interface bringup
- NET_RAW # for ping - NET_RAW # for ping
environment: environment:
USE_ADDITIONAL_OPTIONS: --rfsim -r 25 --numerology 0 --uicc0.imsi 208990100001100 --band 66 -C 2152680000 --CO -400000000 --ssb 48 --rfsimulator.serveraddr 192.168.71.141 --log_config.global_log_options level,nocolor,time USE_ADDITIONAL_OPTIONS: --rfsim -r 25 --numerology 0 --uicc0.imsi 208990100001100 --band 66 -C 2152680000 --CO -400000000 --ssb 48 --rfsimulator.serveraddr 192.168.71.141 --extra-pdu-id 2 --log_config.global_log_options level,nocolor,time
depends_on: depends_on:
- oai-pnf - oai-pnf
networks: networks:
+6
View File
@@ -252,6 +252,12 @@ static __attribute__((always_inline)) inline int count_bits64(uint64_t v)
return __builtin_popcountll(v); return __builtin_popcountll(v);
} }
static __attribute__((always_inline)) inline int count_bits64_with_mask(uint64_t v, int start, int num)
{
uint64_t mask = ((1LL << num) - 1) << start;
return count_bits64(v & mask);
}
uint64_t reverse_bits(uint64_t in, int n_bits); uint64_t reverse_bits(uint64_t in, int n_bits);
void reverse_bits_u8(uint8_t const* in, size_t sz, uint8_t* out); void reverse_bits_u8(uint8_t const* in, size_t sz, uint8_t* out);
+3 -2
View File
@@ -23,6 +23,7 @@
| matix | Matix | gNB (n77) | N310 | | matix | Matix | gNB (n77) | N310 |
| gracehopper1-oai | Gracehopper1 | gNB (n78, PNF/Nvidia CUBB + VNF) | Foxconn RU, _Nvidia Aerial integration_ | | gracehopper1-oai | Gracehopper1 | gNB (n78, PNF/Nvidia CUBB + VNF) | Foxconn RU, _Nvidia Aerial integration_ |
| gracehopper3-oai | Gracehopper3 | build | -- | | gracehopper3-oai | Gracehopper3 | build | -- |
| acamas | Acamas | 4G and 5G rfsimulator| -- |
Note: The available resources, and their current usage, is indicated here: Note: The available resources, and their current usage, is indicated here:
- [Lockable resources of jenkins-oai](https://jenkins-oai.eurecom.fr/lockable-resources/): - [Lockable resources of jenkins-oai](https://jenkins-oai.eurecom.fr/lockable-resources/):
@@ -178,11 +179,11 @@ information on how the images are built.
- see [`./physical-simulators.md`](./physical-simulators.md) for an overview - see [`./physical-simulators.md`](./physical-simulators.md) for an overview
- [RAN-RF-Sim-Test-4G](https://jenkins-oai.eurecom.fr/job/RAN-RF-Sim-Test-4G/) - [RAN-RF-Sim-Test-4G](https://jenkins-oai.eurecom.fr/job/RAN-RF-Sim-Test-4G/)
~4G-LTE ~4G-LTE
- cacofonix (eNB, lteUE, OAI EPC) - acamas (eNB, lteUE, OAI EPC)
- uses RFsimulator, for FDD 5, 10, 20MHz with core, 5MHz noS1 - uses RFsimulator, for FDD 5, 10, 20MHz with core, 5MHz noS1
- [RAN-RF-Sim-Test-5G](https://jenkins-oai.eurecom.fr/job/RAN-RF-Sim-Test-5G/) - [RAN-RF-Sim-Test-5G](https://jenkins-oai.eurecom.fr/job/RAN-RF-Sim-Test-5G/)
~5G-NR ~nrUE ~5G-NR ~nrUE
- cacofonix (gNB, nrUE, OAI 5GC) - acamas (gNB, nrUE, OAI 5GC)
- uses RFsimulator, TDD 40MHz, FDD 40MHz, F1 split - uses RFsimulator, TDD 40MHz, FDD 40MHz, F1 split
- [RAN-SA-AW2S-CN5G](https://jenkins-oai.eurecom.fr/job/RAN-SA-AW2S-CN5G/) - [RAN-SA-AW2S-CN5G](https://jenkins-oai.eurecom.fr/job/RAN-SA-AW2S-CN5G/)
~5G-NR ~5G-NR
+1 -11
View File
@@ -307,16 +307,6 @@ int8_t get_next_dmrs_symbol_in_slot(uint16_t ul_dmrs_symb_pos, uint8_t counter,
} }
/* return the total number of dmrs symbol in a slot */
uint8_t get_dmrs_symbols_in_slot(uint16_t l_prime_mask, uint16_t nb_symb, uint8_t start)
{
uint8_t tmp = 0;
for (int i = start; i < start + nb_symb; i++) {
tmp += (l_prime_mask >> i) & 0x01;
}
return tmp;
}
/* return the position of valid dmrs symbol in a slot for channel compensation */ /* return the position of valid dmrs symbol in a slot for channel compensation */
int8_t get_valid_dmrs_idx_for_channel_est(uint16_t dmrs_symb_pos, uint8_t counter) int8_t get_valid_dmrs_idx_for_channel_est(uint16_t dmrs_symb_pos, uint8_t counter)
{ {
@@ -351,7 +341,7 @@ void nr_chest_time_domain_avg(NR_DL_FRAME_PARMS *frame_parms,
simde__m128i *ul_ch128_1; simde__m128i *ul_ch128_1;
int16_t *ul_ch16_0; int16_t *ul_ch16_0;
int total_symbols = start_symbol + num_symbols; int total_symbols = start_symbol + num_symbols;
int num_dmrs_symb = get_dmrs_symbols_in_slot(dmrs_bitmap, total_symbols, start_symbol); int num_dmrs_symb = count_bits64_with_mask(dmrs_bitmap, start_symbol, total_symbols);
int first_dmrs_symb = get_next_dmrs_symbol_in_slot(dmrs_bitmap, start_symbol, total_symbols); int first_dmrs_symb = get_next_dmrs_symbol_in_slot(dmrs_bitmap, start_symbol, total_symbols);
AssertFatal(first_dmrs_symb > -1, "No DMRS symbol present in this slot\n"); AssertFatal(first_dmrs_symb > -1, "No DMRS symbol present in this slot\n");
for (int aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) { for (int aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) {
-1
View File
@@ -63,7 +63,6 @@ uint8_t allowed_xlsch_re_in_dmrs_symbol(uint16_t k,
void nr_gen_ref_conj_symbols(const uint32_t *in, uint32_t length, int16_t *output, int mod_order); void nr_gen_ref_conj_symbols(const uint32_t *in, uint32_t length, int16_t *output, int mod_order);
int8_t get_next_dmrs_symbol_in_slot(uint16_t ul_dmrs_symb_pos, uint8_t counter, uint8_t end_symbol); int8_t get_next_dmrs_symbol_in_slot(uint16_t ul_dmrs_symb_pos, uint8_t counter, uint8_t end_symbol);
uint8_t get_dmrs_symbols_in_slot(uint16_t l_prime_mask, uint16_t nb_symb, uint8_t start);
int8_t get_valid_dmrs_idx_for_channel_est(uint16_t dmrs_symb_pos, uint8_t counter); int8_t get_valid_dmrs_idx_for_channel_est(uint16_t dmrs_symb_pos, uint8_t counter);
void nr_chest_time_domain_avg(NR_DL_FRAME_PARMS *frame_parms, void nr_chest_time_domain_avg(NR_DL_FRAME_PARMS *frame_parms,
int32_t **ch_estimates, int32_t **ch_estimates,
+2 -5
View File
@@ -821,10 +821,8 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, N
AssertFatal(ulsch_harq != NULL, "harq_pid %d is not allocated\n", ulsch->harq_pid); AssertFatal(ulsch_harq != NULL, "harq_pid %d is not allocated\n", ulsch->harq_pid);
if ((ulsch->active == true) && (ulsch->frame == frame_rx) && (ulsch->slot == slot_rx) && (ulsch->handled == 0)) { if ((ulsch->active == true) && (ulsch->frame == frame_rx) && (ulsch->slot == slot_rx) && (ulsch->handled == 0)) {
LOG_D(PHY, "PUSCH ID %d with RNTI %x detection started in frame %d slot %d\n", ULSCH_id, ulsch->rnti, frame_rx, slot_rx); LOG_D(PHY, "PUSCH ID %d with RNTI %x detection started in frame %d slot %d\n", ULSCH_id, ulsch->rnti, frame_rx, slot_rx);
nfapi_nr_pusch_pdu_t *pdu = &ulsch_harq->ulsch_pdu;
int num_dmrs = 0; int num_dmrs = count_bits64_with_mask(pdu->ul_dmrs_symb_pos, 0, NR_NUMBER_OF_SYMBOLS_PER_SLOT);
for (int s = 0; s < NR_NUMBER_OF_SYMBOLS_PER_SLOT; s++)
num_dmrs += (ulsch_harq->ulsch_pdu.ul_dmrs_symb_pos >> s) & 1;
#ifdef DEBUG_RXDATA #ifdef DEBUG_RXDATA
NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms; NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms;
@@ -832,7 +830,6 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, N
int slot_offset = frame_parms->get_samples_slot_timestamp(slot_rx, frame_parms, 0); int slot_offset = frame_parms->get_samples_slot_timestamp(slot_rx, frame_parms, 0);
slot_offset -= ru->N_TA_offset; slot_offset -= ru->N_TA_offset;
int32_t sample_offset = gNB->common_vars.debugBuff_sample_offset; int32_t sample_offset = gNB->common_vars.debugBuff_sample_offset;
nfapi_nr_pusch_pdu_t *pdu = &ulsch_harq->ulsch_pdu;
int16_t *buf = (int16_t *)&gNB->common_vars.debugBuff[offset]; int16_t *buf = (int16_t *)&gNB->common_vars.debugBuff[offset];
buf[0] = (int16_t)ulsch->rnti; buf[0] = (int16_t)ulsch->rnti;
buf[1] = (int16_t)pdu->rb_size; buf[1] = (int16_t)pdu->rb_size;
+2 -4
View File
@@ -847,14 +847,12 @@ int main(int argc, char *argv[])
uint8_t length_dmrs = pusch_len1; uint8_t length_dmrs = pusch_len1;
uint16_t l_prime_mask = get_l_prime(nb_symb_sch, mapping_type, add_pos, length_dmrs, start_symbol, NR_MIB__dmrs_TypeA_Position_pos2); uint16_t l_prime_mask = get_l_prime(nb_symb_sch, mapping_type, add_pos, length_dmrs, start_symbol, NR_MIB__dmrs_TypeA_Position_pos2);
uint16_t number_dmrs_symbols = get_dmrs_symbols_in_slot(l_prime_mask, nb_symb_sch, start_symbol); int number_dmrs_symbols = count_bits64_with_mask(l_prime_mask, start_symbol, nb_symb_sch);
uint8_t nb_re_dmrs = (dmrs_config_type == pusch_dmrs_type1) ? 6 : 4; uint8_t nb_re_dmrs = (dmrs_config_type == pusch_dmrs_type1) ? 6 : 4;
uint32_t tbslbrm = 0; uint32_t tbslbrm = 0;
if (ilbrm) if (ilbrm)
tbslbrm = nr_compute_tbslbrm(mcs_table, tbslbrm = nr_compute_tbslbrm(mcs_table, N_RB_UL, precod_nbr_layers);
N_RB_UL,
precod_nbr_layers);
if ((UE->frame_parms.nb_antennas_tx==4)&&(precod_nbr_layers==4)) if ((UE->frame_parms.nb_antennas_tx==4)&&(precod_nbr_layers==4))
num_dmrs_cdm_grps_no_data = 2; num_dmrs_cdm_grps_no_data = 2;
+1 -6
View File
@@ -797,12 +797,7 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
int start_symbol = pusch_config_pdu->start_symbol_index; int start_symbol = pusch_config_pdu->start_symbol_index;
int number_of_symbols = pusch_config_pdu->nr_of_symbols; int number_of_symbols = pusch_config_pdu->nr_of_symbols;
int number_dmrs_symbols = 0; int number_dmrs_symbols = count_bits64_with_mask(pusch_config_pdu->ul_dmrs_symb_pos, start_symbol, number_of_symbols);
for (int i = start_symbol; i < start_symbol + number_of_symbols; i++) {
if ((pusch_config_pdu->ul_dmrs_symb_pos >> i) & 0x01)
number_dmrs_symbols += 1;
}
int nb_dmrs_re_per_rb = int nb_dmrs_re_per_rb =
((pusch_config_pdu->dmrs_config_type == pusch_dmrs_type1) ? 6 : 4) * pusch_config_pdu->num_dmrs_cdm_grps_no_data; ((pusch_config_pdu->dmrs_config_type == pusch_dmrs_type1) ? 6 : 4) * pusch_config_pdu->num_dmrs_cdm_grps_no_data;
@@ -293,9 +293,7 @@ static void schedule_nr_MsgA_pusch(NR_UplinkConfigCommon_t *uplinkConfigCommon,
pusch_pdu->mcs_index = msgA_PUSCH_Resource->msgA_MCS_r16; pusch_pdu->mcs_index = msgA_PUSCH_Resource->msgA_MCS_r16;
pusch_pdu->qam_mod_order = nr_get_Qm_dl(pusch_pdu->mcs_index, pusch_pdu->mcs_table); pusch_pdu->qam_mod_order = nr_get_Qm_dl(pusch_pdu->mcs_index, pusch_pdu->mcs_table);
int num_dmrs_symb = 0; int num_dmrs_symb = count_bits64_with_mask(pusch_pdu->ul_dmrs_symb_pos, 10, 3);
for (int i = 10; i < 10 + 3; i++)
num_dmrs_symb += (pusch_pdu->ul_dmrs_symb_pos >> i) & 1;
AssertFatal(pusch_pdu->mcs_index <= 28, "Exceeding MCS limit for MsgA PUSCH\n"); AssertFatal(pusch_pdu->mcs_index <= 28, "Exceeding MCS limit for MsgA PUSCH\n");
int R = nr_get_code_rate_ul(pusch_pdu->mcs_index, pusch_pdu->mcs_table); int R = nr_get_code_rate_ul(pusch_pdu->mcs_index, pusch_pdu->mcs_table);
pusch_pdu->target_code_rate = R; pusch_pdu->target_code_rate = R;
@@ -820,9 +818,7 @@ static void nr_generate_Msg3_retransmission(module_id_t module_idP,
uint16_t *vrb_map_UL = &nr_mac->common_channels[CC_id].vrb_map_UL[beam_ul.idx][buffer_index * MAX_BWP_SIZE]; uint16_t *vrb_map_UL = &nr_mac->common_channels[CC_id].vrb_map_UL[beam_ul.idx][buffer_index * MAX_BWP_SIZE];
NR_pusch_dmrs_t dmrs_info = get_ul_dmrs_params(scc, ul_bwp, &tda_info, 1); NR_pusch_dmrs_t dmrs_info = get_ul_dmrs_params(scc, ul_bwp, &tda_info, 1);
int num_dmrs_symb = 0; int num_dmrs_symb = count_bits64_with_mask(dmrs_info.ul_dmrs_symb_pos, tda_info.startSymbolIndex, tda_info.nrOfSymbols);
for(int i = tda_info.startSymbolIndex; i < tda_info.startSymbolIndex + tda_info.nrOfSymbols; i++)
num_dmrs_symb += (dmrs_info.ul_dmrs_symb_pos >> i) & 1;
int TBS = 0, mcsindex = 0, R = 0, Qm = 0; int TBS = 0, mcsindex = 0, R = 0, Qm = 0;
while(TBS < 7) { // TBS for msg3 is 7 bytes (except for RRCResumeRequest1 currently not implemented) while(TBS < 7) { // TBS for msg3 is 7 bytes (except for RRCResumeRequest1 currently not implemented)
mcsindex++; mcsindex++;
@@ -1157,9 +1153,7 @@ static void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, slot_
NR_tda_info_t tda_info = get_ul_tda_info(ul_bwp, 0, NR_SearchSpace__searchSpaceType_PR_common, TYPE_TC_RNTI_, ra->Msg3_tda_id); NR_tda_info_t tda_info = get_ul_tda_info(ul_bwp, 0, NR_SearchSpace__searchSpaceType_PR_common, TYPE_TC_RNTI_, ra->Msg3_tda_id);
NR_pusch_dmrs_t dmrs_info = get_ul_dmrs_params(scc, ul_bwp, &tda_info, 1); NR_pusch_dmrs_t dmrs_info = get_ul_dmrs_params(scc, ul_bwp, &tda_info, 1);
int num_dmrs_symb = 0; int num_dmrs_symb = count_bits64_with_mask(dmrs_info.ul_dmrs_symb_pos, tda_info.startSymbolIndex, tda_info.nrOfSymbols);
for(int i = tda_info.startSymbolIndex; i < tda_info.startSymbolIndex + tda_info.nrOfSymbols; i++)
num_dmrs_symb += (dmrs_info.ul_dmrs_symb_pos >> i) & 1;
int TBS = 0, mcsindex = 0, R = 0, Qm = 0; int TBS = 0, mcsindex = 0, R = 0, Qm = 0;
while(TBS < 7) { // TBS for msg3 is 7 bytes (except for RRCResumeRequest1 currently not implemented) while(TBS < 7) { // TBS for msg3 is 7 bytes (except for RRCResumeRequest1 currently not implemented)
mcsindex++; mcsindex++;
@@ -762,10 +762,7 @@ NR_pusch_dmrs_t get_ul_dmrs_params(const NR_ServingCellConfigCommon_t *scc,
tda_info->startSymbolIndex, tda_info->startSymbolIndex,
scc->dmrs_TypeA_Position); scc->dmrs_TypeA_Position);
uint8_t num_dmrs_symb = 0; dmrs.num_dmrs_symb = count_bits64_with_mask(dmrs.ul_dmrs_symb_pos, tda_info->startSymbolIndex, tda_info->nrOfSymbols);
for(int i = tda_info->startSymbolIndex; i < tda_info->startSymbolIndex + tda_info->nrOfSymbols; i++)
num_dmrs_symb += (dmrs.ul_dmrs_symb_pos >> i) & 1;
dmrs.num_dmrs_symb = num_dmrs_symb;
dmrs.N_PRB_DMRS = dmrs.num_dmrs_cdm_grps_no_data * (dmrs.dmrs_config_type == 0 ? 6 : 4); dmrs.N_PRB_DMRS = dmrs.num_dmrs_cdm_grps_no_data * (dmrs.dmrs_config_type == 0 ? 6 : 4);
return dmrs; return dmrs;
} }
+2 -1
View File
@@ -3503,7 +3503,8 @@ static bool verify_radio_configuration(int uid, const NR_ServingCellConfigCommon
return false; return false;
} }
int n_dl_bwp = scd->downlinkBWP_ToAddModList ? scd->downlinkBWP_ToAddModList->list.count : 1; /* for RedCap, scd is NULL */
int n_dl_bwp = scd && scd->downlinkBWP_ToAddModList ? scd->downlinkBWP_ToAddModList->list.count : 1;
int csi_offset = fs->numb_slots_period * n_dl_bwp; int csi_offset = fs->numb_slots_period * n_dl_bwp;
// see set_csirs_periodicity // see set_csirs_periodicity
if (csi_offset / 320 >= get_full_dl_slots_per_period(fs)) { if (csi_offset / 320 >= get_full_dl_slots_per_period(fs)) {
+1 -1
View File
@@ -218,7 +218,7 @@ static buffer_t *allocCirBuf(rfsimulator_state_t *bridge, int sock)
sizeofArray(modelname), sizeofArray(modelname),
"rfsimu_channel_%s%d", "rfsimu_channel_%s%d",
(bridge->role == SIMU_ROLE_SERVER) ? "ue" : "enB", (bridge->role == SIMU_ROLE_SERVER) ? "ue" : "enB",
bridge->nb_cnx); bridge->nb_cnx - 1);
ptr->channel_model = find_channel_desc_fromname(modelname); // path_loss in dB ptr->channel_model = find_channel_desc_fromname(modelname); // path_loss in dB
if (!ptr->channel_model) { if (!ptr->channel_model) {
// Use legacy method to find channel model - this will use the same channel model for all clients // Use legacy method to find channel model - this will use the same channel model for all clients