Draft: Multi-UE + more slots
This MR adds a multi-UE scheduler (proportional fair) for multiple UEs. Tested for two UEs, but should work for more. Additionally, it enables 12 DL slots and 2 UL slots (still fixed, will be read from the configuration file in a clean-up/follow-up MR).
In detail:
- Group DCIs in one nFAPI PDCCH message
- Add a new HARQ framework for fully asynchronous HARQ process
- Make L1 DLSCH encoding stateless to support fully asynchronous HARQ processos
- Rework PUCCH allocation so it works for multiple UEs (note: only PUCCH Format 0 is handled for HARQ/AckNack)
- Decode UE Buffer Status Reports
- Add DL multi-UE preprocessor
- Add UL multi-UE preprocessor (allocates only RBs as necessary and not all statically)
- Fix slots 1,2,3,4,5,6,11,12,13,14,15,16 to be DL slots: the MCS is fixed to 9, but 22Mbps should be achievable in DL for a single UE
- Fix slots 8,18 to be UL slots: 2Mbps should be achievable in UL for a single UE.
- Improve MAC
dump_mac_stats()
formatting like this:
[MAC] UE ID 0 RNTI 5872 (1/2)
[MAC] UE 0: dlsch_rounds 3222/2/0/0, dlsch_errors 0
[MAC] UE 0: dlsch_total_bytes 6833602
[MAC] UE 0: ulsch_rounds 3768/2/2/1, ulsch_errors 0
[MAC] UE 0: ulsch_total_bytes_scheduled 407241, ulsch_total_bytes_received 407135
[MAC] UE 0: LCID 4: 6803014 bytes TX
[MAC] UE 0: LCID 4: 15693 bytes RX
[MAC] UE ID 1 RNTI d49f (2/2)
[MAC] UE 1: dlsch_rounds 3192/1/0/0, dlsch_errors 0
[MAC] UE 1: dlsch_total_bytes 6822125
[MAC] UE 1: ulsch_rounds 3658/0/0/0, ulsch_errors 0
[MAC] UE 1: ulsch_total_bytes_scheduled 392953, ulsch_total_bytes_received 392953
[MAC] UE 1: LCID 4: 6791870 bytes TX
[MAC] UE 1: LCID 4: 10715 bytes RX
Thanks @ChiehChun
Edited by Robert Schmidt