diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools.c b/openair1/PHY/LTE_TRANSPORT/dci_tools.c index e3fef45815be31e979fe2e10ce3943aec5549fc2..5fa69b32034a351914acbcdc283846d678b7c682 100644 --- a/openair1/PHY/LTE_TRANSPORT/dci_tools.c +++ b/openair1/PHY/LTE_TRANSPORT/dci_tools.c @@ -4756,7 +4756,6 @@ void extract_dci2A_info(uint8_t N_RB_DL, lte_frame_type_t frame_type, uint8_t nb pdci_info_extarcted->tpmi = tpmi; } -#define DEBUG_DL_DECODING int check_dci_format1_1a_coherency(DCI_format_t dci_format, uint8_t N_RB_DL, uint16_t rnti, @@ -4776,7 +4775,19 @@ int check_dci_format1_1a_coherency(DCI_format_t dci_format, uint8_t rah = pdci_info_extarcted->rah; uint8_t NPRB = 0; - uint32_t RIV_max = 0; + long long int RIV_max = 0; + +#ifdef DEBUG_DCI + LOG_I(PHY,"[DCI-FORMAT-1-1A] dci_format %d\n", dci_format); + LOG_I(PHY,"[DCI-FORMAT-1-1A] rnti %x\n", rnti); + LOG_I(PHY,"[DCI-FORMAT-1-1A] harq_pid %d\n", harq_pid); + LOG_I(PHY,"[DCI-FORMAT-1-1A] rah %d\n", rah); + LOG_I(PHY,"[DCI-FORMAT-1-1A] rballoc %x\n", rballoc); + LOG_I(PHY,"[DCI-FORMAT-1-1A] mcs1 %d\n", mcs1); + LOG_I(PHY,"[DCI-FORMAT-1-1A] rv1 %d\n", rv1); + LOG_I(PHY,"[DCI-FORMAT-1-1A] ndi1 %d\n", ndi1); + LOG_I(PHY,"[DCI-FORMAT-1-1A] TPC %d\n", TPC); +#endif // I- check dci content minimum coherency if( ((rnti==si_rnti) || (rnti==p_rnti) || (rnti==ra_rnti)) && harq_pid > 0) @@ -4835,19 +4846,31 @@ int check_dci_format1_1a_coherency(DCI_format_t dci_format, switch (N_RB_DL) { case 6: NPRB = RIV2nb_rb_LUT6[rballoc];//NPRB; - RIV_max = RIV_max6; + if(rah) + RIV_max = RIV_max6; + else + RIV_max = 0x3F; break; case 25: NPRB = RIV2nb_rb_LUT25[rballoc];//NPRB; - RIV_max = RIV_max25; + if(rah) + RIV_max = RIV_max25; + else + RIV_max = 0x1FFF; break; case 50: NPRB = RIV2nb_rb_LUT50[rballoc];//NPRB; - RIV_max = RIV_max50; + if(rah) + RIV_max = RIV_max50; + else + RIV_max = 0x1FFFF; break; case 100: NPRB = RIV2nb_rb_LUT100[rballoc];//NPRB; - RIV_max = RIV_max100; + if(rah) + RIV_max = RIV_max100; + else + RIV_max = 0x1FFFFFF; break; } } @@ -5871,6 +5894,9 @@ int generate_ue_dlsch_params_from_dci(int frame, case format1A: { // extract dci infomation +#ifdef DEBUG_DCI + LOG_I(PHY,"[DCI-FORMAT-1A] AbsSubframe %d.%d extarct dci info \n", frame, subframe); +#endif extract_dci1A_info(frame_parms->N_RB_DL, frame_type, dci_pdu, @@ -5881,7 +5907,9 @@ int generate_ue_dlsch_params_from_dci(int frame, dlsch0 = dlsch[0]; dlsch0->active = 0; dlsch0_harq = dlsch[0]->harq_processes[dci_info_extarcted.harq_pid]; - +#ifdef DEBUG_DCI + LOG_I(PHY,"[DCI-FORMAT-1A] AbsSubframe %d.%d check dci coherency \n", frame, subframe); +#endif status = check_dci_format1_1a_coherency(format1A, frame_parms->N_RB_DL, rnti, @@ -5895,6 +5923,9 @@ int generate_ue_dlsch_params_from_dci(int frame, return(-1); // dci is correct ==> update internal structure and prepare dl decoding +#ifdef DEBUG_DCI + LOG_I(PHY,"[DCI-FORMAT-1A] AbsSubframe %d.%d prepare dl decoding \n", frame, subframe); +#endif prepare_dl_decoding_format1_1A(format1A, frame_parms->N_RB_DL, &dci_info_extarcted, @@ -5963,6 +5994,9 @@ int generate_ue_dlsch_params_from_dci(int frame, case format1: { // extract dci infomation +#ifdef DEBUG_DCI + LOG_I(PHY,"[DCI-FORMAT-1] AbsSubframe %d.%d extarct dci info \n", frame, subframe); +#endif extract_dci1_info(frame_parms->N_RB_DL, frame_type, dci_pdu, @@ -5973,6 +6007,9 @@ int generate_ue_dlsch_params_from_dci(int frame, dlsch0->active = 0; dlsch0_harq = dlsch[0]->harq_processes[dci_info_extarcted.harq_pid]; +#ifdef DEBUG_DCI + LOG_I(PHY,"[DCI-FORMAT-1] AbsSubframe %d.%d check dci coherency \n", frame, subframe); +#endif status = check_dci_format1_1a_coherency(format1, frame_parms->N_RB_DL, rnti, @@ -5986,6 +6023,9 @@ int generate_ue_dlsch_params_from_dci(int frame, return(-1); // dci is correct ==> update internal structure and prepare dl decoding +#ifdef DEBUG_DCI + LOG_I(PHY,"[DCI-FORMAT-1] AbsSubframe %d.%d prepare dl decoding \n", frame, subframe); +#endif prepare_dl_decoding_format1_1A(format1, frame_parms->N_RB_DL, &dci_info_extarcted,