Commit Graph

1498 Commits

Author SHA1 Message Date
Francisco Paisana 489969722e implemented phy controller FSM to perform cell selection & search. The controller also tracks the phy sync state 2020-07-14 13:33:50 +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 5e06430455 removal of stack handler interface 2020-07-13 11:19:25 +01:00
Francisco Paisana 7c364070ee creation of task scheduler interface for classes/functions running outside the main control thread 2020-07-13 11:19:25 +01:00
Francisco Paisana 039977aeb5 renamed interfaces 2020-07-13 11:19:25 +01:00
Francisco Paisana 1a9c04bf2f use of task scheduler handle in pdcp 2020-07-13 11:19:25 +01:00
Francisco Paisana 4f5e65781f created task scheduler class to deal with timers, thread pool, multiqueue, internal tasks 2020-07-13 11:19:25 +01:00
Pedro Alvarez 528777fa29 Added sleep to avoid nas test concurrency issue. 2020-07-09 13:58:51 +01:00
Francisco Paisana 8c920837d6 fix issue when adding neighbour cell that matches serving cell 2020-07-08 00:19:18 +01:00
Francisco Paisana 43db9b81fb fix function ptr issue 2020-07-08 00:19:18 +01:00
Francisco Paisana d746115130 moved serving cell to meas_cell_list 2020-07-08 00:19:18 +01:00
Francisco Paisana 928459408e fix cell meas sorting issue 2020-07-08 00:19:18 +01:00
Francisco Paisana d2dd30c8cb rrc_meas_test failing 2020-07-08 00:19:18 +01:00
Francisco Paisana 9a1f69113f created class for managing neighbor cells of rrc 2020-07-08 00:19:18 +01:00
Francisco Paisana 069dc1f751 moved cell struct of srsue::rrc to separate file 2020-07-08 00:19:18 +01:00
Andre Puschmann 1e4eae7395 nas: log estimated count instead of local rx_count when logging integrity check result 2020-07-05 16:56:06 +02:00
Andre Puschmann bd0c13aad0 ue_stack: bump priority of stack thread
the stack thread should really run with the next highest priority after
sync + phy workers to make sure it gets enough CPU
2020-07-05 16:56:06 +02:00
Francisco Paisana 08f9801c76 remove requirement for rrc to be idle and nas attached to run reselection 2020-07-03 18:35:53 +01:00
Francisco Paisana d12b037e0d make cell reselection periodic and with period of 20msec 2020-07-03 18:35:53 +01:00
Francisco Paisana 510687766f added comments in rrc cell select test 2020-07-03 14:00:14 +01:00
Francisco Paisana c6f422d23e improved cell selection test in srsue::rrc 2020-07-03 14:00:14 +01:00
Francisco Paisana 3b1f2719dd return error from cell selection if unable to select serving cell 2020-07-03 10:26:49 +01:00
Francisco Paisana 3e016b8095 select serving cell during cell selection if it is stronger than neighbors 2020-07-03 10:26:49 +01:00
Andre Puschmann 218fa5cf55 ttcn3_dut: fix bug in DUT
reducing the sync queue len to 1 caused an issue when the
PHY was locking the mutex while trying to push a TTI event
on the stack.

instead of signaling the new TTI within the PHY, we now do it outside
in the DUT (after releasing the PHY mutex)
2020-07-02 17:39:43 +02:00
Francisco Paisana 84f34bc736 changed to a label filtering approach for ctest 2020-07-02 15:56:59 +01:00
Francisco Paisana ebb8f18000 set some extra tests with the prefix "long_" 2020-07-02 15:56:59 +01:00
Francisco Paisana c6323478d2 remove unecessary sleeps in mac test, and add long_ prefix in long tests 2020-07-02 15:56:59 +01:00
Pedro Alvarez 772ab89391 srsUE: Fix for NAS overflow counter computation. 2020-07-02 14:52:21 +01:00
Ismael Gomez 0382933cb1 Select serving cell if PHY not in sync 2020-07-02 12:01:06 +02:00
Ismael Gomez e378a45db0 Reorganized priorities to avoid GW starve the CPU 2020-07-02 11:52:14 +02:00
Francisco Paisana d7a0fe4060 improve log messages for CA 2020-07-01 11:54:06 +01:00
Andre Puschmann a5c0f96fa7 srsue: limit sync queue length to 1 for ZMQ radio
apply same change that we've done on the eNB also on the UE
to avoid the PHY processing TTIs faster than the stack.

Without that, we see lots of those in the logs:

...
08:39:17.580325 [STCK] [W] Detected slow task processing (sync_queue_len=7).
...
2020-06-30 10:36:01 +02:00
Andre Puschmann c15b2ec810 ttcn3_dut: always create timer when enabling TESTMODE B
create timer but dont yet set it. this avoid adding multiple
checks if the timer var is actually initialized.
2020-06-30 10:31:52 +02:00
Andre Puschmann cf12c98630 srsue: exit early if radio can't be initialized
since the radio is the first component we initialize, it is safe to
exit the ue::init() straight away, as no other layers use any handles yet
2020-06-30 09:30:31 +02:00
Andre Puschmann d16897c09a scell_sync: fix missing dtor freeing sync object 2020-06-30 09:30:31 +02:00
Andre Puschmann e981d5ee70 rrc,ue: refactor wait conditions before transition to RRC idle
before entering RRC idle, after receiving a RRC connection release for example,
we need to wait until the RLC for SRB1 or SRB2 have been flushed, i.e.
the RLC has acknowledged the reception of the message.

Previously we have only waited for SRB1 but the message can also be received on SRB2
and in this case both bearers need to be checked.

The method is now streamlined to check both SRBs and is also used when
checking the msg transmission of an detach request.
2020-06-29 21:19:42 +02:00
Andre Puschmann 63f1ea1bec ttcn3: streamline DRB and SRB Tx interface
use the same tx interface with const uint8_t* and length byte instead of std::string
2020-06-29 13:45:42 +02:00
Daniel Willmann 7a25d1d300 Send the RRC_PDU_IND as JSON
Fixes: srslte_ttcn3#13, srslte_ttcn3#15
2020-06-29 13:45:42 +02:00
Xavier Arteaga f8cc2d176d Fix typo 2020-06-25 17:42:56 +02:00
Xavier Arteaga 2f0c38fc70 SRSUE: avoid deadlock while configuring cell from stack 2020-06-25 17:42:56 +02:00
Francisco Paisana a0606669e2 fix ue nr gw initialization 2020-06-24 23:28:53 +01:00
Francisco Paisana fddcbc9879 fix vnf-ue stack interface 2020-06-24 23:28:53 +01:00
Andre Puschmann 2c5e159420 ttcn3_drb_interface: remove use of GetArray()
unfortunately, the rapidjson version shipped with Ubuntu 16.04
doesn't support the GetArray() API so we need to use
normal iterator to loop over the array
2020-06-23 12:12:58 +02:00
Andre Puschmann bf6ddbe976 ttcn3_drb_interface: use uint8_t and len as tx interface 2020-06-23 12:12:58 +02:00
Andre Puschmann 7f47edf67f fix issue where PDCP SDU was not going through UE stack to SS
this cause the PDCP echo reply not to appear in MAC/PCAP
2020-06-23 12:12:58 +02:00
Andre Puschmann 07f22326b4 pass current SS TTI when formatting DRB common IND 2020-06-23 12:12:58 +02:00
Daniel Willmann 8652f75510 Don't try to guess the lcid, use what we got 2020-06-23 12:12:58 +02:00
Daniel Willmann 0b88161b3c Send DRB PDUs as JSON to TTCN3 2020-06-23 12:12:58 +02:00
Daniel Willmann 31f1516d74 Use callback to establish connection before sending PDUs in TestmodeB 2020-06-23 12:12:58 +02:00
Daniel Willmann 9aa441f8b6 ttcn3_ue::timer_expired(): Loop through the correct queue
Fixes a segfault when a NULL pdu is passed to loop_back_pdu_with_tft()
2020-06-23 12:12:58 +02:00