Laurent THOMAS and Robert 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 THOMAS and Thomas 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 THOMAS and Robert 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