Deallocate CCE if PUCCH allocation fails
This commit is contained in:
@@ -440,11 +440,23 @@ void nr_simple_dlsch_preprocessor(module_id_t module_id,
|
|||||||
}
|
}
|
||||||
UE_info->num_pdcch_cand[UE_id][cid]++;
|
UE_info->num_pdcch_cand[UE_id][cid]++;
|
||||||
|
|
||||||
/* Find PUCCH occasion */
|
/* Find PUCCH occasion: if it fails, undo CCE allocation (undoing PUCCH
|
||||||
|
* allocation after CCE alloc fail would be more complex) */
|
||||||
const bool alloc = nr_acknack_scheduling(module_id, UE_id, frame, slot);
|
const bool alloc = nr_acknack_scheduling(module_id, UE_id, frame, slot);
|
||||||
AssertFatal(alloc,
|
if (!alloc) {
|
||||||
"could not find uplink slot for PUCCH (RNTI %04x@%d.%d)!\n",
|
LOG_W(MAC,
|
||||||
rnti, frame, slot);
|
"%s(): could not find PUCCH for UE %d/%04x@%d.%d\n",
|
||||||
|
__func__,
|
||||||
|
UE_id,
|
||||||
|
rnti,
|
||||||
|
frame,
|
||||||
|
slot);
|
||||||
|
UE_info->num_pdcch_cand[UE_id][cid]--;
|
||||||
|
int *cce_list = RC.nrmac[module_id]->cce_list[sched_ctrl->active_bwp->bwp_Id][cid];
|
||||||
|
for (int i = 0; i < sched_ctrl->aggregation_level; i++)
|
||||||
|
cce_list[sched_ctrl->cce_index + i] = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
uint16_t *vrb_map = RC.nrmac[module_id]->common_channels[CC_id].vrb_map;
|
uint16_t *vrb_map = RC.nrmac[module_id]->common_channels[CC_id].vrb_map;
|
||||||
// for now HARQ PID is fixed and should be the same as in post-processor
|
// for now HARQ PID is fixed and should be the same as in post-processor
|
||||||
|
|||||||
@@ -328,6 +328,21 @@ void nr_preprocessor_phytest(module_id_t module_id,
|
|||||||
UE_id);
|
UE_id);
|
||||||
|
|
||||||
const bool alloc = nr_acknack_scheduling(module_id, UE_id, frame, slot);
|
const bool alloc = nr_acknack_scheduling(module_id, UE_id, frame, slot);
|
||||||
|
if (!alloc) {
|
||||||
|
LOG_D(MAC,
|
||||||
|
"%s(): could not find PUCCH for UE %d/%04x@%d.%d\n",
|
||||||
|
__func__,
|
||||||
|
UE_id,
|
||||||
|
rnti,
|
||||||
|
frame,
|
||||||
|
slot);
|
||||||
|
UE_info->num_pdcch_cand[UE_id][cid]--;
|
||||||
|
int *cce_list = RC.nrmac[module_id]->cce_list[sched_ctrl->active_bwp->bwp_Id][cid];
|
||||||
|
for (int i = 0; i < sched_ctrl->aggregation_level; i++)
|
||||||
|
cce_list[sched_ctrl->cce_index + i] = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
AssertFatal(alloc,
|
AssertFatal(alloc,
|
||||||
"could not find uplink slot for PUCCH (RNTI %04x@%d.%d)!\n",
|
"could not find uplink slot for PUCCH (RNTI %04x@%d.%d)!\n",
|
||||||
rnti, frame, slot);
|
rnti, frame, slot);
|
||||||
|
|||||||
Reference in New Issue
Block a user