2246 Commits (818f3ea7c7ec858be6b20028cedd71dfc52b0d8b)

Author SHA1 Message Date
Francisco c336c3eed2 added to_number() conversion of rrc_nr poll_byte 4 years ago
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
4 years ago
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>
4 years ago
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. 4 years ago
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 4 years ago
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.
4 years ago
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.
4 years ago
David Rupprecht 020d0dacc8 add the additional sec cap to NAS attach request
use same capabilities that are signaled for EUTRA
4 years ago
Andre Puschmann c02aa8f124 liblte_mme: add DCNR UE capabilties packing 4 years ago
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
4 years ago
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)
4 years ago
Xavier Arteaga 54a864e021 Added Initial NR-PRACH configuration for preamble format 0 4 years ago
Xavier Arteaga b3200d9ef5 Renaming common UL/DL DMRS related types and initial NR PUSCH implementation 4 years ago
Xavier Arteaga cc5fdb68f3 Added on-the-fly sequence for bit packed 4 years ago
Xavier Arteaga d0a4b4d409 Changed DL-SCH LDPC scaling factor for decoding high rates 4 years ago
Xavier Arteaga 2e59f6a568 Applied LDPC fixes and minor aestheic modifications 4 years ago
Xavier Arteaga 13443c3f8c Added number of DMRS CDM groups without data to NR grant 4 years ago
Xavier Arteaga d413c1aaec Fix base graph selection and improved PHY LIB logging 4 years ago
Xavier Arteaga 808bb3fb94 Fix string to modulation conversion and apply clang-format 4 years ago
Xavier Arteaga 0a06074158 Skip NR PDSCH allocation in PDSCH DMRS symbols 4 years ago
Xavier Arteaga 1775052144 Fix NR PDSCH DMRS cinit and zero after free 4 years ago
Francisco Paisana 74ffe393c6 asn1 update: s1ap asn1 is now v16.1 (2020-03) 4 years ago
faluco 92b11c1adb Backport misc changes from the fapi repo. 4 years ago
Francisco Paisana 66aa34d173 update RRC NR ASN1 to 2020-09 v15.11 4 years ago
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.
4 years ago
Pedro Alvarez 0ad0e9acac Make sure that RLC entity is only re-created if it switches modes. 4 years ago
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.
4 years ago
Andre Puschmann 48b37394f1 rlc: remove unneeded log entry
was added for testing only
4 years ago
Francisco Paisana e27c0869e5 update RRC ASN1 to 2020-09 v15.11 4 years ago
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
4 years ago
Andre Puschmann d54c33258b rlc_metrics: add sdu rx latency and buffered bytes 4 years ago
Andre Puschmann 81cfce6cf0 rlc_um: remove latency calculation from RLC UM 4 years ago
Xavier Arteaga 533222f245 NR PDCCH fixes 4 years ago
Xavier Arteaga a746e29395 Removed shadow variable 4 years ago
Xavier Arteaga 99ca2d2f14 Add polar interleaver 4 years ago
Francisco Paisana 1ea635f9ae asn1 utils fix: avoid unpacking an unconstrained integer length twice 4 years ago
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
4 years ago
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 4 years ago
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
4 years ago
Francisco Paisana ea36e46635 fix asn1 length determinant packing/unpacking. avoid subtracting len by zero before the packing 4 years ago
Francisco Paisana d198e8fb31 fix asn1 length determinant packing for upper bounds above 64K 4 years ago
Francisco Paisana 1304746bce use of fmt lib in asn1 utils 4 years ago
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.
4 years ago
Francisco Paisana 53116a99fc add rlc metrics to rlc_um 4 years ago
Francisco Paisana 82eb31f70f add rlc metrics to enb 4 years ago
Francisco Paisana 0f693b36b2 changed pdu latency calculation to std chrono 4 years ago
Francisco Paisana 7ffc236a1a enable log line when rlc tx pdu last segment is sent but the latency log is disabled 4 years ago
Francisco 951912d18a disable RLC latency measure when ENABLE_TIMESTAMP flag is disabled 4 years ago
Francisco 92bc98e2f0 add byte tx counter to the set of metrics being measured in RLC 4 years ago
Francisco e2654e69ec Enable pdu stack latency measurements in the eNB. 4 years ago
faluco f23fdf0639 Include missing files. 4 years ago
faluco 98a2c868b5 Update srslog to latest version. 4 years ago
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.
4 years ago
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
4 years ago
David Rupprecht 848496bb0f Moved get_earfcn to srslte get_carrier_freq func 4 years ago
David Rupprecht 2e51cfc1a5 Added black cells with index function
Added new index functios
Use asn1 list functions for toAddMod and toRem lists
4 years ago
David Rupprecht 96b75b6433 Fixes clang compiler error in case of UHD_ENABLE_RFNOC enable 4 years ago
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.
4 years ago
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
4 years ago
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.
4 years ago
Francisco b41fc96d6d fix asn1 integer packing for integer values whose length is equal or above 32 bits 4 years ago
Pedro Alvarez 38206bea69 Fixed RLC AM fixed header size in get_buffer_state function. Fixed RLC AM tests accordingly. 4 years ago
Xavier Arteaga d6b5229dbe Added CSI-RS unit test and fix defects 4 years ago
Xavier Arteaga 08799cfe0f NR CSI-RS initial put/measure 4 years ago
Xavier Arteaga b7d74ef70b Initial CSI RS 4 years ago
Xavier Arteaga 8cc023e168 Fix PDCCH NR Test 4 years ago
Xavier Arteaga c0cdce6450 Updated license 4 years ago
Xavier Arteaga e07cf513d0 Improved NR blind search and DL test 4 years ago
Xavier Arteaga 90aa4fbea7 Improved srslte_chest_set_smooth_filter_gauss 4 years ago
Xavier Arteaga c635b1e467 Initial NR DCI blind-search 4 years ago
Xavier Arteaga 85d5026e38 Improved NR PDCCH unit test 4 years ago
Xavier Arteaga 315394560d Fix Polar unitialised read 4 years ago
Xavier Arteaga cd1aef7d76 Added NR PDCCH unit test plus fixes 4 years ago
Xavier Arteaga 53f6ac118e Initial PDCCH encode/decode 4 years ago
Xavier Arteaga 159a3d84bd Fix minor precoding issue 4 years ago
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.
4 years ago
Andre Puschmann 47c5f9e85b remove AGPL header from remaining cpp files
* also add commercial header to come CMake helpers
4 years ago
Andre Puschmann b9f363db9a ssl: rename liblte_ssl.h to ssl.h 4 years ago
Andre Puschmann ef19b1a9bd fix various uninit vars detected by cppcheck
non-critical fixes in tests mostly, still good to have those clean
4 years ago
Xavier Arteaga 81d72380b5 Reduce FEC Polar chain test time 4 years ago
Xavier Arteaga f9643843a0 SRSENB/UE Fixed NR workers 4 years ago
Xavier Arteaga b501f2eeaf SRSENB/UE: Added NR workers 4 years ago
Xavier Arteaga ac930003be SRSUE: Integrated NR workers 4 years ago
Xavier Arteaga 6fb56a3c62 LDPC: fix AVX tests compilation 4 years ago
Xavier Arteaga eed9405e40 Moved NR MAX MIMO layers to carrier 4 years ago
Xavier Arteaga 31a637adae Fix UCI SCH threshold, cover PUSCH 64QAM, check UCI-ACK valid in PUSCH test 4 years ago
Xavier Arteaga 12c076bf96 updated copyright headers 4 years ago
Xavier Arteaga 24297f973c Removed CTTC from file headers 4 years ago
Xavier Arteaga 035fcc9afb Removed FEC working directory 4 years ago
Xavier Arteaga bde1fa703d Added Polar RM and removed vectors with malloc from FEC NR 4 years ago
Pedro Alvarez 49bcffcdf8 Fix issue packing TEID in Error indication. 4 years ago
Andre Puschmann 07d2bc4fe8 change license header to agnostic version with hint to root LICENSE file 4 years ago
Francisco 2dc3fce9bd fix derivation of UL-64QAM support from the UE Capabilities in the eNB
Before this PR, the eNB was not activating UL-64QAM if the UE release was below 12,
due to an erroneous convertion of the ASN1 EUTRA Capabilities struct into the flattened
srslte::ue_capabilities_t.

With this PR, the eNB activates UL-64QAM for the following cases:
- UE category 5
- UE category 8 and release >= 10
- UE category UL 8 and release >= 12
4 years ago
Andre Puschmann 477fe77f24 rlc_am: reformat log message for PDU retx 4 years ago
Andre Puschmann 6d3af2d2bd rlc_um: fix bearer name in logging after re-configuration
the RLC bearer name was empty after reestablishing a UM bearer.

we need to pass the RLF config and RB name to the internal configure()
call of the Rx entity, like we already do for the Tx side
4 years ago
Xavier Arteaga 225bc9d260 Enable FEC SIMD acceleration 4 years ago
Jesus Gomez c9cdb0d53c Solve Issue 1: Invalid read in LDPC AVX2 Encoder/Decoder 4 years ago
Andre Puschmann 504d8fd9f0 pdsch: calculate average PDSCH EVM over all decoded codewords
when EVM measurements are enabled, instead of only logging them for
each decoded codeword, we also calculate the average.

this is useful for calibration.
4 years ago
Xavier Arteaga 755325fc3e Avoid sizeof and standard memory functions 4 years ago
Xavier Arteaga 35bf5b8c6d Added generic memory malloc 4 years ago
Xavier Arteaga 83dddae525 Added vector zero 4 years ago
Xavier Arteaga a5537cc1ef Correct argument 4 years ago
Xavier Arteaga b7fc2299e5 Softbuffers initialise buffer pointers with zero memory 4 years ago
Andre Puschmann 7f81f44427 rf_uhd: treat N3xx like the X3xx and do not set timespec on every burst iteration
the N310 too doesn't seem to like setting the timespec for each call to
send in a single burst
4 years ago
Francisco 0ffea62411 Wrote logging functions for SCHED MAC CE/LCID allocations 4 years ago
Pedro Alvarez d05bc064b5 Reduced SCTP connect() timeout.
Added configuration for RTO_MAX. Cleanup debug prints.
4 years ago
Xavier Arteaga c2bc042713 Disable SIMD AVX decoder 4 years ago
Andre Puschmann 43a6cd50e5 rf_imp: fix stopping of AGC thread
hard killing of AGC thread causes issue on some RF devices,
such as the N310. The thread still seemed to access the device while
the radio was already killed (or the streamer object deleted).

It's unclear why this isn't causing similar issues on B210 or X310,
at least not visible, but it is obviously not the correct way to stop a thread.

The patch now correctly sets the stop flag for the AGC thread, wakes it
it up and waits until it has terminated.
4 years ago
Xavier Arteaga 7495986b5c Minor aesthetic changes and fix memory issue 4 years ago
Xavier Arteaga 0396ebae17 Fix UE/ENB DL NR 4 years ago
Xavier Arteaga 8de2870788 Added NR ue_dl, enb_dl and test 4 years ago
Xavier Arteaga 6b5c4148c8 DL Channel estimation results accepts nof RE 4 years ago
Xavier Arteaga ce330a6dfb OFDM's DC is optional 4 years ago
Xavier Arteaga c6a2e4578e Refactored PHY object arguments 4 years ago
Xavier Arteaga e621a1cde3 EVM buffer takes number of bits 4 years ago
Xavier Arteaga a278a49e42 Limit PDSCH-NR unit test 4 years ago
Xavier Arteaga bff71761a9 PDSCH-NR: Added single layer channel equalization 4 years ago
Xavier Arteaga 0138c3b856 PDSCH-NR fixed with unit test 4 years ago
Jesus Gomez 6defd2658c Solve Issue 2: Rate matching zeroes output data prior to soft-combine 4 years ago
Xavier Arteaga fb64c2a460 Initial NR PDSCH encode/decode 4 years ago
Xavier Arteaga 666ba7d590 Added unpacked bit sequence XOR 4 years ago
Xavier Arteaga 6df83c32b3 Added NR layer mapper and demapper 4 years ago
Xavier Arteaga 644758416e DL-SCH-NR adjust unit test 4 years ago
Xavier Arteaga d27f0819a8 Fix DL-SCH for NR 4 years ago
Xavier Arteaga 53282bdfbf Dl-SCH-NR: updated unit test 4 years ago
Xavier Arteaga 4e5edb5168 DL-SCH NR added traces and fixes 4 years ago
Xavier Arteaga 2aa7e43771 Implemented NR DL SCH decoder and unit test 4 years ago
Xavier Arteaga 3464dd3c0d Added MCS table string serializer 4 years ago
Xavier Arteaga 794d1b5c4b Added LDPC decoder RM interface 4 years ago
Xavier Arteaga fa691bb8e3 Fix softbuffer 4 years ago
Xavier Arteaga 27a3e87fb7 Initial DL-SCH encoding 4 years ago
Xavier Arteaga bc66942b8d Bit unpacking input to constant 4 years ago
Xavier Arteaga 9a320baf37 extended resource allocation for NR 4 years ago
Xavier Arteaga 766a43225d 5G FEC extension 4 years ago
Xavier Arteaga 30037d9223 Added guru softbuffer interface 4 years ago
Xavier Arteaga 8e8889032e Changed CRC input vector to constant 4 years ago
Andre Puschmann ff5f215df9 rf_soapy: print warning when using the Lime with shorter sample rates
the Lime has better performance when using the default LTE sample
rates due to filterering being done in the LMS RF chip.

Print a warning when using the Lime with the non-default LTE rates.
4 years ago
Andre Puschmann 2c797fce1a phy_common: add method to check whether we use default LTE symbol size
helpful getter to check whether we've compiled in
or selected at run time to use default LTE sample rates
4 years ago
Xavier Arteaga a6ac80cfbf Initial NR DL DCI Packing/Unpacking 4 years ago
Francisco Paisana bf7c587e4f add UL 64QAM support to eNB RRC and scheduler 4 years ago
Andre Puschmann 5f7f818abb pdu: fix bug in BSR table lookup
the bug causes the BSR to return a bsr_idx of 0, i.e. no data
pending, when the buff_size was reported to be 1 B only.

Instead, the UE should return BSR idx 1, i.e. between 0 < BSR <= 10.
4 years ago
Andre Puschmann 035d989737 pdu: fix unpacking of LCG2 of LBSR MAC CE
LBSR packing is fine but this makes the eNB do wrong things
because it thinkgs LCG2 has no or too much data to send.

LCG2 is our default LCG for DRB1. One occasion we saw the issue
is doing full rate TCP DL which requires quite a bit of ACK traffic
back to the sender. With the BSR for LCG2 being wrong, providing
UL grants was delayed and so the TCP DL throuhgput was very low.

In the log below we see that the buff_size[2]=1 so there is data to send.
Interestingly, the packing was correct so Wireshark displays it correctly.
But the unpacking not, as can be seen in the MAC log below which reports
0 buffer state for all LCGs

22:08:54.804792 [MAC ] [I] [ 5084] pdu_get: sdu_len=1212, channel.sched_len=1213, bsr.buff_size[2]=1
22:08:54.804840 [MAC ] [I] [ 5084] UL LCID=3 len=1212 LBSR: b=0 0 0 0
4 years ago
Xavier Arteaga cf55eb4c4f Improved comments 4 years ago
Xavier Arteaga e8f94c40b8 Added LDPC codeblock segmentation 4 years ago
Xavier Arteaga fc3d154fe3 Fix compilation 4 years ago
Xavier Arteaga 736e6db616 Initial resource allocation for NR 4 years ago
Xavier Arteaga 0439161de6 Removed modulation enum from LDPC RM 4 years ago
Andre Puschmann 6773f6d02f pdu_queue: add reset method to empty queue 4 years ago
Andre Puschmann f155b7a5d5 rlc: fix stopping of poll retx timer (#2006)
* rlc_am: add TC for pollRetx timer handling

* rlc_am: fix stopping of pollRetx timer

stopping the pollRetx timer when receiving a status PDU
without checking the acknowledged PDUs is wrong.

if an ACK for another PDU, for which the polling bit has been set,
is still pending, it won't be rescheduled until another
PDU is transmitted that again starts the pollRetx timer.

this fixes the issue with missing RLC AM segment retx in #1992,
and #2003
4 years ago
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
4 years ago