1. 31 Jan, 2025 7 commits
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/RRCReestablishment_integrity' into... · 85edbc8e
      Robert Schmidt authored
      Merge remote-tracking branch 'origin/RRCReestablishment_integrity' into integration_2025_w05 (!3229)
      
      Verify the integrity protection of the RRCReestablishment message
      85edbc8e
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/NR_ULSCH_beam_allocation_bugfix' into... · 44fe1175
      Robert Schmidt authored
      Merge remote-tracking branch 'origin/NR_ULSCH_beam_allocation_bugfix' into integration_2025_w05 (!3231)
      
      Bugfix in frame and slot setting for ULSCH beam allocation
      44fe1175
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/process-slot-tx-in-order' into integration_2025_w05 (!3224) · 31c8ca9c
      Robert Schmidt authored
      Ensure execution of processSlotTX in order in NR UE
      
      Make sure that processSlotTX is executed in slot order.
      
      There is a bug that causes decoding error when processSlotTX is executed
      out of order. The root cause is not known at this point, but this change
      avoids the bug altogether.
      31c8ca9c
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/more-layer1-cleaning' into integration_2025_w05 (!3218) · 723acf7e
      Robert Schmidt authored
      More Layer1 cleaning
      
      Cleanup, see commits for info
      723acf7e
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/imscope-recorder' into integration_2025_w05 (!3185) · be6321c8
      Robert Schmidt authored
      Add IQ file recording and IQ file viewer to ImScope
      
      This changeset introduces the following changes to ImScope:
      
      - Added the ability to record IQ data using the same mechanism as
        ImScope.
      - Added a new executable target imscope_iq_file_viewer for viewing IQ
        files.
      - Introduced a command line argument --imscope-record that enables data
        recording mode.
      - Refactored a lot of the scope code
      
      Usage:
      
      - To record IQ data, run a modem with --imscope-record flag.  The
        recording happens whenever a modem calls dumpScopeData, which
        currently is done only in gNB on PUSCH DTX and PUSCH CRC NOK.  There
        is a limit of ~1GB of files written by the thread in a signle run to
        avoid accidentally exhausting disk space.  If a directory imscope-dump
        is available the data will be recorded there in .imscope files.
        Otherwise files are written to the directory the modem was run. This
        is done so that the directory can be mapped in a docker container.
      - To view recorded IQ files, use the new executable
        imscope_iq_file_viewer. This can be done by running:
      
        ./imscope_iq_file_viewer <path_to_iq_file>
      
        Replace <path_to_iq_file> with the path to the IQ file you want to view.
      be6321c8
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/docker-dev-env' into integration_2025_w05 (!3102) · b34708fa
      Robert Schmidt authored
      Dockerized development environment
      
      This commit introduces a fully dockerized dev env you can start on any
      machine that has docker without installing any direct OAI dependencies
      on host.
      
      This allows to migrate development environments between machines easily.
      Several complementary scripts were added to enable smooth transition
      between your docker environment and host environment. Your user and sudo
      should work inside the environment.
      
      In its current state, the environment can be used to compile
      nr-softmodem with 7.2 FHI but it cannot run it due to missing
      dependencies.
      b34708fa
    • Bartosz Podrygajlo's avatar
      Dockerized development environment · 8ca0a80d
      Bartosz Podrygajlo authored
      This commit introduces a fully dockerized dev env you can start on any
      machine that has docker without installing any direct OAI dependencies
      on host.
      
      This allows to migrate development environments between machines easily. Several
      complementary scripts were added to enable smooth transition between your docker
      environment and host environment. Your user and sudo should work inside the
      environment.
      8ca0a80d
  2. 30 Jan, 2025 7 commits
  3. 28 Jan, 2025 12 commits
    • Bartosz Podrygajlo's avatar
      Use a global "void_instruction" in imscope record thread · 2ea6ac26
      Bartosz Podrygajlo authored
      This avoids the issue of compare_exchange_weak always failing. The issue
      was that `store()` is not equal to `exchange()`. `exchange` uses memory
      copy while `store()` copies the value representation of the argument, which
      is not always the same thing.
      2ea6ac26
    • Bartosz Podrygajlo's avatar
      30de011f
    • Bartosz Podrygajlo's avatar
      Refactor some scope macros · c520a4e2
      Bartosz Podrygajlo authored
      Use do {} while (0) for UEdumpScopeData/gNBdumpScopeData macro
      c520a4e2
    • Bartosz Podrygajlo's avatar
      More updates to imscope IQ recorder · 2198e311
      Bartosz Podrygajlo authored
       - Added event parameter for recording which is reflected in the filename
       - Added event in the UE for DLSCH NACK
       - Added program name to the filename for ease of identification
       - Reworked spinlock to use atomics
      2198e311
    • Bartosz Podrygajlo's avatar
      Fix pdschRxdataF_comp scope for UE. · c01adc5e
      Bartosz Podrygajlo authored
      Correctly calculate the amount of data to be copied. Copy at correct offset.
      Imporve error message in case data is insufficient.
      c01adc5e
    • Bartosz Podrygajlo's avatar
      Add IQ file recording and IQ file viewer to ImScope · ab75a7cc
      Bartosz Podrygajlo authored
      This commit introduces the following changes to ImScope:
       - Added the ability to record IQ data using the same mechanism as ImScope.
       - Added a new executable target `imscope_iq_file_viewer` for viewing IQ files.
       - Introduced a command line argument `--imscope-record` that enables data recording mode.
       - Refactored a lot of the scope code
      
      Usage:
       - To record IQ data, run a modem with `--imscope-record` flag.
         The recording happens whenever a modem calls dumpScopeData, which currently is
         done only in gNB on PUSCH DTX and PUSCH CRC NOK.
         There is a limit of ~1GB of files written by the thread in a signle run to avoid
         accidentally exhausting disk space.
         If a directory `imscope-dump` is available the data will be recorded there in .imscope
         files. Otherwise files are written to the directory the modem was run. This is done so that
         the directory can be mapped in a docker container.
      
       - To view recorded IQ files, use the new executable `imscope_iq_file_viewer`. This can be done by running:
            ```
            ./imscope_iq_file_viewer <path_to_iq_file>
            ```
         Replace `<path_to_iq_file>` with the path to the IQ file you want to view.
      ab75a7cc
    • Bartosz Podrygajlo's avatar
    • Bartosz Podrygajlo's avatar
      Ensure execution of processSlotTX in order in NR UE · e1814f53
      Bartosz Podrygajlo authored
      Make sure that processSlotTX is executed in slot order.
      e1814f53
    • Laurent THOMAS's avatar
      284b7af4
    • Laurent THOMAS's avatar
      set correct type on qpsk modulation table · f272d7d1
      Laurent THOMAS authored
      f272d7d1
    • Laurent THOMAS's avatar
      c73353be
    • Robert Schmidt's avatar
      Merge branch 'integration_2025_w04' into 'develop' · 64a472ae
      Robert Schmidt authored
      Integration: `2025.w04`
      
      Closes #876, #896, #875, #893, and #878
      
      See merge request oai/openairinterface5g!3226
      
      * !3198 remove a set of compile options that don't work anyway
      * !3171 Refactor SCTP Association Response Handling and E1 connection loss at CU-UP
      * !3023 usrp constant and slow derive timestamp
      * !3215 Remove unused code
      * !3192 fix nr phy-test mode in ntn
      * !3214 fix(nrLDPC_coding_t2): Miscellaneous fixes related to T2
      * !3020 use ML receiver for 64 QAM UL-MIMO
      * Demote error logs to debug for "PUCCH not processed"
      * !3217 minor improvements in T hacks
      * !3199 Add a small FAPI Hex parser utility
      * !3209 Remove most of m64 type usage
      * !3211 Avoid huge calloc by alloc'ing TBs independently
      * !3212 F1AP IDs: Allow AddMod, fix concurrency bug
      * !3152 E1 Setup enc/dec library and unit test
      * !2999 Repair nFAPI in 5G
      * !3210 FHI72: FDD support
      * !3220 Improve RA logs
      64a472ae
  4. 27 Jan, 2025 14 commits
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/preamble-index-logs' into integration_2025_w04 (!3220) · 7bd248e1
      Jaroslava Fiedlerova authored
      Improve RA logs
      
      Modify existing LOG entries to include preamble index, timing advance and
      estimated distance from the gNB. This makes mapping RA attempts to
      physical/simulated UEs easier via sent/received preamble index or physical
      distance from the gNB in scenarios with >1 UE.
      7bd248e1
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/fhi72-fdd-mode' into integration_2025_w04 (!3210) · c7a90ed2
      Jaroslava Fiedlerova authored
      FHI72: FDD support
      
      - harmonize DL/UL PRB mapping in one get_xran_prb_map() function with support
        of mixed slot and duplex mode
      - do not assume TDD by default
      c7a90ed2
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/nfapi-fixes' into integration_2025_w04 (!2999) · 699f2e5d
      Jaroslava Fiedlerova authored
      Repair nFAPI in 5G
      
      Add 5G nFAPI in OAI/Make it it work.
      
      Many commits in this branch are basically bug fixes of things that don't work
      properly, such as
      
      - check for correct conditions (e.g. instance numbers in the RAN context)
      - remove artificial limitation (e.g. only one PUCCH per TDD period in the PNF)
      - improve performance (reduce big mallocs, make some static buffers such as a
        global ring buffer for nFAPI messages in the PNF)
      - fix bugs in nFAPI (e.g., increase maximum message size to ~64kB instead of
        1500 bytes, because the latter is way too small for many TX_data.requests in
        5G, and it will delay message arrival unduly)
      - fix bugs in message enc/dec (e.g., handle FDD in config.request)
      - adjust the L1 such that the condition "we run monolithic" is not necessery
        (e.g., some message numbers in nFAPI struct where reset in MAC, instead of
        L1, and this breaks when running the PNF)
      
      There are instructions that explain how to set it up. Two CI tests have been
      added, one with COTS UE and MIMO in DL+UL in TDD numerology 1 (30kHz), and a
      second test with FDD mu=0 (15kHZ) in RFsimulator.
      
      These were some old to-dos that have been addressed.
      
      - test with COTS UE - 4x4 pipeline works good in DL, UL now also work
      - test in RFsim
      - make PNF status message
      - make FDD in u0 work
      699f2e5d
    • Robert Schmidt's avatar
      382820dc
    • Robert Schmidt's avatar
      pnf_nr_p7_pack_and_send_p7_message(): don't use global buffer · 3ad9a438
      Robert Schmidt authored
      This function packs P7 messages. At least RX_data.indication messages
      might be much bigger than the global buffer that is used here. Allocate
      the buffer on the stack, and make it bigger. Do not use the global
      buffer, it's simply not necessary; increasing the global tx buffer size
      might have negative effects elsewhere in the code.
      
      That change might make the function reentrant. The mutex seems to only
      guards the codec config. However, leave it to not introduce any
      regressions as of now.
      3ad9a438
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/e1-setup-encdec-tests' into integration_2025_w04 (!3152) · 377ff897
      Robert Schmidt authored
      E1 Setup enc/dec library and unit test
      
      This MR is adding a library for E1 Setup enc/dec functions:
      
      - E1 CU-UP Setup Request
      - E1 CU-UP Setup Response
      - E1 Setup Failure
      
      and relevant unit tests
      377ff897
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/f1-ue-data-no-assert' into integration_2025_w04 (!3212) · f6243e90
      Robert Schmidt authored
      F1AP IDs: Add update, fix concurrency bug
      
      I suspect a concurrency bug: For instance, during reestablishment, the
      CU needs to update the DU UE ID under which the UE is identified in the
      DU. Previously, the CU would remove, then add the DU UE ID info. At the
      same time, the PDCP thread might look up the information. This can lead
      to asserts. Modify the code to do the update under (one) lock.
      
      Also, refactor some code.
      f6243e90
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/fix-huge-malloc' into integration_2025_w04 (!3211) · 2cecffb0
      Robert Schmidt authored
      Avoid huge calloc by alloc'ing TBs independently
      
      Fix real-time problems on smaller machines due to big calloc(). See the
      commit(s) for more details.
      2cecffb0
    • Robert Schmidt's avatar
      transform RFsim band 66 u0 test to nFAPI · 6be89880
      Robert Schmidt authored
      6be89880
    • Robert Schmidt's avatar
      Modify 4x4 60MHz COTS UE test to use nFAPI · c5531736
      Robert Schmidt authored
      Modify the existing 4x4 60MHz USRP+COTS UE test to use nFAPI. The
      throughput tests remain the same.
      c5531736
    • Robert Schmidt's avatar
      Add documentation for nFAPI · 03b63257
      Robert Schmidt authored
      03b63257
    • Robert Schmidt's avatar
      Consolidate 2 gnb-vnf configs in 1 · 48d52fdf
      Robert Schmidt authored
      48d52fdf
    • Robert Schmidt's avatar
      Remove hardcoding of numerology in VNF · 970eb04a
      Robert Schmidt authored
      Similar to the parent commit, make the numerology in the VNF
      configurable. Unlike for the PNF change, the VNF frame/slot info is in a
      per-PNF connection structure to which the "oai_integration" code has no
      access. So we need to hack the nfapi_vnf_p7_add_pnf() function signature
      to take the numerology, to be able to save this on a per-PNF basis.
      
      The fact that we store this on a per-PNF basis is not strictly required,
      as the VNF cannot handle multiple numerologies as of now, either.
      However, we might want to extend this in the future, so it seems prudent
      to store this on a per-PNF basis, so that we could start handling
      multiple numerologies at the L2 without the need to change the L1 or
      nFAPI code itself.
      
      Also, the numerology is not needed except for some code that deals with
      timing over nFAPI. As of now, we don't use this code (nFAPI gets a
      trigger every slot, as per the VNF request, see an earlier commit in
      this series), but also here, let's not make the future more complicated
      by storing the numerology for each PNF now (this could always be reverted).
      
      For 4G, put numerology 0 (15kHZ SCS), which is the SCS that LTE uses.
      970eb04a
    • Robert Schmidt's avatar
      Remove hardcoding of numerology in PNF · 58f2f9b3
      Robert Schmidt authored
      Fill in the dynamically received numerology, and make the numerology at
      the PNF configurable, following the changes in the parent commit.
      
      The change for the reading is somewhat of a hack, because nFAPI, as of
      now, does not really foresee to store the numerology, so we fill the
      numerology during the start request, when the numerlogy has been
      received in the config request, but at that time, the structure for the
      time information (frame/slot) does not exist yet.
      58f2f9b3