Make nr_find_nb_rb() take minimum RBsize
This commit is contained in:
@@ -598,6 +598,7 @@ bool allocate_dl_retransmission(module_id_t module_id,
|
||||
temp_ps.nrOfSymbols,
|
||||
temp_ps.N_PRB_DMRS * temp_ps.N_DMRS_SLOT,
|
||||
retInfo->tb_size,
|
||||
1, /* minimum of 1RB: need to find exact TBS, don't preclude any number */
|
||||
rbSize,
|
||||
&new_tbs,
|
||||
&new_rbSize);
|
||||
@@ -739,8 +740,9 @@ void pf_dl(module_id_t module_id,
|
||||
}
|
||||
}
|
||||
|
||||
const int min_rbSize = 5;
|
||||
/* Loop UE_sched to find max coeff and allocate transmission */
|
||||
while (max_num_ue > 0 && n_rb_sched >= MIN_NUM_PRBS_TO_SCHEDULE && UE_sched.head >= 0) {
|
||||
while (max_num_ue > 0 && n_rb_sched >= min_rbSize && UE_sched.head >= 0) {
|
||||
|
||||
/* Find max coeff from UE_sched*/
|
||||
int *max = &UE_sched.head; /* assume head is max */
|
||||
@@ -859,6 +861,7 @@ void pf_dl(module_id_t module_id,
|
||||
ps->nrOfSymbols,
|
||||
ps->N_PRB_DMRS * ps->N_DMRS_SLOT,
|
||||
sched_ctrl->num_total_bytes + oh,
|
||||
min_rbSize,
|
||||
max_rbSize,
|
||||
&TBS,
|
||||
&rbSize);
|
||||
|
||||
@@ -388,6 +388,7 @@ bool nr_find_nb_rb(uint16_t Qm,
|
||||
uint16_t nb_symb_sch,
|
||||
uint16_t nb_dmrs_prb,
|
||||
uint32_t bytes,
|
||||
uint16_t nb_rb_min,
|
||||
uint16_t nb_rb_max,
|
||||
uint32_t *tbs,
|
||||
uint16_t *nb_rb)
|
||||
@@ -403,7 +404,7 @@ bool nr_find_nb_rb(uint16_t Qm,
|
||||
return true;
|
||||
|
||||
/* is the minimum enough? */
|
||||
*nb_rb = MIN_NUM_PRBS_TO_SCHEDULE;
|
||||
*nb_rb = nb_rb_min;
|
||||
*tbs = nr_compute_tbs(Qm, R, *nb_rb, nb_symb_sch, nb_dmrs_prb, 0, 0, 1) >> 3;
|
||||
if (bytes <= *tbs)
|
||||
return true;
|
||||
@@ -411,7 +412,7 @@ bool nr_find_nb_rb(uint16_t Qm,
|
||||
/* perform binary search to allocate all bytes within a TBS up to nb_rb_max
|
||||
* RBs */
|
||||
int hi = nb_rb_max;
|
||||
int lo = 1;
|
||||
int lo = nb_rb_min;
|
||||
for (int p = (hi + lo) / 2; lo + 1 < hi; p = (hi + lo) / 2) {
|
||||
const uint32_t TBS = nr_compute_tbs(Qm, R, p, nb_symb_sch, nb_dmrs_prb, 0, 0, 1) >> 3;
|
||||
if (bytes == TBS) {
|
||||
|
||||
@@ -1004,6 +1004,7 @@ bool allocate_ul_retransmission(module_id_t module_id,
|
||||
temp_ps.nrOfSymbols,
|
||||
temp_ps.N_PRB_DMRS * temp_ps.num_dmrs_symb,
|
||||
retInfo->tb_size,
|
||||
1, /* minimum of 1RB: need to find exact TBS, don't preclude any number */
|
||||
rbSize,
|
||||
&new_tbs,
|
||||
&new_rbSize);
|
||||
@@ -1256,8 +1257,9 @@ void pf_ul(module_id_t module_id,
|
||||
}
|
||||
|
||||
|
||||
const int min_rbSize = 5;
|
||||
/* Loop UE_sched to find max coeff and allocate transmission */
|
||||
while (UE_sched.head >= 0 && max_num_ue> 0 && n_rb_sched > 0) {
|
||||
while (UE_sched.head >= 0 && max_num_ue> 0 && n_rb_sched >= min_rbSize) {
|
||||
/* Find max coeff */
|
||||
int *max = &UE_sched.head; /* Find max coeff: assume head is max */
|
||||
int *p = &UE_sched.next[*max];
|
||||
@@ -1349,6 +1351,7 @@ void pf_ul(module_id_t module_id,
|
||||
ps->nrOfSymbols,
|
||||
ps->N_PRB_DMRS * ps->num_dmrs_symb,
|
||||
B,
|
||||
min_rbSize,
|
||||
max_rbSize,
|
||||
&TBS,
|
||||
&rbSize);
|
||||
|
||||
@@ -461,6 +461,7 @@ bool nr_find_nb_rb(uint16_t Qm,
|
||||
uint16_t nb_symb_sch,
|
||||
uint16_t nb_dmrs_prb,
|
||||
uint32_t bytes,
|
||||
uint16_t nb_rb_min,
|
||||
uint16_t nb_rb_max,
|
||||
uint32_t *tbs,
|
||||
uint16_t *nb_rb);
|
||||
|
||||
@@ -80,8 +80,6 @@
|
||||
#define NR_NB_RA_PROC_MAX 4
|
||||
#define MAX_NUM_OF_SSB 64
|
||||
|
||||
#define MIN_NUM_PRBS_TO_SCHEDULE 5
|
||||
|
||||
/*! \brief NR_list_t is a "list" (of users, HARQ processes, slices, ...).
|
||||
* Especially useful in the scheduler and to keep "classes" of users. */
|
||||
typedef struct {
|
||||
|
||||
Reference in New Issue
Block a user