|
|
@ -243,7 +243,8 @@ alloc_result bwp_slot_allocator::alloc_pdsch(slot_ue& ue, const prb_grant& dl_gr
|
|
|
|
|
|
|
|
|
|
|
|
// Allocation Successful
|
|
|
|
// Allocation Successful
|
|
|
|
|
|
|
|
|
|
|
|
int mcs = ue.cfg->ue_cfg()->fixed_dl_mcs;
|
|
|
|
int mcs = ue.cfg->ue_cfg()->fixed_dl_mcs;
|
|
|
|
|
|
|
|
const static float max_R = 0.93;
|
|
|
|
do {
|
|
|
|
do {
|
|
|
|
// Generate PDCCH
|
|
|
|
// Generate PDCCH
|
|
|
|
pdcch_dl_t& pdcch = bwp_pdcch_slot.dl_pdcchs.back();
|
|
|
|
pdcch_dl_t& pdcch = bwp_pdcch_slot.dl_pdcchs.back();
|
|
|
@ -277,7 +278,7 @@ alloc_result bwp_slot_allocator::alloc_pdsch(slot_ue& ue, const prb_grant& dl_gr
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
srsran_assert(pdsch.sch.grant.tb[0].tbs == (int)ue.h_dl->tbs(), "The TBS did not remain constant in retx");
|
|
|
|
srsran_assert(pdsch.sch.grant.tb[0].tbs == (int)ue.h_dl->tbs(), "The TBS did not remain constant in retx");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (bwp_pdsch_slot.pdschs.back().sch.grant.tb[0].R < 0.9 or mcs == 0) {
|
|
|
|
if (bwp_pdsch_slot.pdschs.back().sch.grant.tb[0].R < max_R or mcs == 0) {
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Decrease MCS if rate is too high
|
|
|
|
// Decrease MCS if rate is too high
|
|
|
|