Commit Graph
100 Commits
Author SHA1 Message Date
Robert Schmidt 141577c88b Refactor code and make shorter through ternary operator 2024-07-03 12:11:28 +02:00
Robert Schmidt 279bd1794a Demote logs for NR band and duplex spacing
Demote logs to debug: they don't provide that much information, and show
periodically in the UE. They are not useful.
2024-07-03 12:10:19 +02:00
Robert Schmidt 27ac298515 Merge remote-tracking branch 'origin/guami-fix' into integration_2024_w26b 2024-07-01 23:11:12 +02:00
Robert Schmidt 52fcd348a0 Merge remote-tracking branch 'origin/Hotfix_PUCCH2_CRC_fail' into integration_2024_w26b 2024-07-01 20:43:45 +02:00
Robert Schmidt 9a45ecf1f9 Merge remote-tracking branch 'origin/NR_UE_prevent_unnecessary_assertions' into integration_2024_w26b 2024-07-01 20:43:35 +02:00
Robert Schmidt e72d50bfd6 Merge remote-tracking branch 'origin/nFAPI_P5_Common' into integration_2024_w26b 2024-07-01 20:42:49 +02:00
Robert Schmidt 541ef60c89 Merge remote-tracking branch 'origin/hot-fix-T-dependencies' into integration_2024_w26b 2024-06-28 09:35:06 +02:00
Robert Schmidt 073812ca0c Merge remote-tracking branch 'origin/fix-test-asan-errors' into integration_2024_w26b 2024-06-28 09:34:57 +02:00
Robert Schmidt 7264f9e052 Merge remote-tracking branch 'origin/nr-ue-pusch-power-control' into integration_2024_w26b 2024-06-28 09:34:46 +02:00
Robert Schmidt 7a86e36ca3 Build unit tests with address sanitizer 2024-06-27 18:38:49 +02:00
Robert Schmidt d1e6b9507c Revert log level change on HARQ occasion
This reverts a change in commit
ccba7c875d. There is no real reason to
show this warning (the gNB will work just fine, simply not schedule
since no free HARQ) and it makes users unsure.
2024-06-26 14:43:05 +02:00
Robert Schmidt ca8babd7b6 Merge remote-tracking branch 'origin/remove-threadpool-makefile' into integration_2024_w26 2024-06-26 13:01:33 +02:00
Robert Schmidt aa47716a27 Merge remote-tracking branch 'origin/doc-updates' into integration_2024_w26 2024-06-26 12:51:59 +02:00
Robert Schmidt 8035cad75a Merge remote-tracking branch 'origin/Fix_Aerial_TBSize' into integration_2024_w26 2024-06-26 12:51:52 +02:00
Robert Schmidt 3b69bc278a Merge remote-tracking branch 'origin/fix_physim_configmodule_O' into integration_2024_w26 2024-06-26 12:51:44 +02:00
Robert Schmidt 6c3675905e Merge remote-tracking branch 'origin/support-ubuntu-24.04' into integration_2024_w26 2024-06-26 12:51:24 +02:00
Robert Schmidt 760aee6d29 Correct link in build instructions 2024-06-26 09:18:18 +02:00
Robert Schmidt ca54d75f3e README.md: update folder structure info 2024-06-26 09:18:18 +02:00
Robert Schmidt 9e694c228e Stream line information on how to get sources
- come straight to point: how to clone (don't talk about git config)
- refer to contributing documentation where necessary instead of
  repeating information
2024-06-26 09:18:18 +02:00
Robert Schmidt 6ba76d6ac1 Update FEATURE_SET
- CellGroupConfig is handled through DU (hence MAC)
- mention number of DUs/CU-UPs handled per CU-CP
- mention number of UEs handled
- take out BWPs, as we don't support it properly
- typos
2024-06-25 18:50:35 +02:00
Robert Schmidt ee57ae6598 doc/cross-compile.md: update some text, compile with ninja 2024-06-25 17:02:03 +02:00
Robert Schmidt 199f8c21cb Update cross-compilation builder to Ubuntu 22
Update instructions and CI for cross-compilation on Ubuntu 22.
Note that for the dockerfile, we use egrep -L which has changed and does
not exit with code 0 on no match. Instead, use -vqz to invert return
code (0 if nothing found, otherwise 1).
2024-06-25 17:02:03 +02:00
Robert Schmidt 94497435e7 Upgrade CI images to Ubuntu 22
This updates all images in the CI to Ubuntu 22. It also updates
corresponding documentation. Remove python(2) from the image, as it is
not needed. Update documentation.

It seems that the gcc coming in Ubuntu 22 does not like
stack-protector-strong, so remove it as well.

Since we compile Flexric, which does not support Ubuntu 22's default
gcc-11 (it hits a compile bug), switch to gcc-12 manually.

Since we update the compiler, we also need to be careful to use the right
address sanitizer version (which is bundled with the compiler version).
To avoid a reinstallation of the wrong asan version in target images, we
modify Ubuntu 22 targets to copy libasan from the base image. This is necessary
since we use update-alternative in the base image, but we don't want to
install compilers in the target images to use update-alternatives to
install the right asan version... This should be undone when switching
to Ubuntu 24 in the future, as it will have a newer default gcc version,
such that we don't need to update the compile in the first place.

Upgrade libpython in lteUE for U22 upgrade to make it compatible with
UHD.
2024-06-25 17:02:03 +02:00
Robert Schmidt b6f156cf4a Switch to branch that resolves flexric warnings
A number of warnings appear when compiling flexric with gcc-12, which we
use in the next commit. Those have been fixed upstream. Switch to the
updated version to avoid warnings.
2024-06-25 17:02:03 +02:00
Robert Schmidt 0abe8b6493 Fixup: we are now at fedora 40, update link 2024-06-25 17:02:03 +02:00
Robert Schmidt 8ddc49e5e8 CBLAS_TRANSPOSE is a typedef'd enum
It seems libatlas-base-dev provided an `enum CBLAS_TRANSPOSE`, but we
don't install it anymore. Now, in Ubuntu, there is only a typedef'd
version in cblas.h; for RHEL(-derivatives), the same typedef'd version
is in cblas/cblas.h.
2024-06-25 17:02:02 +02:00
Robert Schmidt 4ac6e1c83d Update build_oai help 2024-06-25 17:02:02 +02:00
Robert Schmidt 53ff69ed04 Bump required cmake version to v3.16
Debian 11: cmake 3.18
Fedora 40: cmake 3.29
RHEL 9: installs cmake3, which is typically very recent, likely 3.29
Ubuntu 20: cmake 3.16
2024-06-25 17:02:02 +02:00
Robert Schmidt 473e7207db Remove Ubuntu 18.04 from supported distributions
Ubuntu 18.04 is now in "Extended Security Maintenance", but otherwise
gets no updates. Remove it from supported distributions (regarding
installing packages); users can of course still use it.

Users are encouraged to upgrade to Ubuntu 20+.
2024-06-25 17:02:02 +02:00
Robert Schmidt 3b0f4479c4 Add Ubuntu 24.04 to supported distributions
Apart from the obvious change of adding ubuntu24.04 to supported
distributions, we need to remove liblapacke-dev as it is incompatible
with libatlas3-base. Installing both aborts with:

   The following packages have unmet dependencies:
   liblapacke : Breaks: libatlas3-base (< 3.10.3-14) but 3.10.3-13ubuntu1 is to be installed

It seems that we don't need it though, as liblapacke-dev installs the
right atlas library as a dependency.
2024-06-25 17:02:02 +02:00
Robert Schmidt 88ca38287f Merge remote-tracking branch 'origin/NR_UE_DLSCH_MCS_table_improvements' into integration_2024_w25 2024-06-25 08:20:12 +02:00
Robert Schmidt 1b989c4d15 Merge remote-tracking branch 'origin/NR_PSBCH_MERGE3' into integration_2024_w25 2024-06-25 08:20:01 +02:00
Robert Schmidt e61b977878 Create nfapi_common library with packing/unpacking functions common to (n)FAPI for 4G+5G 2024-06-24 14:15:26 +01:00
Robert Schmidt 2908cd51ea Use add_subdirectory() for nfapi/ subdirectory 2024-06-24 14:15:26 +01:00
Robert Schmidt 3c5edab8f5 Fix memory leak: free NotifiedFIFO_elt 2024-06-06 12:37:07 +02:00
Robert Schmidt f4659b2b0c Fix integer overflow
Avoid UBSan error:
  openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c:183:22: runtime error: signed integer overflow: 2122747784 + 27403601 cannot be represented in type 'int'
2024-06-06 12:36:59 +02:00
Robert Schmidt 0199d861b7 Fix integer overflow
avoid UBsan error:
  openair1/PHY/NR_TRANSPORT/pucch_rx.c:266:21: runtime error: signed integer overflow: 2113190528 + 117251752 cannot be represented in type 'int'
2024-06-06 12:36:50 +02:00
Robert Schmidt 321c475176 Fix integer overflow
avoid UBsan error:
  openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c:459:77: runtime error: signed integer overflo w: 2009540296 + 668087372 cannot be represented in type 'int'
2024-06-06 12:36:40 +02:00
Robert Schmidt a9718835d4 7.2 FH: auto-compute FFT size 2024-06-06 12:36:40 +02:00
Robert Schmidt 00b62ab6c0 Merge remote-tracking branch 'origin/pucch-power-control' into integration_2024_w23 2024-06-06 08:53:06 +02:00
Robert Schmidt 517effa586 Merge remote-tracking branch 'origin/fix-build-oai' into integration_2024_w23 2024-06-06 08:40:48 +02:00
Robert Schmidt 18125459dc Merge remote-tracking branch 'origin/t-usrp-rx-ant0' into integration_2024_w23 2024-06-06 08:40:42 +02:00
Robert Schmidt 86bd6de7dd Merge remote-tracking branch 'origin/rb_mask_ul-on-stack' into integration_2024_w23 2024-06-06 08:40:36 +02:00
Robert Schmidt 4e4a59b5bc Merge remote-tracking branch 'origin/remove-globals-nas' into integration_2024_w23 2024-06-06 08:40:30 +02:00
Robert Schmidt d58bedaed1 Merge remote-tracking branch 'origin/multi_usrp_frame_sync' into integration_2024_w23 2024-06-06 08:39:49 +02:00
Robert Schmidt 9a4e9a2adc Merge remote-tracking branch 'origin/lttng-basic' into integration_2024_w23 2024-06-06 08:39:42 +02:00
Robert Schmidt 489824fdcf Enforce gcc/g++-11 when building 7.2 FHI through xran 2024-06-05 17:01:35 +02:00
Robert Schmidt 98e9129d69 Allocate sufficient buffers for 1x1 config
xran's xran_bm_init() uses rte_pktmbuf_pool_create() to allocate DPDK
buffers. For a 1x1 configuration, the number of buffers might be too
small, and rte_pktmbuf_pool_create() might fail. This commit ensures
that we increase the number of buffers to have enough even in a 1x1
configuration. This works by chosing the next power of two, which is
recommended as per DPDK documentation.

Closes-Bug: #750
2024-06-05 17:01:35 +02:00
Robert Schmidt f7917abb28 Print xran headers version used during compilation 2024-06-05 17:01:35 +02:00
Robert Schmidt cd5822e927 Update FHI 7.2 ORAN patch: unaligned access, detect/handle PRACH packets 2024-06-05 17:01:35 +02:00
Robert Schmidt 7db4732ce1 Merge remote-tracking branch 'origin/N2_HO_Measurement_config' into integration_2024_w22 2024-06-04 09:29:42 +02:00
Robert Schmidt 9465ae778b Merge remote-tracking branch 'origin/softmodem-caps' into integration_2024_w22 2024-06-03 21:37:35 +02:00
Robert Schmidt 092047984a Merge remote-tracking branch 'origin/initial_gNB_NTN_support' into integration_2024_w22 2024-06-03 21:36:00 +02:00
Robert Schmidt 5b53f4ee0f Merge remote-tracking branch 'origin/NR_UE_cell_search' into integration_2024_w22 2024-06-03 21:35:51 +02:00
Robert Schmidt 0077d219fb CI DeployObject: don't grep, just give service name
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)
2024-06-03 17:01:48 +02:00
Robert Schmidt a87df90504 Add documentation for physical simulators 2024-06-03 14:21:19 +02:00
Robert Schmidt 971ab65fe5 Physims don't need sudo 2024-06-03 14:21:19 +02:00
Robert Schmidt 13517cd6bc Write documentation on performance tuning and security 2024-06-03 14:21:19 +02:00
Robert Schmidt 0cc278f19b Use capabilities in Aerial-based docker-compose 2024-06-03 14:21:19 +02:00
Robert Schmidt b4750d8d81 Use capabilities in AW2S-based docker compose 2024-06-03 14:21:19 +02:00
Robert Schmidt 9dd52c9d44 Use capabilities in B200-based docker-compose
- 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.
2024-06-03 14:21:19 +02:00
Robert Schmidt ffa5ba400a Use capabilities in N310-based docker compose
- 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).
2024-06-03 14:21:19 +02:00
Robert Schmidt 9f8fad86ee Use capabilities in 5G RFsim docker-compose
- 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.
2024-06-03 14:21:19 +02:00
Robert Schmidt 9b3ab10c20 Make failed TUN socket operation non-fatal
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
2024-06-03 14:00:49 +02:00
Robert Schmidt 8dc29be02f Remove unused set_priority()/set_thread_priority() 2024-06-03 14:00:49 +02:00
Robert Schmidt 973d13937d VNF: use threadCreate() to create P7 thread
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().
2024-06-03 14:00:49 +02:00
Robert Schmidt 811721bb72 PNF: use threadCreate() to create P7 thread
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().
2024-06-03 14:00:49 +02:00
Robert Schmidt 5ae7d6685a Aerial: use threadCreate() to create P7 thread
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().
2024-06-03 14:00:49 +02:00
Robert Schmidt 37f3f0b6a4 nr-uesoftmodem: don't set priority, check for SYS_NICE
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().
2024-06-03 14:00:49 +02:00
Robert Schmidt 66bf27bce9 threadCreate(): check for and handle missing SYS_NICE
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
2024-06-03 14:00:41 +02:00
Robert Schmidt 6a12784872 RFsim: don't shell out to improve kernel socket buffer sizes, teach the user instead
A later commit in this series adds performance tuning tips, which
includes the call made in RFsim until this commit.
2024-06-03 14:00:41 +02:00
Robert Schmidt 105368a437 thread pool: don't print core, threadCreate() does that already 2024-06-03 14:00:41 +02:00
Robert Schmidt 6b37d183ce Remove set_latency_target(), add lock_memory_to_ram()
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.
2024-06-03 13:59:41 +02:00
Robert Schmidt a25b209e7f Remove Check if fedora and inside kernel
It's completely unclear what this is supposed to do.
2024-06-03 12:37:33 +02:00
Robert Schmidt 7a8b2fe4a9 config module: print clear error when config file does not exist
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.
2024-06-03 12:37:33 +02:00
Robert Schmidt b9fd5a6f75 config module: make it less verbose 2024-06-03 12:37:33 +02:00
Robert Schmidt 006b68fa3f NR L1: demote log to info 2024-06-03 12:37:33 +02:00
Robert Schmidt 55728a98c1 RFsim: demote log level, remove useless log message 2024-06-03 12:37:33 +02:00
Robert Schmidt bfd519953b ITTI: lower 'Starting itti queue' message to debug 2024-06-03 12:37:33 +02:00
Robert Schmidt 37421c3f92 BuildUnitTests: need to use ran-base:ci-temp if changes in ran-base
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
2024-06-03 12:37:33 +02:00
Robert Schmidt 76f06a9386 Correctly compute array size to prevent buffer overflow
Reviewed-By: Laurent THOMAS <laurent.thomas@open-cells.com>
2024-05-31 15:25:53 +02:00
Robert Schmidt bedcd5a1be Merge remote-tracking branch 'origin/maxMIMO-layers-parameter' into integration_2024_w22 2024-05-30 13:01:33 +02:00
Robert Schmidt 30e403f4a2 Merge remote-tracking branch 'origin/bsr-estim' into integration_2024_w22 2024-05-30 13:01:27 +02:00
Robert Schmidt ba9d4afbe3 Merge remote-tracking branch 'origin/fix_oddeven_imeisv' into integration_2024_w22 2024-05-30 13:01:20 +02:00
Robert Schmidt 02ee2a9726 Merge remote-tracking branch 'origin/remove-rms-magic-number' into integration_2024_w22 2024-05-30 13:01:14 +02:00
Robert Schmidt bbe8e16ca5 Merge remote-tracking branch 'origin/nr-ue-channel-level-assert-fix' into integration_2024_w22 2024-05-30 13:01:06 +02:00
Robert Schmidt c7f1dcfb51 Hotfix: asn1c use working commit
hotfix: current vlm_master (5fa129cf3161da9ff2d67341e6277e818c0f5d6a)
breaks F1, NG, so use the one before
(940dd5fa9f3917913fd487b13dfddfacd0ded06e)
2024-05-30 09:36:01 +02:00
Robert Schmidt 7fe29041c2 SA E1 B200 gNB CI test: use host-mode 2024-05-30 09:16:45 +02:00
Robert Schmidt 7bfa8e78fd SA F1 B200 gNB CI test: use host-mode 2024-05-30 09:14:53 +02:00
Robert Schmidt 0ccd4ad000 SA SC-FDMA B200 gNB CI test: use host-mode 2024-05-30 09:14:53 +02:00
Robert Schmidt 9cf0640432 SA B200 gNB CI test: use host-mode 2024-05-30 09:14:53 +02:00
Robert Schmidt e6f0f80c9f Over-estimate short and long BSR
38.321 6.1.3.1 says: "The size of the RLC headers and MAC subheaders are
not considered in the buffer size computation" [for BSR]. However, prior
to this commit, we take the size signaled of the BSR and schedule the UE
with that amount of data, making it impossible for the UE to transmit
all its data at once (because it is the size signaled + headers).

In this commit, over-estimate the buffer status size. As we cannot know
the exact number and size of headers, we simply use "BSR size + n", as
done in function overestim_bsr_index().
2024-05-30 08:07:37 +02:00
Robert Schmidt 60c052a95a Merge remote-tracking branch 'origin/code-style-review-instructions' into integration_2024_w21c 2024-05-27 12:18:56 +02:00
Robert Schmidt 1b9ba55843 Merge remote-tracking branch 'origin/fix_fdd_configs' into integration_2024_w21c 2024-05-27 12:18:32 +02:00
Robert Schmidt 1f6d4a6cfe Merge remote-tracking branch 'origin/hotfix-uint8_t-size' into integration_2024_w21c 2024-05-27 12:18:26 +02:00
Robert Schmidt c202e9173f Merge remote-tracking branch 'origin/hotfix-fdbk-for-msg2-sib' into integration_2024_w21c 2024-05-27 12:18:13 +02:00
Robert Schmidt c0b7ac9a7e Merge remote-tracking branch 'origin/fix-dci11-rb_bitmap-filling-bug' into integration_2024_w21c 2024-05-27 12:18:07 +02:00
Robert Schmidt 7ffc403098 Demote log to debug for Msg3 infeasibility
It can happen that in the current DL slot, we cannot send an allocation
for Msg3 in a later UL slot. Up to this commit, MAC printed a warning.
However, this is not really a warning, as it will likely work in the
next or a later slot. So demote this to debug.
2024-05-27 11:48:21 +02:00
Robert Schmidt f261ce9124 OAIUE pipeline: Adjust sample timing advance to make test more stable 2024-05-27 10:24:29 +02:00
Robert Schmidt 92b8453960 Merge remote-tracking branch 'origin/ci-kill-hanging-iperf3' into integration_2024_w21c 2024-05-25 12:35:35 +02:00