diff --git a/executables/nr-uesoftmodem.c b/executables/nr-uesoftmodem.c
index 95ec330055357dcbcef59ae610dc399a89438d23..0655af8de02e26a977f6a6c7e03e0c97514c6eea 100644
--- a/executables/nr-uesoftmodem.c
+++ b/executables/nr-uesoftmodem.c
@@ -673,11 +673,11 @@ int main( int argc, char **argv ) {
   set_taus_seed (0);
   tpool_t pool;
   Tpool = &pool;
-  char params[]="-1,-1,-1"; 
+  char params[]="-1,-1"; 
   initTpool(params, Tpool, false);
   tpool_t pool_dl;
   Tpool_dl = &pool_dl;
-  char params_dl[]="-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1"; 
+  char params_dl[]="-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1"; 
   initTpool(params_dl, Tpool_dl, false);
   cpuf=get_cpu_freq_GHz();
   itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info);
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
index c1ccaf2f1ee59f4fb1c294762e620b1730cd10e4..ec35e762725aa984adaac09af20f564ca201cd0e 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
@@ -775,16 +775,16 @@ uint32_t  nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
   int16_t z [68*384];
   int8_t l [68*384];
   //__m128i l;
-  int16_t inv_d [68*384];
+  //int16_t inv_d [68*384];
   //int16_t *p_invd =&inv_d;
   uint8_t kb, kc;
   uint8_t Ilbrm = 1;
   uint32_t Tbslbrm = 950984;
   uint16_t nb_rb = 30;
   double Coderate = 0.0;
-  nfapi_nr_config_request_t *cfg = &phy_vars_ue->nrUE_config;
-  uint8_t dmrs_type = cfg->pdsch_config.dmrs_type.value;
-  uint8_t nb_re_dmrs = (dmrs_type==NFAPI_NR_DMRS_TYPE1)?6:4;
+  //nfapi_nr_config_request_t *cfg = &phy_vars_ue->nrUE_config;
+  //uint8_t dmrs_type = cfg->pdsch_config.dmrs_type.value;
+  uint8_t nb_re_dmrs = 6; //(dmrs_type==NFAPI_NR_DMRS_TYPE1)?6:4;
   uint16_t length_dmrs = 1; //cfg->pdsch_config.dmrs_max_length.value;
 
   uint32_t i,j;
@@ -1034,7 +1034,7 @@ uint32_t  nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
     if (harq_process->Nl < Nl)
       Nl = harq_process->Nl;
 
-    Tbslbrm = nr_compute_tbslbrm(rel15.mcs_table,nb_rb,Nl,dlsch->harq_processes[harq_pid]->C);
+    Tbslbrm = nr_compute_tbslbrm(harq_process->mcs_table,nb_rb,harq_process->Nl,harq_process->C);
 
     if (nr_rate_matching_ldpc_rx(Ilbrm,
                                  Tbslbrm,
@@ -1323,7 +1323,7 @@ uint32_t  nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
 #endif
 
 #ifdef UE_DLSCH_PARALLELISATION
-void *nr_dlsch_decoding_process(void *arg)
+void nr_dlsch_decoding_process(void *arg)
 {
 	nr_rxtx_thread_data_t *rxtxD= (nr_rxtx_thread_data_t *)arg;
     UE_nr_rxtx_proc_t *proc = &rxtxD->proc;
@@ -1340,8 +1340,8 @@ void *nr_dlsch_decoding_process(void *arg)
     int16_t z [68*384];
     int8_t l [68*384];
     //__m128i l;
-    int16_t inv_d [68*384];
-    int16_t *p_invd =&inv_d;
+    //int16_t inv_d [68*384];
+    //int16_t *p_invd =&inv_d;
     uint8_t kb, kc;
     uint8_t Ilbrm = 1;
     uint32_t Tbslbrm = 950984;
@@ -1463,6 +1463,7 @@ void *nr_dlsch_decoding_process(void *arg)
     }
   }    
 
+  harq_process->round  =0;
   if (harq_process->round == 0) {
     // This is a new packet, so compute quantities regarding segmentation
 	if (A > 3824)
@@ -1482,8 +1483,9 @@ void *nr_dlsch_decoding_process(void *arg)
     p_decParams->Z = harq_process->Z;
 
     }
+    
+    //printf("round %d Z %d K %d BG %d\n", harq_process->round, p_decParams->Z, harq_process->K, p_decParams->BG);
 
-  
 
   p_decParams->numMaxIter = dlsch->max_ldpc_iterations;
   p_decParams->outMode= 0;
@@ -1654,9 +1656,9 @@ void *nr_dlsch_decoding_process(void *arg)
 #endif
 //      LOG_D(PHY,"AbsSubframe %d.%d Start turbo segment %d/%d \n",frame%1024,subframe,r,harq_process->C-1);
 
-        for (int cnt =0; cnt < (kc-2)*p_decParams->Z; cnt++){
+        /*for (int cnt =0; cnt < (kc-2)*p_decParams->Z; cnt++){
               inv_d[cnt] = (1)*harq_process->d[r][cnt];
-              }
+              }*/
 
         memset(pv,0,2*p_decParams->Z*sizeof(int16_t));
         //memset(pl,0,2*p_decParams->Z*sizeof(int8_t));
@@ -1746,11 +1748,9 @@ void *dlsch_thread(void *arg) {
   int nbDlProcessing=0;
   initNotifiedFIFO_nothreadSafe(&freeBlocks);
 
-  for (int i=0; i<RX_NB_TH_DL+1; i++)
+  for (int i=0; i<RX_NB_TH_DL+1; i++){
     pushNotifiedFIFO_nothreadSafe(&freeBlocks,
-                                  newNotifiedFIFO_elt(sizeof(nr_rxtx_thread_data_t), 0,&nf,nr_dlsch_decoding_process));
-    printf("dlsch_thread\n");
-    displayList(&freeBlocks);
+                                  newNotifiedFIFO_elt(sizeof(nr_rxtx_thread_data_t), 0,&nf,nr_dlsch_decoding_process));}
 
   while (!oai_exit) {
 
@@ -1772,6 +1772,7 @@ void *dlsch_thread(void *arg) {
 
   } // while !oai_exit
 
+  return NULL;
 }
 
 #endif
diff --git a/openair1/PHY/defs_common.h b/openair1/PHY/defs_common.h
index d0086969295afba8cb0fc1bd8508d5d59185fe0d..2809040f7115f567fd44fa8c35d080fe35ac302f 100644
--- a/openair1/PHY/defs_common.h
+++ b/openair1/PHY/defs_common.h
@@ -76,9 +76,9 @@
 
 #include "defs_RU.h"
 
-#define RX_NB_TH_MAX 3
-#define RX_NB_TH 3
-#define RX_NB_TH_DL 12
+#define RX_NB_TH_MAX 2
+#define RX_NB_TH 2
+#define RX_NB_TH_DL 14
 
 #define LTE_SLOTS_PER_SUBFRAME 2