Commit Graph

3945 Commits

Author SHA1 Message Date
Andre Puschmann 654afac9c7 nas_5g_msg_test: remove copy_msg_to_buffer() that is now in test_common.h 2021-07-08 14:06:10 +02:00
David Rupprecht 724af2b060 Added nas 5g msg packing and unpacking 2021-07-08 09:34:57 +02:00
Andre Puschmann e330f50ef8 rrc_meas_test: add packing test for measObjectNR 2021-07-06 21:57:44 +02:00
Andre Puschmann a2dd83a7e9 asn1: rename RRC NR test to avoid confusion with component test 2021-07-06 21:57:44 +02:00
Andre Puschmann fd7b9a0575 enb,nsa: add basic RRC EUTRA<>RRC NR interface for SgNB addition 2021-07-06 21:57:44 +02:00
Andre Puschmann 6bf3feda92 rrc_nr_test: add packing test for NR radio bearer config
also add (still incomplete) secondary cell group config pack test
2021-07-06 21:57:44 +02:00
Andre Puschmann c9e87b2cf3 config_file: print message when config file couldn't be read
this prints an message on stdout so config files are not
simply skipped and the default one is read instead.
2021-07-06 21:57:44 +02:00
Andre Puschmann fa461f0129 rrc_nr: fix linker error in setup_release_c
move implementation to cc file to avoid

[build] /bin/ld: CMakeFiles/rrc_nr_asn1_test.dir/rrc_nr_test.cc.o: in function `asn1::rrc_nr::setup_release_c<asn1::rrc_nr::pdcch_serving_cell_cfg_s>::set_setup()':
[build] /home/anpu/src/srsLTE/lib/include/srsran/asn1/rrc_nr.h:2276: undefined reference to `asn1::rrc_nr::setup_release_c<asn1::rrc_nr::pdcch_serving_cell_cfg_s>::set(asn1::rrc_nr::setup_release_c<asn1::rrc_nr::pdcch_serving_cell_cfg_s>::types_opts::options)'
[build] clang: error: linker command failed with exit code 1 (use -v to see invocation)
2021-07-06 21:57:44 +02:00
Andre Puschmann 4379c20eb9 rlc_am_lte: avoid locking of Rx mutex twice when generating status PDU
call reset_status(), which now is an private method directly when
building a status PDU. No need for the Tx side to call Rx again.
2021-07-06 12:50:48 +02:00
Andre Puschmann 53a7dc78ee rlc_am_lte: replace do_status boolean with atomic
the do_status is queried from the Tx code frequently. To reduce
chances to delay the execution because the RLC Rx side is currently
holding the mutex we can use an atomic.
2021-07-06 12:50:48 +02:00
Xavier Arteaga 5307fec2f0 Added GNB MAC UL info initial interface and fix PHY implementation 2021-07-05 17:51:27 +02:00
Xavier Arteaga cf496e75eb Fix default PHY NR configuration 2021-07-05 17:51:27 +02:00
Xavier Arteaga 2fbd172888 Initial PHY NR configuration generator 2021-07-05 17:51:27 +02:00
Xavier Arteaga 320aabec13 Initial PHY NR configuration 2021-07-05 17:51:27 +02:00
Xavier Arteaga e764a26136 Integrated PUCCH decoding in gNb 2021-07-05 17:51:27 +02:00
Xavier Arteaga 3fe9176750 Added PUCCH dedocder to slot worker 2021-07-05 17:51:27 +02:00
Xavier Arteaga e3afd945bc Refactored NR HARQ ACK feedback 2021-07-05 17:51:27 +02:00
Xavier Arteaga 658b47d917 Added NR PUSCH and PUCCH decoder in gnb_ul 2021-07-05 17:51:27 +02:00
Xavier Arteaga 89994cd5a8 change ERROR macro format to be parsed by IDE 2021-07-05 17:51:27 +02:00
Xavier Arteaga f6fc215541 Refactored enb_dl_nr to gnb_dl and initial gnb_ul 2021-07-05 17:51:27 +02:00
Xavier Arteaga eecaccb541 Added NR PHY helpers 2021-07-05 17:51:27 +02:00
Andre Puschmann 6372f89c09 s1ap_test: fix compilation on 32bit 2021-07-05 12:29:49 +02:00
Andre Puschmann f292042f66 rlc_am_lte: use try-lock when building status PDU
the patch uses try-lock whenever a status PDU is tried
to be built. This makes sure that when the lock is currently
hold (e.g. by a thread processing rx PDUs) the generation
of the status PDUs is not taking too long and blocking the calling
thread. Instead the status PDU generation is deferred to the next
Tx opportunity.

It's a probabilistic approach that assumes that at some stage the
lock can in fact be acquired.
2021-07-05 09:28:29 +02:00
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.
2021-07-05 09:28:29 +02:00
David Rupprecht f90e359208 Moved cp to test common 2021-07-02 17:23:06 +02:00
Andre Puschmann bbcaa49429 network_utils: fix TSAN detected race 2021-07-02 17:22:49 +02:00
Andre Puschmann a9ad408f51 task_scheduler: use block_queue for internal tasks
TSAN detected wrong use of the old deque-based internal queue. To avoid
unwanted/undetected mis-use the patch uses the thread-safe block_queue
data structure instead.
2021-07-02 17:22:49 +02:00
Andre Puschmann 626f24c9f9 block_queue: use class mutex to protect size() getter
detected with TSAN
2021-07-02 17:22:49 +02:00
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
2021-07-02 12:01:39 +02:00
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>
2021-07-01 17:39:54 +02:00
David Rupprecht 4ed33fed7d Fixed unpack bytes limit 2021-07-01 17:02:29 +02:00
Pedro Alvarez 05fbca43d1 Fix GCC 11 warning in dyn_array 2021-07-01 10:55:11 +01:00
Pedro Alvarez 1b676aa406 Moved lib GTPU to its own folder 2021-06-30 18:19:20 +01:00
Pedro Alvarez 865298f8d5 Moved lib PDCP to its own folder 2021-06-30 18:19:20 +01:00
Pedro Alvarez 171d5727be Moved lib RLC into it's own folder 2021-06-30 18:19:20 +01:00
Francisco Paisana 4d014e7ceb s1ap,feature: make the ts1 reloc timers configurable via the enb.conf 2021-06-29 20:39:32 +02:00
Andre Puschmann b6a3b8c5b1 rlc: fix dtor
TSAN was complaining about destroying a locked mutex
2021-06-29 14:27:07 +02:00
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.
2021-06-28 21:16:56 +02:00
Andre Puschmann 4d11e5552a rrc,ue: for RRC conn release, delay transition to RRC idle by 60ms as per TS 36.331
when receiving RRC connection release all actions shall be delayed by 60ms as
per the standard
2021-06-28 17:35:02 +02:00
Andre Puschmann 368c7b9e4f ue,stack: clear all EPS bearers when going RRC idle
the EPS bearer manager was only informed when a single DRB
was removed but not when entering idle which requires to
remove all bearers.

This cause the service request to fail.
2021-06-28 17:35:02 +02:00
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.
2021-06-28 10:02:22 +02:00
Xavier Arteaga 6f5614a0cc Suggested modifications on gNb MAC/PHY interface 2021-06-28 00:27:36 +02:00
Xavier Arteaga 8378c85ec4 Refactored gNb PHY 2021-06-28 00:27:36 +02:00
Xavier Arteaga aef3e5a40a More NR PHY test and GNB PHY development 2021-06-28 00:27:36 +02:00
Xavier Arteaga 9126ad3b8b Added NR type1 RIV function helper 2021-06-28 00:27:36 +02:00
Xavier Arteaga d49734b1bc SRSENB: Refactor to accomodate 5G NR 2021-06-28 00:27:36 +02:00
Xavier Arteaga e98a6f9eea Make ACK M constant i UEDLNR 2021-06-28 00:27:36 +02:00
Xavier Arteaga 567c7c9c77 Create TTI semaphpore default constructor 2021-06-28 00:27:36 +02:00
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.
2021-06-24 16:52:58 +02:00
Andre Puschmann a4b2a065ff pdcp: reword warning when dropping PDU 2021-06-24 16:52:58 +02:00