diff --git a/ci-scripts/conf_files/gnb-du.sa.band78.273prb.fhi72.4x4-4L-liteon.conf b/ci-scripts/conf_files/gnb-du.sa.band78.273prb.fhi72.4x4-4L-liteon.conf new file mode 100644 index 0000000000..537399423f --- /dev/null +++ b/ci-scripts/conf_files/gnb-du.sa.band78.273prb.fhi72.4x4-4L-liteon.conf @@ -0,0 +1,228 @@ +# SPDX-License-Identifier: LicenseRef-CSSL-1.0 + +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 = 97; mnc_length = 2; snssaiList = ( { sst = 1; }); }); + nr_cellid = 1; + ////////// Physical parameters: + pdsch_AntennaPorts_XP = 2; + pdsch_AntennaPorts_N1 = 2; + maxMIMO_layers = 4; #2; + pusch_AntennaPorts = 4; + do_CSIRS = 1; + do_SRS = 0; + servingCellConfigCommon = ( + { + #spCellConfigCommon + physCellId = 0; + # n_TimingAdvanceOffset = 0; +# downlinkConfigCommon + #frequencyInfoDL + # center frequency = 3350.01 MHz + # selected SSB frequency = 3349.92 MHz + absoluteFrequencySSB = 623328; + dl_frequencyBand = 78; + # frequency point A = 3300.87 MHz + dl_absoluteFrequencyPointA = 620058; + #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 = 78; + #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 = 159; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 22; + zeroCorrelationZoneConfig = 15; + preambleReceivedTargetPower = -104; +#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200) + preambleTransMax = 7; +#powerRampingStep +# 0=dB0,1=dB2,2=dB4,3=dB6 + powerRampingStep = 2; +#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 = 8; + nrofUplinkSlots = 1; + nrofUplinkSymbols = 2; + ssPBCH_BlockPower = -11; + } + ); + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + +} +); + +MACRLCs = ( +{ + tr_s_preference = "local_L1"; + tr_n_preference = "f1"; + local_n_address = "172.21.10.20"; + remote_n_address = "172.21.6.112"; + local_n_portd = 2153; + remote_n_portd = 2153; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 250; + pusch_FailureThres = 100; +} +); + +L1s = ( +{ + tr_n_preference = "local_mac"; + prach_dtx_threshold = 120 + pucch0_dtx_threshold = 80; + pusch_dtx_threshold = 10; + max_ldpc_iterations = 15; + tx_amp_backoff_dB = 20; # needs to match O-RU configuration + L1_rx_thread_core = 11; + L1_tx_thread_core = 12; + phase_compensation = 1; # needs to match O-RU configuration +} +); + +RUs = ( +{ + local_rf = "no"; + nb_tx = 4; + nb_rx = 4; + att_tx = 0; + att_rx = 0; + bands = [78]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + sf_extension = 0; + eNB_instances = [0]; + ru_thread_core = 10; + sl_ahead = 8; + tr_preference = "raw_if4p5"; # important: activate FHI7.2 + do_precoding = 0; # needs to match O-RU configuration +} +); + +log_config : +{ + global_log_level = "info"; +}; + +fhi_72 = { + dpdk_devices = ("0000:41:11.0", "0000:41:11.1"); # one VF can be used as well + dpdk_iova_mode = "VA"; + system_core = 7; + io_core = 8; + worker_cores = (9); + ru_addr = ("e8:c7:4f:25:81:b3", "e8:c7:4f:25:81:b3"); + mtu = 9600; + fh_config = ({ + T1a_cp_dl = (285, 429); + T1a_cp_ul = (285, 429); + T1a_up = (96, 196); + Ta4 = (110, 180); + ru_config = { + iq_width = 9; + iq_width_prach = 9; + }; + prach_config = { + kbar = 0; + }; + }); +}; + +nrLDPC_coding_aal : { + dpdk_dev : "0000:01:00.0"; + dpdk_core_list : "18-19"; + is_t2 : 1; +}; diff --git a/ci-scripts/xml_files/container_sa_fhi72_liteon_4x4_up2.xml b/ci-scripts/xml_files/container_sa_fhi72_liteon_4x4_up2.xml new file mode 100644 index 0000000000..a871b7eb82 --- /dev/null +++ b/ci-scripts/xml_files/container_sa_fhi72_liteon_4x4_up2.xml @@ -0,0 +1,170 @@ + + + + test-5g-fhi72-4x4-liteon + 100 MHz 4x4 TDD SA LiteON + tasks + + + DeployCoreNetwork + Initialize 5G Core + oc-cn5g-20897-stonechat + + + + DeployWithScript + Deploy CU + stonechat + + /opt/oai-cn5g-fed-develop-2025-jan/ci-scripts/charts/oai-cu/ oaicicd-core-for-fhi72 %%image_tag%% + + + + Pull_Local_Registry + Pull Images from Local Registry + stonechat + oai-gnb-fhi72-t2 + + + + Create_Workspace + Create new Workspace for server 0 + stonechat + + + + Deploy_Object + Deploy DU (TDD/Band78/100MHz/VVDN) in a container + ci-scripts/yaml_files/sa_fhi_7.2_liteon_4x4_gnb + stonechat + 2 + + + + Attach_UE + Attach UE + up2-fhi72 + + + + Ping + Ping: 100 pings in 10 sec + up2-fhi72 + oc-cn5g-20897-stonechat + -c 100 -i 0.1 + 1 + 15 + + + + Iperf + iperf (DL/600Mbps/UDP)(60 sec) + -u -b 600M -t 60 -R -l1428 + up2-fhi72 + 20 + 80 + balanced + oc-cn5g-20897-stonechat + + + + Iperf + iperf (DL/800Mbps/UDP)(60 sec) + -u -b 800M -t 60 -R -l 1428 + up2-fhi72 + 20 + 80 + balanced + oc-cn5g-20897-stonechat + + + + Iperf + Optional iperf (DL/1000Mbps/UDP)(60 sec) + -u -b 1000M -t 60 -R -l 1428 + true + up2-fhi72 + 20 + 80 + balanced + oc-cn5g-20897-stonechat + + + + Iperf + iperf (UL/60Mbps/UDP)(30 sec) + -u -b 60M -t 30 + up2-fhi72 + 20 + 80 + balanced + oc-cn5g-20897-stonechat + + + + Iperf + iperf (DL/TCP)(30 sec) + -t 30 -R + up2-fhi72 + 40 + oc-cn5g-20897-stonechat + + + + Iperf + iperf (UL/TCP)(30 sec) + -t 30 + up2-fhi72 + 10 + oc-cn5g-20897-stonechat + + + + Detach_UE + true + Detach UE + up2-fhi72 + + + + IdleSleep + Sleep + 5 + + + + Undeploy_Object + true + Undeploy DU + ci-scripts/yaml_files/sa_fhi_7.2_liteon_4x4_gnb + stonechat + + oai-du=EndsWithBye + + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + stonechat + oai-gnb-fhi72-t2 + + + + UndeployWithScript + true + Undeploy CU on OC + stonechat + + /opt/oai-cn5g-fed-develop-2025-jan/ci-scripts/charts/oai-cu/ oaicicd-core-for-fhi72 %%log_dir%% + + + + UndeployCoreNetwork + true + Terminate 5G Core + oc-cn5g-20897-stonechat + + + diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_liteon_4x4_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_fhi_7.2_liteon_4x4_gnb/docker-compose.yml new file mode 100644 index 0000000000..2154a00c0b --- /dev/null +++ b/ci-scripts/yaml_files/sa_fhi_7.2_liteon_4x4_gnb/docker-compose.yml @@ -0,0 +1,59 @@ +# SPDX-License-Identifier: MIT + +services: + dpdk-init: + image: docker.io/library/oai-dpdk-init:latest + network_mode: host + container_name: dpdk-init + entrypoint: "/tmp/setup_sriov.sh" + privileged: true + devices: + - /dev/vfio:/dev/vfio/ + volumes: + - ./setup_sriov_liteon.sh:/tmp/setup_sriov.sh + - /lib/modules:/lib/modules + - /usr/lib/modules:/usr/lib/modules + oai-du: + image: ${REGISTRY-oaisoftwarealliance/}oai-gnb-fhi72-t2:${TAG:-develop} + cap_add: + - IPC_LOCK + - SYS_NICE + cap_drop: + - ALL + container_name: oai-gnb + environment: + TZ: Europe/Paris + USE_ADDITIONAL_OPTIONS: --thread-pool 13,14,15,16,17,18,19,20 --loader.ldpc.shlibversion _aal --log_config.global_log_options level,nocolor,utc_time + devices: + - /dev/vfio:/dev/vfio/ + volumes: + - ../../conf_files/gnb-du.sa.band78.273prb.fhi72.4x4-4L-liteon.conf:/opt/oai-gnb/etc/gnb.conf + - /dev/hugepages:/dev/hugepages + # Please change these values based on your system + cpuset: "7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23" + networks: + oai-net: + ipv4_address: 172.21.10.20 + depends_on: + dpdk-init: + condition: service_completed_successfully + healthcheck: + test: /bin/bash -c "/opt/oai-gnb/bin/check-prach-io.sh" + start_period: 15s + start_interval: 500ms + interval: 5s + timeout: 5s + retries: 10 + +networks: + oai-net: + driver: macvlan + name: oai-net + ipam: + config: + - subnet: "172.21.8.0/22" + ip_range: "172.21.10.20/32" + gateway: "172.21.11.254" + driver_opts: + com.docker.network.bridge.name: "oai-net" + parent: bond0 diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_liteon_4x4_gnb/setup_sriov_liteon.sh b/ci-scripts/yaml_files/sa_fhi_7.2_liteon_4x4_gnb/setup_sriov_liteon.sh new file mode 100755 index 0000000000..147fcd5862 --- /dev/null +++ b/ci-scripts/yaml_files/sa_fhi_7.2_liteon_4x4_gnb/setup_sriov_liteon.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# SPDX-License-Identifier: MIT + +set -eu + +IF_NAME=ens2f1 +DPDK_DEVBIND_PREFIX=/usr/local/bin + +ethtool -G $IF_NAME rx 8160 +ethtool -G $IF_NAME tx 8160 +sh -c "echo 0 > /sys/class/net/$IF_NAME/device/sriov_numvfs" +sh -c "echo 2 > /sys/class/net/$IF_NAME/device/sriov_numvfs" +modprobe -r iavf +modprobe iavf +# this next 2 lines is for C/U planes +ip link set $IF_NAME vf 0 mac 00:11:22:33:44:66 vlan 564 spoofchk off mtu 9216 +ip link set $IF_NAME vf 1 mac 00:11:22:33:44:67 vlan 564 spoofchk off mtu 9216 +sleep 1 +# These are the DPDK bindings for C/U-planes on vlan 4 +${DPDK_DEVBIND_PREFIX}/dpdk-devbind.py --unbind 41:11.0 +${DPDK_DEVBIND_PREFIX}/dpdk-devbind.py --unbind 41:11.1 +modprobe vfio-pci +${DPDK_DEVBIND_PREFIX}/dpdk-devbind.py --bind vfio-pci 41:11.0 +${DPDK_DEVBIND_PREFIX}/dpdk-devbind.py --bind vfio-pci 41:11.1 +# These are the DPDK bindings for T2 card +${DPDK_DEVBIND_PREFIX}/dpdk-devbind.py -b vfio-pci 01:00.0 +exit 0