Commit Graph

3059 Commits

Author SHA1 Message Date
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
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 6fb56a3c62 LDPC: fix AVX tests compilation 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 eed9405e40 Moved NR MAX MIMO layers to carrier 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
David Rupprecht c9c8a1db5c Added toRemoveList function for rrc asn lists 2020-12-12 15:59:26 +01:00
Xavier Arteaga 31a637adae Fix UCI SCH threshold, cover PUSCH 64QAM, check UCI-ACK valid in PUSCH test 2020-12-12 15:59:26 +01:00
Xavier Arteaga 12c076bf96 updated copyright headers 2020-12-12 15:59:26 +01:00
Xavier Arteaga 24297f973c Removed CTTC from file headers 2020-12-12 15:59:26 +01:00
Xavier Arteaga 035fcc9afb Removed FEC working directory 2020-12-12 15:59:26 +01:00
Xavier Arteaga bde1fa703d Added Polar RM and removed vectors with malloc from FEC NR 2020-12-12 15:59:26 +01:00
Francisco 82d057345b fix compilation issue with user-defined fmt formatter 2020-12-12 15:59:26 +01:00
Francisco 86ab1864f7 The struct tti_point is now used ubiquitously in the scheduler 2020-12-12 15:59:26 +01:00
Pedro Alvarez 49bcffcdf8 Fix issue packing TEID in Error indication. 2020-12-12 15:59:26 +01:00
Francisco 8fb3ea6922 Added the ability to choose scheduling policy from enb.conf
- The two options provided at the moment are time-domain RR and PF
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
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
2020-12-12 15:59:25 +01:00
Francisco f07e52129c increase mcs ul upper bound to 24 when ue is cat4 and enb supports 64qam. Simplified max_mcs computation 2020-12-12 15:59:25 +01:00
Andre Puschmann 477fe77f24 rlc_am: reformat log message for PDU retx 2020-12-12 15:59:25 +01:00
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
2020-12-12 15:59:25 +01:00
Xavier Arteaga 225bc9d260 Enable FEC SIMD acceleration 2020-12-12 15:59:25 +01:00
Jesus Gomez c9cdb0d53c Solve Issue 1: Invalid read in LDPC AVX2 Encoder/Decoder 2020-12-12 15:59:25 +01:00
Andre Puschmann d014a89cfb pdsch_ue: enable EVM measurements for PDSCH
enable EVM measurements by default and print them in to stdout.
This is very useful for manual receiver calibration with the
PDSCH eNB example.
2020-12-12 15:59:25 +01:00
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.
2020-12-12 15:59:25 +01:00
Andre Puschmann cfee074756 pdsch_enodeb: add tx gain control over page-up/down keys
this allows to modify the tx gain of a running pdsch_enodeb
with the page-up/down keys in 1dB steps
2020-12-12 15:59:25 +01:00
Andre Puschmann 382f56fbea pdsch_{ue,enodeb}: add -Q switch to enable use of standard LTE rates
this is useful for RF equipment that doesn't support the shorter symbol
size we use by default, e.g. the N310
2020-12-12 15:59:25 +01:00
Xavier Arteaga 755325fc3e Avoid sizeof and standard memory functions 2020-12-12 15:59:25 +01:00
Xavier Arteaga 35bf5b8c6d Added generic memory malloc 2020-12-12 15:59:25 +01:00
Xavier Arteaga 83dddae525 Added vector zero 2020-12-12 15:59:25 +01:00
Xavier Arteaga a5537cc1ef Correct argument 2020-12-12 15:59:25 +01:00
Xavier Arteaga b7fc2299e5 Softbuffers initialise buffer pointers with zero memory 2020-12-12 15:59:25 +01:00
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
2020-12-12 15:59:25 +01:00
Francisco 7a74bf28d1 forward declare s1ap types in enb interfaces 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
Francisco 0ffea62411 Wrote logging functions for SCHED MAC CE/LCID allocations 2020-12-12 15:59:25 +01:00
Francisco 68eda336bd remove ENB_METRICS_MAX_USERS compile time macro and use run-time variable to set maximum number of UEs the srseNB can have connected at a given instant. 2020-12-12 15:59:25 +01:00
Pedro Alvarez d05bc064b5 Reduced SCTP connect() timeout.
Added configuration for RTO_MAX. Cleanup debug prints.
2020-12-12 15:58:34 +01:00
yagoda bdc1964335 consolidating RRC eMBMS configuration into single function, setting some parameters to const 2020-12-12 15:58:34 +01:00
yagoda b90574975b refactoring asn1 eMBMS code, removing asn1 from PHY and MAC in eNodeB 2020-12-12 15:58:34 +01:00
Francisco 1cb65f07f1 enable meas gaps in RRC and enb parser 2020-12-12 15:58:34 +01:00
Xavier Arteaga c2bc042713 Disable SIMD AVX decoder 2020-12-12 15:58:34 +01:00
Francisco Paisana 9579931f16 added meas gap checks to scheduler ue 2020-12-12 15:58:34 +01:00
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.
2020-12-12 15:58:34 +01:00
Xavier Arteaga 7495986b5c Minor aesthetic changes and fix memory issue 2020-12-12 15:58:34 +01:00
Xavier Arteaga 0396ebae17 Fix UE/ENB DL NR 2020-12-12 15:58:34 +01:00
Xavier Arteaga 8de2870788 Added NR ue_dl, enb_dl and test 2020-12-12 15:58:34 +01:00
Xavier Arteaga 6b5c4148c8 DL Channel estimation results accepts nof RE 2020-12-12 15:58:34 +01:00
Xavier Arteaga ce330a6dfb OFDM's DC is optional 2020-12-12 15:58:34 +01:00
Xavier Arteaga c6a2e4578e Refactored PHY object arguments 2020-12-12 15:58:34 +01:00
Xavier Arteaga e621a1cde3 EVM buffer takes number of bits 2020-12-12 15:58:34 +01:00
Xavier Arteaga a278a49e42 Limit PDSCH-NR unit test 2020-12-12 15:58:34 +01:00
Xavier Arteaga bff71761a9 PDSCH-NR: Added single layer channel equalization 2020-12-12 15:58:34 +01:00
Xavier Arteaga 0138c3b856 PDSCH-NR fixed with unit test 2020-12-12 15:58:34 +01:00
Jesus Gomez 6defd2658c Solve Issue 2: Rate matching zeroes output data prior to soft-combine 2020-12-12 15:58:34 +01:00
Xavier Arteaga fb64c2a460 Initial NR PDSCH encode/decode 2020-12-12 15:58:34 +01:00
Xavier Arteaga 666ba7d590 Added unpacked bit sequence XOR 2020-12-12 15:58:33 +01:00
Xavier Arteaga 6df83c32b3 Added NR layer mapper and demapper 2020-12-12 15:58:33 +01:00
Xavier Arteaga 3060972514 Removed redundant softbuffer dependency 2020-12-12 15:58:33 +01:00
Xavier Arteaga 644758416e DL-SCH-NR adjust unit test 2020-12-12 15:58:33 +01:00
Xavier Arteaga d27f0819a8 Fix DL-SCH for NR 2020-12-12 15:58:33 +01:00
Xavier Arteaga 53282bdfbf Dl-SCH-NR: updated unit test 2020-12-12 15:58:33 +01:00
Xavier Arteaga 4e5edb5168 DL-SCH NR added traces and fixes 2020-12-12 15:58:33 +01:00
Xavier Arteaga 2aa7e43771 Implemented NR DL SCH decoder and unit test 2020-12-12 15:58:33 +01:00
Xavier Arteaga 3464dd3c0d Added MCS table string serializer 2020-12-12 15:58:33 +01:00
Xavier Arteaga 794d1b5c4b Added LDPC decoder RM interface 2020-12-12 15:58:33 +01:00
Xavier Arteaga fa691bb8e3 Fix softbuffer 2020-12-12 15:58:33 +01:00
Xavier Arteaga 27a3e87fb7 Initial DL-SCH encoding 2020-12-12 15:58:33 +01:00
Xavier Arteaga bc66942b8d Bit unpacking input to constant 2020-12-12 15:58:33 +01:00
Xavier Arteaga 9a320baf37 extended resource allocation for NR 2020-12-12 15:58:33 +01:00
Xavier Arteaga 766a43225d 5G FEC extension 2020-12-12 15:58:33 +01:00
Xavier Arteaga 30037d9223 Added guru softbuffer interface 2020-12-12 15:58:33 +01:00
Xavier Arteaga 8e8889032e Changed CRC input vector to constant 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 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.
2020-12-12 15:58:33 +01:00
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
2020-12-12 15:58:33 +01:00
Xavier Arteaga a6ac80cfbf Initial NR DL DCI Packing/Unpacking 2020-12-12 15:58:33 +01:00
Francisco Paisana fdec451a9d disable mcs>20 if eNB supports UL 64QAM but UE doesn't 2020-12-12 15:58:33 +01:00
Francisco Paisana bf7c587e4f add UL 64QAM support to eNB RRC and scheduler 2020-12-12 15:58:33 +01:00
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.
2020-12-12 15:58:33 +01:00
Andre Puschmann e227fec3d8 pdu_test: add rigerous test for LBSR content
* make sure upper and lower edges of Table 6.1.3.1-1 in 36.321 are correct
* fix existing BSR test vectors (verified with Wireshark)
2020-12-12 15:58:33 +01:00
Andre Puschmann 286844b3dd mac_pdu: reset subheader state when deleting from PDU
when packing MAC PDUs, adding a new SDU might fail, for example
because RLC couldn't provide a new PDU. The muxer then needs
to delete the subheader from the PDU again.

When adding a padding BSR at the end, the same subheader is again
used to store the BSR, so any state in that subheader should be removed.

In the particular case, this was causing an issue when logging a LBSR
because the LCG buffer states are printed using the payload buffer,
which was still pointing to some memory that was used when trying
to add the new RLC PDU in the beginning.
2020-12-12 15:58:33 +01:00
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
2020-12-12 15:58:33 +01:00
Xavier Arteaga cf55eb4c4f Improved comments 2020-12-12 15:58:33 +01:00
Xavier Arteaga e8f94c40b8 Added LDPC codeblock segmentation 2020-12-12 15:58:33 +01:00
Xavier Arteaga fc3d154fe3 Fix compilation 2020-12-12 15:58:33 +01:00
Xavier Arteaga 736e6db616 Initial resource allocation for NR 2020-12-12 15:58:33 +01:00
Xavier Arteaga 0439161de6 Removed modulation enum from LDPC RM 2020-12-12 15:58:33 +01:00
Pedro Alvarez 454162cea7 Deleted nas_interface_stack. 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 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 6773f6d02f pdu_queue: add reset method to empty queue 2020-12-12 15:58:33 +01:00
Francisco Paisana 88105c1577 change the namespace of tti point helper functions for the eNB 2020-12-12 15:58:33 +01:00
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
2020-12-12 15:58:32 +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
Andre Puschmann 1b97ba5300 benchmark_radio: fix duration and thread priority
I noticed that the app didn't configure the process with
RT thread prio. But it then turned out that in order to do
that we need to actually spawn a new thread. Also a few other things
didn't work out of the box.

In summary the changes are:
* fix duration to support more than 120s
* move main functionality in thread
* set high priority for radio thread
* only return success if no radio errors occured
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
Xavier Arteaga 8d9577626b Fix NR FEC unit test 2020-11-04 15:06:39 +01:00
Xavier Arteaga 0c2f96d389 Fix 5G NR FEC memcheck 2020-11-04 15:06:39 +01:00
Xavier Arteaga 2835e87ff0 Add missing file 2020-11-04 15:06:39 +01:00
Xavier Arteaga f8dd67260f Polar: fix unit test working directory 2020-11-04 15:06:39 +01:00
Xavier Arteaga 15356b3ec8 Fix compilation for non-AVX2 machines 2020-11-04 15:06:39 +01:00
Xavier Arteaga 2c4aa1e379 Added Polar and LDPC forward error correction 2020-11-04 15:06:39 +01:00
David Rupprecht 387a84ff84 Updated missing byte 2020-11-03 10:03:09 +01:00
David Rupprecht b85cb614aa Added test cases for asn1 decoding lib from pcap 2020-11-03 10:03:09 +01:00
Xavier Arteaga 271002c9fb Fix compilation 2020-11-02 16:44:50 +01:00
Xavier Arteaga 4f89c6ed3f Added missing CMakeFiles 2020-11-02 16:32:26 +01:00
Xavier Arteaga f21590735d refactored FEC directories 2020-11-02 16:32:26 +01:00
Xavier Arteaga 7093a85f81 Refactored FEC directories 2020-11-02 16:32:26 +01:00
Xavier Arteaga c2621cc4f8 Protect ring-buffer write from nullptr 2020-11-02 16:31:37 +01:00
Francisco Paisana a865858db3 disable srbs UL during handover to avoid UL grants and scheduling requests before the handover is complete 2020-10-30 21:51:58 +00:00
Andre Puschmann f647343f18 rlc_am: fix poll bit during header reconstruction
this makes sure that the reconstructed RLC AM header
has the poll bit set when any of its segments had it set.

this triggered a bug in RLC AM because the Status PDU
isn't transmitted for a RLC PDU that was segmented and
only the first segment had the P flag set.
2020-10-30 20:47:01 +01:00
Francisco Paisana b40a5a958e use common function to fill rrc reconf message in handover 2020-10-29 21:19:40 +00:00
Francisco Paisana e9b693942f diff-based cell selection activation 2020-10-29 21:19:40 +00:00
Francisco Paisana 836e7d7ede refactor scell addition in the srsenb::rrc to follow the same style of other rrc recfg fields 2020-10-29 21:19:40 +00:00
Francisco Paisana f26b5ccde7 fix drb reestablishment during handover 2020-10-29 21:19:40 +00:00
Francisco Paisana 97f2e4336e refactor of functions for filling the asn1 radio resource config structs. This functions are used during rrc setup/reest/reconf 2020-10-29 21:19:40 +00:00
Xavier Arteaga 9487d27ef9 Renamed NR constants and comments 2020-10-29 09:23:09 +01:00
Xavier Arteaga e8f168b20c PDSCH NR: Added files 2020-10-29 09:23:09 +01:00
Xavier Arteaga c8477483d9 PDSCH NR: Added files 2020-10-29 09:23:09 +01:00
Xavier Arteaga 30d8e05d50 Fix PDSCH-DMRS symbol index 2020-10-29 09:23:09 +01:00
Xavier Arteaga 275cbafe6e Modified comments 2020-10-29 09:23:09 +01:00
Xavier Arteaga 8d34d344a8 Created PDSCH-NR configuration structures and refactored DMRS 2020-10-29 09:23:09 +01:00
Xavier Arteaga 009f300c5e Initial PHY Data procedures 2020-10-29 09:23:09 +01:00
Xavier Arteaga 775692f461 Rearanged PDCCH NR functions structures 2020-10-29 09:23:09 +01:00
Xavier Arteaga 452eb2dbbf Updated some DOCS 2020-10-29 09:23:09 +01:00
Xavier Arteaga 937c52339d Added PDCCH DMRS estimation and measurement 2020-10-29 09:23:09 +01:00
Xavier Arteaga 5799100e42 FFT based Resampler admits NULL inputs/outputs 2020-10-29 09:23:09 +01:00