diff --git a/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c b/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
index 277e1918f21dbb79ba3870c0d88ee9efffe0b30d..89cb3756c46c862b08d7bb774b72a70c0e458c09 100644
--- a/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
+++ b/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
@@ -207,20 +207,6 @@ uint8_t extract_cqi_crc(uint8_t *cqi,uint8_t CQI_LENGTH)
 
 
 
-/*int ulsch_decoding_data_all(PHY_VARS_eNB *eNB,int UE_id,int harq_pid,int llr8_flag) 
-{
-	int value = 0;
-	if()
-	{
-		value = ulsch_decoding_data_2thread(eNB,UE_id,harq_pid,llr8_flag);
-	}
-	else
-	{
-		value = ulsch_decoding_data(eNB,UE_id,harq_pid,llr8_flag);
-	}
-	return value;
-}*/
-
 
 int ulsch_decoding_data_2thread0(td_params* tdp) {
 
@@ -429,6 +415,9 @@ void *td_thread(void *param) {
   pthread_setname_np( pthread_self(), "td processing");
   PHY_VARS_eNB *eNB = ((td_params*)param)->eNB;
   eNB_proc_t *proc  = &eNB->proc;
+  
+  pthread_setname_np( pthread_self(),"td processing");
+  LOG_I(PHY,"thread td created id=%ld\n", syscall(__NR_gettid));
 
   while (!oai_exit) {
 
@@ -820,6 +809,22 @@ int ulsch_decoding_data(PHY_VARS_eNB *eNB,int UE_id,int harq_pid,int llr8_flag)
   return(ret);
 }
 
+int ulsch_decoding_data_all(PHY_VARS_eNB *eNB,int UE_id,int harq_pid,int llr8_flag) 
+{
+  int ret = 0;
+  LTE_eNB_ULSCH_t *ulsch = eNB->ulsch[UE_id];
+  LTE_UL_eNB_HARQ_t *ulsch_harq = ulsch->harq_processes[harq_pid];
+  if(ulsch_harq->C>3)
+  {
+    ret = ulsch_decoding_data_2thread(eNB,UE_id,harq_pid,llr8_flag);
+  }
+  else
+  {
+    ret = ulsch_decoding_data(eNB,UE_id,harq_pid,llr8_flag);
+  }
+  return ret;
+}
+
 static inline unsigned int lte_gold_unscram(unsigned int *x1, unsigned int *x2, unsigned char reset) __attribute__((always_inline));
 static inline unsigned int lte_gold_unscram(unsigned int *x1, unsigned int *x2, unsigned char reset)
 {
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_phytest.c b/openair2/LAYER2/MAC/eNB_scheduler_phytest.c
index 348fb2be4609c045abf22dbe34782f07cf5af167..203358e0e18c7e152d72f68586f27e57aba43505 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_phytest.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_phytest.c
@@ -71,7 +71,7 @@ schedule_ue_spec_phy_test(
   uint16_t                       rnti      = 0x1235;
   uint32_t                       rb_alloc  = 0x1FFFFFFF;
   int32_t                        tpc       = 1;
-  int32_t                        mcs       = 22;
+  int32_t                        mcs       = 28;
   int32_t                        cqi       = 15;
   int32_t                        ndi       = subframeP/5;
   int32_t                        dai       = 0;
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index 1bd4f751f979a96e522b9774a15466c1514fe254..636fa9d9cf8fe9de81cf6e136cd95f6a3539769b 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -719,7 +719,7 @@ void init_eNB_proc(int inst) {
   PHY_VARS_eNB *eNB;
   eNB_proc_t *proc;
   eNB_rxtx_proc_t *proc_rxtx;
-  pthread_attr_t *attr0=NULL,*attr1=NULL,*attr_prach=NULL,*attr_te=NULL,*attr_te1=NULL;//*attr_td=NULL;
+  pthread_attr_t *attr0=NULL,*attr1=NULL,*attr_prach=NULL,*attr_te=NULL,*attr_te1=NULL,*attr_td=NULL;
 #ifdef Rel14
   pthread_attr_t *attr_prach_br=NULL;
 #endif
@@ -783,7 +783,7 @@ void init_eNB_proc(int inst) {
     //    attr_td     = &proc->attr_td;
     //    attr_te     = &proc->attr_te; 
 #endif
-	//attr_td     = &proc->attr_td;
+	attr_td     = &proc->attr_td;
 	attr_te     = &proc->attr_te[0];
 	attr_te1    = &proc->attr_te[1];
 	pthread_create( &proc_rxtx[0].pthread_rxtx, attr0, eNB_thread_rxtx, proc );
@@ -809,7 +809,7 @@ void init_eNB_proc(int inst) {
 	
 	//////////////////////////////////////need to modified////////////////*****
 	init_te_thread(eNB,attr_te,attr_te1);
-	//init_td_thread(eNB,attr_td);
+	init_td_thread(eNB,attr_td);
 	if (opp_enabled == 1) pthread_create(&proc->process_stats_thread,NULL,process_stats_thread,(void*)eNB);
 
     
@@ -1070,7 +1070,7 @@ void init_eNB(int single_thread_flag,int wait_for_sync) {
 #endif
 
 
-      eNB->td                   = ulsch_decoding_data;//(get_nprocs()<=4) ? ulsch_decoding_data : ulsch_decoding_data_2thread;
+      eNB->td                   = ulsch_decoding_data_all;//(get_nprocs()<=4) ? ulsch_decoding_data : ulsch_decoding_data_2thread;
       eNB->te                   = dlsch_encoding_all;//(get_nprocs()<=4) ? dlsch_encoding : dlsch_encoding_2threads;
 
       
diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index fd59e1ae6f8285673cdd41a24420515c4ea750bd..8533b0500156e6a9cd07bf2d712963a57b8e878d 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -689,7 +689,7 @@ static void* emulatedRF_thread(void* param) {
   int microsec = 500; // length of time to sleep, in miliseconds
   struct timespec req = {0};
   req.tv_sec = 0;
-  req.tv_nsec = microsec * 1000L;
+  req.tv_nsec = ((microsec * 1000L)/numerology);
   cpu_set_t cpuset;
   CPU_SET(1,&cpuset);
   pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index e21fd12428560c6ff8d603930abe1e2f0b116929..cb2aee9df4ed9c05e8683895fcb5c507c4c368f9 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -206,7 +206,7 @@ extern void reset_opp_meas(void);
 extern void print_opp_meas(void);
 
 int transmission_mode=1;
-int numerology = 0;
+int numerology = 2;
 int fh_two_thread = 1;