- The number of nb_dmrs_re at gNB side was set to 6, but here it is assumed
that there will be no data allocation in OFDM symbols that carry DMRS
- nb_dmrs_re that is being given as an input to the TBS calculation,
should be multiplied by the number of DMRS symbols in order to get the total
number of DMRS REs per RB
- In the calculation of G, only the number of DMRS per RB in 1 OFDM symbol should
be given as an input, because inside the function of the G calculation, this
number is being multiplied by the number of OFDM symbols that carry DMRS
- this was necessary because as soon as the gNB starts, it tries detecting
the prach preambles and it mesaures the background noise. However, there is
a delay of several dozens of frames before it considers the preables as
detected.
- the solution at the UE consists in avoiding sending preamble as soon as the
UE syncs by introducing an offset, this keeps the power measurements low at
gNB side as long as the preamble detection counter is under threshold
Instead of looping over UEs and all DL config Req/HI DCI0, loop first
over all DL config Req/HI DCI0, and for each, match UE. Lowers CPU
traffic for high traffic situations.
This refactors the preprocessor. The new preprocessor implements the
same scheduling strategy (Modified Round-Robin: give resources according
to round-robin, then group) but should be fairer by changing every time
the RR start UE (i.e., 1st TTI UE 0 starts, 2nd TTI UE 1, etc) when the
UE number is not a divisor/multiple of the RBG size (and the last RBG is
often smaller). This also removes all unneeded code of the preprocessor
such as allocate(), positioning(), etc.
* do not check rlc_ind()
* Simplify retransmission part and remove nb_rb_available var
* Simplify new transmission code
* Simplify fill_DLSCH_dci(), avoid unnecessary copies
* fix: first check No. RBs, then check CCE alloc
Previously, the various rlc_*_ind() functions had a parameter to enable
the MAC to specify the max TB size that a subsequent call to the
corresponding rlc_*_req() (!) function would return. This patch removes
this parameter from the rlc_*_ind() functions and makes the parameter
working that is already in the rlc_*_req() functions.
store_dlsch_buffer() puts the RLC buffer status results in the
UE_TEMPLATE, which is per-CC. Since the DLSCH scheduler works per-CC,
too, we pass the right CC. However, this is not strictly necessary, as
we could do this once before every CC, and it might be updated.