507 Commits (8a9c326bcb9e52ea951fd1447474c0d0092ab950)

Author SHA1 Message Date
Andre Puschmann 55336665b9 rlc: remove timers and sdu queue length from RLC TM ctor
timers aren't used in RLC TM, also the default queue length is
fine to be used at all times.
4 years ago
Andre Puschmann 9550bd3ef8 rlc: revisit interface for MAC and RRC
* add locked and unlocked version of has_data() since one is
  called from stack and one from PHY threads

* add comments in each interface section as to why locking
  is required or not

* remove RLC rwlock when not required

* move calls only used by RRC to RRC section
5 years ago
Andre Puschmann 7f98cb9b62 pdcp: log discard timer duration in init()
to log the configured discard timer length
5 years ago
Andre Puschmann a578ff1975 pdcp: fix typo 5 years ago
Andre Puschmann 6fb01d61a7 rlc: change remaining occurances of "SN: " to "SN="
streamline all RLC AM and UM for better log analysis
5 years ago
Andre Puschmann a7911f0dab pdcp,rlc: refactor SDU queueing policy
this patch refactors the SDU queuing and dropping policy of the RLC and PDCP layer.
the previous design had issues when packets have been generated at a higher
rate above the PDCP than they could be consumed below the RLC.

When the RLC SDU queues were full, we allowed two policies, one to block on the write
and the other to drop the SDU. Both options are not ideal because they either
lead to a blocking stack thread or to lost PDCP PDUs.

To avoid this, this patch makes the following changes:

* PDCP monitors RLC's SDU queue and drops packets on its north-bound SAP if queues are full
  * a new method sdu_queue_is_full() has been added to the RLC interface for PDCP
* remove blocking write from pdcp and rlc write_sdu() interface
  * all writes into queues need to be non-blocking
  * if Tx queues are overflowing, SDUs are dropped above PDCP, not RLC
* log warning if RLC still needs to drop SDUs
  * this case should be avoided with the monitoring mechanism
5 years ago
Francisco Paisana 1a9c04bf2f use of task scheduler handle in pdcp 5 years ago
Andre Puschmann d5f0ad9f35 pdcp: fix typo 5 years ago
Andre Puschmann b3e92883d4 rlc_um: reduce log level when provided space is not enough to build PDU
this is not a warning case as it can always happen. reduce level to info therefore.
5 years ago
Andre Puschmann 95f5093432 rlc_am: hold lock while handling new PDUs
This lock was removed in 1cbf7eac because it was considered unneeded.
However, as can be seen in issue #1503, we need to protect the access
to rx_window, for example.

Issue #1503 shows a stack trace where a PHY worker generates a status PDU.
While holding the mutex to access rx_window, the stack thread on the
other hand, happily accesses the rx_window member without acquiring
the lock. This commit protects all handle_*() functions in write_pdu().

This reverts commit 1cbf7eac04.
5 years ago
Andre Puschmann 6f5da19312 pdcp: similar to tx, also reduce log for Rx
instead of logging PDU received from below, and SDU that is forwarded
to above, only log the PDU in rx in info mode.

The next layer will do the same and log the PDU received (which is the SDU coming from here)
so there is now loss of information in the logs.
5 years ago
Andre Puschmann 6654453e22 pdcp: reduce amount of log messages during tx
drop logging encrypted PDU seperately. Instead, only log formatted
PDCP PDU before passing to lower layers
5 years ago
Andre Puschmann ff96336f91 rlc_um: fix reestablishment for sending UM entity
we've reset the rx state variables during reestablishment but not
the tx state variable.
5 years ago
Andre Puschmann eb56efe9f5 rlc_am_lte: turn error message into warning and print state variables
the issue doesn't cause any unrecoverable situation so its not
appropiate to use the error level
5 years ago
Andre Puschmann df50dd7d3c rlc: extend RLC metrics
extend RLC metrics to count Rx/Tx PDUs/SDUs bytes/#
5 years ago
Andre Puschmann 82f811ed52 rlc_am: change return value when writing SDU
return false when SDU couldn't be added to SDU tx queue so
to count dropped SDUs in base
5 years ago
Andre Puschmann 3cef20607e rlc_am: fix bug in returning zero len bytes 5 years ago
Andre Puschmann 86025cf390 rlc_um: fix PDU packing when newly added SDU segment was too large
during the PDU packing it could happen that a new SDU segment
was added but the resulting larger header was so big that not even
a single byte of the new PDU could be added. because this
corner case wasn't handled correctly an invalid PDU was transmitted.

the solution is to revert the addition of the new SDU.
5 years ago
Andre Puschmann fc3cd24177 rlc_um: fix counting of lost PDUs
* change try_push() return value to indicate whether the addition
  of the SDU to the tx queue was successful or not
* count lost PDUs
5 years ago
Francisco Paisana fddcbc9879 fix vnf-ue stack interface 5 years ago
Andre Puschmann ad1b9d4d9b rlc_um: improve warning message to better differentiate them 5 years ago
Francisco Paisana d7138b7752 fix nr activation guards 5 years ago
Francisco Paisana 52c6c6aafd add ifdef guards for NR code 5 years ago
Francisco Paisana 468389997e fix header sn check 5 years ago
Francisco Paisana 42969ad992 add tb size as argument to gnb 5 years ago
Francisco Paisana 2f8dad03cc add rlc nr locking 5 years ago
Francisco Paisana f0874b780b add radio_base/null classes 5 years ago
Pedro Alvarez 9c1a7d2cf1 Removed get_bearer_status in PDCP. Renamed get_state/set_state to
get_bearer_state/set_bearer_state.
5 years ago
Pedro Alvarez 208a539499 Split PDCP tx_count state variable into tx_hfn and next_pdcp_tx_sn
variables.
5 years ago
Pedro Alvarez 08578a7331 Switched to use a struct to hold the PDCP entity state variables. Deleted some unecessary setters. 5 years ago
Pedro Alvarez 66d4f320e5 Added intereface to set PDCP state after reestablishment. 5 years ago
Pedro Alvarez 33567d81db Added interface to get internal PDCP state. 5 years ago
Pedro Alvarez 4093e75237 Starting to add getters and setters of the state in PDCP lte entity. 5 years ago
Ismael Gomez a1f0f8de35
Add callback to RLC to indicate BSR for TX and reTX queues (used in ENB) (#1361) 5 years ago
Andre Puschmann 1eaa99530f rlc_am: tiny refactor of rlc_amd_pdu_header_t
mainly turning header into proper class and adding default init value
5 years ago
Francisco Paisana 791d84e639 created error_type and cleaned up expected 5 years ago
Francisco Paisana a2b76a4a5f use references rather than pointers 5 years ago
yagoda 3f99e40159 -changing rlc so that mrb is never removed when going to idle
-adding metric counting to eMBMS MAC so that the count is not lost during eMBMS subframes
5 years ago
Xavier Arteaga 01e224348c Fix compilation for NR HL 5 years ago
Xavier Arteaga 77d5dedddc Fix LGTM warnings and recommendations 5 years ago
Xavier Arteaga 562590e595 Fix LGTM warnings 5 years ago
Pedro Alvarez ad0abe740b Added support to PDCP SN len of 7. Also added a check for valid configs in pdcp entity. 5 years ago
Francisco Paisana 3fda3dc50a fix compilation issue 5 years ago
Francisco Paisana 3773029d9e fix compilation bug 5 years ago
Francisco Paisana c09f76ed6c unified stack task defer method 5 years ago
Francisco Paisana 2950d26daa remove asn1 namespace from srsue files 5 years ago
Andre Puschmann 9307a54512 pdcp: adding enable_security_timed() method
this is an extension to the currently available security
configuration and activation methods provided by PDCP.
The new call allows to specify a Rx and Tx SN after which the
entire security config, i.e. integrity and ciphering, should
be enabled.

this is mainly required for the PDCP entity of the conformance
testing SS but could potentially also be used by the eNB
to enable security for PDCP after sending the SecModeCommand
for example.

the extra call was added to not break the existing API.
5 years ago
Pedro Alvarez f4d648b26e Removed rx_count state variable from PDCP LTE entity. Updated get_bearer_status(...) acordingly. Added get_last_submitted_rx_count() getter. 5 years ago
Andre Puschmann 70b13198b2 pdcp: update local rx_count variable when accepting incoming PDU
before the SN was read but the rx_count was never updated.
when get_dl_count() or get_bearer_status() were called, invalid
values were returned
5 years ago
Andre Puschmann 447c740bb5 pdcp: streamline PDCP info logs with RLC style 5 years ago
Francisco Paisana 30ae2226c1 common interface for stack multiqueue tasks, background tasks and timers 5 years ago
Francisco Paisana 575475962f the rlc um rx does not need a mutex bc it is always called in the stack thread 5 years ago
Andre Puschmann 175f7fd587 pdcp: turn warning of PDCP duplicate into debug message 5 years ago
Francisco Paisana 1cbf7eac04 removed uneeded lock in rlc_am_lte 5 years ago
Francisco Paisana 42ed3a49eb fix 5g compilation error 5 years ago
Francisco Paisana 288e9e9db7 removed as many readlocks as possible from the rlc. Using now guards for locking as well. 5 years ago
Francisco Paisana 599588ff51 removed uneeded locks in the rlc, moved ue stack get_metrics to stack thread, solved the idle procedure double-locking 5 years ago
Francisco Paisana 8aa44928e9 fix 5g compilation errors 5 years ago
Francisco Paisana 344eaf49ec use logmap in the whole enb and ue 5 years ago
Francisco Paisana 99d9ecbf9e removed unecessary locks from rlc::write_pdu methods 5 years ago
Francisco Paisana 9bde6d442c removed the uneeded locks from the pdcp 5 years ago
Francisco Paisana f3890b2908 use of mutexed cache to store the valid lcids that can be checked from gw thread 5 years ago
Francisco Paisana 46a1be3e76 updated mac-rlc interface to use unique_byte_buffer 5 years ago
Xavier Arteaga e832769ae6 Updated copyright 5 years ago
Pedro Alvarez 96c82b3fc6 Moved PDCP configs to pdcp_config.h. Added `as_security_cfg_t` structure to hold access stratum keys.
Refactored PDCP, RRC and USIM accordingly.
5 years ago
Ismael Gomez d17a9d2ab1 RLC returns zero buffer during suspended 5 years ago
Andre Puschmann 9e113f8b27 pdcp: allow to configure security for rx/tx seperately
previously PDCP security (integrity and ciphering) could only
be enabled for both Rx and Tx at the same time.

this, however, caused an issue during the conformance testing in which,
in TC_8_2_1_1() for example, the eNB sends a SecModeCommand and a
RRC Reconfiguration in the same MAC TB. In this case, the eNB
needs to be able to enable DL security right after sending the SecModeCmd
in order to send the RRCReconfig encrypted. However, enabling UL security needs
to be postponed until after the SecModeComplete is received.

This patch allows to enable PDCP security for rx/tx independently if
that is needed. The default way is like before, enabling it for tx/rx at
the same time.
5 years ago
Pedro Alvarez 08c81c274b Fix PDCP NR tests. 5 years ago
Pedro Alvarez aecfb151ce Apply clang-format to the lib in preperation for PR. 5 years ago
Pedro Alvarez d98b888ca4 Separating PDCP read_header function from discard_header_function. Starting to add DRB unit test. 5 years ago
Pedro Alvarez 5f39c79bda Moved some more packing functions to base class. 5 years ago
Pedro Alvarez d3d5da682e Fix mistake in writting packet twice to upper layers. 5 years ago
Pedro Alvarez fdd67c3865 Fix issue in integrity check in PDCP SRBs. Moved some helper functions to the pdcp base class 5 years ago
Pedro Alvarez 6508bd411f Fix some issues with MAC copying 5 years ago
Pedro Alvarez 6648f7ebca Update COUNT estimation for SRBs in PDCP 5 years ago
Pedro Alvarez 965b0ee99b Starting to fix handling of RX SRB PDUs in PDCP. 5 years ago
Andre Puschmann cccabdaf4f removing unneeded install targets for static libs (reported by Filipe) 5 years ago
Andre Puschmann ed179fd311 timers: rename value() to time_elapsed()
this seems to be better readable than value() since
we've sometimes confused it with the timeout value
5 years ago
Andre Puschmann b085a8eabf rework debug log when getting buffer state in RLC AM
also adds some description to RLC functions being called
from outside the stack thread
5 years ago
Xavier Arteaga 5b14a7d585 Implementation Tx RLC suspend 5 years ago
Ismael Gomez 52716f8716 Process HO complete in the background to avoid heap-after-use bug when PHY measurements are reported during a HO
rrc_meas refactor. Need to split commit

Fix typo

Temporal commit

Apply rx_gain_offset to neighbour cell measurements

srsLTE: modify TESTASSERT Macro to follow codeline

SRSUE: prevent RRC from having serving cell in neighbour list

SRSUE: DL HARQ does not need Time Aligment Timer. UL is disabled using PUCCH resources release

SRSUE: extend intra-frequency to CA SCell

SRSUE: fix confusing/ambiguous code in the RRC measurements and fix concurrency issue

SRSUE: remove RRC measurement report triggers when measurements are modified or HO succesful

SRSUE: fix compilation issues and Reest SIB indexes

Fixes sync using incorrect cell configuration when search cell does not find a correct cell

Small refactor to remove measurement report triggers always after removing measurement

SRSUE: Removed SIC PSS from UE

SRSUE: fix inter-frequency reestablishment and added more traces

SRSUE: Fix compilation issue
5 years ago
Xavier Arteaga 8b6ba1aacf srsLTE: removed overlap bytes check in RLC AM 5 years ago
Xavier Arteaga 5872e763bf SRSLTE: RLC AM remove completely overlapped segments 5 years ago
Xavier Arteaga 39bec9aab1 SRSLTE: fix RLC reordering and segment overlaping 5 years ago
Andre Puschmann 476f970ee1 replace FIXME with TODO 5 years ago
Andre Puschmann 4f5e991480 fix typo in RLC AM 5 years ago
Pedro Alvarez c5979f59eb Clang format UE, eNB and lib (#850)
* Clang-formated UE, eNB and lib.
* Fixed compiling errors from clang-format.
* Fix linking issues introduced by clang-format
* Fix poor formating in initializing arrays of arrays.
* Fix mistake in conflict resolution on rm_turbo.c
* Re-apply clang format to gtpc_ies.h
5 years ago
Andre Puschmann 9078b2baf1 rlc_am: add check to prevent out of bounds access 5 years ago
Francisco Paisana 6b4488d5c1 added sending of enb status transfer from SeNB 5 years ago
Andre Puschmann 7885b5b9ee add CMake flag to enable 5G-NR components 5 years ago
Pedro Alvarez 41e911fd76 Replaced PRIu32 for %u in pdcp_nr_entity 5 years ago
Pedro Alvarez e1cdd51eba Clang-formated before pull request 5 years ago
Pedro Alvarez 61958af70b Timer removes itself from the map upon expiration 5 years ago
Pedro Alvarez 60feab3d7b Added map to keep discardTimers in PDCP NR entity. 5 years ago
Pedro Alvarez 8810f35498 Adding test of SDU discard timout to PDCP NR tests. 5 years ago
Pedro Alvarez 2e7ddef038 Continue to add discard_sdu to RLC interfaces. 5 years ago
Pedro Alvarez ca7c865ce8 Removed unecessery indentation in RLC AM write SDU. 5 years ago
Pedro Alvarez a77dd4e959 Starting to add boiler-plate code to support Discard at RLC. 5 years ago
Pedro Alvarez 7ccc7d1d20 Starting to notify RLC upon PDCP discard (NR) 5 years ago
Pedro Alvarez 9870c73366 Starting to add discardTimers to PDCP NR. 5 years ago