Commit Graph
31013 Commits
Author SHA1 Message Date
Jaroslava Fiedlerova 80ff56c6c7 Merge remote-tracking branch 'origin/dci_alt_size_fix' into integration_2025_w46 (!3729)
DCI 00 alt size fix

DCI size for format 00 and 10 should be equal so we need to compute the size of
the alternative format when computing the size of DCIX0. There was a bug where
the alt_size input (0 in that case) was taken into account also when computing
that alternative size, resulting in an alt_size of 0. Possibly easier to
understand by looking at the code then reading this description.
2025-11-13 14:16:40 +01:00
Jaroslava Fiedlerova 0954c3f6cf Merge remote-tracking branch 'origin/sdap-header-bugfix' into integration_2025_w46 (!3747)
SDAP: guard RX header parsing with enable_sdap and init per-entity

!3519 (merged) refactored the SDAP to use the QFI from the header rather than
pass it to the rx function and got rid of the initialization of QFI to -1.

However, entity roles are stored into the drb2qfi table, and the indexing
implies that the QFI is known.

While in TX it is not an issue since packets are forwarded based on the QFI,
in RX the QFI can only be parsed from the header, therefore if headers are
disabled (--enable_sdap) the QFI is not there and it is wrong to access the
header (buf[0]) and looking for it.

This commit adds enable_sdap to nr_sdap_entity_t and initialize it in
nr_sdap_add_entity() from sdap->role (disabled when NO_SDAP_HEADER).

In nr_sdap_rx_entity(), only parse buf[0] for QFI and derive sdap_ul_rx/
sdap_dl_rx when enable_sdap is true; otherwise, keep offset=0 and forward
payload unchanged.
2025-11-12 21:56:22 +01:00
Jaroslava Fiedlerova 0d106428eb Merge remote-tracking branch 'origin/nr_fix_duplex' into integration_2025_w46 (!3666)
NTN: Fixing variable ULDLduplex issue for NTN bands

- Duplex is assumed to be static but for NTN bands (and also for some non NTN
  bands), it is not static.
- Tx-RX Duplex is defined in section 5.4.4 of 38.101-5 (for NTN) specs v1809
- For example: In NTN-OTA testing, the GEO satellite operator configured in
  band 256 the DL, UL frequencies with duplex of 185Mhz.
2025-11-12 21:54:54 +01:00
Jaroslava Fiedlerova afa55ff951 Merge remote-tracking branch 'origin/fix_nr_ue_ssb_sinr_reporting' into integration_2025_w46 (!3754)
NR UE: correctly provide measured SSB SINR value from PHY to MAC

Fixes: e5ea77f6
2025-11-12 12:40:41 +01:00
Thomas Schlichter 4057cdaa80 NR UE: correctly provide measured SSB SINR value from PHY to MAC
Fixes: e5ea77f629
2025-11-11 15:23:27 +01:00
Guido Casati 7274e7c434 SDAP: guard RX header parsing with enable_sdap and init per-entity
!3519 refactored the SDAP to use the QFI from the header rather
than pass it to the rx function and got rid of the initialization
of QFI to -1.
However, entity roles are stored into the drb2qfi table, and the
indexing implies that the QFI is known. While in TX it is not an
issue since packets are forwarded based on the QFI, in RX the QFI
can only be parsed from the heaedr, therefore if headers are
disabled (--enable_sdap) the QFI is not there and it is wrong to
access the header (`buf[0]`) and looking for it.

This commit adds `enable_sdap` to `nr_sdap_entity_t` and initialize
it in `nr_sdap_add_entity()` from `sdap->role`
(disabled when `NO_SDAP_HEADER`). In `nr_sdap_rx_entity()`, only
parse `buf[0]` for QFI and derive `sdap_ul_rx`/`sdap_dl_rx` when
`enable_sdap` is true; otherwise, keep `offset=0` and forward
payload unchanged.
2025-11-06 19:33:46 +01:00
Jaroslava Fiedlerova 8186e840a3 Merge branch 'integration_2025_w45' into 'develop'
Integration `2025.w45`

* !3736 fix bugs in scope for pdcch, and optimize cpu cost of pdcch decoding
* !3743 NR UE: fix PDCCH LLR indexing for different search space RB sizes
* !3739 Bugfix: save old tunnel info to remain the user plane connection while rolling back to source DU due to handover failure
* !3742 Simplify node management in CI, handle SIGINT
* !3670 PRS bug fix and CI Integration
* !3746 Fix unsigned to signed decoding parameters to allow for 'no affinity'/'no pin' threads to CPUs
* !3738 CI: Add new Jenkinsfiles

Closes #984 and #1021

See merge request oai/openairinterface5g!3744
2025-11-06 16:12:28 +00:00
Jaroslava Fiedlerova 4b8889b95c Merge remote-tracking branch 'origin/ci-add-jenkinsfiles' into integration_2025_w45 (!3738)
CI: Add unified Jenkinsfile for all test pipelines

This MR introduces a single Jenkinsfile to cover all current CI test pipelines
Improvements:
- correct reporting of the start timestamp in the HTML report
- harmonize log collection - always collect as test_logs_${env.BUILD_ID}.zip
2025-11-06 15:32:58 +01:00
Jaroslava Fiedlerova 95e9f4a47c Use a single Jenkinsfile
Combine Jenkinsfile and Jenkinsfile-oc from parrent commit into a single
file.
2025-11-06 13:21:08 +01:00
Jaroslava Fiedlerova 7a233de745 Merge remote-tracking branch 'origin/Fix_thread_affinity' into integration_2025_w45 (!3746)
Fix unsigned to signed decoding parameters to allow for 'no affinity'/'no pin'
threads to CPUs

By default, 'L1_rx_thread_core', 'L1_tx_thread_core', 'ru_thread_core' are set
to '-1' but the values were decoded from config file as unsigned instead of
signed types, thus, it was not allowing to set them with '-1' from config file.
2025-11-06 13:14:03 +01:00
Jaroslava Fiedlerova 50e32cfea5 Merge remote-tracking branch 'origin/prs_bug_fix_and_integrate_to_ci' into integration_2025_w45 (!3670)
PRS bug fix and CI Integration

- Fix the bug in PRS channel estimation while copying memory to compute the
  impulse response
- Integrate PRS testing to CI
2025-11-06 09:36:03 +01:00
Jaroslava Fiedlerova 654e819d90 Merge remote-tracking branch 'origin/cleanup-ci-node' into integration_2025_w45 (!3742)
Simplify node management in CI, handle SIGINT

- Make a single <node> XML step entry common to all XML steps to harmonize code
- Handle SIGINT to make it possible to more easily stop the CI script.
2025-11-06 09:33:04 +01:00
Jaroslava Fiedlerova 5b2b570dfe Merge remote-tracking branch 'origin/fix-up-ho-fail' into integration_2025_w45 (!3739)
Bugfix: save old tunnel info to remain the user plane connection while rolling
back to source DU due to handover failure

This MR closes issue #984 that UE lost the data plane connection while rolling
back to the source DU due to handover failure.
2025-11-06 09:32:21 +01:00
Jaroslava Fiedlerova 89fbe3c783 Merge remote-tracking branch 'origin/issue-1021' into integration_2025_w45 (!3743)
NR UE: fix PDCCH LLR indexing for different search space RB sizes

After !3603 (merged), when multiple search spaces have different CORESET
configurations (different number of RBs), the LLR buffer stride must be
calculated based on the maximum RB size across all search spaces, not the
current search space's RB size.

The LLR buffer is allocated with size based on get_pdcch_max_rbs(), but the
demapping function was using coreset_nbr_rb (current search space) for symbol
stride calculation, causing incorrect LLR extraction when search spaces have
different RB configurations.

This MR tries to fix it.

Closes #1021
2025-11-06 09:29:54 +01:00
luis_pereira87 cf507115e4 Fix unsigned to signed decoding parameters to allow for 'no affinity'/'no pin' threads to CPUs
By default, 'L1_rx_thread_core', 'L1_tx_thread_core', 'ru_thread_core' are set to '-1' but the values were decoded from config file as unsigned instead of signed types, thus, it was not allowing to set them with '-1' from config file
2025-11-05 20:51:02 +00:00
Robert Schmidt d4aac07ae9 Remove write-only code 2025-11-05 11:13:31 +01:00
Jaroslava Fiedlerova c625a95042 CI: add rfsim test with PRS
Use the bash script from a parent commit to verify PRS functionality.
2025-11-05 10:42:37 +01:00
Rakesh Mundlamuri 871b813c12 Modify the script with a retry logic for a failed test and print summary
This commit inputs several distances at once and obtain the summary of
successful and failed tests. We look for the number of successful tests
that are geater than 0. We do that here since we sometimes dont receive
a response for a telnet command from the rfsim although the command
is applied. This is related to the queing telnet commands in the rfsim.

The script for the distances 50, 100 and 150 are called as follows,

./set-and-verify-distance-prs.sh 50 100 150

The summary can be viewed as follows,
==================== SUMMARY ====================
Total tests run : 3
Successful tests: 3
Failed tests    : 0
=================================================
2025-11-05 10:42:37 +01:00
Jaroslava Fiedlerova 0d2212ca38 CI: Extend Custom_Script to accept arguments 2025-11-05 10:42:37 +01:00
rakesh mundlamuriandRobert Schmidt 1dca20ba85 Introduce a bash script to test PRS using estimated ToA
Set RFsim (DL) distance and use PRS to estimate the new distance. This
is verified by comparing the distance set in RFsim with the distance
reported through ToA estimation at the UE.

Note that since RFsim telnet output is asynchronous (it uses a queue
internally), we use grep --max-count 1 to wait for the matching line,
together with ncat --idle 0.3 to keep ncat open for some time. The
--max-count option will terminate grep after the first occurrence. For
this to work reliably, we need to use grep <(echo | ncat) as opposod to
simply echo | ncat | grep, as the latter does not seem to reliably
make grep exit after the occurrence.

Co-authored-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2025-11-05 10:42:37 +01:00
Robert Schmidt 34e002a800 Add get_max_dl_toa() for ciUE telnet module 2025-11-05 10:42:37 +01:00
Robert Schmidt d682b6c512 Add function to read max DL ToA
Protect with mutex to allow reading from another thread.
2025-11-05 10:42:37 +01:00
Robert Schmidt b95b4c09d6 Write DL ToA into circular buffer
In a future commit, we will look up the maximum ToA over the last
transmissions. Introduce a buffer in which we write the last
16 measurements.
2025-11-05 10:42:34 +01:00
Jaroslava Fiedlerova c54b20a56d Merge remote-tracking branch 'origin/bug-scope-pdcch' into integration_2025_w45 (!3736)
fix bugs in scope for pdcch, and optimize cpu cost of pdcch decoding

fix bugs in scope for pdcch, and optimize cpu cost of pdcch decoding by not
processing useless samples in one symbol
2025-11-05 09:13:52 +01:00
alexjiao 7655604d3c NR UE: fix PDCCH LLR indexing for different search space RB sizes
When multiple search spaces have different CORESET configurations
(different number of RBs), the LLR buffer stride must be calculated
based on the maximum RB size across all search spaces, not the
current search space's RB size.

The LLR buffer is allocated with size based on get_pdcch_max_rbs(),
but the demapping function was using coreset_nbr_rb (current search
space) for symbol stride calculation, causing incorrect LLR extraction
when search spaces have different RB configurations.
2025-11-05 00:46:31 +08:00
Chieh-Chun Chen 579d263a9c Bugfix: save old tunnel info to remain the user plane connection while rolling back to source DU due to F1 handover failure 2025-11-04 16:03:41 +01:00
Robert Schmidt f7eaafa835 CI test runner: handle SIGINT
Handle SIGINT and mark any subsequent steps as failed. Receiving SIGINT
a second time will abort the script immediately (as is the case before
this commit).

Note that Python seems to relay the signal to the "controlled" process
(e.g., Ping), which would return immediately with an error. So some
steps like Ping will abort immediately, others (e.g., IdleSleep) will
finish their step, and then the present logic will mark subsequent steps
as failed.
2025-11-04 00:14:27 +01:00
Laurent THOMAS ab14e3ad22 move all antennas comon code of begining of nr_pdcch_channel_estimation to prepare the future move of the antenna loop above the serial call of functions to decode pdcch 2025-11-03 20:33:20 +01:00
Laurent THOMAS f982d9b5df rename a function to what it does (it generate a reference signal) and minor readability changes 2025-11-03 20:24:37 +01:00
Laurent THOMAS 032fc5e9c2 fix bugs in scope for pdcch, and optimize cpu cost of pdcch decoding by not processing useless samples in one symbol 2025-11-03 20:16:41 +01:00
Robert Schmidt 19c6d20b45 Bugfix: "or None" is useless
"or None" would assign if the first term is false-y. But not specifying
it would already lead to the variable being set to None.
2025-11-03 18:53:00 +01:00
Robert Schmidt b0106f27b5 Centralize node for all XML steps
All XML steps take a single node. We can thus "centralize" reading this
parameter in the main loop and pass it to ExecuteActionWithParam().
2025-11-03 18:48:55 +01:00
Robert Schmidt 9e0540fbed Simplify node management in CI
Some CI tasks/commands like Iperf(), Ping() get multiple nodes (via XML
parameter "nodes") to potentially run UEs on different nodes (hosts) at
the same time. However, I argue that this is not good:

- we don't actually use this -- where we specify multiple UEs, it's
  always "localhost localhost..."
- it is inconsistent, as we typically have a single "node", not nodes,
  and there is a possibility to harmonize (see also next commit)
- if we needed it, there would be better ways to achieve the same.
  First, for hardware-based UEs, the ci_infra.yaml can specify different
  UEs. For simulated UEs, it would be feasible to have multiple XML
  steps run in parallel, e.g., in the XML <parallel> tag, which would
  clarify that multiple UEs on different hosts run in parallel
- it reduces code.

Hence, make a single <node> for these XML steps.
2025-11-03 18:46:32 +01:00
Robert Schmidt a5689f5b8c CI: Remove unused code 2025-11-03 18:46:00 +01:00
Jaroslava Fiedlerova b8e249fc4a CI: Add new Jenkinsfiles
Created Jenkinsfiles:
- Jenkinsfile: for stadard test pipelines
- Jenkinsfile-oc: for deployments with OC

These 2 Jenkinsfiles covers all current test pipelines.
2025-11-03 14:01:44 +01:00
Robert Schmidt a72abe3cc8 Refactor dl_toa setting to separate function 2025-11-03 16:50:27 +05:30
rakesh mundlamuri 825c6803ad harmonize IQ samples in prs channel estimation to use c16_t 2025-11-03 16:50:27 +05:30
rakesh mundlamuri 5690aa0fe3 first_half index correction in PRS channel estimation while copying memory
Previously, we were using int16_t for the variable ch_tmp which was later harmonized to use c16_t while leaving <<1. This introduced the bug while accessing the address of the element at first_half of the ch_tmp variable.
2025-11-03 16:50:27 +05:30
Jaroslava Fiedlerova f9b4fe6a94 Merge branch 'integration_2025_w44' into 'develop'
Integration `2025.w44`

* !3721 improvements in formatting and LOGs in DMRS common functions at MAC
* !3725 Handle GTP receiver errors, fix memory leaks, add CU-UP test
* !3726 fix for CSI payload sizes in PUCCH structure at UE
* CI: Adjust attenutation for HO setup
* !3728 Fix for scenario with no CSI report configured for CSI-RS
* !3731 CI: ensure clean iperf3 server startup
* !3592 Refactor PRACH handling at the gNB
* !3682 Refactor DLSCH scheduler
* !3733 Clarify whitespace
* !3706 Change registry name env var content

Closes #1015 and #1014

See merge request oai/openairinterface5g!3727
2025-10-31 15:55:42 +00:00
Jaroslava Fiedlerova 5a6d253863 Merge remote-tracking branch 'origin/changeRegName' into integration_2025_w44 (!3706)
Change registry name env var content

Currently setting REGISTRY="" in a .env file results in docker failing to find
/image-name:tag. This corrects that, so it looks for local images named
image-name:tag.
2025-10-31 16:07:34 +01:00
Jaroslava Fiedlerova aff3c9872f CI: align REGISTRY env var with updated image path format
Following the change to use:
  image: ${REGISTRY-oaisoftwarealliance/}${GNB_IMG:-oai-gnb}:${TAG:-develop}
the REGISTRY variable must now include the trailing slash.
2025-10-31 15:20:34 +01:00
Nick Hedberg e4812c3d8e Allow for null-string REGISTRY names 2025-10-31 15:20:20 +01:00
Robert Schmidt d4045fd87d Merge remote-tracking branch 'origin/clarifiyWhitespace' into integration_2025_w44 (!3727)
Clarify whitespace
2025-10-31 11:33:07 +01:00
Nick Hedberg 330c4fce5d Fix capitalization 2025-10-31 11:31:54 +01:00
Nick Hedberg e6b307bf6e Indent correctly 2025-10-31 11:31:42 +01:00
Robert Schmidt a8de9733e6 Merge remote-tracking branch 'origin/refactor-dlsch' into integration_2025_w44 (!3682)
Refactor DLSCH scheduler

Refactor the DLSCH post processor similarly to what has been done in
!3521  with the goal of saving an additional iteration through all UEs,
hopefully making the DLSCH scheduler faster.

It further includes changes to make working with and debugging multi-UE
operation easier:

- add some measurements in L1 (for total TX/RX time)
- a new option MACRLCs.[0].stats_max_ue to limit the number of UEs in
  the periodic output (default: 8, 0=disable)
- avoid stack overflow in the MAC
- fix the writing of stats to nrMAC_stats.log and nrL1_stats.log when
  the written output reduces by truncating the files
- avoid to schedule retransmission with 0 RBs.
2025-10-30 23:14:08 +01:00
Robert Schmidt 9449f777cc Remove TBS table and recompute on demand 2025-10-30 23:13:53 +01:00
Robert Schmidt 916455f027 Move update_dlsch_buffer() into pf_dl()
This slightly speeds up the scheduler (it e.g., does not need to check
for UEs that have retransmissions), and harmonizes with pf_ul(), which
evaluates (UL) BSR at a similar place within the scheduler.
2025-10-30 23:13:53 +01:00
Robert Schmidt 24399eac2d update_dlsch_buffer() for individual UEs 2025-10-30 23:13:53 +01:00
Robert Schmidt 27a022d6f8 Fix: avoid retransmission with 0 RBs
Check and return, if necessary, that we have enough resources to make
retransmissions. Without, we can asserts in L1, such as

    Assertion (NPRB>0 && (NPRB + RBstart <= BWPsize)) failed!
    In PRBalloc_to_locationandbandwidth0() openairinterface5g/common/utils/nr/nr_common.c:506
    Illegal NPRB/RBstart Configuration (0,51) for BWPsize 51

which indicates that the scheduler requested a transmission with 0 PRBs,
which does not make sense.
2025-10-30 23:13:46 +01:00