fix for UCI on PUSCH fapi PDU configuration in case of only HARQ bits
This commit is contained in:
@@ -639,23 +639,21 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
|
||||
pusch_config_pdu->pusch_uci.csi_part1_payload = csi_report->part1_payload;
|
||||
pusch_config_pdu->pusch_uci.csi_part2_bit_length = csi_report->p2_bits;
|
||||
pusch_config_pdu->pusch_uci.csi_part2_payload = csi_report->part2_payload;
|
||||
AssertFatal(pusch_Config && pusch_Config->uci_OnPUSCH,
|
||||
"UCI on PUSCH need to be configured\n");
|
||||
pusch_config_pdu->pusch_uci.alpha_scaling = pusch_Config->uci_OnPUSCH->choice.setup->scaling;
|
||||
AssertFatal(pusch_Config->uci_OnPUSCH->choice.setup->betaOffsets &&
|
||||
pusch_Config->uci_OnPUSCH->choice.setup->betaOffsets->present == NR_UCI_OnPUSCH__betaOffsets_PR_semiStatic,
|
||||
AssertFatal(pusch_Config && pusch_Config->uci_OnPUSCH, "UCI on PUSCH need to be configured\n");
|
||||
NR_UCI_OnPUSCH_t *onPusch = pusch_Config->uci_OnPUSCH->choice.setup;
|
||||
AssertFatal(onPusch &&
|
||||
onPusch->betaOffsets &&
|
||||
onPusch->betaOffsets->present == NR_UCI_OnPUSCH__betaOffsets_PR_semiStatic,
|
||||
"Only semistatic beta offset is supported\n");
|
||||
NR_BetaOffsets_t *beta_offsets = pusch_Config->uci_OnPUSCH->choice.setup->betaOffsets->choice.semiStatic;
|
||||
pusch_config_pdu->pusch_uci.beta_offset_harq_ack = pusch_config_pdu->pusch_uci.harq_ack_bit_length > 2 ?
|
||||
(pusch_config_pdu->pusch_uci.harq_ack_bit_length < 12 ? *beta_offsets->betaOffsetACK_Index2 :
|
||||
*beta_offsets->betaOffsetACK_Index3) :
|
||||
*beta_offsets->betaOffsetACK_Index1;
|
||||
NR_BetaOffsets_t *beta_offsets = onPusch->betaOffsets->choice.semiStatic;
|
||||
|
||||
pusch_config_pdu->pusch_uci.beta_offset_csi1 = pusch_config_pdu->pusch_uci.csi_part1_bit_length < 12 ?
|
||||
*beta_offsets->betaOffsetCSI_Part1_Index1 :
|
||||
*beta_offsets->betaOffsetCSI_Part1_Index2;
|
||||
pusch_config_pdu->pusch_uci.beta_offset_csi2 = pusch_config_pdu->pusch_uci.csi_part2_bit_length < 12 ?
|
||||
*beta_offsets->betaOffsetCSI_Part2_Index1 :
|
||||
*beta_offsets->betaOffsetCSI_Part2_Index2;
|
||||
pusch_config_pdu->pusch_uci.alpha_scaling = onPusch->scaling;
|
||||
}
|
||||
else {
|
||||
pusch_config_pdu->pusch_uci.csi_part1_bit_length = 0;
|
||||
@@ -2153,6 +2151,19 @@ static bool schedule_uci_on_pusch(NR_UE_MAC_INST_t *mac, frame_t frame_tx, int s
|
||||
if (pucch->n_harq > 0) {
|
||||
pusch_pdu->pusch_uci.harq_ack_bit_length = pucch->n_harq;
|
||||
pusch_pdu->pusch_uci.harq_payload = pucch->ack_payload;
|
||||
NR_PUSCH_Config_t *pusch_Config = mac->current_UL_BWP->pusch_Config;
|
||||
AssertFatal(pusch_Config && pusch_Config->uci_OnPUSCH, "UCI on PUSCH need to be configured\n");
|
||||
NR_UCI_OnPUSCH_t *onPusch = pusch_Config->uci_OnPUSCH->choice.setup;
|
||||
AssertFatal(onPusch &&
|
||||
onPusch->betaOffsets &&
|
||||
onPusch->betaOffsets->present == NR_UCI_OnPUSCH__betaOffsets_PR_semiStatic,
|
||||
"Only semistatic beta offset is supported\n");
|
||||
NR_BetaOffsets_t *beta_offsets = onPusch->betaOffsets->choice.semiStatic;
|
||||
pusch_pdu->pusch_uci.beta_offset_harq_ack = pucch->n_harq > 2 ?
|
||||
(pucch->n_harq < 12 ? *beta_offsets->betaOffsetACK_Index2 :
|
||||
*beta_offsets->betaOffsetACK_Index3) :
|
||||
*beta_offsets->betaOffsetACK_Index1;
|
||||
pusch_pdu->pusch_uci.alpha_scaling = onPusch->scaling;
|
||||
mux_done = true;
|
||||
}
|
||||
if (pusch_pdu->pusch_uci.csi_part1_bit_length == 0 && pusch_pdu->pusch_uci.csi_part2_bit_length == 0) {
|
||||
|
||||
Reference in New Issue
Block a user