Commit Graph
100 Commits
Author SHA1 Message Date
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
Laurent THOMAS 6cedca1c1d fix error of grouping UE to free list for phy layer and ue to free list for fapi 2024-10-22 12:25:30 +02:00
Laurent THOMAS 9898c673d8 print rnti as hexadecimal 2024-10-22 11:05:20 +02:00
Laurent THOMAS 1614ae19e8 trace as information UE RACH steps for 4G 2024-10-22 11:05:20 +02:00
Laurent THOMAS e48e38650d Fix various problems in 4G NAS handling
- rename as_nas_info_t member data to nas_data to have a uniq name to
  trace between complex malloc/free of this pointer
- fix, maybe not perfect, these pais od malloc/free
- remove typedef name changes across transmission of these as_nas_info_t
  over itti, as name changing makes it even more confusing
- remove globals that are likely possible races
- in as_message_decode() fix memcpy size, it is hard to understand the
  initial idea, likely the author beleives a struct of struct makes a
  intermediate pointer
- in network_api.c remove globals (static but used globally)
- remove casts that are there to hide gcc warnings on probable unaligned
  access
- remain a weird mix of packed/unpacked versions of the same typedef,
  but gcc is happy
2024-10-22 11:05:20 +02:00
Laurent THOMAS 8df8de894b get out statistic array in case the rnti is not found 2024-10-22 11:05:20 +02:00
Laurent THOMAS 972a251798 bug in code duplication 2024-10-22 11:05:20 +02:00
Laurent THOMAS a1fc1972e1 one old bug, one regression 2024-10-22 11:05:20 +02:00
Laurent THOMAS a6576db51b websrv regression 2024-10-14 11:32:49 +02:00
Laurent THOMAS 8f46b07b22 Lacking RRC check: avoid SEGV if the received packet is not what we believe 2024-10-07 13:39:29 +02:00
Laurent THOMAS f77f428767 Small optimization L2 to wireshark
the code creates a sink to read all traced packets and drop it.  but
this works only if we send to a local address and if there is not
another sink (like if we trace both UE and gNB in the same machine).
this sink's purpose is only to prevent to get automatic packets back
from the kernel saying "no listener". So, instead of killing the trace
when we can't create the sink (as done previously), we now just let the
trace in operation.
2024-10-07 13:37:34 +02:00
Thomas LaurentandRobert Schmidt 5811ab1dc8 Apply 2 suggestion(s) to 2 file(s)
Co-authored-by: Robert Schmidt <robert.schmidt@eurecom.fr>
2024-10-02 09:11:49 +00:00
Laurent THOMAS 711afedfe1 warmup RF board in UE 2024-09-27 14:39:41 +02:00
Laurent THOMAS 8471922028 remove DRX from UE capabilities as we have not developped the feature 2024-09-27 11:48:33 +02:00
Laurent THOMAS 5a5063bddc cleaner faster nr_pdcch_demapping_deinterleaving() inner loop 2024-09-27 11:46:59 +02:00
Laurent THOMAS c8116b3fa3 remove dead code 2024-09-19 09:29:02 +02:00
Laurent THOMAS 31f770978c option q is to set cpu measurements but it is hardcoded in some places 2024-09-18 16:02:14 +02:00
Laurent THOMASandFrancesco Mani 7a5da40d0b Improve tracing for DLSCH decoding results
- Better trace DLSCH decoding result
- Rename the decode result variable to separate with later ack/nack
  encode of this decoding result from 3GPP (not trivial true=1 coding)
- Cleanup decodeResult usage
- Remove unused defines

Co-authored-by: Francesco Mani <email@francescomani.it>
2024-09-18 14:40:07 +02:00
Laurent THOMAS 0e7e66ecd8 add harqid in wireshark traces, refactir the trace_pdu parameters 2024-07-31 09:40:07 +02:00
Laurent THOMAS bb766be0c3 Reformatting and cleanup 2024-07-30 14:57:17 +02:00
Laurent THOMAS 8e92df78de Use gold cache in PUCCH decoding 2024-07-30 14:57:10 +02:00
Laurent THOMAS 803b0289a6 Use gold cache in code word (un)scrambling 2024-07-30 14:57:06 +02:00
Laurent THOMAS f207ac12be Use gold cache in UCI 2024-07-30 14:57:01 +02:00
Laurent THOMAS 00cb43bac3 Use gold cache for PRS decoding 2024-07-30 14:55:35 +02:00
Laurent THOMAS e445ba2d1a Use gold cache PUSCH decoding
Harmonize nr_gold_pusch() and nr_gold_pdsch(), as the gold sequence
calculation for PUSCH and PDSCH is the same.
2024-07-30 14:52:06 +02:00
Laurent THOMAS 745ea1c1dd Use gold cache for PDSCH decoding 2024-07-30 14:50:57 +02:00
Laurent THOMAS 99c8dd420a Use gold cache for PDCCH decoding, scrambling, unscrambling 2024-07-30 14:49:46 +02:00
Laurent THOMAS 0316431e27 Use gold cache for PBCH encoding&decoding 2024-07-30 14:48:36 +02:00
Laurent THOMAS 59086151e0 Add generic usage-based gold cache
Add gold sequence cache with dynamic size, private to each thread. It
periodically reorders by call rate. To free the gold sequences after end
of life time of a thread, use the pthread API.
2024-07-26 16:39:28 +02:00
Laurent THOMAS 9aaa7f100a Inversion in flags name 2024-06-19 13:49:00 +02:00
Laurent THOMAS 37e6e7e944 add test physical cell id in 5G range 2024-06-10 10:51:16 +02:00
Laurent THOMAS 45d4cec2a6 fix regressions for large physical cell id values 2024-06-10 10:51:08 +02:00
Laurent THOMAS f23c91cc5a remove rb_mask_ul from permanent storage for stack local usage 2024-06-04 19:08:47 +02:00
Laurent THOMAS b461fe5e6b fix-dci11-type0-bitmap-setting 2024-05-23 10:26:28 +02:00
Laurent THOMAS 00e883c563 remove a unused struct member 2024-05-23 08:46:12 +02:00
Laurent THOMAS 2f05261f6b reject packets of 0's 2024-05-23 08:41:01 +02:00
Laurent THOMAS 4bca825053 remove wrong trace when packet is not decoded 2024-05-23 08:03:12 +02:00
Laurent THOMAS 819427a6a0 bug fix ue UL payload filling randomly done in retransmissions (pointer
not set)
2024-05-23 08:03:12 +02:00
Laurent THOMAS 6379350f51 Correct data offset for unscrambling in PUSCH processing
Correctly compute the offset of data to unscramble in PUSCH processing
at the gNB. Rename variables to make them easier to spot (instead of
"s"), and remove a global variable.

Closes: #734
2024-05-22 09:04:33 +02:00
Laurent THOMAS f2213bf792 fix a error that was created by over complexity in setting a pointer to null for a wrong later assert verification 2024-05-20 20:57:46 +02:00
Laurent THOMAS e217980249 simplify and make better performance the mutual exclusion of processSlotTX() function 2024-05-16 14:06:24 +02:00
Laurent THOMAS 3e4526a6ad rename persisted ul harq status per pid with a uniq name as this variable is persisted in memory and accessed by multiple threads, a uniq name helps to debug 2024-05-16 14:05:39 +02:00
Laurent THOMAS 00d78f048a remove a unused global storage of slot number
This has no meaning at a global level, we run several slots: one tx,
several rx at same time. Some minor cleaning of C style
2024-05-03 18:32:26 +02:00
Laurent THOMAS c02908453a fix order error in ru.common.rxdataF filling lock, use consistently #define for buffer size 2024-05-03 18:31:45 +02:00
Laurent THOMAS bb66056b75 fix nr-ru.c external declarations in .c file
The external declarations were incorrect, leading to mismatching
prototypes of config_ru and config_rru (true bug in OAI lte!).
2024-05-03 18:31:17 +02:00
Laurent THOMAS 445aac11b9 put dci search in trace level trace, so the trace level debug prints the decoded DCIs 2024-04-29 16:03:43 +02:00
Laurent THOMAS 309d5cacc9 remove sleep() in UE NAS that have no good purpose 2024-04-26 10:19:59 +02:00
Laurent THOMAS d67383bd42 segv on missing if() clause 2024-04-26 10:19:59 +02:00
Laurent THOMAS a07461813d NR UE: Implement DCI format 11 type0 for contiguous allocations 2024-04-26 10:07:23 +02:00
Laurent THOMAS ab2b868b75 improve polar init and polar readability 2024-04-24 15:26:21 +02:00
Laurent THOMAS df9cd171f6 remove a useless copy and specific buffer for all UE UL payload 2024-04-17 10:59:13 +02:00
Laurent THOMAS 0d0e111135 remove asserts on min RX/TX, set the RX/TX shift as 2 in the UE 2024-04-17 09:50:23 +02:00
Laurent Thomas be3452a10e Reduce stack memory size for layer mapping
Delete small pieces of dead code
2024-04-12 11:14:08 +02:00
Laurent THOMAS df86214067 Add a generic function for tx write out of order (timestamps not increasing)
Add an API to allow out-of-order writes to a radio interface, unlike the
current interface.

this function is called in UE in this commit, even if the tx might
still be in order.

Later, i plan to improve UE pulti-threading, that will lead to out of
order tx.  also, the gNB will benefit of this new function to replace
several specific pieces of code that reorder tx with over complex and
slow systems
2024-04-04 08:19:52 +02:00
Laurent THOMAS effe4f1c81 replace transient malloc by stack allocation, add defense code on block size 2024-04-03 10:31:34 +02:00
Laurent THOMAS 7106f3c15c fix sleeping UE when PSS detection is wrapping over frame buffer 2024-04-03 09:44:50 +02:00
Laurent THOMAS a3f472a58b remove stored G in UE DL, not needed and creating issues with DCI format 11/type0 2024-04-03 09:42:46 +02:00
Laurent THOMAS 6b4710d36d add error code for pdu session reject in the ue 2024-03-27 13:12:35 +01:00
Laurent THOMAS 86ebebf3f5 fix merge conflicts 2024-03-27 10:06:33 +01:00
Laurent THOMAS 9a4294ebab for_review_then_squash 2024-03-26 20:58:44 +01:00
Laurent THOMAS a95dffc80e delete dead files 2024-03-26 20:57:31 +01:00
Laurent THOMAS 80d4d600f3 print the mib when decoded 2024-03-26 20:57:31 +01:00
Laurent THOMAS 88fb3c3598 change type to c16_t around dmrs computation pieces of code 2024-03-26 20:57:31 +01:00
Laurent THOMAS 99e1bb1a00 fix ug on pilot 2 in nr_pbch_dmrs_correlation() that is lacking signal processing, make the code in pbch simpler and faster 2024-03-26 20:57:31 +01:00
Laurent THOMAS 39400a458e change partially pbch detection to c16_t instead of hidden complex in int16_t and int32_t 2024-03-26 20:57:31 +01:00
Laurent THOMAS 34f260769b make better log text for ue synchronization, make better sync code, no functional change 2024-03-26 20:57:29 +01:00
Laurent THOMAS b97c70fd87 remove 5G dependency on 4G mac.h include, separate RA state enums between 4G/5G and UE/gNB
add RA stat trace by enum name instead of integer printing

fix minor a few minor typos
2024-03-15 10:55:11 +01:00
Laurent THOMAS 77d749ba87 improve function that map ro to ssb in the UE: make dynamic smaller memory allocation than array[max][max][.... Saves about 100MB of memory and avoid real time glitch of milli seconds of memset(110MB) 2024-03-12 09:53:02 +01:00
Laurent THOMAS 1ab3b8dd8e add version signature in core files to be able to compare with the ELF one 2024-03-08 16:29:54 +01:00
Laurent THOMAS 782a850159 tx_timestamp computation doesnt count slots from rx timestamp, and a small simplification just after 2024-03-08 16:29:54 +01:00
Laurent THOMAS c5e4bea6b9 make explicit return of the clock drift to shift the corresponding number of samples
remove corresponding global variables
2024-03-07 15:28:22 +01:00
Laurent THOMAS 4245dd9be9 Remove useless declarations 2024-03-07 09:57:31 +01:00
Laurent THOMAS c5c883f71d small-bug-from-cdb18d38bfa6aee288a68d9e8881615a48addd83-and-one-gcc-warning 2024-03-06 15:44:56 +01:00
Laurent THOMAS 24d30ae78a log module improvement: remove redundant declarations y using C macro, remove unused variables, remove unused log components, move information to smaller visibility 2024-03-06 09:03:20 +01:00
Laurent THOMAS bc6d1ad48d reduce the hot memory for LOG_x decision from 1.2MB to less than one mem page (4KB) 2024-03-06 08:52:34 +01:00
Laurent THOMAS d1002cc729 move declarations out from log.h to a better place 2024-03-06 08:51:24 +01:00
Laurent THOMAS 2129ee3c9c remove global visibility of log variables, remove circular .h dependancy 2024-03-06 08:51:24 +01:00
Laurent THOMAS 2962340a8b Add variable pointer to catch the rx gain between redundant strct members rfdevice and ifdevice 2024-03-04 10:48:13 +01:00
Laurent THOMAS 50d4d489f7 fix timing advance from msg2/rar 2024-03-04 10:07:07 +01:00
Laurent THOMAS c92cbe67b5 fix b210 usrp tx sample error compemsation 2024-03-04 10:07:07 +01:00