ULSCH scheduler fix when using transform precoding
Bug in ULSCH scheduler for transform precoding. It ignores transform precoding specific tables when building ul_pf_tbs.
This commit is contained in:
@@ -1754,7 +1754,7 @@ static bool allocate_ul_retransmission(gNB_MAC_INST *nrmac,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t ul_pf_tbs[3][29]; // pre-computed, approximate TBS values for PF coefficient
|
uint32_t ul_pf_tbs[5][29]; // pre-computed, approximate TBS values for PF coefficient
|
||||||
typedef struct UEsched_s {
|
typedef struct UEsched_s {
|
||||||
float coef;
|
float coef;
|
||||||
NR_UE_info_t * UE;
|
NR_UE_info_t * UE;
|
||||||
@@ -2221,11 +2221,11 @@ nr_pp_impl_ul nr_init_fr1_ulsch_preprocessor(int CC_id)
|
|||||||
* which should approximately(!) give us the TBsize. In particular, the
|
* which should approximately(!) give us the TBsize. In particular, the
|
||||||
* number of symbols, the number of DMRS symbols, and the exact Qm and R, are
|
* number of symbols, the number of DMRS symbols, and the exact Qm and R, are
|
||||||
* not correct*/
|
* not correct*/
|
||||||
for (int mcsTableIdx = 0; mcsTableIdx < 3; ++mcsTableIdx) {
|
for (int mcsTableIdx = 0; mcsTableIdx < 5; ++mcsTableIdx) {
|
||||||
for (int mcs = 0; mcs < 29; ++mcs) {
|
for (int mcs = 0; mcs < 29; ++mcs) {
|
||||||
if (mcs > 27 && mcsTableIdx == 1)
|
if (mcs > 27 && (mcsTableIdx == 1 || mcsTableIdx == 3 || mcsTableIdx == 4))
|
||||||
continue;
|
continue;
|
||||||
const uint8_t Qm = nr_get_Qm_dl(mcs, mcsTableIdx);
|
const uint8_t Qm = nr_get_Qm_ul(mcs, mcsTableIdx);
|
||||||
const uint16_t R = nr_get_code_rate_ul(mcs, mcsTableIdx);
|
const uint16_t R = nr_get_code_rate_ul(mcs, mcsTableIdx);
|
||||||
/* note: we do not update R/Qm based on low MCS or pi2BPSK */
|
/* note: we do not update R/Qm based on low MCS or pi2BPSK */
|
||||||
ul_pf_tbs[mcsTableIdx][mcs] = nr_compute_tbs(Qm,
|
ul_pf_tbs[mcsTableIdx][mcs] = nr_compute_tbs(Qm,
|
||||||
|
|||||||
Reference in New Issue
Block a user