diff --git a/ci-scripts/conf_files/benetel-5g.conf b/ci-scripts/conf_files/benetel-5g.conf
index 3b872e56e96dfe18b7e7ee23c07fbef07985eb78..cae4ec0b253dfcf59df60e160ee84ac6c3d940ec 100644
--- a/ci-scripts/conf_files/benetel-5g.conf
+++ b/ci-scripts/conf_files/benetel-5g.conf
@@ -214,7 +214,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
 }
 );
 
diff --git a/ci-scripts/conf_files/gNB_SA_DU.conf b/ci-scripts/conf_files/gNB_SA_DU.conf
index 4309c13dd395a172e589e66b4efc469e585fbf04..a371380e6e78671721d0d2b3df177c3706441317 100644
--- a/ci-scripts/conf_files/gNB_SA_DU.conf
+++ b/ci-scripts/conf_files/gNB_SA_DU.conf
@@ -204,7 +204,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   prach_dtx_threshold = 120;
   pucch0_dtx_threshold = 150;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
diff --git a/ci-scripts/conf_files/gNB_SA_n78_106PRB.2x2_usrpn310.conf b/ci-scripts/conf_files/gNB_SA_n78_106PRB.2x2_usrpn310.conf
index 49383072ed12e2fc36921bef6623b99c7dec415d..59358b9f7caa66fc2f8af971dce142331baa0034 100644
--- a/ci-scripts/conf_files/gNB_SA_n78_106PRB.2x2_usrpn310.conf
+++ b/ci-scripts/conf_files/gNB_SA_n78_106PRB.2x2_usrpn310.conf
@@ -231,7 +231,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   prach_dtx_threshold = 120;
   pucch0_dtx_threshold = 150;
 }
diff --git a/ci-scripts/conf_files/gNB_SA_n78_133PRB.2x2_usrpn310.conf b/ci-scripts/conf_files/gNB_SA_n78_133PRB.2x2_usrpn310.conf
index 610485fc9245fa2407a6ad79ce94474751f3a4c6..822e42cf1fbf3ce900ac8e19d08e69ca6ce7efcd 100644
--- a/ci-scripts/conf_files/gNB_SA_n78_133PRB.2x2_usrpn310.conf
+++ b/ci-scripts/conf_files/gNB_SA_n78_133PRB.2x2_usrpn310.conf
@@ -228,7 +228,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   prach_dtx_threshold = 120;
 }
 );
diff --git a/ci-scripts/conf_files/gnb.band261.tm1.32PRB.usrpn300.conf b/ci-scripts/conf_files/gnb.band261.tm1.32PRB.usrpn300.conf
index 24ec8f17f8d1b7a92e80af13371ba90266bb3a68..eeb562b4a49921769ee29b544d0dde4d8ea32957 100644
--- a/ci-scripts/conf_files/gnb.band261.tm1.32PRB.usrpn300.conf
+++ b/ci-scripts/conf_files/gnb.band261.tm1.32PRB.usrpn300.conf
@@ -211,7 +211,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/ci-scripts/conf_files/gnb.band66.tm1.106PRB.usrpn300.conf b/ci-scripts/conf_files/gnb.band66.tm1.106PRB.usrpn300.conf
index b3c7d7d1da5556e29143354918f0ed8647457627..f4f65fe8dcb0a89addbbfaf46e60852ade0d76f7 100644
--- a/ci-scripts/conf_files/gnb.band66.tm1.106PRB.usrpn300.conf
+++ b/ci-scripts/conf_files/gnb.band66.tm1.106PRB.usrpn300.conf
@@ -181,7 +181,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/ci-scripts/conf_files/gnb.band78.nsa_2x2.106PRB.usrpn310.conf b/ci-scripts/conf_files/gnb.band78.nsa_2x2.106PRB.usrpn310.conf
index c668601c063d0b8ea870b2fc372fdbbf2d5985f0..b8cc0de15e37ac7113e1669e7322a0f6c7b5896a 100644
--- a/ci-scripts/conf_files/gnb.band78.nsa_2x2.106PRB.usrpn310.conf
+++ b/ci-scripts/conf_files/gnb.band78.nsa_2x2.106PRB.usrpn310.conf
@@ -210,7 +210,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   prach_dtx_threshold = 120;
   pucch0_dtx_threshold = 80;
 }
diff --git a/ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.asue.conf b/ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.asue.conf
index 92c3a7a2e985d00df2daa03ee6b8c035f699b76c..6971c5d818a381b05c2daa42d81804baf0974df2 100644
--- a/ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.asue.conf
+++ b/ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.asue.conf
@@ -237,7 +237,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   prach_dtx_threshold = 120;
 #  pucch0_dtx_threshold = 150;
 }
diff --git a/ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.conf b/ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.conf
index 672713d5042adafadefcbf583ef23fa264618ca7..0dd264a6c574abdb44bbfcc5b0261c54b747c934 100644
--- a/ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.conf
+++ b/ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.conf
@@ -234,7 +234,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   prach_dtx_threshold = 120;
 #  pucch0_dtx_threshold = 150;
 }
diff --git a/ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.ddsuu.2x2.usrpn310.conf b/ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.ddsuu.2x2.usrpn310.conf
index 5bd8b26e054674aaa58eaa6138fd4708a4580028..1d7f9c499ea067870f2fa7fc34a7862b45a808c5 100644
--- a/ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.ddsuu.2x2.usrpn310.conf
+++ b/ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.ddsuu.2x2.usrpn310.conf
@@ -233,7 +233,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   prach_dtx_threshold = 120;
 #  pucch0_dtx_threshold = 150;
 }
diff --git a/ci-scripts/conf_files/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf b/ci-scripts/conf_files/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf
index f92242138c7b41ae473654e4cbde273ae503b4ab..1086badc0bcfbd3ef08b77d485a4b6ce7e156834 100644
--- a/ci-scripts/conf_files/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf
+++ b/ci-scripts/conf_files/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf
@@ -235,7 +235,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   prach_dtx_threshold = 120;
 #  pucch0_dtx_threshold = 150;
 }
diff --git a/ci-scripts/conf_files/gnb.band78.tm1.106PRB.usrpn300.conf b/ci-scripts/conf_files/gnb.band78.tm1.106PRB.usrpn300.conf
index 9334f2cf5918de0caae334c7bc07ebb0202f7718..61bb39329e72b92a819addad91474db73f972b03 100644
--- a/ci-scripts/conf_files/gnb.band78.tm1.106PRB.usrpn300.conf
+++ b/ci-scripts/conf_files/gnb.band78.tm1.106PRB.usrpn300.conf
@@ -194,7 +194,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
 }
 );
 
diff --git a/ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf b/ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf
index cd3ab6278e03d207e1426d11351ffe8c81c9f653..92362ebdc96da9c44ed830adbdb90082f1e07c42 100644
--- a/ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf
+++ b/ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf
@@ -210,7 +210,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 6;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpn310.conf b/ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpn310.conf
index 371753eccc301bde31f96a1394ebb310c65d73c8..361cee72e6a85b0286ec3152d69000df92b456fc 100644
--- a/ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpn310.conf
+++ b/ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpn310.conf
@@ -211,7 +211,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 6;
 }
 );
 
diff --git a/ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml b/ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml
index a74dd26137a4045dee965376df1223555e0073f0..d025b95ce5ddae8ced94d8073196fb8c1124f147 100644
--- a/ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml
+++ b/ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml
@@ -52,7 +52,7 @@
         <testCase id="090102">
                 <class>Initialize_OAI_UE</class>
                 <desc>Initialize NR UE USRP</desc>
-		<Initialize_OAI_UE_args>--phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain 50  --rrc_config_path . --dlsch-parallel 4 --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
+		<Initialize_OAI_UE_args>--phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain 50  --rrc_config_path . --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
 		<air_interface>NR</air_interface>
         </testCase>
 
diff --git a/ci-scripts/xml_files/gnb_nr_ue_usrp_run_multi_thread.xml b/ci-scripts/xml_files/gnb_nr_ue_usrp_run_multi_thread.xml
index f91077aacfda89af28d5dee9190554b18e5a2add..ffd41e9e8618da4cd244fee02c1307d0259fe2a4 100644
--- a/ci-scripts/xml_files/gnb_nr_ue_usrp_run_multi_thread.xml
+++ b/ci-scripts/xml_files/gnb_nr_ue_usrp_run_multi_thread.xml
@@ -52,7 +52,7 @@
         <testCase id="090104">
                 <class>Initialize_OAI_UE</class>
                 <desc>Initialize NR UE USRP</desc>
-		<Initialize_OAI_UE_args>--phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain 75  --rrc_config_path . --dlsch-parallel 4 --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
+		<Initialize_OAI_UE_args>--phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain 75  --rrc_config_path . --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
 		<air_interface>NR</air_interface>
         </testCase>
 
diff --git a/common/utils/threadPool/thread-pool.c b/common/utils/threadPool/thread-pool.c
index d1af56b4775dd8d4374881eb7a8c7c5a029c662a..75252a9143c9db38ff9520ac1d4244c928c6ec5a 100644
--- a/common/utils/threadPool/thread-pool.c
+++ b/common/utils/threadPool/thread-pool.c
@@ -111,7 +111,7 @@ void initNamedTpool(char *params,tpool_t *pool, bool performanceMeas, char *name
 
   if (measr) {
     mkfifo(measr,0666);
-    AssertFatal(-1 != (pool->dummyTraceFd=
+    AssertFatal(-1 != (pool->dummyKeepReadingTraceFd=
                          open(measr, O_RDONLY| O_NONBLOCK)),"");
     AssertFatal(-1 != (pool->traceFd=
                          open(measr, O_WRONLY|O_APPEND|O_NOATIME|O_NONBLOCK)),"");
@@ -130,6 +130,7 @@ void initNamedTpool(char *params,tpool_t *pool, bool performanceMeas, char *name
     int c=toupper(curptr[0]);
 
     switch (c) {
+
       case 'N':
         pool->activated=false;
         break;
@@ -161,6 +162,17 @@ void initNamedTpool(char *params,tpool_t *pool, bool performanceMeas, char *name
   }
 }
 
+void initFloatingCoresTpool(int nbThreads,tpool_t *pool, bool performanceMeas, char *name) {
+  char threads[1024] = "n";
+  if (nbThreads) {
+    strcpy(threads,"-1");
+    for (int i=1; i < nbThreads; i++)
+      strncat(threads,",-1", sizeof(threads-1));
+  }
+  threads[sizeof(threads-1)]=0;
+  initNamedTpool(threads, pool, performanceMeas, name);
+}
+
 #ifdef TEST_THREAD_POOL
 volatile int oai_exit=0;
 
diff --git a/common/utils/threadPool/thread-pool.h b/common/utils/threadPool/thread-pool.h
index 0e4630117d0c7d620b002394664aae69dd879ed8..81eef5d7e7f62f31b59674f7eaae533d6701bfb3 100644
--- a/common/utils/threadPool/thread-pool.h
+++ b/common/utils/threadPool/thread-pool.h
@@ -256,9 +256,8 @@ typedef struct thread_pool {
   bool activated;
   bool measurePerf;
   int traceFd;
-  int dummyTraceFd;
+  int dummyKeepReadingTraceFd;
   uint64_t cpuCyclesMicroSec;
-  uint64_t startProcessingUE;
   int nbThreads;
   notifiedFIFO_t incomingFifo;
   struct one_thread *allthreads;
@@ -389,5 +388,6 @@ static inline int abortTpool(tpool_t *t) {
   return nbRemoved;
 }
 void initNamedTpool(char *params,tpool_t *pool, bool performanceMeas, char *name);
+void initFloatingCoresTpool(int nbThreads,tpool_t *pool, bool performanceMeas, char *name);
 #define  initTpool(PARAMPTR,TPOOLPTR, MEASURFLAG) initNamedTpool(PARAMPTR,TPOOLPTR, MEASURFLAG, NULL)
 #endif
diff --git a/executables/main-ocp.c b/executables/main-ocp.c
index 3a1ad6ec19dba5ba555dbfbbd0eabb6a19ce0105..d05b683f3931003f8d3903405133365d89812620 100644
--- a/executables/main-ocp.c
+++ b/executables/main-ocp.c
@@ -1273,11 +1273,7 @@ int main ( int argc, char **argv ) {
         L1proc->respEncode=(notifiedFIFO_t *) malloc(sizeof(notifiedFIFO_t));
         L1proc->respDecode=(notifiedFIFO_t *) malloc(sizeof(notifiedFIFO_t));
 
-        if ( strlen(get_softmodem_params()->threadPoolConfig) > 0 )
-          initTpool(get_softmodem_params()->threadPoolConfig, L1proc->threadPool, true);
-        else
-          initTpool("n", L1proc->threadPool, true);
-
+        initTpool(get_softmodem_params()->threadPoolConfig, L1proc->threadPool,cpumeas(CPUMEAS_GETSTATE));
         initNotifiedFIFO(L1proc->respEncode);
         initNotifiedFIFO(L1proc->respDecode);
       }
diff --git a/executables/nr-gnb.c b/executables/nr-gnb.c
index 14eefa1e3243e3398490e29c9fa878dbd116fded..f31cc0c871955a708696c84ab3d019da6ed24178 100644
--- a/executables/nr-gnb.c
+++ b/executables/nr-gnb.c
@@ -430,19 +430,8 @@ void init_gNB_Tpool(int inst) {
   gNB = RC.gNB[inst];
   gNB_L1_proc_t *proc = &gNB->proc;
 
-  int numCPU = sysconf(_SC_NPROCESSORS_ONLN);
-  LOG_I(PHY,"Number of threads requested in config file: %d, Number of threads available on this machine: %d\n",gNB->thread_pool_size,numCPU);
-  int threadCnt = min(numCPU, gNB->thread_pool_size);
-  if (threadCnt < 2) LOG_E(PHY,"Number of threads for gNB should be more than 1. Allocated only %d\n",threadCnt);
-  char pool[80];
-  sprintf(pool,"-1");
-  int s_offset = 0;
-  for (int icpu=1; icpu<threadCnt; icpu++) {
-    sprintf(pool+2+s_offset,",-1");
-    s_offset += 3;
-  }
-  if (getenv("noThreads")) strcpy(pool, "n");
-  initTpool(pool, &gNB->threadPool, cpumeas(CPUMEAS_GETSTATE));
+  // ULSCH decoding threadpool
+  initTpool(get_softmodem_params()->threadPoolConfig, &gNB->threadPool, cpumeas(CPUMEAS_GETSTATE));
   // ULSCH decoder result FIFO
   initNotifiedFIFO(&gNB->respDecode);
 
diff --git a/executables/nr-ue.c b/executables/nr-ue.c
index 821325f5f14eaf3af772a2d586f3b74a53c013c7..08cb7de7e5f043f51b05834baca42a0a2d2cbcb9 100644
--- a/executables/nr-ue.c
+++ b/executables/nr-ue.c
@@ -678,7 +678,7 @@ void processSlotRX(void *arg) {
     phy_procedures_slot_parallelization_nrUE_RX( UE, proc, 0, 0, 1, no_relay, NULL );
 #else
     uint64_t a=rdtsc_oai();
-    phy_procedures_nrUE_RX(UE, proc, gNB_id, get_nrUE_params()->nr_dlsch_parallel, &phy_pdcch_config, &rxtxD->txFifo);
+    phy_procedures_nrUE_RX(UE, proc, gNB_id, &phy_pdcch_config, &rxtxD->txFifo);
     LOG_D(PHY, "In %s: slot %d, time %llu\n", __FUNCTION__, proc->nr_slot_rx, (rdtsc_oai()-a)/3500);
 #endif
 
diff --git a/executables/nr-uesoftmodem.c b/executables/nr-uesoftmodem.c
index 92dab900149a4679a90b78350114a4462414ab3d..d6e6b7c1affdc3c7162d9057682a8ee6d898e8e9 100644
--- a/executables/nr-uesoftmodem.c
+++ b/executables/nr-uesoftmodem.c
@@ -243,20 +243,7 @@ uint64_t set_nrUE_optmask(uint64_t bitmask) {
 nrUE_params_t *get_nrUE_params(void) {
   return &nrUE_params;
 }
-/* initialie thread pools used for NRUE processing paralleliation */ 
-void init_tpools(uint8_t nun_dlsch_threads) {
-  char params[NR_RX_NB_TH*NR_NB_TH_SLOT*3+1]={0};
-  for (int i=0; i<NR_RX_NB_TH*NR_NB_TH_SLOT; i++) {
-    memcpy(params+(i*3),"-1,",3);
-  }
-  if (getenv("noThreads")) {
-     initTpool("n", &(nrUE_params.Tpool), false);
-     init_dlsch_tpool(0);
-   } else {
-     initTpool(params, &(nrUE_params.Tpool), false);
-     init_dlsch_tpool( nun_dlsch_threads);
-   }
-}
+
 static void get_options(void) {
 
   paramdef_t cmdline_params[] =CMDLINE_NRUEPARAMS_DESC ;
@@ -438,7 +425,7 @@ int main( int argc, char **argv ) {
 #if T_TRACER
   T_Config_Init();
 #endif
-  init_tpools(nrUE_params.nr_dlsch_parallel);
+  initTpool(get_softmodem_params()->threadPoolConfig, &(nrUE_params.Tpool), cpumeas(CPUMEAS_GETSTATE));
   //randominit (0);
   set_taus_seed (0);
 
diff --git a/executables/nr-uesoftmodem.h b/executables/nr-uesoftmodem.h
index c118db5483c1cf51bce83a2e5ccc94c46c7255ed..77e7d9e0533dd4587240b46183a354605889023d 100644
--- a/executables/nr-uesoftmodem.h
+++ b/executables/nr-uesoftmodem.h
@@ -31,7 +31,7 @@
 #define CMDLINE_NRUEPARAMS_DESC {  \
     {"usrp-args",                CONFIG_HLP_USRP_ARGS,   0,               strptr:&usrp_args,         defstrval:"type=b200", TYPE_STRING,   0},    \
     {"single-thread-disable",    CONFIG_HLP_NOSNGLT,     PARAMFLAG_BOOL,  iptr:&single_thread_flag,           defintval:1,           TYPE_INT,    0}, \
-    {"dlsch-parallel",           CONFIG_HLP_DLSCH_PARA,  0,               u8ptr:&nrUE_params.nr_dlsch_parallel,       defintval:0,           TYPE_UINT8,  0}, \
+    {"dlsch-parallel",           CONFIG_HLP_DLSCH_PARA,  0,               u8ptr:NULL,       defintval:0,           TYPE_UINT8,  0}, \
     {"offset-divisor",           CONFIG_HLP_OFFSET_DIV,  0,               uptr:&nrUE_params.ofdm_offset_divisor,    defuintval:8,           TYPE_UINT32,  0}, \
     {"max-ldpc-iterations",      CONFIG_HLP_MAX_LDPC_ITERATIONS, 0,       u8ptr:&nrUE_params.max_ldpc_iterations,    defuintval:5,       TYPE_UINT8, 0}, \
     {"nr-dlsch-demod-shift",     CONFIG_HLP_DLSHIFT,     0,               iptr:(int32_t *)&nr_dlsch_demod_shift,    defintval:0,     TYPE_INT,    0}, \
@@ -78,7 +78,6 @@
 typedef struct {
   uint64_t       optmask;   //mask to store boolean config options
   uint32_t       ofdm_offset_divisor; // Divisor for sample offset computation for each OFDM symbol
-  uint8_t        nr_dlsch_parallel; // number of threads for dlsch decoding, 0 means no parallelization
   uint8_t        max_ldpc_iterations; // number of maximum LDPC iterations
   tpool_t        Tpool;             // thread pool 
 } nrUE_params_t;
diff --git a/executables/softmodem-common.h b/executables/softmodem-common.h
index 8a898c69b8ff50b9b1e79fbe210492b13dc837fc..e7ef15aab0d015d972b562b50cd1648d24850dd6 100644
--- a/executables/softmodem-common.h
+++ b/executables/softmodem-common.h
@@ -139,7 +139,7 @@ extern int usrp_tx_thread;
 #define CMDLINE_PARAMS_DESC {  \
     {"rf-config-file",       CONFIG_HLP_RFCFGF,       0,              strptr:&RF_CONFIG_FILE,    defstrval:NULL,        TYPE_STRING, 0},\
     {"split73",              CONFIG_HLP_SPLIT73,      0,              strptr:&SPLIT73,           defstrval:NULL,        TYPE_STRING, 0},       \
-    {"thread-pool",          CONFIG_HLP_TPOOL,        0,              strptr:&TP_CONFIG,         defstrval:"n",         TYPE_STRING, 0},     \
+    {"thread-pool",          CONFIG_HLP_TPOOL,        0,              strptr:&TP_CONFIG,         defstrval:"-1,-1,-1,-1,-1,-1,-1,-1",         TYPE_STRING, 0},     \
     {"phy-test",             CONFIG_HLP_PHYTST,       PARAMFLAG_BOOL, iptr:&PHY_TEST,                     defintval:0,           TYPE_INT,    0},                     \
     {"do-ra",                CONFIG_HLP_DORA,         PARAMFLAG_BOOL, iptr:&DO_RA,                        defintval:0,           TYPE_INT,    0},                     \
     {"sa",                   CONFIG_HLP_SA,           PARAMFLAG_BOOL, iptr:&SA,                           defintval:0,           TYPE_INT,    0},                     \
diff --git a/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c b/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
index a6dde08a2c158926e53ee58fa5d2ed0c1f36f2bf..f71ca76b714bfe649903ea8325580c00f7e8c745 100644
--- a/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
+++ b/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
@@ -335,7 +335,10 @@ int ulsch_decoding_data(PHY_VARS_eNB *eNB, L1_rxtx_proc_t *proc,
     }
 
     union turboReqUnion id= {.s={ulsch->rnti,proc->frame_rx,proc->subframe_rx,0,0}};
-    notifiedFIFO_elt_t *req=newNotifiedFIFO_elt(sizeof(turboDecode_t), id.p, proc->respDecode, processULSegment);
+    notifiedFIFO_elt_t *req=newNotifiedFIFO_elt(sizeof(turboDecode_t),
+                                                id.p,
+                                                proc->respDecode,
+                                                processULSegment);
     turboDecode_t * rdata=(turboDecode_t *) NotifiedFifoData(req);
 
     rdata->eNB=eNB;
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
index e6833c4cb45f78a690f30ea42e261d43e5f94a67..3be0b096e7b7cc8ab00c967b5442cba0b1a1834f 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
@@ -57,29 +57,6 @@ notifiedFIFO_t freeBlocks_dl;
 notifiedFIFO_elt_t *msgToPush_dl;
 int nbDlProcessing =0;
 
-
-static  tpool_t pool_dl;
-//extern double cpuf;
-
-void init_dlsch_tpool(uint8_t num_dlsch_threads) {
-  char *params = NULL;
-
-  if( num_dlsch_threads==0) {
-    params = calloc(1,2);
-    memcpy(params,"N",1);
-  }
-  else {
-    params = calloc(1,(num_dlsch_threads*3)+1);
-    for (int i=0; i<num_dlsch_threads; i++) {
-      memcpy(params+(i*3),"-1,",3);
-    }
-  }
-
-  initNamedTpool(params, &pool_dl, false,"dlsch");
-  free(params);
-}
-
-
 void free_nr_ue_dlsch(NR_UE_DLSCH_t **dlschptr, uint16_t N_RB_DL) {
 
   uint16_t a_segments = MAX_NUM_NR_DLSCH_SEGMENTS_PER_LAYER*NR_MAX_NB_LAYERS;
@@ -207,7 +184,7 @@ bool nr_ue_postDecode(PHY_VARS_NR_UE *phy_vars_ue, notifiedFIFO_elt_t *req, bool
 
   } else {
     if ( !last ) {
-      int nb=abortTpoolJob(&(pool_dl), req->key);
+      int nb=abortTpoolJob(&get_nrUE_params()->Tpool, req->key);
       nb+=abortNotifiedFIFOJob(nf_p, req->key);
       LOG_D(PHY,"downlink segment error %d/%d, aborted %d segments\n",rdata->segment_r,rdata->nbSegments, nb);
       LOG_D(PHY, "DLSCH %d in error\n",rdata->dlsch_id);
@@ -606,7 +583,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
     reset_meas(&rdata->ts_deinterleave);
     reset_meas(&rdata->ts_rate_unmatch);
     reset_meas(&rdata->ts_ldpc_decode);
-    pushTpool(&(pool_dl),req);
+    pushTpool(&get_nrUE_params()->Tpool,req);
     nbDecode++;
     LOG_D(PHY,"Added a block to decode, in pipe: %d\n",nbDecode);
     r_offset += E;
@@ -614,9 +591,13 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
     //////////////////////////////////////////////////////////////////////////////////////////
   }
   for (r=0; r<nbDecode; r++) {
+<<<<<<< HEAD
     notifiedFIFO_elt_t *req=pullTpool(&nf, &(pool_dl));
     if (req == NULL)
       break; // Tpool has been stopped
+=======
+    notifiedFIFO_elt_t *req=pullTpool(&nf, &get_nrUE_params()->Tpool);
+>>>>>>> e9caae6f99 (simplify thread pool configuration)
     bool last = false;
     if (r == nbDecode - 1)
       last = true;
diff --git a/openair1/PHY/defs_gNB.h b/openair1/PHY/defs_gNB.h
index ef66bf5fef808c3dff1c6c0aa0a17fd5f0542f9a..5a30663701816d01111814e3436d9f54fb312c0c 100644
--- a/openair1/PHY/defs_gNB.h
+++ b/openair1/PHY/defs_gNB.h
@@ -894,7 +894,6 @@ typedef struct PHY_VARS_gNB_s {
   notifiedFIFO_t resp_RU_tx;
   tpool_t threadPool;
   int nbDecode;
-  uint8_t thread_pool_size;
   int number_of_nr_dlsch_max;
   int number_of_nr_ulsch_max;
   void * scopeData;
diff --git a/openair1/SCHED_NR_UE/defs.h b/openair1/SCHED_NR_UE/defs.h
index fa354d228432f85487f1e3f76c2597b250671c7f..c4436341fc073f58f5bf49b00c1a7ca67debf6fb 100644
--- a/openair1/SCHED_NR_UE/defs.h
+++ b/openair1/SCHED_NR_UE/defs.h
@@ -126,7 +126,6 @@ void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint8_t
 int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
                            UE_nr_rxtx_proc_t *proc,
                            uint8_t gNB_id,
-                           uint8_t dlsch_parallel,
                            NR_UE_PDCCH_CONFIG *phy_pdcch_config,
                            notifiedFIFO_t *txFifo);
 
diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
index 4a76608dc02a5be9c696ea496cd0014a87403ce5..c68702fa3fa90cfba5378461118b4f84a32728e4 100644
--- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
@@ -1325,7 +1325,6 @@ void *UE_thread_slot1_dl_processing(void *arg) {
 int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
                            UE_nr_rxtx_proc_t *proc,
                            uint8_t gNB_id,
-                           uint8_t dlsch_parallel,
                            NR_UE_PDCCH_CONFIG *phy_pdcch_config,
                            notifiedFIFO_t *txFifo) {
 
diff --git a/openair1/SIMULATION/NR_PHY/dlschsim.c b/openair1/SIMULATION/NR_PHY/dlschsim.c
index f718aad9f0438026c6d7b9dac69c1245eeb23993..60a3342ab4729550afb6e6c569fbad3c57e9c169 100644
--- a/openair1/SIMULATION/NR_PHY/dlschsim.c
+++ b/openair1/SIMULATION/NR_PHY/dlschsim.c
@@ -48,6 +48,7 @@
 #include "openair1/SIMULATION/NR_PHY/nr_unitary_defs.h"
 #include "openair1/SIMULATION/NR_PHY/nr_dummy_functions.c"
 #include "openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h"
+#include "executables/nr-uesoftmodem.h"
 
 
 //#define DEBUG_NR_DLSCHSIM
@@ -73,6 +74,13 @@ openair0_config_t openair0_cfg[MAX_CARDS];
 
 void init_downlink_harq_status(NR_DL_UE_HARQ_t *dl_harq) {}
 
+
+nrUE_params_t nrUE_params={0};
+
+nrUE_params_t *get_nrUE_params(void) {
+  return &nrUE_params;
+}
+
 int main(int argc, char **argv)
 {
 	char c;
@@ -344,7 +352,6 @@ int main(int argc, char **argv)
 
 	if (snr1set == 0)
 		snr1 = snr0 + 10;
-	init_dlsch_tpool(dlsch_threads);
 
 	if (ouput_vcd)
         vcd_signal_dumper_init("/tmp/openair_dump_nr_dlschsim.vcd");
@@ -363,7 +370,8 @@ int main(int argc, char **argv)
 	RC.gNB = (PHY_VARS_gNB **) malloc(sizeof(PHY_VARS_gNB *));
 	RC.gNB[0] = calloc(1, sizeof(PHY_VARS_gNB));
 	gNB = RC.gNB[0];
-	initTpool(gNBthreads, &gNB->threadPool, true);
+	initNamedTpool(gNBthreads, &gNB->threadPool, true, "gNB-tpool");
+        initFloatingCoresTpool(dlsch_threads, &nrUE_params.Tpool, false, "UE-tpool");
 	//gNB_config = &gNB->gNB_config;
 	frame_parms = &gNB->frame_parms; //to be initialized I suppose (maybe not necessary for PBCH)
 	frame_parms->nb_antennas_tx = n_tx;
diff --git a/openair1/SIMULATION/NR_PHY/dlsim.c b/openair1/SIMULATION/NR_PHY/dlsim.c
index 0f573789469d3a0f184c5e04e13faeee4a625974..7e141fae5771383abb8c277d40e3afd557b84b40 100644
--- a/openair1/SIMULATION/NR_PHY/dlsim.c
+++ b/openair1/SIMULATION/NR_PHY/dlsim.c
@@ -73,6 +73,7 @@
 
 #include <executables/softmodem-common.h>
 #include <openair3/ocp-gtpu/gtp_itf.h>
+#include <executables/nr-uesoftmodem.h>
 
 const char *__asan_default_options()
 {
@@ -362,12 +363,6 @@ void nr_dlsim_preprocessor(module_id_t module_id,
   AssertFatal(current_BWP->mcsTableIdx >= 0 && current_BWP->mcsTableIdx <= 2, "invalid mcsTableIdx %d\n", current_BWP->mcsTableIdx);
 }
 
-typedef struct {
-  uint64_t       optmask;   //mask to store boolean config options
-  uint8_t        nr_dlsch_parallel; // number of threads for dlsch decoding, 0 means no parallelization
-  tpool_t        Tpool;             // thread pool
-} nrUE_params_t;
-
 nrUE_params_t nrUE_params;
 
 nrUE_params_t *get_nrUE_params(void) {
@@ -475,7 +470,7 @@ int main(int argc, char **argv)
 
   FILE *scg_fd=NULL;
   
-  while ((c = getopt (argc, argv, "f:hA:pf:g:i:n:s:S:t:x:y:z:M:N:F:GR:dPI:L:Ea:b:d:e:m:w:T:U:q:X:Y")) != -1) {
+  while ((c = getopt (argc, argv, "f:hA:pf:g:i:n:s:S:t:x:y:z:M:N:F:GR:d:PI:L:Ea:b:e:m:w:T:U:q:X:Y")) != -1) {
     switch (c) {
     case 'f':
       scg_fd = fopen(optarg,"r");
@@ -642,7 +637,7 @@ int main(int argc, char **argv)
       g_rbSize = atoi(optarg);
       break;
 
-    case 'D':
+    case 'd':
       dlsch_threads = atoi(optarg);
       break;
 
@@ -748,8 +743,6 @@ int main(int argc, char **argv)
 
   if (snr1set==0)
     snr1 = snr0+10;
-  init_dlsch_tpool(dlsch_threads);
-
 
   RC.gNB = (PHY_VARS_gNB**) malloc(sizeof(PHY_VARS_gNB *));
   RC.gNB[0] = (PHY_VARS_gNB*) malloc(sizeof(PHY_VARS_gNB ));
@@ -1001,7 +994,7 @@ int main(int argc, char **argv)
   unsigned char *test_input_bit;
   unsigned int errors_bit    = 0;
 
-  initTpool("N", &(nrUE_params.Tpool), false);
+  initFloatingCoresTpool(dlsch_threads, &nrUE_params.Tpool, false, "UE-tpool");
 
   test_input_bit       = (unsigned char *) malloc16(sizeof(unsigned char) * 16 * 68 * 384);
   estimated_output_bit = (unsigned char *) malloc16(sizeof(unsigned char) * 16 * 68 * 384);
@@ -1042,7 +1035,7 @@ int main(int argc, char **argv)
   snrRun = 0;
   int n_errs = 0;
 
-  initTpool(gNBthreads, &gNB->threadPool, true);
+  initNamedTpool(gNBthreads, &gNB->threadPool, true, "gNB-tpool");
   initNotifiedFIFO(&gNB->L1_tx_free);
   initNotifiedFIFO(&gNB->L1_tx_filled);
   initNotifiedFIFO(&gNB->L1_tx_out);
@@ -1268,7 +1261,6 @@ int main(int argc, char **argv)
         phy_procedures_nrUE_RX(UE,
                                &UE_proc,
                                0,
-                               dlsch_threads,
                                &phy_pdcch_config,
                                NULL);
         
diff --git a/openair1/SIMULATION/NR_PHY/pbchsim.c b/openair1/SIMULATION/NR_PHY/pbchsim.c
index 0e648c945f8a5ea01aed0fbdbaa5d6c576076734..999b949c8803a52bd63a7147882d1b0e9efbdd5a 100644
--- a/openair1/SIMULATION/NR_PHY/pbchsim.c
+++ b/openair1/SIMULATION/NR_PHY/pbchsim.c
@@ -50,6 +50,7 @@
 #include "openair1/SIMULATION/NR_PHY/nr_dummy_functions.c"
 #include "openair1/PHY/MODULATION/nr_modulation.h"
 #include <executables/softmodem-common.h>
+#include <executables/nr-uesoftmodem.h>
 //#define DEBUG_NR_PBCHSIM
 
 PHY_VARS_gNB *gNB;
@@ -72,6 +73,12 @@ softmodem_params_t *get_softmodem_params(void) {
   return &softmodem_params;
 }
 
+nrUE_params_t nrUE_params={0};
+
+nrUE_params_t *get_nrUE_params(void) {
+  return &nrUE_params;
+}
+
 void init_downlink_harq_status(NR_DL_UE_HARQ_t *dl_harq) {}
 
 int nr_ue_pdcch_procedures(uint8_t gNB_id,
diff --git a/openair1/SIMULATION/NR_PHY/prachsim.c b/openair1/SIMULATION/NR_PHY/prachsim.c
index 76776ce1101a9a049661bdab78e3885c551f60af..3622ba49ba58180fb274b0f8ee2ebc0c0580bccc 100644
--- a/openair1/SIMULATION/NR_PHY/prachsim.c
+++ b/openair1/SIMULATION/NR_PHY/prachsim.c
@@ -54,6 +54,7 @@
 #include <openair2/RRC/NR_UE/rrc_defs.h>
 //#include "openair1/SIMULATION/NR_PHY/nr_dummy_functions.c"
 #include <openair3/ocp-gtpu/gtp_itf.h>
+#include "executables/nr-uesoftmodem.h"
 
 #define NR_PRACH_DEBUG 1
 #define PRACH_WRITE_OUTPUT_DEBUG 1
@@ -223,12 +224,6 @@ int DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(module_id_t     module_idP,
   return 0;
 }
 
-typedef struct {
-  uint64_t       optmask;   //mask to store boolean config options
-  uint8_t        nr_dlsch_parallel; // number of threads for dlsch decoding, 0 means no parallelization
-  tpool_t        Tpool;             // thread pool
-} nrUE_params_t;
-
 nrUE_params_t nrUE_params;
 
 nrUE_params_t *get_nrUE_params(void) {
diff --git a/openair1/SIMULATION/NR_PHY/pucchsim.c b/openair1/SIMULATION/NR_PHY/pucchsim.c
index 1d1d2f8fa5c41caaa811348ad9fcd4d53214922f..fd3231ee330e9ec4e0127eab83ba104315e60d7b 100644
--- a/openair1/SIMULATION/NR_PHY/pucchsim.c
+++ b/openair1/SIMULATION/NR_PHY/pucchsim.c
@@ -47,6 +47,7 @@
 #include "openair1/SIMULATION/RF/rf.h"
 #include "openair1/SIMULATION/NR_PHY/nr_unitary_defs.h"
 #include "openair1/SIMULATION/NR_PHY/nr_dummy_functions.c"
+#include "executables/nr-uesoftmodem.h"
 
 THREAD_STRUCT thread_struct;
 PHY_VARS_gNB *gNB;
@@ -66,6 +67,13 @@ PHY_VARS_NR_UE * PHY_vars_UE_g[1][1]={{NULL}};
 
 void init_downlink_harq_status(NR_DL_UE_HARQ_t *dl_harq) {}
 
+nrUE_params_t nrUE_params={0};
+
+nrUE_params_t *get_nrUE_params(void) {
+  return &nrUE_params;
+}
+
+
 int main(int argc, char **argv)
 {
   char c;
diff --git a/openair1/SIMULATION/NR_PHY/ulschsim.c b/openair1/SIMULATION/NR_PHY/ulschsim.c
index 222cd1da7d9d286556f7029219ac5af397a56600..9150420d9d15ec25d574c233981e9ad7e9fb71d1 100644
--- a/openair1/SIMULATION/NR_PHY/ulschsim.c
+++ b/openair1/SIMULATION/NR_PHY/ulschsim.c
@@ -48,6 +48,7 @@
 #include "openair1/SIMULATION/NR_PHY/nr_dummy_functions.c"
 #include "common/utils/threadPool/thread-pool.h"
 #include "openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h"
+#include "executables/nr-uesoftmodem.h"
 
 //#define DEBUG_NR_ULSCHSIM
 
@@ -109,6 +110,13 @@ int nr_postDecode_sim(PHY_VARS_gNB *gNB, notifiedFIFO_elt_t *req) {
     ulsch->last_iteration_cnt = rdata->decodeIterations;
   return 0;
 }
+
+nrUE_params_t nrUE_params;
+
+nrUE_params_t *get_nrUE_params(void) {
+  return &nrUE_params;
+}
+
 int main(int argc, char **argv)
 {
   char c;
@@ -387,8 +395,7 @@ int main(int argc, char **argv)
   gNB = RC.gNB[0];
   //gNB_config = &gNB->gNB_config;
 
-  char tp_param[] = "n";
-  initTpool(tp_param, &gNB->threadPool, true);
+  initTpool("n", &gNB->threadPool, true);
   initNotifiedFIFO(&gNB->respDecode);
   frame_parms = &gNB->frame_parms; //to be initialized I suppose (maybe not necessary for PBCH)
   frame_parms->N_RB_DL = N_RB_DL;
diff --git a/openair1/SIMULATION/NR_PHY/ulsim.c b/openair1/SIMULATION/NR_PHY/ulsim.c
index f4dece26ffd5d65f0ed2c43efe29c114971ded6c..ab13c0aa4c0125471eba5718f067dfeda621ce8a 100644
--- a/openair1/SIMULATION/NR_PHY/ulsim.c
+++ b/openair1/SIMULATION/NR_PHY/ulsim.c
@@ -67,6 +67,7 @@
 #include <executables/softmodem-common.h>
 #include "PHY/NR_REFSIG/ul_ref_seq_nr.h"
 #include <openair3/ocp-gtpu/gtp_itf.h>
+#include "executables/nr-uesoftmodem.h"
 //#define DEBUG_ULSIM
 
 const char *__asan_default_options()
@@ -254,12 +255,6 @@ int nr_derive_key(int alg_type, uint8_t alg_id,
   return 0;
 }
 
-typedef struct {
-  uint64_t       optmask;   //mask to store boolean config options
-  uint8_t        nr_dlsch_parallel; // number of threads for dlsch decoding, 0 means no parallelization
-  tpool_t        Tpool;             // thread pool 
-} nrUE_params_t;
-
 void processSlotTX(void *arg) {}
 
 nrUE_params_t nrUE_params;
@@ -700,18 +695,9 @@ int main(int argc, char **argv)
   RC.gNB[0] = calloc(1,sizeof(PHY_VARS_gNB));
   gNB = RC.gNB[0];
   gNB->ofdm_offset_divisor = UINT_MAX;
-  char tp_param[80];
-  if (threadCnt>0)
-   sprintf(tp_param,"-1");
-  else
-   tp_param[0]='n';
-  int s_offset = 0;
-  for (int icpu=1; icpu<threadCnt; icpu++) {
-    sprintf(tp_param+2+s_offset,",-1");
-    s_offset += 3;
-  }
+  initNotifiedFIFO(&gNB->respDecode);
 
-  initTpool(tp_param, &gNB->threadPool, false);
+  initFloatingCoresTpool(threadCnt, &gNB->threadPool, false, "gNB-tpool");
   initNotifiedFIFO(&gNB->respDecode);
   initNotifiedFIFO(&gNB->L1_tx_free);
   initNotifiedFIFO(&gNB->L1_tx_filled);
diff --git a/openair2/GNB_APP/L1_nr_paramdef.h b/openair2/GNB_APP/L1_nr_paramdef.h
index 1e5122956e0a4532ec79bff7b6083a5b1ed7cdcc..89558e2d51a61c210c570f2919f1ce7ba98ed589 100644
--- a/openair2/GNB_APP/L1_nr_paramdef.h
+++ b/openair2/GNB_APP/L1_nr_paramdef.h
@@ -66,7 +66,7 @@
 {CONFIG_STRING_L1_REMOTE_N_PORTC,                    NULL,      0,         uptr:NULL,           defintval:50030,           TYPE_UINT,     0},         \
 {CONFIG_STRING_L1_LOCAL_N_PORTD,                     NULL,      0,         uptr:NULL,           defintval:50031,           TYPE_UINT,     0},         \
 {CONFIG_STRING_L1_REMOTE_N_PORTD,                    NULL,      0,         uptr:NULL,           defintval:50031,           TYPE_UINT,     0},         \
-{CONFIG_STRING_L1_THREAD_POOL_SIZE, "Maximum number of CPU cores for L1 processing (either max HW CPU cores or this value is used)",      0,         uptr:NULL,           defintval:4,               TYPE_UINT,     0},         \
+{CONFIG_STRING_L1_THREAD_POOL_SIZE, "removed, please use --thread-pool",      0,         uptr:NULL,           defintval:2022,               TYPE_UINT,     0},         \
 {CONFIG_STRING_L1_OFDM_OFFSET_DIVISOR,               NULL,      0,         uptr:NULL,           defuintval:8,              TYPE_UINT,     0},         \
 {CONFIG_STRING_L1_PUCCH0_DTX_THRESHOLD,              NULL,      0,         uptr:NULL,           defintval:100,             TYPE_UINT,     0},         \
 {CONFIG_STRING_L1_PRACH_DTX_THRESHOLD,               NULL,      0,         uptr:NULL,           defintval:150,             TYPE_UINT,     0},         \
diff --git a/openair2/GNB_APP/gnb_config.c b/openair2/GNB_APP/gnb_config.c
index 0beba58e8cfcaf4bc476cd6bae2104b9124b964d..69143acdee91dd8274882af9d0de6d3ce78abbba 100644
--- a/openair2/GNB_APP/gnb_config.c
+++ b/openair2/GNB_APP/gnb_config.c
@@ -725,8 +725,8 @@ void RCconfig_NR_L1(void) {
         memset(RC.gNB[j],0,sizeof(PHY_VARS_gNB));
 	      RC.gNB[j]->Mod_id  = j;
       }
-
-      RC.gNB[j]->thread_pool_size   = *(L1_ParamList.paramarray[j][L1_THREAD_POOL_SIZE].uptr);
+      AssertFatal(*L1_ParamList.paramarray[j][L1_THREAD_POOL_SIZE].uptr == 2022,
+                  "thread_pool_size removed, please use --thread-pooli\n");
       RC.gNB[j]->ofdm_offset_divisor = *(L1_ParamList.paramarray[j][L1_OFDM_OFFSET_DIVISOR].uptr);
       RC.gNB[j]->pucch0_thres       = *(L1_ParamList.paramarray[j][L1_PUCCH0_DTX_THRESHOLD].uptr);
       RC.gNB[j]->prach_thres        = *(L1_ParamList.paramarray[j][L1_PRACH_DTX_THRESHOLD].uptr);
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf
index c8e109d30230f435ee788e4d49a1893ae3dc8b33..cbad6fe187930494c5ee64c105a4b89d4d46e9db 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf
@@ -216,7 +216,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
 }
 );
 
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpn300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpn300.conf
index a4c877a7bafcb46427cdad068e1c89054929d802..c09f10ea0b9e96d8800fd441935a68b40fdb9b6b 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpn300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpn300.conf
@@ -210,7 +210,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpx300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpx300.conf
index e5478983cff20909524743e70280d66148b8ac8c..44a17612a97251c1f0d43c1953fd821dd19aabfa 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpx300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpx300.conf
@@ -196,7 +196,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.66PRB.usrpn300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.66PRB.usrpn300.conf
index efa0d3e2fa0db1266a8ae08c54087acacb632528..716e222d60de93cb3876c0bfcf607ab0c1bdd96b 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.66PRB.usrpn300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.66PRB.usrpn300.conf
@@ -192,7 +192,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band261.tm1.32PRB.usrpn300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band261.tm1.32PRB.usrpn300.conf
index 8a2ce9f63ecc361c7de47e3508384c64e6eaf1f1..78bc1220e83fff230507a4c535ba0aac692ba1fe 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band261.tm1.32PRB.usrpn300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band261.tm1.32PRB.usrpn300.conf
@@ -210,7 +210,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
 	ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band66.tm1.106PRB.usrpn300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band66.tm1.106PRB.usrpn300.conf
index 616f86a1cd6a5fbb9d8ce94337895c16e1f851af..ab78dfb95003962fb0e6e401eed001a2df494420 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band66.tm1.106PRB.usrpn300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band66.tm1.106PRB.usrpn300.conf
@@ -194,7 +194,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band66.tm1.106PRB.usrpx300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band66.tm1.106PRB.usrpx300.conf
index 0818fe11d7c8f926711b7c34fd42f16876065d58..11b1943b36eeb0361c875831ecee8d749c38642b 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band66.tm1.106PRB.usrpx300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band66.tm1.106PRB.usrpx300.conf
@@ -193,7 +193,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band66.tm1.25PRB.usrpn300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band66.tm1.25PRB.usrpn300.conf
index 022f17e490e140b335f1443b9470bca5bfb0f4d5..d28ac755daf7b6b21e360bb4646ee23aaed05f97 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band66.tm1.25PRB.usrpn300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band66.tm1.25PRB.usrpn300.conf
@@ -193,7 +193,6 @@ L1s = (
 	{
 	num_cc = 1;
 	tr_n_preference = "local_mac";
-	thread_pool_size = 8;
 	ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 	}
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.106PRB.slave.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.106PRB.slave.conf
index 812ac8dafbcb3924ea8cd496fcd3d0ad224f584b..6666d75de5d399fd4a4f1fc28e42db574bee67bf 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.106PRB.slave.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.106PRB.slave.conf
@@ -209,7 +209,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.PTRS.usrpx300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.PTRS.usrpx300.conf
index 1450c45eee0830a579a4b481375a3246346ec4ae..807c7cd28b5f6c722881420c23a55b6400d5cc00 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.PTRS.usrpx300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.PTRS.usrpx300.conf
@@ -241,7 +241,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpb210.conf
index 562e2b16ab0e66c4d02e342892943f9a76fd1576..a818071029b0ca81c6619db5609cbc528d9d8f16 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpb210.conf
@@ -192,7 +192,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf
index a8ecb8c4b6783ba5c29cfc9c16e88a85eb969918..9d4cf054be521b418baf59d6cd1ee86dd56ad2cd 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf
@@ -191,7 +191,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   max_ldpc_iterations = 5;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf
index 10122b9eb2c7a9927e0aad416d0a07281735938c..8193e55979031971f30d17dba90ad8e7c5a2111e 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf
@@ -191,7 +191,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpn300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpn300.conf
index 20d01c2a00d9663cdf4cbfaa3adc9068a2e8f532..e951754bf0acdf4618e9c506d2599c3a79007849 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpn300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpn300.conf
@@ -208,7 +208,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpx300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpx300.conf
index 44f3889eece0e356be101ae7b6bba7e55c386741..80d369beffb2e35a606e1b5b748d7bbfa8182607 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpx300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpx300.conf
@@ -193,7 +193,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.24PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.24PRB.usrpb210.conf
index fbafef81b412d1fd5637f60d689effc07ebbdcc5..f4791448fa789b88995835e45c412d3f17cb0d19 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.24PRB.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.24PRB.usrpb210.conf
@@ -192,7 +192,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.24PRB.usrpn300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.24PRB.usrpn300.conf
index 38d6ed3c610193880649eb047f283b0265cfd2c6..34a6f35f11a1f4a253fa07e13e3888340ea0a9bf 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.24PRB.usrpn300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.24PRB.usrpn300.conf
@@ -192,7 +192,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.24PRB.usrpx300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.24PRB.usrpx300.conf
index b7da7b17f4bd80d52c93652ea07e71b2bb4501bb..c9180420fcd6f7a0318d50e548039dd524906383 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.24PRB.usrpx300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.24PRB.usrpx300.conf
@@ -192,7 +192,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.273PRB.usrpn300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.273PRB.usrpn300.conf
index 9f78716bcc20c4e802d6bb5c1a9bb3855035303a..6aaba26991dfe91b87cbdd869b15590a79263d95 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.273PRB.usrpn300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.273PRB.usrpn300.conf
@@ -193,7 +193,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/oaiL1.nfapi.usrpx300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/oaiL1.nfapi.usrpx300.conf
index 9a0f1cb036c0420cecfd5e515e8861ade4fccee4..818cd3a0be8f04756395569a43420a5da2e74ed3 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/oaiL1.nfapi.usrpx300.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/oaiL1.nfapi.usrpx300.conf
@@ -21,7 +21,6 @@ L1s = (
   remote_n_portc   = 50001; // vnf p5 port
   local_n_portd    = 50010; // pnf p7 port
   remote_n_portd   = 50011; // vnf p7 port
-  thread_pool_size = 8;
 }
 );
 
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf
index 9a3fe358a54a80e534f5941432c46766aeb4312d..bbc12027d225d1a252bc181ef3db7c6b74696e14 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf
@@ -209,7 +209,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb_24PRB.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb_24PRB.conf
index 9e1ae24d673fbf59d3dfae94235f22b32b42c029..6604568be11e4380b37cd4d6ae57e90bc6844630 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb_24PRB.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb_24PRB.conf
@@ -210,7 +210,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
 }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb_nsa_n310.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb_nsa_n310.conf
index 35778ef7059023e9d9e8a0d909453b71c44005a2..ed3a3ce3857a1a2a898352677d4dd7c1a5d3338d 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb_nsa_n310.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb_nsa_n310.conf
@@ -210,7 +210,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
 }
 );
 
diff --git a/targets/PROJECTS/GENERIC-NR-5GC/CONF/du_gnb.conf b/targets/PROJECTS/GENERIC-NR-5GC/CONF/du_gnb.conf
index 4309c13dd395a172e589e66b4efc469e585fbf04..a371380e6e78671721d0d2b3df177c3706441317 100644
--- a/targets/PROJECTS/GENERIC-NR-5GC/CONF/du_gnb.conf
+++ b/targets/PROJECTS/GENERIC-NR-5GC/CONF/du_gnb.conf
@@ -204,7 +204,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
   prach_dtx_threshold = 120;
   pucch0_dtx_threshold = 150;
   ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
diff --git a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.sabox.conf b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.sabox.conf
index 6719a5534d43e8a522760c81119d954343418362..5fcad18f6d3dad9979858b209a66fce9c9615550 100644
--- a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.sabox.conf
+++ b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.sabox.conf
@@ -225,7 +225,6 @@ L1s = (
 {
   num_cc = 1;
   tr_n_preference = "local_mac";
-  thread_pool_size = 8;
 }
 );