1. 15 Nov, 2025 2 commits
    • Robert Schmidt's avatar
      Merge remote-tracking branch... · b57495b3
      Robert Schmidt authored
      Merge remote-tracking branch 'origin/fix_NR_RLC_Config_during_RRCReestablishment' into integration_2025_w46 (!3760)
      
      gNB: modify RLC configuration applied for SRB1 during RRCReestablishment
      
      TS 38.331 clause 5.3.7.4 specifies to apply the configuration defined in
      9.2.1 for SRB1 at UE side. This implies that the gNB also has to apply
      sn_field_length = 12, but there are no implications on the other RLC
      parameters.
      
      As wrong timer values break SRB1 e.g. for long RTT NTN scenarios, this
      commit switches to using the RLC timer values provided in the
      configuration file. Currently we still set poll_pdu, poll_byte and
      max_retx_threshold to the values defined in 9.2.1, but this can be
      changed.
      b57495b3
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/refactor-imscope' into integration_2025_w46 (!3748) · 946810e3
      Robert Schmidt authored
      Refactor imscope
      
      This MR refactors imscope by introducing changes to the default layout
      in the config file imgui.ini. The global settings are moved to a new
      menu item. This modified layout is intended as a suggestion subject to
      change based on feedback. This MR also adds PDCCH LLR and IQ plots to
      the UE scope and set axes to AutoFit by default.
      
      The MR has a screenshot of the new layout.
      946810e3
  2. 14 Nov, 2025 38 commits
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/remove-sched-response-doc' into integration_2025_w46 (!3757) · d3026267
      Robert Schmidt authored
      Remove schedule response and update L1 threading documentation
      
      This merge requests removes the somewhat superfluous "schedule response"
      mechanism. "schedule response" was run after running the scheduler
      itself and copied various FAPI messages into a global msgDataTx
      structure from which the various TX/RX jobs were triggered. It is not
      necessary, though, given that the scheduler is run inside the tx_func()
      (running the TX jobs of the L1), and so the scheduler output FAPI
      messages can directly be read into a variable of the existing
      NR_Sched_Rsp_t type. This allows to delete a couple of hundred lines of
      code (while retaining functionality), and simplifies the msgDataTx type
      (which is still there to trigger TX job (including the scheduler) from
      the ru thread).
      
      In short, prior, there was this call chain:
      
      - tx_func() calls run_scheduler_monolithic() (through fptr
        NR_slot_indication())
        - get some memory through allocate_sched_response() which has enough
          space for NR_Sched_Rsp_t type variable
        - call the scheduler and fill the variable
        - call nr_schedule_response() (through fptr NR_schedule_response())
          which copies into L1: to msgDataTx for TX, to separate structures
          for RX
      
      this is changed to
      
      - tx_func() runs one message at a time, hence we can use memory in the
        data segment for NR_Sched_Rsp_t. It calls run_scheduler_monolithic()
        through the fptr
        - pointers into NR_Sched_Rsp_t are passed to the scheduler, which
          fills as before
        - we return, memory is in its right place and does not need an extra
          copy.
      
      Additionally, this merge request updates documentation on threading and
      cleans up some unused code along the way.
      d3026267
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/logging-improvements' into integration_2025_w46 (!3751) · d8f5c9f1
      Jaroslava Fiedlerova authored
      Update log header format to align log output
      
      The new format:
      - left-aligns the log header name and enforces a minimum width of 6 characters,
        padding shorter names with spaces while allowing longer names to be printed in
        full
      - shortens UTC timestamp
      - align function names to 32 characters
      
      Example output:
      
      [19:51:34.647930] [NGAP]   I (ngap_gNB_decode_initiat:100)   Handover Resource Allocation initiating message
      [19:51:34.648539] [NGAP]   D (decode_ng_handover_requ:267)   AllowedNSSAI.list.count 2
      [19:51:34.648586] [NGAP]   I (ngap_gNB_handle_handove:728)   Received NG Handover Request from AMF OAI-AMF (ID=1)
      [19:51:34.648627] [NR_RRC] I (rrc_gNB_process_Handove:1199)  Received Handover Request (on NR Cell ID=11111111, PCI=1)
      [19:51:34.648647] [NR_RRC] A (rrc_gNB_create_ue_conte:230)   [--] (cellID 0, UE ID 1 RNTI ffff) Create UE context: CU UE ID 1 DU UE ID 4294967295 (rnti: ffff, random ue id ffffffffffffffff)
      [19:51:34.648659] [NR_RRC] A (set_UE_security_algos:692)     [--] (cellID 0, UE ID 1 RNTI ffff) Selected security algorithms: ciphering 0, integrity 2
      d8f5c9f1
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/UE_issues' into integration_2025_w46 (!3750) · 517a1403
      Jaroslava Fiedlerova authored
      Handling newly opened UE issues
      
      Closes #1025 #1024 #1026 #1031 #1030
      517a1403
    • Robert Schmidt's avatar
      Update documentation FAPI · bd8f088f
      Robert Schmidt authored
      bd8f088f
    • Robert Schmidt's avatar
      Rewrite doc/SW-archi-graph.md · 0713b2f6
      Robert Schmidt authored
      0713b2f6
    • Robert Schmidt's avatar
      15441c74
    • Robert Schmidt's avatar
      Delete dead code · aa3f01b6
      Robert Schmidt authored
      aa3f01b6
    • Robert Schmidt's avatar
      Remove dead code · c8fba996
      Robert Schmidt authored
      c8fba996
    • Robert Schmidt's avatar
      Remove dead code · 5ac381dd
      Robert Schmidt authored
      5ac381dd
    • Robert Schmidt's avatar
      Reimplement nFAPI message exchange after msgDataTx removal · eefb9da6
      Robert Schmidt authored
      Reimplement nFAPI message exchange between L1 and L2 following the
      changes in parent commit removing msgDataTx.
      
      Avoid direct calls and use NR_IF_module fptrs to avoid linking problems.
      allowing to remove some function definitions that are not needed.
      eefb9da6
    • Robert Schmidt's avatar
      Avoid use of FAPI message buffers in msgDataTx · 2bea71a8
      Robert Schmidt authored
      Note: after this commit, monolithic works but nFAPI operation is broken
      and fixed in the next commit, to keep the changes small(er). All
      simulators work.
      
      This commit removes the use of msgDataTx's intermediate buffers for FAPI
      messages and the call of the "Schedule response". The latter incurs an
      additional copy of FAPI messages for the TX chain (for the RX chain, it
      is and will remain there) which we can avoid.
      
      Instead, it uses an NR_Sched_Rsp_t-typed variable sched_response to
      store the results of the scheduler when called from tx_func(). Thus, the
      scheduler remains unchanged (it gets a pointer to where to put FAPI
      messages), but we don't call nr_schedule_response() to then copy FAPI
      messages into the L1, but have them in a local variable sched_response.
      sched_response on on the data segment, as it is big and would overflow
      the stack; at the same time, this is ok because only one tx_func() runs
      at a time.
      
      Since we don't use allocate_sched_response() anymore, we don't need
      deref_sched_response().
      
      clear_slot_beamid() is moved to tx_func(), as it was called in
      nr_schedule_response().
      
      Since the "intermediate" NR_gNB_DLSCH_t structure groups both the
      DL_tti_pdsch and TX_data.req structures, a pointer has been created to
      point to pdsch_pdu. This affects a number of simulators, as they have to
      put some messages on the stack:
      
      - nr_dlschsim: put the corresponding variable on the stack
      - nr_pbchsim: a new array for the SSB PDUs has been introduced
      
      Further, these changes are now necessary:
      
      - nr_dlsim:  there were variables "rel15" and "pdsch_pdu_rel15" that
        point to the same PDSCH PDU. At least "rel15" would not exist, as the
        corresponding pointer is now populated in phy_procedures_gNB_TX(), and
        we therefore refer to the single PDSCH PDU variable with
        "pdsch_pdu_rel15", but at the place where "rel15" used to be
        initialized.
      - nr_ulsim: use nr_save_ul_tti_req() to load PDUs into the RX chain
        instead of nr_schedule_response(), which does not exist anymore.
      2bea71a8
    • Robert Schmidt's avatar
      Move DLSCH/PDSCH variables to gNB · e17c165c
      Robert Schmidt authored
      The next commit will remove msgDataTx. We can therefore not use
      msgDataTx to retain the PDSCH/DLSCH variables, and move them to the gNB.
      
      Note that the only reason for NR_gNB_DLSCH_t after this commit is to
      hold various large buffers (c, b, f). Future work could be done to
      remove this, in which case the array inside PHY_VARS_gNB could be
      deleted.
      
      On this occasion, clean up the use of init_DLSCH_struct() and
      reset_DLSCH_struct() (renamed destroy_DLSCH_struct()) and centralize
      their call in phy_init_nr_gNB()/phy_free_nr_gNB(), and correct
      simulators accordingly.
      e17c165c
    • Thomas Schlichter's avatar
      gNB: modify RLC configuration applied for SRB1 during RRCReestablishment · eb7ca966
      Thomas Schlichter authored
      TS 38.331 clause 5.3.7.4 specifies to apply the configuration defined in 9.2.1 for SRB1 at UE side.
      This implies that the gNB also has to apply sn_field_length = 12, but there are no implications on the other RLC parameters.
      
      As wrong timer values break SRB1 e.g. for long RTT NTN scenarios, this commit switches to using the RLC timer values provided in the configuration file.
      Currently we still set poll_pdu, poll_byte and max_retx_threshold to the values defined in 9.2.1, but this can be changed.
      eb7ca966
    • Thomas Schlichter's avatar
    • francescomani's avatar
    • francescomani's avatar
    • francescomani's avatar
      88baba89
    • francescomani's avatar
    • francescomani's avatar
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch... · a4516759
      Jaroslava Fiedlerova authored
      Merge remote-tracking branch 'origin/improve-readability-phy_procedures_gNB_uespec_RX' into integration_2025_w46 (!3707)
      
      Cleanup phy_procedures_gNB_uespec_RX
      
      phy_procedures_gNB_uespec_RX is too long function with too long lines of code,
      this commit only shorten lines and improve a bit the readability
      a4516759
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/mac-e2-ci' into integration_2025_w46 (!3752) · 304c3ef9
      Jaroslava Fiedlerova authored
      [MAC] Add UL total/used aggregated MAC stats; [E2 agent] Properly calculate
      used UE PRBs in KPM; [CI] Simplify and improve the Undeploy_Object() and
      implement Stop_Object()
      
      - Create common dlul_mac_stats_t struct for both DL and UL total/used aggregated
        PRBs
      - Use correct unit [%] for RRU.PrbTotDl and RRU.PrbTotUl , instead of [PRBs]
      - Use correct unit [Mb] for DRB.PdcpSduVolumeDL and DRB.PdcpSduVolumeUL [kb]
      - Implement Stop_Object() (docker compose stop = SIGTERM)
      - Simplify the Undeploy_Object() function
      - Improve the logging for Deploy/Undeploy_Object() functions
      - OAI-FlexRIC CI: properly stop all the containers (one by one or a subgroup of
        running containers), and rename oai-flexric to nearRT-RIC container
      304c3ef9
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/2l-ul-aerial' into integration_2025_w46 (!3755) · b7d867ea
      Jaroslava Fiedlerova authored
      CI: Increase tested UL throughput on Aerial pipeline using 2L UL
      
      The goal of this MR is to activate the use of 2-layer uplink by enabling SRS
      and to increase the tested UL throughput in CI.
      b7d867ea
    • Robert Schmidt's avatar
      875ec96f
    • Robert Schmidt's avatar
      Update log header format to improve visual alignment · ea1aa382
      Robert Schmidt authored
      The new format left-aligns the component name and enforces a minimum width
      of 7 (log component) characters, padding shorter names with spaces after
      the closing "]".
      
      Example output:
      
          [14:05:43.395376] [E1AP]   I releasing UE 1
          [14:05:43.395400] [GTPU]   I [91] UE ID 1: Delete all tunnels (1 tunnels)
          [14:05:43.395414] [NR_RRC] A [DL] (cellID bc614e, UE ID 1 RNTI 8e27) Send RRC Release
          [14:05:43.395431] [RRC]    I UE 1: received bearer release complete
          [14:05:43.424551] [RLC]    W Remove UE 36391
          [14:05:43.424597] [NR_RRC] I removed UE CU UE ID 1/RNTI 8e27
          [14:05:43.424773] [NR_RRC] A [--] (cellID bc614e, UE ID 1 RNTI 8e27) Remove UE context
          [14:05:43.425205] [NR_MAC] I Remove NR rnti 0x8e27
          [14:05:43.582158] [HW]     W Lost socket
          ^C
          ** Caught SIGTERM, shutting down
          Returned from ITTI signal handler
          [14:05:43.948721] [GNB_APP] I stopping nr-softmodem
          [14:05:43.948746] [PHY]    I Killing gNB 0 processing threads
          [14:05:44.574818] [PHY]    I Stopping RU 0 processing threads
          [14:05:44.575000] [PHY]    I RU 0 RF device stopped
          [14:05:44.575006] [GNB_APP] I turned off RU rfdevice
      ea1aa382
    • Robert Schmidt's avatar
      log: Only print one space if no level selected · 7f570191
      Robert Schmidt authored
      Prior to this change, when no "level" option is given to the logging
      module, we see
      
          [PHY]   RU 0 RF started cpu_meas_enabled 0
          [HW]   No connected device, generating void samples...
      
      with three spaces, which is too much. This change reduces the amount of
      spaces to 1 without log level.
      Co-authored-by: default avatarRobert Schmidt <robert.schmidt@openairinterface.org>
      7f570191
    • Robert Schmidt's avatar
      Simplify logging UTC option to only show time · 090cf00c
      Robert Schmidt authored
      We probably almost never care about the date, but it takes a lot of
      space. Remove it; if somebody needs the full time stamp including the
      date, we could still add it with a new option.
      090cf00c
    • Teodora's avatar
      OAI-FLEXRIC-RAN-Integration-Test CI pipeline · 6a6588e9
      Teodora authored
      1. Rename oai-flexric to nearRT-RIC. FlexRIC is a project combining nearRT-RIC, xApps, and E2 agent emulators.
      2. Instead of undeploying all the containers at the same time, and not checking the logs for xApps and nearRT-RIC, do the following:
      - Stop containers (docker compose stop) - one or subgroup of running containers in the following order:
         a) xapp-kpm-moni
         b) xapp-kpm-rc
         c) xapp-gtp-mac-rlc-pdcp-moni
         d) oai-nr-ue oai-nr-ue2
         e) oai-gnb
         f) nearRT-RIC
      - Undeploy containers (docker compose down), collect and analyze all the logs.
      6a6588e9
    • Robert Schmidt's avatar
      Implement StopObject() · 81680e29
      Robert Schmidt authored
      For some test cases, we might want to stop a service earlier. This
      functionality is done by StopObject().
      
      Test log collection is still done by UndeployObject(), which will
      collect the logs of all services (at that point, stopped or not).
      81680e29
    • Robert Schmidt's avatar
      Remove services to be undeployed from XML files · de8d0991
      Robert Schmidt authored
      In all these cases, the intention is to undeploy all services.
      Correspondingly, remove the services from the XML to avoid any
      ambiguity.
      de8d0991
    • Robert Schmidt's avatar
      Improve logging in CI Undeploy/DeployObject() · ddcb216a
      Robert Schmidt authored
      Consistently print requested services (if applicable)
      and outcome of the step.
      ddcb216a
    • Robert Schmidt's avatar
      Simplify UndeployObject() and GetDeployedObjects() · 247e908b
      Robert Schmidt authored
      GetRunningServices() was returning all services, running or stopped.
      Hence, rename to reflect what this function does, and rewrite slightly
      to better capture what is actually happening. Also, don't return the
      container ID, as we don't use it.
      
      Call stop on all services, as we will down the deployment right after.
      The list of services is still used to retrieve logs.
      
      Remove a stray "return False", which would sometimes prevent us from
      seeing all error messages.
      247e908b
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/ue-fixes' into integration_2025_w46 (!3745) · 603fc231
      Jaroslava Fiedlerova authored
      Collection of small fixes
      
      A few fixes needed while testing FHI libraries
      - set subcarrier spacing in PUSCH PDU in NRUE
      - a set of two LOG_Ds that prints out the PUSCH allocation on gNB & UE
      603fc231
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'Rakesh_B_B/develop' into integration_2025_w46 (!3722) · 3a1d8afd
      Jaroslava Fiedlerova authored
      [NGAP] Fix incorrect AMF Set ID type (uint8 → uint16) causing AMF lookup failure
      
      This PR fixes issue #1012 , a data type issue related to the AMF Set ID used
      during UE RRC reestablishment. The AMF Set ID was mistakenly declared as uint8_t
      instead of uint16_t, even though it is a 10-bit field as specified in 3GPP TS
      23.003 section 2.10.1. As a result, AMF Set IDs greater than 255 were truncated,
      leading to failed AMF lookups and the following warning: No matching AMF found
      for PLMN (MCC=%03d MNC=%0*d) and AMF SetID=%u.
      Verified reestablishment succeeds with AMF Set IDs >255.
      3a1d8afd
    • Robert Schmidt's avatar
    • Robert Schmidt's avatar
      Don't use msgTx inside nr_dlsch_encoding() and nr_generate_pdsch() · 2be5ff36
      Robert Schmidt authored
      A later commit will remove "msgTx" altogether. Push it out from L1
      functions.
      2be5ff36
    • Robert Schmidt's avatar
      751cab3d
    • Robert Schmidt's avatar
      Simplify gNB DLSCH type · 2b2b3cd3
      Robert Schmidt authored
      DLSCH encoding is not concerned with HARQ processes directly. Instead,
      it gets the redundancy version and encodes a specific redundancy version
      for a given TB. The rest is up to the MAC, the L1 is stateless in that
      regard. Hence, remove the HARQ type and put it into DLSCH, which also
      simplifies the code elsewhere.
      2b2b3cd3
    • Robert Schmidt's avatar
      Remove unused computation · 09e0344b
      Robert Schmidt authored
      unav_res is already computed in nr_generate_pdsch(), and then used
      inside of nr_dlsch_encoding() right after.
      09e0344b