Commit Graph

1628 Commits

Author SHA1 Message Date
Francisco 04ab4eefcd use new make_byte_buffer() helper method to create unique_byte_buffers 2021-02-07 18:48:21 +00:00
Pedro Alvarez bb0e31feda Reduce log level of SDUs dropped in the stack to info. Added ul_dropped_sdus to stack metrics. 2021-02-05 16:48:04 +00:00
Xavier Arteaga aef0397658 SRSUE: NR worker reset Tx buffer and PUSCH data payload bytes from 0 to 255 2021-02-05 15:55:03 +01:00
Xavier Arteaga a19671802e Added SRSUE NR-PUSCH initial procedures 2021-02-05 15:55:03 +01:00
David Rupprecht 3dab82c42f Added interface that allows to update the lcid in case of a nr reconfiguration
nr rrc updates gw lcid if reconf was received
2021-02-05 11:08:08 +01:00
faluco 821925a273 - Upgrade to srslog the loggers in lib/mac.
- Adapted users of these classes and tests.
2021-02-04 18:37:00 +01:00
Xavier Arteaga a8099d0df9 Fix SRSUE compilation without 5GNR 2021-02-04 10:51:47 +01:00
Xavier Arteaga a2d9b436d9 SRSUE: add NR stack to PHY and initial decoded PDU push 2021-02-04 10:51:47 +01:00
Xavier Arteaga 77f0a53abd Added DCI Format 0_0 unpacking and more NR-PUSCH procedures 2021-02-04 10:51:47 +01:00
Xavier Arteaga b150e45129 Renamed NR-PHY state and fix license headers 2021-02-04 10:51:47 +01:00
Andre Puschmann 8e13f04684 mac_pcap: refactor MAC PCAP and include NR RAT into same object
after adding the thread-safe PCAP writer functionality to the EUTRA
MAC object it became clear that we don't wont to replicate the
same for the NR object.

This patch therefore refactors the class that now supports both EUTRA and
NR rats. The old mac_nr_pcap.[h/cc] has been deleted. All test-cases
and usages now use the new object that needs to pass the RAT type in
the ctor.

this patch addresses the last open point of #2160
2021-02-03 17:21:57 +01:00
faluco a7bb3ce7d0 Remove unused variable in vnf_phy_nr. 2021-02-03 14:15:27 +01:00
faluco 79eca0980d - Ported fsm.h to srslog.
- Adapted and removed old loggers in tests and code that used fsm.h
2021-02-03 14:15:27 +01:00
faluco d37a07a47f Replaced loggers in buffer_pool.h 2021-02-03 14:15:27 +01:00
faluco f8485fb799 Replaced loggers to srslog in PNF and VNF classes. 2021-02-03 14:15:27 +01:00
Andre Puschmann a827350f7c mux: avoid unneeded call to msg3_flush() in ctor
this causes a debug log line as the first message in every ue.log because
the loggers/loglevels aren't configured yet.

22:10:02.463396 [MAC ] [D] [    0] Msg3 buffer flushed

the msg3_flush isn't needed because all variables are initialized.
2021-02-03 10:24:32 +01:00
Andre Puschmann 5ec78be872 nas: log switch on/off in info mode 2021-02-03 09:55:26 +01:00
Xavier Arteaga aaa789f530 Removed unused logger 2021-02-02 15:23:14 +01:00
Xavier Arteaga 92c4a38fc2 Fix logger for NR PHY 2021-02-02 15:23:14 +01:00
Xavier Arteaga 2421f2cd99 Multiple PHY fixes and NR-PHY configuration refactor 2021-02-02 15:23:14 +01:00
Xavier Arteaga b652cd68a5 Refactored NR PHY configuration to accept multiple CORESETs/SearchSpaces 2021-02-02 15:23:14 +01:00
Xavier Arteaga 10a7b63c6a NR-UE PHY transmits PRACH in all oportunities 2021-02-02 15:23:14 +01:00
Andre Puschmann df967d95b1 rrc_nr: extract new UE identity from RRC reconfig that tell MAC
required for contention-free RA on NR carrier
2021-02-02 14:13:25 +01:00
Andre Puschmann f5c945dc2f mac_nr: add interface to set C-RNTI and contention ID from RRC
used during contention-based/free RA
2021-02-02 14:13:25 +01:00
faluco ac62e3c398 Fix the priority of logging levels in places where we before logging we check if a certain log level is enabled. 2021-02-01 20:18:55 +01:00
Andre Puschmann cbedb65247 nas: log warning when NAS timer expires
this allows to let test cases fail based on warnings when
NAS events/actions timeout
2021-02-01 17:08:57 +01:00
Andre Puschmann dadb34f0ab rrc: fix missing newline in console output 2021-02-01 14:26:49 +01:00
Andre Puschmann 1aadc5c53e mac_nr: tiny cleanups of MAC class, use of new logger 2021-02-01 09:58:43 +01:00
Andre Puschmann 73cb0dabf2 mac_nr: move UE MAC class into own subfolder
this should simplify further MAC NR extensions and lead
to a more organized folder structure
2021-02-01 09:58:43 +01:00
Andre Puschmann 1a23b2f9bb ue: don't show NR PDSCH constallation plot in normal EUTRA mode
only initialize NR PDSCH plot when nof NR worker is greater 0
2021-02-01 09:58:27 +01:00
Codebot d5ee9a5200 Adding AGPL copyright to new files 2021-01-31 23:12:24 +01:00
Andre Puschmann da9e3363f1 mac_pdu_nr: rename MAC PDU class for NR to adhere naming conventions
* mainly to have _nr as trailing name for filename and class
* also add "sch" to class and filename (RAR PDU will have extra class)
2021-01-30 11:58:25 +01:00
Andre Puschmann cc750d96ee nas: when receiving detach request, don't enter plmn_search automatically
this patch fixes an issue with TC_9_3_1_17 after the "send attach in RRC connected" issue
has been fixed. The TC failed because the UE would always attempt to re-attach, even
after receiving an explicit detach request WITHOUT re-attach from the network.

According to TS 24.301 Sec. 5.5.2.3.2 the handling of that message largely depends
on the detach cause sent by network. Since we don't currently parse and handle
that the simplest solution here is to just enter deregistered:::null.

The patch is also part of the fix for issue #2237
2021-01-29 17:49:46 +01:00
Andre Puschmann 2576ada9e1 nas: do not abort attach procedure if RRC is already connected
this is an attempt to fix issue #2237 that cause the UE to fail to
attach because the attach request wasn't resent after T3410+T3411
expired.

this was only because RRC wasn't idle at that stage and the attach
request generation was aborted.

The patch fixes this by passing the NAS PDU directly to RRC in
connected state.

The patch also converts the blocking PDU alloc to a non-blocking one.
2021-01-29 17:49:46 +01:00
faluco 5981469f9f
Upgrade loggers in srsue (#2163)
* Replaced UE logger in the ue class.

* Replaced loggers in the main phy class and prach.

* Replaced loggers in phy common and ta_control.

* Replace loggers in cc and sf workers.

* Replaced loggers in intra_measure, scell_recv, search, sfn_sync, sync.

* Remove last uses of the old loggers in the main phy class.

* Remove stray newline in logs.

* Replaced loggers in ue gw.

* - Started to replace loggers in the ue stack.
- Replaced loggers in usim and pcsc.
- Adapted nas and usim tests.

* Replace loggers in nas.

* Added missing log init calls in two previously modified tests.

* Replaced logger in nas idle procs.

* Replaced loggers in nas emm state.

* Replaced loggers in tft packet filter and adapted tft test.

* Replaced loggers in main RRC class.

* Replaced loggers in RRC cell.

* Replaced loggers in RRC meas.

* Replaced loggers in rrc procedures.

* Started logger replacement in MAC layer, more precisely in demux and dl_harq classes.
Been unable to inject loggers in construction for dl_tb_process due to very weird static assertions in the std::vector code being the type not constructible which is not true, so instead use the main MAC logger directly.

* Replaced loggers in mac mux class.

* Replaced loggers in mac pro_bsr.

* Replaced loggers in mac proc phr.

* Replaced loggers in mac proc SR and RA.

* Replace loggers in mac UL HARQ.

* Replaced loggers in main ue stack class.

* Fixed nas test crashing due to a null string.

* Ported mac_test to use the new loggers.

* Removed TTI reporting for the PHY log as the old logger did.

* Replaced loggers in UE phy tests.

* Configure loggers in nas_test.

* Replaced loggers in rrc_meas_test.

* Replaced loggers in rrc_reconfig_test.

* Added missing newline in tft_test.

* Fix compilation errors in TTCN3 tests.

* Fix linker error detected in CI and warning.

* Replaced loggers in TTCN3 tests.

* Fix a text replace error in some log messages.

* Remove trailing newlines from log entries.

* Remove old logger from rrc.

* Flush backend before printing the test status.

* - Fix compilation error from previous rebase.
- Remove trailing newlines from some missing log entries.
2021-01-28 17:17:43 +01:00
David Rupprecht 42aa5c4499 Fixed order to set c1 ind ul_dcch_msg 2021-01-28 17:15:52 +01:00
srsLTE codebot c9f48bce7b Merge branch 'next' into agpl_next
# Conflicts:
#	lib/include/srslte/phy/ch_estimation/ul_rs_tables.h
#	lib/include/srslte/phy/ue/ue_dl_nr_data.h
#	lib/src/phy/ue/ue_dl_nr_data.c
#	srsue/test/ttcn3/hdr/swappable_log.h
2021-01-28 16:43:09 +01:00
Andre Puschmann 4709bacefd srsue: add DL NR-ARFCN param
* add PHY param to set DL NR-ARFCN
* use new band_helper class to convert ARFCNs to supported bands
* signal supported NR bands in UE capabilities
2021-01-28 12:06:02 +01:00
David Rupprecht 9ccc36d4fa Make fake measurement frequency depend on measurement config 2021-01-27 10:37:09 +01:00
David Rupprecht 1b19ee40e7 Added usim features for key derivation 2021-01-27 10:37:09 +01:00
David Rupprecht ceda458bb3 Added MAC NR to EUTRA and NR with stack interfaces including MAC config build
Moved MAC logical channel config to MAC interface types
2021-01-27 10:37:09 +01:00
David Rupprecht e0420049e3 Build infrastucture for reconfig 2021-01-27 10:37:09 +01:00
David Rupprecht 64299960bd Added procedure for NR reconfiguration and RRC with NR complete 2021-01-27 10:37:09 +01:00
Xavier Arteaga 13c594651e Apply minor NR GUI comments 2021-01-25 22:04:55 +01:00
Xavier Arteaga 3ee667c4a5 SRSUE: added NR-PDSCH constellation in GUI 2021-01-25 22:04:55 +01:00
Xavier Arteaga 59114206ae SRSUE: Unify PRACH reconfiguration conditions 2021-01-21 21:11:15 +01:00
Andre Puschmann a09fb95c25 proc_ra: protect RA procedure from concurrent thread access
that patch addreses issue #2199 by defering RA-related calls that
are executed from within PHY workers.

The time-critical bits of more complex functions such as tb_decoded()
are still executed in the PHY worker thread but the state machine
manipulation is defered.
2021-01-20 17:12:10 +01:00
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
2021-01-20 15:46:46 +01:00
Xavier Arteaga 8a3d70f6da Fix intra-cell measurement ringbuffer overflow 2021-01-19 22:20:50 +01:00
Ismael Gomez a360580999 Run PRACH workers before cc_workers fixes memory corruption when PRACH workers run in foreground (eg in ZMQ) 2021-01-12 21:30:57 +01:00
David Rupprecht a89477a805 Hardcoded Samsung caps can be activated with if 1 in rrc_nr.cc 2021-01-12 20:23:35 +01:00
David Rupprecht bc2e230461 Enable UM mode for Amarisoft 2021-01-12 20:23:35 +01:00
David Rupprecht da0e64c51a Add non_crit_ext for irat parameter 2021-01-12 11:07:52 +01:00
David Rupprecht 1a10c783b5 Faking measurements 2021-01-08 17:20:08 +01:00
David Rupprecht f7d313147a Added infrastrukture for measurements
Init rrc_nr as part of the LTE stack
2021-01-08 17:20:08 +01:00
David Rupprecht 4305929ec7 Hardcoded NR/MRDC-Capabilities 2021-01-08 17:20:08 +01:00
David Rupprecht b79eef0860 Introducing nr_rrc <-> rrc interface for eutra and nr cap query 2021-01-08 17:20:08 +01:00
David Rupprecht 020d0dacc8 add the additional sec cap to NAS attach request
use same capabilities that are signaled for EUTRA
2021-01-08 17:20:08 +01:00
David Rupprecht 9eb0b72cb4 Added rrc function has_nr_dc 2021-01-08 17:20:08 +01:00
Andre Puschmann 37fc1c59e3 fix DRB release logging
this caused wrong logs because the LCID was printed based on the assumption
that the DRB LCID is alwasy 2 + drb ID

Use drb_id as drb_cfg key
2021-01-08 17:20:08 +01:00
Andre Puschmann 910dc5af86 Merge branch 'next' into agpl_next 2021-01-02 17:41:50 +01:00
Xavier Arteaga b3200d9ef5 Renaming common UL/DL DMRS related types and initial NR PUSCH implementation 2020-12-30 13:39:08 +01:00
Andre Puschmann 52da9eb46f srsue,phy: fix setting of PHY log level
probably a regression from the new log system integration.
it was disabling PHY logs, from PRACH for example.
2020-12-28 21:21:44 +01:00
Andre Puschmann 3573644624 srsue: fix stdout metrics print when scells aren't configured yet
during MAC reset, scells are reset to and their PCI is set to UINT32_MAX
which results in malformatted stdout prints, see below:

Random Access Transmission: seq=16, ra-rnti=0x2
Random Access Transmission: seq=14, ra-rnti=0x2
 0   4   -24    24  -1.1u   1.0   140  0.50    0.0     0%   0.0   0.0    0.0    0.0    67%
 14294967295   0.0   0.0  -1.1u   0.0   0.0   0.0    0.0     0%   0.0   0.0    0.0    0.0     0%
 24294967295   0.0   0.0  -1.1u   0.0   0.0   0.0    0.0     0%   0.0   0.0    0.0    0.0     0%
 34294967295   0.0   0.0  -1.1u   0.0   0.0   0.0    0.0     0%   0.0   0.0    0.0    0.0     0%

this patch checks the configured PCI value against UINT32_MAX and
prints "n/a" in case the scells aren't set yet.
2020-12-28 21:21:44 +01:00
Xavier Arteaga 909e5de34f Fix NR workers 2020-12-28 10:11:08 +01:00
Francisco Paisana e27c0869e5 update RRC ASN1 to 2020-09 v15.11 2020-12-17 17:55:58 +01:00
Francisco Paisana 6803f48cc0 cell selection and reest rrc procedures were causing a callstack reentrancy problem. This issue was circumvented with a defer_task call 2020-12-17 01:39:59 +01:00
Andre Puschmann c8801578df gw: use std::chrono for metrics and fix nan display
* replace gettimeofday with std::chrono
* fix nan printing when nof_tti is zero (at startup)
2020-12-16 20:39:21 +01:00
David Rupprecht 81609d48dd Added measurment report for interrat nr15
Added function for removing interrat triggers
2020-12-16 14:12:38 +01:00
David Rupprecht 5df2fb1fa1 Added rrc has nr neighbour cells 2020-12-16 14:12:38 +01:00
David Rupprecht 0e4d77da76 Refactor eutra reporting code and add report triggers for inter rat measurements 2020-12-16 14:12:38 +01:00
David Rupprecht e4e67eebce Added infrastucture to process measurments and evaluate interrat triggers 2020-12-16 14:12:38 +01:00
David Rupprecht 25e5b88704 Added NR range_to_value function and debug logging for measurements 2020-12-16 14:12:38 +01:00
David Rupprecht ce4526a935 Extended measurements interrat nr r15 testcase with measurements 2020-12-16 14:12:38 +01:00
David Rupprecht 826dd32c89 Rename meas_cell to meas_cell_eutra
Added meas_cell_nr class

Make meas_cell list as template class

Inheritance rrc_cell to meas_cell_nr
Added process_new_cell_meas_nr function
2020-12-16 14:12:38 +01:00
David Rupprecht 62b558fccf Move rat type to common header
Removed phy measurement from rrc interface phy

Updated rrc interface for handling measurements
2020-12-16 14:12:38 +01:00
Francisco Paisana 0f693b36b2 changed pdu latency calculation to std chrono 2020-12-14 13:47:05 +01:00
Codebot 98425e0b2b Adding AGPL copyright to new files 2020-12-13 23:12:56 +01: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
David Rupprecht 848496bb0f Moved get_earfcn to srslte get_carrier_freq func 2020-12-12 15:59:27 +01:00
David Rupprecht d4fb2dfb16 Added handling of inter rat measurement config function
Make report config more agonistic
2020-12-12 15:59:27 +01:00
David Rupprecht 2e51cfc1a5 Added black cells with index function
Added new index functios
Use asn1 list functions for toAddMod and toRem lists
2020-12-12 15:59:27 +01:00
David Rupprecht f4b0042c10 Added minimal interrat and nr measurement testcase
Added the handling of nr_r15 meas config
Added seperate handling of reportConfig for eutra
2020-12-12 15:59:27 +01:00
Andre Puschmann ab598dae3b gw: calculate GW throughput based on TTI timing
similiar like the RLC patch, MAC TTIs are passed to GW so the
rx/tx rate can be calculated based on the LTE timing
2020-12-12 15:59:27 +01:00
Andre Puschmann c0883291f6 rlc: pass TTI to get_metrics to calculate "real" LTE rx/tx rate
when retrieving the RLC metrics, the number of TTIs since the last
call are passed. This allows to calculate the actual rate
based on the LTE timing rather than only the system timing.
2020-12-12 15:59:27 +01:00
Andre Puschmann 1de2abb5f7 sync: log TTI and TTI jumps before calling Stack thread 2020-12-12 15:59:27 +01:00
Andre Puschmann 346c07a9f2 sync: update log TTI before logging first message 2020-12-12 15:59:27 +01:00
Xavier Arteaga c635b1e467 Initial NR DCI blind-search 2020-12-12 15:59:27 +01:00
Xavier Arteaga ebd87e63c0 Fix worker NR compilation 2020-12-12 15:59:26 +01:00
Xavier Arteaga d5d3594f49 Removed unused attribute 2020-12-12 15:59:26 +01:00
Xavier Arteaga d72820ddaa SRSUE: fix compilation 2020-12-12 15:59:26 +01:00
Xavier Arteaga f9643843a0 SRSENB/UE Fixed NR workers 2020-12-12 15:59:26 +01:00
Xavier Arteaga b501f2eeaf SRSENB/UE: Added NR workers 2020-12-12 15:59:26 +01:00
Xavier Arteaga ac930003be SRSUE: Integrated NR workers 2020-12-12 15:59:26 +01:00
Xavier Arteaga a908fb6c5b Fix NR srsue/srsenb. Initial PHY NR in SRSENB. 2020-12-12 15:59:26 +01:00
Xavier Arteaga 2b2db90933 SRSUE: initial NR workers 2020-12-12 15:59:26 +01:00
Xavier Arteaga 85afdf8ce3 SRSENB: moved phy workers to lte worker pool 2020-12-12 15:59:26 +01:00
Xavier Arteaga df5e3414dc Fix segmentation fault 2020-12-12 15:59:26 +01:00
Xavier Arteaga c6798653be SRSUE: created initial PHY LTE worker pool 2020-12-12 15:59:26 +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
Xavier Arteaga 6d3bf7089f SRSUE: use available carriers for inter-frequency measurement 2020-12-12 15:59:25 +01:00
Francisco 66712023bb remove unneeded includes of full rrc asn1 lib 2020-12-12 15:59:25 +01:00
Xavier Arteaga 959f37ae81 SRSUE: Renamed PHY scell_state to cell_state 2020-12-12 15:58:33 +01:00
Xavier Arteaga c5cb4d9984 SRSUE: Added time accurate SCell activation 2020-12-12 15:58:33 +01:00
Xavier Arteaga f64c268a69 SRSUE: Refactored MAC/RRC SCell Activation/Deactivation 2020-12-12 15:58:33 +01:00
Andre Puschmann 35373d1385 enb,ue: add cmdline arg to enable usage of default LTE sample rate
some RF boards might have issues with the sharp filters that are needed
for the reduced sample rate operation that we use by default.

This switch allows to use the default LTE sampling rates and
configure this at run-time, not compile time.
2020-12-12 15:58:33 +01:00
David Rupprecht a8074fe39d Fixed TTCN UE for starting a service request in rrc_idle 2020-12-12 15:58:33 +01:00
Pedro Alvarez 38822873e8 Stop T3402 2020-12-12 15:58:33 +01:00
Pedro Alvarez 604e79214d Changed NAS is_attached interface to is_registered. 2020-12-12 15:58:33 +01:00
Pedro Alvarez 5649ecaab0 Renamed nas_common.h to nas_config.h. Moved emm_state_t into nas_emm_state.h and nas_emm_state.cc. 2020-12-12 15:58:33 +01:00
Pedro Alvarez 14844a168a Created new class to hold all NAS states for the NAS state machine. Added EMM-DEREGISTERED substates and EMM-REGISTERED substates.
Decoupled PLMN selection, attach request and service request. Removed RRC connect procedure from NAS.
2020-12-12 15:58:33 +01:00
Andre Puschmann 2be85217fd mac,ue: reset demux when restting MAC
this potentially fixes the issue we see during HO and RLF
under high DL load.

The issue happens because buffered DL PDUs are delivered to
RLC after reestablishing RLC that confuse the receiving
RLC entity bc the sequence numbers are very high, as opposed
to begin with zero again after reestablishment.
2020-12-12 15:58:33 +01:00
Ismael Gomez 67690136be Select strongest cell after cell search (#2001)
* Select strongest cell in all frequencies when

* Change variable name
2020-12-12 15:58:33 +01:00
Ismael Gomez 709d69d55f Reset rv_idx after an adaptive retx in UE 2020-12-12 15:58:33 +01:00
Andre Puschmann 7cf919e2af Fix MAC PDU packing after sending Truncated BSR (#2004)
* mac_test: add extended TBSR unit test

unit test to MAC UL packing after sending a TBSR

this fixes the MAC issues described in issue #2002

* mux: fix updating of LCG buffer state after packing PDU

we've previously lowered the buffer state of the LCG according
to the bytes that have been scheduled, but not according to
those that have been actually included in the PDU.

* proc_bsr: fix LCG buffer state updating for TBSR

when sending a TBSR do not update the internal buffer
state of the BSR proc.

This caused issues because the buffer state for all LCG that
are not included in the TBSR are set to zero, although at least
one LCG does have data to transmit.

* rlc_am: include LCID when logging retx of SN
2020-12-12 15:58:32 +01:00
Francisco Paisana 510959b50f update nr asn1 files, and asn1 tests 2020-12-12 15:58:32 +01:00
Andre Puschmann 082e002b67 nas: fix airplane mode simulation
the current implementation was somehow broken after a
NAS refactor. It was undetected because we didn't really
use it.

this fixes the simulation by using a single timer to simulate
airplane mode transitions.
the timer is rearmed in the timer_expire() function
if the correspondig event is set.

Has been tested to work well with, e.g.:

--sim.airplane_t_on_ms 5000 --sim.airplane_t_off_ms 10000
2020-11-06 09:33:36 +01:00
Xavier Arteaga 32ea840a30 INTRA: better ring-buffer protection 2020-11-02 16:31:37 +01:00
Xavier Arteaga 369cffec00 More deterministic SCell search test 2020-11-02 16:31:37 +01:00
Xavier Arteaga a5f9ea5654 SRSUE: force paging for every cell reselection procedure end 2020-10-28 16:50:18 +01:00
Andre Puschmann fd5cde525c proc_bsr: fix race condition in BSR reporting
fix for #1934

This fixes a race condition between Stack thread and DL
PDU processing that lead to updates of the RLC buffer that
are undetected by the BSR routine.

What happens is that in a UL SCH PDU all outstanding data is transmitted
and and a LBSR with all zero buffers is sent.

14:39:47.327301 [MAC ] [D] [ 3793] BSR:   LCID=3 old_buffer=59
14:39:47.330600 [MAC ] [I] [ 3793] UL LCID=3 len=58 LBSR: b=0 0 0 0

Note that "old_buffer" isn't set to zero here.

At the same time (same TTI), the MAC PDU processing thread handles DL-SCH PDUs
that may generate new UL PDUs:

14:39:47.330749 [RLC ] [I] DRB1 Tx SDU (54 B, tx_sdu_queue_len=1)
14:39:47.330762 [RLC ] [I] DRB1 Tx SDU (54 B, tx_sdu_queue_len=2)
14:39:47.330775 [RLC ] [I] DRB1 Tx SDU (54 B, tx_sdu_queue_len=3)
..

Those PDUs are "new data" since the previous buffer state was zero.

Here is the race now between the threads, at the end of the bsr::step() function
old_buffer of each LCG is updated with the previous new_buffer, so
the buffer state of LCG=2 is now 59.

Now MAC starts the next TTI:

14:39:47.331910 [MAC ] [D] [ 3794] Running MAC tti=3794
14:39:47.331928 [MAC ] [D] [ 3794] Update Bj: lcid=0, Bj=0
14:39:47.331934 [MAC ] [D] [ 3794] Update Bj: lcid=1, Bj=0
14:39:47.331938 [MAC ] [D] [ 3794] Update Bj: lcid=2, Bj=0
14:39:47.331941 [MAC ] [D] [ 3794] Update Bj: lcid=3, Bj=-1752
14:39:47.331951 [MAC ] [D] [ 3794] BSR:   LCID=0 update new buffer=0
14:39:47.331960 [MAC ] [D] [ 3794] BSR:   LCID=1 update new buffer=0
14:39:47.331964 [MAC ] [D] [ 3794] BSR:   LCID=2 update new buffer=0
14:39:47.331971 [MAC ] [D] [ 3794] BSR:   LCID=3 update new buffer=335
14:39:47.331976 [MAC ] [D] [ 3794] BSR:    check_new_data() -> get_buffer_state_lcg(0)=0
14:39:47.331980 [MAC ] [D] [ 3794] BSR:    check_new_data() -> get_buffer_state_lcg(1)=0
14:39:47.331984 [MAC ] [D] [ 3794] BSR:    check_new_data() -> get_buffer_state_lcg(2)=59
14:39:47.331988 [MAC ] [D] [ 3794] BSR:    check_new_data() -> get_buffer_state_lcg(3)=0
14:39:47.331993 [MAC ] [D] [ 3794] BSR:   LCID=0 old_buffer=0
14:39:47.332000 [MAC ] [D] [ 3794] BSR:   LCID=1 old_buffer=0
14:39:47.332003 [MAC ] [D] [ 3794] BSR:   LCID=2 old_buffer=0
14:39:47.332007 [MAC ] [D] [ 3794] BSR:   LCID=3 old_buffer=335

And since the buffer state of LCG=2 isn't zero, the new data for LCID=3 of that LCG is considered.
So effectivly, the BSR missed the "empty" buffer state for a fraction of time and doesn't
consider the outgoing data generated in the same TTI as new. It therefore
doesn't transmit a BSR.

in which a BSR wasn't
2020-10-28 12:05:53 +01:00
Andre Puschmann 465c3d9186 proc_sr: remove info log when starting SR proc
this was a very noisy log that was printed in pretty much
every TTI because the BSR procedure starts a SR whenever
it needs to send a regular BSR. The SR is canceled when a UL
grant arrives but the log line stays there.

Since we are printing a log when we actually signal a SR
to the PHY, this line is not needed.
2020-10-28 12:05:53 +01:00
Andre Puschmann 1e3ad5b0dc proc_bsr: fix high priority channel trigger logic
this fixes the trigger logic for periodic BSRs. Previously we
would always trigger the "new data for highest priority LCID"
whenever new data becomes available for a LCID for which
a BSR has already been sent.

However, a BSR should only be sent if the priority is in fact higher
(lower int number).
2020-10-28 12:05:53 +01:00
Andre Puschmann d5286e70aa proc_bsr: refactor and add extra print_state() method
allows to call the print_state() routine from other places in the BSR
2020-10-28 12:05:53 +01:00
Andre Puschmann d1ef5bd915 demux: log DL PDUs
instead of just printing the LCIDs that contain SDUs,
we use the to_string() function to log the entire MAC DL-SCH PDU
2020-10-28 12:05:53 +01:00
Andre Puschmann 0740154bff rrc,sync: fix two uninit vars
detected by Valgrind when running UE with TDD cell
2020-10-25 14:42:30 +01:00
Andre Puschmann 58776bc227
ue,sync: increase timeout for entering IDLE to 2s (#1941)
in ZMQ runs we've seen that entering idle could take quite
a bit of time depending how quickly workers get their samples
sent or reconfigurations done.

In one example up to ~160ms

this patch increases the maximum wait time to 2s.
2020-10-22 22:13:03 +02:00
Francisco Paisana 514deaf25b fix resetting of phy and mac during reestablishment 2020-10-22 19:55:46 +02:00
Xavier Arteaga caf37b8e62 Added serving cell index in UCI/CSI report trace 2020-10-20 11:53:28 +02:00
Francisco Paisana 0842ed9db1 fixed phy cell selection state update for the fail path 2020-10-16 15:54:42 +01:00
Francisco Paisana 665b3996bb now the phy controller handles the scenario where the phy cell selection failed to be initialized 2020-10-16 15:54:42 +01:00
Andre Puschmann 287c653755 proc_bsr: improve BSR logging to print name of triggered BSR instead of enum 2020-10-16 09:16:54 +02:00
Andre Puschmann 3994407f46 proc_bsr: fix BSR insertion in UL PDUs
the BSR trigger wasn't reset after includinga regular or periodic
BSR inside a PDU. This caused the muxing to include another BSR in the
next UL grant. For very small grants, for example with 6 PRBs, this
causes the UE to send way too many BSRs.
2020-10-15 11:52:13 +02:00
Andre Puschmann 937067a205 proc_phr: rename start_periodic_timer() and make sure its only started if a valid config is present 2020-10-13 17:38:45 +02:00
Andre Puschmann fab86382c1 mac,rrc: add interface to set SR config explicitly without touching any other MAC function
when releasing PUCCH/SRS (see 5.3.13 in 36.331) we need to reset the SR config as well.
In our case, SR is handled by MAC so we need to (re-)configure MAC, not all of
MAC though, just SR.
2020-10-13 17:38:45 +02:00
Francisco Paisana f185272367 added comments explaining the meaning of the cell reselection procedures 2020-10-12 13:42:46 +01:00
Francisco Paisana 49e7b8e36e - Change periodicity of cell reselection after a new serving cell has been selected
- Enable PHY intra measurements during RRC_IDLE
2020-10-12 13:42:46 +01:00
Francisco Paisana 585d7c923a refactor and simplification of cell selection procedure. Using now a SIB3 threshold to decide whether to select neighbor cell while in RRC_IDLE 2020-10-12 13:42:46 +01:00
Francisco Paisana cae116932b rewrite the rrc::leave_connected() function to better match the standard. The measurements should not stop while in RRC_IDLE. 2020-10-08 10:51:18 +01:00
Pedro Alvarez 5a4e71a6e4 Created k_enb_context structure that holds k_enb, NCC and NH to make it easier to restore context from failed handover. 2020-10-08 09:46:34 +01:00
Pedro Alvarez bcb422736c Save and restore NH on handover and handover failure. 2020-10-08 09:46:34 +01:00
Xavier Arteaga 08e24d00af Fix TA console trace 2020-10-08 09:21:00 +02:00
Pedro Alvarez 3eb525563a Fix issue reading MNC length in USIM. 2020-10-07 10:04:50 +01:00
Xavier Arteaga 6ae47b6510 SRSUE: Deafult PUCCH/SRS does not imply full PHY dedicated defaults 2020-10-07 09:58:23 +02:00
Andre Puschmann 5e95fd4a43 ul_harq: reduce log level for new_grant_ul() if RNTI isn't found
this avoid logging a warning on UE shutdown if the MAC is already reset
but one of the PHY workers still decodes an UL grant for the old RTNI

21:30:29.254844 [RRC ] [I] Going RRC_IDLE
21:30:29.254848 [RRC ] [I] Proc "Go Idle" - Left connected state
21:30:29.259499 [PHY0] [I] [ 3865] Finished setting new PHY configuration cc_idx=0
21:30:29.259512 [PHY0] [I] [ 3865] Setting new PHY configuration cc_idx=0...
21:30:29.264190 [PHY0] [I] [ 3867] Finished setting new PHY configuration cc_idx=0
21:30:29.275036 [PHY1] [I] [ 3872] PHICH: hi=1, corr=1.0, I_lowest=1, n_dmrs=0, I_phich=0
21:30:29.275050 [MAC ] [W] [ 3872] Received grant for unknown rnti=0x46
2020-10-06 20:51:46 +02:00
Andre Puschmann 362461329a rrc: improve log message when detecting RLF 2020-10-06 20:51:46 +02:00
Andre Puschmann 76c648106f rrc: remove varMeasState for unknown neighbor cells
this fixes issue #1846 that appears to be related
to the enter/exit state for measurements that is kept
even after a cell disappears from the neighbor list
2020-10-06 16:28:09 +02:00
Andre Puschmann 829dfc4e60 metrics_stdout: fix precision calculation for 100%
the precision for 100% was causing the default value of -1 which in turn
cause to print the full precision resulting in ugly stdout plots.

before:
--------Signal--------------DL-------------------------------------UL----------------------
cc pci  rsrp    pl    cfo   mcs   snr turbo  brate   bler   ta_us  mcs   buff  brate   bler
 0   0   -10    74    0.0   0.0   0.0   0.0   200k     0%   0.0   0.0    0.0    0.0     0%
 1   0   0.0   0.0    0.0   0.0   0.0   0.0   150k100.000000%   0.0   0.0    0.0    0.0     0%

after:
--------Signal--------------DL-------------------------------------UL----------------------
cc pci  rsrp    pl    cfo   mcs   snr turbo  brate   bler   ta_us  mcs   buff  brate   bler
 0   0   -10    74    0.0   0.0   0.0   0.0   200k     0%   0.0   0.0    0.0    0.0     0%
 1   0   0.0   0.0    0.0   0.0   0.0   0.0   150k   100%   0.0   0.0    0.0    0.0     0%
2020-10-05 22:42:04 +02:00
Andre Puschmann e72219789e ul_harq: don't clear payload buffer during HARQ reset
this fixes #1791 which was caused by a race between
the PHY workers preparing a new UL-SCH PDU and the Stack resetting
the MAC, which in turn resets the HARQ processeses, which cleared
the buffer and set the length to zero.

Not explicitly clearing the buffer on a HARQ reset seems to be
fine since the PHY worker clears the buffer before starting to
pack a new PDU anyway.
2020-10-05 22:41:12 +02:00
Pedro Alvarez 22a6dc305f Moved common variables and functions from the usim and pcsc_usim classes into usim_base class. 2020-10-05 12:14:46 +01:00