Commit Graph

72 Commits

Author SHA1 Message Date
Francisco 13649e4e19 Implement new GTPU functionality:
- multiple tunnels per E-RAB
- data forwarding between connected GTPU tunnels
- forwarding GTPU End Marker between connected tunnels
- TeNB GTPU handles in-sequence delivery when multiple tunnels for the same ERAB exist.
2021-01-29 17:22:58 +00:00
Codebot 43082e8d6a enb/ue: turn various warning messages into info
turn events that may happen in the normal life of a eNB/UE
into info rather than warning to allow strict
warning/error checking in tests.
2020-12-12 15:59:27 +01:00
Andre Puschmann 07d2bc4fe8 change license header to agnostic version with hint to root LICENSE file 2020-12-12 15:59:25 +01:00
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
2020-07-13 17:05:28 +02:00
Francisco Paisana 1a9c04bf2f use of task scheduler handle in pdcp 2020-07-13 11:19:25 +01:00
Francisco Paisana d7138b7752 fix nr activation guards 2020-06-19 13:33:16 +01:00
Francisco Paisana 52c6c6aafd add ifdef guards for NR code 2020-06-18 23:37:26 +01:00
Francisco Paisana f0874b780b add radio_base/null classes 2020-06-18 23:37:26 +01:00
Pedro Alvarez 9c1a7d2cf1 Removed get_bearer_status in PDCP. Renamed get_state/set_state to
get_bearer_state/set_bearer_state.
2020-06-18 12:13:57 +01:00
Pedro Alvarez 66d4f320e5 Added intereface to set PDCP state after reestablishment. 2020-06-18 12:13:57 +01:00
Pedro Alvarez 33567d81db Added interface to get internal PDCP state. 2020-06-18 12:13:57 +01:00
Francisco Paisana 3fda3dc50a fix compilation issue 2020-04-12 15:54:59 +01:00
Francisco Paisana 3773029d9e fix compilation bug 2020-04-10 22:30:59 +01:00
Francisco Paisana c09f76ed6c unified stack task defer method 2020-04-10 22:30:59 +01:00
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.
2020-04-09 10:55:13 +02:00
Francisco Paisana 30ae2226c1 common interface for stack multiqueue tasks, background tasks and timers 2020-03-31 13:42:06 +01:00
Francisco Paisana 344eaf49ec use logmap in the whole enb and ue 2020-03-25 15:50:30 +00:00
Francisco Paisana 9bde6d442c removed the uneeded locks from the pdcp 2020-03-23 19:58:18 +00:00
Francisco Paisana f3890b2908 use of mutexed cache to store the valid lcids that can be checked from gw thread 2020-03-23 19:58:18 +00:00
Xavier Arteaga e832769ae6 Updated copyright 2020-03-16 11:26:06 +01:00
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.
2020-03-11 09:00:38 +00:00
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.
2020-03-01 18:26:45 +01:00
Francisco Paisana 6b4488d5c1 added sending of enb status transfer from SeNB 2019-12-11 17:41:49 +00:00
Pedro Alvarez d4fb4d8c86 Fixup clang-format in pdcp before PR. 2019-11-21 13:18:30 +01:00
Pedro Alvarez 15613465cf Moving some initialization from init function to constructor in the PDCP entities. 2019-11-21 13:18:30 +01:00
Andre Puschmann e42449532b fix wrong namespace definition in various places 2019-08-07 15:32:49 +02:00
Pedro Alvarez 6efa944b5e Removed srslte prefix from pdcp_config_t 2019-07-30 15:01:50 +02:00
Pedro Alvarez 491695ab77 Clang-formated PDCP NR PR. 2019-07-30 15:01:50 +02:00
Pedro Alvarez 457f35699d Reverted back to a single config structure between PDCP NR and PDCP LTE. 2019-07-30 15:01:50 +02:00
Pedro Alvarez 005d03cb1a Starting to split pdcp_entity into pdcp_entity_lte and pdcp_entity_nr to support NR PDCP 2019-07-30 15:01:50 +02:00
Andre Puschmann 58763fb714 stack: move initialization of log object into ctor
this fixes the issue when the stack is torn down if, for example,
the radio couldn't be loaded correctly. it will hence call stop() on all stack
components which are not initialzized yet, and logging therefore doesn't work.
the log object is know during contruction time and therefore can be passed
in as soon as possible.
2019-06-27 14:51:33 +02:00
Andre Puschmann e0a28cf4c0 simplify PDCP init and also bypass it for SRB0 on eNB 2019-06-21 15:49:46 +02:00
Andre Puschmann 218f136254 remove default PDCP entity for SRB0 2019-06-21 15:49:46 +02:00
Ismael Gomez 14b526f2aa Add PDCP per-bearer reestablish 2019-06-06 14:34:25 +02:00
Andre Puschmann c14c3c23f1 pdcp: fix issue when setting SN length configuration 2019-05-30 13:05:02 +02:00
Francisco Paisana 3bedc93ba5 added _t to unique_byte_buffer type 2019-05-16 12:35:01 +02:00
Francisco Paisana f469e2178b replaced byte_buffer_t allocated by the buffer pool for unique_byte_buffer which is safer and easier to use 2019-05-16 12:35:01 +02:00
Francisco Paisana 0976ea6f27 created a unique byte buffer that automatically deallocates 2019-05-16 12:35:01 +02:00
Andre Puschmann 4b01a2e4a0 update copyright notice 2019-04-29 09:20:02 +02:00
David Rupprecht eb3a83ac45 User Plane key in configuration interface 2019-04-11 21:38:01 +02:00
Andre Puschmann 53850e5353 delete MRB bearer during PDCP destruction 2018-12-30 22:58:41 +01:00
Eric Schreiber 46d41a5dc5 Remove undefined increment of an erased iterator. (#274) 2018-12-14 12:01:44 +01:00
Andre Puschmann 27459bf706 add API to change LCID of PDCP bearers 2018-09-17 13:10:44 +02:00
Andre Puschmann f56592b0fe add getter for PDCP ul/dl counter 2018-08-08 16:26:32 +02:00
Andre Puschmann 716b028023 reset PDCP entities 2018-08-06 15:48:52 +02:00
Andre Puschmann 91492b87ef add del_bearer for RLC/PDCP 2018-08-06 13:17:51 +02:00
Andre Puschmann ee5b055829 rename pdcp function for GW to is_lcid_enabled() 2018-07-25 15:09:19 +02:00
Andre Puschmann 40d19e2d32 fix PDCP reset 2018-07-25 15:08:35 +02:00
Andre Puschmann b8438e9cc3 extend PDCP interface to allow non-blocking write of SDUs 2018-07-24 15:49:09 +02:00
Andre Puschmann 2b86272c5e protect PCAP bearer additions with write lock 2018-07-24 09:43:33 +02:00