From 4f884db3d65d122fd2c57bf84fa77c1cc120161b Mon Sep 17 00:00:00 2001 From: francescomani Date: Fri, 22 Mar 2024 09:48:13 +0100 Subject: [PATCH] correct use of dataScramblingID for PDSCH at UE --- .../nfapi/public_inc/fapi_nr_ue_interface.h | 1 + openair1/SCHED_NR_UE/phy_procedures_nr_ue.c | 4 ++-- openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c | 18 ++++++++++++++---- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h b/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h index f370927378..f0c31b9682 100644 --- a/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h +++ b/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h @@ -494,6 +494,7 @@ typedef struct { uint32_t tbslbrm; uint8_t nscid; uint16_t dlDmrsScramblingId; + uint16_t dlDataScramblingId; uint16_t pduBitmap; uint32_t k1_feedback; uint8_t ldpcBaseGraph; diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c index 7bb1683507..0c253bb198 100644 --- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c +++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c @@ -691,7 +691,7 @@ static bool nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t * nr_dlsch_unscrambling(llr[0], dl_harq0->G, 0, - ue->frame_parms.Nid_cell, + dlsch[0].dlsch_config.dlDataScramblingId, dlsch[0].rnti); @@ -787,7 +787,7 @@ static bool nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t * nr_dlsch_unscrambling(llr[1], dl_harq1->G, 0, - ue->frame_parms.Nid_cell, + dlsch[1].dlsch_config.dlDataScramblingId, dlsch[1].rnti); stop_meas(&ue->dlsch_unscrambling_stats); diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c index 3ef15ce4d4..a926429d2b 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c @@ -189,10 +189,8 @@ int get_rnti_type(const NR_UE_MAC_INST_t *mac, const uint16_t rnti) } else { AssertFatal(1 == 0, "Not identified/handled rnti %d \n", rnti); } - - LOG_D(MAC, "Returning rnti_type %s \n", rnti_types(rnti_type)); - - return rnti_type; + LOG_D(MAC, "Returning rnti_type %s \n", rnti_types(rnti_type)); + return rnti_type; } void nr_ue_decode_mib(NR_UE_MAC_INST_t *mac, int cc_id) @@ -664,6 +662,13 @@ static int nr_ue_process_dci_dl_10(NR_UE_MAC_INST_t *mac, else dlsch_pdu->dlDmrsScramblingId = mac->physCellId; + if (get_rnti_type(mac, dci_ind->rnti) == TYPE_C_RNTI_ + && dci_ind->ss_type != NR_SearchSpace__searchSpaceType_PR_common + && pdsch_config->dataScramblingIdentityPDSCH) + dlsch_pdu->dlDataScramblingId = *pdsch_config->dataScramblingIdentityPDSCH; + else + dlsch_pdu->dlDataScramblingId = mac->physCellId; + /* dmrs symbol positions*/ dlsch_pdu->dlDmrsSymbPos = fill_dmrs_mask(pdsch_config, NR_DL_DCI_FORMAT_1_0, @@ -975,6 +980,11 @@ static int nr_ue_process_dci_dl_11(NR_UE_MAC_INST_t *mac, return -1; } + if (pdsch_Config->dataScramblingIdentityPDSCH) + dlsch_pdu->dlDataScramblingId = *pdsch_Config->dataScramblingIdentityPDSCH; + else + dlsch_pdu->dlDataScramblingId = mac->physCellId; + dlsch_pdu->dmrsConfigType = dl_dmrs_config->dmrs_Type == NULL ? NFAPI_NR_DMRS_TYPE1 : NFAPI_NR_DMRS_TYPE2; /* TODO: fix number of DM-RS CDM groups without data according to subclause 5.1.6.2 of 3GPP TS 38.214,