diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools.c b/openair1/PHY/LTE_TRANSPORT/dci_tools.c
index aa2daf8ebb2440efaf9091a8f899b360f4441f05..3624d67af11201bb90aba23813611b7111241c67 100644
--- a/openair1/PHY/LTE_TRANSPORT/dci_tools.c
+++ b/openair1/PHY/LTE_TRANSPORT/dci_tools.c
@@ -1260,6 +1260,11 @@ int generate_eNB_dlsch_params_from_dci(int frame,
       dlsch0_harq->TBS         = TBStable[get_I_TBS(dlsch0_harq->mcs)][NPRB-1];
 
     }
+    else
+    {
+    	LOG_E(PHY,"DL Received HarqReTx round=%d mcs=%d rballoc=%d rv=%d \n",
+    			dlsch0_harq->round,mcs,rballoc,rv);
+    }
 
 
     dlsch[0]->current_harq_pid = harq_pid;
@@ -4143,6 +4148,20 @@ int generate_ue_dlsch_params_from_dci(int frame,
 
     dlsch0_harq->DCINdi = ndi;
 
+    // this a retransmission
+    if(dlsch0_harq->round)
+    {
+	// compare old TBS to new TBS
+    	if(dlsch0_harq->TBS != TBStable[get_I_TBS(mcs)][NPRB-1])
+    	{
+    		// this is an eNB issue
+    		// retransmisison but old and new TBS are different !!!
+    		// work around, consider it as a new transmission
+    		LOG_E(PHY,"Format1A Retransmission but TBS are different: consider it as new transmission !!! \n");
+    		dlsch0_harq->round = 0;
+    	}
+    }
+
     dlsch0_harq->mcs = mcs;
     if ((rnti==si_rnti) || (rnti==p_rnti) || (rnti==ra_rnti)) {
       dlsch0_harq->TBS = TBStable[mcs][NPRB-1];
@@ -4452,6 +4471,20 @@ int generate_ue_dlsch_params_from_dci(int frame,
 
     dlsch0_harq->mcs         = mcs;
 
+    // this a retransmission
+    if(dlsch0_harq->round)
+    {
+    	// compare old TBS to new TBS
+    	if(dlsch0_harq->TBS != TBStable[get_I_TBS(mcs)][NPRB-1])
+    	{
+    		// this is an eNB issue
+    		// retransmisison but old and new TBS are different !!!
+    		// work around, consider it as a new transmission
+    		LOG_E(PHY,"Format1 Retransmission but TBS are different: consider it as new transmission !!! \n");
+    		dlsch0_harq->round = 0;
+    	}
+    }
+
     dlsch0_harq->TBS         = TBStable[get_I_TBS(mcs)][NPRB-1];
     if (mcs <= 28)
       dlsch0_harq->Qm          = get_Qm(mcs);
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
index f4ab4c092442e30983641d397f5d7b520912b166..c7cd5ab52f260459ce7e56ae7413f3441ffda95a 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
@@ -249,7 +249,12 @@ uint32_t  dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
     tc = phy_threegpplte_turbo_decoder16;
   }
   else
-    tc = phy_threegpplte_turbo_decoder8;
+  {
+	  AssertFatal (harq_process->TBS >= 256 , "Mismatch flag nbRB=%d TBS=%d mcs=%d Qm=%d RIV=%d round=%d \n",
+			  harq_process->nb_rb, harq_process->TBS,harq_process->mcs,harq_process->Qm,harq_process->rvidx,harq_process->round);
+	    tc = phy_threegpplte_turbo_decoder8;
+  }
+
 
   //  nb_rb = dlsch->nb_rb;
 
@@ -448,6 +453,11 @@ uint32_t  dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
 #if 1
     if (err_flag == 0) {
 
+    	if (llr8_flag) {
+    		AssertFatal (Kr >= 256, "turbo algo issue Kr=%d cb_cnt=%d C=%d nbRB=%d TBSInput=%d TBSHarq=%d TBSplus24=%d mcs=%d Qm=%d RIV=%d round=%d\n",
+    				Kr,r,harq_process->C,harq_process->nb_rb,A,harq_process->TBS,harq_process->B,harq_process->mcs,harq_process->Qm,harq_process->rvidx,harq_process->round);
+    	}
+
       start_meas(dlsch_turbo_decoding_stats);
       ret = tc
             (&harq_process->d[r][96],
diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c
index 756f13f92339eb8ec1cee2e7fe663bc6b085f169..55e768646234b16ee10d1a4245cb4c1ca62f998b 100644
--- a/openair1/SCHED/phy_procedures_lte_ue.c
+++ b/openair1/SCHED/phy_procedures_lte_ue.c
@@ -2579,7 +2579,7 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
       if (generate_ue_dlsch_params_from_dci(frame_rx,
 					    subframe_rx,
 					    (void *)&dci_alloc_rx[i].dci_pdu,
-					    SI_RNTI,
+						P_RNTI,
 					    dci_alloc_rx[i].format,
 					    &ue->dlsch_SI[eNB_id],
 					    &ue->frame_parms,
@@ -3072,7 +3072,7 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
 			   subframe_rx,
 			   harq_pid,
 			   pdsch==PDSCH?1:0,
-			   dlsch0->harq_processes[harq_pid]->nb_rb>10?1:0);
+			   dlsch0->harq_processes[harq_pid]->TBS>256?1:0);
       stop_meas(&ue->dlsch_decoding_stats);
     }
 	
diff --git a/openair1/SCHED/pucch_pc.c b/openair1/SCHED/pucch_pc.c
index 5afd57e6a0f9a54ad1be5e09e2d74acc1e04bb07..2795fe65a931d0c0f3c88764e59ac37b54876938 100644
--- a/openair1/SCHED/pucch_pc.c
+++ b/openair1/SCHED/pucch_pc.c
@@ -88,7 +88,7 @@ int8_t pucch_power_cntl(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t subframe,ui
   }
 
   if (pucch_fmt!=pucch_format1) {
-    LOG_I(PHY,"[UE  %d][PDSCH %x] frame %d, subframe %d: Po_PUCCH %d dBm : Po_NOMINAL_PUCCH %d dBm, PL %d dB, g_pucch %d dB\n",
+    LOG_D(PHY,"[UE  %d][PDSCH %x] frame %d, subframe %d: Po_PUCCH %d dBm : Po_NOMINAL_PUCCH %d dBm, PL %d dB, g_pucch %d dB\n",
           ue->Mod_id,
           ue->dlsch[eNB_id][0]->rnti,proc->frame_tx,subframe,
           Po_PUCCH,
@@ -96,7 +96,7 @@ int8_t pucch_power_cntl(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t subframe,ui
           get_PL(ue->Mod_id,ue->CC_id,eNB_id),
           ue->dlsch[eNB_id][0]->g_pucch);
   } else {
-    LOG_I(PHY,"[UE  %d][SR %x] frame %d, subframe %d: Po_PUCCH %d dBm : Po_NOMINAL_PUCCH %d dBm, PL %d dB g_pucch %d dB\n",
+    LOG_D(PHY,"[UE  %d][SR %x] frame %d, subframe %d: Po_PUCCH %d dBm : Po_NOMINAL_PUCCH %d dBm, PL %d dB g_pucch %d dB\n",
           ue->Mod_id,
           ue->dlsch[eNB_id][0]->rnti,proc->frame_tx,subframe,
           Po_PUCCH,