- 01 Oct, 2025 8 commits
-
-
calvin_peyron authored
-
calvin_peyron authored
-
calvin_peyron authored
-
calvin_peyron authored
-
calvin_peyron authored
-
calvin_peyron authored
-
Laurent THOMAS authored
-
calvin_peyron authored
-
- 29 Sep, 2025 5 commits
-
-
calvin_peyron authored
-
Laurent THOMAS authored
-
calvin_peyron authored
-
Robert Schmidt authored
[ci] Fix MissingPropertyException - COTS-UE by binding OAI_Registry globally See merge request oai/openairinterface5g!3672
-
Shubhika Garg authored
`def` creates a variable local to the script object, not automatically visible inside helper functions. This fixes the following exception in Jenkins: Found unhandled groovy.lang.MissingPropertyException exception: No such property: OAI_Registry for class: groovy.lang.Binding
-
- 25 Sep, 2025 2 commits
-
-
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
-
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
-
- 24 Sep, 2025 20 commits
-
-
Jaroslava Fiedlerova authored
Switch to new (internal) registry Switch to a bigger registry
-
Guido Casati authored
-
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
-
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.
-
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.
-
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.
-
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.
-
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
-
Guido Casati authored
-
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
-
Guido Casati authored
The function is no longer relevant in the new design.
-
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)
-
Guido Casati authored
* fills from stored setup PDU Session in RRC list * reduces duplicated code
-
Guido Casati authored
-
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.
-
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
-
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
-
Guido Casati authored
-
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.
-
Jaroslava Fiedlerova authored
In ReconfigurationWithSync, make sure epochTime_r17 present if there is a ntn_Config_r17 Fixes #995
-
- 23 Sep, 2025 5 commits
-
-
Guido Casati authored
- Upgrade PDU session counters from uint8_t to uint16_t in ngap_messages_types.h Co-authored-by:Assistant <assistant@example.com>
-
Robert Schmidt authored
-
francescomani authored
-
Thomas Schlichter authored
While a logical channel is suspended, we should not consider it in the BSR, as we cannot transmit any data from it.
-
Jaroslava Fiedlerova authored
Extend t300 in multi_ue rfsim testcase Extend t300 to 1000 to increase the time the gNB has to handle MSG3. Hopefully this prevents the UEs from timing out after MSG3. Add UE id to timer timeout LOGs so the UE behavior can be traced through the stack.
-