- MBMS scheduler re-worked to enable dedicated MBMS serving cells
- added support for multiple eMBMS MCH sessions
- added support for multiple FeMBMS MCH sessions
Signed-off-by: Javier Morgade <javier.morgade@ieee.org>
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.
Not sure if the problem is in the MAC layer or in the RLC v2 layer.
Maybe the buffer status reporting in RLC v2 is not good. Let's remove
two AssertFatal in the MAC for the time being.