Commit 79d21a28 authored by ChiehChun's avatar ChiehChun

Find the largest contiguos region

parent 641433ab
...@@ -710,19 +710,30 @@ void nr_simple_ulsch_preprocessor(module_id_t module_id, ...@@ -710,19 +710,30 @@ void nr_simple_ulsch_preprocessor(module_id_t module_id,
uint16_t *vrb_map_UL = uint16_t *vrb_map_UL =
&RC.nrmac[module_id]->common_channels[CC_id].vrb_map_UL[sched_slot * 275]; &RC.nrmac[module_id]->common_channels[CC_id].vrb_map_UL[sched_slot * 275];
const uint16_t bwpSize = NRRIV2BW(sched_ctrl->active_ubwp->bwp_Common->genericParameters.locationAndBandwidth,275); const uint16_t bwpSize = NRRIV2BW(sched_ctrl->active_ubwp->bwp_Common->genericParameters.locationAndBandwidth,275);
uint8_t rballoc_mask[bwpSize]; int st = 0, e = 0, len = 0;
int n_rb_sched = 0;
for (int i = 0; i < bwpSize; i++) { for (int i = 0; i < bwpSize; i++) {
// calculate mask: init with "NOT" vrb_map_UL: while (vrb_map_UL[i] == 1)
// if any RB in vrb_map_UL is blocked (1), the current RB will be 0 i++;
rballoc_mask[i] = !vrb_map_UL[i]; st = i;
n_rb_sched += rballoc_mask[i]; while (vrb_map_UL[i] == 0)
i++;
if (i - st > len) {
len = i - st;
e = i - 1;
}
} }
st = e - len + 1;
uint8_t rballoc_mask[bwpSize];
/* Calculate mask: if any RB in vrb_map_UL is blocked (1), the current RB will be 0 */
for (int i = 0; i < bwpSize; i++)
rballoc_mask[i] = i >= st && i <= e;
/* proportional fair scheduling algorithm */ /* proportional fair scheduling algorithm */
pf_ul(module_id, frame, slot, num_slots_per_tdd, pf_ul(module_id, frame, slot, num_slots_per_tdd,
&UE_info->list, &UE_info->list,
n_rb_sched, len,
rballoc_mask, rballoc_mask,
2); 2);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment