Commit Graph

2856 Commits

Author SHA1 Message Date
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
Xavier Arteaga 44ae70dcc6 Initial implementation of the 5G NR PDCCH DMRS encoding 2020-10-29 09:23:09 +01:00
Xavier Arteaga 29ad2427d9 Initial implementation of the 5G NR PDCCH DMRS encoding 2020-10-29 09:23:09 +01:00
Xavier Arteaga 579526f1fe Added sequence advance without generating data 2020-10-29 09:23:09 +01:00