- 11 Feb, 2025 2 commits
-
-
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.
-
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.
-
- 08 Feb, 2025 2 commits
-
-
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.
-
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")
-
- 07 Feb, 2025 8 commits
-
-
Robert Schmidt authored
Remove inexistant SIMD instruction develop branch doesn't compile with AVX2 only. For instance, mm_loadi_epi32() doesn't exist in SSE, only in the AVX512 family, despite it being a 128 bit vector size instruction. See also: https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#_mm_loadi_epi32() This was masked by using SIMDE.
-
Robert Schmidt authored
Refactor tun_if.h Use a common function for generating interface name. Use full interface name in tun_if.h functions.
-
Robert Schmidt authored
Improvements for NR dlsim and ulsim
-
Robert Schmidt authored
Period based phytest bitmap phy-test slot bitmap tdd period based to minimize the chance to need it larger than 64 slots
-
Robert Schmidt authored
Merge remote-tracking branch 'beraoud/beraoud-develop-patch-76226' into integration_2025_w06 (!3240) Fix typos in NR_SA_Tutorial_OAI_multi_UE.md
-
Robert Schmidt authored
Simplify usage of the old segment decoding libraries with the slot coding interface This MR transforms the segment coding libraries into slot coding libraries by statically linking the adaptation layer and the segment coding libraries. Therefore they can be used directly in ldpctest which uses the segment coding interface as well as in all the other PHY simulators and the NR softmodem which use the slot coding interface. It is not anymore needed to use the --nrLDPC_coding_segment.segment_shlibversion flag. Instead a segment coding library can be directly chosen with --loader.ldpc.shlibversion since it implements the slot coding interface.
-
Robert Schmidt authored
5G nFAPI headers specify 32 bits for the length field, so use it here as well.
-
Bartosz Podrygajlo authored
Use a common function for generating interface name. Use full interface name in tun_if.h functions.
-
- 05 Feb, 2025 4 commits
-
-
francescomani authored
-
francescomani authored
-
Romain Beurdouche authored
-
Romain Beurdouche authored
feat(nrLDPC_coding): Transform segment coding libraries into slot coding libraries by statically linking the adaptation layer and the segment coding libraries
-
- 04 Feb, 2025 9 commits
-
-
Abdelkhalek Beraoud authored
-
Laurent THOMAS authored
-
francescomani authored
-
francescomani authored
-
francescomani authored
-
francescomani authored
-
francescomani authored
-
francescomani authored
-
francescomani authored
-
- 03 Feb, 2025 3 commits
-
-
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"
-
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
-
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
-
- 31 Jan, 2025 12 commits
-
-
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.
-
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
-
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
-
Guido Casati authored
-
vijay chadachan authored
Co-authored-by:
Robert Schmidt <robert.schmidt@openairinterface.org>
-
vijay chadachan authored
Co-authored-by:
Guido Casati <guido.casati@firecell.io>
-
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:
Guido Casati <guido.casati@firecell.io>
-
Guido Casati authored
-
Bartosz Podrygajlo authored
-
Leonardo Bonati authored
-
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).
-
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)
-