diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index 01d94da73ea8d9716ab8f58e00f5663b468dac94..d2610c4abc6af11eee864a74983660fdc7a0f3fd 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -856,11 +856,9 @@ function main() {
 	      ln -sf $dbin/liboai_exmimodevif.so.$REL $dbin/liboai_device.so
 	      echo_info "liboai_device.so is linked to EXMIMO device library"       
 	  elif [ "$HW" == "OAI_USRP" ] ; then
-	      if [ -d "/usr/include/uhd" ] ; then
 		  compilations \
 		      $build_dir oai_usrpdevif \
 		      liboai_usrpdevif.so $dbin/liboai_usrpdevif.so.$REL
-	      fi
 
 	      ln -sf liboai_usrpdevif.so liboai_device.so
 	      ln -sf $dbin/liboai_usrpdevif.so.$REL $dbin/liboai_device.so
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
index f4a06837b9eb13bfe7ab11452536e44005a60165..9152a6a9ad3f8b7dd4850f3b612ae41e73f59489 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
@@ -268,6 +268,8 @@ void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch)
 }
 
 
+
+
 int dlsch_encoding_2threads0(te_params *tep) {
 
   LTE_eNB_DLSCH_t *dlsch          = tep->dlsch;
@@ -560,6 +562,62 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
 
   return(0);
 }
+int dlsch_encoding_all(PHY_VARS_eNB *eNB,
+		   unsigned char *a,
+                   uint8_t num_pdcch_symbols,
+                   LTE_eNB_DLSCH_t *dlsch,
+                   int frame,
+                   uint8_t subframe,
+                   time_stats_t *rm_stats,
+                   time_stats_t *te_stats,
+                   time_stats_t *i_stats)
+{
+	int encoding_return = 0;
+	unsigned int L,C,B;
+	B = dlsch->harq_processes[dlsch->harq_ids[subframe]]->B;
+	if(B<=6144)
+	{
+		L=0;
+		C=1;
+	}
+	else
+	{
+		L=24;
+		C = B/(6144-L);
+		if((6144-L)*C < B)
+		{
+			C = C+1;
+		}
+	}
+	if(C >= 5)
+		{
+		encoding_return =
+		dlsch_encoding_2threads(eNB,
+				   a,
+                   num_pdcch_symbols,
+                   dlsch,
+                   frame,
+                   subframe,
+                   rm_stats,
+                   te_stats,
+                   i_stats);
+		}
+	else
+		{
+		encoding_return =
+		dlsch_encoding(eNB,
+				   a,
+                   num_pdcch_symbols,
+                   dlsch,
+                   frame,
+                   subframe,
+                   rm_stats,
+                   te_stats,
+                   i_stats);
+		}
+	return encoding_return;
+}
+
 
 int dlsch_encoding(PHY_VARS_eNB *eNB,
 		   unsigned char *a,
diff --git a/openair1/PHY/LTE_TRANSPORT/proto.h b/openair1/PHY/LTE_TRANSPORT/proto.h
index 441cd5539a72102c7f16a0a004f1a7ca4fc8309a..2c6e73d45ac7ae3faed37729ccc79a3aa783b5f6 100644
--- a/openair1/PHY/LTE_TRANSPORT/proto.h
+++ b/openair1/PHY/LTE_TRANSPORT/proto.h
@@ -122,6 +122,17 @@ int32_t dlsch_encoding(PHY_VARS_eNB *eNB,
                        time_stats_t *te_stats,
                        time_stats_t *i_stats);
 
+int32_t dlsch_encoding_all(PHY_VARS_eNB *eNB,
+                       uint8_t *a,
+                       uint8_t num_pdcch_symbols,
+                       LTE_eNB_DLSCH_t *dlsch,
+                       int frame,
+                       uint8_t subframe,
+                       time_stats_t *rm_stats,
+                       time_stats_t *te_stats,
+                       time_stats_t *i_stats);
+
+
 int32_t dlsch_encoding_SIC(PHY_VARS_UE *ue,
                        uint8_t *a,
                        uint8_t num_pdcch_symbols,
diff --git a/openair1/PHY/defs.h b/openair1/PHY/defs.h
index 6dd94bafcd3dac72b581bd87a264fc6dce5ed7ea..27ec0cc548afac67a78357809e5eda8a3adac770 100644
--- a/openair1/PHY/defs.h
+++ b/openair1/PHY/defs.h
@@ -556,6 +556,8 @@ typedef struct eNB_proc_t_s {
   te_params tep;
   /// set of scheduling variables RXn-TXnp4 threads
   eNB_rxtx_proc_t proc_rxtx[2];
+  /// stats thread pthread descriptor
+  pthread_t coding_stats_thread;
 } eNB_proc_t;
 
 
diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index 8e5358da34fee29ede1624f16ba7ac98cf5538b1..7840dc35343638b76dcba3c926fde79f8e977430 100644
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -1517,6 +1517,7 @@ void init_te_thread(PHY_VARS_eNB *eNB,pthread_attr_t *attr_te) {
 
 }
 
+
 void fill_rx_indication(PHY_VARS_eNB *eNB,int UE_id,int frame,int subframe)
 {
   nfapi_rx_indication_pdu_t *pdu;
diff --git a/targets/ARCH/COMMON/common_lib.c b/targets/ARCH/COMMON/common_lib.c
index 1fb8b4f98133de5475712704b45aff651cca1758..a2e6d1071a05b2e2e02e7cdaa28b81f3baa963c8 100644
--- a/targets/ARCH/COMMON/common_lib.c
+++ b/targets/ARCH/COMMON/common_lib.c
@@ -97,21 +97,21 @@ int load_lib(openair0_device *device, openair0_config_t *openair0_cfg, eth_param
   if (flag == RAU_LOCAL_RADIO_HEAD) {
       lib_handle = dlopen(OAI_RF_LIBNAME, RTLD_LAZY);
       if (!lib_handle) {
-	fprintf(stderr,"Unable to locate %s: HW device set to NONE_DEV.\n", OAI_RF_LIBNAME);
-	fprintf(stderr,"%s\n",dlerror());
-	return -1;
+		fprintf(stderr,"Unable to locate %s: HW device set to NONE_DEV.\n", OAI_RF_LIBNAME);
+		fprintf(stderr,"%s\n",dlerror());
+		return -1;
       } 
       
       dp = dlsym(lib_handle,"device_init");
       
       if (dp != NULL ) {
-	ret = dp(device,openair0_cfg);
-	if (ret<0) {
-	  fprintf(stderr, "%s %d:oai device intialization failed %s\n", __FILE__, __LINE__, dlerror());
-	}
+		ret = dp(device,openair0_cfg);
+		if (ret<0) {
+			fprintf(stderr, "%s %d:oai device intialization failed %s\n", __FILE__, __LINE__, dlerror());
+		}
       } else {
-	fprintf(stderr, "%s %d:oai device intializing function not found %s\n", __FILE__, __LINE__, dlerror());
-	return -1;
+		fprintf(stderr, "%s %d:oai device intializing function not found %s\n", __FILE__, __LINE__, dlerror());
+		return -1;
       }
     } else {
       lib_handle = dlopen(OAI_TP_LIBNAME, RTLD_LAZY);
@@ -142,7 +142,7 @@ int openair0_device_load(openair0_device *device, openair0_config_t *openair0_cf
   rc=load_lib(device, openair0_cfg, NULL,RAU_LOCAL_RADIO_HEAD );
 
   if ( rc >= 0) {       
-    if ( set_device(device) < 0) {
+	if ( set_device(device) < 0) {
       fprintf(stderr, "%s %d:Unsupported radio head\n",__FILE__, __LINE__);
       return -1;		   
     }   
diff --git a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
index ec7aa1a549da240afad72b034a7a16cab6e11e23..f83dc217878c3163e748bb183f4e57c558604a95 100644
--- a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
+++ b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
@@ -744,6 +744,20 @@ extern "C" {
             openair0_cfg[0].rx_gain_calib_table = calib_table_x310;
 
             switch ((int)openair0_cfg[0].sample_rate) {
+			case 122880000:
+                // from usrp_time_offset
+                //openair0_cfg[0].samples_per_packet    = 2048;
+				openair0_cfg[0].tx_sample_advance     = 15; //to be checked
+                openair0_cfg[0].tx_bw                 = 80e6;
+                openair0_cfg[0].rx_bw                 = 80e6;
+                break;
+            case 61440000:
+                // from usrp_time_offset
+                //openair0_cfg[0].samples_per_packet    = 2048;
+                openair0_cfg[0].tx_sample_advance     = 15;
+                openair0_cfg[0].tx_bw                 = 40e6;
+                openair0_cfg[0].rx_bw                 = 40e6;
+                break;
             case 30720000:
                 // from usrp_time_offset
                 //openair0_cfg[0].samples_per_packet    = 2048;
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index 8e476e06b7075aeba59f9dbee11e5b589d51de61..d82732c2cf5b21f5759d767d0c5a70f6289aebf4 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -577,9 +577,27 @@ static void* eNB_thread_prach_br( void* param ) {
 #endif
 
 
-extern void init_fep_thread(PHY_VARS_eNB *, pthread_attr_t *);
+
 extern void init_td_thread(PHY_VARS_eNB *, pthread_attr_t *);
 extern void init_te_thread(PHY_VARS_eNB *, pthread_attr_t *);
+//////////////////////////////////////need to modified////////////////*****
+
+static void* coding_stats_thread(void* param) {
+
+  PHY_VARS_eNB     *eNB      = (PHY_VARS_eNB*)param;
+
+  wait_sync("coding_stats_thread");
+
+  while (!oai_exit) {
+     sleep(1);
+     if (opp_enabled == 1) {
+       if (eNB->td) print_meas(&eNB->ulsch_decoding_stats,"ulsch_decoding",NULL,NULL);
+       if (eNB->te) print_meas(&eNB->dlsch_encoding_stats,"dlsch_encoding",NULL,NULL);
+     }
+  }
+  return(NULL);
+}
+
 
 void init_eNB_proc(int inst) {
   
@@ -588,8 +606,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_td=NULL,*attr_te=NULL;
+  pthread_attr_t *attr0=NULL,*attr1=NULL,*attr_prach=NULL,*attr_td=NULL,*attr_te=NULL;
 #ifdef Rel14
   pthread_attr_t *attr_prach_br=NULL;
 #endif
@@ -629,8 +646,8 @@ void init_eNB_proc(int inst) {
 
     pthread_attr_init( &proc->attr_prach);
     pthread_attr_init( &proc->attr_asynch_rxtx);
-    //    pthread_attr_init( &proc->attr_td);
-    //    pthread_attr_init( &proc->attr_te);
+    pthread_attr_init( &proc->attr_td);
+    pthread_attr_init( &proc->attr_te);
     pthread_attr_init( &proc_rxtx[0].attr_rxtx);
     pthread_attr_init( &proc_rxtx[1].attr_rxtx);
 #ifdef Rel14
@@ -652,7 +669,8 @@ void init_eNB_proc(int inst) {
     //    attr_td     = &proc->attr_td;
     //    attr_te     = &proc->attr_te; 
 #endif
-
+	attr_td     = &proc->attr_td;
+	attr_te     = &proc->attr_te;
     if (eNB->single_thread_flag==0) {
       pthread_create( &proc_rxtx[0].pthread_rxtx, attr0, eNB_thread_rxtx, &proc_rxtx[0] );
       pthread_create( &proc_rxtx[1].pthread_rxtx, attr1, eNB_thread_rxtx, &proc_rxtx[1] );
@@ -670,6 +688,12 @@ void init_eNB_proc(int inst) {
     }
 
     AssertFatal(proc->instance_cnt_prach == -1,"instance_cnt_prach = %d\n",proc->instance_cnt_prach);
+	
+	
+	//////////////////////////////////////need to modified////////////////*****
+	init_te_thread(eNB,attr_te);
+	//init_td_thread(eNB,attr_td);
+	if (opp_enabled == 1) pthread_create(&proc->coding_stats_thread,NULL,coding_stats_thread,(void*)eNB);
 
     
   }
@@ -695,6 +719,8 @@ void init_eNB_proc(int inst) {
   pthread_mutex_init(&sync_phy_proc.mutex_phy_proc_tx, NULL);
   pthread_cond_init(&sync_phy_proc.cond_phy_proc_tx, NULL);
   sync_phy_proc.phy_proc_CC_id = 0;
+  
+  
 }
 
 
@@ -927,8 +953,8 @@ void init_eNB(int single_thread_flag,int wait_for_sync) {
 #endif
 
 
-      eNB->td                   = ulsch_decoding_data;//(single_thread_flag==1) ? ulsch_decoding_data_2thread : ulsch_decoding_data;
-      eNB->te                   = dlsch_encoding;//(single_thread_flag==1) ? dlsch_encoding_2threads : dlsch_encoding;
+      eNB->td                   = ulsch_decoding_data;//(get_nprocs()<=4) ? ulsch_decoding_data : ulsch_decoding_data_2thread;
+      eNB->te                   = dlsch_encoding_all;//(get_nprocs()<=4) ? dlsch_encoding : dlsch_encoding_2threads;
 
       
       LOG_I(PHY,"Registering with MAC interface module\n");
diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index 21804817d6601ef6e338bf3911ac80f06e642e87..78511dc3433868b35c9774b9d26b503dc68a4b2a 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -111,6 +111,7 @@ unsigned short config_frames[4] = {2,9,11,13};
 #include "T.h"
 
 extern volatile int                    oai_exit;
+extern int numerology;
 
 
 extern void  phy_init_RU(RU_t*);
@@ -1193,20 +1194,39 @@ void fill_rf_config(RU_t *ru, char *rf_config_file) {
 
   LTE_DL_FRAME_PARMS *fp   = &ru->frame_parms;
   openair0_config_t *cfg   = &ru->openair0_cfg;
+  //printf("////////////////numerology in config = %d\n",numerology);
 
   if(fp->N_RB_DL == 100) {
-    if (fp->threequarter_fs) {
-      cfg->sample_rate=23.04e6;
-      cfg->samples_per_frame = 230400; 
-      cfg->tx_bw = 10e6;
-      cfg->rx_bw = 10e6;
-    }
-    else {
-      cfg->sample_rate=30.72e6;
+    if(numerology == 0){
+      if (fp->threequarter_fs) {
+        cfg->sample_rate=23.04e6;
+        cfg->samples_per_frame = 230400; 
+        cfg->tx_bw = 10e6;
+        cfg->rx_bw = 10e6;
+      }
+      else {
+        cfg->sample_rate=30.72e6;
+        cfg->samples_per_frame = 307200; 
+        cfg->tx_bw = 10e6;
+        cfg->rx_bw = 10e6;
+      }
+	}else if(numerology == 1){
+	  cfg->sample_rate=61.44e6;
+      cfg->samples_per_frame = 307200; 
+      cfg->tx_bw = 20e6;
+      cfg->rx_bw = 20e6;
+	}else if(numerology == 2){
+	  cfg->sample_rate=122.88e6;
+      cfg->samples_per_frame = 307200; 
+      cfg->tx_bw = 40e6;
+      cfg->rx_bw = 40e6;
+	}else{
+	  printf("Wrong input for numerology %d\n setting to 20MHz normal CP configuration",numerology);
+	  cfg->sample_rate=30.72e6;
       cfg->samples_per_frame = 307200; 
       cfg->tx_bw = 10e6;
       cfg->rx_bw = 10e6;
-    }
+	}
   } else if(fp->N_RB_DL == 50) {
     cfg->sample_rate=15.36e6;
     cfg->samples_per_frame = 153600;
@@ -1895,7 +1915,7 @@ void init_RU(char *rf_config_file) {
 	eNB0->RU_list[eNB0->num_RU++] = ru;
       }
     }
-    //    LOG_I(PHY,"Initializing RRU descriptor %d : (%s,%s,%d)\n",ru_id,ru_if_types[ru->if_south],eNB_timing[ru->if_timing],ru->function);
+        LOG_I(PHY,"Initializing RRU descriptor %d : (%s,%s,%d)\n",ru_id,ru_if_types[ru->if_south],eNB_timing[ru->if_timing],ru->function);
 
     
     switch (ru->if_south) {
@@ -1945,8 +1965,8 @@ void init_RU(char *rf_config_file) {
       }
       else if (ru->function == eNodeB_3GPP) {  
 	ru->do_prach             = 0;                       // no prach processing in RU            
-	ru->feprx                = (get_nprocs()<=2) ? fep_full : ru_fep_full_2thread;                // RX DFTs
-	ru->feptx_ofdm           = (get_nprocs()<=2) ? feptx_ofdm : feptx_ofdm_2thread;              // this is fep with idft and precoding
+	ru->feprx                = (get_nprocs()<=4) ? fep_full : ru_fep_full_2thread;                // RX DFTs
+	ru->feptx_ofdm           = (get_nprocs()<=4) ? feptx_ofdm : feptx_ofdm_2thread;              // this is fep with idft and precoding
 	ru->feptx_prec           = feptx_prec;              // this is fep with idft and precoding
 	ru->fh_north_in          = NULL;                    // no incoming fronthaul from north
 	ru->fh_north_out         = NULL;                    // no outgoing fronthaul to north
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index a8cc3e84d94808f9e50271e636ea177b0e2a0354..98a68a2e104906ce6bf98d611a094951be4cca76 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -207,6 +207,8 @@ extern void print_opp_meas(void);
 
 int transmission_mode=1;
 
+int numerology = 1;
+
 
 
 /* struct for ethernet specific parameters given in eNB conf file */
@@ -751,6 +753,8 @@ void init_openair0() {
     openair0_cfg[card].configFilename = NULL;
 
     if(frame_parms[0]->N_RB_DL == 100) {
+	  if(numerology == 0)
+	  {
       if (frame_parms[0]->threequarter_fs) {
 	openair0_cfg[card].sample_rate=23.04e6;
 	openair0_cfg[card].samples_per_frame = 230400;
@@ -762,6 +766,22 @@ void init_openair0() {
 	openair0_cfg[card].tx_bw = 10e6;
 	openair0_cfg[card].rx_bw = 10e6;
       }
+	  }else if(numerology == 1)
+	  {
+		openair0_cfg[card].sample_rate=61.44e6;
+		openair0_cfg[card].samples_per_frame = 307200;
+		openair0_cfg[card].tx_bw = 20e6;
+		openair0_cfg[card].rx_bw = 20e6;
+	  }else if(numerology == 2)
+	  {
+		openair0_cfg[card].sample_rate=122.88e6;
+		openair0_cfg[card].samples_per_frame = 307200;
+		openair0_cfg[card].tx_bw = 20e6;
+		openair0_cfg[card].rx_bw = 20e6;
+	  }else
+	  {
+	    printf("Un supported numerology\n");
+	  }
     } else if(frame_parms[0]->N_RB_DL == 50) {
       openair0_cfg[card].sample_rate=15.36e6;
       openair0_cfg[card].samples_per_frame = 153600;
diff --git a/targets/RT/USER/lte-softmodem.h b/targets/RT/USER/lte-softmodem.h
index 28003f75db4b56c31c4a5ae035a9b57c47eca74f..27a6c11b5e3e94a2419ac0021ca9ad6499016104 100644
--- a/targets/RT/USER/lte-softmodem.h
+++ b/targets/RT/USER/lte-softmodem.h
@@ -83,6 +83,7 @@
 #define CONFIG_HLP_TPORT         "tracer port\n"
 #define CONFIG_HLP_NOTWAIT       "don't wait for tracer, start immediately\n"
 #define CONFIG_HLP_TNOFORK       "to ease debugging with gdb\n"
+#define CONFIG_HLP_NUMEROLOGY    "adding numerology for 5G\n"
 
 
 /***************************************************************************************************************************************/
@@ -137,36 +138,37 @@ extern int16_t dlsch_demod_shift;
 /*   optname                     helpstr                paramflags                      XXXptr                  defXXXval                            type           numelt   */
 /*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
 #define CMDLINE_PARAMS_DESC {  \
-{"rf-config-file",        	 CONFIG_HLP_RFCFGF,	0,		  strptr:(char **)&rf_config_file,	defstrval:NULL, 		   TYPE_STRING,   sizeof(rf_config_file)}, \
-{"ulsch-max-errors",      	 CONFIG_HLP_ULMAXE,	0,		  uptr:&ULSCH_max_consecutive_errors,	defuintval:0,			   TYPE_UINT,	  0},			   \
-{"phy-test",              	 CONFIG_HLP_PHYTST,	PARAMFLAG_BOOL,   iptr:&phy_test,			defintval:0,			   TYPE_INT,	  0},			   \
-{"usim-test",             	 CONFIG_HLP_USIM,	PARAMFLAG_BOOL,   u8ptr:&usim_test,			defintval:0,			   TYPE_UINT8,    0},			   \
-{"mmapped-dma",           	 CONFIG_HLP_DMAMAP,	PARAMFLAG_BOOL,   uptr:&mmapped_dma,			defintval:0,			   TYPE_INT,	  0},			   \
-{"external-clock",        	 CONFIG_HLP_EXCCLK,	PARAMFLAG_BOOL,   uptr:&clock_source,			defintval:0,			   TYPE_INT,	  0},			   \
-{"wait-for-sync",         	 NULL,  		PARAMFLAG_BOOL,   iptr:&wait_for_sync,  		defintval:0,			   TYPE_INT,	  0},			   \
-{"single-thread-disable", 	 CONFIG_HLP_NOSNGLT,	PARAMFLAG_BOOL,   iptr:&single_thread_flag,		defintval:1,			   TYPE_INT,	  0},			   \
-{"threadIQ",              	 NULL,  		0,		  iptr:&(threads.iq),			defintval:1,			   TYPE_INT,	  0},			   \
-{"threadOneSubframe",     	 NULL,  		0,		  iptr:&(threads.one),  		defintval:1,			   TYPE_INT,	  0},			   \
-{"threadTwoSubframe",    	 NULL,  		0,		  iptr:&(threads.two),  		defintval:1,			   TYPE_INT,	  0},			   \
-{"threadThreeSubframe",    	 NULL,  		0,		  iptr:&(threads.three),  		defintval:1,			   TYPE_INT,	  0},			   \
-{"threadSlot1ProcOne",     	 NULL,  		0,		  iptr:&(threads.slot1_proc_one),      	defintval:1,			   TYPE_INT,	  0},			   \
-{"threadSlot1ProcTwo",    	 NULL,  		0,		  iptr:&(threads.slot1_proc_two),      	defintval:1,			   TYPE_INT,	  0},			   \
-{"dlsch-demod-shift",     	 CONFIG_HLP_DLSHIFT,	0,		  iptr:(int32_t *)&dlsch_demod_shift,	defintval:0,			   TYPE_INT,	  0},			   \
-{"A" ,  		  	 CONFIG_HLP_TADV,	0,		  uptr:&timing_advance, 		defintval:0,			   TYPE_UINT,	  0},			   \
-{"C" ,  		  	 CONFIG_HLP_DLF,	0,		  uptr:&(downlink_frequency[0][0]),	defuintval:2680000000,  	   TYPE_UINT,	  0},			   \
-{"a" ,  		  	 CONFIG_HLP_CHOFF,	0,		  iptr:&chain_offset,			defintval:0,			   TYPE_INT,	  0},			   \
-{"d" ,  		  	 CONFIG_HLP_SOFTS,	PARAMFLAG_BOOL,	  uptr:(uint32_t *)&do_forms,		defintval:0,			   TYPE_INT8,	  0},			   \
-{"E" ,  		  	 CONFIG_HLP_TQFS,	PARAMFLAG_BOOL,   i8ptr:&threequarter_fs,		defintval:0,			   TYPE_INT8,	  0},			   \
-{"K" ,  		  	 CONFIG_HLP_ITTIL,	PARAMFLAG_NOFREE, strptr:&itti_dump_file,		defstrval:"/tmp/itti.dump",	   TYPE_STRING,   0},			   \
-{"U" ,  		  	 CONFIG_HLP_UE, 	PARAMFLAG_BOOL,   i8ptr:&UE_flag,			defintval:0,			   TYPE_INT8,	  0},			   \
-{"m" ,  		  	 CONFIG_HLP_DLMCS,	0,		  uptr:&target_dl_mcs,  		defintval:0,			   TYPE_UINT,	  0},			   \
-{"t" ,  		  	 CONFIG_HLP_ULMCS,	0,		  uptr:&target_ul_mcs,  		defintval:0,			   TYPE_UINT,	  0},			   \
-{"W" ,  		  	 CONFIG_HLP_L2MONW,	0,		  strptr:(char **)&in_ip,		defstrval:"127.0.0.1",  	   TYPE_STRING,   sizeof(in_ip)},	   \
-{"P" ,  		  	 CONFIG_HLP_L2MONP,	0,		  strptr:(char **)&in_path,		defstrval:"/tmp/oai_opt.pcap",     TYPE_STRING,   sizeof(in_path)},	   \
-{"V" ,  		  	 CONFIG_HLP_VCD,	PARAMFLAG_BOOL,   iptr:&ouput_vcd,			defintval:0,			   TYPE_INT,	  0},			   \
-{"q" ,  		  	 CONFIG_HLP_STMON,	PARAMFLAG_BOOL,   iptr:&opp_enabled,			defintval:0,			   TYPE_INT,	  0},			   \
-{"S" ,  		  	 CONFIG_HLP_MSLOTS,	PARAMFLAG_BOOL,   u8ptr:&exit_missed_slots,		defintval:1,			   TYPE_UINT8,    0},			   \
-{"T" ,  		  	 CONFIG_HLP_TDD,	PARAMFLAG_BOOL,   iptr:&tddflag,			defintval:0,			   TYPE_INT,	  0}			   \
+{"rf-config-file",        	 CONFIG_HLP_RFCFGF,	      0,		            strptr:(char **)&rf_config_file,	defstrval:NULL, 		       TYPE_STRING,   sizeof(rf_config_file)}, \
+{"ulsch-max-errors",      	 CONFIG_HLP_ULMAXE,	      0,		            uptr:&ULSCH_max_consecutive_errors,	defuintval:0,			       TYPE_UINT,	  0},			   \
+{"phy-test",              	 CONFIG_HLP_PHYTST,	      PARAMFLAG_BOOL,       iptr:&phy_test,			            defintval:0,			       TYPE_INT,	  0},			   \
+{"usim-test",             	 CONFIG_HLP_USIM,	      PARAMFLAG_BOOL,       u8ptr:&usim_test,			        defintval:0,			       TYPE_UINT8,    0},			   \
+{"mmapped-dma",           	 CONFIG_HLP_DMAMAP,	      PARAMFLAG_BOOL,       uptr:&mmapped_dma,			        defintval:0,			       TYPE_INT,	  0},			   \
+{"external-clock",        	 CONFIG_HLP_EXCCLK,	      PARAMFLAG_BOOL,       uptr:&clock_source,			        defintval:0,			       TYPE_INT,	  0},			   \
+{"wait-for-sync",         	 NULL,  		          PARAMFLAG_BOOL,       iptr:&wait_for_sync,  		        defintval:0,			       TYPE_INT,	  0},			   \
+{"single-thread-disable", 	 CONFIG_HLP_NOSNGLT,	  PARAMFLAG_BOOL,       iptr:&single_thread_flag,		    defintval:1,			       TYPE_INT,	  0},			   \
+{"threadIQ",              	 NULL,  		          0,		            iptr:&(threads.iq),			        defintval:1,			       TYPE_INT,	  0},			   \
+{"threadOneSubframe",     	 NULL,  		          0,		            iptr:&(threads.one),  		        defintval:1,			       TYPE_INT,	  0},			   \
+{"threadTwoSubframe",    	 NULL,  		          0,		            iptr:&(threads.two),  		        defintval:1,			       TYPE_INT,	  0},			   \
+{"threadThreeSubframe",    	 NULL,  		          0,		            iptr:&(threads.three),  		    defintval:1,			       TYPE_INT,	  0},			   \
+{"threadSlot1ProcOne",     	 NULL,  		          0,		            iptr:&(threads.slot1_proc_one),     defintval:1,			       TYPE_INT,	  0},			   \
+{"threadSlot1ProcTwo",    	 NULL,  		          0,		            iptr:&(threads.slot1_proc_two),     defintval:1,			       TYPE_INT,	  0},			   \
+{"dlsch-demod-shift",     	 CONFIG_HLP_DLSHIFT,	  0,		            iptr:(int32_t *)&dlsch_demod_shift,	defintval:0,			       TYPE_INT,	  0},			   \
+{"A" ,  		  	         CONFIG_HLP_TADV,	      0,		            uptr:&timing_advance, 		        defintval:0,			       TYPE_UINT,	  0},			   \
+{"C" ,  		  	         CONFIG_HLP_DLF,	      0,		            uptr:&(downlink_frequency[0][0]),	defuintval:2680000000,  	   TYPE_UINT,	  0},			   \
+{"a" ,  		  	         CONFIG_HLP_CHOFF,	      0,		            iptr:&chain_offset,			        defintval:0,			       TYPE_INT,	  0},			   \
+{"d" ,  		  	         CONFIG_HLP_SOFTS,	      PARAMFLAG_BOOL,	    uptr:(uint32_t *)&do_forms,		    defintval:0,			       TYPE_INT8,	  0},			   \
+{"E" ,  		  	         CONFIG_HLP_TQFS,	      PARAMFLAG_BOOL,       i8ptr:&threequarter_fs,		        defintval:0,			       TYPE_INT8,	  0},			   \
+{"K" ,  		  	         CONFIG_HLP_ITTIL,	      PARAMFLAG_NOFREE,     strptr:&itti_dump_file,		        defstrval:"/tmp/itti.dump",	   TYPE_STRING,   0},			   \
+{"U" ,  		  	         CONFIG_HLP_UE, 	      PARAMFLAG_BOOL,       i8ptr:&UE_flag,			            defintval:0,			       TYPE_INT8,	  0},			   \
+{"m" ,  		  	         CONFIG_HLP_DLMCS,	      0,		            uptr:&target_dl_mcs,  		        defintval:0,			       TYPE_UINT,	  0},			   \
+{"t" ,  		  	         CONFIG_HLP_ULMCS,	      0,		            uptr:&target_ul_mcs,  		        defintval:0,			       TYPE_UINT,	  0},			   \
+{"W" ,  		  	         CONFIG_HLP_L2MONW,	      0,		            strptr:(char **)&in_ip,		        defstrval:"127.0.0.1",  	   TYPE_STRING,   sizeof(in_ip)},	   \
+{"P" ,  		  	         CONFIG_HLP_L2MONP,	      0,		            strptr:(char **)&in_path,		    defstrval:"/tmp/oai_opt.pcap", TYPE_STRING,   sizeof(in_path)},	   \
+{"V" ,  		  	         CONFIG_HLP_VCD,	      PARAMFLAG_BOOL,       iptr:&ouput_vcd,			        defintval:0,			       TYPE_INT,	  0},			   \
+{"q" ,  		  	         CONFIG_HLP_STMON,	      PARAMFLAG_BOOL,       iptr:&opp_enabled,			        defintval:0,			       TYPE_INT,	  0},			   \
+{"S" ,  		  	         CONFIG_HLP_MSLOTS,	      PARAMFLAG_BOOL,       u8ptr:&exit_missed_slots,		    defintval:1,			       TYPE_UINT8,    0},			   \
+{"T" ,  		  	         CONFIG_HLP_TDD,	      PARAMFLAG_BOOL,       iptr:&tddflag,			            defintval:0,			       TYPE_INT,	  0},			   \
+{"n" ,  		  	         CONFIG_HLP_NUMEROLOGY,	  0,                    iptr:&numerology,			        defintval:1,			       TYPE_INT,	  0}			   \
 }
 
 #define CONFIG_HLP_FLOG          "Enable online log \n"