- 04 Jun, 2024 5 commits
-
-
Robert Schmidt authored
Integration: `2024.w22` See merge request oai/openairinterface5g!2778 * !2707 NR UE Cell Search * !2722 add initial NTN support for gNB * !2694 Handle and use Linux capabilities, logging improvements, cleanup, documentation * !2569 Neighbour Configuration - Measurement Configuration
-
Robert Schmidt authored
-
batuhan duyuler authored
Neighbor configuration can be given by gNB.conf get_MeasConfig function is extended as it will prepare A2 / A3 Report Configs. Single Meas Obj is used for all. rrc_gNB_process_MeasurementReport function is extended to process A2 / A3 measurement events. helper functions are written to fetch neighbour cell informations from sequence containers. (get_neighbour_cell_information, get_neighbour_config)
-
batuhan duyuler authored
- neighbour_config.conf file includes neighbour and measurement related parameters Neighbour List: - nr_cellid: the identity of existing cell who has neighbour - neighbour_cell_configuration(list): includes the identity parameters of the neighbour cell such: - gNBID (incase of N2 Handover / to be identified from AMF) - nr_cell_id (target gNB needs to consider) - physical_cellId (needed for measurement reporting) - absoluteFrequencySSB (needed for measurement reporting) - subcarrierSpacing (needed for measurement reporting) - plmn / tracking area code (incase of N2 Handover / needed for AMF to identify / allow HO) NR Measurement Configuration - Periodical - enable (default is 0, 1 enables the reporting) - includeBeamMeasurements, maxNrOfRS_IndexesToReport (configurable reporting parameters) - A2 - enable (default is 0, 1 enables the reporting) - threshold , timeToTrigger (configurable reporting parameters) - A3 - cell_id (the nr_cellid of neighbour cell. So this A3 parameters will be used for the neighbour - [-1] means default. so it can be applied to any neighbour if there is no specific config - Neighbour specific A3 Threshold can be used or default can be selected depending to the neighbour planning - The neighbour-config.conf specifies, apply default A3 for neighbours 3 and 4 | apply specific one for neighbour 2 - offset, hysteresis, timeToTrigger (configurable reporting parameters) the neighbour_config.conf can be included in the gNB.conf file. Example is given: gnb.sa.band78.106prb.rfsim.neighbour.conf A sequence array container is used for neighbour cell configuration. RRC structure has this container. A Measurement configuration structure is defined. This structure has Periodical / A2 Event structures and also a sequence container for A3 Event List. These structures are filled during the initialization. While F1 Setup Response is coming from DU to CU, the intra frequency / inter frequency neighbour decision is given for the existing cell. Also new neighbours could be added here if needed.
-
batuhan duyuler authored
The functions are needed in a later commit in both rrc_gNB_du.c and rrc_gNB.c, so move to the rrc_gNB_du.c file concerned with DUs (cells).
-
- 03 Jun, 2024 35 commits
-
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
With the capabilities now given as part of this MR, it happens that when checking the "docker compose config", the container_name might not be close to the service name. Something like service: cap_drop: ... cap_add: ... container_name: This is inconvenient, as the previous grep for the service name + 3 lines might not cover the service name. To circumvent this, give the service name directly in "docker compose config". (no clue why it has not been done like this from the start)
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
- sa_b200_gnb - sa_aw2s_gnb - sa_e1_b200 - sa_f1_b200 - sa_sc_b200_gnb - nsa_b200_gnb By default, the container has no access to /dev. Mount all USB devices into the container to ease usability: by default, USB devices are mounted under /dev/bus/usb using the bus ID, which is different on every system and might change on reboots or with (un-)plugging USB devices. Hence, mount all USB; the process has not many capabilities anyway, and thus might not do much harm. A proper solution would be to write a udev rule to mount a device using its vendor and product ID, and only mount the corresponding device into the container.
-
Robert Schmidt authored
- SA 2x2 tests on 60 and 100 MHz - N310-based OAI gNB + UE Give SYS_NICE and IPC_LOCK for performance. On the UE side, give NET_ADMIN (for interface bringup) and NET_RAW (for ping an TUN).
-
Robert Schmidt authored
- 5g rfsim fdd_phytest - 5g rfsimulator - 5g fdd rfsim - 5g f1 rfsim - 5g l2sim - 5g rfsim 24prb - 5g rfsim 2x2 - 5g rfsim accelleran - 5g rfsim e1 - 5g rfsim fr2 32prb - 5g rfsim u0 - Update doc We give NET_ADMIN (for interface bringup) and NET_RAW (for ping). IPC_LOCK and SYS_NICE are intentionally left out to verify the softmodems run without.
-
Robert Schmidt authored
It might be desirable to run the UE without superuser rights. More concretely, it might run without NET_ADMIN. In this case, various corresponding operations on the TUN socket fd might fail. In this commit, - improve error reports to make them more clear - do not automatically exit(1), but return from the function to ensure continuity of the softmodem
-
Robert Schmidt authored
-
Robert Schmidt authored
Use common threadCreate() function to create P7 thread with high(er) priority. Remove old calls to set_priority(), as this is already done with threadCreate().
-
Robert Schmidt authored
Use common threadCreate() function to create P7 thread with high(er) priority. Remove old calls to set_priority(), as this is already done with threadCreate().
-
Robert Schmidt authored
Use common threadCreate() function to create P7 thread with high(er) priority. Remove old calls to set_priority(), as this is already done with threadCreate().
-
Robert Schmidt authored
The main thread of nr-uesoftmodem (executing main()) is mostly working; it is thus not necessary to set high priority. Instead, the threads created with threadCreate() will receive higher priority, if possible (as determined by the availability of SYS_NICE capability). To inform if SYS_NICE is not present, print a warning in main().
-
Robert Schmidt authored
SYS_NICE is a capability that allows a process to set thread affinity and priority, among other things (see capabilities(7) for more info). In this commit, add a function that allows to determine if the process has this capability, and try to change the thread affinity and priority, if requested. If the capability does not exist, the function will simply not attempt to change the corresponding thread attributes. To determine if the process has SYS_NICE, libcap can be used. However, it might not be installed by default. To avoid requiring another dependency, if we detect that libcap is not present, use a workaround by try to set a real-time scheduling policy; if it's present, or can be changed, we assume that the process has SYS_NICE (and clean up, if relevant). Simplify reading of capabilities
-
Robert Schmidt authored
A later commit in this series adds performance tuning tips, which includes the call made in RFsim until this commit.
-
Robert Schmidt authored
-
Robert Schmidt authored
set_latency_target() attempts to set keep "low latency" by - writing a specific latency to /dev/cpu_dma_latency - setting manually the minimum CPU processor frequency to be the maximum There is no functionality to undo this after stopping the softmodem(s), and most users are probably not even aware that OAI does this. It is generally preferable to set this beforehand using a governor or by disabling sleep states (as outlined in the tutorial, and in a follow-up commit in the performance tuning docs). The previous mlockall() call, to lock memory to RAM, is retained in a new function. There were additional mlockall() calls, which have been replaced with lock_memory_to_ram(), where necessary.
-
Robert Schmidt authored
It's completely unclear what this is supposed to do.
-
Robert Schmidt authored
Print a clear error if a config file does not exist (unclear previously, when the user would get a confusing, unspecific, "file I/O error" on line 0) I tried to free the memory that had been allocated at that point, and verified that using the address sanitizer. Nevertheless, the function does too much, and is too complicated for refactoring.
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
Use correct baseTag for Unit Tests build in execution: - if build_helper or othe files changed, which would trigger rebuild of ran-base, use the corresponding ci-temp tag - use that tag consistently afterwards
-
Thomas Schlichter authored
-
Thomas Schlichter authored
add exemplary cellSpecificKoffset_r17, sr_ProhibitTimer_v1700, t300, t301 and t319 to conf files for 24 and 25 PRBs
-
Thomas Schlichter authored
-
Thomas Schlichter authored
-
Thomas Schlichter authored
-
Thomas Schlichter authored
gNB: use 2 * K2 for contention_resolution_timer, as the timer starts with Msg2 transmission and ends with Msg4 ACK reception
-