Commit Graph
100 Commits
Author SHA1 Message Date
Laurent THOMASandRobert Schmidt b65b5dd40e Remove specific directory for LTE SIM management tools
Move into openair3/NAS/TOOLS/CMakeLists.txt, and simplify the
CMakeLists.txt.

Co-authored-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2025-07-30 17:39:12 +02:00
Laurent THOMAS 90cf249018 add telnet commands trace 2025-07-04 09:34:17 +02:00
Laurent THOMAS 0523bcfbde fix gNB that should always perform tx in case of rfsim (like continuous-tx 2025-06-30 10:21:02 +02:00
Laurent THOMAS 1540ca3ae5 fix bug in rfsim->nb_cnx for client side. it has no usage except a cpu optimisation in case one single rfsim socket and SISO case 2025-06-30 09:06:28 +02:00
Laurent THOMAS f7598bf528 clarify first transmission to client, split process_recv in 2 functions 2025-06-30 09:06:28 +02:00
Laurent THOMAS 68857114a6 split rfsimulator too long function in smaller ones. Clean code for bad "UE" instead of rfsim client/server. Simplify logic 2025-06-30 09:06:28 +02:00
Laurent THOMAS b9c066329e trace in 4G RAR processing to debug ci result 2025-06-30 09:06:28 +02:00
Laurent THOMAS 98e6d60337 RF simulator: Fix concurrency issues during new client connections
Fix concurrency issues happening when a new client connects, sometimes
leading to a total softmodem deadlock.

Key changes:
- Fix sample sending on new client connection: send the first
  sample only to the newly connected client.
- Remove the --rfsimulator.hanging-workaround option
- Replace global nb_ue and Sockmutex with nb_cnx and Sockmutex
  in rfsimulator_state_t for better concurrency and clarity.
2025-06-30 09:06:28 +02:00
Laurent THOMAS fb85a8cda3 clarify and indent correctly the function initial sync 2025-06-27 15:21:47 +02:00
Laurent THOMAS 10ff80815f when we try to detect a specific PCI, and it fails, the SSS detection return successful detection, with wrong frequency offset 2025-06-27 15:21:13 +02:00
Laurent THOMAS 72c29248a3 remove dead globals 2025-06-03 17:03:17 +02:00
Laurent THOMAS 33d72f6080 fix C style, unefficient and complex 2025-05-09 12:10:41 +02:00
Laurent THOMAS 44716febce ue txData more contextual, but still global as it is entangled with usrp driver 2025-05-09 12:10:39 +02:00
Laurent THOMAS 1208521959 remove dead code and a wrong comment 2025-04-28 11:59:17 +02:00
Laurent THOMAS d980301f29 fix old bug always increasing frame_tx compared with 3GPP frame number 2025-04-27 20:27:36 +02:00
Laurent THOMAS 8c55c4b8ab move traces of phy simulators to stdout (some were in stderr) 2025-04-25 14:47:59 +02:00
Laurent THOMAS 7982a9da41 set correct parameter type, and fuse funcions that do same real/complex vector operations, doing this, fix a lot of unitary multiplications (else there would be numerous cast operations 2025-04-25 14:47:59 +02:00
Laurent THOMAS 95ae7772bf simplifly, reegroup functions in tools_defs.h 2025-04-25 14:47:59 +02:00
Laurent THOMAS 04fc2fbb2e make correct description of sub_cpx_vector16 and remove mixed dead code 2025-04-25 14:47:59 +02:00
Laurent THOMAS 4e3fab67a8 remove unused function with duplicated name to another one 2025-04-25 14:47:59 +02:00
Laurent THOMAS 2528a0614a - replace SIMDE package internal types usage by oai defined types
- remove some unused functions
2025-04-25 14:47:59 +02:00
Laurent THOMAS fefb96a115 merge functions conj(a)*b and a*conj(b) 2025-04-25 14:47:59 +02:00
Laurent THOMAS bb93b06663 use one call to multiply the full size vector 2025-04-25 14:47:59 +02:00
Laurent THOMAS 54828f10d0 defined and not used variable 2025-04-04 16:05:46 +02:00
Laurent THOMAS f9835e996a websrv useless if(), then string copy 2025-04-04 16:05:38 +02:00
Laurent THOMAS 990414572a error uint/int mixed in loops 2025-04-04 16:04:05 +02:00
Laurent THOMAS 5cabc74527 get_nr_prach_occasion_info_from_index() uses a uninitialzed value to make += operator 2025-04-04 16:02:56 +02:00
Laurent THOMAS 78b44a8e17 remove globale llr_layers, that seems to save 700MB, improve CPU and make the code simpler 2025-03-20 14:28:46 +01:00
Laurent THOMAS a0721cac16 remove ul_ch_estimates_time that saves 50MB memory to access in RAM, and make better quality scope data passing (no race) 2025-03-14 11:27:01 +01:00
Laurent THOMAS 8a63b01387 merge 2 functions that do the same in one and set better naming 2025-02-17 18:51:21 +01:00
Laurent THOMAS ce7bdf71e9 fix simde lacking refix 2025-02-17 11:06:08 +01:00
Laurent THOMAS 3edd989aff simplify nr_layer_mapping(), and use all simd sizes for the tail 2025-02-12 11:59:52 +01:00
Laurent THOMAS 9004787171 group two symbol loops to make one with smaller tsack size and smaller variables 2025-02-12 11:59:52 +01:00
Laurent THOMAS f73afa393e group similar functions in one version, split one too large function in two functions 2025-02-12 11:59:52 +01:00
Laurent THOMAS eb0dda59ac remove intermediate buffer and memory copy, continue to simplify nr pdsch computation 2025-02-12 11:51:28 +01:00
Laurent THOMAS 2fad8796b1 clean no_ptrs_dmrs_case() 2025-02-12 11:51:28 +01:00
Laurent THOMAS 5ff5d01fb9 simplify and order sizes of SIMD vectors 2025-02-12 11:51:28 +01:00
Laurent THOMAS 9d844135b1 local dmrs_mux and unaligned mod_dmrs 2025-02-12 11:51:28 +01:00
Laurent THOMAS 3ddb2d0502 very coarse grain dlsch computation function break into smaller functions 2025-02-12 11:51:28 +01:00
Laurent THOMAS d928e68e12 create a separate function to process dlsch ptrs 2025-02-12 11:51:28 +01:00
Laurent THOMAS 5526244ad6 create a function per dlsch_id 2025-02-12 11:51:28 +01:00
Laurent THOMAS 889b4b00e3 SIMD optimizations for Neon/AVX2/AVX512 in the PDSCH transmit path 2025-02-12 11:51:28 +01:00
Laurent THOMAS 43b981247e error-simd-intrinsic-name 2025-02-04 13:21:43 +01:00
Laurent THOMAS 6d14ac735b remove dead commented code 2025-01-30 17:15:11 +01:00
Laurent THOMAS 62e8431c98 remove code obfuscation 2025-01-30 17:14:18 +01:00
Laurent THOMAS 25652c5a24 fix bad type in dci encoding 2025-01-30 17:14:18 +01:00
Laurent THOMAS 5416be3736 move byte2m128i in a more logical place 2025-01-30 17:14:10 +01:00
Laurent THOMAS 268172a435 pure bad code fix 2025-01-30 17:12:27 +01:00
Laurent THOMAS 284b7af49c more comprehensive modulation lut table generation 2025-01-28 09:50:29 +01:00
Laurent THOMAS f272d7d1cc set correct type on qpsk modulation table 2025-01-28 09:50:29 +01:00
Laurent THOMAS c73353bed3 comprehensive dmrs reception and better cpu efficiency 2025-01-28 09:50:29 +01:00
Laurent THOMAS b999177810 remove MMX instruction usage in polar decode 2025-01-24 15:29:28 +01:00
Laurent THOMAS ef3b99a263 remove MMX instruction usage in threegpplte_turbo_encoder_sse() 2025-01-23 21:18:26 +01:00
Laurent THOMAS e106ec6d91 remove m64 type and a very basic cleaning of LTE ulsch_decoding 2025-01-23 21:18:26 +01:00
Laurent THOMAS 536b5d8760 Clean up logging module debug flags
cleanup debug/dump flags by avoiding repetitions in the source code and
enable compiler checks. Add a help text if we set a wrong debug trace
option.
2025-01-23 14:12:29 +01:00
Laurent THOMAS ca37e0c123 Clean up NAS code, remove unused compile options 2025-01-23 14:12:06 +01:00
Laurent THOMAS d68a8b51e6 Remove unused PHY_MEX compile option 2025-01-23 14:11:13 +01:00
Laurent THOMAS 0f970326c2 Remove unused UESIM_EXPANSION compile option 2025-01-23 14:10:50 +01:00
Laurent THOMAS 17bb19c7be Remove unused LOCALIZATION compile option 2025-01-23 14:10:33 +01:00
Laurent THOMAS b0734604e9 Remove useless RRC states 2025-01-23 14:10:16 +01:00
Laurent THOMAS a54eba8fe0 Remove commented code and unused type definitions 2025-01-23 14:08:17 +01:00
Laurent THOMAS fb2f893954 Remove unused static inline function 2025-01-23 13:57:36 +01:00
Laurent THOMAS a8f6563060 remove a complex and not very usefull trace in replay_node 2025-01-23 10:35:49 +01:00
Laurent THOMAS e7e01f753a remove unsed LUT 2025-01-23 10:35:49 +01:00
Laurent THOMASandThomas Schlichter eac35f07a5 Usrp constant and slow derive timestamp
Co-authored-by: Thomas Schlichter <thomas.schlichter@iis.fraunhofer.de>
2025-01-23 10:22:31 +01:00
Laurent THOMAS 48226d10bf add cpu measurement option in nr_pucchsim 2025-01-14 11:34:22 +01:00
Laurent THOMAS 6384517c01 Better code for PUCCH2 decoding 2025-01-14 11:34:22 +01:00
Laurent THOMAS f919246121 remove part of code using _m64 type (so old mmx instructions) 2025-01-14 10:07:59 +01:00
Laurent THOMAS ba27aefe4e add some const and remove dead code 2025-01-14 10:07:31 +01:00
Laurent THOMAS 7d0c89185c gcc warning on #define duplicated 2025-01-14 10:07:31 +01:00
Laurent THOMAS d5c72cf843 remove a race condition in viberti_lte and a useless global table 2025-01-14 10:07:30 +01:00
Laurent THOMAS a0d6057294 remove calls to clear SIMD registers, that was a historical issue 2025-01-14 10:06:06 +01:00
Laurent THOMASandRobert Schmidt b4bc7c96ba Move UL_INFO structure allocation local to a rx slot processing
Use UL_INFO on the stack, to simplify the code.  move in the same struct
the associated rach, pdu, crc, srs arrays that where pointed from
directly in gNB structure Keep in nfapi the existing logic that make
malloc for theses rach, pdu, crc, srs array lists

Pass only relevant fields, where appropriate.

Co-authored-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2025-01-10 18:05:58 +01:00
Laurent THOMAS e0ca70c36d replace a set of #define by a C bit array, remove duplicated extern global variable declaration 2025-01-09 15:28:25 +01:00
Laurent THOMAS 766619aa26 add process RRC input in do-ra mode (was a race cond) 2025-01-06 12:09:29 +01:00
Laurent THOMAS 9c0d90a014 Introduce UE RCC to MAC ITTI queue
Reduce race conditions through a itti queue, such that RRC-initiated MAC
memory modifications happen at the same time as MAC thread writes.
However, it doesn't resolve the problem of exact slot we should apply
the new cell configurtion.
2025-01-06 12:09:29 +01:00
Laurent THOMAS 443307a34a a lib has been added but missed dependancies 2024-12-05 11:29:42 +01:00
Laurent THOMAS 279d49415f remove un-necessary global variables 2024-12-04 12:26:36 +01:00
Laurent THOMAS 65e3c89bb1 add ue mac stats and monitoring as per gnb ones 2024-11-21 16:39:19 +01:00
Laurent THOMAS 362eba7e27 Clip the input for -32768 because this will make different result in mult_complex_vectors() compared to C version 2024-11-15 13:15:30 +01:00
Laurent THOMAS 2348b3c065 select LCG that contains the highest priorit LC with data to transmit instead of the LC with maximum waiting data size 2024-11-13 14:23:23 +01:00
Laurent THOMAS d641a76196 fix BSR report malformed, add SHORT BSR when it can (instead of LONG BSR) simplify the code and make the code more explicit, but the may structure remain (nr_write_ce_ulsch_pdu interface is complex, merging it into the called would make simpler and more interstandable code), fix some asserts related to this part of code 2024-11-13 14:15:30 +01:00
Laurent THOMAS 8f688c0064 replace assert by error logging when we call DFT with impossible size to deal with existing LTE UE 2024-11-08 12:19:23 +01:00
Laurent THOMAS 486cebce06 replace a printf() by a cleaner call to AssertFatal() 2024-11-07 17:08:18 +01:00
Laurent THOMAS fd83be4e77 change the alignment of OAI mutli-dim arrays from 16 to 32 bytes 2024-11-07 17:08:18 +01:00
Laurent THOMAS 07b9daa762 fix blocking bugs in command nr_dlsim -n100 -e27 -s35 -b 273 -R273 -x4 -y4 -z4
use a better complex vector multiplication function
2024-11-07 17:08:18 +01:00
Laurent THOMAS 89b7ce5eb9 small fix of rotate vector unit test 2024-11-07 17:07:52 +01:00
Laurent THOMAS ac06f107dd add a optimzed complex vector multiplication function 2024-11-07 17:07:50 +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
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
Laurent THOMAS ae8df083fc Add functional test for DFT 2024-10-30 18:04:59 +01:00
Laurent THOMAS 576d468809 Clean up intermediate DFT macros, remove non-existing DFTs
DFT for 9216 and 73728 don't exist and/or assert, so remove them from
the list.
2024-10-30 18:04:43 +01:00
Laurent THOMAS 5cd5f72533 case DFT12 processing with specific data organization: remove intermediate pointer 2024-10-30 17:54:58 +01:00
Laurent THOMAS 4cf2719bd9 scale in DFT16 as per normal scaling sqrt(16) = 4 2024-10-29 18:47:15 +01:00
Laurent THOMAS f1f02ec0a1 use existing functions to retrieve (i)dft enum value 2024-10-29 18:47:15 +01:00
Laurent THOMAS 345bd9cc82 remove duplicated code, add registration reject cause 2024-10-23 10:51:17 +02:00
Laurent THOMAS 21a7f994c3 process registration reject in UE 2024-10-22 17:03:19 +02:00