296 Commits (1d37c5b476b8e4a6468ffc946a4bc1223773bffa)

Author SHA1 Message Date
Andre Puschmann 3f81d3e969 enb,rrc_endc: add handler for measurements and UE capabilities 3 years ago
Andre Puschmann 8d443d79e5 enb,rrc: add skeleton code for new RRC internal interface for SgNB addition 3 years ago
Andre Puschmann 8dd7075d12 enb,stack: add NR components for NSA mode
adds the main NR components for RLC, PDCP, MAC and RRC
for NSA operation.
3 years ago
Pedro Alvarez 299d2ee35d Added interface to make the PDCP notify the RRC of integrity check
failures.
3 years ago
Francisco fd3901e4a2 bugfix,srsenb,rrc: delete old context right away after sending Reestablishment msg.
Following ReestablishmentRequests should use the most recent rnti as old context.
3 years ago
Francisco 35cea3d104 enb,optimization: consider mac::ue object in rnti pool memory block size 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 3f75538660 rrc,feature: Use t301 to set time that the enb waits for the UE RRCConnectionSetupComplete or ReestablishmentComplete 3 years ago
Francisco 0349949cce bugfix, handover: disable inactivity timer during s1 handover in target enb 3 years ago
Francisco a587d20252 allow specification of subset of valid measurement gap offsets in rr.conf 3 years ago
Francisco 52247a46e5 rrc,refactor - change log level for paging try lock 3 years ago
Francisco 692bd193d5 rrc,improvements - use single subframe-indexed struct to access pending PCCH. The scheduler now doesnt lock checking for pending paging 3 years ago
Francisco 957ca453e9 bugfix,rrc: change mechanism to delete old paging messages to avoid deleting messages not yet sent 3 years ago
Francisco 8811b7c9a7 fix handling of CRNTI CE in the RRC. The scheduler should not allocate more grants for the new rnti after this point. 4 years ago
Andre Puschmann fbb151af2d enb,rrc: fix bearer re-activation after max KO
this patch makes sure that if RBs have been deactivated after
max KO on either the DL or the UL, they are reactivated if either
of them is working again.

UL/DL are always activated together, even if just one of them
recovers. The KO counter (or timer), however, is not stopped implicitly.
4 years ago
Francisco 0a1ae0e4ad redesign and fix enb rrc message logs 4 years ago
Andre Puschmann 167200f5cd rrc_bearer_cfg: replace fixed E-RAB to DRB mapping
also make sure we don't assign LCIDs beyond the possible
number.

possible fix for https://github.com/srsran/srsRAN/issues/658

Co-authored-by: herlesupreeth <herlesupreeth@gmail.com>
Co-authored-by: Francisco <francisco.paisana@softwareradiosystems.com>
4 years ago
Francisco f25dbea4de fix PCCH assembly in srsenb rrc 4 years ago
Francisco 32228389a9 fix latest static analysis warnings in rrc paging 4 years ago
Francisco bfdb0332db remove undefined methods from rrc_ue 4 years ago
Francisco 46cfdaf9e5 Handle case when old rnti gets removed during RRC reestablishment
This is achieved via:
- keep restarting the inactivity timer whenever a ReestablishmentRequest is received
- in case the RRC ReestablishmentComplete is very late and the old rnti was removed anyway,
  abort RRC reestablishment procedure and release new rnti
4 years ago
Andre Puschmann b61be7878a enb,rrc: split RLF counter and timer handling for DL/UL/RLC
this patch splits the counter and timer handling for PHY DL, PHY UL,
and RLC errors and makes sure that, for example, a successful DL
does not cancel the UL RLF timer, and vice versa.

They all use the same timeout value which is user-configurable.
4 years ago
David Rupprecht f9c0009d23 Remove setup erabs function 4 years ago
Francisco 6b84754ede fix rrc and gtpu bearer rnti update during reestablishment. The rnti of UE's rrc_bearer_handler was not being updated 4 years ago
Francisco 9464f36714 make eNB UE release timer after RLF detection configurable 4 years ago
David Rupprecht c117b563c9 Initial commit for ngap in enb 4 years ago
Francisco cde61a5796 rrc paging - reduce the space taken by paging manager class
Paging messages can only be transmitted in a subset of subframes - {0, 4, 5, 9}
I avoid now creating objects for the subframes that are not part of this subset
4 years ago
Francisco b014cbfe0f rrc paging - removal of redundant mutexes in paging manager class. Now mutexes are indexed by subframe index instead of paging buffer index 4 years ago
Francisco 8487c10956 removal of unused variables 4 years ago
Francisco 01eace2631 rrc paging mechanism improvements
- moved paging record handling to separate class
- parallel access to pending pcch messages by phy workers based on TTI and without common lock
- asn1 pcch message packing now takes place in stack thread, to avoid real-time issues
4 years ago
David Rupprecht 81ad72b0ff Refactor srb and drb handling 4 years ago
Ismael Gomez 77b11b82ac
Release UE if no activity in DRB (#2658)
* Count user activity with DRB only and SRBs for initial procedures. Add counter to release user after max KO in UL.
4 years ago
Francisco 14d32db92f implement Handover direct forwarding path availability configuration feature 4 years ago
Francisco b8fa1d1b61 fix rrc mobility test 4 years ago
Francisco 66988ffd32 s1ap - simplified erab setup procedure. Handle correctly the failure to setup causes 4 years ago
Francisco f401683960 s1ap - simplified erab modify procedure 4 years ago
Francisco 76978f0d14 s1ap - simplified erab release procedure 4 years ago
Francisco c5fc543516 s1ap - handling of ts1 reloc overall timer. 4 years ago
Francisco c2a99a8112 handover - support for handover cancellation causes, check for E-RAB QoS requirements, cancellation of handover if E-RABs are not supported in the target eNB 4 years ago
Francisco 6d401bc79f handover - check if UE integrity and encryption algorithms are supported in the target eNB, and report handover failure if not. 4 years ago
Francisco 77bd500312 handover - implement and test S1 Handover fail path for the case of invalid QoS config in HO Request message 4 years ago
Francisco d2c404b166 handover - setup s1ap cause in case of handover failure at the target enb 4 years ago
Francisco 49bd895e29 s1ap - handle invalid or repeated erab ids in s1ap erab release command 4 years ago
Francisco 7842e3bff3 s1ap - add unit test to check correct handling of invalid E-RAB ids in modification request. Fix s1ap in order for the test to pass 4 years ago
Francisco 985846e3bd s1ap - set multiple erab ids cause in replay when s1ap erab modify request has repeated ids. 4 years ago
Francisco 60d5c6df7b implementation of memory pool with individual memory blocks per UE that get accessed via their rnti 4 years ago
Andre Puschmann 7459a65a8e enb,rrc_ue: remove unused variable 4 years ago
Francisco cdf72248f3 Reimplement batch-based background object/memory pool
Main changes:
- addition of pool utilities
- The node size/alignment and batch allocation threshold are now runtime arguments
- object pool and memory pool are not anymore based on the same class.
  The object pool cannot use intrusive free list because it would overwrite the object
  memory
4 years ago
Francisco ec3cd9ffea adt - added background object pool test, and fix existing bugs related to the creation of pools with objects that are too small to be used in free lists 4 years ago
Francisco d1c5b000dc adt - creation of pre-initialized object pool, that leverages the background memory pool allocator 4 years ago
Pedro Alvarez e1a852d4b8 Split split RLF timer and Inactivity timer 4 years ago
Pedro Alvarez 47135cb75b Changed counting of KOs to RRC 4 years ago
Pedro Alvarez 8194b5ec73 Added check for consequetive KOs in MAC. Change set_activity_user to pass activity and max KOs to RRC and trigger RLF timeout. 4 years ago
Francisco c3482b45e1 s1ap - handle erroneous enb/mme s1ap ue id in received s1ap messages from the MME 4 years ago
faluco 54fab314c0 Enhance RRC eNB events:
- Implement a common event "log_rrc" for all RRC events and discriminate by procedure using an enum.
- Log events for connection, reestablishment, reconfig, reject and release.
- Log the corresponding ASN1 message used by each procedure.
- Redefine the JSON object for this event to match the new structure.

Fixed a compilation error detected by the static analyzer in gcc9.3 where bounded_vector::data() was using taking the address of the internal buffer which confused it, prefer to use the data method of std::array.
4 years ago
Pedro Alvarez 8c7aed1f81 Added handling of MSG3 timout exipiry in activity_timer_expired(). Avoid notifying S1AP in that case. 4 years ago
Pedro Alvarez 37699f2215 Send radio connection with UE lost if max retx are reached 4 years ago
Francisco d04a19f8bc refactor - increase code reuse in adt files 4 years ago
Francisco 5eccfad05b gtpu - added comments, updated expected construct, handled in rrc the case a gtpu teid fails to allocate 4 years ago
Francisco e1523692c2 implementation of concurrent fixed size pool that leverages thread local caches to avoid mutexing 4 years ago
Andre Puschmann 1a0891df51 all: check return value of make_byte_buffer() and handle them safely 4 years ago
Codebot 4523ee6087 rename srsLTE to srsRAN 4 years ago
Francisco 9601770196 rrc,bugfix - stop scheduling when RLC AM max_retx is achieved 4 years ago
Francisco 6159cb3817 add assert to ensure a valid ptr is passed to memory pool deallocator 4 years ago
Francisco 20928651c7 created batch allocator that leverages background worker pool 4 years ago
Francisco 3e9f93eb8a refactor - remove old log_filter and logmap libraries from the codebase 4 years ago
Francisco f0ed1e06a8 documentation,bugfix - added documentation to new blocking queues, changed class names, and removed blocking pushes from the critical path 4 years ago
Francisco d1236fd62f stack,optimization - replaced previous block_queue design for new bounded queue in several places in the enb 4 years ago
Francisco c03dbc6742 fix RRC Connection Reestablishment procedure - correctly save old rnti bearer configuration in new rnti 4 years ago
Francisco 290f39d805 fix crnti mac ce handling in the rrc in normal (no handover) case 4 years ago
Francisco a988351f46 move ue pdcp interfaces to separate interfaces header file 4 years ago
Andre Puschmann 46d8ed8742 enb,rrc: delay UE release after RLC maxRetx
this fixes the eNB behaviour when RLC signals maxRetx reached.
By directly releasing the UE, we ignore the fact that the UE
could still have the reestablishment counters running, so
could attempt a reestablishment, which would result in a reject
because we would have destroyed the UE context too early.

this patch delays the removal of the UE to wait at least
until the reestablishment timers are expired.
4 years ago
Pedro Alvarez 976b5c12c1
Releasing the UE when max retransmissions are reached in the RLC. (#2385) 4 years ago
Francisco 6404722b4b convert qci_cfg in srsenb to std::map to allow qci values above 10 4 years ago
faluco a940e169a3 Add the enb_cc_idx value to S1 events. 4 years ago
faluco a4605883f0 Implement second revision of the events and metrics document. 4 years ago
Francisco 23459dee28 Created enb_{rlc/pdcp/gtpu/phy_interfaces.h files. 4 years ago
Francisco 43e57df00b breaking enb_interfaces.h into multiple files on a layer basis. Created enb_rrc_interfaces.h, enb_mac_interfaces.h and enb_s1ap_interfaces.h 4 years ago
Francisco 3265d940ec remove byte buffer pool cached member variables as they are unnecessary now. 4 years ago
Francisco 9e25e95545 fix S1AP UE Capability Indication message. Created helper to log received S1AP messages 4 years ago
Francisco 78d1b8083a fix GTPU tunneling. Avoid forwarding packets to PDCP while the PDCP bearer is not yet created 4 years ago
faluco 79eca0980d - Ported fsm.h to srslog.
- Adapted and removed old loggers in tests and code that used fsm.h
4 years ago
faluco 96c07a69c0 Report the RLF event to the JSON event file in the enb. 4 years ago
faluco ac62e3c398 Fix the priority of logging levels in places where we before logging we check if a certain log level is enabled. 4 years ago
herlesupreeth 47fff7226a Send NAS PDU in E-RAB Release Command and issue RRCConnectionReconfiguration to UE
This commit addresses the following points

- If a NAS-PDU IE is contained in the E-RAB RELEASE COMMAND message, the eNB shall pass it to the UE.
- Issue RRCConnectionReconfiguration for the DRB to be removed
- Cleaning of DRB in RLC and GTP-U
- Fix for Malformed E-RAB Setup Response upon reaching max. DRBs
4 years ago
Francisco 2befbd1825 setup of forwarding tunnels during enb s1 handover 4 years ago
faluco 711438f756
Port enb specific classes to use srslog (#2155)
* - Started porting the enb PHY layer to use srslog loggers.
- Updated srslog to manage the none level.

* Finished porting enb phy layer including the NR part.

* Ported MAC, GTPU, PDCP, RLC and S1AP enb classes to use srslog.

* Use new stack logger.

* Ported the enb RRC clases to use srslog.

* Remove unused log macros.

* Replace loggers in sched, sched_carrier, sched_helpers.

* Replaced loggers in sched grid.

* Replaced loggers in sched harq.

* Replaced loggers in sched ue.

* Replaced loggers in sched ue ctrl.

* Replace loggers in sched ue ctrl TPC.

* Replaced loggers in sched subclasses.

* Replaced loggers in rrc_meascfg_test

* Configure loggers in rrc_mobility_test.

* Fix compilation errors left out after the rebase.

* - Implement a custom log sink that will serve as a test spy to intercept and count the number of error and warning log entries.
- Adapt the erab_test_setup and rrc_mobility tests to use this new class and make them pass again.

* - Remove trailing new lines introduced in the rebase.
- Ported the sched_ue_cell class to srslog.

* Remove unused log member.

* Ported mac tests to srslog.

* - Removed remaining trailing newlines from log entries.

* Fix compiler errors detected in CI.

* Fix another static variable without definition passed to log lines.

* Fixed a bug in srslog::flush that would never end when the backend queue is full.

* Fetch the RRC logger instead of injecting it in the constructor.
4 years ago
Ismael Gomez a6423442c2
Refactor NR RA files and fix header includes all over library (#2162)
* Refactor NR resource allocation classes. Use DCI instead of grant for dummy PDSCH UE/eNB test

* Minor refactors in NR workers and ue_dl

* Fix include issues

* fix compilation issues
4 years ago
Francisco Paisana 9c7c190074 when the rrc fails to allocate the ue cell resources, it should erase the ue from all stack layers 4 years ago
Francisco Paisana 0761a8f08b Add RLF-Report handling functions to srsENB 4 years ago
Francisco Paisana 434bdfca68 decoupled srsenb rrc ue mac controller from the rrc::ue class 4 years ago
Francisco Paisana f8b7351e1b implementation of object memory pool via class-specific operator new/delete 4 years ago
Francisco Paisana 8912a8ce6c added extra comments to memory pool code. generalized object pool to mutexed and non-mutexed cases 4 years ago
Francisco Paisana a73cbcdc9d added mem_pool for growing object pools. Applied the mem pool to the rrc::ue creation 4 years ago
Francisco Paisana 2abe486e18 separate control loops for PUCCH and PUSCH TPC 4 years ago
Pedro Alvarez 0c20b7a455 Added support for S1AP modify bearer request support. This includes:
- Handle received E-RAB S1AP at s1ap.cc.
 - Added methods to rrc.cc, rrc_ue.cc and rrc_bearer_cfg.cc to handle erab modify request.
 - Made RLC add_bearer() function capable of re-creating the RLC entity.
 - Send RRC reconfiguration to the UE and reply to the EPC with S1AP
   modify bearer response.

This commit also adds support to srsEPC to send S1AP modify bearer request for
testing purposes.
4 years ago
Francisco 43e0a3209d fill enb rrc metrics with drb info 4 years ago
Pedro Alvarez 7eebd71627 Added S1AP E-RAB release command/response handling to srsENB.
Added the ability to srsEPC to send the E-RAB release command.
4 years ago
David Rupprecht 848496bb0f Moved get_earfcn to srslte get_carrier_freq func 4 years ago
Xavier Arteaga b501f2eeaf SRSENB/UE: Added NR workers 4 years ago