diff --git a/common/utils/telnetsrv/telnetsrv_cpumeasur_def.h b/common/utils/telnetsrv/telnetsrv_cpumeasur_def.h
index a3f60a5becdb871eb65d6459d561bc0fe38a2c68..bbc9cb664d61781b323381c8f3cf78aa54b26c36 100644
--- a/common/utils/telnetsrv/telnetsrv_cpumeasur_def.h
+++ b/common/utils/telnetsrv/telnetsrv_cpumeasur_def.h
@@ -110,8 +110,6 @@
     {"ulsch_ldpc_encoding_stats",       &(UE->ulsch_ldpc_encoding_stats),0,1},\
     {"ulsch_interleaving_stats",       &(UE->ulsch_interleaving_stats),0,1},\
     {"ulsch_multiplexing_stats",       &(UE->ulsch_multiplexing_stats),0,1},\
-    {"generic_stat",       &(UE->generic_stat),0,1},\
-    {"generic_stat_bis",       &(UE->generic_stat_bis[0]),0,LTE_SLOTS_PER_SUBFRAME},\
     {"ofdm_demod_stats",       &(UE->ofdm_demod_stats),0,1},\
     {"dlsch_rx_pdcch_stats",       &(UE->dlsch_rx_pdcch_stats),0,1},\
     {"rx_dft_stats",       &(UE->rx_dft_stats),0,1},\
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
index 37feb297eb14beb68831195360bb82ebadd264e7..08e641d127fcad55c53b1b7f3fca181496e5f271 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
@@ -406,8 +406,11 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
   //--------------------- RBs extraction ---------------------
   //----------------------------------------------------------
   const int n_rx = frame_parms->nb_antennas_rx;
+  time_stats_t meas = {0};
+  const bool meas_enabled = cpumeas(CPUMEAS_GETSTATE);
 
-  start_meas(&ue->generic_stat_bis[slot]);
+  if (meas_enabled)
+    start_meas(&meas);
   {
     __attribute__((aligned(32))) c16_t rxdataF_ext[nbRx][rx_size_symbol];
     memset(rxdataF_ext, 0, sizeof(rxdataF_ext));
@@ -429,14 +432,21 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
                          frame_parms,
                          dlsch[0].dlsch_config.dlDmrsSymbPos,
                          ue->chest_time);
-    stop_meas(&ue->generic_stat_bis[slot]);
+    if (meas_enabled) {
+      stop_meas(&meas);
+      LOG_D(PHY,
+            "[AbsSFN %u.%d] Slot%d Symbol %d: Pilot/Data extraction %5.2f \n",
+            frame,
+            nr_slot_rx,
+            slot,
+            symbol,
+            meas.p_time / (cpuf * 1000.0));
+    }
     if (ue->phy_sim_pdsch_rxdataF_ext)
       for (unsigned char aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) {
         int offset = ((void *)rxdataF_ext[aarx] - (void *)rxdataF_ext) + symbol * rx_size_symbol;
         memcpy(ue->phy_sim_pdsch_rxdataF_ext + offset, rxdataF_ext, rx_size_symbol * sizeof(c16_t));
       }
-  if (cpumeas(CPUMEAS_GETSTATE))
-      LOG_D(PHY, "[AbsSFN %u.%d] Slot%d Symbol %d: Pilot/Data extraction %5.2f \n", frame, nr_slot_rx, slot, symbol, ue->generic_stat_bis[slot].p_time / (cpuf * 1000.0));
 
     nb_re_pdsch = (pilots == 1)
                       ? ((config_type == NFAPI_NR_DMRS_TYPE1) ? nb_rb_pdsch * (12 - 6 * dlsch[0].dlsch_config.n_dmrs_cdm_groups) : nb_rb_pdsch * (12 - 4 * dlsch[0].dlsch_config.n_dmrs_cdm_groups))
@@ -444,18 +454,26 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
   //----------------------------------------------------------
   //--------------------- Channel Scaling --------------------
   //----------------------------------------------------------
-  start_meas(&ue->generic_stat_bis[slot]);
+    if (meas_enabled)
+      start_meas(&meas);
     nr_dlsch_scale_channel(rx_size_symbol, dl_ch_estimates_ext, frame_parms, nl, n_rx, symbol, pilots, nb_re_pdsch, nb_rb_pdsch);
-  stop_meas(&ue->generic_stat_bis[slot]);
-
-  if (cpumeas(CPUMEAS_GETSTATE))
-      LOG_D(PHY, "[AbsSFN %u.%d] Slot%d Symbol %d: Channel Scale  %5.2f \n", frame, nr_slot_rx, slot, symbol, ue->generic_stat_bis[slot].p_time / (cpuf * 1000.0));
+    if (meas_enabled) {
+      stop_meas(&meas);
+      LOG_D(PHY,
+            "[AbsSFN %u.%d] Slot%d Symbol %d: Channel Scale  %5.2f \n",
+            frame,
+            nr_slot_rx,
+            slot,
+            symbol,
+            meas.p_time / (cpuf * 1000.0));
+    }
 
-  //----------------------------------------------------------
-  //--------------------- Channel Level Calc. ----------------
-  //----------------------------------------------------------
-  start_meas(&ue->generic_stat_bis[slot]);
-  if (first_symbol_flag==1) {
+    //----------------------------------------------------------
+    //--------------------- Channel Level Calc. ----------------
+    //----------------------------------------------------------
+    if (meas_enabled)
+      start_meas(&meas);
+    if (first_symbol_flag == 1) {
       nr_dlsch_channel_level(rx_size_symbol, dl_ch_estimates_ext, frame_parms, nl, avg, symbol, nb_re_pdsch, nb_rb_pdsch);
     avgs = 0;
     for (aatx=0;aatx<nl;aatx++)
@@ -476,45 +494,56 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
     *log2_maxh = (log2_approx(avgs)/2) + 1;
     //LOG_I(PHY, "avgs Power per SC is %d lg2_maxh %d\n", avgs,  log2_maxh);
       LOG_D(PHY, "[DLSCH] AbsSubframe %d.%d log2_maxh = %d (%d,%d)\n", frame % 1024, nr_slot_rx, *log2_maxh, avg[0], avgs);
-  }
-  stop_meas(&ue->generic_stat_bis[slot]);
-
+    }
+    if (meas_enabled) {
+      stop_meas(&meas);
+      LOG_D(PHY,
+            "[AbsSFN %u.%d] Slot%d Symbol %d first_symbol_flag %d: Channel Level  %5.2f \n",
+            frame,
+            nr_slot_rx,
+            slot,
+            symbol,
+            first_symbol_flag,
+            meas.p_time / (cpuf * 1000.0));
+    }
 #if T_TRACER
-  T(T_UE_PHY_PDSCH_ENERGY, T_INT(gNB_id),  T_INT(0), T_INT(frame%1024), T_INT(nr_slot_rx),
-                           T_INT(avg[0]), T_INT(avg[1]),    T_INT(avg[2]),             T_INT(avg[3]));
+    T(T_UE_PHY_PDSCH_ENERGY,
+      T_INT(gNB_id),
+      T_INT(0),
+      T_INT(frame % 1024),
+      T_INT(nr_slot_rx),
+      T_INT(avg[0]),
+      T_INT(avg[1]),
+      T_INT(avg[2]),
+      T_INT(avg[3]));
 #endif
 
-  if (cpumeas(CPUMEAS_GETSTATE))
-    LOG_D(PHY,
-          "[AbsSFN %u.%d] Slot%d Symbol %d first_symbol_flag %d: Channel Level  %5.2f \n",
-          frame, nr_slot_rx, slot, symbol, first_symbol_flag, ue->generic_stat_bis[slot].p_time / (cpuf * 1000.0));
-
-  //----------------------------------------------------------
-  //--------------------- channel compensation ---------------
-  //----------------------------------------------------------
-  // Disable correlation measurement for optimizing UE
-  start_meas(&ue->generic_stat_bis[slot]);
-  nr_dlsch_channel_compensation(rx_size_symbol,
-                                nbRx,
-                                rxdataF_ext,
-                                dl_ch_estimates_ext,
-                                dl_ch_mag,
-                                dl_ch_magb,
-                                dl_ch_magr,
-                                rxdataF_comp,
-                                NULL,
-                                frame_parms,
-                                nl,
-                                symbol,
-                                nb_re_pdsch,
-                                first_symbol_flag,
-                                dlsch[0].dlsch_config.qamModOrder,
-                                nb_rb_pdsch,
-                                *log2_maxh,
-                                measurements); // log2_maxh+I0_shift
-  stop_meas(&ue->generic_stat_bis[slot]);
-  }
-    if (cpumeas(CPUMEAS_GETSTATE))
+    //----------------------------------------------------------
+    //--------------------- channel compensation ---------------
+    //----------------------------------------------------------
+    // Disable correlation measurement for optimizing UE
+    if (meas_enabled)
+      start_meas(&meas);
+    nr_dlsch_channel_compensation(rx_size_symbol,
+                                  nbRx,
+                                  rxdataF_ext,
+                                  dl_ch_estimates_ext,
+                                  dl_ch_mag,
+                                  dl_ch_magb,
+                                  dl_ch_magr,
+                                  rxdataF_comp,
+                                  NULL,
+                                  frame_parms,
+                                  nl,
+                                  symbol,
+                                  nb_re_pdsch,
+                                  first_symbol_flag,
+                                  dlsch[0].dlsch_config.qamModOrder,
+                                  nb_rb_pdsch,
+                                  *log2_maxh,
+                                  measurements); // log2_maxh+I0_shift
+    if (meas_enabled) {
+      stop_meas(&meas);
       LOG_D(PHY,
             "[AbsSFN %u.%d] Slot%d Symbol %d log2_maxh %d Channel Comp  %5.2f \n",
             frame,
@@ -522,22 +551,54 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
             slot,
             symbol,
             *log2_maxh,
-            ue->generic_stat_bis[slot].p_time / (cpuf * 1000.0));
+            meas.p_time / (cpuf * 1000.0));
+    }
+  }
 
-    start_meas(&ue->generic_stat_bis[slot]);
+  if (meas_enabled)
+    start_meas(&meas);
 
   if (n_rx > 1) {
-    nr_dlsch_detection_mrc(rx_size_symbol, nl, n_rx, rxdataF_comp, NULL, dl_ch_mag, dl_ch_magb, dl_ch_magr, symbol, nb_rb_pdsch, nb_re_pdsch);
-    if (nl >= 2)//Apply zero forcing for 2, 3, and 4 Tx layers
-      nr_zero_forcing_rx(
-          rx_size_symbol, n_rx, nl, rxdataF_comp, dl_ch_mag, dl_ch_magb, dl_ch_magr, dl_ch_estimates_ext, nb_rb_pdsch, dlsch[0].dlsch_config.qamModOrder, *log2_maxh, symbol, nb_re_pdsch);
+    nr_dlsch_detection_mrc(rx_size_symbol,
+                           nl,
+                           n_rx,
+                           rxdataF_comp,
+                           NULL,
+                           dl_ch_mag,
+                           dl_ch_magb,
+                           dl_ch_magr,
+                           symbol,
+                           nb_rb_pdsch,
+                           nb_re_pdsch);
+    if (nl >= 2) // Apply zero forcing for 2, 3, and 4 Tx layers
+      nr_zero_forcing_rx(rx_size_symbol,
+                         n_rx,
+                         nl,
+                         rxdataF_comp,
+                         dl_ch_mag,
+                         dl_ch_magb,
+                         dl_ch_magr,
+                         dl_ch_estimates_ext,
+                         nb_rb_pdsch,
+                         dlsch[0].dlsch_config.qamModOrder,
+                         *log2_maxh,
+                         symbol,
+                         nb_re_pdsch);
   }
-  stop_meas(&ue->generic_stat_bis[slot]);
 
-  if (cpumeas(CPUMEAS_GETSTATE))
-    LOG_D(PHY, "[AbsSFN %u.%d] Slot%d Symbol %d: Channel Combine and zero forcing %5.2f \n", frame, nr_slot_rx, slot, symbol, ue->generic_stat_bis[slot].p_time / (cpuf * 1000.0));
+  if (meas_enabled) {
+    stop_meas(&meas);
+    LOG_D(PHY,
+          "[AbsSFN %u.%d] Slot%d Symbol %d: Channel Combine and zero forcing %5.2f \n",
+          frame,
+          nr_slot_rx,
+          slot,
+          symbol,
+          meas.p_time / (cpuf * 1000.0));
+  }
 
-  start_meas(&ue->generic_stat_bis[slot]);
+  if (meas_enabled)
+    start_meas(&meas);
   /* Store the valid DL RE's */
   dl_valid_re[symbol-1] = nb_re_pdsch;
 
@@ -652,9 +713,16 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
 #endif
   }
 
-  stop_meas(&ue->generic_stat_bis[slot]);
-  if (cpumeas(CPUMEAS_GETSTATE))
-    LOG_D(PHY, "[AbsSFN %u.%d] Slot%d Symbol %d: LLR Computation  %5.2f \n", frame, nr_slot_rx, slot, symbol, ue->generic_stat_bis[slot].p_time / (cpuf * 1000.0));
+  if (meas_enabled) {
+    stop_meas(&meas);
+    LOG_D(PHY,
+          "[AbsSFN %u.%d] Slot%d Symbol %d: LLR Computation  %5.2f \n",
+          frame,
+          nr_slot_rx,
+          slot,
+          symbol,
+          meas.p_time / (cpuf * 1000.0));
+  }
 
 #if T_TRACER
   T(T_UE_PHY_PDSCH_IQ,
diff --git a/openair1/PHY/defs_nr_UE.h b/openair1/PHY/defs_nr_UE.h
index 97ff191d65c7e5c8fc7c728814a633b374a94118..f9934348c7f5c583dd4ba7e83a067211d8e8cf37 100644
--- a/openair1/PHY/defs_nr_UE.h
+++ b/openair1/PHY/defs_nr_UE.h
@@ -592,8 +592,6 @@ typedef struct {
   time_stats_t ulsch_interleaving_stats;
   time_stats_t ulsch_multiplexing_stats;
 
-  time_stats_t generic_stat;
-  time_stats_t generic_stat_bis[LTE_SLOTS_PER_SUBFRAME];
   time_stats_t ue_front_end_stat;
   time_stats_t ue_front_end_per_slot_stat[LTE_SLOTS_PER_SUBFRAME];
   time_stats_t pdcch_procedures_stat;
diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
index e53a788ffab598fff5638e9fa381f1eef09cc0ae..6831c7f4753a9a4bcf86b92da1b44b949df236da 100644
--- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
@@ -1019,7 +1019,8 @@ void pdsch_processing(PHY_VARS_NR_UE *ue,
   int gNB_id = proc->gNB_id;
 
   NR_UE_DLSCH_t *dlsch = &phy_data->dlsch[0];
-  start_meas(&ue->generic_stat);
+  time_stats_t meas = {0};
+  start_meas(&meas);
   // do procedures for C-RNTI
   int ret_pdsch = 0;
 
@@ -1131,7 +1132,7 @@ void pdsch_processing(PHY_VARS_NR_UE *ue,
     ue->csirs_vars[gNB_id]->active = 0;
   }
 
-  start_meas(&ue->generic_stat);
+  start_meas(&meas);
 
   if (nr_slot_rx==9) {
     if (frame_rx % 10 == 0) {
@@ -1157,9 +1158,9 @@ void pdsch_processing(PHY_VARS_NR_UE *ue,
 
   }
 
-  stop_meas(&ue->generic_stat);
+  stop_meas(&meas);
   if (cpumeas(CPUMEAS_GETSTATE))
-    LOG_D(PHY, "after ldpc decode until end of Rx %5.2f \n", ue->generic_stat.p_time / (cpuf * 1000.0));
+    LOG_D(PHY, "after ldpc decode until end of Rx %5.2f \n", meas.p_time / (cpuf * 1000.0));
 
 #ifdef EMOS
   phy_procedures_emos_UE_RX(ue,slot,gNB_id);