- replaced nr_slot_t with int as it was barely used in the code (also is defined after an lte struct)
- removed use of phy_frame_config_nr from the UE (another file was created in SCHED_NR_UE, still the
gNB file is used in some tests file at UE side)
- Msg2 scheduler used for testing purposes was removed
- Now the UE tries to DCI 1_0 scrambled with RA_RNTI in the RA window
- If no RAPID is found within the RA window, instructs PHY to TX PRACH
- IP data were fetched and passed to MAC directly at the PHY layer
- random data was generated whenever there's no upcoming data.
- Therefore these functionalities are now moved to MAC and FAPI interfaces
- are used instead.
- ceiling computation num of segments (cod/dec)
- fixes demodulation
- initialisation CW for PDSCH RA
- memcpy dl_ch_estimates to pdsch_vars_ra (hotfix)
- correct N_RB for DCI 1_0 and RNTI_RA
- LDPC decoder does not support lower MCS, therefore MCS 9 has been selected
for the Msg2 configuration.
- This is done only in do-ra mode, in order to prevent any fallout on the
current the configuration used for the operation with the commercial UE
hack: in schedule_ue_spec, 3 bytes are "reserved" (this should be
done better). An RLC AM entity may ask for only 2 bytes for
ACKing and get a TBS of 32 bits and due to these 3 reserved bytes we may
end up with only 1 byte left for RLC, which is not enough. This hack
prevents the problem. To be done better at some point. If the function
schedule_ue_spec is (has been) reworked, this hack can be removed.
Dig for "TBS - ta_len - header_length_total - sdu_length_total - 3"
in schedule_ue_spec.
This should be done better at some point.
Selects the UE with the highest CQI. If two UEs have the same CQI,
choses the one with highest number of bytes in RLC queue. Allocates as
many RBGs as possible, and potentially continues with the next UE.
Selects UE with highest coefficient. Allocates until there are no more
RBGs to allocate, or UE has no more data. In the latter case, continues
with the next UE (second-highest coefficient).
- Loop only to next UE instead of jumping multiple
- mark used RBGs in rbg_mask
- Only calculate number of RBs based on CQI when UE is selected, instead
of calculating for all UEs which might be unnecessary.
- When looping the list of UEs for RB allocation, remove UEs that have
no data anymore instead of skipping them.
The preprocessor pre-allocates a CCE. Thus, when arriving at the check
for the number of RBs for retransmission, it is too late to skip the UE.
Therefore, only print a warning.
The default schedulers allocate a correct amount of RBs for
retransmissions, therefore it is ok.
The test seemingly ensures that this code block is hit only once.
However, if we enable later activation of MMEs, it will be hit a second
(and third, ...) time. The only thing in guards against, though, is an
INIT message to the L1L2 thread, when register_enb_pending == 0, which
should only be sent once. Therefore, functionality won't be changed if
register_enb_pending becomes negative, and the assert can be removed.