Commit Graph
12860 Commits
Author SHA1 Message Date
Jaroslava Fiedlerova 16c5f59e9a Merge remote-tracking branch 'Rakesh_B_B/fix-ngap-time-in-cell' into integration_2026_w02 (!3838)
NR NGAP (N2HO) : Fix Time UE Stayed in Cell IE type and calculation

According to 3GPP TS 38.413, the 'Time UE Stayed in Cell' IE is an
integer ranging from 0 to 4095. This patch updates the data structure
to reflect the correct bit width and implements the dynamic calculation
based on the UE's residence time.

- Change time_in_cell from long to uint16_t in ngap_messages_types.h.
- Replace dummy value with real-time calculation in rrc_gNB_NGAP.c.
- Implement a ceiling of 4095 to comply with the 12-bit protocol limit.

Ref: 3GPP TS 38.413 Section 9.3.1.97
2026-01-08 12:16:48 +01:00
Jaroslava Fiedlerova 82bccfb9fe Merge remote-tracking branch 'origin/fix-nhcc-reestablishment' into integration_2026_w02 (!3770)
Refactor key derivation logic to properly handle Next Hop (NH) chain
synchronization according to 3GPP TS 33.501 specifications for both RRC
Reestablishment and Master Key Update procedures.

Changes in rrc_gNB.c:
- Clarify key derivation in rrc_gNB_generate_RRCReestablishment by explicitly
  selecting base key (NH or KgNB) based on nh_ncc value
- Add comment explaining vertical vs horizontal derivation logic

Changes in rrc_UE.c:
Refactored the NH chain synchronization and key derivation code to match
TS 33.501 terminology:
- nr_sync_nh_chain(): Common helper to synchronize NH parameter chain per
  TS 33.501 Annex A.10, supporting both Master Key Update and RRC Reestablishment
  procedures
- nr_derive_kgnb_horizontal(): Derive KNG-RAN* from current KgNB when NCC values
  match (horizontal derivation per TS 33.501 A.11/A.12)
- nr_derive_kgnb_vertical(): Derive KNG-RAN* from synchronized NH after NH chain
  sync (vertical derivation per TS 33.501 A.11/A.12)
- nr_update_kgnb_from_ncc(): Unified function implementing TS 33.501 6.9.2.3.4
  logic for updating KgNB based on received nextHopChainingCount
- Refactor as_security_key_update(): Use new nr_update_kgnb_from_ncc() helper
  function for cleaner, more maintainable code
- Fix nr_rrc_ue_process_rrcReestablishment(): Properly handle received
  nextHopChainingCount and update KgNB using unified helper function
- Replaced the previous nr_rrc_nh_update() helper with these functions to
  improve clarity and alignment with the specification.
- Add debug logging for key derivation process

Key NAS deriver utils:
- update derive_kgnb documentation and protect input keys with const attribute

Closes #857
2026-01-06 20:01:57 +01:00
Rakesh B B e7bcca88bb Add time units for better clarity and readability. 2026-01-06 15:01:17 +05:30
Jaroslava Fiedlerova cd19acd65a Merge remote-tracking branch 'origin/fix-sib1-tda-check' into integration_2026_w02 (!3840)
Fix missing return statements in SIB1 TDA validation

Provides fix to commit d7cc1c2c in MR !3641 (merged).
2026-01-06 09:45:58 +01:00
Rakesh BB d5cf363bfe NR NGAP: Fix Time UE Stayed in Cell IE type and calculation
According to 3GPP TS 38.413, the 'Time UE Stayed in Cell' IE is an
integer ranging from 0 to 4095. This patch updates the data structure
to reflect the correct bit width and implements the dynamic calculation
based on the UE's residence time.

- Change time_in_cell from long to uint16_t in ngap_messages_types.h.
- Replace dummy value with real-time calculation in rrc_gNB_NGAP.c.
- Implement a ceiling of 4095 to comply with the 12-bit protocol limit.

Ref: 3GPP TS 38.413 Section 9.3.1.97
2026-01-06 12:51:39 +05:30
Jaroslava Fiedlerova 692b3cf99c Fix missing return statements in SIB1 TDA validation
Provides fix to commit d7cc1c2c1d (MR !3641).
Addresses an issue with low DL throughput in 100 MHz 2×2 test case observed
in CI.
2026-01-05 14:54:44 +01:00
francescomani 90d4d2726c cleanup of functions in nr_ue_power_procedures (no code change, just moving things around) 2025-12-26 09:11:09 +01:00
francescomani a623908518 declare static some static functions in dci procedure file 2025-12-26 09:11:09 +01:00
francescomani 98530b5b70 cleanup of functions in nr_ue_procedures (no code change, just moving things around) 2025-12-26 09:11:08 +01:00
francescomani 75367249c5 cleanup of functions in nr_ue_scheduler (no code change, just moving things around) 2025-12-26 09:07:46 +01:00
Robert Schmidt 26d0246059 Merge remote-tracking branch 'origin/apply_new_CellGroup_later' into integration_2025_w52 (!3804)
gNB: apply new NR_CellGroupConfig when RRCReconfiguration is acknowledged

Currently part of the NR_CellGroupConfig is already applied when the
RRCReconfiguration message is created. This is not correct and this MR
fixes this by applying it when the RRCReconfiguration message is
acknowledged.

With this fixed, we also move disabling the feedback (in case
disable_harq is used) from the RRCSetup message to the
RRCReconfiguration message.

Closes: #1002
2025-12-23 18:21:27 +01:00
Robert Schmidt 6a7ec3498a Merge remote-tracking branch 'origin/autumatic_sib1_tda' into integration_2025_w52 (!3641)
automatic selection of SIB1 TDA
2025-12-23 18:20:06 +01:00
Robert Schmidt 668ff6a4c3 Merge remote-tracking branch 'origin/fix_coreset_start' into integration_2025_w52 (!3819)
CORESET start multiple of 6 fix

According to the standard any CORESET (except CSET0) would always start
from the first common resource block index which is multiple of 6 in the
BWP. This was not taken into account in the code. The BWP switch CI test
is modified to test a BWP start not multiple of 6.

An exception is the case where rb-Offset-r16 parameter is set, but can't
be used at gNB for FAPI compatibility.

Closes: #1037
2025-12-23 09:22:10 +01:00
Robert Schmidt 8463ebf24b Merge remote-tracking branch 'origin/nr_ue_sib19_doppler' into integration_2025_w52 (!3663)
NR UE: calculate DL and UL Doppler based on SIB19 information in NTN mode, fixing LEO reestablishment
2025-12-23 09:21:42 +01:00
francescomani d7cc1c2c1d computing SIB1 TDA (for each SSB) only in the first iteration and stored for the rest of the run 2025-12-23 09:20:47 +01:00
francescomani 61d0559445 take into account effective CSET start RB to define frequencyDomainResources 2025-12-22 17:31:29 +01:00
francescomani 2a3a27a48f fix CORESET start PRB according to standard at OAI gNB 2025-12-22 17:31:26 +01:00
francescomani 74690ceb1d fix CORESET start PRB according to standard at OAI UE 2025-12-22 17:29:09 +01:00
francescomani 2454a2ea1e automatic selection of SIB1 TDA 2025-12-20 08:54:11 +01:00
Guido Casati 5c601b7d62 Fix RRCReestablishment key derivation to use horizontal derivation
Per TS 33.501 6.9.2.3.4 and Fig 6.9.2.1.1-1, when sending
RRCReestablishment with nextHopChainingCount, the gNB is staying at
the same NCC level (not advancing). Therefore, horizontal derivation
from the currently active KgNB must be used, not vertical derivation
from NH.

Vertical derivation (from NH) is only used when advancing to a new
NCC level, which happens during handover or masterKeyUpdate procedures.

The previous implementation incorrectly used vertical derivation from
NH whenever nh_ncc > 0, which caused key mismatch between gNB and UE
during reestablishment after handover, leading to integrity check
failures.

This fix ensures both gNB and UE use horizontal derivation when
nextHopChainingCount matches the current NCC level, aligning with the
specification's "virtual NH at NCC=0" model where:
- Horizontal derivation = derive KNG-RAN* from currently active KgNB
- Vertical derivation = derive KNG-RAN* from NH (only when advancing NCC)
2025-12-19 17:16:17 +01:00
Guido Casati 4db49a8767 RRC: Implement proper NH chain synchronization for RRC Reestablishment
Refactor key derivation logic to properly handle Next Hop (NH) chain
synchronization according to 3GPP TS 33.501 specifications for both
RRC Reestablishment and Master Key Update procedures.

Changes in rrc_gNB.c:
- Clarify key derivation in rrc_gNB_generate_RRCReestablishment by
  explicitly selecting base key (NH or KgNB) based on nh_ncc value
- Add comment explaining vertical vs horizontal derivation logic

Changes in rrc_UE.c:
- Add nr_sync_nh_chain(): Common helper to synchronize NH parameter
  chain per TS 33.501 Annex A.10, supporting both Master Key Update
  and RRC Reestablishment procedures
- Add nr_derive_kgnb_horizontal(): Derive KNG-RAN* from current KgNB
  when NCC values match (horizontal derivation per TS 33.501 A.11/A.12)
- Add nr_derive_kgnb_vertical(): Derive KNG-RAN* from synchronized NH
  after NH chain sync (vertical derivation per TS 33.501 A.11/A.12)
- Add nr_update_kgnb_from_ncc(): Unified function implementing TS 33.501
  6.9.2.3.4 logic for updating KgNB based on received nextHopChainingCount
- Refactor as_security_key_update(): Use new nr_update_kgnb_from_ncc()
  helper function for cleaner, more maintainable code
- Fix nr_rrc_ue_process_rrcReestablishment(): Properly handle received
  nextHopChainingCount and update KgNB using unified helper function
- Add debug logging for key derivation process

Key NAS deriver utils:
- update derive_kgnb documentation and protect input keys with const attribute
2025-12-19 17:14:23 +01:00
Thomas Schlichter 1f8fe224a0 NR UE: correctly apply Doppler and TA for NTN target cell
Make sure to apply Doppler and TA not directly when receiving the target cell ntn_config,
but apply Doppler just before the initial sync, and the TA after the initial sync when
we have tha actuel cell frame and slot numbers.
2025-12-19 16:42:52 +01:00
Thomas Schlichter 3dcaacb63b NR UE FAPI: provide ntn_config as part of phy_config.config_req instead of a dedicated scheduled_response dl_config PDU
We need the ntn_config when reconfiguring the PHY layer for a new initial sync,
e.g. for calculating the DL Doppler frequency.

As a dedicated scheduled_response dl_config PDU it reaches the PHY layer too late,
as part of the phy_config.config_req it reaches the PHY layer in time with the
other configuration values.
2025-12-19 16:42:47 +01:00
Thomas Schlichter ae12190a9e NR UE: improve log output in MAC 2025-12-19 16:41:02 +01:00
Thomas Schlichter b59bcaf494 NR UE: provide velocity vector down to nr-ue.c, preparing for Doppler calculation 2025-12-19 16:38:59 +01:00
luis_pereira87 0a0dfae333 Restore previous 'local_bwp_id' on RRCReestablishment 2025-12-19 11:02:39 +01:00
Thomas SchlichterandLuis Pereira e74792586f fix BWP switching
Co-authored-by: Luis Pereira <lpereira@allbesmart.pt>
2025-12-19 11:02:37 +01:00
Thomas Schlichter 21722a9fa1 gNB: fix use after free of old UE->sc_info.csi_MeasConfig 2025-12-19 11:01:27 +01:00
Thomas Schlichter 25cd85fa68 gNB: apply new NR_CellGroupConfig when reconfiguration is complete 2025-12-19 10:59:51 +01:00
Thomas Schlichter 9e434d60a5 gNB: move downlinkHARQ_FeedbackDisabled_r17 from initial spCellConfig to spCellConfigDedicated
This is a preparation for configuring disabled HARQ feedback only for UEs supporting it.
2025-12-19 10:50:58 +01:00
Jaroslava Fiedlerova e2a305825c Merge remote-tracking branch 'origin/Reset_outdated_PUCCHs' into integration_2025_w51 (!3813)
Reset outdated PUCCHs to avoid Assertion caused by non-processed and
active PUCCHs

When there is real-time issues in L1 it may happen that the scheduler
misses/skips some slots, thus, L2 not processing and not freeing some
structures like PUCCH. This commit avoids the Assertion by resetting
any Active outdated PUCCH
2025-12-17 15:25:30 +01:00
Jaroslava Fiedlerova 511fd29235 Merge remote-tracking branch 'origin/NR_SIB19_timer_fix' into integration_2025_w51 (!3777)
UE NTN : Fix in case SIB19 periodicity is greater than 2 secs

This was observed when testing OAI NTN UE against a third party gNB (UXM).
LEO SIB19 periodicity of > 2000 ms was used, in which case T430 timer expires
before SIB19 is re-read. This fix handles the case where SIB19 periodicity >
2secs, such that SIB19 is re-read in time and T430 timer does not expire.
2025-12-17 10:15:43 +01:00
Jaroslava Fiedlerova ff524c0380 Merge remote-tracking branch 'origin/fapi-beamid' into integration_2025_w51 (!3715)
Pass beam ID as per FAPI v222.10

This MR
1. Sets MSB of beam ID when passing beam ID to 7.2 radio
2. Modifies phytest scheduler to allocate SSBs on different beams
3. Introduce new MAC config parameter for beam mode to specify HiPHY or LoPHY
   beamforming
2025-12-17 10:11:22 +01:00
Raghavendra Dinavahi 1cca7f090e UE NTN: changed handling of SIB19 periodic reception 2025-12-16 15:50:56 +01:00
Raghavendra Dinavahi 6900edbf92 UE NTN: Fix in case SIB19 periodicity is greater than 2 secs 2025-12-16 14:00:09 +01:00
francescomani c1747a8109 phy: remove unnecessary vendor extension fields
When doing analogue beamforming, the beam ID for a pre-defined beam
table is passed directly to RU and there is no need to store the beam
table in PHY.
2025-12-15 14:40:44 +00:00
Sakthivel Velumani 644579a4cf clean-up: rename functions
Rename few functions and array related to beam index storing and
allocation. Reduce code duplication in function to get ssb index
bitmap.
2025-12-15 14:40:42 +00:00
Sakthivel Velumani 830d619d3e mac: allocate PDSCH on beams in phytest 2025-12-15 14:35:50 +00:00
Sakthivel Velumani c288f84651 mac: fix fapi beam id
Set MSB of fapi beam ID based on flag for beamforming done in hiPHY or
loPHY.
2025-12-15 14:35:50 +00:00
Sakthivel Velumani 15e59665e6 mac: change array beam_allocation to int16_t
int16_t is sufficient to hold beam_id and -1 if not allocated. Following
commits will bring changes to only pass LSB 15 bits as beam_id to PHY.
2025-12-15 14:35:50 +00:00
Sakthivel Velumani 35e5cb69d1 clean-up: fix code repetition 2025-12-15 14:35:50 +00:00
Bartosz Podrygajlo 26879d5616 Add two missing include guards 2025-12-15 15:27:23 +01:00
luis_pereira87 71e23b12c2 Reset outdated PUCCHs to avoid Assertion caused by non-processed and active PUCCHs
When there is real-time issues in L1 it may happen that the scheduler misses/skips some slots, thus, L2 not processing and not freeing some structures like PUCCH.
This commit avoids the Assertion by resetting any Active outdated PUCCH
2025-12-12 16:48:24 +00:00
Jaroslava Fiedlerova be08d655b1 Merge remote-tracking branch 'origin/fix_rach_occasions' into integration_2025_w50 (!3798)
Fix for computation of PRACH occasions and association period
2025-12-10 14:23:00 +01:00
francescomani 55c8a7bef0 rename max_association_period to association_period to better reflect the role of the field 2025-12-09 13:45:25 +01:00
francescomani f2a7fb5336 fix computation of RA occasions and association period in gNB 2025-12-09 13:45:21 +01:00
francescomani 63f3fb55ae Merge remote-tracking branch 'origin/ue_ho_improve' into integration_2025_w50 2025-12-09 11:06:52 +01:00
Jaroslava Fiedlerova e44b17668c Merge remote-tracking branch 'origin/nr_ue_sib19_ta' into integration_2025_w50 (!3638)
NR UE: calculate TA based on SIB19 information in NTN mode, if autonomous TA is not enabled

To achieve the goal, the hyper frame number (HFN) is introduced at the NR UE
PHY, MAC and RRC layers.

Besides this, we also implemented an orbit propagation to improve the accuracy
of N_UE_TA_adj, and a fix to keep the N_TA from RAR and MAC CE.

Fixes #981
2025-12-08 12:04:31 +01:00
Robert Schmidt e5050416e4 Merge remote-tracking branch 'origin/bwp_switch_fix' into integration_2025_w49 (!3660)
Fixes for BWP switching

This MR fixes some issues when performing BWP switching via
reconfiguration. It also adds a CI test for BWP switching.  # Please
enter a commit message to explain why this merge is necessary,
2025-12-03 17:31:22 +01:00
Robert Schmidt f46ddb6aa8 Fix: CFRA: UE can always use dedicated search space
In all cases (CFRA in SA for HO, or CFRA in NSA/do-ra for access), the
UE has the full configuration already. We can therefore directly switch
to a dedicated search space, as it is already known to the UE.
2025-12-03 17:22:06 +01:00