diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c index 3b097e5e32..094d7aafe5 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c @@ -656,6 +656,7 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP, const rnti_t rntiP, uint8_t *sduP, const uint32_t sdu_lenP, + const int8_t harq_pid, const uint16_t timing_advance, const uint8_t ul_cqi, const uint16_t rssi) @@ -673,7 +674,6 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP, if (UE && UE_waiting_CFRA_msg3 == false) { NR_UE_sched_ctrl_t *UE_scheduling_control = &UE->UE_sched_ctrl; - const int8_t harq_pid = UE_scheduling_control->feedback_ul_harq.head; if (sduP) T(T_GNB_MAC_UL_PDU_WITH_DATA, T_INT(gnb_mod_idP), T_INT(CC_idP), @@ -951,13 +951,14 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP, const rnti_t rntiP, uint8_t *sduP, const uint32_t sdu_lenP, + const int8_t harq_pid, const uint16_t timing_advance, const uint8_t ul_cqi, const uint16_t rssi) { gNB_MAC_INST *gNB_mac = RC.nrmac[gnb_mod_idP]; NR_SCHED_LOCK(&gNB_mac->sched_lock); - _nr_rx_sdu(gnb_mod_idP, CC_idP, frameP, slotP, rntiP, sduP, sdu_lenP, timing_advance, ul_cqi, rssi); + _nr_rx_sdu(gnb_mod_idP, CC_idP, frameP, slotP, rntiP, sduP, sdu_lenP, harq_pid, timing_advance, ul_cqi, rssi); NR_SCHED_UNLOCK(&gNB_mac->sched_lock); } diff --git a/openair2/LAYER2/NR_MAC_gNB/mac_proto.h b/openair2/LAYER2/NR_MAC_gNB/mac_proto.h index fe2fec8ab1..5c998f4d2a 100644 --- a/openair2/LAYER2/NR_MAC_gNB/mac_proto.h +++ b/openair2/LAYER2/NR_MAC_gNB/mac_proto.h @@ -344,6 +344,7 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP, const rnti_t rntiP, uint8_t * sduP, const uint32_t sdu_lenP, + const int8_t harq_pid, const uint16_t timing_advance, const uint8_t ul_cqi, const uint16_t rssi); diff --git a/openair2/NR_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_PHY_INTERFACE/NR_IF_Module.c index 869c0f9882..c685bb47af 100644 --- a/openair2/NR_PHY_INTERFACE/NR_IF_Module.c +++ b/openair2/NR_PHY_INTERFACE/NR_IF_Module.c @@ -192,6 +192,9 @@ void handle_nr_ulsch(NR_UL_IND_t *UL_info) AssertFatal(crc->rnti == rx->rnti, "mis-match between CRC RNTI %04x and RX RNTI %04x\n", crc->rnti, rx->rnti); + AssertFatal(crc->harq_id == rx->harq_id, "mis-match between CRC HARQ ID %04x and RX HARQ ID %04x\n", + crc->harq_id, rx->harq_id); + LOG_D(NR_MAC, "%4d.%2d Calling rx_sdu (CRC %s/tb_crc_status %d)\n", UL_info->frame, @@ -207,6 +210,7 @@ void handle_nr_ulsch(NR_UL_IND_t *UL_info) crc->rnti, crc->tb_crc_status ? NULL : rx->pdu, rx->pdu_length, + crc->harq_id, crc->timing_advance, crc->ul_cqi, crc->rssi);