avoid gnb stalling on retransmissions
This commit is contained in:
@@ -1401,14 +1401,10 @@ void nr_generate_Msg4(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
|
|||||||
|
|
||||||
uint16_t mac_sdu_length = 0;
|
uint16_t mac_sdu_length = 0;
|
||||||
|
|
||||||
rnti_t tc_rnti = ra->rnti;
|
|
||||||
// If UE is known by the network, C-RNTI to be used instead of TC-RNTI
|
// If UE is known by the network, C-RNTI to be used instead of TC-RNTI
|
||||||
|
rnti_t tc_rnti = ra->rnti;
|
||||||
if (ra->msg3_dcch_dtch) {
|
if (ra->msg3_dcch_dtch) {
|
||||||
ra->rnti = ra->crnti;
|
ra->rnti = ra->crnti;
|
||||||
} else {
|
|
||||||
mac_sdu_length = mac_rrc_nr_data_req(module_idP, CC_id, frameP, CCCH, ra->rnti, 1, NULL);
|
|
||||||
if (mac_sdu_length <= 0)
|
|
||||||
return; // need to wait until RRCSetup is encoded
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NR_UE_info_t * UE = find_nr_UE(&nr_mac->UE_info, ra->rnti);
|
NR_UE_info_t * UE = find_nr_UE(&nr_mac->UE_info, ra->rnti);
|
||||||
@@ -1417,6 +1413,16 @@ void nr_generate_Msg4(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NR_UE_sched_ctrl_t *sched_ctrl = &UE->UE_sched_ctrl;
|
||||||
|
/* get the PID of a HARQ process awaiting retrnasmission, or -1 otherwise */
|
||||||
|
int current_harq_pid = sched_ctrl->retrans_dl_harq.head;
|
||||||
|
|
||||||
|
if (ra->msg3_dcch_dtch == false && current_harq_pid < 0) {
|
||||||
|
mac_sdu_length = mac_rrc_nr_data_req(module_idP, CC_id, frameP, CCCH, ra->rnti, 1, NULL);
|
||||||
|
if (mac_sdu_length <= 0)
|
||||||
|
return; // need to wait until RRCSetup is encoded
|
||||||
|
}
|
||||||
|
|
||||||
long BWPStart = 0;
|
long BWPStart = 0;
|
||||||
long BWPSize = 0;
|
long BWPSize = 0;
|
||||||
NR_Type0_PDCCH_CSS_config_t *type0_PDCCH_CSS_config = NULL;
|
NR_Type0_PDCCH_CSS_config_t *type0_PDCCH_CSS_config = NULL;
|
||||||
@@ -1509,9 +1515,6 @@ void nr_generate_Msg4(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
|
|||||||
|
|
||||||
LOG_I(NR_MAC,"Generate msg4, rnti: %04x\n", ra->rnti);
|
LOG_I(NR_MAC,"Generate msg4, rnti: %04x\n", ra->rnti);
|
||||||
|
|
||||||
NR_UE_sched_ctrl_t *sched_ctrl = &UE->UE_sched_ctrl;
|
|
||||||
/* get the PID of a HARQ process awaiting retrnasmission, or -1 otherwise */
|
|
||||||
int current_harq_pid = sched_ctrl->retrans_dl_harq.head;
|
|
||||||
// HARQ management
|
// HARQ management
|
||||||
if (current_harq_pid < 0) {
|
if (current_harq_pid < 0) {
|
||||||
AssertFatal(sched_ctrl->available_dl_harq.head >= 0,
|
AssertFatal(sched_ctrl->available_dl_harq.head >= 0,
|
||||||
|
|||||||
Reference in New Issue
Block a user