1. 11 Feb, 2025 2 commits
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/nfapi-fixes-4x4-100MHz' into integration_2025_w06 (!3251) · 9b4e0677
      Robert Schmidt authored
      nFAPI: make 4-layer on 100MHz work
      
      5G nFAPI headers specify 32 bits for the length field, so use it also
      when segmenting messages. This should stabilize 4-layer MIMO operation
      on 100MHz with nFAPI.
      9b4e0677
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/rfsim-deadlock-avoidance' into integration_2025_w06 (!3246) · 7d4f7ebb
      Robert Schmidt authored
      Deadlock avoidance in rfsimulator
      
      This change introduces a countermeasure for deadlock in rfsimulator. The
      deadlock happens when all entities are waiting for new data to come in,
      and happens with 2+ clients, when a new client connects. I think this
      issue is due to ordering of fullwrite calls, resulting in out-of-order
      delivery of packets and eventually trashing the packets on the receiving
      side. The out-of-order delivery warnings are printed just before the
      system deadlocks but I have not found a better solution so far. The
      workaround makes the server never lock up permanently by ignoring the
      client failure to write on time after 10 tries.
      
      This was tested locally for both UE as server and gNB as server and
      works correctly, causing the deadlock to clear and the added log to be
      printed several times when the deadlock is detected, after which the
      system goes back to normal.
      
      I have some gdb output of the executables during deadlock:
      
          UE:
      
          $7 = {conn_sock = 98, lastReceivedTS = 3226163740, headerMode = true, trashingPacket = false, th = {size = 13184, nbAnt = 1, timestamp = 3226150556, option_value = 0, option_flag = 0}, transferPtr = 0x7f6a500018a8 "\200\063", remainToTransfer = 24,
            circularBufEnd = 0x7f6a503b3ac0 "", circularBuf = 0x7f6a501f1ac0, channel_model = 0x0}
          (gdb) p t->buf[5]
          $8 = {conn_sock = 97, lastReceivedTS = 0, headerMode = true, trashingPacket = false, th = {size = 0, nbAnt = 0, timestamp = 0, option_value = 0, option_flag = 0}, transferPtr = 0x7f6a50001900 "", remainToTransfer = 24, circularBufEnd = 0x7f6a50575ad0 "",
            circularBuf = 0x7f6a503b3ad0, channel_model = 0x0}
      
          nextRxTimestamp 3225937740
          nsamps = 30720
      
          gNB 1:
          (gdb) p t->buf[0]
          $4 = {conn_sock = 95, lastReceivedTS = 3226026876, headerMode = true, trashingPacket = false, th = {size = 1, nbAnt = 1, timestamp = 3226026875, option_value = 0, option_flag = 0},
            transferPtr = 0x7f8dfc003ab8 "\001", remainToTransfer = 24, circularBufEnd = 0x7f8e1c3ff010 "", circularBuf = 0x7f8e1c23d010, channel_model = 0x0}
          nextRxTimestamp 3225996956
      
          gNB 2:
          lastReceivedTS = 3226026875
          $2 = {conn_sock = 95, lastReceivedTS = 3226026875, headerMode = true, trashingPacket = false, th = {size = 1, nbAnt = 1, timestamp = 3226026875, option_value = 0, option_flag = 0},
            transferPtr = 0x744898003ab8 "\001", remainToTransfer = 24, circularBufEnd = 0x7448bc2e7010 "", circularBuf = 0x7448bc125010, channel_model = 0x0}
      
          nextRxTimestamp 3226026875
      
      As you can see all executables are in have_to_wait state.
      7d4f7ebb
  2. 08 Feb, 2025 2 commits
    • Robert Schmidt's avatar
      nFAPI/PNF: Correctly set message length when segmenting · 609969f4
      Robert Schmidt authored
      Make the same change as in parent commit, i.e., write the full 32-bit
      segment size.
      
      I could not test this, as we do not reach these rx_data.indication
      length. It's based on the fix in the parent commit, and to avoid future
      bad surprises.
      609969f4
    • Robert Schmidt's avatar
      nFAPI/VNF: Correctly set message length when segmenting · 2067831e
      Robert Schmidt authored
      The 5G nFAPI message length is 32bits. In particular tx_data.requests
      can be longer than 64kB. When segmenting, we should correctly write the
      message of the current segment (across all 32bits), because the
      length would interpreted wrongly otherwise.
      
      This fixes a bug in which tx_data.requests were discarded for 4-layer DL
      MIMO on 100 MHz with this message:
      
          P7 unpack message length is greater than the message buffer
      
      Further, increase the type of various (segment-related) variables to 32
      bits. Currently, the maximum segment size is sxt to 65000 bytes (and in
      will likely remain, because the maximum UDP size is 65536);
      nevertheless, increase it in case we will ever go beyond this.
      
      See also commit dee68e63 ("nFAPI: increase maximum segment size to
      65000")
      2067831e
  3. 07 Feb, 2025 8 commits
  4. 05 Feb, 2025 4 commits
  5. 04 Feb, 2025 9 commits
  6. 03 Feb, 2025 3 commits
    • Robert Schmidt's avatar
      Merge branch 'integration_2025_w05' into 'develop' · 0053a3d0
      Robert Schmidt authored
      Integration: `2025.w05`
      
      Closes #885
      
      See merge request oai/openairinterface5g!3233
      
      * !3102 Dockerized development environment
      * !3185 Add IQ file recording and IQ file viewer to ImScope
      * !3218 more layer1 cleaning
      * !3224 Ensure execution of processSlotTX in order in NR UE
      * !3231 Bugfix in frame and slot setting for ULSCH beam allocation
      * !3229 Verify the integrity protection of the RRCReestablishment message
      * !3230 FHI72: fix for single distributed antenna array for xran F release
      * !2984 NAS 5GS refactor
      * !3235 Parametrized JenkinsNode and JenkinsResource
      * !2799 Changes to support multiple TDD patterns
      * !3208 Downgrade gNB power limit LOG from "warning" to "debug"
      0053a3d0
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/avoid-powerlimit-flood' into integration_2025_w05 (!3208) · 616c6775
      Robert Schmidt authored
      Downgrade gNB power limit LOG from "warning" to "debug"
      
      Downgrade the UE power limited LOG from LOG_W to LOG_D. This is to avoid
      flooding stdout when UE in low coverage enters power limited state for a
      longer period of time. The same information can be inferred from the
      periodic UE print which also contains PH value (negative PH values
      indicate that the UE is power limited)
      
      Also, correct some typos in PH calculation.
      
      Closes #885
      616c6775
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/Mult_TDD_Pattern' into integration_2025_w05 (!2799) · 1cb82bae
      Robert Schmidt authored
      Changes to support multiple TDD patterns
      
      - Updated the configuration changes for 2 Patterns
      - Update the TDD table configuration for NFAPI
      - Added the tdd bitmap for the period
      - Adapted the bitmap for UL/DL for the multi TDD pattern
      - Updated the RACH procedure for multi TDD pattern
      - Updated DL and UL scheduler for multi TDD pattern
      1cb82bae
  7. 31 Jan, 2025 12 commits
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/nu-ci-colosseum-jenkins-update' into... · 1e3e695f
      Robert Schmidt authored
      Merge remote-tracking branch 'origin/nu-ci-colosseum-jenkins-update' into integration_2025_w05 (!3235)
      
      Parametrized JenkinsNode and JenkinsResource
      
      Parametrized variables in Jenkinsfile for automated tests on Colosseum
      after update of OAI Jenkins server.
      1e3e695f
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/nr-ue-nas-improvements' into integration_2025_w05 (!2984) · e0865421
      Robert Schmidt authored
      NAS 5GS refactor
      
      The goal of this MR is to reorganize the NR NAS code into:
      
      - enc/dec library functions (5GS, 5GMM, 5GSM, NR_NAS_defs.h,
        nr_fgs_nas_lib.c)
      - handlers and callbacks (nr_nas_msg.c)
      
      The following changes are introduced:
      
      1. migrate 5GS enc/dec lib (5GMM and 5GSM) to a dedicated folder
      2. add a nested CMakeLists structure
      3. refactor NR NAS enc/dec functions
      4. refactor NR NAS messages struct definitions
      5. remove most of dependency from NAS LTE
      6. further refactor of PDU Session Establishment Accept processing to
         separate enc/dec from handling
      7. made naming of 5GS definitions consistent whenever necessary
      8. cleanup unused code
      9. remove redundant struct definitions
      
      Also:
      
      1. fix decoding of AMF Set ID in 5G-S-TMSI UE identity
      2. replace Byte_t directly with uint8_t
      e0865421
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/fhi72-f-release-fix-distributed-arr' into... · 70e70f6f
      Robert Schmidt authored
      Merge remote-tracking branch 'origin/fhi72-f-release-fix-distributed-arr' into integration_2025_w05 (!3230)
      
      FHI72: fix for a distributed antenna array for xran F release
      
      in the Rx callback I reset the number of section descriptions/number of
      fragments to 0, but for each antenna up to max number of antennas per
      RU, instead of up to max number of distributed antenna array
      70e70f6f
    • Guido Casati's avatar
      fcea7d9f
    • vijay chadachan's avatar
    • vijay chadachan's avatar
    • vijay chadachan's avatar
      Refactoring of is_xlsch_in_slot usage in MAC · 4fc74c17
      vijay chadachan authored
      * Remove the ulsch_slot_bitmap and dlsch_slot_bitmap from nrmac
      * Adopt the new is_dl_slot/is_ul_slot functions in the stack
        to replace is_xlsch_in_slot: these functions are getting
        the DL and UL slots as they are set in the TDD configuration
        stored in tdd_slot_bitmap (frame_structure_t)
      * Keep is_xlsch_in_slot in openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c:
        this is necessary because the phy-test pre-processors are using the bitmaps
        dlsch_slot_bitmap and ulsch_slot_bitmap to check which DL/UL slots to use
        for transmission among those set in the TDD configuration
      Co-authored-by: default avatarGuido Casati <guido.casati@firecell.io>
      4fc74c17
    • Guido Casati's avatar
      Refactor servingNetworkName · 529b142d
      Guido Casati authored
      529b142d
    • Bartosz Podrygajlo's avatar
      d44279a9
    • Leonardo Bonati's avatar
      474c004f
    • Guido Casati's avatar
      Refactor registration accept decoding · d6e2bf16
      Guido Casati authored
      previously we had decodeRegistrationAccept acting as a handler and calling
      decode_registration_accept to do the decoding. However the logic was mixed
      between the two functions, the naming was confusing and the code was hard
      understand. The goal of this commit is to simplify the code, improve
      readability and maintainability, while adapting the relevant function
      to the new OAI NAS libs structure.
      
      To this purpose:
      
      * move enc/dec logic to NAS lib openair3/NAS/NR_UE/5GS/5GMM/MSG/RegistrationAccept.c -
        the logic of parse_allowed_nssai, get_allowed_nssai has been moved to
        decode_registration_accept and decode_nssai_ie
      * add decode_nssai_ie and use it for both Allowed/Configured NSSAIs list (IE handling was added)
      * do processing in the handler handle_registration_accept
      * simplify the code by removing nested calls
      * improve handling of PDU length
      
      Currently only Registration Result, 5GS Mobile Identity, Allowed/Configured NSSAI
      are decoded. The other optional IEIs are skipped (only the length is processed).
      d6e2bf16
    • Bartosz Podrygajlo's avatar
      Downgrade gNB power limit LOG from "warning" to "debug" · 1e667b37
      Bartosz Podrygajlo authored
      Downgrade the UE power limited LOG from LOG_W to LOG_D. This is to avoid flooding
      stdout when UE in low coverage enters power limited state for a longer period of
      time. The same information can be inferred from the periodic UE print which also
      contains PH value (negative PH values indicate that the UE is power limited)
      1e667b37