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 259a2466ad862387335d729315b5c5580011002e..258618e7f0644e9e8a983350b9d9b93099b8b8aa 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
@@ -1,7 +1,6 @@
 Active_gNBs = ( "gNB-Eurecom-5GNRBox");
 # Asn1_verbosity, choice in: none, info, annoying
 Asn1_verbosity = "none";
-Num_Threads_PUSCH = 8
 
 
 gNBs =
@@ -251,6 +250,7 @@ L1s = (
       {
   num_cc = 1;
   tr_n_preference = "local_mac";
+  pusch_proc_threads = 8;
         }  
 );
 
diff --git a/executables/nr-gnb.c b/executables/nr-gnb.c
index be9261a117828f999f895e152c9cf52cbd4931cb..4a655dfc576b0504b299f25484c5b73b4b5abfed 100644
--- a/executables/nr-gnb.c
+++ b/executables/nr-gnb.c
@@ -873,10 +873,7 @@ void init_gNB_proc(int inst) {
   gNB->threadPool = (tpool_t*)malloc(sizeof(tpool_t));
   gNB->respDecode = (notifiedFIFO_t*) malloc(sizeof(notifiedFIFO_t));
   int numCPU = sysconf(_SC_NPROCESSORS_ONLN);
-  uint32_t num_threads_pusch;
-  paramdef_t PUSCHThreads[] = NUM_THREADS_DESC;
-  config_get( PUSCHThreads,sizeof(PUSCHThreads)/sizeof(paramdef_t),NULL);
-  int threadCnt = min(numCPU, num_threads_pusch);
+  int threadCnt = min(numCPU, gNB->pusch_proc_threads);
   char ul_pool[80];
   sprintf(ul_pool,"-1");
   int s_offset = 0;
diff --git a/openair1/PHY/defs_gNB.h b/openair1/PHY/defs_gNB.h
index 7b33b2040fe33a503e90c60736d834d39d7a7cd8..bf39a7470bccac5a9d6c69f30ac5a72d7ed83bd6 100644
--- a/openair1/PHY/defs_gNB.h
+++ b/openair1/PHY/defs_gNB.h
@@ -834,6 +834,7 @@ typedef struct PHY_VARS_gNB_s {
   notifiedFIFO_t *respDecode;
   tpool_t *threadPool;
   int nbDecode;
+  uint8_t pusch_proc_threads;
 
 } PHY_VARS_gNB;
 
diff --git a/openair2/GNB_APP/L1_nr_paramdef.h b/openair2/GNB_APP/L1_nr_paramdef.h
index a5a808c2811ad21684cabbedb572ea03fc810518..8b63a4be95c5226bc907c578e5e090b25de25e50 100644
--- a/openair2/GNB_APP/L1_nr_paramdef.h
+++ b/openair2/GNB_APP/L1_nr_paramdef.h
@@ -46,6 +46,7 @@
 #define CONFIG_STRING_L1_LOCAL_N_PORTD                     "local_n_portd"
 #define CONFIG_STRING_L1_REMOTE_N_PORTD                    "remote_n_portd"
 #define CONFIG_STRING_L1_TRANSPORT_N_PREFERENCE            "tr_n_preference"
+#define CONFIG_STRING_L1_PUSCH_PROC_THREADS                "pusch_proc_threads"
 
 /*----------------------------------------------------------------------------------------------------------------------------------------------------*/
 /*                                            L1 configuration parameters                                                                             */
@@ -61,6 +62,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_PUSCH_PROC_THREADS,                NULL,      0,         uptr:&pusch_proc_threads,           defintval:1,               TYPE_UINT,     0} \
 }
 #define L1_CC_IDX                                          0
 #define L1_TRANSPORT_N_PREFERENCE_IDX                      1
@@ -71,6 +73,7 @@
 #define L1_REMOTE_N_PORTC_IDX                              6
 #define L1_LOCAL_N_PORTD_IDX                               7
 #define L1_REMOTE_N_PORTD_IDX                              8
+#define L1_PUSCH_PROC_THREADS                              9
 
 /*----------------------------------------------------------------------------------------------------------------------------------------------------*/
 #endif
diff --git a/openair2/GNB_APP/gnb_config.c b/openair2/GNB_APP/gnb_config.c
index 3785ded9e93abbec1098f4ea0f960ec01fa8fd3b..3416554d5cb93e50f06f6c9b2a4a7f65f0984b2f 100644
--- a/openair2/GNB_APP/gnb_config.c
+++ b/openair2/GNB_APP/gnb_config.c
@@ -52,6 +52,7 @@
 #include "nfapi_pnf.h"
 
 #include "L1_paramdef.h"
+#include "L1_nr_paramdef.h"
 #include "MACRLC_paramdef.h"
 #include "common/config/config_userapi.h"
 //#include "RRC_config_tools.h"
@@ -376,6 +377,7 @@ void RCconfig_nr_flexran()
 
 void RCconfig_NR_L1(void) {
   int j;
+  uint8_t pusch_proc_threads;
   paramdef_t L1_Params[] = L1PARAMS_DESC;
   paramlist_def_t L1_ParamList = {CONFIG_STRING_L1_LIST,NULL,0};
 
@@ -399,6 +401,8 @@ void RCconfig_NR_L1(void) {
 	RC.gNB[j]->Mod_id  = j;
       }
 
+      RC.gNB[j]->pusch_proc_threads = *(L1_ParamList.paramarray[j][L1_PUSCH_PROC_THREADS].uptr);
+
       if(strcmp(*(L1_ParamList.paramarray[j][L1_TRANSPORT_N_PREFERENCE_IDX].strptr), "local_mac") == 0) {
         //sf_ahead = 2; // Need 4 subframe gap between RX and TX
       }else if (strcmp(*(L1_ParamList.paramarray[j][L1_TRANSPORT_N_PREFERENCE_IDX].strptr), "nfapi") == 0) {
diff --git a/openair2/GNB_APP/gnb_paramdef.h b/openair2/GNB_APP/gnb_paramdef.h
index 981f2ba193d726934ea45921ccefac80f6a71b1a..f1fe0c97c9128be73e3758fe0e0eacfcac73eeb2 100644
--- a/openair2/GNB_APP/gnb_paramdef.h
+++ b/openair2/GNB_APP/gnb_paramdef.h
@@ -82,7 +82,6 @@ typedef enum {
 /* global parameters, not under a specific section   */
 #define GNB_CONFIG_STRING_ASN1_VERBOSITY                   "Asn1_verbosity"
 #define GNB_CONFIG_STRING_ACTIVE_GNBS                      "Active_gNBs"
-#define GNB_CONFIG_PUSCH_THREADS                           "Num_Threads_PUSCH"
 /*--------------------------------------------------------------------------------------------------------------------------------------------------------------*/
 /*                                            global configuration parameters                                                                                   */
 /*   optname                                   helpstr   paramflags    XXXptr        defXXXval                                        type           numelt     */
@@ -92,10 +91,6 @@ typedef enum {
 {GNB_CONFIG_STRING_ACTIVE_GNBS,                NULL,     0,        uptr:NULL,   defstrval:NULL, 				   TYPE_STRINGLIST,  0}    \
 }
 
-#define NUM_THREADS_DESC { \
-{GNB_CONFIG_PUSCH_THREADS,                     NULL,     0,        uptr:&num_threads_pusch,   defuintval:1, 				   TYPE_UINT,  0}    \
-}
-
 #define GNB_ASN1_VERBOSITY_IDX                     0
 #define GNB_ACTIVE_GNBS_IDX                        1
 
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 1cd3b01b6c7aa6bfde7052ce0fb15b11a409f923..f8f42824a5780e76b38997ad3cfcd9323f891014 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
@@ -1,7 +1,6 @@
 Active_gNBs = ( "gNB-Eurecom-5GNRBox");
 # Asn1_verbosity, choice in: none, info, annoying
 Asn1_verbosity = "none";
-Num_Threads_PUSCH = 8;
 
 gNBs =
 (
@@ -234,6 +233,7 @@ L1s = (
     	{
 	num_cc = 1;
 	tr_n_preference = "local_mac";
+  pusch_proc_threads = 8;
         }  
 );
 
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf
index e34b26150092b902660cdf8b9fb43ef7595e82ff..555af5835d368647559077be618610c792dfe52a 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf
@@ -1,7 +1,6 @@
 Active_gNBs = ( "gNB-Eurecom-5GNRBox");
 # Asn1_verbosity, choice in: none, info, annoying
 Asn1_verbosity = "none";
-Num_Threads_PUSCH = 8;
 
 gNBs =
 (
@@ -250,6 +249,7 @@ L1s = (
     	{
 	num_cc = 1;
 	tr_n_preference = "local_mac";
+  pusch_proc_threads = 8;
         }  
 );