fix: UE dosen't respond to pdcch order(contention based)
This commit is contained in:
@@ -907,6 +907,7 @@ void fill_pdcch_order(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_a
|
|||||||
((DCI1A_1_5MHz_TDD_1_6_t *)dci_pdu)->TPC = rel8->tpc;
|
((DCI1A_1_5MHz_TDD_1_6_t *)dci_pdu)->TPC = rel8->tpc;
|
||||||
((DCI1A_1_5MHz_TDD_1_6_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
((DCI1A_1_5MHz_TDD_1_6_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
||||||
((DCI1A_1_5MHz_TDD_1_6_t *)dci_pdu)->dai = rel8->downlink_assignment_index;
|
((DCI1A_1_5MHz_TDD_1_6_t *)dci_pdu)->dai = rel8->downlink_assignment_index;
|
||||||
|
((DCI1A_1_5MHz_TDD_1_6_t *)dci_pdu)->padding = 0;
|
||||||
} else {
|
} else {
|
||||||
dci_alloc->dci_length = sizeof_DCI1A_1_5MHz_FDD_t;
|
dci_alloc->dci_length = sizeof_DCI1A_1_5MHz_FDD_t;
|
||||||
((DCI1A_1_5MHz_FDD_t *)dci_pdu)->type = 1;
|
((DCI1A_1_5MHz_FDD_t *)dci_pdu)->type = 1;
|
||||||
@@ -917,6 +918,7 @@ void fill_pdcch_order(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_a
|
|||||||
((DCI1A_1_5MHz_FDD_t *)dci_pdu)->rv = rel8->redundancy_version_1;
|
((DCI1A_1_5MHz_FDD_t *)dci_pdu)->rv = rel8->redundancy_version_1;
|
||||||
((DCI1A_1_5MHz_FDD_t *)dci_pdu)->TPC = rel8->tpc;
|
((DCI1A_1_5MHz_FDD_t *)dci_pdu)->TPC = rel8->tpc;
|
||||||
((DCI1A_1_5MHz_FDD_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
((DCI1A_1_5MHz_FDD_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
||||||
|
((DCI1A_1_5MHz_FDD_t *)dci_pdu)->padding = 0;
|
||||||
// printf("FDD 1A: mcs %d, rballoc %x,rv %d, NPRB %d\n",mcs,rballoc,rv,NPRB);
|
// printf("FDD 1A: mcs %d, rballoc %x,rv %d, NPRB %d\n",mcs,rballoc,rv,NPRB);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -932,6 +934,7 @@ void fill_pdcch_order(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_a
|
|||||||
((DCI1A_5MHz_TDD_1_6_t *)dci_pdu)->TPC = rel8->tpc;
|
((DCI1A_5MHz_TDD_1_6_t *)dci_pdu)->TPC = rel8->tpc;
|
||||||
((DCI1A_5MHz_TDD_1_6_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
((DCI1A_5MHz_TDD_1_6_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
||||||
((DCI1A_5MHz_TDD_1_6_t *)dci_pdu)->dai = rel8->downlink_assignment_index;
|
((DCI1A_5MHz_TDD_1_6_t *)dci_pdu)->dai = rel8->downlink_assignment_index;
|
||||||
|
((DCI1A_5MHz_TDD_1_6_t *)dci_pdu)->padding = 0;
|
||||||
// printf("TDD 1A: mcs %d, rballoc %x,rv %d, NPRB %d\n",mcs,rballoc,rv,NPRB);
|
// printf("TDD 1A: mcs %d, rballoc %x,rv %d, NPRB %d\n",mcs,rballoc,rv,NPRB);
|
||||||
} else {
|
} else {
|
||||||
dci_alloc->dci_length = sizeof_DCI1A_5MHz_FDD_t;
|
dci_alloc->dci_length = sizeof_DCI1A_5MHz_FDD_t;
|
||||||
@@ -943,6 +946,7 @@ void fill_pdcch_order(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_a
|
|||||||
((DCI1A_5MHz_FDD_t *)dci_pdu)->rv = rel8->redundancy_version_1;
|
((DCI1A_5MHz_FDD_t *)dci_pdu)->rv = rel8->redundancy_version_1;
|
||||||
((DCI1A_5MHz_FDD_t *)dci_pdu)->TPC = rel8->tpc;
|
((DCI1A_5MHz_FDD_t *)dci_pdu)->TPC = rel8->tpc;
|
||||||
((DCI1A_5MHz_FDD_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
((DCI1A_5MHz_FDD_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
||||||
|
((DCI1A_5MHz_FDD_t *)dci_pdu)->padding = 0;
|
||||||
// printf("FDD 1A: mcs %d, rballoc %x,rv %d, NPRB %d\n",mcs,rballoc,rv,NPRB);
|
// printf("FDD 1A: mcs %d, rballoc %x,rv %d, NPRB %d\n",mcs,rballoc,rv,NPRB);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -958,6 +962,7 @@ void fill_pdcch_order(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_a
|
|||||||
((DCI1A_10MHz_TDD_1_6_t *)dci_pdu)->TPC = rel8->tpc;
|
((DCI1A_10MHz_TDD_1_6_t *)dci_pdu)->TPC = rel8->tpc;
|
||||||
((DCI1A_10MHz_TDD_1_6_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
((DCI1A_10MHz_TDD_1_6_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
||||||
((DCI1A_10MHz_TDD_1_6_t *)dci_pdu)->dai = rel8->downlink_assignment_index;
|
((DCI1A_10MHz_TDD_1_6_t *)dci_pdu)->dai = rel8->downlink_assignment_index;
|
||||||
|
((DCI1A_10MHz_TDD_1_6_t *)dci_pdu)->padding = 0;
|
||||||
// printf("TDD 1A: mcs %d, rballoc %x,rv %d, NPRB %d\n",mcs,rballoc,rv,NPRB);
|
// printf("TDD 1A: mcs %d, rballoc %x,rv %d, NPRB %d\n",mcs,rballoc,rv,NPRB);
|
||||||
} else {
|
} else {
|
||||||
dci_alloc->dci_length = sizeof_DCI1A_10MHz_FDD_t;
|
dci_alloc->dci_length = sizeof_DCI1A_10MHz_FDD_t;
|
||||||
@@ -969,6 +974,7 @@ void fill_pdcch_order(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_a
|
|||||||
((DCI1A_10MHz_FDD_t *)dci_pdu)->rv = rel8->redundancy_version_1;
|
((DCI1A_10MHz_FDD_t *)dci_pdu)->rv = rel8->redundancy_version_1;
|
||||||
((DCI1A_10MHz_FDD_t *)dci_pdu)->TPC = rel8->tpc;
|
((DCI1A_10MHz_FDD_t *)dci_pdu)->TPC = rel8->tpc;
|
||||||
((DCI1A_10MHz_FDD_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
((DCI1A_10MHz_FDD_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
||||||
|
((DCI1A_10MHz_FDD_t *)dci_pdu)->padding = 0;
|
||||||
// printf("FDD 1A: mcs %d, rballoc %x,rv %d, NPRB %d\n",mcs,rballoc,rv,NPRB);
|
// printf("FDD 1A: mcs %d, rballoc %x,rv %d, NPRB %d\n",mcs,rballoc,rv,NPRB);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -984,6 +990,7 @@ void fill_pdcch_order(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_a
|
|||||||
((DCI1A_20MHz_TDD_1_6_t *)dci_pdu)->TPC = rel8->tpc;
|
((DCI1A_20MHz_TDD_1_6_t *)dci_pdu)->TPC = rel8->tpc;
|
||||||
((DCI1A_20MHz_TDD_1_6_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
((DCI1A_20MHz_TDD_1_6_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
||||||
((DCI1A_20MHz_TDD_1_6_t *)dci_pdu)->dai = rel8->downlink_assignment_index;
|
((DCI1A_20MHz_TDD_1_6_t *)dci_pdu)->dai = rel8->downlink_assignment_index;
|
||||||
|
((DCI1A_20MHz_TDD_1_6_t *)dci_pdu)->padding = 0;
|
||||||
// printf("TDD 1A: mcs %d, rballoc %x,rv %d, NPRB %d\n",mcs,rballoc,rv,NPRB);
|
// printf("TDD 1A: mcs %d, rballoc %x,rv %d, NPRB %d\n",mcs,rballoc,rv,NPRB);
|
||||||
} else {
|
} else {
|
||||||
dci_alloc->dci_length = sizeof_DCI1A_20MHz_FDD_t;
|
dci_alloc->dci_length = sizeof_DCI1A_20MHz_FDD_t;
|
||||||
@@ -995,6 +1002,7 @@ void fill_pdcch_order(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_a
|
|||||||
((DCI1A_20MHz_FDD_t *)dci_pdu)->rv = rel8->redundancy_version_1;
|
((DCI1A_20MHz_FDD_t *)dci_pdu)->rv = rel8->redundancy_version_1;
|
||||||
((DCI1A_20MHz_FDD_t *)dci_pdu)->TPC = rel8->tpc;
|
((DCI1A_20MHz_FDD_t *)dci_pdu)->TPC = rel8->tpc;
|
||||||
((DCI1A_20MHz_FDD_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
((DCI1A_20MHz_FDD_t *)dci_pdu)->harq_pid = rel8->harq_process;
|
||||||
|
((DCI1A_20MHz_FDD_t *)dci_pdu)->padding = 0;
|
||||||
// printf("FDD 1A: mcs %d, rballoc %x,rv %d, NPRB %d\n",mcs,rballoc,rv,NPRB);
|
// printf("FDD 1A: mcs %d, rballoc %x,rv %d, NPRB %d\n",mcs,rballoc,rv,NPRB);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -550,7 +550,8 @@ check_ul_failure(module_id_t module_idP, int CC_id, int UE_id,
|
|||||||
|
|
||||||
UE_list->UE_sched_ctrl[UE_id].ul_failure_timer++;
|
UE_list->UE_sched_ctrl[UE_id].ul_failure_timer++;
|
||||||
// check threshold
|
// check threshold
|
||||||
if (UE_list->UE_sched_ctrl[UE_id].ul_failure_timer > 20000) {
|
if (UE_list->UE_sched_ctrl[UE_id].ul_failure_timer > 4000) {
|
||||||
|
// note: probably ul_failure_timer is should be less than UE radio link failure time(see T310/N310/N311)
|
||||||
// inform RRC of failure and clear timer
|
// inform RRC of failure and clear timer
|
||||||
LOG_I(MAC,
|
LOG_I(MAC,
|
||||||
"UE %d rnti %x: UL Failure after repeated PDCCH orders: Triggering RRC \n",
|
"UE %d rnti %x: UL Failure after repeated PDCCH orders: Triggering RRC \n",
|
||||||
|
|||||||
Reference in New Issue
Block a user