mirror of https://github.com/PentHertz/srsLTE.git
Force retx for mcs>29 and new tb if rv=0 && mcs<29
This commit is contained in:
parent
f1ec1b2f3c
commit
399f1cdbd1
|
@ -52,7 +52,6 @@
|
||||||
#define TTIMOD_SZ (((2*HARQ_DELAY_MS) < 10)?10:20)
|
#define TTIMOD_SZ (((2*HARQ_DELAY_MS) < 10)?10:20)
|
||||||
#define TTIMOD(tti) (tti%TTIMOD_SZ)
|
#define TTIMOD(tti) (tti%TTIMOD_SZ)
|
||||||
|
|
||||||
#define MOD_N_PROC (2*HARQ_DELAY_MS-8)
|
|
||||||
#define ASYNC_DL_SCHED (HARQ_DELAY_MS <= 4)
|
#define ASYNC_DL_SCHED (HARQ_DELAY_MS <= 4)
|
||||||
|
|
||||||
// Cat 3 UE - Max number of DL-SCH transport block bits received within a TTI
|
// Cat 3 UE - Max number of DL-SCH transport block bits received within a TTI
|
||||||
|
|
|
@ -259,7 +259,7 @@ private:
|
||||||
memcpy(&cur_grant, &grant, sizeof(Tgrant));
|
memcpy(&cur_grant, &grant, sizeof(Tgrant));
|
||||||
|
|
||||||
// If data has not yet been successfully decoded
|
// If data has not yet been successfully decoded
|
||||||
if (!ack) {
|
if (!ack || (grant.rv[tid]==0 && grant.phy_grant.dl.mcs[tid].idx < 29)) {
|
||||||
|
|
||||||
// Instruct the PHY To combine the received data and attempt to decode it
|
// Instruct the PHY To combine the received data and attempt to decode it
|
||||||
if (pid == HARQ_BCCH_PID) {
|
if (pid == HARQ_BCCH_PID) {
|
||||||
|
@ -347,9 +347,10 @@ private:
|
||||||
// Determine if it's a new transmission 5.3.2.2
|
// Determine if it's a new transmission 5.3.2.2
|
||||||
bool calc_is_new_transmission(Tgrant grant) {
|
bool calc_is_new_transmission(Tgrant grant) {
|
||||||
|
|
||||||
if ((grant.ndi[tid] != cur_grant.ndi[tid]) || // 1st condition (NDI has changed)
|
if (grant.phy_grant.dl.mcs[tid].idx < 28 && // mcs 29,30,31 always retx regardless of rest
|
||||||
(pid == HARQ_BCCH_PID && grant.rv[tid] == 0) || // 2nd condition (Broadcast and 1st transmission)
|
((grant.ndi[tid] != cur_grant.ndi[tid]) || // 1st condition (NDI has changed)
|
||||||
is_first_tb) // 3rd condition (first TB)
|
(pid == HARQ_BCCH_PID && grant.rv[tid] == 0) || // 2nd condition (Broadcast and 1st transmission)
|
||||||
|
is_first_tb))
|
||||||
{
|
{
|
||||||
is_first_tb = false;
|
is_first_tb = false;
|
||||||
is_new_transmission = true;
|
is_new_transmission = true;
|
||||||
|
|
|
@ -135,7 +135,7 @@ private:
|
||||||
demux demux_unit;
|
demux demux_unit;
|
||||||
|
|
||||||
/* DL/UL HARQ */
|
/* DL/UL HARQ */
|
||||||
dl_harq_entity<MAC_NOF_HARQ_PROC+MOD_N_PROC, mac_grant_t, tb_action_dl_t, srslte_phy_grant_t> dl_harq;
|
dl_harq_entity<MAC_NOF_HARQ_PROC, mac_grant_t, tb_action_dl_t, srslte_phy_grant_t> dl_harq;
|
||||||
ul_harq_entity<MAC_NOF_HARQ_PROC, mac_grant_t, tb_action_ul_t, srslte_phy_grant_t> ul_harq;
|
ul_harq_entity<MAC_NOF_HARQ_PROC, mac_grant_t, tb_action_ul_t, srslte_phy_grant_t> ul_harq;
|
||||||
|
|
||||||
/* MAC Uplink-related Procedures */
|
/* MAC Uplink-related Procedures */
|
||||||
|
|
|
@ -481,11 +481,7 @@ bool phch_worker::decode_pdcch_dl(srsue::mac_interface_phy::mac_grant_t* grant)
|
||||||
/* Fill MAC grant structure */
|
/* Fill MAC grant structure */
|
||||||
grant->ndi[0] = dci_unpacked.ndi;
|
grant->ndi[0] = dci_unpacked.ndi;
|
||||||
grant->ndi[1] = dci_unpacked.ndi_1;
|
grant->ndi[1] = dci_unpacked.ndi_1;
|
||||||
if (tti < MOD_N_PROC) {
|
grant->pid = ASYNC_DL_SCHED?dci_unpacked.harq_process:(tti%(2*HARQ_DELAY_MS));
|
||||||
grant->pid = ASYNC_DL_SCHED?dci_unpacked.harq_process:tti+(2*HARQ_DELAY_MS);
|
|
||||||
} else {
|
|
||||||
grant->pid = ASYNC_DL_SCHED?dci_unpacked.harq_process:(tti%(2*HARQ_DELAY_MS));
|
|
||||||
}
|
|
||||||
grant->n_bytes[0] = grant->phy_grant.dl.mcs[0].tbs / (uint32_t) 8;
|
grant->n_bytes[0] = grant->phy_grant.dl.mcs[0].tbs / (uint32_t) 8;
|
||||||
grant->n_bytes[1] = grant->phy_grant.dl.mcs[1].tbs / (uint32_t) 8;
|
grant->n_bytes[1] = grant->phy_grant.dl.mcs[1].tbs / (uint32_t) 8;
|
||||||
grant->tti = tti;
|
grant->tti = tti;
|
||||||
|
|
Loading…
Reference in New Issue