diff --git a/common/utils/T/T_messages.txt b/common/utils/T/T_messages.txt
index e86cfa43a616bbf6e4bb7e2d933d2bde2423eb0a..e437f7f2b9cc55c38bd87f37f92b73e47b31d974 100644
--- a/common/utils/T/T_messages.txt
+++ b/common/utils/T/T_messages.txt
@@ -11,6 +11,14 @@ ID = ENB_DLSCH_UE_DCI
     DESC = eNodeB downlink UE specific DCI as sent by the PHY layer
     GROUP = ALL:PHY:GRAPHIC:ENB
     FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,dci_format
+ID = ENB_DLSCH_UE_ACK
+    DESC = eNodeB downlink UE ACK as seen by the PHY layer in process_HARQ_feedback
+    GROUP = ALL:PHY:GRAPHIC:ENB
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti
+ID = ENB_DLSCH_UE_NACK
+    DESC = eNodeB downlink UE NACK as seen by the PHY layer in process_HARQ_feedback
+    GROUP = ALL:PHY:GRAPHIC:ENB
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti
 ID = ENB_INPUT_SIGNAL
     DESC = eNodeB received signal in the time domain for a duration of 1ms
     GROUP = ALL:PHY:GRAPHIC:HEAVY:ENB
diff --git a/common/utils/T/tracer/enb.c b/common/utils/T/tracer/enb.c
index 8ebc1bdf12c5acf4babf356f35653b43bda12453..5cd59a811ce74aa3c839842fc85673aa48c30550 100644
--- a/common/utils/T/tracer/enb.c
+++ b/common/utils/T/tracer/enb.c
@@ -163,6 +163,14 @@ static void enb_main_gui(gui *g, event_handler *h, void *database)
   timelog = new_timelog(h, database, "ENB_DLSCH_UE_DCI");
   subview = new_subview_time(timeview, 1, new_color(g, "#228"));
   logger_add_view(timelog, subview);
+  /* ACK */
+  timelog = new_timelog(h, database, "ENB_DLSCH_UE_ACK");
+  subview = new_subview_time(timeview, 2, new_color(g, "#282"));
+  logger_add_view(timelog, subview);
+  /* NACK */
+  timelog = new_timelog(h, database, "ENB_DLSCH_UE_NACK");
+  subview = new_subview_time(timeview, 3, new_color(g, "#f22"));
+  logger_add_view(timelog, subview);
 
   /* uplink UE DCIs */
   timelog = new_timelog(h, database, "ENB_UL_TICK");
@@ -231,6 +239,8 @@ int main(int n, char **v)
   on_off(database, "ENB_UL_TICK", is_on, 1);
   on_off(database, "ENB_DL_TICK", is_on, 1);
   on_off(database, "ENB_DLSCH_UE_DCI", is_on, 1);
+  on_off(database, "ENB_DLSCH_UE_ACK", is_on, 1);
+  on_off(database, "ENB_DLSCH_UE_NACK", is_on, 1);
 
   for (i = 0; i < on_off_n; i++)
     on_off(database, on_off_name[i], is_on, on_off_action[i]);
diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index 29b632ecb9373f3ae92646a24c8b8ca7674ac492..e251bddbee408743338242a42f380c0d57a7ec38 100755
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -2051,6 +2051,8 @@ void process_HARQ_feedback(uint8_t UE_id,
                   dlsch->rnti,dl_harq_pid[m],M,m,mp,dlsch_harq_proc->round);
 #endif
 
+            T(T_ENB_DLSCH_UE_NACK, T_INT(phy_vars_eNB->Mod_id), T_INT(frame), T_INT(subframe), T_INT(UE_id), T_INT(dlsch->rnti));
+
             if (dlsch_harq_proc->round == 0)
               ue_stats->dlsch_NAK_round0++;
 
@@ -2083,6 +2085,9 @@ void process_HARQ_feedback(uint8_t UE_id,
             LOG_D(PHY,"[eNB %d][PDSCH %x/%d] ACK Received in round %d, resetting process\n",phy_vars_eNB->Mod_id,
                   dlsch->rnti,dl_harq_pid[m],dlsch_harq_proc->round);
 #endif
+
+            T(T_ENB_DLSCH_UE_ACK, T_INT(phy_vars_eNB->Mod_id), T_INT(frame), T_INT(subframe), T_INT(UE_id), T_INT(dlsch->rnti));
+
             ue_stats->dlsch_ACK[dl_harq_pid[m]][dlsch_harq_proc->round]++;
 
             // Received ACK so set round to 0 and set dlsch_harq_pid IDLE