Commit Graph

3388 Commits

Author SHA1 Message Date
Francisco Paisana 4152e43bab fix gtpu packing when extension header is enabled 2021-02-15 10:49:54 +01:00
Francisco Paisana c40ad81a90 cleanup s1ap methods. remove hard coded erab list in s1ap handover required message. 2021-02-15 10:49:54 +01:00
Francisco Paisana 5e48327eca fix valgrind memcheck warnings in rlc_am_test 2021-02-13 11:04:27 +01:00
Francisco dc4283c572 added cmake functions as helpers to set labels in ctests 2021-02-12 20:27:31 +01:00
Francisco add156c3fe update phy lib cmake test labels 2021-02-12 20:27:31 +01:00
Francisco 23459dee28 Created enb_{rlc/pdcp/gtpu/phy_interfaces.h files. 2021-02-12 16:36:50 +01:00
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 2021-02-12 16:36:50 +01:00
Pedro Alvarez dd6d6f731d Passing SN provided by upper layers to PDCP entity. Using it to calculate TX_COUNT if passed. 2021-02-12 11:57:36 +00:00
Pedro Alvarez 492ea2a5a8 Addressing reviewers comments to #2290.
Removing unecessary \n for logs and changed log of PDCP info queue
 capacity to debug to avoid log spam.
Changed log level for unhandled S1AP messages from error to warning
 in EPC to avoid failing tests because of error message.
Changed usage of allocate_unique_buffer to make_unique_buffer()
2021-02-11 15:49:00 +00:00
Pedro Alvarez fcaaf72187 Starting to add discard functionality to PDCP LTE entity.
This includes:
  - Adding a queue (implemented with std::map) for undelivered PDUs.
    This queue uses the SN used for TX as the key.
  - Added discard timer that is started upon reception of the SDU. Upon
    expiry of the timeout a discard callback removes undelivered PDUs
from the queue.
  - Added the mechanisms to the notify_delivery to remove PDUs from the
    undelivered queue when the PDU is ACK'ed.
  - Added test case for both timer expiry and acknowledgment.
  - Fix up the getter for buffered SDUs to return the undelivered SDUs
  - Changed default PDCP discard timer, so AM has a discard timer by
    default.
2021-02-11 15:49:00 +00:00
faluco 5c8923123a Misc compilation fixes from the fapi repo. 2021-02-11 15:38:50 +01:00
faluco 57f66febfc Ported the RLC classes to srslog in the lib dir. 2021-02-11 14:37:27 +01:00
faluco f424f2e113 - Upgraded PDCP classes in lib to use srslog.
- Update tests to new changes.
2021-02-11 14:37:27 +01:00
faluco 6359a2d948 - Upgrade the gtpu class in lib dir to srslog.
- Propagate old log elimination through all the dependencies of gtpu.
2021-02-11 14:37:27 +01:00
faluco 62fcf04083 Ported the all radio classes to use srslog. 2021-02-11 14:23:14 +01:00
Francisco c2dfe615e7 fixed alignment of LIBLTE_BYTE_MSG_STRUCT to reflect the one of byte_buffer. Add bzero in liblte packers 2021-02-11 13:09:06 +00:00
Francisco 4188b5146e fix uninitialized memory access in gtpu_test and liblte_mme unpacking 2021-02-11 13:09:06 +00:00
faluco 6545df6681 Removed new lines in log macros in all example apps. 2021-02-11 12:01:13 +01:00
Ismael Gomez 77f905dc64 Move TTI to PID mapping to MAC 2021-02-10 21:25:25 +01:00
faluco 9d15a44c73
Port lib/phy to srslog (#2298)
* - Ported the channel class to srslog.
- Removed all newlines of log messages in lib/phy.

* Remove more newlines that use the C debug macros.
2021-02-10 13:46:25 +01:00
Andre Puschmann 6eed6f622f mac_nr: update RA related function in MAC/PHY interface
* expose interface to trigger PRACH from MAC
* indicate PRACH tx from PHY
* add temporary RAR PDU handling with Msg3 grant indication to PHY
2021-02-08 22:15:09 +01:00
Andre Puschmann 01acf95566 mac_rar_pdu_nr: update public interface to make it easier to access
* provide all subPDUs as const vector&
* return UL grant directly
2021-02-08 22:15:09 +01:00
Francisco 6925b40722 remove extra print when buffer pool is depleted 2021-02-08 12:20:37 +00:00
Francisco 798f1e57e6 fix byte buffer double free in EPC 2021-02-08 12:20:37 +00:00
Francisco d2ddcb0d4e avoid bzeroing byte buffers at every allocation for better runtime performance 2021-02-07 18:48:21 +00:00
Francisco 3265d940ec remove byte buffer pool cached member variables as they are unnecessary now. 2021-02-07 18:48:21 +00:00
Francisco 04ab4eefcd use new make_byte_buffer() helper method to create unique_byte_buffers 2021-02-07 18:48:21 +00:00
Francisco 8a9c326bcb remove old direct uses of byte_buffer_pool 2021-02-07 18:48:21 +00:00
Francisco 1e2153769e remove byte buffer pool cleanup method and unnecessary mutexes 2021-02-07 18:48:21 +00:00
Francisco 0c7c317be5 refactor byte_buffer class and move it to separate file 2021-02-07 18:48:21 +00:00
Andre Puschmann 30216fe1fc mac_pdu_nr_test: add packing test for UL-SCH PDU with CRNTI, PHR and SBSR 2021-02-05 15:55:21 +01:00
Andre Puschmann e227916819 mac_sch_pdu_nr: add SBSR, PHR and CRNTI packing 2021-02-05 15:55:21 +01:00
Andre Puschmann 6a0f3d0bc5 common_helper: remove newline 2021-02-05 15:55:21 +01:00
Andre Puschmann 4ca43c6804 mac_sch_pdu_nr: add unpacking helpers for CRNTI, SBSR and PHR CEs
* unpackers for CEs
* testcase with TV
2021-02-05 15:55:21 +01:00
Xavier Arteaga a154bef23f Added incremental phase in NR-PUSCH modulator 2021-02-05 15:55:03 +01:00
Xavier Arteaga 8f57437e6f Add NR-PUSCH-DMRS amplitude option and procedure 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
Xavier Arteaga 19e9c25d1d Added ZMQ Tx sample offset 2021-02-05 15:55:03 +01:00
Pedro Alvarez 7b25eac47c Fix race condition in rlc_am_stress test and other fixes related to this
test. The race condition was being cause by write_sdu being called
simultanously to read_pdu, which could cause the read_pdu to try to get
the SDU info before it had been written by the write_sdu.

Changes in this commit include:
 - Make sure PDCP sn in included in RLC AM stress test.
 - Stop handling control PDU when TX is not enabled in RLC AM.
 - Fixed issue with length of the PDCP SN in rlc_stress_test.
 - Moved the place were sdu info erase was called to avoid double calls to erase
 - Tentative fix for race condition in rlc_am_stress test.
 - Added function to print information about undelivered_sdu_info_queue
   for debugging.
2021-02-05 12:24:50 +00:00
Pedro Alvarez 2b092ddc85 Initialize byte_buffer metadata to avoid unintialized variable warnings. 2021-02-05 12:24:50 +00:00
Pedro Alvarez 261c2b2e03 Removed limit to the undelivered SDUs info queue in RLC AM. Printing a warning if the queue is getting large instead. 2021-02-05 12:24:50 +00:00
Pedro Alvarez d0ef6ce00b Fix typos and bad comments in rlc_am_lte.cc and rlc_am_test.cc
Added checks for the nack_sn in the status reports of the rlc_am_test.
2021-02-05 12:24:50 +00:00
Pedro Alvarez 24db20bcca Removed some unused variables after changing method of tracking notifications. Removed rlc_am_notify_pdcp test file. Testing is now in rlc_am_test.cc 2021-02-05 12:24:50 +00:00
Pedro Alvarez 6c071a784c Changed notification mechanisms to use map of acked SNs instead of acked bytes.
This was required due to an issue where bytes were counted twice when a
packet had been lost.
2021-02-05 12:24:50 +00:00
Pedro Alvarez 649d642776 Moved notification tests from rlc_am_notify_pdcp_test.cc to rlc_am_test.cc.
This added some tests to resegmentation.
2021-02-05 12:24:50 +00:00
Pedro Alvarez 389cf4d943 Moved updating the notify info to it's own function. 2021-02-05 12:24:50 +00:00
Pedro Alvarez de669d214a Fix test header and queue_capacity check in RLC notifications.
Also, remove unecessary nullptr initializaion and fixup some newlines.
2021-02-05 12:24:50 +00:00
Pedro Alvarez de90b4753f Added the ability of the RLC AM to notify the PDCP of the acknowledged
PDCP PDUs. This includes:

- Modifying the byte_buffer_t to include PDCP SN meta-data. This way,
  the RLC can keep track of the ack'ed bytes for a specific PDCP PDU.
- Added in the RLC an `undelivered_sdu_info queue`, to keep track of the
  amount of ack'ed bytes and the total size of the PDCP PDU,
  so the RLC can know when delivery is finished.
- Added an interface between the PDCP and the RLC so that the RLC can
  notify the PDCP when it receives an ack from the status PDUs. The RLC
  passes to the PDCP a vector of all the ack'ed pdus in a rx'ed status PDU.
- Added some tests to the notify functionality. This includes some tests
  where the PDUs are acked imediatly, and one test where the PDU is
  retx'ed.
2021-02-05 12:24:50 +00: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
AlaiaL 9c764c299d - Removed the try/catch. Checking the allocation with std::nothrow
- Adjusting the code with the coding style.
2021-02-04 15:18:27 +00: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 4f43935dd3 NR-SCH: CRC is KO if data is all zeros 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
Francisco 9e25e95545 fix S1AP UE Capability Indication message. Created helper to log received S1AP messages 2021-02-03 17:20:07 +00:00
Francisco 78d1b8083a fix GTPU tunneling. Avoid forwarding packets to PDCP while the PDCP bearer is not yet created 2021-02-03 17:20:07 +00: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 199f1c953e Remove unneeded logmap headers. 2021-02-03 14:15:27 +01:00
faluco b014233662 - Port time related classes to srslog.
- Adapt tti_point_test to srslog.
2021-02-03 14:15:27 +01:00
faluco 1a5799a6ca - Replace loggers is network utils.
- Adapt tests that use network utils and callers.
2021-02-03 14:15:27 +01:00
faluco e9ed6f31ba Port mac_pcap to srslog. 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 c8a4bf2613 - Fix unused variable in buffer_pool.h
- Replaced logger to srslog in log_args utility function.
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
faluco 96c07a69c0 Report the RLF event to the JSON event file in the enb. 2021-02-03 13:13:36 +01:00
Xavier Arteaga c60d207826 Add fix phase shift in gNb PHY 2021-02-02 15:23:14 +01:00
Xavier Arteaga 194670a2a3 NRPHY: hard-coded symbol phase correction 2021-02-02 15:23:14 +01:00
Xavier Arteaga 820c9066db Fix OFDM modulator for NR 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 7e6a35a9f7 Fix Synch error calculation 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 a85d79c6b7 Added ZMQ option to delay/advance Rx samples 2021-02-02 15:23:14 +01:00
Xavier Arteaga 73001c9541 Implement NR-DCI conversion to string 2021-02-02 15:23:14 +01:00
Xavier Arteaga 83a5ce96ed Initial NR OFDM symbol size compatibility 2021-02-02 15:23:14 +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
Francisco 2bde28252c send UE capability indication through S1AP 2021-02-01 22:27:49 +00:00
Francisco d64ce7df77 implementation of S1 E-RAB Release Indication and Error Indication messages 2021-02-01 22:27:49 +00:00
faluco 806268f6cf
Por asn1 code in lib directory to srslog (#2253)
* Match hex dump indentation with srslog.

* Port asn1 utils to use srslog. Converted logging functions from taking varargs to variadic template functions.

* Remove trailing new lines in log lines from asn1 utils.

* First round of upgrades to srslog to asn1 tests.

* Second round of porting asn1 tests to srslog.
2021-02-01 11:58:28 +01:00
Andre Puschmann f88943653b mac: implement MAC RAR PDU unpacking for NR
* add class for mac_rar_pdu_nr
* extend test case
2021-01-30 11:58:25 +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
Xavier Arteaga 6b4a17dc66 Fix uninit condition 2021-01-30 11:57:49 +01:00
Francisco 2befbd1825 setup of forwarding tunnels during enb s1 handover 2021-01-29 18:46:11 +00:00
Francisco e8f6a436af update gtpu test to account for scenario of buffered PDCP SNs, and buffering of direct path until indirect tunnel is closed 2021-01-29 17:22:58 +00:00
Francisco a55c4cdca5 avoid gtpu extension header pdcp number magic number 2021-01-29 17:22:58 +00:00
Francisco 56ec2c286e add gtpu test for tunneling 2021-01-29 17:22:58 +00:00
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
Andre Puschmann 3784439088 add backward as backtrace pretty printer
this patch adds the MIT-licensed header-only library backward-cpp
as possible alternative for our internal backtrace-to-file
writer.
2021-01-28 16:52:52 +01:00
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.
2021-01-28 12:17:18 +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
Andre Puschmann 617e0ddb67 band_helper: add helper class for RF bands
attempt to C++ify handling of radio bands and (E/NR)ARFCNs, etc.
2021-01-28 12:06:02 +01:00
Xavier Arteaga 4fe34b5e5b Apply minor comments in NR-PUCCH 2021-01-27 12:30:56 +01:00
Xavier Arteaga 4c6944b883 Implement NR-PUCCH Format 2 DMRS put/Estimate 2021-01-27 12:30:56 +01:00
Xavier Arteaga 958afaee60 Implement NR-PUCCH Format 2 encode/decode. Initial NR-PUCCH procedures. 2021-01-27 12:30:56 +01:00
Xavier Arteaga 4b6849b775 Polar: Add more information to ERROR traces 2021-01-27 12:30:56 +01:00
Xavier Arteaga 573ff24a47 Fix CRC for more sizes 2021-01-27 12:30:56 +01:00
Xavier Arteaga 1ee4d84f80 Added NR-PUCCH encode/decode format2 skeleton 2021-01-27 12:30:56 +01:00
Xavier Arteaga 4d96cf4a41 More NR-PUCCH support 2021-01-27 12:30:56 +01:00
Xavier Arteaga 697bdb4d6d Added NR-PUCCH Format 1 encoder, decoder and DMRS 2021-01-27 12:30:56 +01:00
Xavier Arteaga 33bb387f52 Initial NR-PUCCH formats 0 and 1 encoder 2021-01-27 12:30:56 +01:00
Xavier Arteaga e7562e5b3f Added ZC sequence LUT object 2021-01-27 12:30:56 +01:00
Xavier Arteaga d100919561 Initial NR-UCI encoder 2021-01-27 12:30:56 +01:00
David Rupprecht 1b19ee40e7 Added usim features for key derivation 2021-01-27 10:37:09 +01:00
David Rupprecht 306bb6b38b Added function for derive keys 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 a6046ca875 Added funcs for asn flat config RLC and PDCP 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
David Rupprecht 145528ad32 Added unpacking test for RRC reconfig 2021-01-27 10:37:09 +01:00
David Rupprecht 99c3aa9ba2 Refactor assert to TESTASSERT in unit test 2021-01-26 21:19:37 +01:00
Xavier Arteaga 7dd99da045 Disable carry-less multiplication 2021-01-26 18:38:30 +01:00
Xavier Arteaga 058bee5fda Increased prime number range 2021-01-26 18:38:30 +01:00
Xavier Arteaga 2f5b1ba9cb Avoid PUSCH-DMRS initialization for 0 PRB 2021-01-26 18:38:30 +01:00
Xavier Arteaga 2f2114f377 Fix typo 2021-01-26 18:38:30 +01:00
Xavier Arteaga 732a220d42 Unified low-PAPR Ruv sequence generation 2021-01-26 18:38:30 +01:00
Xavier Arteaga aa8b69e9a7 Fix prime number 2021-01-26 18:38:30 +01:00
Xavier Arteaga 8de73988b8 Add real vector and complex scalar product 2021-01-26 18:38:30 +01:00
Xavier Arteaga 6bb1788df1 Added more NR CRC polynomials 2021-01-26 18:38:30 +01:00
Xavier Arteaga a7ca8ffff7 Moved prime number to different file 2021-01-26 18:38:30 +01:00
Xavier Arteaga ae3c5ec7d0 Moved all block code (32, O/K) to FEC block
Fix missing header

Fix missing header
2021-01-26 18:38:30 +01:00
Xavier Arteaga 95ce49acd4 Added more vector copy functions 2021-01-26 18:38:30 +01:00
Xavier Arteaga be6cb666e2 Initial moved block coding to FEC 2021-01-26 18:38:30 +01:00
Xavier Arteaga f6b4f65f12 Add NR-PDSCH-DMRS SNR estimation 2021-01-25 22:04:55 +01:00
Pedro Alvarez 350e90a030 Make RLC retransmissions deterministic. It was creating unpredictablity
in the RLC AM tests. See issue #2228
2021-01-25 14:29:17 +00:00
Pedro Alvarez 6ca8bc12ec Fix wrong SN in RLC status PDU when packet is dropped. 2021-01-21 21:12:30 +01:00
Francisco e0937d1dd1 add lcid check and increase limit to 10 2021-01-21 17:04:38 +00:00
Francisco bed979b722 fix out-of-bounds memory writing in the sched_interface::ue_cfg_t ue_bearers member 2021-01-21 17:04:38 +00:00
Ismael Gomez 47dbd6ed70
Merge pull request #2214 from softwareradiosystems/pr_mac_buffers
Limit the number of UL buffers in MAC and deallocate old ones
2021-01-20 21:12:39 +01:00
Francisco b45fdd4f10 use using keyword in asn1 rather than typedef 2021-01-20 20:46:29 +01:00
Francisco 049ad77fca simplify asn1 choice types with one single type with a packer 2021-01-20 20:46:29 +01:00
Francisco c336c3eed2 added to_number() conversion of rrc_nr poll_byte 2021-01-20 17:13:29 +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
Ismael Gomez d5f0634975
Add PUCCH SNR measurement (#2175)
* Add PUCCH SNR measurement

* Fix PUCCH SNR estimation

* Reverted PUCCH noise estimation

* use fpclassify instead of iszero

Co-authored-by: Xavier Arteaga <xavier@softwareradiosystems.com>
2021-01-19 21:55:24 +01:00
Ismael Gomez c1c5fa426c Fix issue with new way of managing ul buffers not working with CA 2021-01-19 16:59:36 +01:00
Ismael Gomez 0780f3caea pdu_queue must be non-blocking in order to avoid the ue or enb to block in the event of a memory leak and the buffer pool running out of buffers. In that case, the null return shall be handled properly and error logged. This commit restores commit c4c44c33f4. 2021-01-16 15:22:29 +01:00
Francisco Paisana d4242f2db7 precompute nof_re_table[sf][prb][slot][cfi] for faster nof_re computation and for more accurate lower bound nof_re computation 2021-01-15 23:24:39 +01:00
Francisco Paisana 9c7c190074 when the rrc fails to allocate the ue cell resources, it should erase the ue from all stack layers 2021-01-15 00:10:42 +01:00
Andre Puschmann dadff1a947 pdu: default initialize pdu members with MAC log
MAC PDUs are default logged using the MAC log. So this gives
hex prints, etc. without having to manually set the logger for each
PDU.
2021-01-12 20:24:20 +01:00
Andre Puschmann fcf481b83e pdu: add check when unpacking MAC PDUs to not read beyond PDU length
we've checked the same when unpacking the subheaders but missed the
case where the payload was read beyond the PDU length, as has been
seen with a malformed RAR PDU.
2021-01-12 20:24:20 +01:00
Andre Puschmann 10da7df194 pdu_test: add TC with malformed RAR PDU
a malformed RAR PDU should not be decoded further if the payload
indicates a length beyond the actual PDU size.
2021-01-12 20:24:20 +01:00
Francisco Paisana 2866886ade fix gcc4.8 compilation issue 2021-01-12 16:22:10 +01:00
Francisco Paisana f8b7351e1b implementation of object memory pool via class-specific operator new/delete 2021-01-12 16:22:10 +01:00
Francisco Paisana ea74ca67eb resolve forward declaration compilation issue in memory pool 2021-01-12 16:22:10 +01:00
Francisco Paisana e96b8c263a add mem pool test. fix mem pool leak bug 2021-01-12 16:22:10 +01:00
Francisco Paisana 8912a8ce6c added extra comments to memory pool code. generalized object pool to mutexed and non-mutexed cases 2021-01-12 16:22:10 +01:00
Francisco Paisana 768a4fa627 added growth policy for rrc::ue memory pool. Fixed memory leak 2021-01-12 16:22:10 +01:00
Francisco Paisana a73cbcdc9d added mem_pool for growing object pools. Applied the mem pool to the rrc::ue creation 2021-01-12 16:22:10 +01:00
Andre Puschmann 78b07daf3b pcap: make public interfaces thread-safe and handle fopen returning nullptr
the previous patch only introduced a thread-safe queue between
PHY workers (writers) and PCAP writer thread (consumer).

However, it is also required to protect the ctor (and close()) to
prevent corrupted PCAP files.

The patch also correctly handles the case where the PCAP couldn't
be openend for writing and doesn't start the thread.
2021-01-11 15:45:48 +01:00
Francisco Paisana ea8ad153c4 add configurable fairness parameter to pf scheduler 2021-01-11 11:56:13 +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 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 c02aa8f124 liblte_mme: add DCNR UE capabilties packing 2021-01-08 17:20:08 +01:00
Andre Puschmann 4fa89b7039 pcap: make PCAP write thread-safe
* offload PCAP writing to background thread
* use blocking_queue between writer and clients to make it thread-safe
* add basic test case

this fixes point 1-3 of #2161
2021-01-04 11:05:02 +01:00
Andre Puschmann 2ca894df01 pdu: fortify RAR packing
detected with ASAN trying to write negative number of padding bytes.

The patch checks the calculated length and returns with an error
if the length is negative.

=================================================================
==5759==AddressSanitizer: while reporting a bug found another one. Ignoring.
m==5759==ERROR: AddressSanitizer: negative-size-param: (size=-6)
2021-01-03 21:46:41 +01:00
Xavier Arteaga 54a864e021 Added Initial NR-PRACH configuration for preamble format 0 2020-12-30 17:46:00 +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
Xavier Arteaga cc5fdb68f3 Added on-the-fly sequence for bit packed 2020-12-30 13:39:08 +01:00
Xavier Arteaga d0a4b4d409 Changed DL-SCH LDPC scaling factor for decoding high rates 2020-12-28 10:11:08 +01:00
Xavier Arteaga 2e59f6a568 Applied LDPC fixes and minor aestheic modifications 2020-12-28 10:11:08 +01:00
Xavier Arteaga 13443c3f8c Added number of DMRS CDM groups without data to NR grant 2020-12-28 10:11:08 +01:00
Xavier Arteaga d413c1aaec Fix base graph selection and improved PHY LIB logging 2020-12-28 10:11:08 +01:00
Xavier Arteaga 808bb3fb94 Fix string to modulation conversion and apply clang-format 2020-12-28 10:11:08 +01:00
Xavier Arteaga 0a06074158 Skip NR PDSCH allocation in PDSCH DMRS symbols 2020-12-28 10:11:08 +01:00
Xavier Arteaga 1775052144 Fix NR PDSCH DMRS cinit and zero after free 2020-12-28 10:11:08 +01:00
Francisco Paisana 74ffe393c6 asn1 update: s1ap asn1 is now v16.1 (2020-03) 2020-12-22 16:28:24 +01:00
faluco 92b11c1adb Backport misc changes from the fapi repo. 2020-12-21 13:45:22 +01:00
Francisco Paisana 66aa34d173 update RRC NR ASN1 to 2020-09 v15.11 2020-12-18 12:50:37 +01:00
Andre Puschmann d5daf60773 pdu_test: add unpacking test for DL-SCH PDU containing TA command 2020-12-18 12:28:52 +01:00
Andre Puschmann c5514d7f80 pdu: fix to_string() for TA command
the get_ta_cmd() is returning uint8_t which stringstream
interprets as ASCII character by default. So the log message is bogus.
2020-12-18 12:28:52 +01:00
Pedro Alvarez 0ad0e9acac Make sure that RLC entity is only re-created if it switches modes. 2020-12-18 10:52:51 +00:00
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.
2020-12-18 10:52:51 +00:00
Andre Puschmann 48b37394f1 rlc: remove unneeded log entry
was added for testing only
2020-12-18 10:25:30 +01:00
Francisco Paisana 099dad8cb1 disable PHR handling in the UL sched by default 2020-12-17 17:56:42 +01:00
Francisco Paisana e27c0869e5 update RRC ASN1 to 2020-09 v15.11 2020-12-17 17:55:58 +01:00
Andre Puschmann bc4c9606ce rlc_am: add extended bearer metrics
this patch adds support for measuring the:
* SDU rx latency (Average time in ms from first RLC segment to full SDU)
* amount of buffered bytes (sum of payload of PDUs buffered in rx_window)

the implementation is using std::chrono
2020-12-17 17:46:55 +01:00
Andre Puschmann d54c33258b rlc_metrics: add sdu rx latency and buffered bytes 2020-12-17 17:46:55 +01:00
Andre Puschmann 2e64fff1df common: extend timestamp interface for byte_buffer
* allow setting timestamp to a specific std::chrono::time_point
* add getter from raw tp
2020-12-17 17:46:55 +01:00
Andre Puschmann 81cfce6cf0 rlc_um: remove latency calculation from RLC UM 2020-12-17 17:46:55 +01:00
Xavier Arteaga 533222f245 NR PDCCH fixes 2020-12-17 15:48:21 +01:00
Xavier Arteaga a746e29395 Removed shadow variable 2020-12-17 15:48:21 +01:00
Xavier Arteaga 99ca2d2f14 Add polar interleaver 2020-12-17 15:48:21 +01:00
Xavier Arteaga 3662210842 Fix external softbuffer inclusion 2020-12-17 15:48:21 +01:00
Francisco Paisana 1ea635f9ae asn1 utils fix: avoid unpacking an unconstrained integer length twice 2020-12-17 01:40:30 +01:00
Andre Puschmann e43eab8b5f rlc: fix rate metrics (nan,inf values), use std::chrono
similar to GW, we remove gettimeofday and use std::chrono.
we also make sure to reset the metrics after reestablishment
2020-12-16 20:39:21 +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
Ismael Gomez f9a02299f9 Use MAC PDU pointer instead of tti_rx and rnti as a key to associate buffers. Decouple crc_info() and push_pdu() functions. This allows for different timing architectures in the PHY 2020-12-16 13:49:29 +01:00
Ismael Gomez 0498439d41
Backport some changes from FAPI branch (#2124)
* Reorder DCI FORMAT enum

* Fix endianness issue

* Fix return codes in phy_ue_db

* Log members should be destructed after the layers.

* Add JSON metrics and Events. Add Alarm log channel. Simplify MAC metrics struct.

* Restore metrics_stdout change
2020-12-16 13:48:48 +01:00
Francisco Paisana ea36e46635 fix asn1 length determinant packing/unpacking. avoid subtracting len by zero before the packing 2020-12-15 23:42:40 +01:00
Francisco Paisana d198e8fb31 fix asn1 length determinant packing for upper bounds above 64K 2020-12-15 23:42:40 +01:00
Francisco Paisana 1304746bce use of fmt lib in asn1 utils 2020-12-15 15:56:59 +01:00
Andre Puschmann 9133135e12 rlc_tm: remove error from log when RLC TM PDU can't be sent
RLC TM can't be segmented so it may happen that a PDU
cannot be sent because the grant is too small. That is not
an error and should only be logged in info.
2020-12-15 15:19:08 +01:00
Francisco Paisana 53116a99fc add rlc metrics to rlc_um 2020-12-14 16:59:09 +01:00
Francisco Paisana 82eb31f70f add rlc metrics to enb 2020-12-14 16:59:09 +01:00
Francisco Paisana 0f693b36b2 changed pdu latency calculation to std chrono 2020-12-14 13:47:05 +01:00
Francisco Paisana 7ffc236a1a enable log line when rlc tx pdu last segment is sent but the latency log is disabled 2020-12-14 13:47:05 +01:00
Francisco 951912d18a disable RLC latency measure when ENABLE_TIMESTAMP flag is disabled 2020-12-14 13:47:05 +01:00
Francisco 92bc98e2f0 add byte tx counter to the set of metrics being measured in RLC 2020-12-14 13:47:05 +01:00
Francisco e2654e69ec Enable pdu stack latency measurements in the eNB. 2020-12-14 13:47:05 +01:00
faluco f23fdf0639 Include missing files. 2020-12-14 13:46:45 +01:00
faluco 98a2c868b5 Update srslog to latest version. 2020-12-14 13:46:45 +01:00
faluco f20b75a05f Re-structure enb metrics a bit. Create a generic mac metric struct and per ue mac metrics struct. 2020-12-14 13:16:13 +01:00
faluco 5529943172 Add a per sector rach preable counter for the metrics. 2020-12-14 13:16:13 +01:00
faluco dcd1157d39 - Prototype the extension of enb metrics. 2020-12-14 13:16:13 +01:00
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.
2020-12-12 15:59:27 +01:00
Francisco cba0cc457f sched rand test refactor: creation of abstract sched simulator class for testing 2020-12-12 15:59:27 +01:00
Francisco b86d2ab7d0 move choice_type to adt folder 2020-12-12 15:59:27 +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
Codebot f5d14d7649 polar_chain_test: fix compilation issue when AVX2 isn't used
this fixes compilation on aarch64:

FAILED: lib/src/phy/fec/polar/test/CMakeFiles/polar_chain_test.dir/polar_chain_test.c.o
/usr/bin/gcc -DENABLE_TIMEPROF -DENABLE_TTCN3 -DHAVE_5GNR -DHAVE_MBEDTLS -I/usr/include/SoapySDR -Ilib/include -I../lib/include -Wno-unused-but-set-variable -Wall -Wno-comment -Wno-write-strings -Wno-unused-result -Wformat -Wmissing-field-initializers -Wtype-limits -std=c99 -fno-strict-aliasing -D_GNU_SOURCE -O3 -fno-trapping-math -fno-math-errno -DBUILD_TYPE_RELEASE -DIS_ARM -DHAVE_NEON -DHAVE_NEONv8 -fvisibility=hidden -fdiagnostics-color=always -Werror --param large-function-growth=1600 -O3 -DNDEBUG -fPIE -MD -MT lib/src/phy/fec/polar/test/CMakeFiles/polar_chain_test.dir/polar_chain_test.c.o -MF lib/src/phy/fec/polar/test/CMakeFiles/polar_chain_test.dir/polar_chain_test.c.o.d -o lib/src/phy/fec/polar/test/CMakeFiles/polar_chain_test.dir/polar_chain_test.c.o   -c ../lib/src/phy/fec/polar/test/polar_chain_test.c
../lib/src/phy/fec/polar/test/polar_chain_test.c: In function ‘main’:
../lib/src/phy/fec/polar/test/polar_chain_test.c:214:11: error: unused variable ‘gain_c_avx2’ [-Werror=unused-variable]
  214 |   float   gain_c_avx2 = NAN;
      |           ^~~~~~~~~~~
../lib/src/phy/fec/polar/test/polar_chain_test.c:191:7: error: unused variable ‘errors_symb_c_avx2’ [-Werror=unused-variable]
  191 |   int errors_symb_c_avx2 = 0;
      |       ^~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
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 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 96b75b6433 Fixes clang compiler error in case of UHD_ENABLE_RFNOC enable 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 cff9f03a11 rlc_am_lte: remove unused rx/tx metrics members
those variables aren't used and are included in the bearer metrics already
2020-12-12 15:59:27 +01:00
Andre Puschmann 3c169e6be1 rlc_am: increment retx counter for segments
we've only incremented the retx when retransmitting a full PDU,
but not when only retransmitting segments.

This might lead to many more retx than allowed.
2020-12-12 15:59:27 +01:00
Francisco b41fc96d6d fix asn1 integer packing for integer values whose length is equal or above 32 bits 2020-12-12 15:59:27 +01:00
Pedro Alvarez 38206bea69 Fixed RLC AM fixed header size in get_buffer_state function. Fixed RLC AM tests accordingly. 2020-12-12 15:59:27 +01:00
Francisco 99f94d9a1a Bug fixes of srseNB scheduler TPC
- fix encoding of TPC command
- use of exponential average with irregular sampling for the ULSNR average estimate.
  Turns out using a time-windowed average for the SNR was a bad idea.
  If the UL grants are very sporadic, the SNR time window will never have samples
  when a TPC is encoded
- update of TPC sched test
- other fixes in accumulators lib
2020-12-12 15:59:27 +01:00
Xavier Arteaga d6b5229dbe Added CSI-RS unit test and fix defects 2020-12-12 15:59:27 +01:00
Xavier Arteaga 6127681102 Added csi_rs header 2020-12-12 15:59:27 +01:00
Xavier Arteaga 08799cfe0f NR CSI-RS initial put/measure 2020-12-12 15:59:27 +01:00
Xavier Arteaga b7d74ef70b Initial CSI RS 2020-12-12 15:59:27 +01:00
Francisco 7ee99a529a fix assertion messages for bounded_vector::back() method 2020-12-12 15:59:27 +01:00
Francisco 5cce2e4dc7 extension of bounded_vector unit test and fix of compilation issues
- now bounded_vector::resize(N) works for move-only types
- bounded_vector assertions now print error messages
- fixed move ctor/assignment of bounded_vector
- created a unit test for bounded_vectors of move-only types
2020-12-12 15:59:27 +01:00
Francisco 2598989f7d replace msg3grant type from C-array to bounded vector 2020-12-12 15:59:27 +01:00
Francisco fc451f17f0 implementation of bounded_vector and respective unit test 2020-12-12 15:59:27 +01:00
Francisco 22229adf08 fix: normal phr is only sent for PCell 2020-12-12 15:59:27 +01:00
Francisco 69748e9313 fix compilation issue regarding definition of size_t in header and declaration of static member null_value in sliding average class 2020-12-12 15:59:27 +01:00
Francisco d42dc50c44 Write TPC sched unit test and fix sched logical channel test 2020-12-12 15:59:27 +01:00
Francisco 479602ed1d add option to specify target ul sinr for UL power control to the enb rr.conf parser 2020-12-12 15:59:27 +01:00
Francisco 5865df39d1 created class that implements the scheduler transmit power control and PHR handling 2020-12-12 15:59:27 +01:00
Xavier Arteaga 788ed5ce70 Corrected PDCCH SEGFAULT 2020-12-12 15:59:27 +01:00
Xavier Arteaga 8cc023e168 Fix PDCCH NR Test 2020-12-12 15:59:27 +01:00
Xavier Arteaga c0cdce6450 Updated license 2020-12-12 15:59:27 +01:00
Xavier Arteaga e07cf513d0 Improved NR blind search and DL test 2020-12-12 15:59:27 +01:00
Xavier Arteaga 90aa4fbea7 Improved srslte_chest_set_smooth_filter_gauss 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 85d5026e38 Improved NR PDCCH unit test 2020-12-12 15:59:27 +01:00
Xavier Arteaga 315394560d Fix Polar unitialised read 2020-12-12 15:59:27 +01:00
Xavier Arteaga cd1aef7d76 Added NR PDCCH unit test plus fixes 2020-12-12 15:59:26 +01:00
Xavier Arteaga 53f6ac118e Initial PDCCH encode/decode 2020-12-12 15:59:26 +01:00
Xavier Arteaga 159a3d84bd Fix minor precoding issue 2020-12-12 15:59:26 +01:00
Xavier Arteaga 65d5fcf45d Add minor DCI location comment 2020-12-12 15:59:26 +01:00
Xavier Arteaga 67ce4c1491 Avoid std memory functions in EVM measurement 2020-12-12 15:59:26 +01:00
Andre Puschmann 00a6e16c14 update license header for liblte_*.{h,cc} files
user license-agnostic text to refer to license file.
make sure copyrights/years are correct.
2020-12-12 15:59:26 +01:00
Andre Puschmann 47c5f9e85b remove AGPL header from remaining cpp files
* also add commercial header to come CMake helpers
2020-12-12 15:59:26 +01:00
Andre Puschmann b9f363db9a ssl: rename liblte_ssl.h to ssl.h 2020-12-12 15:59:26 +01:00
Andre Puschmann ef19b1a9bd fix various uninit vars detected by cppcheck
non-critical fixes in tests mostly, still good to have those clean
2020-12-12 15:59:26 +01:00
Xavier Arteaga 81d72380b5 Reduce FEC Polar chain test time 2020-12-12 15:59:26 +01:00