From 0bcee1e40ede03f022e76ed55e70e691f8055990 Mon Sep 17 00:00:00 2001 From: Cedric Roux <cedric.roux@eurecom.fr> Date: Sat, 11 Feb 2017 12:34:05 +0100 Subject: [PATCH] fix: set mcs, TBS and Qm only if round == 0 Not sure at all about this one, seemed necessary to me, but I don't get the full logic in there. To be refined. --- openair1/PHY/LTE_TRANSPORT/dci_tools.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools.c b/openair1/PHY/LTE_TRANSPORT/dci_tools.c index e38824861b..a905d386ef 100755 --- a/openair1/PHY/LTE_TRANSPORT/dci_tools.c +++ b/openair1/PHY/LTE_TRANSPORT/dci_tools.c @@ -4712,8 +4712,6 @@ int generate_ue_dlsch_params_from_dci(int frame, } } - dlsch0_harq->mcs = mcs; - // this a retransmission if(dlsch0_harq->round) { @@ -4728,17 +4726,25 @@ int generate_ue_dlsch_params_from_dci(int frame, } } - dlsch0_harq->TBS = TBStable[get_I_TBS(mcs)][NPRB-1]; - if (mcs <= 28) - dlsch0_harq->Qm = get_Qm(mcs); - else if (mcs<=31) - dlsch0_harq->Qm = (mcs-28)<<1; - else - LOG_E(PHY,"invalid mcs %d\n",mcs); // printf("test: MCS %d, NPRB %d, TBS %d\n",mcs,NPRB,dlsch0_harq->TBS); dlsch[0]->active = 1; + if (dlsch0_harq->round == 0) { + dlsch0_harq->status = ACTIVE; + // printf("Setting DLSCH process %d to ACTIVE\n",harq_pid); + // MCS and TBS don't change across HARQ rounds + dlsch0_harq->mcs = mcs; + dlsch0_harq->TBS = TBStable[get_I_TBS(dlsch0_harq->mcs)][NPRB-1]; + + if (mcs <= 28) + dlsch0_harq->Qm = get_Qm(mcs); + else if (mcs<=31) + dlsch0_harq->Qm = (mcs-28)<<1; + else + LOG_E(PHY,"invalid mcs %d\n",mcs); + } + dlsch[0]->rnti = rnti; if (beamforming_mode == 0) -- GitLab