2723 Commits (a9d21696c5ab7bb6ac2336749500f5a833c9f76a)

Author SHA1 Message Date
Andre Puschmann a9d21696c5 rlc_am_lte: make number of RLC SDUs per PDU a compile-time parameter
this allows to set the maximum number of RLC SDUs included
in a single PDU at compile time.
4 years ago
Andre Puschmann bbcaa49429 network_utils: fix TSAN detected race 4 years ago
Andre Puschmann 0e6e3d201e sys_metrics: reduce log level when measurement interval is shorter than expected
on highly loaded systems it can happen that the get_metrics() is called
twice within a few houndred milliseconds. Logging a warning in this
case isn't needed, so reduce to info.

on the other hand, 100ms might be to convervative. Patch also
lowers the smallest interval to 10ms
4 years ago
Ismael Gomez 4e39982a19
Fix TSAN warnings in UE (#3021)
* Protect PHY SR signal management in a class

* Protect intra_freq_meas vector

* Protect cell and srate shared variables in thread-safe classes

* srsue,srsenb: include TSAN options header

* Protect ue_rnti_t and rnti scheduling windows behind thread-safe classes

* Protect access to state variable in sync_state

* Protect access to metrics configuration

* Protect access to is_pending_sr

* Protect access to UE prach worker

* Protect UE mux

* Avoid unlocking mutex twice

* Fix data races in RF/ZMQ

* Fix data races in intra_measure and PHY

* Fix minor data races in MAC

* Make TSAN default behaviour to not halt on error

* Fix blocking in intra cell measurement

* Address comments

Co-authored-by: Andre Puschmann <andre@softwareradiosystems.com>
4 years ago
David Rupprecht 4ed33fed7d Fixed unpack bytes limit 4 years ago
Pedro Alvarez 1b676aa406 Moved lib GTPU to its own folder 4 years ago
Pedro Alvarez 865298f8d5 Moved lib PDCP to its own folder 4 years ago
Pedro Alvarez 171d5727be Moved lib RLC into it's own folder 4 years ago
Andre Puschmann b6a3b8c5b1 rlc: fix dtor
TSAN was complaining about destroying a locked mutex
4 years ago
faluco a70ad58440 Fix a data race in the UHD class wrapper where the last error member was being set concurrently causing random crashes.
Introduce a new macro to catch UHD exceptions and log them directly instead of storing an error string, similar to what errno does.

Remove usrp logging helpers that depend on the now removed member since all calls potentially log the error directly.
4 years ago
faluco e20934583e Remove an unsafe assert in the log backend that could be triggered under very certain circumstances.
RFCI has detected this assert failing in the log_backend_test. I have not been able to reproduce this locally but my theory is the following one:
one of the unit tests does the following:

backend.start();
backend.stop();

the internal running_flag member could be set to true and then to false by the main thread before the worker thread calls do_work(). If this happens
the assert will be triggered, which is wrong and too conservative, so remove the assert.
4 years ago
Xavier Arteaga 6f5614a0cc Suggested modifications on gNb MAC/PHY interface 4 years ago
Xavier Arteaga 8378c85ec4 Refactored gNb PHY 4 years ago
Xavier Arteaga 9126ad3b8b Added NR type1 RIV function helper 4 years ago
Xavier Arteaga e98a6f9eea Make ACK M constant i UEDLNR 4 years ago
Andre Puschmann 483a216bd5 ue,stack: refactor handling of radio bearears in UE stack
this is a rather large commit that is hard to split because
it touches quite a few components.

It's a preparation patch for adding NR split bearers in the next
step.

We realized that managing RLC and PDCP bearers for both NR and LTE
in the same entity doesn't work. This is because we use the LCID
as a key for all accesses. With NR dual connectivity however we
can have the same LCID active at the same time for both LTE and NR
carriers.

The patch solves that by creating a dedicated NR instance for RLC/PDCP
in the stack. But then the question arises for UL traffic on, e.g. LCID 4
what PDCP instance the GW should use for pushing SDUs. It doesnt' know
that. And in fact it doesn't need to. It just needs to know EPS
bearer IDs. So the next change was to remove the knowledge of what
LCIDs are from the GW. Make is agnostic and only work on EPS bearer IDs.

The handling and mapping between EPS bearer IDs and LCIDs for LTE
or NR (mainly PDCP for pushing data) is done in the Stack because
it has access to both.

The NAS also has a EPS bearer map but only knows about default and
dedicated bearers. It doesn't know on which logical channels they
are transmitted.
4 years ago
Andre Puschmann a4b2a065ff pdcp: reword warning when dropping PDU 4 years ago
Andre Puschmann 7113e55d53 rlc: refactor RLC entity to use smart pointers for holding bearers
this patch mainly modernizes the bearer creation to use smart pointers.
that allows to simplify the error handling.

ue_stack is changed to match new interface. This commit compiles
but doesn't work.
4 years ago
David Rupprecht 6d5391756c Refactor build of RLC NR config 4 years ago
David Rupprecht d1d8500ce5 Add testcase for reconfiguration 4 years ago
Xavier Arteaga eb7980f2b3 Initial UE synchronization for NR 4 years ago
Pedro Alvarez 4d13906760 Increase logging level of MAC mismatches to warning in PDCP 4 years ago
Andre Puschmann e1fb58d76e rlc_um: reduce log level for message handling lost PDUs
when a lost PDU is detected a warning will be logged. In theory
this could be info as well but a warning may help to detect issues
in tests. The same event causes multiple other warnings to be logged,
which is very spammy. The patch reduces the log level for
those messages to info.
4 years ago
Pedro Alvarez aae266e848 Added configuration option for S1AP SCTP bind port 4 years ago
David Rupprecht 85d7a851fb Added 5G NAS PCAP support 4 years ago
Andre Puschmann 83bf5dcd49 rlc_am_lte: reduce time holding Tx mutex when processing status PDUs
the patch is a re-implementation of the customer-specific optimization
we did in order to reduce the time the RLC holds the Tx mutex when
processing an incoming status PDU.

The patch makes sure to never operate on a raw mutex but instead
uses the deadlock-avoiding RAII lock.
4 years ago
Ismael Gomez 5aa5a8e997 Revert UE changes 4 years ago
Ismael Gomez e35a0d72fa Revert UE changes 4 years ago
Ismael Gomez dd9889e07c Add carrier index to uplink PCAP captures 4 years ago
Xavier Arteaga cf09044453 Optimised random bit (unpacked) and byte (packed) generator 4 years ago
Xavier Arteaga d2a19c3043 SCH minimum number of iterations to 2 to reduce systematic false alarm probability 4 years ago
Xavier Arteaga ef4c978d72 Optimized byte random generator 4 years ago
Andre Puschmann d7204df896 rlc_am_lte: check rx window first when receiving status PDU
move rx window check up so no actions are taken when receiving
malformed status PDU
4 years ago
Xavier Arteaga 2cd8ba3a1a PDCCH test skips 100PRB for ARM 4 years ago
Andre Puschmann 19f30aa652 rlc_am_lte: fix handling of out-of-order status PDUs
before processing incoming status PDUs we should be checking
if the ACK_SN falls within our current Tx window. If not the PDU
will be dropped.

Without the check we were incorrectly processing the status PDU
and because the sequence number wrap around wasn't working
correctly if ACK_SN is smaller than vt_a we were corrupting
our Tx window.
4 years ago
Andre Puschmann b862bbc2e6 rlc_am_lte: add missing mutex to get_status getter
fixws race detected with TSAN
4 years ago
Andre Puschmann 878142843e rlc_am_lte: add further sanity check when creating status PDU
the test verifies that the ACK_SN of a status PDU falls inside the
rx_window of the receiver. If not, than the RLC state has been
corrupted and the status PDU is likely invalid.
4 years ago
Xavier Arteaga 6be57dd216 Disable PDCCH false detection for non AVX2 machines 4 years ago
Alejandro Leal Conejos a51f2a1de4 Fills the value of the number of cpus for the system_metrics_t and
initiliaze its value to 0 when executing 2 measures in less than 100 ms.
4 years ago
Pedro Alvarez a53b321ab8 Release UE upon reception of integrity error. 4 years ago
Pedro Alvarez 299d2ee35d Added interface to make the PDCP notify the RRC of integrity check
failures.
4 years ago
Xavier Arteaga a79d518799 Added SSB search measure/decode file test 4 years ago
Xavier Arteaga 5181a9d64c Implemented PBCH blind decode 4 years ago
Xavier Arteaga a7b7f8e78a Avoid SSB search to have a peak that SSB data is outside buffer 4 years ago
Xavier Arteaga 480f1b14fe Protect Radio from null phy 4 years ago
Xavier Arteaga 9621cf57c2 Implemented NR SS raster object 4 years ago
Xavier Arteaga 49d857cd17 Refactored decode_tb function 4 years ago
Xavier Arteaga 22b1673b36 Added CRC match function and simplify CRC check 4 years ago
Xavier Arteaga 7846bfccb1 Implemented softbuffer RX CRC reset 4 years ago
David Rupprecht ff3e7c321d Added bref function for calc distance til end 4 years ago