1. 01 Oct, 2025 8 commits
  2. 29 Sep, 2025 5 commits
  3. 25 Sep, 2025 2 commits
    • Jaroslava Fiedlerova's avatar
      Merge branch 'integration_2025_w39' into 'develop' · 5e5f79e9
      Jaroslava Fiedlerova authored
      Integration `2025.w39`
      
      * !3582 replace bad DCI by specific message for each case and add checks for bad...
      * !3595 Implementing the option to have more than 1 RSRP in CSI report
      * !3640 Code cleanup (SRS, config files and more)
      * !3654 Extend t300 in multi_ue rfsim testcase
      * !3650 NR UE improvements for scheduling ACK/NACK for MSG4
      * !3652 In ReconfigurationWithSync, make sure epochTime_r17 present if there is a ntn_Config_r17
      * !3653 NR UE: in nr_ue_scheduler.c set LCID_buffer_remain to 0 if RLC indicates not more bytes in buffer
      * !3549 Switch to new (internal) registry
      * !3513 Improvements to RRC PDU session and DRB handling logic
      
      Closes #995 and #997
      
      See merge request oai/openairinterface5g!3658
      5e5f79e9
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/rrc-pdusession-handling-improvements'... · d10fa9f6
      Jaroslava Fiedlerova authored
      Merge remote-tracking branch 'origin/rrc-pdusession-handling-improvements' into integration_2025_w39 (!3513)
      
      Improvements to RRC PDU session and DRB handling logic
      
      This merge request introduces a major simplification and cleanup of the gNB RRC
      PDU Sessions and DRBs handling logic. The core goals of this work are to:
      
      - Replace fixed-size PDU Session, DRBs and QoS arrays with dynamic containers
      - Simplify and modularize helper functions for session/DRB management
      - Prepare for further refactoring of the PDU Session state machine
      - Improve code safety and maintainability through better bounds checking
      d10fa9f6
  4. 24 Sep, 2025 20 commits
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/switch-new-registry' into integration_2025_w39 (!3549) · 08812063
      Jaroslava Fiedlerova authored
      Switch to new (internal) registry
      
      Switch to a bigger registry
      08812063
    • Guido Casati's avatar
      Add tests for RRC radio bearers lib · e6d8d6a0
      Guido Casati authored
      e6d8d6a0
    • Guido Casati's avatar
      Refactor DRB release handling to use actual DRB IDs · c99f836a
      Guido Casati authored
      - Replace simple counter-based DRB ID assignment with actual DRB ID lookup
      - Add nested loop to iterate through DRBs for each PDU session to be release
      - Improve logic flow with early continue for non-matching PDU sessions
      
      This ensures DRB release list contains correct DRB IDs that correspond to actual DRB entities
      c99f836a
    • Guido Casati's avatar
      PDU session release: refactor NGAP PDU Session Release command/response · 9bf79cd2
      Guido Casati authored
      * There is no IE corresponding to PDU sessions failed to release
        in the PDU SESSION RESOURCE RELEASE RESPONSE message. This was removed
        and the corresponding code was refactored and cleaned up.
      * In the Release Command handler, only established PDU Session are set to be
        released. The Response message is filled accordingly.
      9bf79cd2
    • Guido Casati's avatar
      Refactor DRB and QoS handling: centralize configuration logic · 6ed08f15
      Guido Casati authored
      Motivation:
      The previous architecture had several issues:
      - Duplicate DRB generation logic in generateDRB() and generateDRB_ASN1()
      - Embedded SDAP/PDCP configs in drb_t created tight coupling
      - No clear separation between RRC internal state and ASN.1 encoding
      - Maintenance burden due to duplicated configuration logic
      
      New Architecture:
      - drb_t now only stores DRB-specific data (ID, PDU session ID, PDCP config)
      - SDAP configuration moved to PDU session level (following PDCP design pattern)
      - ASN.1 encoding helpers (nr_rrc_build_*_config_ie()) handle conversion
      - Single source of truth for DRB creation in RRC via nr_rrc_add_drb()
      
      Key changes:
      - Store nr_sdap_configuration_t per PDU session
      - Simplified drb_t structure: removed embedded SDAP/PDCP configs, added pdusession_id
      - New helper: nr_rrc_build_sdap_config_ie()
      - Updated createDRBlist() to use new helper functions and proper DRB ID lookup
      - Refactored trigger_bearer_setup() to use nr_rrc_add_drb() and fill_e1_drb_to_setup()
      - Removed generateDRB() and generateDRB_ASN1() functions
      - Updated set_bearer_context_pdcp_config() to return config by value
      - Added SDAP configuration header file for type definitions
      
      This eliminates code duplication, improves maintainability, and creates
      a cleaner separation between RRC state management and ASN.1 encoding.
      6ed08f15
    • Guido Casati's avatar
      Refactor QoS parameter types and consolidate definitions · 50923823
      Guido Casati authored
      - Move QoS-related enums and structures from ngap_messages_types.h to 5g_platform_types.h
      - Replace ngap_* QoS types with generic qos_* types for better reusability
      - Update field names from allocation_retention_priority to arp for consistency
      - Update all references across RRC and NGAP modules to use new type names
      - Remove duplicate QoS type definitions from NGAP-specific header
      
      This improves code organization by centralizing QoS parameter definitions
      in a common platform types header and eliminates NGAP-specific naming
      in favor of more generic, reusable type definitions.
      50923823
    • Guido Casati's avatar
      Introduced MAX_QOS_FLOWS (64) and replaced QOSFLOW_MAX_VALUE · 7254e59d
      Guido Casati authored
      The maximum number of QoS flows is 64.
      
      - Replace QOSFLOW_MAX_VALUE with MAX_QOS_FLOWS constant
      - Move MAX_QOS_FLOWS definition to common/platform_constants.h
      - Remove duplicate QOSFLOW_MAX_VALUE definition from ngap_messages_types.h
      
      This improves maintainability by centralizing the QoS flow limit constant
      and eliminates duplicate definitions across different header files.
      7254e59d
    • Guido Casati's avatar
      Refactor ASN.1 PDCP configuration building · 1711b1b4
      Guido Casati authored
      - Limit scope of get_default_rbconfig function: from asn1_msg.c/.h to rrc_gNB_nsa.c where it's used
      - Create new rrc_gNB_asn1.c/h files for ASN.1 utility functions: they can be used in other RRC files
      - Add nr_rrc_build_pdcp_config_ie function for building PDCP configuration IEs
      - Update get_default_rbconfig to use the new PDCP config builder
      - Add rrc_gNB_asn1.c to CMakeLists.txt build configuration
      1711b1b4
    • Guido Casati's avatar
      45d989ec
    • Guido Casati's avatar
      Adopt dynamic seq_arr in DRB handling (RRC PDU Session) · 7fa0ebb6
      Guido Casati authored
      The previous DRB management relied on a fixed-size array (established_drbs[MAX_DRBS_PER_UE])
      and manual status tracking using DRB_ACTIVE/INACTIVE flags. This approach was inefficient,
      and made assumptions about DRB ID allocation that do not generalize well
      to dynamic procedures like bearer modification or removal.
      
      * Replace fixed-size array established_drbs[] with dynamic
        seq_arr_t *drbs in gNB_RRC_UE_t
      * Refactor get_drb() and added nr_rrc_add_drb() with clean abstractions
        using find and seq_arr lib
      * Updated all DRB-related logic (e.g., generateDRB,
        F1AP/E1AP tunnel config, reestablishment, mobility) to use seq_arr.
      * Removed status field and DRB_ACTIVE/INACTIVE logic: list presence implies active
      * DRB ID allocation now tracked via seq_arr size : simplifies DRB management and
        avoids DRB ID–indexed assumptions: code assumed DRB IDs mapped directly to
        array indices: established_drbs[drb_id - 1]. This could break when:
        DRB IDs are not sequential, DRBs are removed and re-added, or there are gaps in IDs
      7fa0ebb6
    • Guido Casati's avatar
      Cleanup: remove unused cp_pdusession · f15af772
      Guido Casati authored
      The function is no longer relevant in the new design.
      f15af772
    • Guido Casati's avatar
      Adopt dynamic seq_arr in PDU Session handling (RRC PDU Session) · 5bcc9b9e
      Guido Casati authored
      The RRC PDU Session struct is converted from a fixed-size array
      to a dynamically sized seq_arr. This improves flexibility and
      simplifies session management by eliminating arbitrary size limits
      and enabling dynamic addition/removal of PDU sessions.
      
      Helper functions and loops have been adapted to use the seq_arr API.
      This change is a step toward more robust and maintainable handling
      of PDU sessions in the gNB RRC layer.
      
      The "status" state machine remains untouched in this commit and
      is refactored in a later commit.
      
      Also:
      
      * add macro to push to seq_arr and return the new element
      * move initialization of xid (RRC PDU Session struct) to
        find_pduSession (temporary, will be finalized in a later
        commit) since with the new seq_arr design the initialization
        is no longer possible in the UE context generation (also
        does not belong to it, initialize when adding a new PDU Session)
      5bcc9b9e
    • Guido Casati's avatar
      Refactoring: add utility function to fill NG PDU Session Setup item · e4a910f0
      Guido Casati authored
      * fills from stored setup PDU Session in RRC list
      * reduces duplicated code
      e4a910f0
    • Guido Casati's avatar
      bd41e8f8
    • Guido Casati's avatar
      Refactoring: fix inconsistency in nr_sdap_delete_entity · ae1de1ae
      Guido Casati authored
      The function was printing a "not found" error message even in the case
      the return value was set to "true". Return directly true/false.
      
      This is relevant in PDU Session Release procedures.
      ae1de1ae
    • Guido Casati's avatar
      Enable multiple PDU Sessions in handover request logic · 42a9f2f0
      Guido Casati authored
      - Process all PDU sessions in handover request instead of only the first one
      - Add DevAssert for bounds checking on nb_of_pdusessions
      - Fix logic error where multiple PDU sessions were ignored in handover scenarios
      42a9f2f0
    • Guido Casati's avatar
      Cleanup handover required transfer IE · 9a4fd1bf
      Guido Casati authored
      Previously, the RRC layer was incorrectly allocating stack memory for the ho_required_transfer field and passing it to NGAP, however it was not used. The IE is mandatory but contains only 1 optional IE, therefore is encoded in the NG message with empty content.
      
      Changes:
      - Remove unnecessary ho_required_transfer field from pdusession_resource_t definition, the IE is encoded anyway with empty content. If Direct Forwarding Path Availability is needed at any stage in the future it can be added to pdusession_resource_t and filled in RRC.
      - Add clarifying comment about empty HandoverRequiredTransfer structure
      9a4fd1bf
    • Guido Casati's avatar
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/fix_wrong_nrue_bsr' into integration_2025_w39 (!3653) · 7907b80a
      Jaroslava Fiedlerova authored
      NR UE: in nr_ue_scheduler.c set LCID_buffer_remain to 0 if RLC indicates not
      more bytes in buffer
      
      If the RLC indicates that there is no more data in the buffer, also the
      scheduler's LCID_buffer_remain should be set to 0. Else the UE sends BSR
      indicating it has data to be transmitted. The gNB would then unnecessarily
      schedule UL for this UE, which would not be used, as there is no actual data
      to be transmitted.
      7907b80a
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/fix_issue_995' into integration_2025_w39 (!3652) · 8885d391
      Jaroslava Fiedlerova authored
      In ReconfigurationWithSync, make sure epochTime_r17 present if there is a ntn_Config_r17
      
      Fixes #995
      8885d391
  5. 23 Sep, 2025 5 commits