diff --git a/openair2/GNB_APP/MACRLC_nr_paramdef.h b/openair2/GNB_APP/MACRLC_nr_paramdef.h
index e634f077e269c030b2ab53da28f8f2ff7e216e1e..3cc0396a3e536a0581f49d9037904280c426d45c 100644
--- a/openair2/GNB_APP/MACRLC_nr_paramdef.h
+++ b/openair2/GNB_APP/MACRLC_nr_paramdef.h
@@ -58,6 +58,7 @@
 #define CONFIG_STRING_MACRLC_ULSCH_MAX_FRAME_INACTIVITY    "ulsch_max_frame_inactivity"
 #define CONFIG_STRING_MACRLC_PUSCHTARGETSNRX10             "pusch_TargetSNRx10"
 #define CONFIG_STRING_MACRLC_PUCCHTARGETSNRX10             "pucch_TargetSNRx10"
+#define CONFIG_STRING_MACRLC_UL_PRBBLACK_SNR_THRESHOLD     "ul_prbblack_SNR_threshold"
 #define CONFIG_STRING_MACRLC_PUCCHFAILURETHRES             "pucch_FailureThres"
 #define CONFIG_STRING_MACRLC_PUSCHFAILURETHRES             "pusch_FailureThres"
 #define CONFIG_STRING_MACRLC_DL_BLER_TARGET_UPPER          "dl_bler_target_upper"
@@ -93,6 +94,7 @@
 {CONFIG_STRING_MACRLC_ULSCH_MAX_FRAME_INACTIVITY,        NULL,     0,          uptr:NULL,           defintval:10,              TYPE_UINT,     0},        \
 {CONFIG_STRING_MACRLC_PUSCHTARGETSNRX10,                 NULL,     0,          iptr:NULL,           defintval:200,             TYPE_INT,      0},        \
 {CONFIG_STRING_MACRLC_PUCCHTARGETSNRX10,                 NULL,     0,          iptr:NULL,           defintval:150,             TYPE_INT,      0},        \
+{CONFIG_STRING_MACRLC_UL_PRBBLACK_SNR_THRESHOLD,         NULL,     0,          iptr:NULL,           defintval:10,              TYPE_INT,      0},        \
 {CONFIG_STRING_MACRLC_PUCCHFAILURETHRES,                 NULL,     0,          iptr:NULL,           defintval:10,              TYPE_INT,      0},        \
 {CONFIG_STRING_MACRLC_PUSCHFAILURETHRES,                 NULL,     0,          iptr:NULL,           defintval:10,              TYPE_INT,      0},        \
 {CONFIG_STRING_MACRLC_DL_BLER_TARGET_UPPER,   "Upper threshold of BLER to decrease DL MCS",   0, dblptr:NULL,  defdblval:0.15,  TYPE_DOUBLE,  0},        \
@@ -123,14 +125,15 @@
 #define MACRLC_ULSCH_MAX_FRAME_INACTIVITY                      17
 #define MACRLC_PUSCHTARGETSNRX10_IDX                           18
 #define MACRLC_PUCCHTARGETSNRX10_IDX                           19
-#define MACRLC_PUCCHFAILURETHRES_IDX                           20 
-#define MACRLC_PUSCHFAILURETHRES_IDX                           21
-#define MACRLC_DL_BLER_TARGET_UPPER_IDX                        22
-#define MACRLC_DL_BLER_TARGET_LOWER_IDX                        23
-#define MACRLC_DL_RD2_BLER_THRESHOLD_IDX                       24
-#define MACRLC_DL_MAX_MCS_IDX                                  25
-#define MACRLC_HARQ_ROUND_MAX_IDX                              26
-#define MACRLC_MIN_GRANT_PRB_IDX                               27
-#define MACRLC_MIN_GRANT_MCS_IDX                               28
+#define MACRLC_UL_PRBBLACK_SNR_THRESHOLD_IDX                   20
+#define MACRLC_PUCCHFAILURETHRES_IDX                           21
+#define MACRLC_PUSCHFAILURETHRES_IDX                           22
+#define MACRLC_DL_BLER_TARGET_UPPER_IDX                        23
+#define MACRLC_DL_BLER_TARGET_LOWER_IDX                        24
+#define MACRLC_DL_RD2_BLER_THRESHOLD_IDX                       25
+#define MACRLC_DL_MAX_MCS_IDX                                  26
+#define MACRLC_HARQ_ROUND_MAX_IDX                              27
+#define MACRLC_MIN_GRANT_PRB_IDX                               28
+#define MACRLC_MIN_GRANT_MCS_IDX                               29
 /*---------------------------------------------------------------------------------------------------------------------------------------------------------*/
 #endif
diff --git a/openair2/GNB_APP/gnb_config.c b/openair2/GNB_APP/gnb_config.c
index 62dc72a857ae796e5493c5877bd9fcabcc437ce1..530725bb510b08a7a6205463044046b118c553da 100644
--- a/openair2/GNB_APP/gnb_config.c
+++ b/openair2/GNB_APP/gnb_config.c
@@ -770,6 +770,7 @@ void RCconfig_nr_macrlc() {
       RC.nb_nr_mac_CC[j] = *(MacRLC_ParamList.paramarray[j][MACRLC_CC_IDX].iptr);
       RC.nrmac[j]->pusch_target_snrx10                   = *(MacRLC_ParamList.paramarray[j][MACRLC_PUSCHTARGETSNRX10_IDX].iptr);
       RC.nrmac[j]->pucch_target_snrx10                   = *(MacRLC_ParamList.paramarray[j][MACRLC_PUCCHTARGETSNRX10_IDX].iptr);
+      RC.nrmac[j]->ul_prbblack_SNR_threshold             = *(MacRLC_ParamList.paramarray[j][MACRLC_UL_PRBBLACK_SNR_THRESHOLD_IDX].iptr);
       RC.nrmac[j]->pucch_failure_thres                   = *(MacRLC_ParamList.paramarray[j][MACRLC_PUCCHFAILURETHRES_IDX].iptr);
       RC.nrmac[j]->pusch_failure_thres                   = *(MacRLC_ParamList.paramarray[j][MACRLC_PUSCHFAILURETHRES_IDX].iptr);
      
diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
index e763548ea36a934329c9f4ec18c1e062ad0fc706..39a6f523276ff4d944a00f80842ee634dead16c8 100644
--- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
@@ -890,7 +890,7 @@ void handle_nr_srs_measurements(const module_id_t module_id,
                                 const uint8_t num_reported_symbols,
                                 nfapi_nr_srs_indication_reported_symbol_t* reported_symbol_list) {
 
-  LOG_I(NR_MAC, "(%d.%d) Received SRS indication for rnti: 0x%04x\n", frame, slot, rnti);
+  LOG_D(NR_MAC, "(%d.%d) Received SRS indication for rnti: 0x%04x\n", frame, slot, rnti);
 
 #ifdef SRS_IND_DEBUG
   LOG_I(NR_MAC, "frame = %i\n", frame);
@@ -906,6 +906,18 @@ void handle_nr_srs_measurements(const module_id_t module_id,
           rb, reported_symbol_list[0].rb_list[rb].rb_snr, (reported_symbol_list[0].rb_list[rb].rb_snr>>1)-64);
   }
 #endif
+
+  int ul_prbblack_SNR_threshold = RC.nrmac[module_id]->ul_prbblack_SNR_threshold;
+  uint16_t *ulprbbl = RC.nrmac[module_id]->ulprbbl;
+
+  memset(ulprbbl, 0, reported_symbol_list[0].num_rbs*sizeof(uint16_t));
+  for (int rb = 0; rb < reported_symbol_list[0].num_rbs; rb++) {
+    int snr = (reported_symbol_list[0].rb_list[rb].rb_snr>>1)-64;
+    if (snr < ul_prbblack_SNR_threshold) {
+      ulprbbl[rb] = 0x3FFF; // all symbols taken
+    }
+    LOG_D(NR_MAC, "ulprbbl[%3i] = 0x%x\n", rb, ulprbbl[rb]);
+  }
 }
 
 long get_K2(NR_ServingCellConfigCommon_t *scc,
diff --git a/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h b/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
index a2c77234c0c329c2b43376785e399dfe9d8a5a0d..5ddeacf4ed029ad0b49d95e905971795e5ad6b9f 100644
--- a/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+++ b/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
@@ -721,6 +721,8 @@ typedef struct gNB_MAC_INST_s {
   int                             pusch_target_snrx10;
   /// Pucch target SNR
   int                             pucch_target_snrx10;
+  /// SNR threshold needed to put or not a PRB in the black list
+  int                             ul_prbblack_SNR_threshold;
   /// PUCCH Failure threshold (compared to consecutive PUCCH DTX)
   int                             pucch_failure_thres;
   /// PUSCH Failure threshold (compared to consecutive PUSCH DTX)
@@ -735,7 +737,7 @@ typedef struct gNB_MAC_INST_s {
   /// current PDU index (BCH,DLSCH)
   uint16_t pdu_index[NFAPI_CC_MAX];
   int num_ulprbbl;
-  uint16_t ulprbbl[275];
+  uint16_t ulprbbl[MAX_BWP_SIZE];
   /// NFAPI Config Request Structure
   nfapi_nr_config_request_scf_t     config[NFAPI_CC_MAX];
   /// NFAPI DL Config Request Structure
diff --git a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.2x2.usrpn300.conf b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.2x2.usrpn300.conf
index 2881a77d48f158db98a2cdc710ef415d11829f7c..33c73531513a0dcc463d4161805914b4f3ed4160 100644
--- a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.2x2.usrpn300.conf
+++ b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.2x2.usrpn300.conf
@@ -207,6 +207,7 @@ MACRLCs = (
   tr_n_preference             = "local_RRC";
   #pusch_TargetSNRx10         = 150;
   #pucch_TargetSNRx10         = 200;
+  ul_prbblack_SNR_threshold   = 10;
   ulsch_max_frame_inactivity  = 0;
 }
 );
diff --git a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
index c83565e8bb9b854a46dab6a0d3768447b3c0dea9..12feb0d4b09f7d3e575591a64b44f6972e0211a7 100644
--- a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
@@ -205,6 +205,7 @@ MACRLCs = (
   tr_n_preference             = "local_RRC";
   pusch_TargetSNRx10          = 150;
   pucch_TargetSNRx10          = 200;
+  ul_prbblack_SNR_threshold   = 10;
   ulsch_max_frame_inactivity  = 0;
 }
 );