Merge remote-tracking branch 'origin/fixes-dlsch-sched' into integration_2025_w34 (!3599)
DLSCH scheduler: fix bugs in UE sorting Fix two issues/bugs when sorting UEs in the DLSCH scheduler following the PF metric, which should improve fairness.
This commit is contained in:
@@ -594,8 +594,15 @@ typedef struct UEsched_s {
|
|||||||
NR_UE_info_t * UE;
|
NR_UE_info_t * UE;
|
||||||
} UEsched_t;
|
} UEsched_t;
|
||||||
|
|
||||||
static int comparator(const void *p, const void *q) {
|
static int comparator(const void *p, const void *q)
|
||||||
return ((UEsched_t*)p)->coef < ((UEsched_t*)q)->coef;
|
{
|
||||||
|
const UEsched_t *pp = p;
|
||||||
|
const UEsched_t *qq = q;
|
||||||
|
if (pp->coef < qq->coef)
|
||||||
|
return 1;
|
||||||
|
else if (pp->coef > qq->coef)
|
||||||
|
return -1;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pf_dl(module_id_t module_id,
|
static void pf_dl(module_id_t module_id,
|
||||||
@@ -613,7 +620,7 @@ static void pf_dl(module_id_t module_id,
|
|||||||
int remainUEs[num_beams];
|
int remainUEs[num_beams];
|
||||||
for (int i = 0; i < num_beams; i++)
|
for (int i = 0; i < num_beams; i++)
|
||||||
remainUEs[i] = max_num_ue;
|
remainUEs[i] = max_num_ue;
|
||||||
int curUE = 0;
|
int numUE = 0;
|
||||||
int CC_id = 0;
|
int CC_id = 0;
|
||||||
int slots_per_frame = mac->frame_structure.numb_slots_frame;
|
int slots_per_frame = mac->frame_structure.numb_slots_frame;
|
||||||
|
|
||||||
@@ -704,13 +711,13 @@ static void pf_dl(module_id_t module_id,
|
|||||||
tbs,
|
tbs,
|
||||||
coeff_ue);
|
coeff_ue);
|
||||||
/* Create UE_sched list for UEs eligible for new transmission*/
|
/* Create UE_sched list for UEs eligible for new transmission*/
|
||||||
UE_sched[curUE].coef=coeff_ue;
|
UE_sched[numUE].coef = coeff_ue;
|
||||||
UE_sched[curUE].UE=UE;
|
UE_sched[numUE].UE = UE;
|
||||||
curUE++;
|
numUE++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
qsort(UE_sched, sizeofArray(UE_sched), sizeof(UEsched_t), comparator);
|
qsort(UE_sched, numUE, sizeof(UEsched_t), comparator);
|
||||||
UEsched_t *iterator = UE_sched;
|
UEsched_t *iterator = UE_sched;
|
||||||
|
|
||||||
const int min_rbSize = 5;
|
const int min_rbSize = 5;
|
||||||
|
|||||||
Reference in New Issue
Block a user