Commit Graph
27732 Commits
Author SHA1 Message Date
Robert Schmidt 9f9299706b Improve cross-compile documentation
- Give introductory line
- Reformulate headers to clarify steps
- Reference dockerfiles for further information
2024-11-07 15:10:24 +01:00
Robert Schmidt 49584e6cb3 fixup 2024-11-07 13:17:21 +01:00
Robert Schmidt 2204fc13db Compile telnetsrv in cross-compilation pipeline 2024-11-07 12:44:26 +01:00
Robert Schmidt 76c3e4b72e Remove x86-specific instructions from telnet server
telnetsrv uses the Intel/AMD-specific "cpuid" instruction, which is not
available on ARM machines. Remove the call.

The previous code was checking for the number of cores, which is
retained by a call to get_nprocs(). I did not find an equivalent for the
number of threads in C. In C++, there would be
https://en.cppreference.com/w/cpp/thread/thread/hardware_concurrency, in
case it's relevant for anybody.
2024-11-07 12:41:47 +01:00
Robert Schmidt a650dcc8ab Remove Interop-F1/Accelleran-CU testing pipeline
We don't have access to the images for the Accelleran CU anymore, so we
can't run the test. Remove the pipeline from the repository.
2024-11-07 12:33:47 +01:00
Robert Schmidt 0e93a8b4cf Move nr_polar_init.c to nrPolar_tools/ 2024-11-07 11:58:44 +01:00
Robert Schmidt 16535f3de4 Reformat all polar code
Commands used:

    clang-format -i openair1/PHY/CODING/TESTBENCH/polartest.c
    clang-format -i openair1/PHY/CODING/nr_polar_init.c
    clang-format -i openair1/PHY/CODING/nrPolar_tools/*
2024-11-07 09:43:19 +01:00
Laurent THOMAS 28234893f7 add default value setting instead of assert if we process uninitialized beta 2024-11-07 09:35:50 +01:00
Laurent THOMAS 4a971caf9f use SIMD in the highest cpu part
the version in develop is difficult to understand, and surprizing design
it loops only when avx2mod == 0 because when this test is false, the
size is always small i also spent time to understand, but i think i have
not changed it by not looping over the array.
2024-11-07 09:35:50 +01:00
Bartosz Podrygajlo 00e50f082d Limit recursion in polar decoder
Use non-recursive polar decoder after traversing the tree once. Maximum number
of nodes is set to 600 (unsure of the maximum). This is more performant
than the recursive version.
2024-11-07 09:29:59 +01:00
Laurent THOMAS a235206647 minor improvements for memory and SIMDE 2024-11-07 09:29:41 +01:00
Laurent THOMAS 3e019af4d9 remove the big LUT for decoder de-interleaver
no performance degradation

some reformatting
2024-11-07 09:29:21 +01:00
Laurent THOMAS d57ea715c0 Improve polar decoder/encoder
- Ensure packed struct through bitfield
- decoder tree buffer increase: i don't find evidence in the 3GPP
  standard of the max size of polar coded PDU.  even with this max size,
  the way this tree is built is not trivial.  so, it is hard to predict,
  i just put 8 system pages (32KB) that looks enough [1]
- a lot of reformatting

[1] https://arxiv.org/pdf/1804.04389
according to this paper, the largest polar code in 5G is in UL, so
likely the biggest problem will be in gNB, not the UE.  in DL, the max
output coded block is 512, in UL 1024.  probably the tree we discuss is
related to this size.

"frozen bits" means only bits we don't encode/decode because polar code
size is only by power of 2.
We see this in OAI code:  NR_POLAR_PUCCH_N_MAX is 10, so 2^10 is 1024,
that is the maximum size for 5G polar code length.  in the code, we
assert if N > 512: "N = %d, not done yet\n",
polarParams->N".  so, the today OAI code can't do PUCCH large blocks.

using current oai limitation of 2⁹ max code size, we can create up to
2^9+2⁸... nodes, so 1023 nodes in the tree.  the problem then is that
each node have variable size, depending on the 'level' (the power of 2
we are currently).  the algo provision large alpha and beta to be able
to store all lower levels in the tree (int leaf_sz = 1 << level)
therefore upper tree nodes are large (the top level for n=9 uses about
1.5KB) and the bottom nodes uses 64 bytes.  if all nodes are populated,
the size will be very large: 1.5KB + 2 * 800 + ....  but, we create
nodes in the tree only for the "information bits", so the payload, that
is limited to 128 bits (else we assert, the code is not "finished").
1.5KB * 128 is >> 8KB i allocated.  but, we can't create more than one
mode at top level, so there is maximum 1.5KB + 2 * 800, + 4 * 400 + 8 *
200 + 16 * 100 + remaining of 128-32 nodes of 64 bytes.  about 14KB.

i allocated 1024*sizeof(__m256i) bytes = 32KB that looks good.
2024-11-07 09:25:18 +01:00
Guido Casati b61de6453a Refactor NRRCConfig
* the goal of this function is to initialize and configure the RAN Context
* the goal of get_options is to get command line options
* this commit aims at making the implementation more consistent
* move initialization of RC.nb_nr_CC to this function
* cleanup redundant initializations of RC.nb_nr_macrlc_inst outside NRRCConfig
* cleanup redundant initization of RC.nb_nr_macrlc_inst from getter function (get_node_type)
* cleanup RC initialization in RCconfig_NR_L1
* removed redundant log lines (print number of instances in NRRCConfig only)
* do RC init after getting CL options and configuration
* get_node_type shall access configuration only, not RC context
* NRRCConfig shall be called only once: made it thread-safe
2024-11-06 10:16:39 +01:00
Guido Casati 14a379cb75 Removed global variable NB_RU
* this variable was set after RC.nb_RU, which is set in NRRCConfig
  therefore it was redundant since it can be easily replaced by
  the original
2024-11-06 10:16:11 +01:00
Guido Casati b7063c8b75 Return a pointer to a new RRC instance (gNB_RRC_INST) from RCconfig_NRRRC 2024-11-06 10:15:43 +01:00
Guido Casati f80b09ac99 Simplified use of nb_nr_inst
* nb_nr_inst represents the number of gNB instances and the number of RAN contexts
* it used also to count the number of RRC instances in the node
* it is set from config file in NRRCConfig, therefore redundant checks after
  this function have been removed
* redundant global variable NB_gNB_INST, set after nb_nr_inst, was removed
2024-11-06 10:15:42 +01:00
Guido Casati eaeae880d0 Removed unused wait_for_sync 2024-11-06 10:15:26 +01:00
Guido Casati dfb90a173d Cleanup commented out code in nr_init.c 2024-11-06 10:15:26 +01:00
Guido Casati 881c6b0c1a Refactor l1_north_init_gNB
* code cleanup
* clang-formatted
* simplified code
2024-11-06 10:15:25 +01:00
Guido Casati 3e5292ca0b Cleanup unused global vars in executables/nr-softmodem.c 2024-11-06 10:14:58 +01:00
Guido Casati 3698881849 Removed redundant initialization of pre-processor function pointers
* done already in mac_top_init_gNB
2024-11-06 10:14:58 +01:00
Guido Casati ba43ebb5a8 Cleanup of dump_nr_prach_config 2024-11-06 10:14:58 +01:00
Guido Casati ebeedbfe7f Cleanup of unused set_default_frame_parms 2024-11-06 10:14:57 +01:00
Guido Casati e828d0e6a4 Removed unused num_ulprbbl in gNB_MAC_INST_s 2024-11-06 10:14:42 +01:00
Guido Casati 2ff25e688a Remove gNB and L1 init in RCconfig_nr_prs
* gNB and L1 init is done in init_gNB and RCconfig_NR_L1
* moved RCconfig_nr_prs out of create_gNB_tasks for consistency
* do RCconfig_nr_prs only for L1 instances
2024-11-06 10:14:42 +01:00
Guido Casati e57acf6190 Refactor RCconfig_NR_L1
* removed initialization of gNB
* separate function to get blacklisted UL PRBs
* call the getter in both L1 and MAC/RLC configuration
* other minor improvements
2024-11-06 10:14:41 +01:00
Guido Casati 2a9cb35348 Do L1 configuration right after gNB initialization
* do always gNB init for L1 instance
  and also for CU and CU-CP
* do L1 config only for L1 instances
2024-11-06 10:13:06 +01:00
Guido Casati d8c7ff4c2c Refactor init_gNB()
* code cleanup
* clang-formatted
* adopted calloc_or_fail
* allocate nb_nr_L1_inst of RC.gNB instead of (RC.nb_nr_L1_inst + 1)
2024-11-06 10:12:52 +01:00
Bartosz Podrygajlo af63f3f91c Add missing asserts for mac->if_mutex lock/unlock calls 2024-11-06 09:58:17 +01:00
Robert Schmidt 2696f475aa Remove libatlas-base-dev from ARM64 deps: not needed (see #802) 2024-11-06 09:51:01 +01:00
Jaroslava Fiedlerova 9ce8a9ac7d CI: use default value for ulsch_max_frame_inactivity in 60 MHz 4x4 config file 2024-11-05 20:04:04 +01:00
Jaroslava Fiedlerova b77c0d81e0 CI: update information about frequency in SA-2x2 config files 2024-11-05 20:04:04 +01:00
Jaroslava Fiedlerova 5e8d62ff85 CI: remove ssb_SubcarrierOffset from config file
ssb_SubcarrierOffset is no longer taken in account from the gNB config file,
as it is computed automatically.
2024-11-05 20:04:04 +01:00
Jaroslava Fiedlerova b3d45cf698 CI: Add test with 4 DL layers, 60 MHz BW to SA-2x2 pipeline 2024-11-05 20:04:04 +01:00
Bartosz Podrygajlo 4d07003652 Thread safe get_ue_nas_info
Call get_ue_nas_info before any thread starts to prevent
concurrent initialization of uicc array.
2024-11-05 13:50:55 +01:00
Bartosz Podrygajlo f6ea1648e9 Fix data race on csiim_vars
csiim_vars used to be global array for each UE. Now its present in phy_data which
is in dynamically allocated memory
2024-11-05 13:50:55 +01:00
Bartosz Podrygajlo 0109a6b976 Fix data race on csirs_vars
csirs_vars used to be global array for each UE. Now its present in phy_data which
is in dynamically allocated memory.
2024-11-05 13:50:55 +01:00
Bartosz Podrygajlo 900fcd9762 Thread safety for MAC config
Move mac_IF_mutex to MAC instance and use it for ensuring thread safety when modifying
MAC structures from RRC.
2024-11-05 13:50:55 +01:00
Robert Schmidt 220d851deb Merge branch 'integration_2024_w44' into 'develop'
Integration: `2024.w44`

See merge request oai/openairinterface5g!3081

* !2988 Add functional DFT test
* !3072 snow3g: fix array size
* !3073 small fix for 3 digit mnc usage in sib1
* !3040 Update pbchsim to work with other numerologies
* !3078 Simplify logs in gNB&UE
* !3080 Add Fedora 41, build_oai cleanup
* !3061 RLC optimization
* !3008 Fix regression 4g
* !3084 Fix a typo in nrue.uicc.yaml file
* !3085 chore(ci): creating a develop tag on top of develop-commit-id tag for the local private registry
2024-11-05 11:58:33 +00:00
Robert Schmidt e3c3a8a6ff Merge remote-tracking branch 'origin/ci-add-develop-tag-in-private-repo' into integration_2024_w44 (!3085)
chore(ci): creating a develop tag on top of develop-commit-id tag for the local private registry

Create a 2nd tag of develop for all images on the local registry.  We
are doing this in order to simplify cross-repository testing between
FlexRIC and RAN.
2024-11-05 11:03:02 +01:00
Robert Schmidt 70885cc959 Merge remote-tracking branch 'origin/nrue-yaml-hotfix' into integration_2024_w44 (!3084)
Fix two issues with softmodem yaml files

- Fix a typo that prevents casting max_chan to integer in nrue.uicc.yaml
- Remove unused field ssb_PositionsInBurst_PR from gNB example config
  yaml file
2024-11-05 11:02:24 +01:00
Robert Schmidt f216c47ace Merge remote-tracking branch 'origin/fix-regression-4G' into integration_2024_w44 (!3008)
Fix Regression 4G

- Fix various bugs and/or regressions in 4G code
- Also, the CI does not test RFsim 4G with --sanitize, enables this to
  detect problems.
2024-11-04 19:43:52 +01:00
Robert Schmidt 01aadcac1f Merge remote-tracking branch 'origin/rlc-optimization' into integration_2024_w44 (!3061)
RLC optimization

Two improvements:

- using functions instead of function pointers which enables inlining
- avoid 1 malloc/free per SDU

Benchmark results:

before:

    BM_nr_rlc_am_entity/20000           5036721 ns      5036541 ns          138
    BM_nr_rlc_am_entity/20000           5032061 ns      5031849 ns          138
    BM_nr_rlc_am_entity/20000           5037071 ns      5037056 ns          138
    BM_nr_rlc_am_entity/20000           5035472 ns      5035248 ns          138
    BM_nr_rlc_am_entity/20000           5032860 ns      5032681 ns          138
    BM_nr_rlc_am_entity/20000_mean      5034837 ns      5034675 ns            5
    BM_nr_rlc_am_entity/20000_median    5035472 ns      5035248 ns            5
    BM_nr_rlc_am_entity/20000_stddev       2267 ns         2315 ns            5
    BM_nr_rlc_am_entity/20000_cv           0.05 %          0.05 %             5

after:

    BM_nr_rlc_am_entity/20000           4974403 ns      4974202 ns          140
    BM_nr_rlc_am_entity/20000           4976705 ns      4976444 ns          140
    BM_nr_rlc_am_entity/20000           5004550 ns      5004508 ns          140
    BM_nr_rlc_am_entity/20000           4974652 ns      4974460 ns          140
    BM_nr_rlc_am_entity/20000           4976447 ns      4976225 ns          140
    BM_nr_rlc_am_entity/20000_mean      4981351 ns      4981168 ns            5
    BM_nr_rlc_am_entity/20000_median    4976447 ns      4976225 ns            5
    BM_nr_rlc_am_entity/20000_stddev      13009 ns        13087 ns            5
    BM_nr_rlc_am_entity/20000_cv           0.26 %          0.26 %             5
2024-11-04 19:42:43 +01:00
Raphael Defosseux 5e7fa3fc64 chore(ci): creating a develop tag on top of develop-commit-id tag for the local private registry
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2024-11-04 15:12:20 +01:00
Bartosz Podrygajlo 63fb3af917 Remove unused ssb_PositionsInBurst_PR field from gNB yaml file example 2024-11-04 14:47:46 +01:00
Bartosz Podrygajlo 7a4aa41c90 Fix a typo in nrue.uicc.yaml file
Fix a typo that prevents casting max_chan to integer
2024-11-04 13:07:56 +01:00
Robert Schmidt 1b1be2ebea Merge remote-tracking branch 'origin/fedora-41-cleanup' into integration_2024_w44 (!3080)
Add Fedora 41, build_oai cleanup

- Add Fedora 41 to list of supported distributions
- Remove some dependencies in RHEL that are not necessary
- Cleanup some build_oai documentation of non-supported options
2024-11-01 11:59:44 +01:00
Robert Schmidt da7a028a3f Merge remote-tracking branch 'origin/logs-refactor-orange' into integration_2024_w44 (!3078)
Simplify logs in gNB&UE

- reduce the amount of printf() that outputs useless info
- in MAC, PHY, NGAP, RRC, mark some "important" UE events with LOG_A for
  better visibility -> can put log_config.global_log_level analysis to
  only see important stuff
- in RRC, use some macro to consistently print logs
- track the cellID of a UE in RRC
2024-11-01 11:58:47 +01:00
Robert Schmidt 25405d1720 Merge remote-tracking branch 'origin/NR_PBCHSIM_changes' into integration_2024_w44 (!3040)
Update pbchsim to work with other numerologies

NR PBCHSIM updated to work with 15Khz and 120Khz.
2024-11-01 11:58:13 +01:00