NR UE: skip DLSCH ACK/NACK reporting for harq pid where feedback is disabled
This commit is contained in:
@@ -2064,6 +2064,8 @@ static void configure_servingcell_info(NR_UE_MAC_INST_t *mac, NR_ServingCellConf
|
||||
free(sc_info->maxMIMO_Layers_PDSCH);
|
||||
sc_info->maxMIMO_Layers_PDSCH = NULL;
|
||||
}
|
||||
if (sc_info->downlinkHARQ_FeedbackDisabled_r17)
|
||||
asn1cFreeStruc(asn_DEF_NR_DownlinkHARQ_FeedbackDisabled_r17, sc_info->downlinkHARQ_FeedbackDisabled_r17);
|
||||
break;
|
||||
case NR_SetupRelease_PDSCH_ServingCellConfig_PR_setup: {
|
||||
NR_PDSCH_ServingCellConfig_t *pdsch_servingcellconfig = scd->pdsch_ServingCellConfig->choice.setup;
|
||||
@@ -2075,6 +2077,28 @@ static void configure_servingcell_info(NR_UE_MAC_INST_t *mac, NR_ServingCellConf
|
||||
UPDATE_IE(sc_info->xOverhead_PDSCH, pdsch_servingcellconfig->xOverhead, long);
|
||||
if (pdsch_servingcellconfig->ext1 && pdsch_servingcellconfig->ext1->maxMIMO_Layers)
|
||||
UPDATE_IE(sc_info->maxMIMO_Layers_PDSCH, pdsch_servingcellconfig->ext1->maxMIMO_Layers, long);
|
||||
if (pdsch_servingcellconfig->ext3 && pdsch_servingcellconfig->ext3->downlinkHARQ_FeedbackDisabled_r17) {
|
||||
switch (pdsch_servingcellconfig->ext3->downlinkHARQ_FeedbackDisabled_r17->present) {
|
||||
case NR_SetupRelease_DownlinkHARQ_FeedbackDisabled_r17_PR_NOTHING:
|
||||
break;
|
||||
case NR_SetupRelease_DownlinkHARQ_FeedbackDisabled_r17_PR_release:
|
||||
if (sc_info->downlinkHARQ_FeedbackDisabled_r17)
|
||||
asn1cFreeStruc(asn_DEF_NR_DownlinkHARQ_FeedbackDisabled_r17, sc_info->downlinkHARQ_FeedbackDisabled_r17);
|
||||
break;
|
||||
case NR_SetupRelease_DownlinkHARQ_FeedbackDisabled_r17_PR_setup:
|
||||
if (sc_info->downlinkHARQ_FeedbackDisabled_r17 == NULL) {
|
||||
sc_info->downlinkHARQ_FeedbackDisabled_r17 = calloc(1, sizeof(*sc_info->downlinkHARQ_FeedbackDisabled_r17));
|
||||
sc_info->downlinkHARQ_FeedbackDisabled_r17->buf = calloc(4, sizeof(*sc_info->downlinkHARQ_FeedbackDisabled_r17->buf));
|
||||
}
|
||||
sc_info->downlinkHARQ_FeedbackDisabled_r17->size = pdsch_servingcellconfig->ext3->downlinkHARQ_FeedbackDisabled_r17->choice.setup.size;
|
||||
sc_info->downlinkHARQ_FeedbackDisabled_r17->bits_unused = pdsch_servingcellconfig->ext3->downlinkHARQ_FeedbackDisabled_r17->choice.setup.bits_unused;
|
||||
for (int i = 0; i < sc_info->downlinkHARQ_FeedbackDisabled_r17->size; i++)
|
||||
sc_info->downlinkHARQ_FeedbackDisabled_r17->buf[i] = pdsch_servingcellconfig->ext3->downlinkHARQ_FeedbackDisabled_r17->choice.setup.buf[i];
|
||||
break;
|
||||
default:
|
||||
AssertFatal(false, "Invalid case\n");
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
@@ -269,6 +269,7 @@ void release_mac_configuration(NR_UE_MAC_INST_t *mac,
|
||||
asn1cFreeStruc(asn_DEF_NR_CSI_MeasConfig, sc->csi_MeasConfig);
|
||||
asn1cFreeStruc(asn_DEF_NR_CSI_AperiodicTriggerStateList, sc->aperiodicTriggerStateList);
|
||||
asn1cFreeStruc(asn_DEF_NR_NTN_Config_r17, sc->ntn_Config_r17);
|
||||
asn1cFreeStruc(asn_DEF_NR_DownlinkHARQ_FeedbackDisabled_r17, sc->downlinkHARQ_FeedbackDisabled_r17);
|
||||
free(sc->xOverhead_PDSCH);
|
||||
free(sc->nrofHARQ_ProcessesForPDSCH);
|
||||
free(sc->rateMatching_PUSCH);
|
||||
|
||||
@@ -2341,7 +2341,17 @@ bool get_downlink_ack(NR_UE_MAC_INST_t *mac, frame_t frame, int slot, PUCCH_sche
|
||||
"Value of pucch_resource_indicator %d not matching with what set before %d (Possibly due to a false DCI) \n",
|
||||
current_harq->pucch_resource_indicator,
|
||||
res_ind);
|
||||
else{
|
||||
else {
|
||||
if (!current_harq->ack_received)
|
||||
LOG_E(NR_MAC, "DLSCH ACK/NACK reporting initiated for harq pid %d before DLSCH decoding completed\n", dl_harq_pid);
|
||||
|
||||
if (get_FeedbackDisabled(mac->sc_info.downlinkHARQ_FeedbackDisabled_r17, dl_harq_pid)) {
|
||||
LOG_D(NR_MAC, "skipping DLSCH ACK/NACK reporting for harq pid %d\n", dl_harq_pid);
|
||||
current_harq->active = false;
|
||||
current_harq->ack_received = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (current_harq->dai_cumul == 0) {
|
||||
LOG_E(NR_MAC,"PUCCH Downlink DAI is invalid\n");
|
||||
return false;
|
||||
@@ -2356,7 +2366,6 @@ bool get_downlink_ack(NR_UE_MAC_INST_t *mac, frame_t frame, int slot, PUCCH_sche
|
||||
current_harq->active = false;
|
||||
current_harq->ack_received = false;
|
||||
} else {
|
||||
LOG_E(NR_MAC, "DLSCH ACK/NACK reporting initiated for harq pid %d before DLSCH decoding completed\n", dl_harq_pid);
|
||||
ack_data[code_word][dai_index] = 0;
|
||||
}
|
||||
dai[code_word][dai_index] = (dai_index % 4) + 1; // value between 1 and 4
|
||||
|
||||
Reference in New Issue
Block a user