403 Commits (04aca98e5fe69d00b73781ef349ccbfdd918cf40)

Author SHA1 Message Date
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>
3 years ago
Pedro Alvarez 171d5727be Moved lib RLC into it's own folder 3 years ago
Andre Puschmann 0a16f48869 gw: fix race condition
GW thread was checking the default_eps_bearer variable without
protection. RRC could update it when deleting DRB or receiving RRC
connection release.
3 years ago
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.
3 years ago
Andre Puschmann 5313fb99d6 tft: add helper to delete all TFTs for EPS bearer
when a EPS bearer is removed, all associated TFTs need
to be removed as well.
3 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.
3 years ago
Andre Puschmann 3f9c069ff7 ue_stack_lte: add RLC and PDCP entities for NR 3 years ago
David Rupprecht d1d8500ce5 Add testcase for reconfiguration 3 years ago
Andre Puschmann e2c496d825 srsue,mac: fix race between PHY and MAC when stopping UE
the issue let to unwanted log warning at the end of the UE
execution when the PHY was still pushing DL PDUs while MAC
was already stopped.

This fixes #3003
3 years ago
Ismael Gomez e35a0d72fa Revert UE changes 3 years ago
Ismael Gomez dd9889e07c Add carrier index to uplink PCAP captures 3 years ago
Pedro Alvarez 299d2ee35d Added interface to make the PDCP notify the RRC of integrity check
failures.
3 years ago
Andre Puschmann aaffdeb326 rrc,rlc: add method to signal protocol failure to RRC
general-purpose method for lower layers to signal protocol
failures to higher layers, i.e. RRC.

In the current case, implement a direct release of the UE (enb) or
a reestablishment (UE).
3 years ago
Francisco 486823e5de sched,bugfix: The PHR handling scheme now considers the number of PRBs of the UL grant that carried the PHR. Before, it was assuming the most conservative scenario of Nprb=1 3 years ago
Andre Puschmann 018c734b09 dl_harq: fix unlocking of unlocked mutex bug detected by TSAN
in the mac_test the tb_decoded() method was called twice for
the 2nd codeword, causig TSAN to complain about an unlocked mutex
being unlocked.

The patch resolves the potential issue only calling tb_decoded
for a grant/tb thas has a non-zero MCS.

The patch also adjusts the reset function to have a safe and "unsafe"
version to be called from inside the class, similar to other
classes where we do the same.
4 years ago
Andre Puschmann b40867ffec ue,rrc: add simple connection setup procedure
this is an attempt to fix #2850 by defering the transmission of
the connection setup complete until the PHY has applied
the dedicated config in the connection setup.
4 years ago
David Rupprecht 8c194b887b Allow NAS init function to fail 4 years ago
David Rupprecht 617fb2ba7e Added default destructor for args 4 years ago
David Rupprecht 102a943171 Fixed naming srsLTE to srsRAN 4 years ago
David Rupprecht fd451e8be3 Configure Short PDCP NR SN support 4 years ago
Andre Puschmann e3b77fd82a rrc_nr: set timeout for NR cell measurement to 250ms
the low timout of 10ms was:
1) causing too frequent measurement reports
2) causes a MO ping test to fail where the ICMP request
was sent on the LTE carrier but never got a reply because
the MCG addition was inbetween
4 years ago
David Rupprecht d2aa25d451 Added option for simulated measurement 4 years ago
Xavier Arteaga 715f8900a8 Selected NR RA procedure PRACH send timeout according to system frame number period from PRACH PHY tables 4 years ago
Andre Puschmann 4b3538aaa8 {dl,ul}_harq: fix metrics calculation
rewrite  metrics calculation for NR HARQ and remove
unneeded operations.
4 years ago
Andre Puschmann b6f2c80f66 mac_common: add helper method to get total buffer state 4 years ago
David Rupprecht a064e85c54 rename common lte header 4 years ago
David Rupprecht 81ad72b0ff Refactor srb and drb handling 4 years ago
David Rupprecht 91ff8a2e6d Add rrc_nr to rlc init function 4 years ago
Andre Puschmann c8d3e133dc ue: bump default RRC release announced to 15 4 years ago
David Rupprecht 75cd5e65e5 Removed arfcn and freq, and nof_prbs from config file 4 years ago
David Rupprecht bfe2ad98ef Added parsing for NR DL HARQ cfg 4 years ago
Andre Puschmann b9ae064338 mac_nr: add DL HARQ
this commit adds a complete DL HARQ entity to the MAC of the UE.
It also refactors demux into an own class and adapts the PHY-MAC
interface to use the new MAC capabilities.
4 years ago
David Rupprecht fe8727050b Added new rrc_nr to phy flattening functions and fixes 4 years ago
David Rupprecht 4c68c17bd3 Fixed log level of nr loggers to lte level and hex size 4 years ago
Andre Puschmann 44baea6666 mac_nr: add UL HARQ
this patch adds a basic UL HARQ entity for NR.

The patch also updates some interfaces between MAC/RA/HARQ,
i.e. get_temp_crnti().

It also adds a Msg3 unit test.
4 years ago
David Rupprecht eeddbe69ce Fixes repeating proc RA due to SR trigger 4 years ago
David Rupprecht 5a3a2a6d6f Added functions for adding phr and tag config 4 years ago
Francisco f7a8b8bf94 separate drb srb ids into separate enum types 4 years ago
Francisco 21718af3b6 avoid allocating std::string to get lcid radio bearer name. Refactored the lte radio bearer enum type 4 years ago
Andre Puschmann cf696138d3 mac_nr: fix packing order of SDU and CEs
SDUs need to go first in the MAC PDU, followed by CEs
4 years ago
Andre Puschmann 7f415189f3 ue,mac: enable basic MAC metrics
this adds basic MAC metrics calculation for the DL NR MAC
4 years ago
Andre Puschmann db496df1e6 mac_nr: add support for periodic BSR reporting
building on the previous refactor this patch now adds support
for peridoic BSR reporting (using short BSR). It furthermore does
the following changes:

* add BSR packing
* add proc_bsr_nr unit test
* move mac_nr test code into test folder under src (needs to be done with other test code too)
4 years ago
David Rupprecht 56e947bf27 Added functionality for releasing a NR bearer 4 years ago
David Rupprecht cc6d8128ad Added gw interface if it is running 4 years ago
David Rupprecht 7a481c40ab Added mac prach nr proc error handling 4 years ago
David Rupprecht f9ea02b6bf Added functions for rrc reestablishing procedure if nr reconfig failes 4 years ago
Xavier Arteaga 01990c2e1d SRSUE: Add PHY-MAC SR related interfaces 4 years ago
David Rupprecht 506adca930 Set eutra nr band info based config value 4 years ago
Andre Puschmann d135ae4d29 proc_bsr: initial BSR procedure for NR
* refactor some common methods to mac_common.cc
* add common mux_base class
* move UL PDU generation to mux class
* add logical channel registration to MAC, MUX, BSR
* add initial proc BSR
* add basic MAC NR test
* rework MAC interfaces
4 years ago
Francisco d04a19f8bc refactor - increase code reuse in adt files 4 years ago